From 4527005af5cf30d4e33ed869d0141323fd96a1ab Mon Sep 17 00:00:00 2001 From: ibizdev Date: Wed, 12 Aug 2020 17:38:14 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=20demoadmin=20=E5=8F=91=E5=B8=83=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 14 + app_AssetManagement/CHANGELOG.md | 19 + app_AssetManagement/README.md | 183 + app_AssetManagement/babel.config.js | 11 + app_AssetManagement/package.json | 69 + app_AssetManagement/pom.xml | 20 + .../public/assets/css/loading.css | 281 + .../public/assets/icons/iconfont/demo.css | 539 + .../assets/icons/iconfont/demo_index.html | 193 + .../public/assets/icons/iconfont/iconfont.css | 21 + .../public/assets/icons/iconfont/iconfont.eot | Bin 0 -> 1880 bytes .../public/assets/icons/iconfont/iconfont.js | 1 + .../assets/icons/iconfont/iconfont.json | 16 + .../public/assets/icons/iconfont/iconfont.svg | 29 + .../public/assets/icons/iconfont/iconfont.ttf | Bin 0 -> 1712 bytes .../assets/icons/iconfont/iconfont.woff | Bin 0 -> 1104 bytes .../assets/icons/iconfont/iconfont.woff2 | Bin 0 -> 744 bytes app_AssetManagement/public/assets/img/404.png | Bin 0 -> 52110 bytes app_AssetManagement/public/assets/img/500.png | Bin 0 -> 30309 bytes app_AssetManagement/public/assets/img/QQ.svg | 1 + .../public/assets/img/avatar.png | Bin 0 -> 3880 bytes .../public/assets/img/background.png | Bin 0 -> 148505 bytes app_AssetManagement/public/assets/img/doc.png | Bin 0 -> 2178 bytes .../public/assets/img/error.png | Bin 0 -> 60601 bytes .../public/assets/img/excel.png | Bin 0 -> 2400 bytes .../public/assets/img/login_bg.png | Bin 0 -> 246764 bytes .../public/assets/img/logo.png | Bin 0 -> 2093 bytes .../public/assets/img/logo.svg | 16 + .../public/assets/img/logo2.png | Bin 0 -> 2524 bytes .../public/assets/img/logout_bg.png | Bin 0 -> 122032 bytes .../public/assets/img/noimage.png | Bin 0 -> 18600 bytes .../public/assets/img/noimg.jpg | Bin 0 -> 10501 bytes .../public/assets/img/noimg2.png | Bin 0 -> 1320 bytes .../public/assets/img/other.png | Bin 0 -> 1293 bytes app_AssetManagement/public/assets/img/pdf.png | Bin 0 -> 2621 bytes .../public/assets/img/picture.png | Bin 0 -> 1638 bytes app_AssetManagement/public/assets/img/ppt.png | Bin 0 -> 2220 bytes app_AssetManagement/public/assets/img/txt.png | Bin 0 -> 1704 bytes .../public/assets/img/weixin.svg | 1 + .../public/assets/json/data-dictionary.json | 39 + .../public/assets/json/portlet-data.json | 2 + .../public/assets/json/view-config.json | 1242 ++ .../public/assets/styles/loader.css | 66 + .../public/assets/tinymce/langs/en_US.js | 230 + .../public/assets/tinymce/langs/zh_CN.js | 261 + .../public/assets/tinymce/prism.css | 141 + .../skins/lightgray/content.inline.min.css | 1 + .../tinymce/skins/lightgray/content.min.css | 1 + .../skins/lightgray/content.mobile.min.css | 1 + .../skins/lightgray/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../skins/lightgray/fonts/tinymce-small.eot | Bin 0 -> 9492 bytes .../skins/lightgray/fonts/tinymce-small.svg | 63 + .../skins/lightgray/fonts/tinymce-small.ttf | Bin 0 -> 9304 bytes .../skins/lightgray/fonts/tinymce-small.woff | Bin 0 -> 9380 bytes .../tinymce/skins/lightgray/fonts/tinymce.eot | Bin 0 -> 18912 bytes .../tinymce/skins/lightgray/fonts/tinymce.svg | 132 + .../tinymce/skins/lightgray/fonts/tinymce.ttf | Bin 0 -> 18748 bytes .../skins/lightgray/fonts/tinymce.woff | Bin 0 -> 18824 bytes .../tinymce/skins/lightgray/img/anchor.gif | Bin 0 -> 53 bytes .../tinymce/skins/lightgray/img/loader.gif | Bin 0 -> 2608 bytes .../tinymce/skins/lightgray/img/object.gif | Bin 0 -> 152 bytes .../tinymce/skins/lightgray/img/trans.gif | Bin 0 -> 43 bytes .../tinymce/skins/lightgray/skin.min.css | 1 + .../skins/lightgray/skin.mobile.min.css | 2 + .../skins/lightgray/ui/oxide-dark/content.css | 675 + .../ui/oxide-dark/content.inline.css | 687 + .../ui/oxide-dark/content.inline.min.css | 7 + .../lightgray/ui/oxide-dark/content.min.css | 7 + .../ui/oxide-dark/content.mobile.css | 29 + .../ui/oxide-dark/content.mobile.min.css | 7 + .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../skins/lightgray/ui/oxide-dark/skin.css | 2937 ++++ .../lightgray/ui/oxide-dark/skin.min.css | 7 + .../lightgray/ui/oxide-dark/skin.mobile.css | 673 + .../ui/oxide-dark/skin.mobile.min.css | 7 + .../skins/lightgray/ui/oxide/content.css | 693 + .../lightgray/ui/oxide/content.inline.css | 687 + .../lightgray/ui/oxide/content.inline.min.css | 7 + .../skins/lightgray/ui/oxide/content.min.css | 7 + .../lightgray/ui/oxide/content.mobile.css | 29 + .../lightgray/ui/oxide/content.mobile.min.css | 7 + .../ui/oxide/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../tinymce/skins/lightgray/ui/oxide/skin.css | 2937 ++++ .../skins/lightgray/ui/oxide/skin.min.css | 7 + .../skins/lightgray/ui/oxide/skin.mobile.css | 673 + .../lightgray/ui/oxide/skin.mobile.min.css | 7 + .../public/environments/environment.js | 14 + app_AssetManagement/public/favicon.ico | Bin 0 -> 1150 bytes app_AssetManagement/src/App.vue | 59 + app_AssetManagement/src/app-register.ts | 164 + app_AssetManagement/src/assets/img/404.png | Bin 0 -> 52110 bytes app_AssetManagement/src/assets/img/500.png | Bin 0 -> 30309 bytes app_AssetManagement/src/assets/img/avatar.png | Bin 0 -> 3880 bytes app_AssetManagement/src/assets/img/doc.png | Bin 0 -> 2178 bytes app_AssetManagement/src/assets/img/error.png | Bin 0 -> 60601 bytes app_AssetManagement/src/assets/img/excel.png | Bin 0 -> 2400 bytes .../src/assets/img/login_bg.png | Bin 0 -> 246764 bytes app_AssetManagement/src/assets/img/logo.png | Bin 0 -> 2093 bytes app_AssetManagement/src/assets/img/logo2.png | Bin 0 -> 2524 bytes .../src/assets/img/logout_bg.png | Bin 0 -> 122032 bytes app_AssetManagement/src/assets/img/noimg.jpg | Bin 0 -> 10501 bytes app_AssetManagement/src/assets/img/other.png | Bin 0 -> 1293 bytes app_AssetManagement/src/assets/img/pdf.png | Bin 0 -> 2621 bytes .../src/assets/img/picture.png | Bin 0 -> 1638 bytes app_AssetManagement/src/assets/img/ppt.png | Bin 0 -> 2220 bytes app_AssetManagement/src/assets/img/txt.png | Bin 0 -> 1704 bytes .../src/assets/json/city_code.json | 14036 ++++++++++++++++ .../src/authservice/auth-service-register.ts | 109 + .../src/authservice/auth-service.ts | 93 + ...pply-state-model-line-auth-service-base.ts | 37 + .../eamapply-state-model-line-auth-service.ts | 24 + .../eamapply-state-auth-service-base.ts | 37 + .../eamapply-state-auth-service.ts | 24 + .../eamapply-type-auth-service-base.ts | 37 + .../eamapply-type-auth-service.ts | 24 + .../eamapply/eamapply-auth-service-base.ts | 37 + .../eamapply/eamapply-auth-service.ts | 24 + .../eamasset-parts-group-auth-service-base.ts | 37 + .../eamasset-parts-group-auth-service.ts | 24 + ...sset-state-model-line-auth-service-base.ts | 37 + .../eamasset-state-model-line-auth-service.ts | 24 + .../eamasset-state-model-auth-service-base.ts | 37 + .../eamasset-state-model-auth-service.ts | 24 + .../eamasset-state-auth-service-base.ts | 37 + .../eamasset-state-auth-service.ts | 24 + .../eamasset-type-auth-service-base.ts | 37 + .../eamasset-type-auth-service.ts | 24 + .../eamasset/eamasset-auth-service-base.ts | 37 + .../eamasset/eamasset-auth-service.ts | 24 + .../eamdocument-type-auth-service-base.ts | 37 + .../eamdocument-type-auth-service.ts | 24 + .../eamdocument-auth-service-base.ts | 37 + .../eamdocument/eamdocument-auth-service.ts | 24 + ...tion-state-model-line-auth-service-base.ts | 37 + ...mlocation-state-model-line-auth-service.ts | 24 + ...mlocation-state-model-auth-service-base.ts | 37 + .../eamlocation-state-model-auth-service.ts | 24 + .../eamlocation-state-auth-service-base.ts | 37 + .../eamlocation-state-auth-service.ts | 24 + .../eamlocation-type-auth-service-base.ts | 37 + .../eamlocation-type-auth-service.ts | 24 + .../eamlocation-auth-service-base.ts | 37 + .../eamlocation/eamlocation-auth-service.ts | 24 + .../eammonitor-point-auth-service-base.ts | 37 + .../eammonitor-point-auth-service.ts | 24 + .../eamplan-cdt-auth-service-base.ts | 37 + .../eamplan-cdt/eamplan-cdt-auth-service.ts | 24 + .../eamplan-line-auth-service-base.ts | 37 + .../eamplan-line/eamplan-line-auth-service.ts | 24 + .../eamplan-schedule-auth-service-base.ts | 37 + .../eamplan-schedule-auth-service.ts | 24 + .../eamplan/eamplan-auth-service-base.ts | 37 + .../eamplan/eamplan-auth-service.ts | 24 + .../eamproduct-auth-service-base.ts | 37 + .../eamproduct/eamproduct-auth-service.ts | 24 + .../eamservice-level-auth-service-base.ts | 37 + .../eamservice-level-auth-service.ts | 24 + .../eamspare-parts-group-auth-service-base.ts | 37 + .../eamspare-parts-group-auth-service.ts | 24 + .../eamspare-parts-pro-auth-service-base.ts | 37 + .../eamspare-parts-pro-auth-service.ts | 24 + .../eamwork-order-auth-service-base.ts | 37 + .../eamwork-order-auth-service.ts | 24 + .../eamwostate-auth-service-base.ts | 37 + .../eamwostate/eamwostate-auth-service.ts | 24 + .../eamwotype/eamwotype-auth-service-base.ts | 37 + .../eamwotype/eamwotype-auth-service.ts | 24 + .../woorigin/woorigin-auth-service-base.ts | 37 + .../woorigin/woorigin-auth-service.ts | 24 + .../src/codelist/sys-operator.ts | 105 + .../src/components/404/404.less | 27 + .../src/components/404/404.vue | 33 + .../src/components/500/500.less | 26 + .../src/components/500/500.vue | 33 + .../app-actionbar/app-actionbar.less | 23 + .../app-actionbar/app-actionbar.vue | 49 + .../app-address-selection.less | 0 .../app-address-selection.vue | 98 + .../app-address-selection/city_code.ts | 14036 ++++++++++++++++ .../app-autocomplete/app-autocomplete.less | 5 + .../app-autocomplete/app-autocomplete.vue | 324 + .../src/components/app-build/app-build.less | 12 + .../src/components/app-build/app-build.vue | 60 + .../app-checkbox-list/app-checkbox-list.less | 3 + .../app-checkbox-list/app-checkbox-list.vue | 289 + .../components/app-checkbox/app-checkbox.less | 3 + .../components/app-checkbox/app-checkbox.vue | 55 + .../app-column-format/app-column-format.less | 3 + .../app-column-format/app-column-format.vue | 58 + .../app-column-link/app-column-link.less | 4 + .../app-column-link/app-column-link.vue | 319 + .../app-column-render/app-column-render.less | 5 + .../app-column-render/app-column-render.vue | 153 + .../app-dashboard-design-service.ts | 175 + .../app-dashboard-design.less | 79 + .../app-dashboard-design.vue | 462 + .../app-data-upload/app-data-upload.less | 21 + .../app-data-upload/app-data-upload.vue | 517 + .../app-debug-actions/app-debug-actions.less | 35 + .../app-debug-actions/app-debug-actions.vue | 40 + .../app-department-select.less | 39 + .../app-department-select.vue | 220 + .../app-embed-picker/app-embed-picker.less | 16 + .../app-embed-picker/app-embed-picker.vue | 273 + .../app-export-excel/app-export-excel.less | 0 .../app-export-excel/app-export-excel.vue | 140 + .../app-file-upload/app-file-upload.less | 70 + .../app-file-upload/app-file-upload.vue | 482 + .../app-form-druipart/app-form-druipart.less | 3 + .../app-form-druipart/app-form-druipart.vue | 490 + .../app-form-group-data-panel.less | 15 + .../app-form-group-data-panel.tsx | 87 + .../app-form-group/app-form-group.less | 52 + .../app-form-group/app-form-group.tsx | 318 + .../app-form-group2/app-form-group2.less | 0 .../app-form-group2/app-form-group2.vue | 67 + .../app-form-group4/app-form-group4.less | 17 + .../app-form-group4/app-form-group4.tsx | 118 + .../app-form-item/app-form-item.less | 104 + .../app-form-item/app-form-item.vue | 305 + .../app-form-item2/app-form-item2.less | 29 + .../app-form-item2/app-form-item2.vue | 216 + .../src/components/app-form/app-form.less | 42 + .../src/components/app-form/app-form.vue | 33 + .../app-format-data/app-format-data.less | 3 + .../app-format-data/app-format-data.vue | 92 + .../app-group-picker/app-group-picker.vue | 303 + .../app-group-select/app-group-select.vue | 309 + .../app-header-menus/app-header-menus.less | 73 + .../app-header-menus/app-header-menus.vue | 70 + .../app-image-preview/app-image-preview.less | 94 + .../app-image-preview/app-image-preview.vue | 204 + .../app-image-upload/app-image-upload.less | 41 + .../app-image-upload/app-image-upload.vue | 479 + .../app-keep-alive/app-keep-alive.vue | 160 + .../src/components/app-lang/app-lang.less | 3 + .../src/components/app-lang/app-lang.vue | 64 + .../app-menu-item/app-menu-item.vue | 143 + .../components/app-mpicker/app-mpicker.less | 0 .../components/app-mpicker/app-mpicker.vue | 423 + .../app-org-select/app-org-select.less | 10 + .../app-org-select/app-org-select.vue | 255 + .../app-orgsector/app-orgsector.less | 8 + .../app-orgsector/app-orgsector.vue | 139 + .../app-picker-select-view.less | 41 + .../app-picker-select-view.vue | 565 + .../src/components/app-picker/app-picker.less | 23 + .../src/components/app-picker/app-picker.vue | 803 + .../app-portal-design/app-portal-design.less | 13 + .../app-portal-design/app-portal-design.vue | 179 + .../app-quick-group/app-quick-group.less | 47 + .../app-quick-group/app-quick-group.vue | 233 + .../app-quick-menus/app-quick-menus.less | 1 + .../app-quick-menus/app-quick-menus.vue | 72 + .../app-radio-group/app-radio-group.less | 3 + .../app-radio-group/app-radio-group.vue | 215 + .../app-range-date/app-range-date.less | 16 + .../app-range-date/app-range-date.vue | 202 + .../app-range-editor/app-range-editor.less | 10 + .../app-range-editor/app-range-editor.vue | 191 + .../src/components/app-rate/app-rate.less | 1 + .../src/components/app-rate/app-rate.vue | 61 + .../app-rich-text-editor.vue | 522 + .../app-sider-menus/app-sider-menus.less | 1 + .../app-sider-menus/app-sider-menus.vue | 44 + .../src/components/app-slider/app-slider.less | 1 + .../src/components/app-slider/app-slider.vue | 99 + .../src/components/app-span/app-span.less | 7 + .../src/components/app-span/app-span.tsx | 193 + .../components/app-stepper/app-stepper.less | 1 + .../components/app-stepper/app-stepper.vue | 77 + .../app-studioaction/app-studioaction.less | 22 + .../app-studioaction/app-studioaction.vue | 84 + .../src/components/app-switch/app-switch.less | 4 + .../src/components/app-switch/app-switch.vue | 42 + .../components/app-transfer/app-transfer.less | 20 + .../components/app-transfer/app-transfer.vue | 306 + .../app-tree-picker/app-tree-picker.less | 31 + .../app-tree-picker/app-tree-picker.vue | 335 + .../app-update-password.less | 12 + .../app-update-password.vue | 150 + .../app-upload-file-info.less | 23 + .../app-upload-file-info.vue | 112 + .../src/components/app-user/app-user.less | 11 + .../src/components/app-user/app-user.vue | 114 + .../app-vue-pivottable/app-vue-pivottable.vue | 208 + .../app-wf-approval/app-wf-approval.less | 92 + .../app-wf-approval/app-wf-approval.vue | 116 + .../src/components/codelist/codelist.vue | 301 + .../context-menu-container.vue | 54 + .../context-menu-drag/context-menu-drag.less | 129 + .../context-menu-drag/context-menu-drag.vue | 309 + .../components/context-menu/context-menu.less | 61 + .../components/context-menu/context-menu.tsx | 226 + .../date-picker-range/date-picker-range.less | 31 + .../date-picker-range/date-picker-range.vue | 97 + .../dropdown-list-dynamic.less | 4 + .../dropdown-list-dynamic.vue | 295 + .../dropdown-list-mpicker.less | 4 + .../dropdown-list-mpicker.vue | 234 + .../dropdown-list/dropdown-list.less | 16 + .../dropdown-list/dropdown-list.vue | 360 + .../components/filter-tree/filter-mode.vue | 147 + .../components/filter-tree/filter-tree.less | 31 + .../components/filter-tree/filter-tree.vue | 241 + .../src/components/input-box/input-box.less | 17 + .../src/components/input-box/input-box.vue | 199 + .../src/components/login/login.less | 171 + .../src/components/login/login.tsx | 321 + .../property-layout/property-layout.less | 25 + .../property-layout/property-layout.vue | 48 + .../components/tab-page-exp/tab-page-exp.less | 151 + .../components/tab-page-exp/tab-page-exp.vue | 254 + .../components/upload-file/upload-file.less | 31 + .../components/upload-file/upload-file.vue | 175 + .../src/components/view-shell/view-shell.vue | 12 + .../src/counter/counter-service-register.ts | 79 + .../src/counter/counter-service.ts | 53 + .../src/engine/ctrl/data-panel-engine.ts | 101 + .../engine/view/calendar-exp-view-engine.ts | 102 + .../src/engine/view/chart-view-engine.ts | 102 + .../src/engine/view/chart-view9-engine.ts | 30 + .../src/engine/view/data-panel-engine.ts | 72 + .../src/engine/view/data-view-engine.ts | 141 + .../engine/view/data-view-exp-view-engine.ts | 102 + .../src/engine/view/data-view9-engine.ts | 27 + .../src/engine/view/edit-view-engine.ts | 219 + .../src/engine/view/edit-view2-engine.ts | 123 + .../src/engine/view/edit-view3-engine.ts | 123 + .../src/engine/view/edit-view4-engine.ts | 121 + .../src/engine/view/edit-view9-engine.ts | 12 + .../view/form-pickup-data-view-engine.ts | 65 + .../src/engine/view/grid-exp-view-engine.ts | 102 + .../src/engine/view/grid-view-engine.ts | 114 + .../src/engine/view/grid-view8-engine.ts | 288 + .../src/engine/view/grid-view9-engine.ts | 19 + .../src/engine/view/html-view-engine.ts | 12 + .../src/engine/view/kan-ban-view-engine.ts | 58 + .../src/engine/view/list-exp-view-engine.ts | 102 + .../src/engine/view/list-view-engine.ts | 150 + .../src/engine/view/list-view9-engine.ts | 29 + .../src/engine/view/md-view-engine.ts | 453 + .../src/engine/view/mpickup-view-engine.ts | 123 + .../src/engine/view/option-view-engine.ts | 21 + .../engine/view/pickup-data-view-engine.ts | 65 + .../engine/view/pickup-grid-view-engine.ts | 36 + .../engine/view/pickup-tree-view-engine.ts | 54 + .../src/engine/view/pickup-view-engine.ts | 99 + .../src/engine/view/portal-view-engine.ts | 95 + .../src/engine/view/portal-view9-engine.ts | 28 + .../src/engine/view/search-view-engine.ts | 112 + .../src/engine/view/tab-exp-view-engine.ts | 47 + .../src/engine/view/tree-exp-view-engine.ts | 103 + .../src/engine/view/tree-view-engine.ts | 102 + .../src/engine/view/tree-view9-engine.ts | 27 + .../src/engine/view/view-engine.ts | 215 + .../src/engine/view/wfaction-view-engine.ts | 12 + .../engine/view/wfdyna-edit-view-engine.ts | 30 + .../view/wfdyna-exp-grid-view-engine.ts | 37 + .../src/engine/view/wfedit-view-engine.ts | 12 + .../src/engine/view/wfedit-view3-engine.ts | 12 + .../src/engine/view/wfgrid-view-engine.ts | 12 + .../src/engine/view/wfstart-view-engine.ts | 12 + .../src/engine/view/wizard-view-engine.ts | 93 + .../src/environments/environment.ts | 46 + app_AssetManagement/src/index.d.ts | 15 + app_AssetManagement/src/interface/control.ts | 23 + .../entity/eamapply-state-model-line.ts | 72 + .../src/interface/entity/eamapply-state.ts | 56 + .../src/interface/entity/eamapply-type.ts | 72 + .../src/interface/entity/eamapply.ts | 152 + .../interface/entity/eamasset-parts-group.ts | 88 + .../entity/eamasset-state-model-line.ts | 88 + .../interface/entity/eamasset-state-model.ts | 56 + .../src/interface/entity/eamasset-state.ts | 64 + .../src/interface/entity/eamasset-type.ts | 88 + .../src/interface/entity/eamasset.ts | 136 + .../src/interface/entity/eamdocument-type.ts | 72 + .../src/interface/entity/eamdocument.ts | 112 + .../entity/eamlocation-state-model-line.ts | 88 + .../entity/eamlocation-state-model.ts | 56 + .../src/interface/entity/eamlocation-state.ts | 72 + .../src/interface/entity/eamlocation-type.ts | 80 + .../src/interface/entity/eamlocation.ts | 120 + .../src/interface/entity/eammonitor-point.ts | 56 + .../src/interface/entity/eamplan-cdt.ts | 64 + .../src/interface/entity/eamplan-line.ts | 136 + .../src/interface/entity/eamplan-schedule.ts | 64 + .../src/interface/entity/eamplan.ts | 136 + .../src/interface/entity/eamproduct.ts | 64 + .../src/interface/entity/eamservice-level.ts | 64 + .../interface/entity/eamspare-parts-group.ts | 64 + .../interface/entity/eamspare-parts-pro.ts | 96 + .../src/interface/entity/eamwork-order.ts | 240 + .../src/interface/entity/eamwostate.ts | 56 + .../src/interface/entity/eamwotype.ts | 64 + .../src/interface/entity/woorigin.ts | 64 + .../src/interface/viewState.ts | 31 + app_AssetManagement/src/locale/index.ts | 33 + app_AssetManagement/src/locale/lang/en-US.ts | 310 + app_AssetManagement/src/locale/lang/zh-CN.ts | 309 + .../locale/lanres/codelist/codelist_en_US.ts | 10 + .../locale/lanres/codelist/codelist_zh_CN.ts | 10 + .../lanres/components/components_en_US.ts | 251 + .../lanres/components/components_zh_CN.ts | 251 + .../eamapply-state-model-line_en_US.ts | 13 + .../eamapply-state-model-line_zh_CN.ts | 12 + .../eamapply-state/eamapply-state_en_US.ts | 121 + .../eamapply-state/eamapply-state_zh_CN.ts | 120 + .../eamapply-type/eamapply-type_en_US.ts | 122 + .../eamapply-type/eamapply-type_zh_CN.ts | 121 + .../entities/eamapply/eamapply_en_US.ts | 228 + .../entities/eamapply/eamapply_zh_CN.ts | 227 + .../eamasset-parts-group_en_US.ts | 121 + .../eamasset-parts-group_zh_CN.ts | 120 + .../eamasset-state-model-line_en_US.ts | 109 + .../eamasset-state-model-line_zh_CN.ts | 108 + .../eamasset-state-model_en_US.ts | 144 + .../eamasset-state-model_zh_CN.ts | 143 + .../eamasset-state/eamasset-state_en_US.ts | 121 + .../eamasset-state/eamasset-state_zh_CN.ts | 120 + .../eamasset-type/eamasset-type_en_US.ts | 160 + .../eamasset-type/eamasset-type_zh_CN.ts | 159 + .../entities/eamasset/eamasset_en_US.ts | 350 + .../entities/eamasset/eamasset_zh_CN.ts | 349 + .../eamdocument-type_en_US.ts | 123 + .../eamdocument-type_zh_CN.ts | 122 + .../entities/eamdocument/eamdocument_en_US.ts | 186 + .../entities/eamdocument/eamdocument_zh_CN.ts | 185 + .../eamlocation-state-model-line_en_US.ts | 109 + .../eamlocation-state-model-line_zh_CN.ts | 108 + .../eamlocation-state-model_en_US.ts | 132 + .../eamlocation-state-model_zh_CN.ts | 131 + .../eamlocation-state_en_US.ts | 159 + .../eamlocation-state_zh_CN.ts | 158 + .../eamlocation-type_en_US.ts | 124 + .../eamlocation-type_zh_CN.ts | 123 + .../entities/eamlocation/eamlocation_en_US.ts | 345 + .../entities/eamlocation/eamlocation_zh_CN.ts | 344 + .../eammonitor-point_en_US.ts | 34 + .../eammonitor-point_zh_CN.ts | 33 + .../entities/eamplan-cdt/eamplan-cdt_en_US.ts | 12 + .../entities/eamplan-cdt/eamplan-cdt_zh_CN.ts | 11 + .../eamplan-line/eamplan-line_en_US.ts | 135 + .../eamplan-line/eamplan-line_zh_CN.ts | 134 + .../eamplan-schedule_en_US.ts | 12 + .../eamplan-schedule_zh_CN.ts | 11 + .../lanres/entities/eamplan/eamplan_en_US.ts | 317 + .../lanres/entities/eamplan/eamplan_zh_CN.ts | 316 + .../entities/eamproduct/eamproduct_en_US.ts | 35 + .../entities/eamproduct/eamproduct_zh_CN.ts | 34 + .../eamservice-level_en_US.ts | 121 + .../eamservice-level_zh_CN.ts | 120 + .../eamspare-parts-group_en_US.ts | 151 + .../eamspare-parts-group_zh_CN.ts | 150 + .../eamspare-parts-pro_en_US.ts | 95 + .../eamspare-parts-pro_zh_CN.ts | 94 + .../eamwork-order/eamwork-order_en_US.ts | 536 + .../eamwork-order/eamwork-order_zh_CN.ts | 535 + .../entities/eamwostate/eamwostate_en_US.ts | 11 + .../entities/eamwostate/eamwostate_zh_CN.ts | 10 + .../entities/eamwotype/eamwotype_en_US.ts | 119 + .../entities/eamwotype/eamwotype_zh_CN.ts | 118 + .../entities/woorigin/woorigin_en_US.ts | 35 + .../entities/woorigin/woorigin_zh_CN.ts | 34 + .../lanres/userCustom/userCustom_en_US.ts | 5 + .../lanres/userCustom/userCustom_zh_CN.ts | 5 + app_AssetManagement/src/locale/local-list.ts | 6 + .../app-index-view-appmenu.ts | 480 + .../src/mock/appdata/appdata.ts | 40 + .../src/mock/codelist/codelist.ts | 47 + .../eamapply-state-model-lines.ts | 380 + .../entity/eamapply-states/eamapply-states.ts | 380 + .../entity/eamapply-types/eamapply-types.ts | 380 + .../src/mock/entity/eamapplys/eamapplys.ts | 922 + .../eamasset-parts-groups.ts | 922 + .../eamasset-state-model-lines.ts | 380 + .../eamasset-state-models.ts | 380 + .../entity/eamasset-states/eamasset-states.ts | 380 + .../entity/eamasset-types/eamasset-types.ts | 380 + .../src/mock/entity/eamassets/eamassets.ts | 740 + .../eamdocument-types/eamdocument-types.ts | 424 + .../mock/entity/eamdocuments/eamdocuments.ts | 651 + .../eamlocation-state-model-lines.ts | 380 + .../eamlocation-state-models.ts | 380 + .../eamlocation-states/eamlocation-states.ts | 380 + .../eamlocation-types/eamlocation-types.ts | 380 + .../mock/entity/eamlocations/eamlocations.ts | 512 + .../eammonitor-points/eammonitor-points.ts | 380 + .../mock/entity/eamplan-cdts/eamplan-cdts.ts | 380 + .../entity/eamplan-lines/eamplan-lines.ts | 1193 ++ .../eamplan-schedules/eamplan-schedules.ts | 380 + .../src/mock/entity/eamplans/eamplans.ts | 922 + .../mock/entity/eamproducts/eamproducts.ts | 380 + .../eamservice-levels/eamservice-levels.ts | 380 + .../eamspare-parts-groups.ts | 380 + .../eamspare-parts-pros.ts | 651 + .../entity/eamwork-orders/eamwork-orders.ts | 2952 ++++ .../mock/entity/eamwostates/eamwostates.ts | 380 + .../src/mock/entity/eamwotypes/eamwotypes.ts | 380 + .../src/mock/entity/woorigins/woorigins.ts | 380 + app_AssetManagement/src/mock/index.ts | 39 + app_AssetManagement/src/mock/login/login.ts | 28 + app_AssetManagement/src/mock/mock-adapter.ts | 59 + .../src/mock/portlet/portlet.ts | 13 + app_AssetManagement/src/mock/upload/upload.ts | 22 + .../src/mock/viewconfig/viewconfig.ts | 1003 ++ .../model/chart-detail/chart-bar-series.ts | 137 + .../model/chart-detail/chart-dataset-field.ts | 94 + .../model/chart-detail/chart-funnel-series.ts | 118 + .../model/chart-detail/chart-line-series.ts | 137 + .../model/chart-detail/chart-pie-series.ts | 118 + .../model/chart-detail/chart-radar-series.ts | 118 + .../src/model/chart-detail/chart-series.ts | 307 + .../src/model/chart-detail/index.ts | 6 + .../src/model/form-detail/form-button.ts | 15 + .../src/model/form-detail/form-detail.ts | 156 + .../src/model/form-detail/form-druipart.ts | 81 + .../src/model/form-detail/form-group-panel.ts | 76 + .../src/model/form-detail/form-iframe.ts | 15 + .../src/model/form-detail/form-item.ts | 100 + .../src/model/form-detail/form-page.ts | 16 + .../src/model/form-detail/form-part.ts | 16 + .../src/model/form-detail/form-row-item.ts | 16 + .../src/model/form-detail/form-tab-page.ts | 59 + .../src/model/form-detail/form-tab-panel.ts | 91 + .../model/form-detail/form-user-control.ts | 16 + .../src/model/form-detail/index.ts | 11 + .../eamapply-asset-apply-grid-view-base.tsx | 703 + .../eamapply-asset-apply-grid-view.html | 49 + .../eamapply-asset-apply-grid-view.vue | 24 + .../eamapply-grid-view-base.tsx | 703 + .../eamapply-grid-view.html | 52 + .../eamapply-grid-view/eamapply-grid-view.vue | 24 + .../eamapply-info-main-view-base.tsx | 165 + .../eamapply-info-main-view.html | 24 + .../eamapply-info-main-view.vue | 22 + .../eamapply-info-view-base.tsx | 130 + .../eamapply-info-view.html | 13 + .../eamapply-info-view/eamapply-info-view.vue | 22 + .../eamapply-quick-create-view-base.tsx | 171 + .../eamapply-quick-create-view.html | 34 + .../eamapply-quick-create-view.vue | 22 + .../eamapply-summary-view-base.tsx | 142 + .../eamapply-summary-view.html | 12 + .../eamapply-summary-view.vue | 22 + .../eamapply-type-edit-view-base.tsx | 303 + .../eamapply-type-edit-view.html | 29 + .../eamapply-type-edit-view.vue | 22 + .../eamapply-type-grid-view-base.tsx | 724 + .../eamapply-type-grid-view.html | 52 + .../eamapply-type-grid-view.vue | 24 + .../eamapply-type-pickup-grid-view-base.tsx | 221 + .../eamapply-type-pickup-grid-view.html | 44 + .../eamapply-type-pickup-grid-view.vue | 24 + .../eamapply-type-pickup-view-base.tsx | 170 + .../eamapply-type-pickup-view.html | 25 + .../eamapply-type-pickup-view.vue | 22 + .../eamasset-child-grid-view-base.tsx | 710 + .../eamasset-child-grid-view.html | 49 + .../eamasset-child-grid-view.vue | 24 + .../eamasset-edit-view-base.tsx | 303 + .../eamasset-edit-view.html | 26 + .../eamasset-edit-view/eamasset-edit-view.vue | 22 + .../eamasset-grid-view-base.tsx | 703 + .../eamasset-grid-view.html | 49 + .../eamasset-grid-view/eamasset-grid-view.vue | 24 + .../eamasset-info-main-view-base.tsx | 165 + .../eamasset-info-main-view.html | 24 + .../eamasset-info-main-view.vue | 22 + .../eamasset-info-view-base.tsx | 269 + .../eamasset-info-view.html | 15 + .../eamasset-info-view/eamasset-info-view.vue | 22 + ...eamasset-location-asset-grid-view-base.tsx | 710 + .../eamasset-location-asset-grid-view.html | 52 + .../eamasset-location-asset-grid-view.vue | 24 + ...parts-group-asset-parts-grid-view-base.tsx | 512 + ...set-parts-group-asset-parts-grid-view.html | 49 + ...sset-parts-group-asset-parts-grid-view.vue | 24 + .../eamasset-parts-group-edit-view-base.tsx | 303 + .../eamasset-parts-group-edit-view.html | 29 + .../eamasset-parts-group-edit-view.vue | 22 + ...parts-group-parts-asset-grid-view-base.tsx | 512 + ...set-parts-group-parts-asset-grid-view.html | 49 + ...sset-parts-group-parts-asset-grid-view.vue | 24 + .../eamasset-pickup-grid-view-base.tsx | 221 + .../eamasset-pickup-grid-view.html | 41 + .../eamasset-pickup-grid-view.vue | 24 + .../eamasset-pickup-view-base.tsx | 170 + .../eamasset-pickup-view.html | 25 + .../eamasset-pickup-view.vue | 22 + .../eamasset-quick-create-view-base.tsx | 171 + .../eamasset-quick-create-view.html | 34 + .../eamasset-quick-create-view.vue | 22 + .../eamasset-state-edit-view-base.tsx | 303 + .../eamasset-state-edit-view.html | 29 + .../eamasset-state-edit-view.vue | 22 + .../eamasset-state-grid-view-base.tsx | 700 + .../eamasset-state-grid-view.html | 52 + .../eamasset-state-grid-view.vue | 24 + .../eamasset-state-model-edit-view-base.tsx | 364 + .../eamasset-state-model-edit-view.html | 29 + .../eamasset-state-model-edit-view.vue | 22 + .../eamasset-state-model-grid-view-base.tsx | 1003 ++ .../eamasset-state-model-grid-view.html | 52 + .../eamasset-state-model-grid-view.vue | 24 + ...masset-state-model-line-edit-view-base.tsx | 303 + .../eamasset-state-model-line-edit-view.html | 29 + .../eamasset-state-model-line-edit-view.vue | 22 + ...masset-state-model-line-grid-view-base.tsx | 642 + .../eamasset-state-model-line-grid-view.html | 49 + .../eamasset-state-model-line-grid-view.vue | 24 + ...sset-state-model-pickup-grid-view-base.tsx | 221 + ...eamasset-state-model-pickup-grid-view.html | 44 + .../eamasset-state-model-pickup-grid-view.vue | 24 + .../eamasset-state-model-pickup-view-base.tsx | 170 + .../eamasset-state-model-pickup-view.html | 25 + .../eamasset-state-model-pickup-view.vue | 22 + .../eamasset-state-pickup-grid-view-base.tsx | 221 + .../eamasset-state-pickup-grid-view.html | 44 + .../eamasset-state-pickup-grid-view.vue | 24 + .../eamasset-state-pickup-view-base.tsx | 170 + .../eamasset-state-pickup-view.html | 25 + .../eamasset-state-pickup-view.vue | 22 + .../eamasset-summary-view-base.tsx | 142 + .../eamasset-summary-view.html | 12 + .../eamasset-summary-view.vue | 22 + .../eamasset-tree-exp-view-base.tsx | 205 + .../eamasset-tree-exp-view.html | 19 + .../eamasset-tree-exp-view.vue | 22 + .../eamasset-type-edit-view-base.tsx | 303 + .../eamasset-type-edit-view.html | 29 + .../eamasset-type-edit-view.vue | 22 + .../eamasset-type-grid-view-base.tsx | 700 + .../eamasset-type-grid-view.html | 52 + .../eamasset-type-grid-view.vue | 24 + .../eamasset-type-info-main-view-base.tsx | 165 + .../eamasset-type-info-main-view.html | 24 + .../eamasset-type-info-main-view.vue | 22 + .../eamasset-type-info-view-base.tsx | 130 + .../eamasset-type-info-view.html | 13 + .../eamasset-type-info-view.vue | 22 + .../eamasset-type-pickup-grid-view-base.tsx | 221 + .../eamasset-type-pickup-grid-view.html | 44 + .../eamasset-type-pickup-grid-view.vue | 24 + .../eamasset-type-pickup-view-base.tsx | 170 + .../eamasset-type-pickup-view.html | 25 + .../eamasset-type-pickup-view.vue | 22 + .../eamasset-type-summary-view-base.tsx | 142 + .../eamasset-type-summary-view.html | 15 + .../eamasset-type-summary-view.vue | 22 + ...document-asset-type-doc-grid-view-base.tsx | 734 + .../eamdocument-asset-type-doc-grid-view.html | 49 + .../eamdocument-asset-type-doc-grid-view.vue | 24 + .../eamdocument-edit-view-base.tsx | 303 + .../eamdocument-edit-view.html | 29 + .../eamdocument-edit-view.vue | 22 + .../eamdocument-grid-view-base.tsx | 1037 ++ .../eamdocument-grid-view.html | 52 + .../eamdocument-grid-view.vue | 24 + .../eamdocument-type-edit-view-base.tsx | 303 + .../eamdocument-type-edit-view.html | 29 + .../eamdocument-type-edit-view.vue | 22 + .../eamdocument-type-grid-view-base.tsx | 700 + .../eamdocument-type-grid-view.html | 52 + .../eamdocument-type-grid-view.vue | 24 + ...eamdocument-type-pickup-grid-view-base.tsx | 221 + .../eamdocument-type-pickup-grid-view.html | 44 + .../eamdocument-type-pickup-grid-view.vue | 24 + .../eamdocument-type-pickup-view-base.tsx | 170 + .../eamdocument-type-pickup-view.html | 25 + .../eamdocument-type-pickup-view.vue | 22 + .../eamproductpickup-grid-view-base.tsx | 221 + .../eamproductpickup-grid-view.html | 44 + .../eamproductpickup-grid-view.vue | 24 + .../eamproductpickup-view-base.tsx | 170 + .../eamproductpickup-view.html | 25 + .../eamproductpickup-view.vue | 22 + ...mspare-parts-group-dashboard-view-base.tsx | 142 + .../eamspare-parts-group-dashboard-view.html | 12 + .../eamspare-parts-group-dashboard-view.vue | 22 + .../eamspare-parts-group-edit-view-base.tsx | 303 + .../eamspare-parts-group-edit-view.html | 29 + .../eamspare-parts-group-edit-view.vue | 22 + .../eamspare-parts-group-grid-view-base.tsx | 700 + .../eamspare-parts-group-grid-view.html | 52 + .../eamspare-parts-group-grid-view.vue | 24 + ...mspare-parts-group-info-main-view-base.tsx | 165 + .../eamspare-parts-group-info-main-view.html | 24 + .../eamspare-parts-group-info-main-view.vue | 22 + .../eamspare-parts-group-info-view-base.tsx | 130 + .../eamspare-parts-group-info-view.html | 13 + .../eamspare-parts-group-info-view.vue | 22 + ...pare-parts-group-pickup-grid-view-base.tsx | 221 + ...eamspare-parts-group-pickup-grid-view.html | 44 + .../eamspare-parts-group-pickup-grid-view.vue | 24 + .../eamspare-parts-group-pickup-view-base.tsx | 170 + .../eamspare-parts-group-pickup-view.html | 25 + .../eamspare-parts-group-pickup-view.vue | 22 + .../eamspare-parts-proedit-view-base.tsx | 303 + .../eamspare-parts-proedit-view.html | 26 + .../eamspare-parts-proedit-view.vue | 22 + ...pare-parts-proparts-pro-grid-view-base.tsx | 512 + ...eamspare-parts-proparts-pro-grid-view.html | 49 + .../eamspare-parts-proparts-pro-grid-view.vue | 24 + .../app-index-view/app-index-view-base.tsx | 341 + .../base/app-index-view/app-index-view.vue | 23 + .../src/pages/base/app-index-view/main.ts | 63 + .../base/app-index-view/page-register.ts | 123 + .../src/pages/base/app-index-view/router.ts | 4168 +++++ .../eamlocation-child-grid-view-base.tsx | 700 + .../eamlocation-child-grid-view.html | 49 + .../eamlocation-child-grid-view.vue | 24 + .../eamlocation-edit-view-base.tsx | 303 + .../eamlocation-edit-view.html | 29 + .../eamlocation-edit-view.vue | 22 + .../eamlocation-grid-view-base.tsx | 681 + .../eamlocation-grid-view.html | 49 + .../eamlocation-grid-view.vue | 24 + .../eamlocation-info-main-view-base.tsx | 165 + .../eamlocation-info-main-view.html | 24 + .../eamlocation-info-main-view.vue | 22 + .../eamlocation-info-view-base.tsx | 269 + .../eamlocation-info-view.html | 15 + .../eamlocation-info-view.vue | 22 + .../eamlocation-pickup-grid-view-base.tsx | 221 + .../eamlocation-pickup-grid-view.html | 44 + .../eamlocation-pickup-grid-view.vue | 24 + .../eamlocation-pickup-view-base.tsx | 170 + .../eamlocation-pickup-view.html | 25 + .../eamlocation-pickup-view.vue | 22 + .../eamlocation-quick-create-view-base.tsx | 171 + .../eamlocation-quick-create-view.html | 34 + .../eamlocation-quick-create-view.vue | 22 + .../eamlocation-state-edit-view-base.tsx | 303 + .../eamlocation-state-edit-view.html | 29 + .../eamlocation-state-edit-view.vue | 22 + .../eamlocation-state-grid-view-base.tsx | 700 + .../eamlocation-state-grid-view.html | 52 + .../eamlocation-state-grid-view.vue | 24 + ...eamlocation-state-model-edit-view-base.tsx | 364 + .../eamlocation-state-model-edit-view.html | 29 + .../eamlocation-state-model-edit-view.vue | 22 + ...eamlocation-state-model-grid-view-base.tsx | 700 + .../eamlocation-state-model-grid-view.html | 52 + .../eamlocation-state-model-grid-view.vue | 24 + ...cation-state-model-line-edit-view-base.tsx | 303 + ...amlocation-state-model-line-edit-view.html | 29 + ...eamlocation-state-model-line-edit-view.vue | 22 + ...cation-state-model-line-grid-view-base.tsx | 666 + ...amlocation-state-model-line-grid-view.html | 48 + ...eamlocation-state-model-line-grid-view.vue | 24 + ...tion-state-model-pickup-grid-view-base.tsx | 221 + ...location-state-model-pickup-grid-view.html | 44 + ...mlocation-state-model-pickup-grid-view.vue | 24 + ...mlocation-state-model-pickup-view-base.tsx | 170 + .../eamlocation-state-model-pickup-view.html | 25 + .../eamlocation-state-model-pickup-view.vue | 22 + ...amlocation-state-pickup-grid-view-base.tsx | 221 + .../eamlocation-state-pickup-grid-view.html | 44 + .../eamlocation-state-pickup-grid-view.vue | 24 + .../eamlocation-state-pickup-view-base.tsx | 170 + .../eamlocation-state-pickup-view.html | 25 + .../eamlocation-state-pickup-view.vue | 22 + .../eamlocation-summary-view-base.tsx | 142 + .../eamlocation-summary-view.html | 12 + .../eamlocation-summary-view.vue | 22 + .../eamlocation-tree-child-grid-view-base.tsx | 700 + .../eamlocation-tree-child-grid-view.html | 49 + .../eamlocation-tree-child-grid-view.vue | 24 + .../eamlocation-tree-exp-view-base.tsx | 205 + .../eamlocation-tree-exp-view.html | 19 + .../eamlocation-tree-exp-view.vue | 22 + .../eamlocation-type-edit-view-base.tsx | 303 + .../eamlocation-type-edit-view.html | 29 + .../eamlocation-type-edit-view.vue | 22 + .../eamlocation-type-grid-view-base.tsx | 700 + .../eamlocation-type-grid-view.html | 52 + .../eamlocation-type-grid-view.vue | 24 + ...eamlocation-type-pickup-grid-view-base.tsx | 221 + .../eamlocation-type-pickup-grid-view.html | 44 + .../eamlocation-type-pickup-grid-view.vue | 24 + .../eamlocation-type-pickup-view-base.tsx | 170 + .../eamlocation-type-pickup-view.html | 25 + .../eamlocation-type-pickup-view.vue | 22 + .../eamplan-asset-plan-grid-view-base.tsx | 703 + .../eamplan-asset-plan-grid-view.html | 49 + .../eamplan-asset-plan-grid-view.vue | 24 + .../eamplan-edit-view-base.tsx | 775 + .../eamplan-edit-view/eamplan-edit-view.html | 29 + .../eamplan-edit-view/eamplan-edit-view.vue | 22 + .../eamplan-grid-view-base.tsx | 703 + .../eamplan-grid-view/eamplan-grid-view.html | 52 + .../eamplan-grid-view/eamplan-grid-view.vue | 24 + .../eamplan-info-main-view-base.tsx | 165 + .../eamplan-info-main-view.html | 24 + .../eamplan-info-main-view.vue | 22 + .../eamplan-info-view-base.tsx | 269 + .../eamplan-info-view/eamplan-info-view.html | 15 + .../eamplan-info-view/eamplan-info-view.vue | 22 + .../eamplan-line-edit-view-base.tsx | 303 + .../eamplan-line-edit-view.html | 29 + .../eamplan-line-edit-view.vue | 22 + .../eamplan-line-grid-view-base.tsx | 734 + .../eamplan-line-grid-view.html | 49 + .../eamplan-line-grid-view.vue | 24 + .../eamplan-pickup-grid-view-base.tsx | 221 + .../eamplan-pickup-grid-view.html | 44 + .../eamplan-pickup-grid-view.vue | 24 + .../eamplan-pickup-view-base.tsx | 170 + .../eamplan-pickup-view.html | 25 + .../eamplan-pickup-view.vue | 22 + .../eamplan-quick-create-view-base.tsx | 171 + .../eamplan-quick-create-view.html | 34 + .../eamplan-quick-create-view.vue | 22 + .../eamplan-summary-view-base.tsx | 142 + .../eamplan-summary-view.html | 12 + .../eamplan-summary-view.vue | 22 + ...eammonitor-point-pickup-grid-view-base.tsx | 221 + .../eammonitor-point-pickup-grid-view.html | 44 + .../eammonitor-point-pickup-grid-view.vue | 24 + .../eammonitor-point-pickup-view-base.tsx | 170 + .../eammonitor-point-pickup-view.html | 25 + .../eammonitor-point-pickup-view.vue | 22 + .../eamservice-level-edit-view-base.tsx | 303 + .../eamservice-level-edit-view.html | 29 + .../eamservice-level-edit-view.vue | 22 + .../eamservice-level-grid-view-base.tsx | 724 + .../eamservice-level-grid-view.html | 52 + .../eamservice-level-grid-view.vue | 24 + ...eamservice-level-pickup-grid-view-base.tsx | 221 + .../eamservice-level-pickup-grid-view.html | 44 + .../eamservice-level-pickup-grid-view.vue | 24 + .../eamservice-level-pickup-view-base.tsx | 170 + .../eamservice-level-pickup-view.html | 25 + .../eamservice-level-pickup-view.vue | 22 + .../eamwork-order-apply-wogrid-view-base.tsx | 722 + .../eamwork-order-apply-wogrid-view.html | 49 + .../eamwork-order-apply-wogrid-view.vue | 24 + .../eamwork-order-asset-wogrid-view-base.tsx | 703 + .../eamwork-order-asset-wogrid-view.html | 49 + .../eamwork-order-asset-wogrid-view.vue | 24 + .../eamwork-order-child-wogrid-view-base.tsx | 722 + .../eamwork-order-child-wogrid-view.html | 52 + .../eamwork-order-child-wogrid-view.vue | 24 + ...amwork-order-data-panel-edit-view-base.tsx | 165 + .../eamwork-order-data-panel-edit-view.html | 27 + .../eamwork-order-data-panel-edit-view.vue | 22 + .../eamwork-order-edit-view-base.tsx | 303 + .../eamwork-order-edit-view.html | 29 + .../eamwork-order-edit-view.vue | 22 + .../eamwork-order-grid-view-base.tsx | 703 + .../eamwork-order-grid-view.html | 52 + .../eamwork-order-grid-view.vue | 24 + .../eamwork-order-info-main-view-base.tsx | 165 + .../eamwork-order-info-main-view.html | 24 + .../eamwork-order-info-main-view.vue | 22 + ...eamwork-order-master-summary-view-base.tsx | 142 + .../eamwork-order-master-summary-view.html | 12 + .../eamwork-order-master-summary-view.vue | 22 + ...amwork-order-master-tab-info-view-base.tsx | 287 + .../eamwork-order-master-tab-info-view.html | 36 + .../eamwork-order-master-tab-info-view.vue | 24 + .../eamwork-order-pickup-grid-view-base.tsx | 221 + .../eamwork-order-pickup-grid-view.html | 44 + .../eamwork-order-pickup-grid-view.vue | 24 + .../eamwork-order-pickup-view-base.tsx | 170 + .../eamwork-order-pickup-view.html | 25 + .../eamwork-order-pickup-view.vue | 22 + .../eamwork-order-quick-create-view-base.tsx | 171 + .../eamwork-order-quick-create-view.html | 34 + .../eamwork-order-quick-create-view.vue | 22 + .../eamwotype-edit-view-base.tsx | 303 + .../eamwotype-edit-view.html | 29 + .../eamwotype-edit-view.vue | 22 + .../eamwotype-grid-view-base.tsx | 700 + .../eamwotype-grid-view.html | 52 + .../eamwotype-grid-view.vue | 24 + .../eamwotype-pickup-grid-view-base.tsx | 221 + .../eamwotype-pickup-grid-view.html | 44 + .../eamwotype-pickup-grid-view.vue | 24 + .../eamwotype-pickup-view-base.tsx | 170 + .../eamwotype-pickup-view.html | 25 + .../eamwotype-pickup-view.vue | 22 + .../woorigin-pickup-grid-view-base.tsx | 221 + .../woorigin-pickup-grid-view.html | 44 + .../woorigin-pickup-grid-view.vue | 24 + .../woorigin-pickup-view-base.tsx | 170 + .../woorigin-pickup-view.html | 25 + .../woorigin-pickup-view.vue | 22 + app_AssetManagement/src/portlet-register.ts | 5 + app_AssetManagement/src/router/index.ts | 8 + .../src/service/app/app-center-service.ts | 105 + .../src/service/app/codelist-service.ts | 139 + .../src/service/app/navdata-service.ts | 387 + .../eamapply-state-model-line-service-base.ts | 187 + .../eamapply-state-model-line-service.ts | 25 + .../eamapply-state-service-base.ts | 187 + .../eamapply-state/eamapply-state-service.ts | 25 + .../eamapply-type-service-base.ts | 187 + .../eamapply-type/eamapply-type-service.ts | 25 + .../service/eamapply/eamapply-service-base.ts | 310 + .../src/service/eamapply/eamapply-service.ts | 25 + .../eamasset-parts-group-service-base.ts | 307 + .../eamasset-parts-group-service.ts | 25 + .../eamasset-state-model-line-service-base.ts | 187 + .../eamasset-state-model-line-service.ts | 25 + .../eamasset-state-model-service-base.ts | 187 + .../eamasset-state-model-service.ts | 25 + .../eamasset-state-service-base.ts | 187 + .../eamasset-state/eamasset-state-service.ts | 25 + .../eamasset-type-service-base.ts | 189 + .../eamasset-type/eamasset-type-service.ts | 25 + .../service/eamasset/eamasset-service-base.ts | 275 + .../src/service/eamasset/eamasset-service.ts | 25 + .../eamdocument-type-service-base.ts | 202 + .../eamdocument-type-service.ts | 25 + .../eamdocument/eamdocument-service-base.ts | 247 + .../eamdocument/eamdocument-service.ts | 25 + ...mlocation-state-model-line-service-base.ts | 187 + .../eamlocation-state-model-line-service.ts | 25 + .../eamlocation-state-model-service-base.ts | 187 + .../eamlocation-state-model-service.ts | 25 + .../eamlocation-state-service-base.ts | 187 + .../eamlocation-state-service.ts | 25 + .../eamlocation-type-service-base.ts | 187 + .../eamlocation-type-service.ts | 25 + .../eamlocation/eamlocation-service-base.ts | 234 + .../eamlocation/eamlocation-service.ts | 25 + .../eammonitor-point-service-base.ts | 187 + .../eammonitor-point-service.ts | 25 + .../eamplan-cdt/eamplan-cdt-service-base.ts | 187 + .../eamplan-cdt/eamplan-cdt-service.ts | 25 + .../eamplan-line/eamplan-line-service-base.ts | 367 + .../eamplan-line/eamplan-line-service.ts | 25 + .../eamplan-schedule-service-base.ts | 187 + .../eamplan-schedule-service.ts | 25 + .../service/eamplan/eamplan-service-base.ts | 313 + .../src/service/eamplan/eamplan-service.ts | 25 + .../eamproduct/eamproduct-service-base.ts | 187 + .../service/eamproduct/eamproduct-service.ts | 25 + .../eamservice-level-service-base.ts | 187 + .../eamservice-level-service.ts | 25 + .../eamspare-parts-group-service-base.ts | 189 + .../eamspare-parts-group-service.ts | 25 + .../eamspare-parts-pro-service-base.ts | 247 + .../eamspare-parts-pro-service.ts | 25 + .../eamwork-order-service-base.ts | 722 + .../eamwork-order/eamwork-order-service.ts | 25 + .../eamwostate/eamwostate-service-base.ts | 187 + .../service/eamwostate/eamwostate-service.ts | 25 + .../eamwotype/eamwotype-service-base.ts | 187 + .../service/eamwotype/eamwotype-service.ts | 25 + .../src/service/entity-service-register.ts | 109 + .../src/service/entity-service.ts | 991 ++ .../service/woorigin/woorigin-service-base.ts | 187 + .../src/service/woorigin/woorigin-service.ts | 25 + app_AssetManagement/src/shims-tsx.d.ts | 13 + app_AssetManagement/src/shims-vue.d.ts | 13 + app_AssetManagement/src/store/actions.ts | 6 + app_AssetManagement/src/store/api/api.ts | 0 app_AssetManagement/src/store/getters.ts | 111 + app_AssetManagement/src/store/index.ts | 29 + .../store/modules/auth-resource/actions.ts | 17 + .../store/modules/auth-resource/getters.ts | 54 + .../src/store/modules/auth-resource/index.ts | 16 + .../store/modules/auth-resource/mutations.ts | 35 + .../src/store/modules/auth-resource/state.ts | 11 + .../src/store/modules/view-action/actions.ts | 42 + .../src/store/modules/view-action/getters.ts | 41 + .../src/store/modules/view-action/index.ts | 16 + .../store/modules/view-action/mutations.ts | 65 + .../src/store/modules/view-action/state.ts | 1274 ++ app_AssetManagement/src/store/mutations.ts | 114 + app_AssetManagement/src/store/state.ts | 14 + .../app-breadcrumb/app-breadcrumb.less | 77 + .../app-breadcrumb/app-breadcrumb.tsx | 144 + .../app-header-menus/app-header-menus.less | 59 + .../app-header-menus/app-header-menus.tsx | 185 + .../exp-control-layout.less | 76 + .../exp-control-layout/exp-control-layout.tsx | 194 + .../html-container/html-container.vue | 61 + .../app-content-bottom-exp-view-layout.less | 72 + .../app-content-bottom-exp.less | 50 + .../app-content-bottom-exp.tsx | 136 + .../app-content-left-exp.less | 75 + .../app-content-left-exp.tsx | 133 + .../app-content-left-nav-menu.less | 100 + .../app-content-left-nav-menu.tsx | 263 + .../layout/app-content/app-content.less | 105 + .../layout/app-content/app-content.tsx | 112 + .../layout/app-footer/app-footer.less | 45 + .../layout/app-footer/app-footer.tsx | 61 + .../layout/app-header/app-header.less | 22 + .../layout/app-header/app-header.tsx | 36 + .../layout/app-layout/app-layout.less | 26 + .../layout/app-layout/app-layout.tsx | 35 + .../components/menu-icon/menu-icon.less | 0 .../components/menu-icon/menu-icon.tsx | 41 + .../studio-embed-view-style2-layout.less | 0 .../studio-embed-view-style2.less | 4 + .../studio-embed-view-style2.tsx | 31 + .../studio-embed-view-layout.less | 0 .../studio-embed-view/studio-embed-view.less | 4 + .../studio-embed-view/studio-embed-view.tsx | 31 + .../studio-view-style2-base.tsx | 82 + .../studio-view-style2-layout.less | 55 + .../studio-view-style2.less | 112 + .../studio-view-style2/studio-view-style2.tsx | 17 + .../studio-view/studio-view-base.tsx | 130 + .../studio-view/studio-view-layout.less | 592 + .../components/studio-view/studio-view.less | 146 + .../components/studio-view/studio-view.tsx | 17 + .../components/user-info/user-info.less | 36 + .../components/user-info/user-info.tsx | 218 + .../view-config-actions.less | 109 + .../view-config-actions.tsx | 205 + .../components/view-toolbar/view-toolbar.less | 86 + .../components/view-toolbar/view-toolbar.tsx | 246 + .../core/StudioActionController.tsx | 221 + .../studio-core/decorators/SingletonMode.ts | 42 + .../decorators/VueLifeCycleProcessing.ts | 125 + .../src/studio-core/decorators/index.ts | 4 + .../decorators/service/ServiceData.ts | 61 + .../decorators/service/ServiceInjector.ts | 23 + .../decorators/service/ServiceProvide.ts | 20 + .../notification-signal.less | 95 + .../notification-signal.tsx | 307 + .../src/studio-core/global/index.ts | 113 + app_AssetManagement/src/studio-core/index.ts | 124 + .../src/studio-core/interface/LayoutState.ts | 80 + .../src/studio-core/interface/ToolbarItem.ts | 107 + .../message-center/acc-send-util.ts | 167 + .../app-communications-center.ts | 444 + .../studio-core/message-center/interface.ts | 29 + .../message-type/base/message-type-base.ts | 172 + .../message-type/command/command-create.ts | 12 + .../message-type/command/command-remove.ts | 12 + .../message-type/command/command-update.ts | 12 + .../message-type/message-command.ts | 169 + .../message-type/message-console.ts | 47 + .../message/acc-central-message.ts | 12 + .../message/acc-current-message.ts | 12 + .../message/acc-system-message.ts | 12 + .../message/base/acc-message-base.ts | 177 + .../studio-core/service/FooterItemsService.ts | 139 + .../src/studio-core/service/TextCopy.ts | 108 + .../src/studio-core/service/UIStateService.ts | 123 + .../app-context-store/AppContextStore.ts | 14 + .../app-context-store/AppContextStoreBase.ts | 47 + .../service/app-nav-history/AppNavHistory.ts | 14 + .../app-nav-history/AppNavHistoryBase.ts | 333 + .../service/app-service/AppService.ts | 13 + .../service/app-service/AppServiceBase.ts | 49 + .../service/app-view-store/AppViewStore.ts | 14 + .../app-view-store/AppViewStoreBase.ts | 68 + .../src/studio-core/types/index.d.ts | 49 + .../studio-core/utils/js-basic-extension.ts | 45 + .../utils/studio-drawer/studio-drawer.less | 129 + .../utils/studio-drawer/studio-drawer.tsx | 424 + .../src/studio-core/utils/timer-util.ts | 77 + .../studio-core/view/CalendarExpViewBase.tsx | 12 + .../studio-core/view/CalendarView9Base.tsx | 12 + .../src/studio-core/view/CalendarViewBase.tsx | 72 + .../src/studio-core/view/ChartView9Base.tsx | 12 + .../src/studio-core/view/ChartViewBase.tsx | 24 + .../studio-core/view/DashboardView9Base.tsx | 12 + .../studio-core/view/DashboardViewBase.tsx | 61 + .../src/studio-core/view/DataView9Base.tsx | 12 + .../src/studio-core/view/DataViewBase.tsx | 25 + .../studio-core/view/DataViewExpViewBase.tsx | 24 + .../src/studio-core/view/EditView2Base.tsx | 19 + .../src/studio-core/view/EditView3Base.tsx | 12 + .../src/studio-core/view/EditView4Base.tsx | 20 + .../src/studio-core/view/EditView9Base.tsx | 22 + .../src/studio-core/view/EditViewBase.tsx | 12 + .../src/studio-core/view/ExpViewBase.tsx | 62 + .../view/FormPickupDataViewBase.tsx | 12 + .../src/studio-core/view/GanttView9Base.tsx | 12 + .../src/studio-core/view/GanttViewBase.tsx | 12 + .../src/studio-core/view/GridExpViewBase.tsx | 12 + .../src/studio-core/view/GridView9Base.tsx | 12 + .../src/studio-core/view/GridViewBase.tsx | 89 + .../view/IndexPickupDataViewBase.tsx | 29 + .../src/studio-core/view/IndexViewBase.tsx | 90 + .../src/studio-core/view/KanBanViewBase.tsx | 12 + .../src/studio-core/view/ListExpViewBase.tsx | 12 + .../src/studio-core/view/ListView9Base.tsx | 12 + .../src/studio-core/view/ListViewBase.tsx | 25 + .../src/studio-core/view/MDViewBase.tsx | 177 + .../src/studio-core/view/MEditView9Base.tsx | 66 + .../src/studio-core/view/MPickupViewBase.tsx | 152 + .../src/studio-core/view/OptionViewBase.tsx | 36 + .../studio-core/view/PickupGridViewBase.tsx | 32 + .../studio-core/view/PickupTreeViewBase.tsx | 50 + .../src/studio-core/view/PickupView3Base.tsx | 12 + .../src/studio-core/view/PickupViewBase.tsx | 65 + .../src/studio-core/view/PortalViewBase.tsx | 30 + .../src/studio-core/view/TabExpViewBase.tsx | 12 + .../src/studio-core/view/TabFormView9Base.tsx | 12 + .../src/studio-core/view/TreeExpViewBase.tsx | 12 + .../studio-core/view/TreeGridExViewBase.tsx | 12 + .../src/studio-core/view/TreeView9Base.tsx | 12 + .../src/studio-core/view/TreeViewBase.tsx | 31 + .../src/studio-core/view/ViewBase.tsx | 600 + .../src/studio-core/view/WizardViewBase.tsx | 12 + .../src/studio-core/widgets/ControlBase.tsx | 277 + .../widgets/DataViewExpBarControlBase.tsx | 58 + .../widgets/EditFormControlBase.tsx | 780 + .../studio-core/widgets/ExpControlBase.tsx | 121 + .../studio-core/widgets/FormControlBase.tsx | 621 + .../studio-core/widgets/GridControlBase.tsx | 1188 ++ .../widgets/GridExpBarControlBase.tsx | 61 + .../studio-core/widgets/ListControlBase.tsx | 241 + .../src/studio-core/widgets/MDControlBase.tsx | 277 + .../studio-core/widgets/MainControlBase.tsx | 27 + .../studio-core/widgets/PanelControlBase.tsx | 337 + .../widgets/SearchFormControlBase.tsx | 92 + .../widgets/TabExpPanelControlBase.tsx | 109 + app_AssetManagement/src/styles/default.less | 1335 ++ app_AssetManagement/src/styles/user.less | 0 app_AssetManagement/src/styles/var.css | 64 + .../src/styles/vue-transition.less | 30 + app_AssetManagement/src/template.html | 31 + .../src/theme/app-blue-dark.less | 182 + .../src/theme/app-dark-white.less | 181 + app_AssetManagement/src/theme/app-dark.less | 181 + app_AssetManagement/src/theme/app-light.less | 182 + ...mapply-state-model-line-ui-service-base.ts | 250 + .../eamapply-state-model-line-ui-service.ts | 21 + .../eamapply-state-ui-service-base.ts | 252 + .../eamapply-state-ui-service.ts | 21 + .../eamapply-type-ui-service-base.ts | 254 + .../eamapply-type/eamapply-type-ui-service.ts | 21 + .../eamapply/eamapply-ui-service-base.ts | 377 + .../uiservice/eamapply/eamapply-ui-service.ts | 21 + .../eamasset-parts-group-ui-service-base.ts | 253 + .../eamasset-parts-group-ui-service.ts | 21 + ...masset-state-model-line-ui-service-base.ts | 252 + .../eamasset-state-model-line-ui-service.ts | 21 + .../eamasset-state-model-ui-service-base.ts | 254 + .../eamasset-state-model-ui-service.ts | 21 + .../eamasset-state-ui-service-base.ts | 254 + .../eamasset-state-ui-service.ts | 21 + .../eamasset-type-ui-service-base.ts | 257 + .../eamasset-type/eamasset-type-ui-service.ts | 21 + .../eamasset/eamasset-ui-service-base.ts | 507 + .../uiservice/eamasset/eamasset-ui-service.ts | 21 + .../eamdocument-type-ui-service-base.ts | 254 + .../eamdocument-type-ui-service.ts | 21 + .../eamdocument-ui-service-base.ts | 253 + .../eamdocument/eamdocument-ui-service.ts | 21 + ...cation-state-model-line-ui-service-base.ts | 252 + ...eamlocation-state-model-line-ui-service.ts | 21 + ...eamlocation-state-model-ui-service-base.ts | 254 + .../eamlocation-state-model-ui-service.ts | 21 + .../eamlocation-state-ui-service-base.ts | 255 + .../eamlocation-state-ui-service.ts | 21 + .../eamlocation-type-ui-service-base.ts | 254 + .../eamlocation-type-ui-service.ts | 21 + .../eamlocation-ui-service-base.ts | 487 + .../eamlocation/eamlocation-ui-service.ts | 21 + .../eammonitor-point-ui-service-base.ts | 252 + .../eammonitor-point-ui-service.ts | 21 + .../eamplan-cdt-ui-service-base.ts | 250 + .../eamplan-cdt/eamplan-cdt-ui-service.ts | 21 + .../eamplan-line-ui-service-base.ts | 252 + .../eamplan-line/eamplan-line-ui-service.ts | 21 + .../eamplan-schedule-ui-service-base.ts | 250 + .../eamplan-schedule-ui-service.ts | 21 + .../eamplan/eamplan-ui-service-base.ts | 504 + .../uiservice/eamplan/eamplan-ui-service.ts | 21 + .../eamproduct/eamproduct-ui-service-base.ts | 252 + .../eamproduct/eamproduct-ui-service.ts | 21 + .../eamservice-level-ui-service-base.ts | 254 + .../eamservice-level-ui-service.ts | 21 + .../eamspare-parts-group-ui-service-base.ts | 257 + .../eamspare-parts-group-ui-service.ts | 21 + .../eamspare-parts-pro-ui-service-base.ts | 252 + .../eamspare-parts-pro-ui-service.ts | 21 + .../eamwork-order-ui-service-base.ts | 568 + .../eamwork-order/eamwork-order-ui-service.ts | 21 + .../eamwostate/eamwostate-ui-service-base.ts | 250 + .../eamwostate/eamwostate-ui-service.ts | 21 + .../eamwotype/eamwotype-ui-service-base.ts | 254 + .../eamwotype/eamwotype-ui-service.ts | 21 + .../src/uiservice/ui-service-register.ts | 109 + .../src/uiservice/ui-service.ts | 60 + .../woorigin/woorigin-ui-service-base.ts | 252 + .../uiservice/woorigin/woorigin-ui-service.ts | 21 + .../src/user-default-register.ts | 22 + app_AssetManagement/src/user-register.ts | 9 + .../src/utils/app-drawer/app-drawer.less | 8 + .../src/utils/app-drawer/app-drawer.ts | 125 + .../src/utils/app-drawer/app-drawer.vue | 283 + .../src/utils/app-modal/app-modal.less | 27 + .../src/utils/app-modal/app-modal.ts | 125 + .../src/utils/app-modal/app-modal.vue | 291 + .../src/utils/app-popover/app-popover.less | 15 + .../src/utils/app-popover/app-popover.tsx | 221 + .../src/utils/auth-guard/auth-guard.ts | 103 + .../src/utils/decorators/errorlog.ts | 21 + app_AssetManagement/src/utils/dom/dom.ts | 98 + .../src/utils/export/export.ts | 43 + .../src/utils/export2Excel/Export2Excel.js | 220 + .../src/utils/export2Excel/Export2Zip.js | 24 + app_AssetManagement/src/utils/http/http.ts | 222 + app_AssetManagement/src/utils/index.ts | 14 + .../src/utils/interceptor/interceptor.ts | 171 + .../src/utils/load-app-data/load-app-data.ts | 65 + app_AssetManagement/src/utils/print/index.js | 11 + .../src/utils/print/packages/print.js | 32 + .../src/utils/print/packages/printarea.js | 247 + .../src/utils/print/packages/vPrint.js | 49 + .../utils/studio-action/StudioActionUtil.ts | 179 + app_AssetManagement/src/utils/types/README.md | 3 + .../src/utils/types/app-drawer.d.ts | 33 + .../src/utils/types/app-modal.d.ts | 33 + .../src/utils/types/app-popover.d.ts | 59 + .../src/utils/types/code-list.d.ts | 49 + .../src/utils/types/export.d.ts | 18 + .../src/utils/types/export2Excel.d.ts | 1 + app_AssetManagement/src/utils/types/http.d.ts | 64 + .../src/utils/types/index.d.ts | 13 + .../src/utils/types/other.d.ts | 14 + .../src/utils/types/path-to-regexp.d.ts | 32 + .../src/utils/types/print.d.ts | 1 + .../src/utils/types/tab-page-exp.d.ts | 79 + .../src/utils/types/uiaction-tool.d.ts | 44 + .../src/utils/types/verify.d.ts | 179 + .../src/utils/types/view-tool.d.ts | 119 + .../src/utils/uiaction-tool/uiaction-tool.ts | 103 + app_AssetManagement/src/utils/util/util.ts | 430 + .../src/utils/verify/verify.ts | 502 + .../src/utils/view-tool/view-tool.ts | 281 + .../src/utils/xml-writer/xml-writer.ts | 127 + .../src/utilservice/util-service-register.ts | 79 + .../src/utilservice/util-service.ts | 176 + .../app-index-view-appmenu-base.tsx | 472 + .../app-index-view-appmenu-model.ts | 860 + .../app-index-view-appmenu-service.ts | 46 + .../app-index-view-appmenu.vue | 12 + .../src/widgets/control-service.ts | 309 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 147 + .../main-form/main-form-model.ts | 81 + .../main-form/main-form-service.ts | 394 + .../eamapply-type/main-form/main-form.html | 52 + .../eamapply-type/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 184 + .../main-grid/main-grid-model.ts | 104 + .../main-grid/main-grid-service.ts | 345 + .../eamapply-type/main-grid/main-grid.html | 102 + .../eamapply-type/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 46 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../board-001-dashboard-base.tsx | 286 + .../board-001-dashboard-model.ts | 76 + .../board-001-dashboard-service.ts | 11 + .../board-001-dashboard.html | 44 + .../board-001-dashboard.vue | 24 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../eamapply/ef-001-form/ef-001-form-base.tsx | 181 + .../eamapply/ef-001-form/ef-001-form-model.ts | 111 + .../ef-001-form/ef-001-form-service.ts | 429 + .../eamapply/ef-001-form/ef-001-form.html | 123 + .../eamapply/ef-001-form/ef-001-form.vue | 22 + .../grid-001-grid/grid-001-grid-base.tsx | 220 + .../grid-001-grid/grid-001-grid-model.ts | 139 + .../grid-001-grid/grid-001-grid-service.ts | 345 + .../eamapply/grid-001-grid/grid-001-grid.html | 165 + .../eamapply/grid-001-grid/grid-001-grid.vue | 22 + .../eamapply/if-001-form/if-001-form-base.tsx | 172 + .../eamapply/if-001-form/if-001-form-model.ts | 126 + .../if-001-form/if-001-form-service.ts | 417 + .../eamapply/if-001-form/if-001-form.html | 146 + .../eamapply/if-001-form/if-001-form.vue | 22 + .../info-viewtabexppanel-tabexppanel-base.tsx | 94 + .../info-viewtabexppanel-tabexppanel-model.ts | 76 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + .../info-viewtabexppanel-tabexppanel.html | 64 + .../info-viewtabexppanel-tabexppanel.vue | 26 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 76 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel-tabviewpanel.html | 12 + .../info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 76 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel2-tabviewpanel.html | 12 + .../info-viewtabviewpanel2-tabviewpanel.vue | 22 + .../eamapply/main-grid/main-grid-base.tsx | 220 + .../eamapply/main-grid/main-grid-model.ts | 139 + .../eamapply/main-grid/main-grid-service.ts | 345 + .../widgets/eamapply/main-grid/main-grid.html | 165 + .../widgets/eamapply/main-grid/main-grid.vue | 22 + .../part-v-001-portlet-base.tsx | 175 + .../part-v-001-portlet-model.ts | 76 + .../part-v-001-portlet-service.ts | 11 + .../part-v-001-portlet.html | 5 + .../part-v-001-portlet/part-v-001-portlet.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 154 + .../main-form/main-form-model.ts | 91 + .../main-form/main-form-service.ts | 417 + .../main-form/main-form.html | 102 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 175 + .../main-grid/main-grid-model.ts | 104 + .../main-grid/main-grid-service.ts | 345 + .../main-grid/main-grid.html | 90 + .../main-grid/main-grid.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 149 + .../main-form/main-form-model.ts | 91 + .../main-form/main-form-service.ts | 417 + .../main-form/main-form.html | 69 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 203 + .../main-grid/main-grid-model.ts | 108 + .../main-grid/main-grid-service.ts | 369 + .../main-grid/main-grid.html | 111 + .../main-grid/main-grid.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 157 + .../main-form/main-form-model.ts | 76 + .../main-form/main-form-service.ts | 394 + .../main-form/main-form.html | 79 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 175 + .../main-grid/main-grid-model.ts | 94 + .../main-grid/main-grid-service.ts | 345 + .../main-grid/main-grid.html | 90 + .../main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 40 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 149 + .../main-form/main-form-model.ts | 81 + .../main-form/main-form-service.ts | 394 + .../eamasset-state/main-form/main-form.html | 74 + .../eamasset-state/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 175 + .../main-grid/main-grid-model.ts | 94 + .../main-grid/main-grid-service.ts | 345 + .../eamasset-state/main-grid/main-grid.html | 90 + .../eamasset-state/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 43 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../board-001-dashboard-base.tsx | 286 + .../board-001-dashboard-model.ts | 52 + .../board-001-dashboard-service.ts | 11 + .../board-001-dashboard.html | 44 + .../board-001-dashboard.vue | 24 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../if-001-form/if-001-form-base.tsx | 149 + .../if-001-form/if-001-form-model.ts | 91 + .../if-001-form/if-001-form-service.ts | 393 + .../if-001-form/if-001-form.html | 57 + .../eamasset-type/if-001-form/if-001-form.vue | 22 + .../info-viewtabexppanel-tabexppanel-base.tsx | 95 + .../info-viewtabexppanel-tabexppanel-model.ts | 52 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + .../info-viewtabexppanel-tabexppanel.html | 94 + .../info-viewtabexppanel-tabexppanel.vue | 28 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 52 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel-tabviewpanel.html | 12 + .../info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 52 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel2-tabviewpanel.html | 12 + .../info-viewtabviewpanel2-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel3-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel3-tabviewpanel-model.ts | 52 + ...-viewtabviewpanel3-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel3-tabviewpanel.html | 12 + .../info-viewtabviewpanel3-tabviewpanel.vue | 22 + .../main-form/main-form-base.tsx | 164 + .../main-form/main-form-model.ts | 96 + .../main-form/main-form-service.ts | 405 + .../eamasset-type/main-form/main-form.html | 78 + .../eamasset-type/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 184 + .../main-grid/main-grid-model.ts | 104 + .../main-grid/main-grid-service.ts | 345 + .../eamasset-type/main-grid/main-grid.html | 102 + .../eamasset-type/main-grid/main-grid.vue | 22 + .../part-v-001-portlet-base.tsx | 175 + .../part-v-001-portlet-model.ts | 52 + .../part-v-001-portlet-service.ts | 11 + .../part-v-001-portlet.html | 5 + .../part-v-001-portlet/part-v-001-portlet.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 52 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../child-grid-grid/child-grid-grid-base.tsx | 211 + .../child-grid-grid/child-grid-grid-model.ts | 162 + .../child-grid-grid-service.ts | 345 + .../child-grid-grid/child-grid-grid.html | 161 + .../child-grid-grid/child-grid-grid.vue | 22 + .../default-searchform-base.tsx | 100 + .../default-searchform-model.ts | 57 + .../default-searchform-service.ts | 412 + .../default-searchform.html | 90 + .../default-searchform/default-searchform.vue | 22 + .../info-main-form/info-main-form-base.tsx | 158 + .../info-main-form/info-main-form-model.ts | 106 + .../info-main-form/info-main-form-service.ts | 408 + .../info-main-form/info-main-form.html | 97 + .../info-main-form/info-main-form.vue | 22 + .../info-viewtabexppanel-tabexppanel-base.tsx | 97 + .../info-viewtabexppanel-tabexppanel-model.ts | 70 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + .../info-viewtabexppanel-tabexppanel.html | 154 + .../info-viewtabexppanel-tabexppanel.vue | 32 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 70 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel-tabviewpanel.html | 12 + .../info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 70 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel2-tabviewpanel.html | 12 + .../info-viewtabviewpanel2-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel3-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel3-tabviewpanel-model.ts | 70 + ...-viewtabviewpanel3-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel3-tabviewpanel.html | 12 + .../info-viewtabviewpanel3-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel4-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel4-tabviewpanel-model.ts | 70 + ...-viewtabviewpanel4-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel4-tabviewpanel.html | 12 + .../info-viewtabviewpanel4-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel5-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel5-tabviewpanel-model.ts | 70 + ...-viewtabviewpanel5-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel5-tabviewpanel.html | 12 + .../info-viewtabviewpanel5-tabviewpanel.vue | 22 + .../eamasset/main-form/main-form-base.tsx | 175 + .../eamasset/main-form/main-form-model.ts | 121 + .../eamasset/main-form/main-form-service.ts | 432 + .../widgets/eamasset/main-form/main-form.html | 149 + .../widgets/eamasset/main-form/main-form.vue | 22 + .../eamasset/main-grid/main-grid-base.tsx | 211 + .../eamasset/main-grid/main-grid-model.ts | 162 + .../eamasset/main-grid/main-grid-service.ts | 345 + .../widgets/eamasset/main-grid/main-grid.html | 161 + .../widgets/eamasset/main-grid/main-grid.vue | 22 + .../main-info-dashboard-base.tsx | 286 + .../main-info-dashboard-model.ts | 70 + .../main-info-dashboard-service.ts | 11 + .../main-info-dashboard.html | 44 + .../main-info-dashboard.vue | 24 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 70 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../quick-create-form-base.tsx | 169 + .../quick-create-form-model.ts | 111 + .../quick-create-form-service.ts | 420 + .../quick-create-form/quick-create-form.html | 123 + .../quick-create-form/quick-create-form.vue | 22 + ...ree-exp-viewtreeexpbar-treeexpbar-base.tsx | 410 + ...ree-exp-viewtreeexpbar-treeexpbar-model.ts | 70 + ...e-exp-viewtreeexpbar-treeexpbar-service.ts | 11 + .../tree-exp-viewtreeexpbar-treeexpbar.html | 42 + .../tree-exp-viewtreeexpbar-treeexpbar.vue | 24 + .../view-mian-info-portlet-base.tsx | 175 + .../view-mian-info-portlet-model.ts | 70 + .../view-mian-info-portlet-service.ts | 11 + .../view-mian-info-portlet.html | 5 + .../view-mian-info-portlet.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 150 + .../main-form/main-form-model.ts | 86 + .../main-form/main-form-service.ts | 397 + .../eamdocument-type/main-form/main-form.html | 71 + .../eamdocument-type/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 184 + .../main-grid/main-grid-model.ts | 104 + .../main-grid/main-grid-service.ts | 345 + .../eamdocument-type/main-grid/main-grid.html | 102 + .../eamdocument-type/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 46 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../eamdocument/main-form/main-form-base.tsx | 167 + .../eamdocument/main-form/main-form-model.ts | 101 + .../main-form/main-form-service.ts | 405 + .../eamdocument/main-form/main-form.html | 84 + .../eamdocument/main-form/main-form.vue | 22 + .../eamdocument/main-grid/main-grid-base.tsx | 193 + .../eamdocument/main-grid/main-grid-model.ts | 114 + .../main-grid/main-grid-service.ts | 345 + .../eamdocument/main-grid/main-grid.html | 114 + .../eamdocument/main-grid/main-grid.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 149 + .../main-form/main-form-model.ts | 91 + .../main-form/main-form-service.ts | 417 + .../main-form/main-form.html | 69 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 195 + .../main-grid/main-grid-model.ts | 108 + .../main-grid/main-grid-service.ts | 369 + .../main-grid/main-grid.html | 146 + .../main-grid/main-grid.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 157 + .../main-form/main-form-model.ts | 76 + .../main-form/main-form-service.ts | 394 + .../main-form/main-form.html | 79 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 175 + .../main-grid/main-grid-model.ts | 94 + .../main-grid/main-grid-service.ts | 345 + .../main-grid/main-grid.html | 90 + .../main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 40 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 152 + .../main-form/main-form-model.ts | 86 + .../main-form/main-form-service.ts | 394 + .../main-form/main-form.html | 94 + .../eamlocation-state/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 209 + .../main-grid/main-grid-model.ts | 104 + .../main-grid/main-grid-service.ts | 345 + .../main-grid/main-grid.html | 118 + .../eamlocation-state/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 46 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 154 + .../main-form/main-form-model.ts | 86 + .../main-form/main-form-service.ts | 406 + .../eamlocation-type/main-form/main-form.html | 71 + .../eamlocation-type/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 184 + .../main-grid/main-grid-model.ts | 104 + .../main-grid/main-grid-service.ts | 345 + .../eamlocation-type/main-grid/main-grid.html | 102 + .../eamlocation-type/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 49 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../child-grid-grid/child-grid-grid-base.tsx | 193 + .../child-grid-grid/child-grid-grid-model.ts | 119 + .../child-grid-grid-service.ts | 345 + .../child-grid-grid/child-grid-grid.html | 128 + .../child-grid-grid/child-grid-grid.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../edit-main-form/edit-main-form-base.tsx | 167 + .../edit-main-form/edit-main-form-model.ts | 101 + .../edit-main-form/edit-main-form-service.ts | 408 + .../edit-main-form/edit-main-form.html | 97 + .../edit-main-form/edit-main-form.vue | 22 + .../ef-001-form/ef-001-form-base.tsx | 161 + .../ef-001-form/ef-001-form-model.ts | 91 + .../ef-001-form/ef-001-form-service.ts | 405 + .../eamlocation/ef-001-form/ef-001-form.html | 71 + .../eamlocation/ef-001-form/ef-001-form.vue | 22 + .../info-main-form/info-main-form-base.tsx | 152 + .../info-main-form/info-main-form-model.ts | 96 + .../info-main-form/info-main-form-service.ts | 396 + .../info-main-form/info-main-form.html | 72 + .../info-main-form/info-main-form.vue | 22 + .../info-viewtabexppanel-tabexppanel-base.tsx | 95 + .../info-viewtabexppanel-tabexppanel-model.ts | 64 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + .../info-viewtabexppanel-tabexppanel.html | 94 + .../info-viewtabexppanel-tabexppanel.vue | 28 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 64 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel-tabviewpanel.html | 12 + .../info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 64 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel2-tabviewpanel.html | 12 + .../info-viewtabviewpanel2-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel3-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel3-tabviewpanel-model.ts | 64 + ...-viewtabviewpanel3-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel3-tabviewpanel.html | 12 + .../info-viewtabviewpanel3-tabviewpanel.vue | 22 + .../location-asset-tree-treeview-base.tsx | 630 + .../location-asset-tree-treeview-model.ts | 64 + .../location-asset-tree-treeview-service.ts | 809 + .../location-asset-tree-treeview.html | 47 + .../location-asset-tree-treeview.vue | 22 + .../location-tree-treeview-base.tsx | 630 + .../location-tree-treeview-model.ts | 64 + .../location-tree-treeview-service.ts | 811 + .../location-tree-treeview.html | 47 + .../location-tree-treeview.vue | 22 + .../eamlocation/main-grid/main-grid-base.tsx | 202 + .../eamlocation/main-grid/main-grid-model.ts | 124 + .../main-grid/main-grid-service.ts | 345 + .../eamlocation/main-grid/main-grid.html | 140 + .../eamlocation/main-grid/main-grid.vue | 22 + .../main-info-dashboard-base.tsx | 286 + .../main-info-dashboard-model.ts | 64 + .../main-info-dashboard-service.ts | 11 + .../main-info-dashboard.html | 44 + .../main-info-dashboard.vue | 24 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 64 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + ...ree-exp-viewtreeexpbar-treeexpbar-base.tsx | 417 + ...ree-exp-viewtreeexpbar-treeexpbar-model.ts | 64 + ...e-exp-viewtreeexpbar-treeexpbar-service.ts | 11 + .../tree-exp-viewtreeexpbar-treeexpbar.html | 42 + .../tree-exp-viewtreeexpbar-treeexpbar.vue | 24 + .../view-main-info-portlet-base.tsx | 175 + .../view-main-info-portlet-model.ts | 64 + .../view-main-info-portlet-service.ts | 11 + .../view-main-info-portlet.html | 5 + .../view-main-info-portlet.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-grid/main-grid-base.tsx | 143 + .../main-grid/main-grid-model.ts | 84 + .../main-grid/main-grid-service.ts | 345 + .../eammonitor-point/main-grid/main-grid.html | 66 + .../eammonitor-point/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 40 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../eamplan-line/main-form/main-form-base.tsx | 188 + .../eamplan-line/main-form/main-form-model.ts | 126 + .../main-form/main-form-service.ts | 441 + .../eamplan-line/main-form/main-form.html | 165 + .../eamplan-line/main-form/main-form.vue | 22 + .../eamplan-line/main-grid/main-grid-base.tsx | 211 + .../eamplan-line/main-grid/main-grid-model.ts | 134 + .../main-grid/main-grid-service.ts | 345 + .../eamplan-line/main-grid/main-grid.html | 153 + .../eamplan-line/main-grid/main-grid.vue | 22 + .../board-001-dashboard-base.tsx | 286 + .../board-001-dashboard-model.ts | 70 + .../board-001-dashboard-service.ts | 11 + .../board-001-dashboard.html | 44 + .../board-001-dashboard.vue | 24 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../eamplan/ef-001-form/ef-001-form-base.tsx | 163 + .../eamplan/ef-001-form/ef-001-form-model.ts | 101 + .../ef-001-form/ef-001-form-service.ts | 417 + .../eamplan/ef-001-form/ef-001-form.html | 97 + .../eamplan/ef-001-form/ef-001-form.vue | 22 + .../grid-001-grid/grid-001-grid-base.tsx | 202 + .../grid-001-grid/grid-001-grid-model.ts | 124 + .../grid-001-grid/grid-001-grid-service.ts | 345 + .../eamplan/grid-001-grid/grid-001-grid.html | 141 + .../eamplan/grid-001-grid/grid-001-grid.vue | 22 + .../eamplan/if-001-form/if-001-form-base.tsx | 166 + .../eamplan/if-001-form/if-001-form-model.ts | 116 + .../if-001-form/if-001-form-service.ts | 417 + .../eamplan/if-001-form/if-001-form.html | 126 + .../eamplan/if-001-form/if-001-form.vue | 22 + .../info-viewtabexppanel-tabexppanel-base.tsx | 95 + .../info-viewtabexppanel-tabexppanel-model.ts | 70 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + .../info-viewtabexppanel-tabexppanel.html | 94 + .../info-viewtabexppanel-tabexppanel.vue | 28 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 70 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel-tabviewpanel.html | 12 + .../info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 70 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel2-tabviewpanel.html | 12 + .../info-viewtabviewpanel2-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel3-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel3-tabviewpanel-model.ts | 70 + ...-viewtabviewpanel3-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel3-tabviewpanel.html | 12 + .../info-viewtabviewpanel3-tabviewpanel.vue | 22 + .../eamplan/main-form/main-form-base.tsx | 142 + .../eamplan/main-form/main-form-model.ts | 71 + .../eamplan/main-form/main-form-service.ts | 393 + .../widgets/eamplan/main-form/main-form.html | 50 + .../widgets/eamplan/main-form/main-form.vue | 22 + .../eamplan/main-grid/main-grid-base.tsx | 202 + .../eamplan/main-grid/main-grid-model.ts | 124 + .../eamplan/main-grid/main-grid-service.ts | 345 + .../widgets/eamplan/main-grid/main-grid.html | 141 + .../widgets/eamplan/main-grid/main-grid.vue | 22 + .../part-v-001-portlet-base.tsx | 175 + .../part-v-001-portlet-model.ts | 70 + .../part-v-001-portlet-service.ts | 11 + .../part-v-001-portlet.html | 5 + .../part-v-001-portlet/part-v-001-portlet.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 70 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../eamproduct/main-grid/main-grid-base.tsx | 143 + .../eamproduct/main-grid/main-grid-model.ts | 84 + .../eamproduct/main-grid/main-grid-service.ts | 345 + .../eamproduct/main-grid/main-grid.html | 66 + .../eamproduct/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 43 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 147 + .../main-form/main-form-model.ts | 81 + .../main-form/main-form-service.ts | 394 + .../eamservice-level/main-form/main-form.html | 52 + .../eamservice-level/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 184 + .../main-grid/main-grid-model.ts | 99 + .../main-grid/main-grid-service.ts | 345 + .../eamservice-level/main-grid/main-grid.html | 102 + .../eamservice-level/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 43 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../board-001-dashboard-base.tsx | 286 + .../board-001-dashboard-model.ts | 43 + .../board-001-dashboard-service.ts | 11 + .../board-001-dashboard.html | 44 + .../board-001-dashboard.vue | 24 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../if-001-form/if-001-form-base.tsx | 143 + .../if-001-form/if-001-form-model.ts | 81 + .../if-001-form/if-001-form-service.ts | 393 + .../if-001-form/if-001-form.html | 37 + .../if-001-form/if-001-form.vue | 22 + .../info-viewtabexppanel-tabexppanel-base.tsx | 95 + .../info-viewtabexppanel-tabexppanel-model.ts | 43 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + .../info-viewtabexppanel-tabexppanel.html | 94 + .../info-viewtabexppanel-tabexppanel.vue | 28 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 43 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel-tabviewpanel.html | 12 + .../info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 43 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel2-tabviewpanel.html | 12 + .../info-viewtabviewpanel2-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel3-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel3-tabviewpanel-model.ts | 43 + ...-viewtabviewpanel3-tabviewpanel-service.ts | 11 + .../info-viewtabviewpanel3-tabviewpanel.html | 12 + .../info-viewtabviewpanel3-tabviewpanel.vue | 22 + .../main-form/main-form-base.tsx | 151 + .../main-form/main-form-model.ts | 81 + .../main-form/main-form-service.ts | 393 + .../main-form/main-form.html | 45 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 175 + .../main-grid/main-grid-model.ts | 94 + .../main-grid/main-grid-service.ts | 345 + .../main-grid/main-grid.html | 90 + .../main-grid/main-grid.vue | 22 + .../part-v-001-portlet-base.tsx | 175 + .../part-v-001-portlet-model.ts | 43 + .../part-v-001-portlet-service.ts | 11 + .../part-v-001-portlet.html | 5 + .../part-v-001-portlet/part-v-001-portlet.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 43 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../main-form/main-form-base.tsx | 149 + .../main-form/main-form-model.ts | 91 + .../main-form/main-form-service.ts | 417 + .../main-form/main-form.html | 69 + .../main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 184 + .../main-grid/main-grid-model.ts | 109 + .../main-grid/main-grid-service.ts | 345 + .../main-grid/main-grid.html | 102 + .../main-grid/main-grid.vue | 22 + .../data-panel-ef-form-base.tsx | 149 + .../data-panel-ef-form-model.ts | 91 + .../data-panel-ef-form-service.ts | 417 + .../data-panel-ef-form.html | 69 + .../data-panel-ef-form/data-panel-ef-form.vue | 22 + .../data-panel-if-form-base.tsx | 185 + .../data-panel-if-form-model.ts | 81 + .../data-panel-if-form-service.ts | 393 + .../data-panel-if-form.html | 54 + .../data-panel-if-form/data-panel-if-form.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../ef-001-form/ef-001-form-base.tsx | 189 + .../ef-001-form/ef-001-form-model.ts | 131 + .../ef-001-form/ef-001-form-service.ts | 429 + .../ef-001-form/ef-001-form.html | 163 + .../eamwork-order/ef-001-form/ef-001-form.vue | 22 + .../grid-001-grid/grid-001-grid-base.tsx | 220 + .../grid-001-grid/grid-001-grid-model.ts | 149 + .../grid-001-grid/grid-001-grid-service.ts | 345 + .../grid-001-grid/grid-001-grid.html | 165 + .../grid-001-grid/grid-001-grid.vue | 22 + .../grid-002-grid/grid-002-grid-base.tsx | 229 + .../grid-002-grid/grid-002-grid-model.ts | 154 + .../grid-002-grid/grid-002-grid-service.ts | 345 + .../grid-002-grid/grid-002-grid.html | 177 + .../grid-002-grid/grid-002-grid.vue | 22 + .../grid-003-grid/grid-003-grid-base.tsx | 220 + .../grid-003-grid/grid-003-grid-model.ts | 149 + .../grid-003-grid/grid-003-grid-service.ts | 345 + .../grid-003-grid/grid-003-grid.html | 165 + .../grid-003-grid/grid-003-grid.vue | 22 + .../if-001-form/if-001-form-base.tsx | 198 + .../if-001-form/if-001-form-model.ts | 166 + .../if-001-form/if-001-form-service.ts | 417 + .../if-001-form/if-001-form.html | 235 + .../eamwork-order/if-001-form/if-001-form.vue | 22 + .../main-form/main-form-base.tsx | 214 + .../main-form/main-form-model.ts | 166 + .../main-form/main-form-service.ts | 456 + .../eamwork-order/main-form/main-form.html | 262 + .../eamwork-order/main-form/main-form.vue | 22 + .../main-grid/main-grid-base.tsx | 220 + .../main-grid/main-grid-model.ts | 149 + .../main-grid/main-grid-service.ts | 345 + .../eamwork-order/main-grid/main-grid.html | 165 + .../eamwork-order/main-grid/main-grid.vue | 22 + .../master-summary-dashboard-base.tsx | 286 + .../master-summary-dashboard-model.ts | 109 + .../master-summary-dashboard-service.ts | 11 + .../master-summary-dashboard.html | 44 + .../master-summary-dashboard.vue | 24 + ...-info-viewtabexppanel-tabexppanel-base.tsx | 94 + ...-info-viewtabexppanel-tabexppanel-model.ts | 109 + ...nfo-viewtabexppanel-tabexppanel-service.ts | 45 + ...-tab-info-viewtabexppanel-tabexppanel.html | 64 + ...r-tab-info-viewtabexppanel-tabexppanel.vue | 26 + ...nfo-viewtabviewpanel-tabviewpanel-base.tsx | 215 + ...nfo-viewtabviewpanel-tabviewpanel-model.ts | 109 + ...o-viewtabviewpanel-tabviewpanel-service.ts | 11 + ...ab-info-viewtabviewpanel-tabviewpanel.html | 12 + ...tab-info-viewtabviewpanel-tabviewpanel.vue | 22 + ...fo-viewtabviewpanel2-tabviewpanel-base.tsx | 215 + ...fo-viewtabviewpanel2-tabviewpanel-model.ts | 109 + ...-viewtabviewpanel2-tabviewpanel-service.ts | 11 + ...b-info-viewtabviewpanel2-tabviewpanel.html | 12 + ...ab-info-viewtabviewpanel2-tabviewpanel.vue | 22 + .../part-v-001-portlet-base.tsx | 175 + .../part-v-001-portlet-model.ts | 109 + .../part-v-001-portlet-service.ts | 11 + .../part-v-001-portlet.html | 5 + .../part-v-001-portlet/part-v-001-portlet.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 109 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../eamwotype/main-form/main-form-base.tsx | 144 + .../eamwotype/main-form/main-form-model.ts | 76 + .../eamwotype/main-form/main-form-service.ts | 394 + .../eamwotype/main-form/main-form.html | 45 + .../widgets/eamwotype/main-form/main-form.vue | 22 + .../eamwotype/main-grid/main-grid-base.tsx | 175 + .../eamwotype/main-grid/main-grid-model.ts | 99 + .../eamwotype/main-grid/main-grid-service.ts | 345 + .../eamwotype/main-grid/main-grid.html | 90 + .../widgets/eamwotype/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 43 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + .../default-searchform-base.tsx | 82 + .../default-searchform-model.ts | 31 + .../default-searchform-service.ts | 388 + .../default-searchform.html | 9 + .../default-searchform/default-searchform.vue | 22 + .../woorigin/main-grid/main-grid-base.tsx | 143 + .../woorigin/main-grid/main-grid-model.ts | 94 + .../woorigin/main-grid/main-grid-service.ts | 345 + .../widgets/woorigin/main-grid/main-grid.html | 66 + .../widgets/woorigin/main-grid/main-grid.vue | 22 + ...ewpickupviewpanel-pickupviewpanel-base.tsx | 265 + ...ewpickupviewpanel-pickupviewpanel-model.ts | 43 + ...pickupviewpanel-pickupviewpanel-service.ts | 11 + ...p-viewpickupviewpanel-pickupviewpanel.html | 16 + ...p-viewpickupviewpanel-pickupviewpanel.less | 3 + ...up-viewpickupviewpanel-pickupviewpanel.vue | 22 + app_AssetManagement/tsconfig.json | 60 + app_AssetManagement/tslint.json | 35 + app_AssetManagement/vue.config.js | 74 + app_AssetManagement/yarn.lock | 11533 +++++++++++++ .../pom.xml | 124 + .../src/main/docker/Dockerfile | 17 + .../assetmanagement-app-assetmanagement.yaml | 32 + .../AssetManagementApplication.java | 47 + .../config/AssetManagementSecurityConfig.java | 128 + .../application-assetmanagement-dev.yml | 2 + .../application-assetmanagement-prod.yml | 163 + .../src/main/resources/application.yml | 5 + .../src/main/resources/logback-spring.xml | 41 + assetmanagement-app/pom.xml | 42 + assetmanagement-boot/pom.xml | 72 + .../src/main/docker/mysql.yml | 19 + .../src/main/docker/nacos.yml | 16 + .../src/main/docker/redis.yml | 17 + .../assetmanagement/DevBootApplication.java | 51 + .../config/DevBootAutoConfiguration.java | 9 + .../config/DevBootSecurityConfig.java | 123 + .../src/main/resources/application-dev.yml | 40 + .../src/main/resources/application.yml | 7 + .../src/main/resources/logback-spring.xml | 41 + assetmanagement-core/pom.xml | 175 + .../core/apply/domain/EAMApply.java | 308 + .../core/apply/domain/EAMApplyState.java | 106 + .../core/apply/domain/EAMApplyStateModel.java | 106 + .../apply/domain/EAMApplyStateModelLine.java | 152 + .../core/apply/domain/EAMApplyType.java | 144 + .../apply/filter/EAMApplySearchContext.java | 137 + .../EAMApplyStateModelLineSearchContext.java | 67 + .../EAMApplyStateModelSearchContext.java | 53 + .../filter/EAMApplyStateSearchContext.java | 53 + .../filter/EAMApplyTypeSearchContext.java | 60 + .../core/apply/mapper/EAMApplyMapper.java | 73 + .../apply/mapper/EAMApplyStateMapper.java | 65 + .../mapper/EAMApplyStateModelLineMapper.java | 69 + .../mapper/EAMApplyStateModelMapper.java | 65 + .../core/apply/mapper/EAMApplyTypeMapper.java | 67 + .../apply/mapping/EAMApplyInheritMapping.java | 33 + .../core/apply/service/IEAMApplyService.java | 67 + .../IEAMApplyStateModelLineService.java | 63 + .../service/IEAMApplyStateModelService.java | 59 + .../apply/service/IEAMApplyStateService.java | 59 + .../apply/service/IEAMApplyTypeService.java | 61 + .../service/impl/EAMApplyServiceImpl.java | 331 + .../EAMApplyStateModelLineServiceImpl.java | 232 + .../impl/EAMApplyStateModelServiceImpl.java | 212 + .../impl/EAMApplyStateServiceImpl.java | 209 + .../service/impl/EAMApplyTypeServiceImpl.java | 222 + .../core/asset/domain/EAMAsset.java | 256 + .../core/asset/domain/EAMAssetPartsGroup.java | 166 + .../core/asset/domain/EAMAssetState.java | 121 + .../core/asset/domain/EAMAssetStateModel.java | 106 + .../asset/domain/EAMAssetStateModelLine.java | 166 + .../core/asset/domain/EAMAssetType.java | 166 + .../core/asset/domain/EAMDocument.java | 211 + .../core/asset/domain/EAMDocumentType.java | 136 + .../core/asset/domain/EAMPRODUCT.java | 121 + .../core/asset/domain/EAMSparePartsGroup.java | 121 + .../core/asset/domain/EAMSparePartsPRO.java | 173 + .../EAMAssetPartsGroupSearchContext.java | 95 + .../asset/filter/EAMAssetSearchContext.java | 144 + .../EAMAssetStateModelLineSearchContext.java | 95 + .../EAMAssetStateModelSearchContext.java | 53 + .../filter/EAMAssetStateSearchContext.java | 53 + .../filter/EAMAssetTypeSearchContext.java | 74 + .../filter/EAMDocumentSearchContext.java | 95 + .../filter/EAMDocumentTypeSearchContext.java | 74 + .../asset/filter/EAMPRODUCTSearchContext.java | 53 + .../EAMSparePartsGroupSearchContext.java | 53 + .../filter/EAMSparePartsPROSearchContext.java | 95 + .../core/asset/mapper/EAMAssetMapper.java | 74 + .../mapper/EAMAssetPartsGroupMapper.java | 69 + .../asset/mapper/EAMAssetStateMapper.java | 65 + .../mapper/EAMAssetStateModelLineMapper.java | 69 + .../mapper/EAMAssetStateModelMapper.java | 65 + .../core/asset/mapper/EAMAssetTypeMapper.java | 67 + .../core/asset/mapper/EAMDocumentMapper.java | 69 + .../asset/mapper/EAMDocumentTypeMapper.java | 68 + .../core/asset/mapper/EAMPRODUCTMapper.java | 65 + .../mapper/EAMSparePartsGroupMapper.java | 65 + .../asset/mapper/EAMSparePartsPROMapper.java | 69 + .../service/IEAMAssetPartsGroupService.java | 63 + .../core/asset/service/IEAMAssetService.java | 68 + .../IEAMAssetStateModelLineService.java | 63 + .../service/IEAMAssetStateModelService.java | 59 + .../asset/service/IEAMAssetStateService.java | 59 + .../asset/service/IEAMAssetTypeService.java | 61 + .../asset/service/IEAMDocumentService.java | 63 + .../service/IEAMDocumentTypeService.java | 62 + .../asset/service/IEAMPRODUCTService.java | 59 + .../service/IEAMSparePartsGroupService.java | 59 + .../service/IEAMSparePartsPROService.java | 63 + .../impl/EAMAssetPartsGroupServiceImpl.java | 265 + .../service/impl/EAMAssetServiceImpl.java | 331 + .../EAMAssetStateModelLineServiceImpl.java | 265 + .../impl/EAMAssetStateModelServiceImpl.java | 212 + .../impl/EAMAssetStateServiceImpl.java | 212 + .../service/impl/EAMAssetTypeServiceImpl.java | 251 + .../service/impl/EAMDocumentServiceImpl.java | 265 + .../impl/EAMDocumentTypeServiceImpl.java | 253 + .../service/impl/EAMPRODUCTServiceImpl.java | 209 + .../impl/EAMSparePartsGroupServiceImpl.java | 212 + .../impl/EAMSparePartsPROServiceImpl.java | 266 + .../core/location/domain/EAMLocation.java | 226 + .../location/domain/EAMLocationState.java | 136 + .../domain/EAMLocationStateModel.java | 106 + .../domain/EAMLocationStateModelLine.java | 166 + .../core/location/domain/EAMLocationType.java | 151 + .../filter/EAMLocationSearchContext.java | 116 + ...AMLocationStateModelLineSearchContext.java | 95 + .../EAMLocationStateModelSearchContext.java | 53 + .../filter/EAMLocationStateSearchContext.java | 53 + .../filter/EAMLocationTypeSearchContext.java | 74 + .../location/mapper/EAMLocationMapper.java | 74 + .../mapper/EAMLocationStateMapper.java | 65 + .../EAMLocationStateModelLineMapper.java | 69 + .../mapper/EAMLocationStateModelMapper.java | 65 + .../mapper/EAMLocationTypeMapper.java | 67 + .../location/service/IEAMLocationService.java | 68 + .../IEAMLocationStateModelLineService.java | 63 + .../IEAMLocationStateModelService.java | 59 + .../service/IEAMLocationStateService.java | 59 + .../service/IEAMLocationTypeService.java | 61 + .../service/impl/EAMLocationServiceImpl.java | 329 + .../EAMLocationStateModelLineServiceImpl.java | 265 + .../EAMLocationStateModelServiceImpl.java | 212 + .../impl/EAMLocationStateServiceImpl.java | 212 + .../impl/EAMLocationTypeServiceImpl.java | 245 + .../core/plan/domain/EAMPlan.java | 267 + .../core/plan/domain/EAMPlanCDT.java | 129 + .../core/plan/domain/EAMPlanLine.java | 256 + .../core/plan/domain/EAMPlanSchedule.java | 129 + .../plan/filter/EAMPlanCDTSearchContext.java | 60 + .../plan/filter/EAMPlanLineSearchContext.java | 137 + .../filter/EAMPlanScheduleSearchContext.java | 60 + .../plan/filter/EAMPlanSearchContext.java | 116 + .../core/plan/mapper/EAMPlanCDTMapper.java | 67 + .../core/plan/mapper/EAMPlanLineMapper.java | 73 + .../core/plan/mapper/EAMPlanMapper.java | 71 + .../plan/mapper/EAMPlanScheduleMapper.java | 67 + .../plan/mapping/EAMPlanInheritMapping.java | 33 + .../core/plan/service/IEAMPlanCDTService.java | 61 + .../plan/service/IEAMPlanLineService.java | 67 + .../plan/service/IEAMPlanScheduleService.java | 61 + .../core/plan/service/IEAMPlanService.java | 65 + .../service/impl/EAMPlanCDTServiceImpl.java | 219 + .../service/impl/EAMPlanLineServiceImpl.java | 311 + .../impl/EAMPlanScheduleServiceImpl.java | 219 + .../plan/service/impl/EAMPlanServiceImpl.java | 317 + .../util/config/DroolsAutoConfiguration.java | 104 + .../util/config/LiquibaseConfiguration.java | 71 + .../core/util/config/MongoDBConfig.java | 25 + .../util/config/MybatisAutoConfiguration.java | 16 + .../util/config/MybatisConfiguration.java | 56 + .../core/util/config/XxlJobConfig.java | 10 + .../workorder/domain/EAMMonitorPoint.java | 106 + .../workorder/domain/EAMServiceLevel.java | 121 + .../core/workorder/domain/EAMWOState.java | 106 + .../workorder/domain/EAMWOStateModel.java | 106 + .../workorder/domain/EAMWOStateModelLine.java | 152 + .../core/workorder/domain/EAMWOType.java | 129 + .../core/workorder/domain/EAMWorkOrder.java | 468 + .../core/workorder/domain/WOOrigin.java | 123 + .../filter/EAMMonitorPointSearchContext.java | 53 + .../filter/EAMServiceLevelSearchContext.java | 53 + .../EAMWOStateModelLineSearchContext.java | 67 + .../filter/EAMWOStateModelSearchContext.java | 53 + .../filter/EAMWOStateSearchContext.java | 53 + .../filter/EAMWOTypeSearchContext.java | 60 + .../filter/EAMWorkOrderSearchContext.java | 179 + .../filter/WOOriginSearchContext.java | 60 + .../mapper/EAMMonitorPointMapper.java | 65 + .../mapper/EAMServiceLevelMapper.java | 65 + .../workorder/mapper/EAMWOStateMapper.java | 65 + .../mapper/EAMWOStateModelLineMapper.java | 69 + .../mapper/EAMWOStateModelMapper.java | 65 + .../workorder/mapper/EAMWOTypeMapper.java | 67 + .../workorder/mapper/EAMWorkOrderMapper.java | 78 + .../core/workorder/mapper/WOOriginMapper.java | 65 + .../service/IEAMMonitorPointService.java | 59 + .../service/IEAMServiceLevelService.java | 59 + .../service/IEAMWOStateModelLineService.java | 63 + .../service/IEAMWOStateModelService.java | 59 + .../workorder/service/IEAMWOStateService.java | 59 + .../workorder/service/IEAMWOTypeService.java | 61 + .../service/IEAMWorkOrderService.java | 72 + .../workorder/service/IWOOriginService.java | 59 + .../impl/EAMMonitorPointServiceImpl.java | 212 + .../impl/EAMServiceLevelServiceImpl.java | 212 + .../impl/EAMWOStateModelLineServiceImpl.java | 232 + .../impl/EAMWOStateModelServiceImpl.java | 212 + .../service/impl/EAMWOStateServiceImpl.java | 209 + .../service/impl/EAMWOTypeServiceImpl.java | 222 + .../service/impl/EAMWorkOrderServiceImpl.java | 365 + .../service/impl/WOOriginServiceImpl.java | 209 + .../changelog/20190625112530_init_ibizsys.xml | 98 + .../changelog/20200601200530_init_ibzcfg.xml | 16 + .../20200709124030_init_ibzaudit.xml | 24 + .../resources/liquibase/config/init_h2.sql | 6 + .../src/main/resources/liquibase/empty.xml | 9 + .../src/main/resources/liquibase/h2.xml | 11 + .../src/main/resources/liquibase/h2_table.xml | 990 ++ .../src/main/resources/liquibase/master.xml | 10 + .../main/resources/liquibase/master_table.xml | 9 + .../resources/liquibase/rollback/README.md | 1 + .../src/main/resources/liquibase/view.xml | 4 + .../mapper/apply/eamapply/EAMApplyMapper.xml | 79 + .../eamapplystate/EAMApplyStateMapper.xml | 39 + .../EAMApplyStateModelMapper.xml | 39 + .../EAMApplyStateModelLineMapper.xml | 59 + .../apply/eamapplytype/EAMApplyTypeMapper.xml | 49 + .../mapper/asset/eamasset/EAMAssetMapper.xml | 100 + .../EAMAssetPartsGroupMapper.xml | 59 + .../eamassetstate/EAMAssetStateMapper.xml | 39 + .../EAMAssetStateModelMapper.xml | 39 + .../EAMAssetStateModelLineMapper.xml | 59 + .../asset/eamassettype/EAMAssetTypeMapper.xml | 49 + .../asset/eamdocument/EAMDocumentMapper.xml | 59 + .../eamdocumenttype/EAMDocumentTypeMapper.xml | 64 + .../asset/eamproduct/EAMPRODUCTMapper.xml | 39 + .../EAMSparePartsGroupMapper.xml | 39 + .../EAMSparePartsPROMapper.xml | 59 + .../eamlocation/EAMLocationMapper.xml | 114 + .../EAMLocationStateMapper.xml | 39 + .../EAMLocationStateModelMapper.xml | 39 + .../EAMLocationStateModelLineMapper.xml | 59 + .../eamlocationtype/EAMLocationTypeMapper.xml | 49 + .../mapper/plan/eamplan/EAMPlanMapper.xml | 69 + .../plan/eamplancdt/EAMPlanCDTMapper.xml | 49 + .../plan/eamplanline/EAMPlanLineMapper.xml | 79 + .../eamplanschedule/EAMPlanScheduleMapper.xml | 49 + .../eammonitorpoint/EAMMonitorPointMapper.xml | 39 + .../eamservicelevel/EAMServiceLevelMapper.xml | 39 + .../eamworkorder/EAMWorkOrderMapper.xml | 115 + .../workorder/eamwostate/EAMWOStateMapper.xml | 39 + .../eamwostatemodel/EAMWOStateModelMapper.xml | 39 + .../EAMWOStateModelLineMapper.xml | 59 + .../workorder/eamwotype/EAMWOTypeMapper.xml | 49 + .../workorder/woorigin/WOOriginMapper.xml | 41 + .../resources/permission/systemResource.json | 255 + assetmanagement-dependencies/pom.xml | 342 + .../assetmanagement-provider-assetapi/pom.xml | 82 + .../src/main/docker/Dockerfile | 17 + .../assetmanagement-provider-assetapi.yaml | 32 + .../config/AssetApiAutoConfiguration.java | 56 + .../config/AssetApiRestConfiguration.java | 8 + .../config/AssetApiSecurityConfig.java | 130 + .../config/AssetApiServiceProperties.java | 15 + .../assetapi/dto/EAMApplyDTO.java | 250 + .../assetapi/dto/EAMApplyStateDTO.java | 88 + .../dto/EAMApplyStateModelLineDTO.java | 120 + .../assetapi/dto/EAMApplyTypeDTO.java | 120 + .../assetapi/dto/EAMAssetDTO.java | 216 + .../assetapi/dto/EAMAssetPartsGroupDTO.java | 136 + .../assetapi/dto/EAMAssetStateDTO.java | 104 + .../assetapi/dto/EAMAssetStateModelDTO.java | 88 + .../dto/EAMAssetStateModelLineDTO.java | 136 + .../assetapi/dto/EAMAssetTypeDTO.java | 144 + .../assetapi/dto/EAMDocumentDTO.java | 184 + .../assetapi/dto/EAMDocumentTypeDTO.java | 112 + .../assetapi/dto/EAMLocationDTO.java | 192 + .../assetapi/dto/EAMLocationStateDTO.java | 120 + .../dto/EAMLocationStateModelDTO.java | 88 + .../dto/EAMLocationStateModelLineDTO.java | 136 + .../assetapi/dto/EAMLocationTypeDTO.java | 128 + .../assetapi/dto/EAMMonitorPointDTO.java | 88 + .../assetapi/dto/EAMPRODUCTDTO.java | 104 + .../assetapi/dto/EAMPlanCDTDTO.java | 104 + .../assetapi/dto/EAMPlanDTO.java | 225 + .../assetapi/dto/EAMPlanLineDTO.java | 216 + .../assetapi/dto/EAMPlanScheduleDTO.java | 104 + .../assetapi/dto/EAMServiceLevelDTO.java | 104 + .../assetapi/dto/EAMSparePartsGroupDTO.java | 104 + .../assetapi/dto/EAMSparePartsPRODTO.java | 144 + .../assetapi/dto/EAMWOStateDTO.java | 88 + .../assetapi/dto/EAMWOTypeDTO.java | 104 + .../assetapi/dto/EAMWorkOrderDTO.java | 380 + .../assetapi/dto/WOOriginDTO.java | 104 + ...BizAssetManagementAssetApiApplication.java | 57 + .../assetapi/mapping/EAMApplyMapping.java | 16 + .../mapping/EAMApplyStateMapping.java | 16 + .../EAMApplyStateModelLineMapping.java | 16 + .../assetapi/mapping/EAMApplyTypeMapping.java | 16 + .../assetapi/mapping/EAMAssetMapping.java | 16 + .../mapping/EAMAssetPartsGroupMapping.java | 16 + .../mapping/EAMAssetStateMapping.java | 16 + .../EAMAssetStateModelLineMapping.java | 16 + .../mapping/EAMAssetStateModelMapping.java | 16 + .../assetapi/mapping/EAMAssetTypeMapping.java | 16 + .../assetapi/mapping/EAMDocumentMapping.java | 16 + .../mapping/EAMDocumentTypeMapping.java | 16 + .../assetapi/mapping/EAMLocationMapping.java | 16 + .../mapping/EAMLocationStateMapping.java | 16 + .../EAMLocationStateModelLineMapping.java | 16 + .../mapping/EAMLocationStateModelMapping.java | 16 + .../mapping/EAMLocationTypeMapping.java | 16 + .../mapping/EAMMonitorPointMapping.java | 16 + .../assetapi/mapping/EAMPRODUCTMapping.java | 16 + .../assetapi/mapping/EAMPlanCDTMapping.java | 16 + .../assetapi/mapping/EAMPlanLineMapping.java | 16 + .../assetapi/mapping/EAMPlanMapping.java | 16 + .../mapping/EAMPlanScheduleMapping.java | 16 + .../mapping/EAMServiceLevelMapping.java | 16 + .../mapping/EAMSparePartsGroupMapping.java | 16 + .../mapping/EAMSparePartsPROMapping.java | 16 + .../assetapi/mapping/EAMWOStateMapping.java | 16 + .../assetapi/mapping/EAMWOTypeMapping.java | 16 + .../assetapi/mapping/EAMWorkOrderMapping.java | 16 + .../assetapi/mapping/WOOriginMapping.java | 16 + .../assetapi/rest/EAMApplyResource.java | 430 + .../rest/EAMApplyStateModelLineResource.java | 164 + .../assetapi/rest/EAMApplyStateResource.java | 164 + .../assetapi/rest/EAMApplyTypeResource.java | 164 + .../rest/EAMAssetPartsGroupResource.java | 430 + .../assetapi/rest/EAMAssetResource.java | 341 + .../rest/EAMAssetStateModelLineResource.java | 164 + .../rest/EAMAssetStateModelResource.java | 164 + .../assetapi/rest/EAMAssetStateResource.java | 164 + .../assetapi/rest/EAMAssetTypeResource.java | 164 + .../assetapi/rest/EAMDocumentResource.java | 297 + .../rest/EAMDocumentTypeResource.java | 185 + .../assetapi/rest/EAMLocationResource.java | 227 + .../EAMLocationStateModelLineResource.java | 164 + .../rest/EAMLocationStateModelResource.java | 164 + .../rest/EAMLocationStateResource.java | 164 + .../rest/EAMLocationTypeResource.java | 164 + .../rest/EAMMonitorPointResource.java | 164 + .../assetapi/rest/EAMPRODUCTResource.java | 164 + .../assetapi/rest/EAMPlanCDTResource.java | 164 + .../assetapi/rest/EAMPlanLineResource.java | 563 + .../assetapi/rest/EAMPlanResource.java | 430 + .../rest/EAMPlanScheduleResource.java | 164 + .../rest/EAMServiceLevelResource.java | 164 + .../rest/EAMSparePartsGroupResource.java | 164 + .../rest/EAMSparePartsPROResource.java | 297 + .../assetapi/rest/EAMWOStateResource.java | 164 + .../assetapi/rest/EAMWOTypeResource.java | 164 + .../assetapi/rest/EAMWorkOrderResource.java | 1433 ++ .../assetapi/rest/WOOriginResource.java | 164 + .../swagger/SwaggerConfiguration.java | 99 + .../resources/application-assetapi-dev.yml | 2 + .../resources/application-assetapi-prod.yml | 6 + .../src/main/resources/application.yml | 5 + .../src/main/resources/logback-spring.xml | 41 + assetmanagement-provider/pom.xml | 31 + assetmanagement-util/pom.xml | 94 + .../util/annotation/Audit.java | 15 + .../util/annotation/DEField.java | 70 + .../util/annotation/VersionCheck.java | 15 + .../util/aspect/AuditAspect.java | 167 + .../aspect/DEFieldDefaultValueAspect.java | 265 + .../util/aspect/VersionCheckAspect.java | 124 + .../util/cache/CaffeineCacheConfig.java | 39 + .../util/cache/RedisCacheConfig.java | 129 + .../util/cache/cache/CusRedisCache.java | 15 + .../util/cache/cache/LayeringCache.java | 169 + .../cacheManager/CaffeineCacheManager.java | 80 + .../cacheManager/LayeringCacheManager.java | 96 + .../cache/listener/RedisMessageListener.java | 63 + .../util/cache/listener/RedisPublisher.java | 38 + .../cache/redis/CustomJacksonSerializer.java | 35 + .../util/client/IBZOUFallback.java | 15 + .../util/client/IBZOUFeignClient.java | 21 + .../util/client/IBZUAAFallback.java | 30 + .../util/client/IBZUAAFeignClient.java | 36 + .../util/client/IBZWFFallback.java | 23 + .../util/client/IBZWFFeignClient.java | 21 + .../assetmanagement/util/domain/DTOBase.java | 75 + .../util/domain/DTOClient.java | 18 + .../util/domain/EntityBase.java | 99 + .../util/domain/EntityClient.java | 19 + .../assetmanagement/util/domain/EntityMP.java | 28 + .../util/domain/EntityMongo.java | 8 + .../assetmanagement/util/domain/FileItem.java | 21 + .../util/domain/IBZConfig.java | 78 + .../util/domain/IBZDataAudit.java | 33 + .../assetmanagement/util/domain/IBZUSER.java | 116 + .../util/domain/LiquibaseProp.java | 23 + .../util/domain/MappingBase.java | 36 + .../util/enums/DEFieldDefaultValueType.java | 47 + .../util/enums/DEPredefinedFieldType.java | 59 + .../util/enums/RedisChannelTopic.java | 36 + .../util/errors/BadRequestAlertException.java | 40 + .../errors/CustomParameterizedException.java | 41 + .../util/errors/ErrorConstants.java | 16 + .../util/errors/ExceptionTranslator.java | 99 + .../util/errors/FieldErrorVM.java | 33 + .../errors/InternalServerErrorException.java | 11 + .../util/filter/ISearchContext.java | 5 + .../util/filter/QueryBuildContext.java | 180 + .../util/filter/QueryFilter.java | 270 + .../util/filter/QueryWrapperContext.java | 220 + .../util/filter/SearchContextBase.java | 139 + .../util/helper/CachedBeanCopier.java | 34 + .../util/helper/DEFieldCacheMap.java | 231 + .../util/helper/DataObject.java | 594 + .../util/helper/JSR310DateConverters.java | 149 + .../util/helper/RuleUtils.java | 535 + .../util/helper/UniqueNameGenerator.java | 18 + .../util/job/PermissionSyncJob.java | 59 + .../util/mapper/IBZConfigMapper.java | 8 + .../util/mapper/IBZDataAuditMapper.java | 7 + .../util/mapper/IBZUSERMapper.java | 8 + .../util/rest/AppController.java | 90 + .../util/rest/AuthenticationController.java | 60 + .../util/rest/FileController.java | 85 + .../security/AuthPermissionEvaluator.java | 308 + .../util/security/AuthTokenUtil.java | 18 + .../security/AuthenticationEntryPoint.java | 27 + .../util/security/AuthenticationInfo.java | 14 + .../util/security/AuthenticationUser.java | 184 + .../util/security/AuthorizationLogin.java | 42 + .../security/AuthorizationTokenFilter.java | 69 + .../util/security/SimpleTokenUtil.java | 171 + .../util/security/SpringContextHolder.java | 41 + .../util/security/UAATokenUtil.java | 113 + .../service/AuthenticationUserService.java | 26 + .../util/service/FileService.java | 11 + .../util/service/IBZConfigService.java | 63 + .../util/service/IBZDataAuditService.java | 19 + .../util/service/IBZUAAUserService.java | 62 + .../util/service/IBZUSERService.java | 11 + .../util/service/IBZUSERServiceImpl.java | 81 + .../util/service/RemoteService.java | 120 + .../util/service/SimpleAuditService.java | 315 + .../util/service/SimpleFileService.java | 71 + .../util/service/SimpleUserService.java | 66 + .../util/web/FeignRequestInterceptor.java | 41 + .../util/web/IBZOperationParameterReader.java | 148 + ...hContextHandlerMethodArgumentResolver.java | 47 + .../src/main/resources/application-eureka.yml | 14 + .../src/main/resources/application-nacos.yml | 12 + .../src/main/resources/application-sys.yml | 110 + config.xml | 59 + pom.xml | 52 + 2479 files changed, 347905 insertions(+) create mode 100644 .gitignore create mode 100644 app_AssetManagement/CHANGELOG.md create mode 100644 app_AssetManagement/README.md create mode 100644 app_AssetManagement/babel.config.js create mode 100644 app_AssetManagement/package.json create mode 100644 app_AssetManagement/pom.xml create mode 100644 app_AssetManagement/public/assets/css/loading.css create mode 100644 app_AssetManagement/public/assets/icons/iconfont/demo.css create mode 100644 app_AssetManagement/public/assets/icons/iconfont/demo_index.html create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.css create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.eot create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.js create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.json create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.svg create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.ttf create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.woff create mode 100644 app_AssetManagement/public/assets/icons/iconfont/iconfont.woff2 create mode 100644 app_AssetManagement/public/assets/img/404.png create mode 100644 app_AssetManagement/public/assets/img/500.png create mode 100644 app_AssetManagement/public/assets/img/QQ.svg create mode 100644 app_AssetManagement/public/assets/img/avatar.png create mode 100644 app_AssetManagement/public/assets/img/background.png create mode 100644 app_AssetManagement/public/assets/img/doc.png create mode 100644 app_AssetManagement/public/assets/img/error.png create mode 100644 app_AssetManagement/public/assets/img/excel.png create mode 100644 app_AssetManagement/public/assets/img/login_bg.png create mode 100644 app_AssetManagement/public/assets/img/logo.png create mode 100644 app_AssetManagement/public/assets/img/logo.svg create mode 100644 app_AssetManagement/public/assets/img/logo2.png create mode 100644 app_AssetManagement/public/assets/img/logout_bg.png create mode 100644 app_AssetManagement/public/assets/img/noimage.png create mode 100644 app_AssetManagement/public/assets/img/noimg.jpg create mode 100644 app_AssetManagement/public/assets/img/noimg2.png create mode 100644 app_AssetManagement/public/assets/img/other.png create mode 100644 app_AssetManagement/public/assets/img/pdf.png create mode 100644 app_AssetManagement/public/assets/img/picture.png create mode 100644 app_AssetManagement/public/assets/img/ppt.png create mode 100644 app_AssetManagement/public/assets/img/txt.png create mode 100644 app_AssetManagement/public/assets/img/weixin.svg create mode 100644 app_AssetManagement/public/assets/json/data-dictionary.json create mode 100644 app_AssetManagement/public/assets/json/portlet-data.json create mode 100644 app_AssetManagement/public/assets/json/view-config.json create mode 100644 app_AssetManagement/public/assets/styles/loader.css create mode 100644 app_AssetManagement/public/assets/tinymce/langs/en_US.js create mode 100644 app_AssetManagement/public/assets/tinymce/langs/zh_CN.js create mode 100644 app_AssetManagement/public/assets/tinymce/prism.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/content.inline.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/content.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/content.mobile.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-mobile.woff create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-small.eot create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-small.svg create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-small.ttf create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-small.woff create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.eot create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.svg create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.ttf create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.woff create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/img/anchor.gif create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/img/loader.gif create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/img/object.gif create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/img/trans.gif create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/skin.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/skin.mobile.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/fonts/tinymce-mobile.woff create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/fonts/tinymce-mobile.woff create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.min.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.css create mode 100644 app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.min.css create mode 100644 app_AssetManagement/public/environments/environment.js create mode 100644 app_AssetManagement/public/favicon.ico create mode 100644 app_AssetManagement/src/App.vue create mode 100644 app_AssetManagement/src/app-register.ts create mode 100644 app_AssetManagement/src/assets/img/404.png create mode 100644 app_AssetManagement/src/assets/img/500.png create mode 100644 app_AssetManagement/src/assets/img/avatar.png create mode 100644 app_AssetManagement/src/assets/img/doc.png create mode 100644 app_AssetManagement/src/assets/img/error.png create mode 100644 app_AssetManagement/src/assets/img/excel.png create mode 100644 app_AssetManagement/src/assets/img/login_bg.png create mode 100644 app_AssetManagement/src/assets/img/logo.png create mode 100644 app_AssetManagement/src/assets/img/logo2.png create mode 100644 app_AssetManagement/src/assets/img/logout_bg.png create mode 100644 app_AssetManagement/src/assets/img/noimg.jpg create mode 100644 app_AssetManagement/src/assets/img/other.png create mode 100644 app_AssetManagement/src/assets/img/pdf.png create mode 100644 app_AssetManagement/src/assets/img/picture.png create mode 100644 app_AssetManagement/src/assets/img/ppt.png create mode 100644 app_AssetManagement/src/assets/img/txt.png create mode 100644 app_AssetManagement/src/assets/json/city_code.json create mode 100644 app_AssetManagement/src/authservice/auth-service-register.ts create mode 100644 app_AssetManagement/src/authservice/auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamapply/eamapply-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamapply/eamapply-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamasset/eamasset-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamasset/eamasset-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamplan/eamplan-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamplan/eamplan-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service.ts create mode 100644 app_AssetManagement/src/authservice/woorigin/woorigin-auth-service-base.ts create mode 100644 app_AssetManagement/src/authservice/woorigin/woorigin-auth-service.ts create mode 100644 app_AssetManagement/src/codelist/sys-operator.ts create mode 100644 app_AssetManagement/src/components/404/404.less create mode 100644 app_AssetManagement/src/components/404/404.vue create mode 100644 app_AssetManagement/src/components/500/500.less create mode 100644 app_AssetManagement/src/components/500/500.vue create mode 100644 app_AssetManagement/src/components/app-actionbar/app-actionbar.less create mode 100644 app_AssetManagement/src/components/app-actionbar/app-actionbar.vue create mode 100644 app_AssetManagement/src/components/app-address-selection/app-address-selection.less create mode 100644 app_AssetManagement/src/components/app-address-selection/app-address-selection.vue create mode 100644 app_AssetManagement/src/components/app-address-selection/city_code.ts create mode 100644 app_AssetManagement/src/components/app-autocomplete/app-autocomplete.less create mode 100644 app_AssetManagement/src/components/app-autocomplete/app-autocomplete.vue create mode 100644 app_AssetManagement/src/components/app-build/app-build.less create mode 100644 app_AssetManagement/src/components/app-build/app-build.vue create mode 100644 app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.less create mode 100644 app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.vue create mode 100644 app_AssetManagement/src/components/app-checkbox/app-checkbox.less create mode 100644 app_AssetManagement/src/components/app-checkbox/app-checkbox.vue create mode 100644 app_AssetManagement/src/components/app-column-format/app-column-format.less create mode 100644 app_AssetManagement/src/components/app-column-format/app-column-format.vue create mode 100644 app_AssetManagement/src/components/app-column-link/app-column-link.less create mode 100644 app_AssetManagement/src/components/app-column-link/app-column-link.vue create mode 100644 app_AssetManagement/src/components/app-column-render/app-column-render.less create mode 100644 app_AssetManagement/src/components/app-column-render/app-column-render.vue create mode 100644 app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design-service.ts create mode 100644 app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.less create mode 100644 app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.vue create mode 100644 app_AssetManagement/src/components/app-data-upload/app-data-upload.less create mode 100644 app_AssetManagement/src/components/app-data-upload/app-data-upload.vue create mode 100644 app_AssetManagement/src/components/app-debug-actions/app-debug-actions.less create mode 100644 app_AssetManagement/src/components/app-debug-actions/app-debug-actions.vue create mode 100644 app_AssetManagement/src/components/app-department-select/app-department-select.less create mode 100644 app_AssetManagement/src/components/app-department-select/app-department-select.vue create mode 100644 app_AssetManagement/src/components/app-embed-picker/app-embed-picker.less create mode 100644 app_AssetManagement/src/components/app-embed-picker/app-embed-picker.vue create mode 100644 app_AssetManagement/src/components/app-export-excel/app-export-excel.less create mode 100644 app_AssetManagement/src/components/app-export-excel/app-export-excel.vue create mode 100644 app_AssetManagement/src/components/app-file-upload/app-file-upload.less create mode 100644 app_AssetManagement/src/components/app-file-upload/app-file-upload.vue create mode 100644 app_AssetManagement/src/components/app-form-druipart/app-form-druipart.less create mode 100644 app_AssetManagement/src/components/app-form-druipart/app-form-druipart.vue create mode 100644 app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.less create mode 100644 app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.tsx create mode 100644 app_AssetManagement/src/components/app-form-group/app-form-group.less create mode 100644 app_AssetManagement/src/components/app-form-group/app-form-group.tsx create mode 100644 app_AssetManagement/src/components/app-form-group2/app-form-group2.less create mode 100644 app_AssetManagement/src/components/app-form-group2/app-form-group2.vue create mode 100644 app_AssetManagement/src/components/app-form-group4/app-form-group4.less create mode 100644 app_AssetManagement/src/components/app-form-group4/app-form-group4.tsx create mode 100644 app_AssetManagement/src/components/app-form-item/app-form-item.less create mode 100644 app_AssetManagement/src/components/app-form-item/app-form-item.vue create mode 100644 app_AssetManagement/src/components/app-form-item2/app-form-item2.less create mode 100644 app_AssetManagement/src/components/app-form-item2/app-form-item2.vue create mode 100644 app_AssetManagement/src/components/app-form/app-form.less create mode 100644 app_AssetManagement/src/components/app-form/app-form.vue create mode 100644 app_AssetManagement/src/components/app-format-data/app-format-data.less create mode 100644 app_AssetManagement/src/components/app-format-data/app-format-data.vue create mode 100644 app_AssetManagement/src/components/app-group-picker/app-group-picker.vue create mode 100644 app_AssetManagement/src/components/app-group-select/app-group-select.vue create mode 100644 app_AssetManagement/src/components/app-header-menus/app-header-menus.less create mode 100644 app_AssetManagement/src/components/app-header-menus/app-header-menus.vue create mode 100644 app_AssetManagement/src/components/app-image-preview/app-image-preview.less create mode 100644 app_AssetManagement/src/components/app-image-preview/app-image-preview.vue create mode 100644 app_AssetManagement/src/components/app-image-upload/app-image-upload.less create mode 100644 app_AssetManagement/src/components/app-image-upload/app-image-upload.vue create mode 100644 app_AssetManagement/src/components/app-keep-alive/app-keep-alive.vue create mode 100644 app_AssetManagement/src/components/app-lang/app-lang.less create mode 100644 app_AssetManagement/src/components/app-lang/app-lang.vue create mode 100644 app_AssetManagement/src/components/app-menu-item/app-menu-item.vue create mode 100644 app_AssetManagement/src/components/app-mpicker/app-mpicker.less create mode 100644 app_AssetManagement/src/components/app-mpicker/app-mpicker.vue create mode 100644 app_AssetManagement/src/components/app-org-select/app-org-select.less create mode 100644 app_AssetManagement/src/components/app-org-select/app-org-select.vue create mode 100644 app_AssetManagement/src/components/app-orgsector/app-orgsector.less create mode 100644 app_AssetManagement/src/components/app-orgsector/app-orgsector.vue create mode 100644 app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.less create mode 100644 app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.vue create mode 100644 app_AssetManagement/src/components/app-picker/app-picker.less create mode 100644 app_AssetManagement/src/components/app-picker/app-picker.vue create mode 100644 app_AssetManagement/src/components/app-portal-design/app-portal-design.less create mode 100644 app_AssetManagement/src/components/app-portal-design/app-portal-design.vue create mode 100644 app_AssetManagement/src/components/app-quick-group/app-quick-group.less create mode 100644 app_AssetManagement/src/components/app-quick-group/app-quick-group.vue create mode 100644 app_AssetManagement/src/components/app-quick-menus/app-quick-menus.less create mode 100644 app_AssetManagement/src/components/app-quick-menus/app-quick-menus.vue create mode 100644 app_AssetManagement/src/components/app-radio-group/app-radio-group.less create mode 100644 app_AssetManagement/src/components/app-radio-group/app-radio-group.vue create mode 100644 app_AssetManagement/src/components/app-range-date/app-range-date.less create mode 100644 app_AssetManagement/src/components/app-range-date/app-range-date.vue create mode 100644 app_AssetManagement/src/components/app-range-editor/app-range-editor.less create mode 100644 app_AssetManagement/src/components/app-range-editor/app-range-editor.vue create mode 100644 app_AssetManagement/src/components/app-rate/app-rate.less create mode 100644 app_AssetManagement/src/components/app-rate/app-rate.vue create mode 100644 app_AssetManagement/src/components/app-rich-text-editor/app-rich-text-editor.vue create mode 100644 app_AssetManagement/src/components/app-sider-menus/app-sider-menus.less create mode 100644 app_AssetManagement/src/components/app-sider-menus/app-sider-menus.vue create mode 100644 app_AssetManagement/src/components/app-slider/app-slider.less create mode 100644 app_AssetManagement/src/components/app-slider/app-slider.vue create mode 100644 app_AssetManagement/src/components/app-span/app-span.less create mode 100644 app_AssetManagement/src/components/app-span/app-span.tsx create mode 100644 app_AssetManagement/src/components/app-stepper/app-stepper.less create mode 100644 app_AssetManagement/src/components/app-stepper/app-stepper.vue create mode 100644 app_AssetManagement/src/components/app-studioaction/app-studioaction.less create mode 100644 app_AssetManagement/src/components/app-studioaction/app-studioaction.vue create mode 100644 app_AssetManagement/src/components/app-switch/app-switch.less create mode 100644 app_AssetManagement/src/components/app-switch/app-switch.vue create mode 100644 app_AssetManagement/src/components/app-transfer/app-transfer.less create mode 100644 app_AssetManagement/src/components/app-transfer/app-transfer.vue create mode 100644 app_AssetManagement/src/components/app-tree-picker/app-tree-picker.less create mode 100644 app_AssetManagement/src/components/app-tree-picker/app-tree-picker.vue create mode 100644 app_AssetManagement/src/components/app-update-password/app-update-password.less create mode 100644 app_AssetManagement/src/components/app-update-password/app-update-password.vue create mode 100644 app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.less create mode 100644 app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.vue create mode 100644 app_AssetManagement/src/components/app-user/app-user.less create mode 100644 app_AssetManagement/src/components/app-user/app-user.vue create mode 100755 app_AssetManagement/src/components/app-vue-pivottable/app-vue-pivottable.vue create mode 100644 app_AssetManagement/src/components/app-wf-approval/app-wf-approval.less create mode 100644 app_AssetManagement/src/components/app-wf-approval/app-wf-approval.vue create mode 100644 app_AssetManagement/src/components/codelist/codelist.vue create mode 100644 app_AssetManagement/src/components/context-menu-container/context-menu-container.vue create mode 100644 app_AssetManagement/src/components/context-menu-drag/context-menu-drag.less create mode 100644 app_AssetManagement/src/components/context-menu-drag/context-menu-drag.vue create mode 100644 app_AssetManagement/src/components/context-menu/context-menu.less create mode 100644 app_AssetManagement/src/components/context-menu/context-menu.tsx create mode 100644 app_AssetManagement/src/components/date-picker-range/date-picker-range.less create mode 100644 app_AssetManagement/src/components/date-picker-range/date-picker-range.vue create mode 100644 app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.less create mode 100644 app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.vue create mode 100644 app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.less create mode 100644 app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.vue create mode 100644 app_AssetManagement/src/components/dropdown-list/dropdown-list.less create mode 100644 app_AssetManagement/src/components/dropdown-list/dropdown-list.vue create mode 100755 app_AssetManagement/src/components/filter-tree/filter-mode.vue create mode 100755 app_AssetManagement/src/components/filter-tree/filter-tree.less create mode 100755 app_AssetManagement/src/components/filter-tree/filter-tree.vue create mode 100644 app_AssetManagement/src/components/input-box/input-box.less create mode 100644 app_AssetManagement/src/components/input-box/input-box.vue create mode 100644 app_AssetManagement/src/components/login/login.less create mode 100644 app_AssetManagement/src/components/login/login.tsx create mode 100644 app_AssetManagement/src/components/property-layout/property-layout.less create mode 100644 app_AssetManagement/src/components/property-layout/property-layout.vue create mode 100644 app_AssetManagement/src/components/tab-page-exp/tab-page-exp.less create mode 100644 app_AssetManagement/src/components/tab-page-exp/tab-page-exp.vue create mode 100644 app_AssetManagement/src/components/upload-file/upload-file.less create mode 100644 app_AssetManagement/src/components/upload-file/upload-file.vue create mode 100644 app_AssetManagement/src/components/view-shell/view-shell.vue create mode 100644 app_AssetManagement/src/counter/counter-service-register.ts create mode 100644 app_AssetManagement/src/counter/counter-service.ts create mode 100644 app_AssetManagement/src/engine/ctrl/data-panel-engine.ts create mode 100644 app_AssetManagement/src/engine/view/calendar-exp-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/chart-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/chart-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/data-panel-engine.ts create mode 100644 app_AssetManagement/src/engine/view/data-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/data-view-exp-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/data-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/edit-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/edit-view2-engine.ts create mode 100644 app_AssetManagement/src/engine/view/edit-view3-engine.ts create mode 100644 app_AssetManagement/src/engine/view/edit-view4-engine.ts create mode 100644 app_AssetManagement/src/engine/view/edit-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/form-pickup-data-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/grid-exp-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/grid-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/grid-view8-engine.ts create mode 100644 app_AssetManagement/src/engine/view/grid-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/html-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/kan-ban-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/list-exp-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/list-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/list-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/md-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/mpickup-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/option-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/pickup-data-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/pickup-grid-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/pickup-tree-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/pickup-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/portal-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/portal-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/search-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/tab-exp-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/tree-exp-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/tree-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/tree-view9-engine.ts create mode 100644 app_AssetManagement/src/engine/view/view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfaction-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfdyna-edit-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfdyna-exp-grid-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfedit-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfedit-view3-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfgrid-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wfstart-view-engine.ts create mode 100644 app_AssetManagement/src/engine/view/wizard-view-engine.ts create mode 100644 app_AssetManagement/src/environments/environment.ts create mode 100644 app_AssetManagement/src/index.d.ts create mode 100644 app_AssetManagement/src/interface/control.ts create mode 100644 app_AssetManagement/src/interface/entity/eamapply-state-model-line.ts create mode 100644 app_AssetManagement/src/interface/entity/eamapply-state.ts create mode 100644 app_AssetManagement/src/interface/entity/eamapply-type.ts create mode 100644 app_AssetManagement/src/interface/entity/eamapply.ts create mode 100644 app_AssetManagement/src/interface/entity/eamasset-parts-group.ts create mode 100644 app_AssetManagement/src/interface/entity/eamasset-state-model-line.ts create mode 100644 app_AssetManagement/src/interface/entity/eamasset-state-model.ts create mode 100644 app_AssetManagement/src/interface/entity/eamasset-state.ts create mode 100644 app_AssetManagement/src/interface/entity/eamasset-type.ts create mode 100644 app_AssetManagement/src/interface/entity/eamasset.ts create mode 100644 app_AssetManagement/src/interface/entity/eamdocument-type.ts create mode 100644 app_AssetManagement/src/interface/entity/eamdocument.ts create mode 100644 app_AssetManagement/src/interface/entity/eamlocation-state-model-line.ts create mode 100644 app_AssetManagement/src/interface/entity/eamlocation-state-model.ts create mode 100644 app_AssetManagement/src/interface/entity/eamlocation-state.ts create mode 100644 app_AssetManagement/src/interface/entity/eamlocation-type.ts create mode 100644 app_AssetManagement/src/interface/entity/eamlocation.ts create mode 100644 app_AssetManagement/src/interface/entity/eammonitor-point.ts create mode 100644 app_AssetManagement/src/interface/entity/eamplan-cdt.ts create mode 100644 app_AssetManagement/src/interface/entity/eamplan-line.ts create mode 100644 app_AssetManagement/src/interface/entity/eamplan-schedule.ts create mode 100644 app_AssetManagement/src/interface/entity/eamplan.ts create mode 100644 app_AssetManagement/src/interface/entity/eamproduct.ts create mode 100644 app_AssetManagement/src/interface/entity/eamservice-level.ts create mode 100644 app_AssetManagement/src/interface/entity/eamspare-parts-group.ts create mode 100644 app_AssetManagement/src/interface/entity/eamspare-parts-pro.ts create mode 100644 app_AssetManagement/src/interface/entity/eamwork-order.ts create mode 100644 app_AssetManagement/src/interface/entity/eamwostate.ts create mode 100644 app_AssetManagement/src/interface/entity/eamwotype.ts create mode 100644 app_AssetManagement/src/interface/entity/woorigin.ts create mode 100644 app_AssetManagement/src/interface/viewState.ts create mode 100644 app_AssetManagement/src/locale/index.ts create mode 100644 app_AssetManagement/src/locale/lang/en-US.ts create mode 100644 app_AssetManagement/src/locale/lang/zh-CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/codelist/codelist_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/codelist/codelist_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/components/components_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/components/components_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/lanres/userCustom/userCustom_en_US.ts create mode 100644 app_AssetManagement/src/locale/lanres/userCustom/userCustom_zh_CN.ts create mode 100644 app_AssetManagement/src/locale/local-list.ts create mode 100644 app_AssetManagement/src/mock/app/app-index-view-appmenu/app-index-view-appmenu.ts create mode 100644 app_AssetManagement/src/mock/appdata/appdata.ts create mode 100644 app_AssetManagement/src/mock/codelist/codelist.ts create mode 100644 app_AssetManagement/src/mock/entity/eamapply-state-model-lines/eamapply-state-model-lines.ts create mode 100644 app_AssetManagement/src/mock/entity/eamapply-states/eamapply-states.ts create mode 100644 app_AssetManagement/src/mock/entity/eamapply-types/eamapply-types.ts create mode 100644 app_AssetManagement/src/mock/entity/eamapplys/eamapplys.ts create mode 100644 app_AssetManagement/src/mock/entity/eamasset-parts-groups/eamasset-parts-groups.ts create mode 100644 app_AssetManagement/src/mock/entity/eamasset-state-model-lines/eamasset-state-model-lines.ts create mode 100644 app_AssetManagement/src/mock/entity/eamasset-state-models/eamasset-state-models.ts create mode 100644 app_AssetManagement/src/mock/entity/eamasset-states/eamasset-states.ts create mode 100644 app_AssetManagement/src/mock/entity/eamasset-types/eamasset-types.ts create mode 100644 app_AssetManagement/src/mock/entity/eamassets/eamassets.ts create mode 100644 app_AssetManagement/src/mock/entity/eamdocument-types/eamdocument-types.ts create mode 100644 app_AssetManagement/src/mock/entity/eamdocuments/eamdocuments.ts create mode 100644 app_AssetManagement/src/mock/entity/eamlocation-state-model-lines/eamlocation-state-model-lines.ts create mode 100644 app_AssetManagement/src/mock/entity/eamlocation-state-models/eamlocation-state-models.ts create mode 100644 app_AssetManagement/src/mock/entity/eamlocation-states/eamlocation-states.ts create mode 100644 app_AssetManagement/src/mock/entity/eamlocation-types/eamlocation-types.ts create mode 100644 app_AssetManagement/src/mock/entity/eamlocations/eamlocations.ts create mode 100644 app_AssetManagement/src/mock/entity/eammonitor-points/eammonitor-points.ts create mode 100644 app_AssetManagement/src/mock/entity/eamplan-cdts/eamplan-cdts.ts create mode 100644 app_AssetManagement/src/mock/entity/eamplan-lines/eamplan-lines.ts create mode 100644 app_AssetManagement/src/mock/entity/eamplan-schedules/eamplan-schedules.ts create mode 100644 app_AssetManagement/src/mock/entity/eamplans/eamplans.ts create mode 100644 app_AssetManagement/src/mock/entity/eamproducts/eamproducts.ts create mode 100644 app_AssetManagement/src/mock/entity/eamservice-levels/eamservice-levels.ts create mode 100644 app_AssetManagement/src/mock/entity/eamspare-parts-groups/eamspare-parts-groups.ts create mode 100644 app_AssetManagement/src/mock/entity/eamspare-parts-pros/eamspare-parts-pros.ts create mode 100644 app_AssetManagement/src/mock/entity/eamwork-orders/eamwork-orders.ts create mode 100644 app_AssetManagement/src/mock/entity/eamwostates/eamwostates.ts create mode 100644 app_AssetManagement/src/mock/entity/eamwotypes/eamwotypes.ts create mode 100644 app_AssetManagement/src/mock/entity/woorigins/woorigins.ts create mode 100644 app_AssetManagement/src/mock/index.ts create mode 100644 app_AssetManagement/src/mock/login/login.ts create mode 100644 app_AssetManagement/src/mock/mock-adapter.ts create mode 100644 app_AssetManagement/src/mock/portlet/portlet.ts create mode 100644 app_AssetManagement/src/mock/upload/upload.ts create mode 100644 app_AssetManagement/src/mock/viewconfig/viewconfig.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-bar-series.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-dataset-field.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-funnel-series.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-line-series.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-pie-series.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-radar-series.ts create mode 100644 app_AssetManagement/src/model/chart-detail/chart-series.ts create mode 100644 app_AssetManagement/src/model/chart-detail/index.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-button.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-detail.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-druipart.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-group-panel.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-iframe.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-item.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-page.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-part.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-row-item.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-tab-page.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-tab-panel.ts create mode 100644 app_AssetManagement/src/model/form-detail/form-user-control.ts create mode 100644 app_AssetManagement/src/model/form-detail/index.ts create mode 100644 app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-grid-view/eamapply-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-grid-view/eamapply-grid-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-grid-view/eamapply-grid-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-info-main-view/eamapply-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-info-main-view/eamapply-info-main-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-info-main-view/eamapply-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-info-view/eamapply-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-info-view/eamapply-info-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-info-view/eamapply-info-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-quick-create-view/eamapply-quick-create-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-quick-create-view/eamapply-quick-create-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-quick-create-view/eamapply-quick-create-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-summary-view/eamapply-summary-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-summary-view/eamapply-summary-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-summary-view/eamapply-summary-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-edit-view/eamapply-type-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-edit-view/eamapply-type-edit-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-edit-view/eamapply-type-edit-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-grid-view/eamapply-type-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-grid-view/eamapply-type-grid-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-grid-view/eamapply-type-grid-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-pickup-grid-view/eamapply-type-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-pickup-grid-view/eamapply-type-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-pickup-grid-view/eamapply-type-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-pickup-view/eamapply-type-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-pickup-view/eamapply-type-pickup-view.html create mode 100644 app_AssetManagement/src/pages/apply/eamapply-type-pickup-view/eamapply-type-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-child-grid-view/eamasset-child-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-child-grid-view/eamasset-child-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-child-grid-view/eamasset-child-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-edit-view/eamasset-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-edit-view/eamasset-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-edit-view/eamasset-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-grid-view/eamasset-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-grid-view/eamasset-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-grid-view/eamasset-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-info-main-view/eamasset-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-info-main-view/eamasset-info-main-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-info-main-view/eamasset-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-info-view/eamasset-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-info-view/eamasset-info-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-info-view/eamasset-info-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-location-asset-grid-view/eamasset-location-asset-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-location-asset-grid-view/eamasset-location-asset-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-location-asset-grid-view/eamasset-location-asset-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-asset-parts-grid-view/eamasset-parts-group-asset-parts-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-asset-parts-grid-view/eamasset-parts-group-asset-parts-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-asset-parts-grid-view/eamasset-parts-group-asset-parts-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-edit-view/eamasset-parts-group-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-edit-view/eamasset-parts-group-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-edit-view/eamasset-parts-group-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-parts-asset-grid-view/eamasset-parts-group-parts-asset-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-parts-asset-grid-view/eamasset-parts-group-parts-asset-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-parts-group-parts-asset-grid-view/eamasset-parts-group-parts-asset-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-pickup-grid-view/eamasset-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-pickup-grid-view/eamasset-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-pickup-grid-view/eamasset-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-pickup-view/eamasset-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-pickup-view/eamasset-pickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-pickup-view/eamasset-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-quick-create-view/eamasset-quick-create-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-quick-create-view/eamasset-quick-create-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-quick-create-view/eamasset-quick-create-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-edit-view/eamasset-state-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-edit-view/eamasset-state-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-edit-view/eamasset-state-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-grid-view/eamasset-state-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-grid-view/eamasset-state-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-grid-view/eamasset-state-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-edit-view/eamasset-state-model-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-edit-view/eamasset-state-model-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-edit-view/eamasset-state-model-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-grid-view/eamasset-state-model-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-grid-view/eamasset-state-model-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-grid-view/eamasset-state-model-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-line-edit-view/eamasset-state-model-line-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-line-edit-view/eamasset-state-model-line-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-line-edit-view/eamasset-state-model-line-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-line-grid-view/eamasset-state-model-line-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-line-grid-view/eamasset-state-model-line-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-line-grid-view/eamasset-state-model-line-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-pickup-grid-view/eamasset-state-model-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-pickup-grid-view/eamasset-state-model-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-pickup-grid-view/eamasset-state-model-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-pickup-view/eamasset-state-model-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-pickup-view/eamasset-state-model-pickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-model-pickup-view/eamasset-state-model-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-pickup-grid-view/eamasset-state-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-pickup-grid-view/eamasset-state-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-pickup-grid-view/eamasset-state-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-pickup-view/eamasset-state-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-pickup-view/eamasset-state-pickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-state-pickup-view/eamasset-state-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-summary-view/eamasset-summary-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-summary-view/eamasset-summary-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-summary-view/eamasset-summary-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-tree-exp-view/eamasset-tree-exp-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-tree-exp-view/eamasset-tree-exp-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-tree-exp-view/eamasset-tree-exp-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-edit-view/eamasset-type-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-edit-view/eamasset-type-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-edit-view/eamasset-type-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-grid-view/eamasset-type-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-grid-view/eamasset-type-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-grid-view/eamasset-type-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-info-main-view/eamasset-type-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-info-main-view/eamasset-type-info-main-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-info-main-view/eamasset-type-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-info-view/eamasset-type-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-info-view/eamasset-type-info-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-info-view/eamasset-type-info-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-pickup-grid-view/eamasset-type-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-pickup-grid-view/eamasset-type-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-pickup-grid-view/eamasset-type-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-pickup-view/eamasset-type-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-pickup-view/eamasset-type-pickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-pickup-view/eamasset-type-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-summary-view/eamasset-type-summary-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-summary-view/eamasset-type-summary-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamasset-type-summary-view/eamasset-type-summary-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-asset-type-doc-grid-view/eamdocument-asset-type-doc-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-asset-type-doc-grid-view/eamdocument-asset-type-doc-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-asset-type-doc-grid-view/eamdocument-asset-type-doc-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-edit-view/eamdocument-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-edit-view/eamdocument-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-edit-view/eamdocument-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-grid-view/eamdocument-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-grid-view/eamdocument-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-grid-view/eamdocument-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-edit-view/eamdocument-type-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-edit-view/eamdocument-type-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-edit-view/eamdocument-type-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-grid-view/eamdocument-type-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-grid-view/eamdocument-type-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-grid-view/eamdocument-type-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-pickup-grid-view/eamdocument-type-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-pickup-grid-view/eamdocument-type-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-pickup-grid-view/eamdocument-type-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-pickup-view/eamdocument-type-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-pickup-view/eamdocument-type-pickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamdocument-type-pickup-view/eamdocument-type-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamproductpickup-grid-view/eamproductpickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamproductpickup-grid-view/eamproductpickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamproductpickup-grid-view/eamproductpickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamproductpickup-view/eamproductpickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamproductpickup-view/eamproductpickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamproductpickup-view/eamproductpickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-dashboard-view/eamspare-parts-group-dashboard-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-dashboard-view/eamspare-parts-group-dashboard-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-dashboard-view/eamspare-parts-group-dashboard-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-edit-view/eamspare-parts-group-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-edit-view/eamspare-parts-group-edit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-edit-view/eamspare-parts-group-edit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-grid-view/eamspare-parts-group-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-grid-view/eamspare-parts-group-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-grid-view/eamspare-parts-group-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-info-main-view/eamspare-parts-group-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-info-main-view/eamspare-parts-group-info-main-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-info-main-view/eamspare-parts-group-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-info-view/eamspare-parts-group-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-info-view/eamspare-parts-group-info-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-info-view/eamspare-parts-group-info-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-pickup-grid-view/eamspare-parts-group-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-pickup-grid-view/eamspare-parts-group-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-pickup-grid-view/eamspare-parts-group-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-pickup-view/eamspare-parts-group-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-pickup-view/eamspare-parts-group-pickup-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-group-pickup-view/eamspare-parts-group-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-proedit-view/eamspare-parts-proedit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-proedit-view/eamspare-parts-proedit-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-proedit-view/eamspare-parts-proedit-view.vue create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-proparts-pro-grid-view/eamspare-parts-proparts-pro-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-proparts-pro-grid-view/eamspare-parts-proparts-pro-grid-view.html create mode 100644 app_AssetManagement/src/pages/asset/eamspare-parts-proparts-pro-grid-view/eamspare-parts-proparts-pro-grid-view.vue create mode 100644 app_AssetManagement/src/pages/base/app-index-view/app-index-view-base.tsx create mode 100644 app_AssetManagement/src/pages/base/app-index-view/app-index-view.vue create mode 100644 app_AssetManagement/src/pages/base/app-index-view/main.ts create mode 100644 app_AssetManagement/src/pages/base/app-index-view/page-register.ts create mode 100644 app_AssetManagement/src/pages/base/app-index-view/router.ts create mode 100644 app_AssetManagement/src/pages/location/eamlocation-child-grid-view/eamlocation-child-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-child-grid-view/eamlocation-child-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-child-grid-view/eamlocation-child-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-edit-view/eamlocation-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-edit-view/eamlocation-edit-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-edit-view/eamlocation-edit-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-grid-view/eamlocation-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-grid-view/eamlocation-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-grid-view/eamlocation-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-info-main-view/eamlocation-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-info-main-view/eamlocation-info-main-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-info-main-view/eamlocation-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-info-view/eamlocation-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-info-view/eamlocation-info-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-info-view/eamlocation-info-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-pickup-grid-view/eamlocation-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-pickup-grid-view/eamlocation-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-pickup-grid-view/eamlocation-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-pickup-view/eamlocation-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-pickup-view/eamlocation-pickup-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-pickup-view/eamlocation-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-quick-create-view/eamlocation-quick-create-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-quick-create-view/eamlocation-quick-create-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-quick-create-view/eamlocation-quick-create-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-edit-view/eamlocation-state-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-edit-view/eamlocation-state-edit-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-edit-view/eamlocation-state-edit-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-grid-view/eamlocation-state-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-grid-view/eamlocation-state-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-grid-view/eamlocation-state-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-edit-view/eamlocation-state-model-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-edit-view/eamlocation-state-model-edit-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-edit-view/eamlocation-state-model-edit-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-grid-view/eamlocation-state-model-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-grid-view/eamlocation-state-model-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-grid-view/eamlocation-state-model-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-line-edit-view/eamlocation-state-model-line-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-line-edit-view/eamlocation-state-model-line-edit-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-line-edit-view/eamlocation-state-model-line-edit-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-line-grid-view/eamlocation-state-model-line-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-line-grid-view/eamlocation-state-model-line-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-line-grid-view/eamlocation-state-model-line-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-pickup-grid-view/eamlocation-state-model-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-pickup-grid-view/eamlocation-state-model-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-pickup-grid-view/eamlocation-state-model-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-pickup-view/eamlocation-state-model-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-pickup-view/eamlocation-state-model-pickup-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-model-pickup-view/eamlocation-state-model-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-pickup-grid-view/eamlocation-state-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-pickup-grid-view/eamlocation-state-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-pickup-grid-view/eamlocation-state-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-pickup-view/eamlocation-state-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-pickup-view/eamlocation-state-pickup-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-state-pickup-view/eamlocation-state-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-summary-view/eamlocation-summary-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-summary-view/eamlocation-summary-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-summary-view/eamlocation-summary-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-tree-child-grid-view/eamlocation-tree-child-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-tree-child-grid-view/eamlocation-tree-child-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-tree-child-grid-view/eamlocation-tree-child-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-tree-exp-view/eamlocation-tree-exp-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-tree-exp-view/eamlocation-tree-exp-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-tree-exp-view/eamlocation-tree-exp-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-edit-view/eamlocation-type-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-edit-view/eamlocation-type-edit-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-edit-view/eamlocation-type-edit-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-grid-view/eamlocation-type-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-grid-view/eamlocation-type-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-grid-view/eamlocation-type-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-pickup-grid-view/eamlocation-type-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-pickup-grid-view/eamlocation-type-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-pickup-grid-view/eamlocation-type-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-pickup-view/eamlocation-type-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-pickup-view/eamlocation-type-pickup-view.html create mode 100644 app_AssetManagement/src/pages/location/eamlocation-type-pickup-view/eamlocation-type-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-asset-plan-grid-view/eamplan-asset-plan-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-asset-plan-grid-view/eamplan-asset-plan-grid-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-asset-plan-grid-view/eamplan-asset-plan-grid-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-edit-view/eamplan-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-edit-view/eamplan-edit-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-edit-view/eamplan-edit-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-grid-view/eamplan-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-grid-view/eamplan-grid-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-grid-view/eamplan-grid-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-info-main-view/eamplan-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-info-main-view/eamplan-info-main-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-info-main-view/eamplan-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-info-view/eamplan-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-info-view/eamplan-info-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-info-view/eamplan-info-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-line-edit-view/eamplan-line-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-line-edit-view/eamplan-line-edit-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-line-edit-view/eamplan-line-edit-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-line-grid-view/eamplan-line-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-line-grid-view/eamplan-line-grid-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-line-grid-view/eamplan-line-grid-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-pickup-grid-view/eamplan-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-pickup-grid-view/eamplan-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-pickup-grid-view/eamplan-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-pickup-view/eamplan-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-pickup-view/eamplan-pickup-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-pickup-view/eamplan-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-quick-create-view/eamplan-quick-create-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-quick-create-view/eamplan-quick-create-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-quick-create-view/eamplan-quick-create-view.vue create mode 100644 app_AssetManagement/src/pages/plan/eamplan-summary-view/eamplan-summary-view-base.tsx create mode 100644 app_AssetManagement/src/pages/plan/eamplan-summary-view/eamplan-summary-view.html create mode 100644 app_AssetManagement/src/pages/plan/eamplan-summary-view/eamplan-summary-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eammonitor-point-pickup-grid-view/eammonitor-point-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eammonitor-point-pickup-grid-view/eammonitor-point-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eammonitor-point-pickup-grid-view/eammonitor-point-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eammonitor-point-pickup-view/eammonitor-point-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eammonitor-point-pickup-view/eammonitor-point-pickup-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eammonitor-point-pickup-view/eammonitor-point-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-edit-view/eamservice-level-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-edit-view/eamservice-level-edit-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-edit-view/eamservice-level-edit-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-grid-view/eamservice-level-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-grid-view/eamservice-level-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-grid-view/eamservice-level-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-pickup-grid-view/eamservice-level-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-pickup-grid-view/eamservice-level-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-pickup-grid-view/eamservice-level-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-pickup-view/eamservice-level-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-pickup-view/eamservice-level-pickup-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamservice-level-pickup-view/eamservice-level-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-apply-wogrid-view/eamwork-order-apply-wogrid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-apply-wogrid-view/eamwork-order-apply-wogrid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-apply-wogrid-view/eamwork-order-apply-wogrid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-asset-wogrid-view/eamwork-order-asset-wogrid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-asset-wogrid-view/eamwork-order-asset-wogrid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-asset-wogrid-view/eamwork-order-asset-wogrid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-child-wogrid-view/eamwork-order-child-wogrid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-child-wogrid-view/eamwork-order-child-wogrid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-child-wogrid-view/eamwork-order-child-wogrid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-data-panel-edit-view/eamwork-order-data-panel-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-data-panel-edit-view/eamwork-order-data-panel-edit-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-data-panel-edit-view/eamwork-order-data-panel-edit-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-edit-view/eamwork-order-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-edit-view/eamwork-order-edit-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-edit-view/eamwork-order-edit-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-grid-view/eamwork-order-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-grid-view/eamwork-order-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-grid-view/eamwork-order-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-info-main-view/eamwork-order-info-main-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-info-main-view/eamwork-order-info-main-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-info-main-view/eamwork-order-info-main-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-master-summary-view/eamwork-order-master-summary-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-master-summary-view/eamwork-order-master-summary-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-master-summary-view/eamwork-order-master-summary-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-master-tab-info-view/eamwork-order-master-tab-info-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-master-tab-info-view/eamwork-order-master-tab-info-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-master-tab-info-view/eamwork-order-master-tab-info-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-pickup-grid-view/eamwork-order-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-pickup-grid-view/eamwork-order-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-pickup-grid-view/eamwork-order-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-pickup-view/eamwork-order-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-pickup-view/eamwork-order-pickup-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-pickup-view/eamwork-order-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-quick-create-view/eamwork-order-quick-create-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-quick-create-view/eamwork-order-quick-create-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwork-order-quick-create-view/eamwork-order-quick-create-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-edit-view/eamwotype-edit-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-edit-view/eamwotype-edit-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-edit-view/eamwotype-edit-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-grid-view/eamwotype-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-grid-view/eamwotype-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-grid-view/eamwotype-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-pickup-grid-view/eamwotype-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-pickup-grid-view/eamwotype-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-pickup-grid-view/eamwotype-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-pickup-view/eamwotype-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-pickup-view/eamwotype-pickup-view.html create mode 100644 app_AssetManagement/src/pages/work-order/eamwotype-pickup-view/eamwotype-pickup-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/woorigin-pickup-grid-view/woorigin-pickup-grid-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/woorigin-pickup-grid-view/woorigin-pickup-grid-view.html create mode 100644 app_AssetManagement/src/pages/work-order/woorigin-pickup-grid-view/woorigin-pickup-grid-view.vue create mode 100644 app_AssetManagement/src/pages/work-order/woorigin-pickup-view/woorigin-pickup-view-base.tsx create mode 100644 app_AssetManagement/src/pages/work-order/woorigin-pickup-view/woorigin-pickup-view.html create mode 100644 app_AssetManagement/src/pages/work-order/woorigin-pickup-view/woorigin-pickup-view.vue create mode 100644 app_AssetManagement/src/portlet-register.ts create mode 100644 app_AssetManagement/src/router/index.ts create mode 100644 app_AssetManagement/src/service/app/app-center-service.ts create mode 100644 app_AssetManagement/src/service/app/codelist-service.ts create mode 100644 app_AssetManagement/src/service/app/navdata-service.ts create mode 100644 app_AssetManagement/src/service/eamapply-state-model-line/eamapply-state-model-line-service-base.ts create mode 100644 app_AssetManagement/src/service/eamapply-state-model-line/eamapply-state-model-line-service.ts create mode 100644 app_AssetManagement/src/service/eamapply-state/eamapply-state-service-base.ts create mode 100644 app_AssetManagement/src/service/eamapply-state/eamapply-state-service.ts create mode 100644 app_AssetManagement/src/service/eamapply-type/eamapply-type-service-base.ts create mode 100644 app_AssetManagement/src/service/eamapply-type/eamapply-type-service.ts create mode 100644 app_AssetManagement/src/service/eamapply/eamapply-service-base.ts create mode 100644 app_AssetManagement/src/service/eamapply/eamapply-service.ts create mode 100644 app_AssetManagement/src/service/eamasset-parts-group/eamasset-parts-group-service-base.ts create mode 100644 app_AssetManagement/src/service/eamasset-parts-group/eamasset-parts-group-service.ts create mode 100644 app_AssetManagement/src/service/eamasset-state-model-line/eamasset-state-model-line-service-base.ts create mode 100644 app_AssetManagement/src/service/eamasset-state-model-line/eamasset-state-model-line-service.ts create mode 100644 app_AssetManagement/src/service/eamasset-state-model/eamasset-state-model-service-base.ts create mode 100644 app_AssetManagement/src/service/eamasset-state-model/eamasset-state-model-service.ts create mode 100644 app_AssetManagement/src/service/eamasset-state/eamasset-state-service-base.ts create mode 100644 app_AssetManagement/src/service/eamasset-state/eamasset-state-service.ts create mode 100644 app_AssetManagement/src/service/eamasset-type/eamasset-type-service-base.ts create mode 100644 app_AssetManagement/src/service/eamasset-type/eamasset-type-service.ts create mode 100644 app_AssetManagement/src/service/eamasset/eamasset-service-base.ts create mode 100644 app_AssetManagement/src/service/eamasset/eamasset-service.ts create mode 100644 app_AssetManagement/src/service/eamdocument-type/eamdocument-type-service-base.ts create mode 100644 app_AssetManagement/src/service/eamdocument-type/eamdocument-type-service.ts create mode 100644 app_AssetManagement/src/service/eamdocument/eamdocument-service-base.ts create mode 100644 app_AssetManagement/src/service/eamdocument/eamdocument-service.ts create mode 100644 app_AssetManagement/src/service/eamlocation-state-model-line/eamlocation-state-model-line-service-base.ts create mode 100644 app_AssetManagement/src/service/eamlocation-state-model-line/eamlocation-state-model-line-service.ts create mode 100644 app_AssetManagement/src/service/eamlocation-state-model/eamlocation-state-model-service-base.ts create mode 100644 app_AssetManagement/src/service/eamlocation-state-model/eamlocation-state-model-service.ts create mode 100644 app_AssetManagement/src/service/eamlocation-state/eamlocation-state-service-base.ts create mode 100644 app_AssetManagement/src/service/eamlocation-state/eamlocation-state-service.ts create mode 100644 app_AssetManagement/src/service/eamlocation-type/eamlocation-type-service-base.ts create mode 100644 app_AssetManagement/src/service/eamlocation-type/eamlocation-type-service.ts create mode 100644 app_AssetManagement/src/service/eamlocation/eamlocation-service-base.ts create mode 100644 app_AssetManagement/src/service/eamlocation/eamlocation-service.ts create mode 100644 app_AssetManagement/src/service/eammonitor-point/eammonitor-point-service-base.ts create mode 100644 app_AssetManagement/src/service/eammonitor-point/eammonitor-point-service.ts create mode 100644 app_AssetManagement/src/service/eamplan-cdt/eamplan-cdt-service-base.ts create mode 100644 app_AssetManagement/src/service/eamplan-cdt/eamplan-cdt-service.ts create mode 100644 app_AssetManagement/src/service/eamplan-line/eamplan-line-service-base.ts create mode 100644 app_AssetManagement/src/service/eamplan-line/eamplan-line-service.ts create mode 100644 app_AssetManagement/src/service/eamplan-schedule/eamplan-schedule-service-base.ts create mode 100644 app_AssetManagement/src/service/eamplan-schedule/eamplan-schedule-service.ts create mode 100644 app_AssetManagement/src/service/eamplan/eamplan-service-base.ts create mode 100644 app_AssetManagement/src/service/eamplan/eamplan-service.ts create mode 100644 app_AssetManagement/src/service/eamproduct/eamproduct-service-base.ts create mode 100644 app_AssetManagement/src/service/eamproduct/eamproduct-service.ts create mode 100644 app_AssetManagement/src/service/eamservice-level/eamservice-level-service-base.ts create mode 100644 app_AssetManagement/src/service/eamservice-level/eamservice-level-service.ts create mode 100644 app_AssetManagement/src/service/eamspare-parts-group/eamspare-parts-group-service-base.ts create mode 100644 app_AssetManagement/src/service/eamspare-parts-group/eamspare-parts-group-service.ts create mode 100644 app_AssetManagement/src/service/eamspare-parts-pro/eamspare-parts-pro-service-base.ts create mode 100644 app_AssetManagement/src/service/eamspare-parts-pro/eamspare-parts-pro-service.ts create mode 100644 app_AssetManagement/src/service/eamwork-order/eamwork-order-service-base.ts create mode 100644 app_AssetManagement/src/service/eamwork-order/eamwork-order-service.ts create mode 100644 app_AssetManagement/src/service/eamwostate/eamwostate-service-base.ts create mode 100644 app_AssetManagement/src/service/eamwostate/eamwostate-service.ts create mode 100644 app_AssetManagement/src/service/eamwotype/eamwotype-service-base.ts create mode 100644 app_AssetManagement/src/service/eamwotype/eamwotype-service.ts create mode 100644 app_AssetManagement/src/service/entity-service-register.ts create mode 100644 app_AssetManagement/src/service/entity-service.ts create mode 100644 app_AssetManagement/src/service/woorigin/woorigin-service-base.ts create mode 100644 app_AssetManagement/src/service/woorigin/woorigin-service.ts create mode 100644 app_AssetManagement/src/shims-tsx.d.ts create mode 100644 app_AssetManagement/src/shims-vue.d.ts create mode 100644 app_AssetManagement/src/store/actions.ts create mode 100644 app_AssetManagement/src/store/api/api.ts create mode 100644 app_AssetManagement/src/store/getters.ts create mode 100644 app_AssetManagement/src/store/index.ts create mode 100644 app_AssetManagement/src/store/modules/auth-resource/actions.ts create mode 100644 app_AssetManagement/src/store/modules/auth-resource/getters.ts create mode 100644 app_AssetManagement/src/store/modules/auth-resource/index.ts create mode 100644 app_AssetManagement/src/store/modules/auth-resource/mutations.ts create mode 100644 app_AssetManagement/src/store/modules/auth-resource/state.ts create mode 100644 app_AssetManagement/src/store/modules/view-action/actions.ts create mode 100644 app_AssetManagement/src/store/modules/view-action/getters.ts create mode 100644 app_AssetManagement/src/store/modules/view-action/index.ts create mode 100644 app_AssetManagement/src/store/modules/view-action/mutations.ts create mode 100644 app_AssetManagement/src/store/modules/view-action/state.ts create mode 100644 app_AssetManagement/src/store/mutations.ts create mode 100644 app_AssetManagement/src/store/state.ts create mode 100644 app_AssetManagement/src/studio-core/components/app-breadcrumb/app-breadcrumb.less create mode 100644 app_AssetManagement/src/studio-core/components/app-breadcrumb/app-breadcrumb.tsx create mode 100644 app_AssetManagement/src/studio-core/components/app-header-menus/app-header-menus.less create mode 100644 app_AssetManagement/src/studio-core/components/app-header-menus/app-header-menus.tsx create mode 100644 app_AssetManagement/src/studio-core/components/exp-control-layout/exp-control-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/exp-control-layout/exp-control-layout.tsx create mode 100644 app_AssetManagement/src/studio-core/components/html-container/html-container.vue create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-bottom-exp/app-content-bottom-exp-view-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-bottom-exp/app-content-bottom-exp.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-bottom-exp/app-content-bottom-exp.tsx create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-left-exp/app-content-left-exp.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-left-exp/app-content-left-exp.tsx create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-left-nav-menu/app-content-left-nav-menu.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content-left-nav-menu/app-content-left-nav-menu.tsx create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content/app-content.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-content/app-content.tsx create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-footer/app-footer.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-footer/app-footer.tsx create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-header/app-header.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-header/app-header.tsx create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-layout/app-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/layout/app-layout/app-layout.tsx create mode 100644 app_AssetManagement/src/studio-core/components/menu-icon/menu-icon.less create mode 100644 app_AssetManagement/src/studio-core/components/menu-icon/menu-icon.tsx create mode 100644 app_AssetManagement/src/studio-core/components/studio-embed-view-style2/studio-embed-view-style2-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-embed-view-style2/studio-embed-view-style2.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-embed-view-style2/studio-embed-view-style2.tsx create mode 100644 app_AssetManagement/src/studio-core/components/studio-embed-view/studio-embed-view-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-embed-view/studio-embed-view.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-embed-view/studio-embed-view.tsx create mode 100644 app_AssetManagement/src/studio-core/components/studio-view-style2/studio-view-style2-base.tsx create mode 100644 app_AssetManagement/src/studio-core/components/studio-view-style2/studio-view-style2-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-view-style2/studio-view-style2.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-view-style2/studio-view-style2.tsx create mode 100644 app_AssetManagement/src/studio-core/components/studio-view/studio-view-base.tsx create mode 100644 app_AssetManagement/src/studio-core/components/studio-view/studio-view-layout.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-view/studio-view.less create mode 100644 app_AssetManagement/src/studio-core/components/studio-view/studio-view.tsx create mode 100644 app_AssetManagement/src/studio-core/components/user-info/user-info.less create mode 100644 app_AssetManagement/src/studio-core/components/user-info/user-info.tsx create mode 100644 app_AssetManagement/src/studio-core/components/view-config-actions/view-config-actions.less create mode 100644 app_AssetManagement/src/studio-core/components/view-config-actions/view-config-actions.tsx create mode 100644 app_AssetManagement/src/studio-core/components/view-toolbar/view-toolbar.less create mode 100644 app_AssetManagement/src/studio-core/components/view-toolbar/view-toolbar.tsx create mode 100644 app_AssetManagement/src/studio-core/core/StudioActionController.tsx create mode 100644 app_AssetManagement/src/studio-core/decorators/SingletonMode.ts create mode 100644 app_AssetManagement/src/studio-core/decorators/VueLifeCycleProcessing.ts create mode 100644 app_AssetManagement/src/studio-core/decorators/index.ts create mode 100644 app_AssetManagement/src/studio-core/decorators/service/ServiceData.ts create mode 100644 app_AssetManagement/src/studio-core/decorators/service/ServiceInjector.ts create mode 100644 app_AssetManagement/src/studio-core/decorators/service/ServiceProvide.ts create mode 100644 app_AssetManagement/src/studio-core/directives/notification-signal/notification-signal.less create mode 100644 app_AssetManagement/src/studio-core/directives/notification-signal/notification-signal.tsx create mode 100644 app_AssetManagement/src/studio-core/global/index.ts create mode 100644 app_AssetManagement/src/studio-core/index.ts create mode 100644 app_AssetManagement/src/studio-core/interface/LayoutState.ts create mode 100644 app_AssetManagement/src/studio-core/interface/ToolbarItem.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/acc-send-util.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/app-communications-center.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/interface.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message-type/base/message-type-base.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message-type/command/command-create.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message-type/command/command-remove.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message-type/command/command-update.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message-type/message-command.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message-type/message-console.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message/acc-central-message.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message/acc-current-message.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message/acc-system-message.ts create mode 100644 app_AssetManagement/src/studio-core/message-center/message/base/acc-message-base.ts create mode 100644 app_AssetManagement/src/studio-core/service/FooterItemsService.ts create mode 100644 app_AssetManagement/src/studio-core/service/TextCopy.ts create mode 100644 app_AssetManagement/src/studio-core/service/UIStateService.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-context-store/AppContextStore.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-context-store/AppContextStoreBase.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-nav-history/AppNavHistory.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-nav-history/AppNavHistoryBase.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-service/AppService.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-service/AppServiceBase.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-view-store/AppViewStore.ts create mode 100644 app_AssetManagement/src/studio-core/service/app-view-store/AppViewStoreBase.ts create mode 100644 app_AssetManagement/src/studio-core/types/index.d.ts create mode 100644 app_AssetManagement/src/studio-core/utils/js-basic-extension.ts create mode 100644 app_AssetManagement/src/studio-core/utils/studio-drawer/studio-drawer.less create mode 100644 app_AssetManagement/src/studio-core/utils/studio-drawer/studio-drawer.tsx create mode 100644 app_AssetManagement/src/studio-core/utils/timer-util.ts create mode 100644 app_AssetManagement/src/studio-core/view/CalendarExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/CalendarView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/CalendarViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ChartView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ChartViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/DashboardView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/DashboardViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/DataView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/DataViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/DataViewExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/EditView2Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/EditView3Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/EditView4Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/EditView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/EditViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/FormPickupDataViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/GanttView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/GanttViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/GridExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/GridView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/GridViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/IndexPickupDataViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/IndexViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/KanBanViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ListExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ListView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ListViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/MDViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/MEditView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/MPickupViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/OptionViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/PickupGridViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/PickupTreeViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/PickupView3Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/PickupViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/PortalViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/TabExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/TabFormView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/TreeExpViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/TreeGridExViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/TreeView9Base.tsx create mode 100644 app_AssetManagement/src/studio-core/view/TreeViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/ViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/view/WizardViewBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/ControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/DataViewExpBarControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/EditFormControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/ExpControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/FormControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/GridControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/GridExpBarControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/ListControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/MDControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/MainControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/PanelControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/SearchFormControlBase.tsx create mode 100644 app_AssetManagement/src/studio-core/widgets/TabExpPanelControlBase.tsx create mode 100644 app_AssetManagement/src/styles/default.less create mode 100644 app_AssetManagement/src/styles/user.less create mode 100644 app_AssetManagement/src/styles/var.css create mode 100644 app_AssetManagement/src/styles/vue-transition.less create mode 100644 app_AssetManagement/src/template.html create mode 100644 app_AssetManagement/src/theme/app-blue-dark.less create mode 100644 app_AssetManagement/src/theme/app-dark-white.less create mode 100644 app_AssetManagement/src/theme/app-dark.less create mode 100644 app_AssetManagement/src/theme/app-light.less create mode 100644 app_AssetManagement/src/uiservice/eamapply-state-model-line/eamapply-state-model-line-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply-state-model-line/eamapply-state-model-line-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply-state/eamapply-state-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply-state/eamapply-state-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply-type/eamapply-type-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply-type/eamapply-type-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply/eamapply-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamapply/eamapply-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-parts-group/eamasset-parts-group-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-parts-group/eamasset-parts-group-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-state-model-line/eamasset-state-model-line-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-state-model-line/eamasset-state-model-line-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-state-model/eamasset-state-model-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-state-model/eamasset-state-model-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-state/eamasset-state-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-state/eamasset-state-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-type/eamasset-type-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset-type/eamasset-type-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset/eamasset-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamasset/eamasset-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamdocument-type/eamdocument-type-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamdocument-type/eamdocument-type-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamdocument/eamdocument-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamdocument/eamdocument-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-state-model-line/eamlocation-state-model-line-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-state-model-line/eamlocation-state-model-line-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-state-model/eamlocation-state-model-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-state-model/eamlocation-state-model-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-state/eamlocation-state-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-state/eamlocation-state-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-type/eamlocation-type-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation-type/eamlocation-type-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation/eamlocation-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamlocation/eamlocation-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eammonitor-point/eammonitor-point-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eammonitor-point/eammonitor-point-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan-cdt/eamplan-cdt-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan-cdt/eamplan-cdt-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan-line/eamplan-line-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan-line/eamplan-line-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan-schedule/eamplan-schedule-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan-schedule/eamplan-schedule-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan/eamplan-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamplan/eamplan-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamproduct/eamproduct-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamproduct/eamproduct-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamservice-level/eamservice-level-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamservice-level/eamservice-level-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamspare-parts-group/eamspare-parts-group-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamspare-parts-group/eamspare-parts-group-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamspare-parts-pro/eamspare-parts-pro-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamspare-parts-pro/eamspare-parts-pro-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamwork-order/eamwork-order-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamwork-order/eamwork-order-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamwostate/eamwostate-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamwostate/eamwostate-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/eamwotype/eamwotype-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/eamwotype/eamwotype-ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/ui-service-register.ts create mode 100644 app_AssetManagement/src/uiservice/ui-service.ts create mode 100644 app_AssetManagement/src/uiservice/woorigin/woorigin-ui-service-base.ts create mode 100644 app_AssetManagement/src/uiservice/woorigin/woorigin-ui-service.ts create mode 100644 app_AssetManagement/src/user-default-register.ts create mode 100644 app_AssetManagement/src/user-register.ts create mode 100644 app_AssetManagement/src/utils/app-drawer/app-drawer.less create mode 100644 app_AssetManagement/src/utils/app-drawer/app-drawer.ts create mode 100644 app_AssetManagement/src/utils/app-drawer/app-drawer.vue create mode 100644 app_AssetManagement/src/utils/app-modal/app-modal.less create mode 100644 app_AssetManagement/src/utils/app-modal/app-modal.ts create mode 100644 app_AssetManagement/src/utils/app-modal/app-modal.vue create mode 100644 app_AssetManagement/src/utils/app-popover/app-popover.less create mode 100644 app_AssetManagement/src/utils/app-popover/app-popover.tsx create mode 100644 app_AssetManagement/src/utils/auth-guard/auth-guard.ts create mode 100644 app_AssetManagement/src/utils/decorators/errorlog.ts create mode 100644 app_AssetManagement/src/utils/dom/dom.ts create mode 100644 app_AssetManagement/src/utils/export/export.ts create mode 100644 app_AssetManagement/src/utils/export2Excel/Export2Excel.js create mode 100644 app_AssetManagement/src/utils/export2Excel/Export2Zip.js create mode 100644 app_AssetManagement/src/utils/http/http.ts create mode 100644 app_AssetManagement/src/utils/index.ts create mode 100644 app_AssetManagement/src/utils/interceptor/interceptor.ts create mode 100644 app_AssetManagement/src/utils/load-app-data/load-app-data.ts create mode 100644 app_AssetManagement/src/utils/print/index.js create mode 100644 app_AssetManagement/src/utils/print/packages/print.js create mode 100644 app_AssetManagement/src/utils/print/packages/printarea.js create mode 100644 app_AssetManagement/src/utils/print/packages/vPrint.js create mode 100644 app_AssetManagement/src/utils/studio-action/StudioActionUtil.ts create mode 100644 app_AssetManagement/src/utils/types/README.md create mode 100644 app_AssetManagement/src/utils/types/app-drawer.d.ts create mode 100644 app_AssetManagement/src/utils/types/app-modal.d.ts create mode 100644 app_AssetManagement/src/utils/types/app-popover.d.ts create mode 100644 app_AssetManagement/src/utils/types/code-list.d.ts create mode 100644 app_AssetManagement/src/utils/types/export.d.ts create mode 100644 app_AssetManagement/src/utils/types/export2Excel.d.ts create mode 100644 app_AssetManagement/src/utils/types/http.d.ts create mode 100644 app_AssetManagement/src/utils/types/index.d.ts create mode 100644 app_AssetManagement/src/utils/types/other.d.ts create mode 100644 app_AssetManagement/src/utils/types/path-to-regexp.d.ts create mode 100644 app_AssetManagement/src/utils/types/print.d.ts create mode 100644 app_AssetManagement/src/utils/types/tab-page-exp.d.ts create mode 100644 app_AssetManagement/src/utils/types/uiaction-tool.d.ts create mode 100644 app_AssetManagement/src/utils/types/verify.d.ts create mode 100644 app_AssetManagement/src/utils/types/view-tool.d.ts create mode 100644 app_AssetManagement/src/utils/uiaction-tool/uiaction-tool.ts create mode 100644 app_AssetManagement/src/utils/util/util.ts create mode 100644 app_AssetManagement/src/utils/verify/verify.ts create mode 100644 app_AssetManagement/src/utils/view-tool/view-tool.ts create mode 100644 app_AssetManagement/src/utils/xml-writer/xml-writer.ts create mode 100644 app_AssetManagement/src/utilservice/util-service-register.ts create mode 100644 app_AssetManagement/src/utilservice/util-service.ts create mode 100644 app_AssetManagement/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-base.tsx create mode 100644 app_AssetManagement/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-model.ts create mode 100644 app_AssetManagement/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu-service.ts create mode 100644 app_AssetManagement/src/widgets/app/app-index-view-appmenu/app-index-view-appmenu.vue create mode 100644 app_AssetManagement/src/widgets/control-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply-type/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamapply-type/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamapply-type/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamapply-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamapply-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamapply-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/board-001-dashboard/board-001-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/board-001-dashboard/board-001-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/board-001-dashboard/board-001-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/board-001-dashboard/board-001-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamapply/board-001-dashboard/board-001-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamapply/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/ef-001-form/ef-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/ef-001-form/ef-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/ef-001-form/ef-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/ef-001-form/ef-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamapply/ef-001-form/ef-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/grid-001-grid/grid-001-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/grid-001-grid/grid-001-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/grid-001-grid/grid-001-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/grid-001-grid/grid-001-grid.html create mode 100644 app_AssetManagement/src/widgets/eamapply/grid-001-grid/grid-001-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/if-001-form/if-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/if-001-form/if-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/if-001-form/if-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/if-001-form/if-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamapply/if-001-form/if-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamapply/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamapply/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamapply/part-v-001-portlet/part-v-001-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamapply/part-v-001-portlet/part-v-001-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/part-v-001-portlet/part-v-001-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamapply/part-v-001-portlet/part-v-001-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamapply/part-v-001-portlet/part-v-001-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset-parts-group/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model-line/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamasset-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamasset-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/board-001-dashboard/board-001-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/board-001-dashboard/board-001-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/board-001-dashboard/board-001-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/board-001-dashboard/board-001-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/board-001-dashboard/board-001-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/if-001-form/if-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/if-001-form/if-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/if-001-form/if-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/if-001-form/if-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/if-001-form/if-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/part-v-001-portlet/part-v-001-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/part-v-001-portlet/part-v-001-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/part-v-001-portlet/part-v-001-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/part-v-001-portlet/part-v-001-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/part-v-001-portlet/part-v-001-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eamasset-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamasset-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/child-grid-grid/child-grid-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/child-grid-grid/child-grid-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/child-grid-grid/child-grid-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/child-grid-grid/child-grid-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset/child-grid-grid/child-grid-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamasset/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-main-form/info-main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-main-form/info-main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-main-form/info-main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-main-form/info-main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-main-form/info-main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel4-tabviewpanel/info-viewtabviewpanel4-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel4-tabviewpanel/info-viewtabviewpanel4-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel4-tabviewpanel/info-viewtabviewpanel4-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel4-tabviewpanel/info-viewtabviewpanel4-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel4-tabviewpanel/info-viewtabviewpanel4-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel5-tabviewpanel/info-viewtabviewpanel5-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel5-tabviewpanel/info-viewtabviewpanel5-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel5-tabviewpanel/info-viewtabviewpanel5-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel5-tabviewpanel/info-viewtabviewpanel5-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/info-viewtabviewpanel5-tabviewpanel/info-viewtabviewpanel5-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamasset/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/main-info-dashboard/main-info-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/main-info-dashboard/main-info-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/main-info-dashboard/main-info-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/main-info-dashboard/main-info-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamasset/main-info-dashboard/main-info-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamasset/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamasset/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/quick-create-form/quick-create-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/quick-create-form/quick-create-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/quick-create-form/quick-create-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/quick-create-form/quick-create-form.html create mode 100644 app_AssetManagement/src/widgets/eamasset/quick-create-form/quick-create-form.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar.html create mode 100644 app_AssetManagement/src/widgets/eamasset/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar.vue create mode 100644 app_AssetManagement/src/widgets/eamasset/view-mian-info-portlet/view-mian-info-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamasset/view-mian-info-portlet/view-mian-info-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/view-mian-info-portlet/view-mian-info-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamasset/view-mian-info-portlet/view-mian-info-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamasset/view-mian-info-portlet/view-mian-info-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamdocument-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamdocument/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamdocument/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model-line/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamlocation-state-model/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamlocation-state/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamlocation-type/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/child-grid-grid/child-grid-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/child-grid-grid/child-grid-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/child-grid-grid/child-grid-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/child-grid-grid/child-grid-grid.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/child-grid-grid/child-grid-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/edit-main-form/edit-main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/edit-main-form/edit-main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/edit-main-form/edit-main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/edit-main-form/edit-main-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/edit-main-form/edit-main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/ef-001-form/ef-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/ef-001-form/ef-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/ef-001-form/ef-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/ef-001-form/ef-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/ef-001-form/ef-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-main-form/info-main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-main-form/info-main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-main-form/info-main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-main-form/info-main-form.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-main-form/info-main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-asset-tree-treeview/location-asset-tree-treeview-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-asset-tree-treeview/location-asset-tree-treeview-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-asset-tree-treeview/location-asset-tree-treeview-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-asset-tree-treeview/location-asset-tree-treeview.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-asset-tree-treeview/location-asset-tree-treeview.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-tree-treeview/location-tree-treeview-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-tree-treeview/location-tree-treeview-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-tree-treeview/location-tree-treeview-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-tree-treeview/location-tree-treeview.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/location-tree-treeview/location-tree-treeview.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-info-dashboard/main-info-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-info-dashboard/main-info-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-info-dashboard/main-info-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-info-dashboard/main-info-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/main-info-dashboard/main-info-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamlocation/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/tree-exp-viewtreeexpbar-treeexpbar/tree-exp-viewtreeexpbar-treeexpbar.vue create mode 100644 app_AssetManagement/src/widgets/eamlocation/view-main-info-portlet/view-main-info-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamlocation/view-main-info-portlet/view-main-info-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/view-main-info-portlet/view-main-info-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamlocation/view-main-info-portlet/view-main-info-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamlocation/view-main-info-portlet/view-main-info-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eammonitor-point/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamplan-line/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan-line/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan-line/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan-line/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamplan-line/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamplan-line/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/board-001-dashboard/board-001-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/board-001-dashboard/board-001-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/board-001-dashboard/board-001-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/board-001-dashboard/board-001-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamplan/board-001-dashboard/board-001-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamplan/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/ef-001-form/ef-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/ef-001-form/ef-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/ef-001-form/ef-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/ef-001-form/ef-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamplan/ef-001-form/ef-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/grid-001-grid/grid-001-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/grid-001-grid/grid-001-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/grid-001-grid/grid-001-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/grid-001-grid/grid-001-grid.html create mode 100644 app_AssetManagement/src/widgets/eamplan/grid-001-grid/grid-001-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/if-001-form/if-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/if-001-form/if-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/if-001-form/if-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/if-001-form/if-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamplan/if-001-form/if-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamplan/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamplan/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamplan/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/part-v-001-portlet/part-v-001-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/part-v-001-portlet/part-v-001-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/part-v-001-portlet/part-v-001-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/part-v-001-portlet/part-v-001-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamplan/part-v-001-portlet/part-v-001-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eamplan/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamplan/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamplan/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamplan/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamplan/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamproduct/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamproduct/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamproduct/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamproduct/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamproduct/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamproduct/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamproduct/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamproduct/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamproduct/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamproduct/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamproduct/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamproduct/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamproduct/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamproduct/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamproduct/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamproduct/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamservice-level/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamservice-level/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamservice-level/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamservice-level/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamservice-level/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamservice-level/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamservice-level/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamservice-level/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamservice-level/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/board-001-dashboard/board-001-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/board-001-dashboard/board-001-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/board-001-dashboard/board-001-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/board-001-dashboard/board-001-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/board-001-dashboard/board-001-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/if-001-form/if-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/if-001-form/if-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/if-001-form/if-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/if-001-form/if-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/if-001-form/if-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabexppanel-tabexppanel/info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel-tabviewpanel/info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel2-tabviewpanel/info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/info-viewtabviewpanel3-tabviewpanel/info-viewtabviewpanel3-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/part-v-001-portlet/part-v-001-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/part-v-001-portlet/part-v-001-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/part-v-001-portlet/part-v-001-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/part-v-001-portlet/part-v-001-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/part-v-001-portlet/part-v-001-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-group/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamspare-parts-pro/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-ef-form/data-panel-ef-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-ef-form/data-panel-ef-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-ef-form/data-panel-ef-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-ef-form/data-panel-ef-form.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-ef-form/data-panel-ef-form.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-if-form/data-panel-if-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-if-form/data-panel-if-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-if-form/data-panel-if-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-if-form/data-panel-if-form.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/data-panel-if-form/data-panel-if-form.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/ef-001-form/ef-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/ef-001-form/ef-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/ef-001-form/ef-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/ef-001-form/ef-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/ef-001-form/ef-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-001-grid/grid-001-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-001-grid/grid-001-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-001-grid/grid-001-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-001-grid/grid-001-grid.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-001-grid/grid-001-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-002-grid/grid-002-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-002-grid/grid-002-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-002-grid/grid-002-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-002-grid/grid-002-grid.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-002-grid/grid-002-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-003-grid/grid-003-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-003-grid/grid-003-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-003-grid/grid-003-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-003-grid/grid-003-grid.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/grid-003-grid/grid-003-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/if-001-form/if-001-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/if-001-form/if-001-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/if-001-form/if-001-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/if-001-form/if-001-form.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/if-001-form/if-001-form.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-summary-dashboard/master-summary-dashboard-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-summary-dashboard/master-summary-dashboard-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-summary-dashboard/master-summary-dashboard-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-summary-dashboard/master-summary-dashboard.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-summary-dashboard/master-summary-dashboard.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabexppanel-tabexppanel/master-tab-info-viewtabexppanel-tabexppanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabexppanel-tabexppanel/master-tab-info-viewtabexppanel-tabexppanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabexppanel-tabexppanel/master-tab-info-viewtabexppanel-tabexppanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabexppanel-tabexppanel/master-tab-info-viewtabexppanel-tabexppanel.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabexppanel-tabexppanel/master-tab-info-viewtabexppanel-tabexppanel.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel-tabviewpanel/master-tab-info-viewtabviewpanel-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel-tabviewpanel/master-tab-info-viewtabviewpanel-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel-tabviewpanel/master-tab-info-viewtabviewpanel-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel-tabviewpanel/master-tab-info-viewtabviewpanel-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel-tabviewpanel/master-tab-info-viewtabviewpanel-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel2-tabviewpanel/master-tab-info-viewtabviewpanel2-tabviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel2-tabviewpanel/master-tab-info-viewtabviewpanel2-tabviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel2-tabviewpanel/master-tab-info-viewtabviewpanel2-tabviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel2-tabviewpanel/master-tab-info-viewtabviewpanel2-tabviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/master-tab-info-viewtabviewpanel2-tabviewpanel/master-tab-info-viewtabviewpanel2-tabviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/part-v-001-portlet/part-v-001-portlet-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/part-v-001-portlet/part-v-001-portlet-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/part-v-001-portlet/part-v-001-portlet-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/part-v-001-portlet/part-v-001-portlet.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/part-v-001-portlet/part-v-001-portlet.vue create mode 100644 app_AssetManagement/src/widgets/eamwork-order/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwork-order/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwork-order/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamwork-order/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamwork-order/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/eamwotype/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwotype/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/eamwotype/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-form/main-form-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-form/main-form-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-form/main-form-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-form/main-form.html create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-form/main-form.vue create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/eamwotype/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/eamwotype/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/eamwotype/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/eamwotype/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/eamwotype/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/eamwotype/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/src/widgets/woorigin/default-searchform/default-searchform-base.tsx create mode 100644 app_AssetManagement/src/widgets/woorigin/default-searchform/default-searchform-model.ts create mode 100644 app_AssetManagement/src/widgets/woorigin/default-searchform/default-searchform-service.ts create mode 100644 app_AssetManagement/src/widgets/woorigin/default-searchform/default-searchform.html create mode 100644 app_AssetManagement/src/widgets/woorigin/default-searchform/default-searchform.vue create mode 100644 app_AssetManagement/src/widgets/woorigin/main-grid/main-grid-base.tsx create mode 100644 app_AssetManagement/src/widgets/woorigin/main-grid/main-grid-model.ts create mode 100644 app_AssetManagement/src/widgets/woorigin/main-grid/main-grid-service.ts create mode 100644 app_AssetManagement/src/widgets/woorigin/main-grid/main-grid.html create mode 100644 app_AssetManagement/src/widgets/woorigin/main-grid/main-grid.vue create mode 100644 app_AssetManagement/src/widgets/woorigin/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-base.tsx create mode 100644 app_AssetManagement/src/widgets/woorigin/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-model.ts create mode 100644 app_AssetManagement/src/widgets/woorigin/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel-service.ts create mode 100644 app_AssetManagement/src/widgets/woorigin/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.html create mode 100644 app_AssetManagement/src/widgets/woorigin/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.less create mode 100644 app_AssetManagement/src/widgets/woorigin/pickup-viewpickupviewpanel-pickupviewpanel/pickup-viewpickupviewpanel-pickupviewpanel.vue create mode 100644 app_AssetManagement/tsconfig.json create mode 100644 app_AssetManagement/tslint.json create mode 100644 app_AssetManagement/vue.config.js create mode 100644 app_AssetManagement/yarn.lock create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/pom.xml create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/docker/Dockerfile create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/docker/assetmanagement-app-assetmanagement.yaml create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/java/cn/ibizlab/assetmanagement/assetmanagement/AssetManagementApplication.java create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/java/cn/ibizlab/assetmanagement/assetmanagement/config/AssetManagementSecurityConfig.java create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/resources/application-assetmanagement-dev.yml create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/resources/application-assetmanagement-prod.yml create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/resources/application.yml create mode 100644 assetmanagement-app/assetmanagement-app-assetmanagement/src/main/resources/logback-spring.xml create mode 100644 assetmanagement-app/pom.xml create mode 100644 assetmanagement-boot/pom.xml create mode 100644 assetmanagement-boot/src/main/docker/mysql.yml create mode 100644 assetmanagement-boot/src/main/docker/nacos.yml create mode 100644 assetmanagement-boot/src/main/docker/redis.yml create mode 100644 assetmanagement-boot/src/main/java/cn/ibizlab/assetmanagement/DevBootApplication.java create mode 100644 assetmanagement-boot/src/main/java/cn/ibizlab/assetmanagement/config/DevBootAutoConfiguration.java create mode 100644 assetmanagement-boot/src/main/java/cn/ibizlab/assetmanagement/config/DevBootSecurityConfig.java create mode 100644 assetmanagement-boot/src/main/resources/application-dev.yml create mode 100644 assetmanagement-boot/src/main/resources/application.yml create mode 100644 assetmanagement-boot/src/main/resources/logback-spring.xml create mode 100644 assetmanagement-core/pom.xml create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/domain/EAMApply.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/domain/EAMApplyState.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/domain/EAMApplyStateModel.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/domain/EAMApplyStateModelLine.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/domain/EAMApplyType.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/filter/EAMApplySearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/filter/EAMApplyStateModelLineSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/filter/EAMApplyStateModelSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/filter/EAMApplyStateSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/filter/EAMApplyTypeSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/mapper/EAMApplyMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/mapper/EAMApplyStateMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/mapper/EAMApplyStateModelLineMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/mapper/EAMApplyStateModelMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/mapper/EAMApplyTypeMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/mapping/EAMApplyInheritMapping.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/IEAMApplyService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/IEAMApplyStateModelLineService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/IEAMApplyStateModelService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/IEAMApplyStateService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/IEAMApplyTypeService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/impl/EAMApplyServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/impl/EAMApplyStateModelLineServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/impl/EAMApplyStateModelServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/impl/EAMApplyStateServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/apply/service/impl/EAMApplyTypeServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMAsset.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMAssetPartsGroup.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMAssetState.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMAssetStateModel.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMAssetStateModelLine.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMAssetType.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMDocument.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMDocumentType.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMPRODUCT.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMSparePartsGroup.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/domain/EAMSparePartsPRO.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMAssetPartsGroupSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMAssetSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMAssetStateModelLineSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMAssetStateModelSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMAssetStateSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMAssetTypeSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMDocumentSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMDocumentTypeSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMPRODUCTSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMSparePartsGroupSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/filter/EAMSparePartsPROSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMAssetMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMAssetPartsGroupMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMAssetStateMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMAssetStateModelLineMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMAssetStateModelMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMAssetTypeMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMDocumentMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMDocumentTypeMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMPRODUCTMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMSparePartsGroupMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/mapper/EAMSparePartsPROMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMAssetPartsGroupService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMAssetService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMAssetStateModelLineService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMAssetStateModelService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMAssetStateService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMAssetTypeService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMDocumentService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMDocumentTypeService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMPRODUCTService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMSparePartsGroupService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/IEAMSparePartsPROService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMAssetPartsGroupServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMAssetServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMAssetStateModelLineServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMAssetStateModelServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMAssetStateServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMAssetTypeServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMDocumentServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMDocumentTypeServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMPRODUCTServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMSparePartsGroupServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/asset/service/impl/EAMSparePartsPROServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/domain/EAMLocation.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/domain/EAMLocationState.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/domain/EAMLocationStateModel.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/domain/EAMLocationStateModelLine.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/domain/EAMLocationType.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/filter/EAMLocationSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/filter/EAMLocationStateModelLineSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/filter/EAMLocationStateModelSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/filter/EAMLocationStateSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/filter/EAMLocationTypeSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/mapper/EAMLocationMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/mapper/EAMLocationStateMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/mapper/EAMLocationStateModelLineMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/mapper/EAMLocationStateModelMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/mapper/EAMLocationTypeMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/IEAMLocationService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/IEAMLocationStateModelLineService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/IEAMLocationStateModelService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/IEAMLocationStateService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/IEAMLocationTypeService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/impl/EAMLocationServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/impl/EAMLocationStateModelLineServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/impl/EAMLocationStateModelServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/impl/EAMLocationStateServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/location/service/impl/EAMLocationTypeServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/domain/EAMPlan.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/domain/EAMPlanCDT.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/domain/EAMPlanLine.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/domain/EAMPlanSchedule.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/filter/EAMPlanCDTSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/filter/EAMPlanLineSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/filter/EAMPlanScheduleSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/filter/EAMPlanSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/mapper/EAMPlanCDTMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/mapper/EAMPlanLineMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/mapper/EAMPlanMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/mapper/EAMPlanScheduleMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/mapping/EAMPlanInheritMapping.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/IEAMPlanCDTService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/IEAMPlanLineService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/IEAMPlanScheduleService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/IEAMPlanService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/impl/EAMPlanCDTServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/impl/EAMPlanLineServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/impl/EAMPlanScheduleServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/plan/service/impl/EAMPlanServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/util/config/DroolsAutoConfiguration.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/util/config/LiquibaseConfiguration.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/util/config/MongoDBConfig.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/util/config/MybatisAutoConfiguration.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/util/config/MybatisConfiguration.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/util/config/XxlJobConfig.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMMonitorPoint.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMServiceLevel.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMWOState.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMWOStateModel.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMWOStateModelLine.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMWOType.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/EAMWorkOrder.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/domain/WOOrigin.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMMonitorPointSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMServiceLevelSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMWOStateModelLineSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMWOStateModelSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMWOStateSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMWOTypeSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/EAMWorkOrderSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/filter/WOOriginSearchContext.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMMonitorPointMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMServiceLevelMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMWOStateMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMWOStateModelLineMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMWOStateModelMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMWOTypeMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/EAMWorkOrderMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/mapper/WOOriginMapper.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMMonitorPointService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMServiceLevelService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMWOStateModelLineService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMWOStateModelService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMWOStateService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMWOTypeService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IEAMWorkOrderService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/IWOOriginService.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMMonitorPointServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMServiceLevelServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMWOStateModelLineServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMWOStateModelServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMWOStateServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMWOTypeServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/EAMWorkOrderServiceImpl.java create mode 100644 assetmanagement-core/src/main/java/cn/ibizlab/assetmanagement/core/workorder/service/impl/WOOriginServiceImpl.java create mode 100644 assetmanagement-core/src/main/resources/liquibase/changelog/20190625112530_init_ibizsys.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/changelog/20200601200530_init_ibzcfg.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/changelog/20200709124030_init_ibzaudit.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/config/init_h2.sql create mode 100644 assetmanagement-core/src/main/resources/liquibase/empty.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/h2.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/h2_table.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/master.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/master_table.xml create mode 100644 assetmanagement-core/src/main/resources/liquibase/rollback/README.md create mode 100644 assetmanagement-core/src/main/resources/liquibase/view.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/apply/eamapply/EAMApplyMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/apply/eamapplystate/EAMApplyStateMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/apply/eamapplystatemodel/EAMApplyStateModelMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/apply/eamapplystatemodelline/EAMApplyStateModelLineMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/apply/eamapplytype/EAMApplyTypeMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamasset/EAMAssetMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamassetpartsgroup/EAMAssetPartsGroupMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamassetstate/EAMAssetStateMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamassetstatemodel/EAMAssetStateModelMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamassetstatemodelline/EAMAssetStateModelLineMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamassettype/EAMAssetTypeMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamdocument/EAMDocumentMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamdocumenttype/EAMDocumentTypeMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamproduct/EAMPRODUCTMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamsparepartsgroup/EAMSparePartsGroupMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/asset/eamsparepartspro/EAMSparePartsPROMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/location/eamlocation/EAMLocationMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/location/eamlocationstate/EAMLocationStateMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/location/eamlocationstatemodel/EAMLocationStateModelMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/location/eamlocationstatemodelline/EAMLocationStateModelLineMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/location/eamlocationtype/EAMLocationTypeMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/plan/eamplan/EAMPlanMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/plan/eamplancdt/EAMPlanCDTMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/plan/eamplanline/EAMPlanLineMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/plan/eamplanschedule/EAMPlanScheduleMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eammonitorpoint/EAMMonitorPointMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eamservicelevel/EAMServiceLevelMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eamworkorder/EAMWorkOrderMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eamwostate/EAMWOStateMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eamwostatemodel/EAMWOStateModelMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eamwostatemodelline/EAMWOStateModelLineMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/eamwotype/EAMWOTypeMapper.xml create mode 100644 assetmanagement-core/src/main/resources/mapper/workorder/woorigin/WOOriginMapper.xml create mode 100644 assetmanagement-core/src/main/resources/permission/systemResource.json create mode 100644 assetmanagement-dependencies/pom.xml create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/pom.xml create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/docker/Dockerfile create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/docker/assetmanagement-provider-assetapi.yaml create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/config/AssetApiAutoConfiguration.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/config/AssetApiRestConfiguration.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/config/AssetApiSecurityConfig.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/config/AssetApiServiceProperties.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMApplyDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMApplyStateDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMApplyStateModelLineDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMApplyTypeDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMAssetDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMAssetPartsGroupDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMAssetStateDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMAssetStateModelDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMAssetStateModelLineDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMAssetTypeDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMDocumentDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMDocumentTypeDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMLocationDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMLocationStateDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMLocationStateModelDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMLocationStateModelLineDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMLocationTypeDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMMonitorPointDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMPRODUCTDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMPlanCDTDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMPlanDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMPlanLineDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMPlanScheduleDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMServiceLevelDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMSparePartsGroupDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMSparePartsPRODTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMWOStateDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMWOTypeDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/EAMWorkOrderDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/dto/WOOriginDTO.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/iBizAssetManagementAssetApiApplication.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMApplyMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMApplyStateMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMApplyStateModelLineMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMApplyTypeMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMAssetMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMAssetPartsGroupMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMAssetStateMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMAssetStateModelLineMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMAssetStateModelMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMAssetTypeMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMDocumentMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMDocumentTypeMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMLocationMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMLocationStateMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMLocationStateModelLineMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMLocationStateModelMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMLocationTypeMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMMonitorPointMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMPRODUCTMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMPlanCDTMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMPlanLineMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMPlanMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMPlanScheduleMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMServiceLevelMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMSparePartsGroupMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMSparePartsPROMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMWOStateMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMWOTypeMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/EAMWorkOrderMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/mapping/WOOriginMapping.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMApplyResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMApplyStateModelLineResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMApplyStateResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMApplyTypeResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMAssetPartsGroupResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMAssetResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMAssetStateModelLineResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMAssetStateModelResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMAssetStateResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMAssetTypeResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMDocumentResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMDocumentTypeResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMLocationResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMLocationStateModelLineResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMLocationStateModelResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMLocationStateResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMLocationTypeResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMMonitorPointResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMPRODUCTResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMPlanCDTResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMPlanLineResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMPlanResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMPlanScheduleResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMServiceLevelResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMSparePartsGroupResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMSparePartsPROResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMWOStateResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMWOTypeResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/EAMWorkOrderResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/assetapi/rest/WOOriginResource.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/java/cn/ibizlab/assetmanagement/swagger/SwaggerConfiguration.java create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/resources/application-assetapi-dev.yml create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/resources/application-assetapi-prod.yml create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/resources/application.yml create mode 100644 assetmanagement-provider/assetmanagement-provider-assetapi/src/main/resources/logback-spring.xml create mode 100644 assetmanagement-provider/pom.xml create mode 100644 assetmanagement-util/pom.xml create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/annotation/Audit.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/annotation/DEField.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/annotation/VersionCheck.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/aspect/AuditAspect.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/aspect/DEFieldDefaultValueAspect.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/aspect/VersionCheckAspect.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/CaffeineCacheConfig.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/RedisCacheConfig.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/cache/CusRedisCache.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/cache/LayeringCache.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/cacheManager/CaffeineCacheManager.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/cacheManager/LayeringCacheManager.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/listener/RedisMessageListener.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/listener/RedisPublisher.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/cache/redis/CustomJacksonSerializer.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/client/IBZOUFallback.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/client/IBZOUFeignClient.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/client/IBZUAAFallback.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/client/IBZUAAFeignClient.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/client/IBZWFFallback.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/client/IBZWFFeignClient.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/DTOBase.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/DTOClient.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/EntityBase.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/EntityClient.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/EntityMP.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/EntityMongo.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/FileItem.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/IBZConfig.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/IBZDataAudit.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/IBZUSER.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/LiquibaseProp.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/domain/MappingBase.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/enums/DEFieldDefaultValueType.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/enums/DEPredefinedFieldType.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/enums/RedisChannelTopic.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/errors/BadRequestAlertException.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/errors/CustomParameterizedException.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/errors/ErrorConstants.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/errors/ExceptionTranslator.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/errors/FieldErrorVM.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/errors/InternalServerErrorException.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/filter/ISearchContext.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/filter/QueryBuildContext.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/filter/QueryFilter.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/filter/QueryWrapperContext.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/filter/SearchContextBase.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/helper/CachedBeanCopier.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/helper/DEFieldCacheMap.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/helper/DataObject.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/helper/JSR310DateConverters.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/helper/RuleUtils.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/helper/UniqueNameGenerator.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/job/PermissionSyncJob.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/mapper/IBZConfigMapper.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/mapper/IBZDataAuditMapper.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/mapper/IBZUSERMapper.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/rest/AppController.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/rest/AuthenticationController.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/rest/FileController.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthPermissionEvaluator.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthTokenUtil.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthenticationEntryPoint.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthenticationInfo.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthenticationUser.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthorizationLogin.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/AuthorizationTokenFilter.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/SimpleTokenUtil.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/SpringContextHolder.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/security/UAATokenUtil.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/AuthenticationUserService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/FileService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/IBZConfigService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/IBZDataAuditService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/IBZUAAUserService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/IBZUSERService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/IBZUSERServiceImpl.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/RemoteService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/SimpleAuditService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/SimpleFileService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/service/SimpleUserService.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/web/FeignRequestInterceptor.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/web/IBZOperationParameterReader.java create mode 100644 assetmanagement-util/src/main/java/cn/ibizlab/assetmanagement/util/web/SearchContextHandlerMethodArgumentResolver.java create mode 100644 assetmanagement-util/src/main/resources/application-eureka.yml create mode 100644 assetmanagement-util/src/main/resources/application-nacos.yml create mode 100644 assetmanagement-util/src/main/resources/application-sys.yml create mode 100644 config.xml create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d26d944 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +*volumes +*target +.settings +*node_modules +*bin +*.project +*.classpath +*.factorypath +.history +.vscode +.idea +**.iml +*.jar +*.log diff --git a/app_AssetManagement/CHANGELOG.md b/app_AssetManagement/CHANGELOG.md new file mode 100644 index 0000000..e0b7a15 --- /dev/null +++ b/app_AssetManagement/CHANGELOG.md @@ -0,0 +1,19 @@ +## 修复请参考主模板,目前于2020-08-03合并master。[链接](http://demo.ibizlab.cn/ibizr7pfstdtempl/ibizvuer7plus/blob/master/CHANGELOG.md) + +## 0.0.1-alpha.1「2020-07-15」 + +### 功能新增 + +> 首页支持视图界面样式「STYLE2」,右侧导航菜单 + 无导航分页路由模式。 +> +> 分页导航视图支持,DataPanel部件。 +> +> 表单分组支持信息锚点 +> +> 表单项支持受控模式 +> +> 编辑器「地址框(选择)」「数据选择」系列支持配置额外填充参数 + +### 其他 + +> 补充特殊配置[说明](https://www.yuque.com/docs/share/6c649a5e-3548-4c28-a523-8ab18821be47) \ No newline at end of file diff --git a/app_AssetManagement/README.md b/app_AssetManagement/README.md new file mode 100644 index 0000000..feee92d --- /dev/null +++ b/app_AssetManagement/README.md @@ -0,0 +1,183 @@ +## 前言 + +### 1. 简介 + +该web应用是基于iBiz平台提供的一套PC端前端解决方案Vue_R7【**一套基于Vue全家桶(Vue + Vue-router + Vuex)的前端框架**】生产而成,Vue_R7不仅适用于管理后台或管理系统开发,且广泛适用于B/S架构的项目开发。本文档主要介绍项目如何快速上手,成果物代码结构做一阐述,旨在能够为开发人员提供一定开发指导支持。而今框架开源,希望能有更多志同道合的伙伴参与Vue_R7的迭代 ^_^ + +### 2. 开发环境要求 + +- Node.js + +- Yarn + +- Vue Cli + +### 3. 开发技术要求 + +掌握`Vue`、`TypeScript`、`less`、`html`等技术。 + +### 4. 技术栈 + +- 前端MVVM框架:vue.js 2.6.10 + +- 路由:vue-router 3.1.3 + +- 状态管理:vue-router 3.1.3 + +- 国际化:vue-i18n 8.15.3 + +- 数据交互:axios 0.19.1 + +- UI框架:element-ui 2.13.0, view-design 4.1.0 + +- 工具库:qs, path-to-regexp, rxjs + +- 图标库:font-awesome 4.7.0 + +- 引入组件: tinymce 4.8.5 + +- 代码风格检测:eslint + + +## 快速上手 + +### 1. 开发环境 + +> 在安装使用 `Yarn` 和 `Vue Cli (3.0)` 前,务必确认 [Node.js](https://nodejs.org) 已经升级到 v4.8.0 或以上,强烈建议升级至最新版本。 +> 如果你想了解更多 `Yarn` 工具链的功能和命令,建议访问 [Yarn](https://yarnpkg.com) 了解更多。 +> 如果你想了解更多 `Vue Cli (3.0)` 工具链的功能和命令,建议访问 [Vue Cli (3.0)](https://cli.vuejs.org/) 了解更多。 + +- 访问 [Node.js](https://nodejs.org) ,根据文档安装 `Node.js`。 +- 访问 [Yarn](https://yarnpkg.com) ,根据文档安装 `Yarn`。 +- 访问 [Vue Cli (3.0)](https://cli.vuejs.org/) ,根据文档安装 `Vue Cli (3.0)`。 + +

在安装 Vue Cli (3.0) ,请使用 Yarn 模式全局安装。

+ +```bash +$ yarn global add @vue/cli +``` + +以下为 Windows 环境开发正常配置 +
+
+![开发环境信息](./imgs/getting-started/development.png) + +### 2. 安装依赖 + +打开前端项目,进入工作空间下,执行安装依赖命令 + +```bash +$ yarn install +``` + +### 3. 启动 + +在工作空间下,执行启动命令 + +```bash +$ yarn dev-serve +``` + +启动后,通过 vue.config.js 开发服务 devServer 下配置的本地启动端口号访问开发项目。
+示例: + +```bash +$ http://localhost:8111 +``` +这儿需要注意一点,此时启动的项目访问的数据是我们前端的mock数据,如需与后台直接交互,请看第4点。 + +### 4. 远程代理 + +在工作空间下,执行启动命令 + +```bash +$ yarn serve +``` + +修改远程代理文件 vue.config.js 代理地址 + +![远程代理地址](./imgs/getting-started/proxy.png) + +### 5. 打包 + +在工作空间下,执行打包命令 + +```bash +$ yarn build +``` + +打包完成,生成最终交付产物。 + +## 成果物结构 + +``` +|─ ─ app_AssetManagement +​ |─ ─ public public文件夹 +​ |─ ─ assets 静态文件夹 + |─ ─ favicon.ico 图标 +​ |─ ─ src 工程文件夹 + |─ ─ assets 静态资源 + |─ ─ codelist 动态代码表服务 + |─ ─ components 基础组件,主要包含编辑器组件和其他全局使用的组件 + |─ ─ counter 计数器服务 + |─ ─ engine 引擎文件,主要封装了内置视图的内置逻辑 + |─ ─ environments 环境文件 +​ |─ ─ interface 接口文件 +​ |─ ─ locale 多语言文件 + |─ ─ mock 模拟数据 + |─ ─ pages 视图文件夹 + |─ ─ module 模块名称 +​ |─ ─ XXX-view 视图文件夹 + |─ ─ XXX-view-base.vue 视图基类 + |─ ─ XXX-view.vue 自定义视图文件 + |─ ─ XXX-view.less 自定义视图样式文件 + ​ |─ ─ main.ts 应用主函数入口 + ​ |─ ─ page-register.ts 全局视图注册 + ​ |─ ─ router.ts 路由配置文件 + |─ ─ service 应用实体数据服务文件夹 + |─ ─ XXX 应用实体名称 + |─ ─ XXX-service-base.ts 应用实体数据服务文件 + |─ ─ XXX-service.ts 自定义应用实体数据服务文件 + |─ ─ YYY-logic-base.ts 应用实体数据处理逻辑文件 + |─ ─ YYY-logic.ts 自定义应用实体数据处理逻辑文件 + |─ ─ store 全局状态管理 + |─ ─ styles 样式文件夹 + |─ ─ default.less 默认样式 + |─ ─ user.less 用户自定义样式 + |─ ─ theme 主题文件夹 + |─ ─ uiservice 界面服务文件 + |─ ─ XXX 应用实体名称 + |─ ─ XXX-ui-service-base.ts 应用实体界面服务文件 + |─ ─ XXX-ui-service.ts 自定义应用实体界面服务文件 + |─ ─ YYY-ui-logic-base.ts 应用实体界面处理逻辑文件 + |─ ─ YYY-ui-logic.ts 自定义应用实体界面处理逻辑文件 + |─ ─ utils 工具类文件 + |─ ─ utilservice 应用功能服务 + |─ ─ widgets 部件文件夹 + |─ ─ appde 应用实体名称 +​ |─ ─ XXX 部件名称 + |─ ─ XXX-base.vue 视图基类 + |─ ─ XXX.vue 自定义部件文件 + |─ ─ XXX.less 部件样式文件 + ​ |─ ─ XXX.model.ts 部件model文件 + ​ |─ ─ XXX.service.ts 部件服务文件 + |─ ─ app-register.ts 公共组件全局注册 +​ |─ ─ App.vue 入口组件 +​ |─ ─ user-register.ts 自定义组件全局注册 + ​|─ ─ package.json 依赖管理文件 +​ |─ ─ vue.config.js vue cli 配置 +``` + +## 如何贡献 + +如果你希望参与贡献,欢迎 [Pull Request](),或通过自助服务群给我们报告 Bug。 + +强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)(本指南不提供此项目的实际支持服务!)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](https://www.chiark.greenend.org.uk/~sgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。 + +## 社区互助 + +1.[iBizLab论坛](https://bbs.ibizlab.cn/) + +2.加入钉钉 Vue_R7自助服务群(中文) + + \ No newline at end of file diff --git a/app_AssetManagement/babel.config.js b/app_AssetManagement/babel.config.js new file mode 100644 index 0000000..84146b7 --- /dev/null +++ b/app_AssetManagement/babel.config.js @@ -0,0 +1,11 @@ +module.exports = { + env: { + development: { + sourceMaps: true, + retainLines: true + } + }, + presets: [ + '@vue/cli-plugin-babel/preset' + ] +} \ No newline at end of file diff --git a/app_AssetManagement/package.json b/app_AssetManagement/package.json new file mode 100644 index 0000000..4d6664b --- /dev/null +++ b/app_AssetManagement/package.json @@ -0,0 +1,69 @@ +{ + "name": "ibiz-studio-ftl", + "version": "0.0.1", + "license": "MIT", + "scripts": { + "serve": "node --max_old_space_size=8102 ./node_modules/@vue/cli-service/bin/vue-cli-service serve --mode development", + "dev-serve": "node --max_old_space_size=8102 ./node_modules/@vue/cli-service/bin/vue-cli-service serve --mode development", + "build": "node --max_old_space_size=8102 ./node_modules/@vue/cli-service/bin/vue-cli-service build", + "dev-build": "node --max_old_space_size=8102 ./node_modules/@vue/cli-service/bin/vue-cli-service build --mode development", + "test:unit": "vue-cli-service test:unit", + "test:e2e": "vue-cli-service test:e2e", + "lint": "vue-cli-service lint", + "analyze": "source-map-explorer dist/js/chunk-vendors.*.js" + }, + "dependencies": { + "@fullcalendar/core": "^4.4.0", + "@fullcalendar/daygrid": "^4.4.0", + "@fullcalendar/interaction": "^4.4.0", + "@fullcalendar/list": "^4.4.0", + "@fullcalendar/timegrid": "^4.4.0", + "@fullcalendar/vue": "^4.4.0", + "@popperjs/core": "^2.4.3", + "async-validator": "^3.3.0", + "axios": "^0.19.1", + "core-js": "^3.4.4", + "echarts": "^4.6.0", + "element-ui": "^2.13.2", + "file-saver": "^2.0.2", + "font-awesome": "^4.7.0", + "ibiz-gantt-elastic": "^1.0.17", + "ibiz-studio-components-vue": "^0.0.1-alpha.9", + "ibiz-vue-lib": "^0.1.13", + "ibiz-vue-pivottable": "^1.0.6", + "interactjs": "1.9.10", + "moment": "^2.24.0", + "path-to-regexp": "^6.1.0", + "qs": "^6.9.1", + "rxjs": "^6.5.4", + "tinymce": "^5.4.1", + "view-design": "^4.3.0", + "vue": "^2.6.11", + "vue-class-component": "^7.0.2", + "vue-grid-layout": "^2.3.7", + "vue-i18n": "^8.15.3", + "vue-property-decorator": "^8.3.0", + "vue-router": "^3.3.2", + "vuedraggable": "^2.23.2", + "vuex": "^3.1.2", + "xlsx": "^0.15.6" + }, + "devDependencies": { + "@types/echarts": "^4.4.3", + "@types/mockjs": "^1.0.2", + "@types/qs": "^6.9.0", + "@vue/cli-plugin-babel": "^4.4.6", + "@vue/cli-plugin-router": "^4.4.6", + "@vue/cli-plugin-typescript": "^4.4.6", + "@vue/cli-plugin-vuex": "^4.4.6", + "@vue/cli-service": "^4.4.6", + "axios-mock-adapter": "^1.17.0", + "less": "^3.0.4", + "less-loader": "^5.0.0", + "mockjs": "^1.1.0", + "script-loader": "^0.7.2", + "source-map-explorer": "^2.4.2", + "typescript": "^3.9.5", + "vue-template-compiler": "^2.6.11" + } +} diff --git a/app_AssetManagement/pom.xml b/app_AssetManagement/pom.xml new file mode 100644 index 0000000..e5cb5ef --- /dev/null +++ b/app_AssetManagement/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + assetmanagement + cn.ibizlab.assetmanagement + 1.0.0.0 + + + assetmanagement-assetmanagement + Assetmanagement AssetManagement + Assetmanagement AssetManagement + + + + + + diff --git a/app_AssetManagement/public/assets/css/loading.css b/app_AssetManagement/public/assets/css/loading.css new file mode 100644 index 0000000..850a821 --- /dev/null +++ b/app_AssetManagement/public/assets/css/loading.css @@ -0,0 +1,281 @@ +@charset "utf-8"; + +.app-loading-x { + background: #161B29; + height: 100vh; + width: 100vw; + overflow: hidden; + position: absolute; + top: 0px; + left: 0px; + display: flex; + align-items: center; + justify-content: center; + z-index: 10000; +} + +.loading-container-x { + width: 250px; + height: 250px; +} + +.common { + height: 5vw; + max-height: 100%; + overflow: auto; + width: 2vw; + margin: auto; + max-width: 100%; + position: absolute; + border-radius: 0vw 10vw 0vw 10vw; + box-shadow: inset 0vw 0vw 0vw .1vw #E645D0, 0vw 0vw 1.5vw 0vw #E645D0; +} + +.one { + transform: rotate(45deg); + left: 0; + right: 0; + top: 0; + bottom: 7.5vw; +} + +.two { + transform: rotate(90deg); + left: 5.5vw; + right: 0; + top: 0; + bottom: 5.5vw; +} + +.three { + transform: rotate(135deg); + left: 7.5vw; + right: 0; + top: 0; + bottom: 0; +} + +.four { + transform: rotate(180deg); + left: 5.5vw; + right: 0; + top: 5.5vw; + bottom: 0; +} + +.five { + transform: rotate(225deg); + left: 0; + right: 0; + top: 7.5vw; + bottom: 0; +} + +.six { + transform: rotate(270deg); + left: 0; + right: 5.5vw; + top: 5.5vw; + bottom: 0; +} + +.seven { + transform: rotate(315deg); + left: 0; + right: 7.5vw; + top: 0; + bottom: 0; +} + +.eight { + transform: rotate(360deg); + left: 0; + right: 5.5vw; + top: 0; + bottom: 5.5vw; +} + +.one { + animation: one 1s ease infinite; + -moz-animation: one 1s ease infinite; + /* Firefox */ + -webkit-animation: one 1s ease infinite; + /* Safari and Chrome */ + -o-animation: one 1s ease infinite; + /* Opera */ +} + +@keyframes one { + + 0%, + 100% {} + + 50% { + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.two { + animation: two 1s .125s ease infinite; + -moz-animation: two 1s .125s ease infinite; + /* Firefox */ + -webkit-animation: two 1s .125s ease infinite; + /* Safari and Chrome */ + -o-animation: two 1s .125s ease infinite; + /* Opera */ +} + +@keyframes two { + + 0%, + 100% {} + + 50% { + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.three { + animation: three 1s .25s ease infinite; + -moz-animation: three 1s .25s ease infinite; + /* Firefox */ + -webkit-animation: three 1s .25s ease infinite; + /* Safari and Chrome */ + -o-animation: three 1s .25s ease infinite; + /* Opera */ +} + +@keyframes three { + + 0%, + 100% {} + + 50% { + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.four { + animation: four 1s .375s ease infinite; + -moz-animation: four 1s .375s ease infinite; + /* Firefox */ + -webkit-animation: four 1s .375s ease infinite; + /* Safari and Chrome */ + -o-animation: four 1s .375s ease infinite; + /* Opera */ +} + +@keyframes four { + + 0%, + 100% {} + + 50% { + + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.five { + animation: five 1s .5s ease infinite; + -moz-animation: five 1s .5s ease infinite; + /* Firefox */ + -webkit-animation: five 1s .5s ease infinite; + /* Safari and Chrome */ + -o-animation: five 1s .5s ease infinite; + /* Opera */ +} + +@keyframes five { + + 0%, + 100% {} + + 50% { + + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.six { + animation: six 1s .625s ease infinite; + -moz-animation: six 1s .625s ease infinite; + /* Firefox */ + -webkit-animation: six 1s .625s ease infinite; + /* Safari and Chrome */ + -o-animation: six 1s .625s ease infinite; + /* Opera */ +} + +@keyframes six { + + 0%, + 100% {} + + 50% { + + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.seven { + animation: seven 1s .750s ease infinite; + -moz-animation: seven 1s .750s ease infinite; + /* Firefox */ + -webkit-animation: seven 1s .750s ease infinite; + /* Safari and Chrome */ + -o-animation: seven 1s .750s ease infinite; + /* Opera */ +} + +@keyframes seven { + + 0%, + 100% {} + + 50% { + + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.eight { + animation: eight 1s .875s ease infinite; + -moz-animation: eight 1s .875s ease infinite; + /* Firefox */ + -webkit-animation: eight 1s .875s ease infinite; + /* Safari and Chrome */ + -o-animation: eight 1s .875s ease infinite; + /* Opera */ +} + +@keyframes eight { + + 0%, + 100% {} + + 50% { + + box-shadow: inset 0vw 0vw 0vw .1vw #17E1E6, 0vw 0vw 1.5vw 0vw #17E1E6; + } +} + +.loading-container-x { + animation: loading-container-x 3s linear infinite; + -moz-animation: loading-container-x 3s linear infinite; + /* Firefox */ + -webkit-animation: loading-container-x 3s linear infinite; + /* Safari and Chrome */ + -o-animation: loading-container-x 3s linear infinite; + /* Opera */ +} + +@keyframes container { + from { + transform: rotate(0deg); + } + + to { + transform: rotate(-360deg); + } +} \ No newline at end of file diff --git a/app_AssetManagement/public/assets/icons/iconfont/demo.css b/app_AssetManagement/public/assets/icons/iconfont/demo.css new file mode 100644 index 0000000..a67054a --- /dev/null +++ b/app_AssetManagement/public/assets/icons/iconfont/demo.css @@ -0,0 +1,539 @@ +/* Logo 字体 */ +@font-face { + font-family: "iconfont logo"; + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834'); + src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'), + url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg'); +} + +.logo { + font-family: "iconfont logo"; + font-size: 160px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* tabs */ +.nav-tabs { + position: relative; +} + +.nav-tabs .nav-more { + position: absolute; + right: 0; + bottom: 0; + height: 42px; + line-height: 42px; + color: #666; +} + +#tabs { + border-bottom: 1px solid #eee; +} + +#tabs li { + cursor: pointer; + width: 100px; + height: 40px; + line-height: 40px; + text-align: center; + font-size: 16px; + border-bottom: 2px solid transparent; + position: relative; + z-index: 1; + margin-bottom: -1px; + color: #666; +} + + +#tabs .active { + border-bottom-color: #f00; + color: #222; +} + +.tab-container .content { + display: none; +} + +/* 页面布局 */ +.main { + padding: 30px 100px; + width: 960px; + margin: 0 auto; +} + +.main .logo { + color: #333; + text-align: left; + margin-bottom: 30px; + line-height: 1; + height: 110px; + margin-top: -50px; + overflow: hidden; + *zoom: 1; +} + +.main .logo a { + font-size: 160px; + color: #333; +} + +.helps { + margin-top: 40px; +} + +.helps pre { + padding: 20px; + margin: 10px 0; + border: solid 1px #e7e1cd; + background-color: #fffdef; + overflow: auto; +} + +.icon_lists { + width: 100% !important; + overflow: hidden; + *zoom: 1; +} + +.icon_lists li { + width: 100px; + margin-bottom: 10px; + margin-right: 20px; + text-align: center; + list-style: none !important; + cursor: default; +} + +.icon_lists li .code-name { + line-height: 1.2; +} + +.icon_lists .icon { + display: block; + height: 100px; + line-height: 100px; + font-size: 42px; + margin: 10px auto; + color: #333; + -webkit-transition: font-size 0.25s linear, width 0.25s linear; + -moz-transition: font-size 0.25s linear, width 0.25s linear; + transition: font-size 0.25s linear, width 0.25s linear; +} + +.icon_lists .icon:hover { + font-size: 100px; +} + +.icon_lists .svg-icon { + /* 通过设置 font-size 来改变图标大小 */ + width: 1em; + /* 图标和文字相邻时,垂直对齐 */ + vertical-align: -0.15em; + /* 通过设置 color 来改变 SVG 的颜色/fill */ + fill: currentColor; + /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示 + normalize.css 中也包含这行 */ + overflow: hidden; +} + +.icon_lists li .name, +.icon_lists li .code-name { + color: #666; +} + +/* markdown 样式 */ +.markdown { + color: #666; + font-size: 14px; + line-height: 1.8; +} + +.highlight { + line-height: 1.5; +} + +.markdown img { + vertical-align: middle; + max-width: 100%; +} + +.markdown h1 { + color: #404040; + font-weight: 500; + line-height: 40px; + margin-bottom: 24px; +} + +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6 { + color: #404040; + margin: 1.6em 0 0.6em 0; + font-weight: 500; + clear: both; +} + +.markdown h1 { + font-size: 28px; +} + +.markdown h2 { + font-size: 22px; +} + +.markdown h3 { + font-size: 16px; +} + +.markdown h4 { + font-size: 14px; +} + +.markdown h5 { + font-size: 12px; +} + +.markdown h6 { + font-size: 12px; +} + +.markdown hr { + height: 1px; + border: 0; + background: #e9e9e9; + margin: 16px 0; + clear: both; +} + +.markdown p { + margin: 1em 0; +} + +.markdown>p, +.markdown>blockquote, +.markdown>.highlight, +.markdown>ol, +.markdown>ul { + width: 80%; +} + +.markdown ul>li { + list-style: circle; +} + +.markdown>ul li, +.markdown blockquote ul>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown>ul li p, +.markdown>ol li p { + margin: 0.6em 0; +} + +.markdown ol>li { + list-style: decimal; +} + +.markdown>ol li, +.markdown blockquote ol>li { + margin-left: 20px; + padding-left: 4px; +} + +.markdown code { + margin: 0 3px; + padding: 0 5px; + background: #eee; + border-radius: 3px; +} + +.markdown strong, +.markdown b { + font-weight: 600; +} + +.markdown>table { + border-collapse: collapse; + border-spacing: 0px; + empty-cells: show; + border: 1px solid #e9e9e9; + width: 95%; + margin-bottom: 24px; +} + +.markdown>table th { + white-space: nowrap; + color: #333; + font-weight: 600; +} + +.markdown>table th, +.markdown>table td { + border: 1px solid #e9e9e9; + padding: 8px 16px; + text-align: left; +} + +.markdown>table th { + background: #F7F7F7; +} + +.markdown blockquote { + font-size: 90%; + color: #999; + border-left: 4px solid #e9e9e9; + padding-left: 0.8em; + margin: 1em 0; +} + +.markdown blockquote p { + margin: 0; +} + +.markdown .anchor { + opacity: 0; + transition: opacity 0.3s ease; + margin-left: 8px; +} + +.markdown .waiting { + color: #ccc; +} + +.markdown h1:hover .anchor, +.markdown h2:hover .anchor, +.markdown h3:hover .anchor, +.markdown h4:hover .anchor, +.markdown h5:hover .anchor, +.markdown h6:hover .anchor { + opacity: 1; + display: inline-block; +} + +.markdown>br, +.markdown>p>br { + clear: both; +} + + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/* 代码高亮 */ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre)>code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre)>code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/app_AssetManagement/public/assets/icons/iconfont/demo_index.html b/app_AssetManagement/public/assets/icons/iconfont/demo_index.html new file mode 100644 index 0000000..808322b --- /dev/null +++ b/app_AssetManagement/public/assets/icons/iconfont/demo_index.html @@ -0,0 +1,193 @@ + + + + + IconFont Demo + + + + + + + + + + + +
+

+ +
+
+
    + +
  • + +
    subnets
    +
    
    +
  • + +
+
+

Unicode 引用

+
+ +

Unicode 是字体在网页端最原始的应用方式,特点是:

+
    +
  • 兼容性最好,支持 IE6+,及所有现代浏览器。
  • +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
  • +
+
+

注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式

+
+

Unicode 使用步骤如下:

+

第一步:拷贝项目下面生成的 @font-face

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.eot');
+  src: url('iconfont.eot?#iefix') format('embedded-opentype'),
+      url('iconfont.woff2') format('woff2'),
+      url('iconfont.woff') format('woff'),
+      url('iconfont.ttf') format('truetype'),
+      url('iconfont.svg#iconfont') format('svg');
+}
+
+

第二步:定义使用 iconfont 的样式

+
.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+

第三步:挑选相应图标并获取字体编码,应用于页面

+
+<span class="iconfont">&#x33;</span>
+
+
+

"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    + subnets +
    +
    .studio-icon-subnets +
    +
  • + +
+
+

font-class 引用

+
+ +

font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

+

与 Unicode 使用方式相比,具有如下特点:

+
    +
  • 兼容性良好,支持 IE8+,及所有现代浏览器。
  • +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 fontclass 代码:

+
<link rel="stylesheet" href="./iconfont.css">
+
+

第二步:挑选相应图标并获取类名,应用于页面:

+
<span class="iconfont studio-icon-xxx"></span>
+
+
+

" + iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。

+
+
+
+
+
    + +
  • + +
    subnets
    +
    #studio-icon-subnets
    +
  • + +
+
+

Symbol 引用

+
+ +

这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 + 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

+
    +
  • 支持多色图标了,不再受单色限制。
  • +
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • +
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • +
  • 浏览器渲染 SVG 的性能一般,还不如 png。
  • +
+

使用步骤如下:

+

第一步:引入项目下面生成的 symbol 代码:

+
<script src="./iconfont.js"></script>
+
+

第二步:加入通用 CSS 代码(引入一次就行):

+
<style>
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+</style>
+
+

第三步:挑选相应图标并获取类名,应用于页面:

+
<svg class="icon" aria-hidden="true">
+  <use xlink:href="#icon-xxx"></use>
+</svg>
+
+
+
+ +
+
+ + + diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.css b/app_AssetManagement/public/assets/icons/iconfont/iconfont.css new file mode 100644 index 0000000..fcc0b77 --- /dev/null +++ b/app_AssetManagement/public/assets/icons/iconfont/iconfont.css @@ -0,0 +1,21 @@ +@font-face {font-family: "iconfont"; + src: url('iconfont.eot?t=1591350784537'); /* IE9 */ + src: url('iconfont.eot?t=1591350784537#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAALoAAsAAAAABrAAAAKaAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqBOIE2ATYCJAMICwYABCAFhG0HMRvdBRHVk0lkPwtjN9pmGESkqlGiscij+Th0MMv1Y+N+PwTPf2uv9+3M/kyAwRGxioqKJWqrWg0AjoCOJ9K7tZa5B3YvTB7L6ADIHWQPOJsSON/x1cndkps3TzTSb6kH3jxKrADwiXunfwUUyHxAgaS+9qZJXUBdHEgB7oVRZEWWUN4wdoFLuA8BPIghC6nZPb4Gg8ZaJoBM+a4JJhdGo1nOILhq9mpkCzbG2mQ9BDaHn5ev82LAwlZYDR2TOw5UfKm2C9SvUyM+QQQEdNgGFJAFaJCe2nQbCmFshUdakwD7qhX4Eo7jW5G9mhD211nVXgBEQfE9SVzpreYsgNsaSwlQO+o7gJTMiGX835C9r+tuvsTFa7lMsP84O57lnnkRu3QyxejPivT+2K3X8xb3/cn2LD+VXm08yPPDg+rYqfLH4sKfm2ivC1dPt1f0Y+16nnxLl6Nbx65e/WP0E924399f9hHhdeH01Qv0FSoAcFYdVCkIIPD1Tp+M+27+N00NwAeshEFnNf28YE7nEfhtkp49WpdZFkurktpBi5LbafLAA3CA/QF8HqsPvkenYHKyEV43ojUoDEmkZmXBxpMcuDCUw4NM6g97Esg0CtHuQAZrAIIfp2DhwxUo/HhEatYn2ITwHS78RMGDPmmf6UmKcH5ji8kUctB6Q99OE+XYpBHVXpL7FJmclYWcW2Ltx3BueraY26OEeI4N+tmdF1GoOI1xFzxGUZRixmlAtkx7Itn6zIyqe9G0ncbQgGAyhRy03tC300T5w6VRev8luU+RyS1dNeFbYu1PjnPTsz3IPXXSq+tentHP7ryIQsVpjLtgFkVRiln9rIBsmfZGJLP1Gbuf6queXl8bf90RABpgGQqGPbUIpp+shEQDAAAA') format('woff2'), + url('iconfont.woff?t=1591350784537') format('woff'), + url('iconfont.ttf?t=1591350784537') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1591350784537#iconfont') format('svg'); /* iOS 4.1- */ +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.studio-icon-subnets:before { + content: "\ea43"; +} + diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.eot b/app_AssetManagement/public/assets/icons/iconfont/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..94fa9c02dd9f235824ff47780ae55985f799dddd GIT binary patch literal 1880 zcmd^A-)kII6#nkaZZ>Xo8*R5)rCUcyQfl@`vUJUoEHQL7kr=eJF%b#KWHbAt?(8hH zliGm7g81N*{Rc!)@zshi3WDH|C+m}9v1-Y4N?!yKEN1=g%w3nP`47Cqz4trcIrq-F zcg~#iQUtg@1PEx5O+#4s0hwz;qSXt5+#h|K;?0e{dwsTtMo~u@4w|U=qen#y7h$1_ z9W-FVC36z%WL&gqEo}|VAcJXYj#^JzzH|f~=$Kx<^y2yJ2cO<0Ss;7sYZ zyk>h>hY7g$M-Iacr)*+V%K9pYA=|v#5)a^6>JyZWrfFLXYX@%tq5FA*cFSpdKmYa9 zYc!Sq%t+t$PPc>25Jg&Xp%40l<}+mP?QPtAT?A< zX(*~4hheyNICEwLVEsxZ;V8?Q|cQ0yOK9WIk0~zc z-sHD^aXR+(#D~XHj|5sH=bz{y+*aoR;{TpW#%)~j8X`z4tdk#CI7G~U!QUm!jB-xl zA@WZt9K{rt6&}HHrYS~Y=svD_0&giSn5aHhSYv|wQemC^_X>xIe^WTjly_I*A&d%L z;V9O{afL@PDeBRZYnh(4ZEWot^|I5fI886w0~f98PQ!G2VsBoz+;-h*8Z(*c9<^*W zEw{H%`${$Ec@?ALI<~RI4XsAQF;AM z*upNy!Q3AG4|6!v584mPM^}MCt7ZDo^y|f-KW$uLUCGf)kM+i2cUeztq9s**EY_R` zv4NJayUcycw9cUBuWDfqSw6jL)w9p|Rm_%w5|l=nS&wd-(D*$g?VYWr<+1Fr{R0t1 B`Rf1x literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.js b/app_AssetManagement/public/assets/icons/iconfont/iconfont.js new file mode 100644 index 0000000..8101383 --- /dev/null +++ b/app_AssetManagement/public/assets/icons/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(e){var t,n,o,i,c,d,s,l='',a=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(a&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(e){console&&console.log(e)}}function r(){d||(d=!0,i())}n=function(){var e,t,n,o,i,c=document.createElement("div");c.innerHTML=l,l=null,(e=c.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",t=e,(n=document.body).firstChild?(o=t,(i=n.firstChild).parentNode.insertBefore(o,i)):n.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(n,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),n()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(i=n,c=e.document,d=!1,(s=function(){try{c.documentElement.doScroll("left")}catch(e){return void setTimeout(s,50)}r()})(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,r())})}(window); \ No newline at end of file diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.json b/app_AssetManagement/public/assets/icons/iconfont/iconfont.json new file mode 100644 index 0000000..c3cf382 --- /dev/null +++ b/app_AssetManagement/public/assets/icons/iconfont/iconfont.json @@ -0,0 +1,16 @@ +{ + "id": "1866280", + "name": "Studio模板图标", + "font_family": "iconfont", + "css_prefix_text": "studio-icon-", + "description": "Studio模板专增图标", + "glyphs": [ + { + "icon_id": "212786", + "name": "subnets ", + "font_class": "subnets", + "unicode": "ea43", + "unicode_decimal": 59971 + } + ] +} diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.svg b/app_AssetManagement/public/assets/icons/iconfont/iconfont.svg new file mode 100644 index 0000000..1e275da --- /dev/null +++ b/app_AssetManagement/public/assets/icons/iconfont/iconfont.svg @@ -0,0 +1,29 @@ + + + + + +Created by iconfont + + + + + + + + + + + + + + diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.ttf b/app_AssetManagement/public/assets/icons/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..87a27c466136cf632b1efdd87230400cd80afd96 GIT binary patch literal 1712 zcmd^A-)j_C6#nkaZW1@`8mntoaqTEcM6*BQ;xqtXAsJItN$eCIo7 z&bfQ%E(Cynw4q~c_RQJi-)?;W01$by$KO4Z$xi<`pQHUD?ZuL9Ht(Om+M@jz?`EaG zR^IX67oP$80{uT!Epuhh>)$;lzQ_BGDv92^`bWe+@gAz$-laYQ#{R*nukMsgEJ<6R z=hS1Hmzv^LyhDGSw$U(cYieQRG7x$N(Cntu@@_x6b&*n8&rz^;z1?YJDMXVh2Kr!g z(tL*OfA>z_{9t?GAM^*>KQZpBf@kMW2>J+#K4>afX3|hl86_Lx1$3VBN3b7Bh_`0u z7Z@2N4r&nfTE!%%Ec&EZkP+xnEbS1)rwF4@yQ1A7`$_N=_mLHh)ezRnzF?dxzrBL# z_2POl=wEN6O_}OmzDgAnCX_jn0VNic<|J9EPV&jF$cJ#y*RUjDz1U%&!Av`-9YR+A zvJdV=j(utw{I!xRMLSr1xu1zTcl58hqb7mj+;DD6;QfhzqnU(s6;g>z^z)Hxo90;bm*KCrC-(+kBkOnc8t$q- zfY|>%$$cAByoO#R6xPWPDI6l^x8P?9^F%qOa1Z%66^>vOvkLcPCtSG;L)#d01RpCb zFo16q))2+d3hU&5Q#eHYx58oU#sh_WFd%e=BUltW74FA~s6~pdWqQ_%vAkx~N=~Ef zG`vU`oVF^fb<^#d-RGj^wrWnpIGP^oQnOaWa=Uq27b;oLD;s6kv5grfwCZ)oXu8fh ztK_Atp4XhnWaNt^pDsBzKei& uiRv_}epC|^$nffR)YYf`PHnkSx@WCCS6?(Vq4D?ZZLKahERTOX98UlnPUjT> literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/icons/iconfont/iconfont.woff b/app_AssetManagement/public/assets/icons/iconfont/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..5028dee043935bb44f32834ab7df7120cf031a0d GIT binary patch literal 1104 zcmXT-cXMN4WB>w|00wRl&9(u;2eDCsdvK@|0|O%mP}CTRoi_a2{MJ8M-v}sX1LV5^ zahStSAJgRA!~&pL1CZ|xqzhhWA1Y4IsZ0a1&j7{d0`U&P@I`YoQWH}c7?^T^d_5pG zla$~1Hv=dL6q^I&%K)(o`#t97jNFn6px6!|A7nQNh{(xL2B|v$WU_&A3A=SIkLHNJ&U| zkTfCrLSjNm;b+do2MGy@4Ga@_lKs-Elmd88F`wGlkjbZz*4)9w(51}m&j8kwm@wzS zfl~(#UO8FP*4VgE-pP1hnnBW&goK2ogw(VHTuhf@f+b|)EcX|s<^8ySK;ZD50~Z)X z(pXM1GQ4o*DFm63kdO+*Y)P^TX^9C5Jc$V@42<>*G?XLe%xvV=Id^CQOW0v1q57wP z{@eGke2P4v!mKQPSmOcXWTOB%i!}-}8U-1y&ERTDhH|bbeX}8GE(?Ui)*LLl?=I|_2kkd_CHdflr?dZ|@I!P=tCc1lO%-Ex2BFnO9 z&A!hsPd6>eDM|hM^Vw=y*8<)je5>^yUZ2=hAlf4#!4OocI0+cg&@g6rbf5pvx#OR2 z*Q7p3OJr!g&GXFT%l~K{o-{l0#O4Fp=_f3YtSTD2mf z{RwLlqsCvs)p-#iS>Izz?l1G3t<|Y~eC-wH0=d2eoEA)X8mvEfsLwW=cKrUH%4C0r zI}h09`tIv~pJ*FnWL?B7zC(OnaJ@j@g!q=(8IMDExc>FMaol*>q1=+h%I51klD@T+ zC-TeIa9l6w^?zvfRsSK|&*&YU)_=IRU-CcH<`PA{~!jnpq zE%!IgjC((+b?v2BbF!n4s0BAKi1!Shn;CsK_|0|a=SrfHlUH%Bw({&bwf5$#3#`)5 zKLxHA@04p%dm54aZ`(1ZzCzYkRlXiWCyA7fQ!idvho*g5ztQc3+23Z3i(M-31ZVlSyPh3u8ChW*9`Is!^h` z$fNlfQ~29yS0|N2X-$^9?R$e z$Q@)4IGYkU-|^MS-IAL(Pc+hRsR!OXN~{3ziF>Di1r*49K!K#b_NGZ)KwTV20q%uS zWJQ)x-Y|B7OSlgKJcuC+so6cg27|_0CV))&t_da=Mx$BIAh>GwYGeyG#@b{(1U84C zm#_0;z`|Bo4IPs^4pe-pwhPp+QzJe>1O#;01{9D5Xpo-TbQ=m`Y=uW!lK}gw75Ea4 z<6Duvnh^HaS=C+uL_zUANnGiz<}85Q8cPXKJL)@tl+1`_{NIqhuj_8U#Kmj5OtAkr zJD%m9c@evGGR5f6iuC^2t=IDw_x;KCEI*ZAZ9K^H!-MMBsq)9-!k?RHuM1aCw^#II z?RuVkOP8Zt$F5%eWAqcX>O%1>Y ztb{>lHT}F`PUjK$ZIYfnT9;WCORJLFL5q^xY4X4WaDe>*d>*S0zDK8EaXi9Jnx)!-Guf4|@{GGz!t~Kn807f*+?~;lmXu{CGra)+gA6@EtDvM8ShT zX`ksyig12oi^&vn(0W7PP7~$Wq!HC#lKT{yoRx)~TVn0UaBh0GnA@X-c#aMF*_{_r zs5p&r7d%E$lw!tdK(t3GG&+fd4Ld9u}yI>YYQHojptblBp_C_SL^%=XL>Z_h! aUmJhj5da!s8489ywFsu4tb{}Z0000rf>aCu literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/404.png b/app_AssetManagement/public/assets/img/404.png new file mode 100644 index 0000000000000000000000000000000000000000..d863349e6367fb46dd4eefbacc073260a51cb931 GIT binary patch literal 52110 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 Sm=Qz)0p@zy!olYQ literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/500.png b/app_AssetManagement/public/assets/img/500.png new file mode 100644 index 0000000000000000000000000000000000000000..c2abd1b033a8e7d74aa1ed00288ab6e516204e57 GIT binary patch literal 30309 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 IM6N<$g4*}d$p8QV literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/QQ.svg b/app_AssetManagement/public/assets/img/QQ.svg new file mode 100644 index 0000000..61ae914 --- /dev/null +++ b/app_AssetManagement/public/assets/img/QQ.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app_AssetManagement/public/assets/img/avatar.png b/app_AssetManagement/public/assets/img/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..2d07992f1f5ebd157523bae7fc238cabcfe70556 GIT binary patch literal 3880 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 literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/background.png b/app_AssetManagement/public/assets/img/background.png new file mode 100644 index 0000000000000000000000000000000000000000..8d4368dfc41927da0a1e584c6ef8a15cb371cbab GIT binary patch literal 148505 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 W$Ma`li3A(~00002si&00001b5ch_0Itp) z=>Px-JV``BRCodHTwQEbMHD`>yDdlrD-sAoEDF*V+Ny~}g$MNk5)<`7Z39RZGy!?w z-v{E0pb0Mq3WTU2Mu;Mn@&w@ljT&FXh#G@L#3&Fn{HUQp+fur_cl^%Xy?5`Oxw~_> z-EDVaCtU8#nKS2}`SzSMb7!VkP>H3MEpn`gP@}Y{8LBn$C5bK`Tq~X(4pn2r@lbwd z%K=#(yFm5HWC{pNP?I2PmQqfVNxxQt#AklW(3OS+poKeRZ8AYk0HY})sM%tx_=D== zBs0&4nc!c^rHq0FP;GI$tm%P!kOcrFHNzro7wNw)$2j7xQbfT~F5o^OfR^r*Rag6{ z4spT;0&;C2x-EGZz;RQVVd3iS%@_fCe!H9;k9z_pT%@aq>Jcldyn=4jybI7v@5|A> z-PDvotUza*2te@tdR*4{IzNnN(Xv&}h3nS)^eJ*7hGF#(1M%-wswF8AHqvPrfpApN z?iRH{$2N^#L_!R%@>CJ!m%Zpn+4rEx9jE|g0Js8B1t0?ghH7`1H}I82HHP@O5aL=< zl#w(-lGHq^tN=Q=PP`0o_$qj6*(^VW(7CE$4KbDBW-nI&GFU)axmfEK`5NAZH8(Ky zFWGes}04ggNi$>|)ge8s|`ZSAHyijnO`m9nYXSJa8ilVM#gid?coiX+Arb+aZ&PY^EbgW;g5Y=d}q($v=VxJ|) zDP*lUf18}0u;^~Bq7Vd&CI*Sg3J}bFLfboX{D;fMU*3j-v<`mT*(#KstW=AS*N8J% zvAoQ(m;x~44KwMCS03m4Q_H(5Su11P=#^rvC=O_t@4K!~o^BgOzoDxMM|%KfiV1E# zUN(Q<@OY-JBO|?w>J&@ro^zNFQhe7k5r_Mob$cP{n41sC2;l)xXx3-9z^}&}1SOfW zx)^KAyP$zuOS_}@!e?L<^i3d7hL{0R&@UOXFBkkA9}Dc3&|ZkI6mnsT*yzMCf4eFy zCqU?Z;QI-La7UlS2z9!1ow%Y3^_EA~(Dyx8L_Z#0&HUav&hsW@S2y(v z>V&>g7jrBjqQ@U>?$xP%g>~3&hEYg!F)MYtLv2zr<(w|YS|%;q%}#nXPR7vDIATK7 z6M)kU2<+>SUFzkx1GN-woojV>#8zc<*kc`-GVF%jgR-gluP;SAz2k|tMqA?pt&3bGO1jh`gF;@-Qw-n_HSdV6Hi~!lc zaDd);z1WM1pD(rol{uKm)hukM8QvxxE5rqy8sjxzEul?50BP-uO)vvQ!6O-bbFZeH zphuXNlr&qdV?b3JEN(2Ufvql7!mj~5hc+2w5G-Qif}L{Q{$=7HuWB7@#5r%7^OzRc zz@Q_1f6rUrxk{Y(mN_3q{7Lw1Q04HKt0MF&mOD23sRb+T!H+dZm1YJAEfT%98+@TQ z_LdiaAV>Ce(F19kW?O!b}gPE^_C(MI-gM=Dgj2j`+WScO$GW)t{ z7JdQyP!%SH)7k3W$}E|n0U!(Ou#rPq5M0L?ND~}?JnoY0vE$L9B^HhgIS>fLTEGs1aN$Am5xJM0oovCTu;LoHr^@Q zcenz-i27)r0?tC3tC1W;o0uhYvO)nj|a8MH~!c%B6K8@ z6c>Z!4VDIdTA}k4RZeJt(rZH=tPOFsFF-SaQ#w$m3i|(f&4KjhLqiE|K>+B%mUg*ZRSR?f2;SfugGK?= zJsQ*o$VI__42F5%0YYJF~Y{W{L|L^995h}!kk0gojhEfHrY2{8W+w9LxG+`}>mq_^wE&S1e zI?PA1F39JWn13yQ{RJo4=H=gV@GXop>GYmDyWkP$alBjc-!;(?hqZymR%e3;Yn$xw z+$eV=KtUa~Pr4GFKpkIh;;+B-rVd2ez@>L&XTsXXxJ+f1F}m1b`vY*qf~{1Wbb!Mb zV<3~iDm6W5{UzvmCGBEC3g<&hAF?`!Hhl4SLhQ6+yBu*TDH>3) z72SgJ?d1zQXlmGw#07*qoM6N<$ Ef^jJS5&!@I literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/error.png b/app_AssetManagement/public/assets/img/error.png new file mode 100644 index 0000000000000000000000000000000000000000..13ff77d27cd1336b89bbc439e8d5acd2bd5b4492 GIT binary patch literal 60601 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

  • jytBHGV*n_@unY$9)mr}Zm#ny^1H_nxmf*zrUW=F=U#8(yW_=jo z+q5}VyfQ4kV4cEvLArO^&FMH@O(<;7>-nJBH>ez$l@y21oSE&b(ZWepbhFC02R<6M81hTu4bgney=OH7S9ct_ZA=KDO&OzKHtzcFBgW%(`| zVS;mcoq{ai>g3Ri7ZoFG`6`Dm$tF^3nG1gR+PAO!#Y5oByM;)VNgMNP0zvyhrVDq( zKNUXijo@z(H>6p*epX;W3_p;Ut8ITm(2WG235*B>qPt*jmw(Dc+^!!i@cAI>Ub@{b2G9)1j>&S5 zOsSgSa1n5vkwuw68!b|NC-UOQ&DXL`j9=(WW0G_=rg+vu_G|p--hLu%64zBc%C@oF zx6)|Ro)K+L8)qA9I5l(#7?`|#l@(`oXjtoHhQ>)^GR}VOJ~uE=c<_5qBfc%p^N;=N z{qR0;^|&Qq$2@N#epfE{E(MyJI+#9+ut=W_7XcBAlp94y_a6uwQ!?9I+|d}5+41tJ ze49TzVBhBZ^vX>@R(*6P5cbIk8rpg9T!Xt0r|*u?b}Qn^ZLT2K0@)6=>Y#VrA)X@0-sPWI0zO?mcIn0cw6oOxvo?l6$ z1c7g0G#Y?T5a3^GM?!J^N@bS!^&i>ihmVJa8hr3Q%p0$}gRVLFp(CNs*74A>dHu6u zArtuO%1>I%b+U3qDZ$Eg6{Or2g5WBC_)g!87(ze&oHkHfcm@03WO4hBb#e0O(e8D1 z*0;WUz1dHQT{Cl0ztWrw!}5>l1PiQz`m>YaoDLt^RK4)a)7Ulo=S1Lqd@GgbItOT@-@vtgA@`52FAeT!Ncs>fBYyWiIofIO zee)emAL*0rU3HE7yx?n{$bV-3@o)3lT4-N9c`RPVE(Q8-%QgF{6%esYecm-#(Ug-J zXe=xuFe%QT)AK{KTDEIlN$~c-fCZ6s>zYyX&mR8yULFm$=WL!Pc$qsB`!hr zS1EbPSFpxf&iF$R{O4bXi^J4&!$1-MuWKN%aG1bXA1i_!7L*WY3yPv_(dk%R@-y17 zbFx;8keQGW0n7=a6b=9bjEz;oy!{1&UmVBF{|SW01mPT}BE}ThB#F^x3z|+j)y&N? z!MF%4eEYl?e>XgbZ{LKzMsPAuC?QI#n}ET~;_gE5I$?Y_ruD0nw7ImKCO`jXKIjI8 z61?$^%-Tqk$MEe49~6SkS7zM^eX(%^0u*N9pvv)O%!MKrZTJfrxDR8|>T{IEZF*f@ z*SKyk-<6m6xcxYv*Fzn4uOG{+h^XFU|M=13KmY6BnkP_;Pa$DoI1J=s{xFYCeis91 z7en-|>>~Jw05hh=3FZ6uv%3pD5C@;DnHphO;j>mDujwT*1Du=-)2Gk3Q_BSpp3mE0 z&%%65V9GV&a`m{8U%`=|6n%O^H}p-xhB62L#u!HaouT#1`^->6S1rq`X#SG|C=Hr?`Ua=1%Y0GD_W*~lSh9b_*>sf|nPYLI;BnVy+xd%|($Ds>@ zb!FdFTgl|0svlOB?5KSF)W$Bpg7eGz!zG`_o4Hj;JhTHCFh{$XU;EGhN>s^Fy!4NO zabi2{ur46%4S)81*3Ti|jGD~{tF(QMdt;0jF>>DMl*ZVEb2Ivol6qnQLSoslfzW-jd!LjV~Pd|yq4~JO7TwGfUvgc4cbD;;_`oXa&hLqD!Ttl!@{3yy|za*($ zJ&+dWS!*}6Q*zi$f6hek`qp+84V0hMsdfo~r)VJwf6I3|wT=*Yq;lZ3;bhf{bvWSI z4?h^aKl%BmRclM-69zglP<;1|S(BRld|&fMI;`G_s6`WO0&f(G=kP|-C?CBK1HjF} zsp32B0XV$=uU|&l-BzH$!2tbltvf}o1p}B*&97XtLv{%3%0K>GOFOC3kz#;vR(!3R z9*3uA*7WQ?_Q#c$9BmwZE@0v+pVM=Jj0>LQ^7$*pESTsDuOdF4DT=EE`doXK2j`PbX(gxQ!56}T`D6Xz0in&6j( zD_X3Ez{A?>2y;V4FzRLFQv@@OF6;#Wf2Z+SXqzMGKa9^^5d5lJg?vcow{HZ&oP;Lp zI8hek%<@NgLLgZ`2b*xy?3Yw_K8Vp@Ks zg9iUz4_($9l9X|;F(4-5u^+#$4jcUYr@ij#RytR&1vBRItpL`uQG=f!&FA{RQcyL= z{@V{$&*y(?tc_`}XZ;Mlqn~xZ{a#mxH=rZrPM48lptyO>H0E%>H@Tk<9*^`jtsg9S ze4>|42rTX3DOYVxI(k`X#J|cfh@bZLS<$_pvhroJ{<$nF54xQ1_t?v^Z$bzRPnm1H zr(?XCuV5*Margjtkc_#pDTf{O%UnBp!r~x*4)a3@d6;EtZTr)g2TWdV3V+hV1i$ndd^OKCBd8~_2)0w(8>x`vOsAu zvXe?M_}CQL-wJhZs;GbWygL?9=7r$5xAyBDh{c6L0vBlC=xX>_)A(2zuC@Z21B>tO znz>X=j7;R)Wbk0P4j-0poM$!S^KzfOv+6nIG>vHse4`^6fBA)TS#kTO2-8>6ESD)8 zhbe$r!P@e|Jl*rRWI6aKaOC)j?+*|$#U+{Ix^_(m4Ax+}{s8fry4;QdHr&VVX+C== zUretWbQ#~^P|T$E=BHy>Ct(WMw~wU}-M29crb`X?#NMh)`0K4`9WrfXgwmXBPoXyk zitE?4*SsKW1`o6kc-y;N%9t>)CtfNA{L|G;6r zA~PZIwi(t_Yj#WjSYJJO-(z~)(nEx&d;WCYItFs_(Q=uE&SkQ9@|)&2DO03yz!(sJ z&v<>9iALFjD}2DA0x|+j^`fOILGT3rZ88l#6m}1*9_QmB4F1HyUfs0pqw-THZOmml zFp3h734 FNOWYKoS6Vy;q;ynb2WSzz`4jt1xHW%ya&gREE)bMB7)wxfFH~1Iw=U zYbNf|F3BV?;c!9u?t@L@YthJD=9RG!ar%g{Zzqz(*yGCI*aLF{bAZnUZ20Jp3xG+R z+5|4xA$%QkQcGGl#^fA1O3atUjcew^aPsS#w0=P$-X3y(c`J4^l-o!u(_nsf4+}JzY);~ZeqE(axp7zToF^}*>;6;2zsSii@>+~_SG%c zSZK6O1ZXOJ{z?FBbk(djffZBGFfUT*je+94v`KEra>n!LT0iA;E`@}FHDUnE2JksP z|G)p=8e2(K4}t-s7mes!d_5ZkfYmE0{-N=9LOy~2`LouBPqQnu{whnnc8BhF7Hlii znRyEd4j)a&{n`R3htOnkL%z;sQO_(L1*;ztv%;QT5Tux3BqO?O#pGITj4` z9SR#J#?8mCd`K{1mz>^V!rtbIF&EN+2mV-ig0QzXNwHxZ%^gDe?(I9(JGM_A_;}wC za}ak3c}>t8)zo)xa6uIHQO5DZnu*O=)lzw7b#9W2p_ z`a1({hlVsw@e=-Wy8rWkPo|%j7(KgR#KwQzg4 zBj|*75G_&MkXEMLzI>LZxoxncyc@d}EoNq(#R%Be9GRaGO?BpYMN`e|xWg+g;5tCB zC7wi$j<%c1-1v8T*D_zpcuOH+V4WB^e!MaT{SI@fX}qly)q~W{x>s$Uwzdw`{V-Vc zv>^Fe+|qh_NmdSi`+c^bRu{^!cJ~clW~_Tl#~Jc zt}LIy19{f4;&P-!iZ}=iAUA-J2CCoEp*a|(M#twcJcA6g9Wc7DA^V~zDa^9 zS0aekmCY8+JFdnwC2hlq;(gg)VC({d30?yr5N?=o!ITU00Dt87z+4dK43Apqs(zd1 z3IcF%%bCY4#Kb#p7OHr&navjtr(Y%Xo&5e}GmZ0#7+14G{jRu~lXq49Kcz93 zLc+khG4S`_(l&n~t)B`N^~W|mHRBAg`f0{D`yMaF^YS*!9?*07UY7M_^~_xp6&KHEC5I2* zhkfb+;UaZ4!hmQ{<8z{b^O1doA_C1?)2luYMaBBu8XYGWYo)$XG|*XJ^NVUnrlD*8 zNS}&Qo`eC$pbjPH>|fbGaqS2wl36NR!T6@eb*bjN41ee-|Cmx^N8uDbY788X02t;0 zj2#FZPUUD)w)>jtqxdB!=BYQ#-+S8Jw5q;PESk+Ql?K^OoRgf@J%#Z|dS@mu`(oxaDfvd{ne_fabb zZLoV^?V}n+7j_qj_*-IboUu6=Wha4|@jyS?#!3TdXti9HGfHWgm(p5FVb3wZny*kX zWc1*Nz8E(~50JEwc~5-jpK|My(N}%zJD_}M|K?}T*j^!%fG&lEfpubF^6YuV zEWC0h%Mz1tov7Zwx_i)UZJnM-@LOnZ%Wq!G3jDM_dEUsTim7|i`pM6l<7-W$)}49m z)9+>;`rV9cb~voZ79Hp9Q?^;xjy)qB`TXY3thjSCE583WE1&4_frNA^95@Dyt`?nb z{667=xdT$yWe@BF(5MWD85hEqzOfQPunxJHAXx6P@{f`;ym~Dfc#aADg&Ink_Z|a` zKlZG1CwXO&49gByG45mVz#<;{18zfT{UYGRN?>Oo8ANf|H1k zCHP$jBM-(Jfs6g=M{%`QFL6yluji%Qx`Kb#Tur#^FG%Bxc9f|l^0&j?L`Oq#Z)B`g7Eajp^o zXYby7uFYNf9>S;1z6foCtq4uQQ6$XmjR4*uCh(?0*yHJYHylITr7(?ww>sD&0Wek$ z$|L}u#!Y%!3kJ$xA7r_NBE`+?+2q0RYiT1@nlKP!08_k$G?MaLH%udV@-)&uUv^nw z&4iXDa9Oq<$~Z?_geRAlWn z2DHp`4#9jta#VUp|s2C-})Y}Y;u*D>x6Kok+%jseaK z)#Jxme))1%NL!?o0BMB4z_Kw=K7VDz=;G_Ivf|9Cth{w^@haI?~vNnt1Lx?C=g^V49yis|XNF zSx~sbm{RtA-}$jzng;r1gVPaSLIv!g)}i`(V$J>`=#4w9xH7M-_bNfIBhX` z&HcSD8NWubqYfV<^{v&~Gz)HB6K zwmk$A&PT=Ugut?_Fl{fvyJI5G9H|GMSqXwkxeouowBNsRZaF6*ECC*wN5Luh)BRxo zM_iYIeI44r?B%))&H2yD^>NW<`5Ro;K-l2)X_@2=6O|j>l^X>*KH`dV=cFNWS(-^A z28M9PM)luD0n2hyFR`YbRQ_^1E583a+xy3NV$A)zcvIS(EfW|PuP{p3I1Fg-R6cr= z<(l{M8`rbFfBiw$4<2UKt6+p|Twg95VCE`*oK;}r%8iNp4E|)DNbjeeEm9aM175@{ zX$0e|Reo9#Hmx)kt94i#N@0up{$e0G56%rF=S9tNw)~1_U*MzqoW`HDgEI*sn6KbA z>*w46M8FFhH82Ig#CW>G7d6R##QewkPuc8GQMoDlGMH+bLNG?TGi?0pm8HL-6NEb%Qv z9E6Z-_v%21lk}tg__O8!!oZP;w-p*a&H#pJx=!46gq8wRGLqoJyvP3k_^G2(XDG(! z?q)c)%4x%5JMiDCy<3*ZHj9@v=AJ#T*VH!c^Etuhx;7ai&7l|=;8ZEo?~nNOd8i=! z_=aM7^I$M1fcxA+WAwlHQd0V2{FcuWGl9JUJ^(p@0c{IxuMaboeS-Pbg^}8%L`V!R zUj;N;bM>*G4VHB#XlibE0X|7c69x>qb~%@qif`g5a5divmxcjsc!iOQ3k$A}=S84l zUv~_KJe}G7++jihM{9!GB4BP^UagbNb(~=%1O`@#f$HA{q{O!&vtB$&M z1p{N25-eBk|IeSZy&u2HiXXnt%3n10jNq{VQkrFQVhM-6pO`UTY!e15tU)4xAS-Ic zSJ$#i!Y`PKju03aivi{hrzLWP`CAj(sEKH3p>2Z7f>zAWm~a=wj6+kCxUf#z27|ko zhIO&!@H!MZ_zG@ZFPMrk!kG37(5hvD^1Wp2JqBDn7q`j9rm4=z@(YHJ`{`7 z(lQzIQ!s7c6LRo%OsehpPm&~!NprdMKK0I2G3gfx(*R$j+z#>rT7$Rcqa?vYa@#>G z)>lMh&e=46Ka-h2G|aV;EFVfE4hDc%~Bm_DT(LCdxC)G6xHp+0=Jg=wq z_;K~Lh^zDsVLbzLS^0(YCbe2Vc~)E1@ch&6`!!878s}wunzWA5cb>+tq)pS9`457+B}eQceyCGEViiB=eCgCT(_efIk~!6AFY zID}a_um*w!HOv>k7alYQVJv1RYv%A^PqSdvb3!~m8{Op$IE}~r*ikj0PXG>s4G!(o zhMA73XyMxe8Vj_=7{yK8VHeuVR)Rj_%r0Pk?1uW;dU zR8|j8iV2J+W><3_sGVmRdzVbg>+i>P8+k_GkBb|ZccHk^O4Gu;A=A>N>A7zUw3nUc z_j*R(rSX36b#W!G$&*$;_1?=-q9!XP4T?Ij2WZkMp7pl+>n{l(oXU!e=gp#!x$p70 zF9FBO+?GEno*Y+PN8=~9w{^maC9Lm73VSkk0Ekx>r9VCf9MF-Z7CkO5Eq*kwKXcU? zqrCSZE55mr?fvt6yN8Bn*89elVR;7trX?j~J&B%JMv|uWtqM!aJMc}lE@%x29dPd~ zK=3&3iBF%2+w!3P!%bTOeMLSpiyywpvX^4Qp$$ym9@YLY!j@vdzk@l)yl1nk{;*fW zf)Q>f?Qo-e{ht~{2(JE=31~6iaOIYZ){?!Kk6?|*?60@=9uR@l(K&c(q4Ba87@+Sv zoKoQ#0)K zZ7;aTI2nQ3Sf_+%l3;Az^vN!;9ZPe9hVXmBwuenQbb zIb&#Rab|24I-D@4A*EWq_|q0`=D?MQwC`=atMRly#Q|wNoo`aQ0CYxNkFT-;G=
  • B>T&n*v1y!}z)Ks(0At*n%{SUvXv+2Stmqcy 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 Xh?=o>a%L+R00000NkvXXu0mjfs8;s< literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/logo.svg b/app_AssetManagement/public/assets/img/logo.svg new file mode 100644 index 0000000..dc01f60 --- /dev/null +++ b/app_AssetManagement/public/assets/img/logo.svg @@ -0,0 +1,16 @@ + + + + logo + Created with Sketch. + + + + + + \ No newline at end of file diff --git a/app_AssetManagement/public/assets/img/logo2.png b/app_AssetManagement/public/assets/img/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..39f418533d223e14fcd7c3293acee34dacf837fc GIT binary patch literal 2524 zcmbVOdpuM9A0Hmdq8sU^%-lk|xy&qNvkesqu`Xz~lMUP1c7~yvL@1QX{JNkeKe~D9 zalfTpdMHU!p6YQ==&2~BlIl6D^!xqM>-oK2zwq4r`@C7CQ`(pn`!Ap1=`3R$Yfi@i>lXe_Ic{htLJ! z^4wy?fKQC4FFPiTZO=ikbwW8v$uI#Qkg!lvez*W4OC8Z)dCBlxxs5}kzKTe~9MRv5 zVtRO?TtG2^vc+0s*mwc~MI>SgHnv0}VKvGMPq4z_;hTsd*pO|BWGg$=_X`bc6LWTw zy=jc^y5N-~nk$hA$v9k8R1`MK8Via;a0GjMdnJdJ6$X~TK+ysTONtRdMl%dF0Ah=I zLJ1EPpp=ZPU@$`Bh=wiw<^o^n;qil50DTV>95S4gCBzZ1cpRUv^y{lMB=H9RW5!RV zA>U{rfb#|*Fhb0R^Rd%t1`NmUpA{(uVQa`6#XLAEtZ*90j^G0Vi95{^4WD2+JPz5G zO0uIei1v0wDuGTS5J(h)H3QFJ5U2zSolYdqaQqBQqmyi{=ytHE9gL)tDAqQ37aEmL z!P}CoDR}w})?ENeSOPXMqn8Kk{f@=|BbMwU23QhM>4l6kqA18vn2j`kQrgjt9txHkY-ZnL|q{c^%Gm z*49SL8f`FoG$h?y{n+6+c^3L^vSNXo%#$JtWi@FN2)KpcMTw&ptkkT0J(}uz9=`a9j zVltWGQ)M+Ztx~BpAp`&xz3i^;x>8kDb-t{O__(7(oc6GPN7J=uZ(|q=uNqa?p~%Qc ztD0YrU&%;KOG}ePMU_WJMA$mXK2O_)g@vir1!A)-EiEj3ot&I-6VSPH=L|~A$^x&K zuh^S;VE6WI+t~9}F7);Fp<-iW*ApIBR8$nEq@)a;IdjIkT+lrwKeOSlsIi_)5(t8Z zUKlUbES7!w+%?u)Cj$yHhG-3KzqQ6pX+M4#ekaFKuCA_LsZb~iO15H*GS@9F-TKKD zf{G86FEudeI`4a)e0)Qh&&7cZTRT%Tv*Fhh6VPHkJyU*o_;V_iimtD(?=jplot&PY z4u*zWG!0tJtvQ^PwHSK$vU|4I&8vBNd3-Lna7dB*Eph}*^$rF;2%-}DRIqQPi$H(Ph(5d6cH|@KFW6|UwH1Jo+=2pbnVrB!k*L(OWo4ta(U_)0;8#=rKR_%v#ZOF1z}boV_OCW z2kXY)ypasQ1L1_kg%+;R*AKke+}zxoZh<;_@_GlOum3_~V&d9{3=gsRby#wOCwHIC z&FN2{Tn-NqNFue6Lrsm1`a^YH_wScJ=inT$6V2mJ`0Lisi{&SfJK1ae12=DeYdhD$L)|s0H*|iYbE1el9(^h| z5!Vo-vqcgaIZ4_x{l2;$mE#yYnd4JXZuOG~@u#;U9KwQ?w`y~D#A zvt|`2MtM^GynUjHi3zRu86M6p2=i(6`Y&dp&{4StEXsEM5YHSlv ztuZ&z_zsgHH ztnvxYcY?bixyXR&`%1*s$U3{bU}LV+yzcJ8LjwZ?3#*=w+Ynyso8O8QiA2tIFPmD> z{(gQp9?XfeHS4rdUq0BPspUB6*(VxlSL~x!_xH2jRxP_6TtnAp4nKXWXFw8OOUtbj z4Kmb_4oBk|AHg_nBocX+K0Es9$jAsj;Ss^aB)_7zwpOE#>@%yAe>koD+NdbT-y$Mbr3NMNx_Wq#f zNv)9eCC45>Px#PO7Z+J7MjkOH+zs-SMlWbB?zrIptKMlawtuZg(DuO-hRs2$BV)RY z2J}h!4JuQj5Awfmml)Tpe$3Cw$x(Kv24~pxfamW);@M1@OlEK`<3KxVWs%nduVc@y oUUh1+O59R&+TLdV?Os(aL|d>!)uiKXC*}W^JKd93MBNepH&H7k82|tP literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/logout_bg.png b/app_AssetManagement/public/assets/img/logout_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..1fe4477db67f7fe4e07386a71b8ce46b88983758 GIT binary patch literal 122032 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 literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/other.png b/app_AssetManagement/public/assets/img/other.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7d6f6a14b8a1dcbdaeea568bb0f1340b878aab GIT binary patch literal 1293 zcmV+o1@iidP)Px($4Nv%RCodHoJ))hK^VvD>#@6DD;weAmWiALP%Ib9Eist%+5^tSF@&POiNXFPtQa3VW+F= ztMBofs@kfqnkI%TapY>NP5S7rcGTQx%xFwj%xnQ{Im(-~ZPkr8`l1%*x&6luFM zgE(Jftx(1Ht8-(c$2n=vXJpfVml-H*&I(lT9U8<;YjhaF($+KvG{M5W3Y8fUs2vih z=1;eA{-IdSki3XZgOa4EL1|Eu1SG|Di_)MZ2}p|R79|O4n50~;7|}aqoW&&WV{Sq5 zQ=F&)b~j*NG`{%OvKEv<5wWj~*DQ#ITb^gt_)I|{Icw%>s>7+Bmu^> z&so1;kc1s&P@K_3KOMBU<*y&gT@R0B=7gfX9md$<(atT4683=B4^==k?us?sI+RG0JEE z%Ep`qCHYloP#TmZ0ZB34qBJN;0+M37MM;8kG!HU}I*fYWb#UwQ&ysdbv2g7ENKWrI zVaj?GGyIC$wpRy5bT1lOzDGoUXqyTqQ}!$V9t*{KR$#KaR=IWwD>&(TuU-4g*-O_t zd{&?g3hS1Zo!xzopCCkz-$wVNR-fZ^ZBDuCVL@DA)#<}=?9=wJ(QuiXDwj(`_jMHK-bjj*a?t0iA9`kEUz2_7&4By8noP8LV z8sr=Ch1JUj>4ls+C}GvyQpaGL$#~&|l8#b6TX4|zl;WxyVGT<1tJI)0C`kg6V!B0X zP?7{B#dM3321PU|DO=HEIMkkW6M$$@kK8Dzpt?D6V#hmR^&KGp%$^IC;fV=5XRT1J z_c*eBJ~uY&8^}70qs1xgEI?0VrP{zh3eu7(93_11yR|00000NkvXXu0mjf D+ILdt literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/pdf.png b/app_AssetManagement/public/assets/img/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..e8def599ec46f1ce9c1990203c59cba7cac82468 GIT binary patch literal 2621 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 literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/img/ppt.png b/app_AssetManagement/public/assets/img/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6cb532c513169bb757d829ad1a1a4c9130146e GIT binary patch literal 2220 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 \ No newline at end of file diff --git a/app_AssetManagement/public/assets/json/data-dictionary.json b/app_AssetManagement/public/assets/json/data-dictionary.json new file mode 100644 index 0000000..528c110 --- /dev/null +++ b/app_AssetManagement/public/assets/json/data-dictionary.json @@ -0,0 +1,39 @@ + [ + { + "srfkey": "SysOperator", + "emptytext": "未定义", + "codelisttype":"dynamic", + "appdataentity":"", + "appdedataset":"", + "items": [] + }, + { + "srfkey": "YesNo", + "emptytext": "未定义", + "codelisttype":"static", + "items": [ + { + "id": "1", + "label": "是", + "text": "是", + "data":"", + "codename":"Item_1", + "value": "1", + + "disabled": false, + "default": false + } + , { + "id": "0", + "label": "否", + "text": "否", + "data":"", + "codename":"Item_0", + "value": "0", + + "disabled": false, + "default": false + } + ] + } +] \ No newline at end of file diff --git a/app_AssetManagement/public/assets/json/portlet-data.json b/app_AssetManagement/public/assets/json/portlet-data.json new file mode 100644 index 0000000..32960f8 --- /dev/null +++ b/app_AssetManagement/public/assets/json/portlet-data.json @@ -0,0 +1,2 @@ +[ +] \ No newline at end of file diff --git a/app_AssetManagement/public/assets/json/view-config.json b/app_AssetManagement/public/assets/json/view-config.json new file mode 100644 index 0000000..cc2511d --- /dev/null +++ b/app_AssetManagement/public/assets/json/view-config.json @@ -0,0 +1,1242 @@ +{ + "eamassetstategridview": { + "title": "资产状态信息", + "caption": "资产状态", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateGridView", + "viewfilename": "eamasset-state-grid-view", + "viewtag": "00fcbd6336b5d40a31a2c3d5c346d16c", + "memo": "" + }, + "eamdocumentassettypedocgridview": { + "title": "文档表格视图", + "caption": "文档", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentAssetTypeDocGridView", + "viewfilename": "eamdocument-asset-type-doc-grid-view", + "viewtag": "04760f08f434367b552fa8ab8cf191dd", + "memo": "系统自动添加" + }, + "wooriginpickupview": { + "title": "工单来源数据选择视图", + "caption": "工单来源", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "WOOriginPickupView", + "viewfilename": "woorigin-pickup-view", + "viewtag": "06ee1c500b1cb4aa576fb3b62b4ddb35", + "memo": "系统自动添加" + }, + "eamassettreeexpview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DETREEEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTreeExpView", + "viewfilename": "eamasset-tree-exp-view", + "viewtag": "075e8b706da4cd2328cf2239fd6f4d06", + "memo": "" + }, + "eamassettypeinfoview": { + "title": "资产类型信息", + "caption": "资产类型", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeInfoView", + "viewfilename": "eamasset-type-info-view", + "viewtag": "0a6cec446cd7b36771eccacdf2ce4b54", + "memo": "" + }, + "eamlocationstateeditview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateEditView", + "viewfilename": "eamlocation-state-edit-view", + "viewtag": "0b6fa9e6ebc1f6d1afaf3c19585840b0", + "memo": "系统自动添加" + }, + "eamapplyinfo_mainview": { + "title": "维护申请主信息", + "caption": "维护申请", + "viewtype": "DEEDITVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyInfo_MainView", + "viewfilename": "eamapply-info-main-view", + "viewtag": "0ef17d615938cdc829d919042267c23a", + "memo": "" + }, + "eamassettypeinfo_mainview": { + "title": "资产类型主信息", + "caption": "资产类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeInfo_MainView", + "viewfilename": "eamasset-type-info-main-view", + "viewtag": "0f5279839c91bc31fde9eebfa1b00f36", + "memo": "" + }, + "eamassetpartsgroupassetpartsgridview": { + "title": "备件包相关资产", + "caption": "资产备件包", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPartsGroupAssetPartsGridView", + "viewfilename": "eamasset-parts-group-asset-parts-grid-view", + "viewtag": "106abbe5884e49ca4506a105bd3d2031", + "memo": "系统自动添加" + }, + "eamsparepartsgroupeditview": { + "title": "备件包编辑视图", + "caption": "备件包", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupEditView", + "viewfilename": "eamspare-parts-group-edit-view", + "viewtag": "11699dae0b3815e39fbd72e14830f598", + "memo": "系统自动添加" + }, + "eamlocationtreeexpview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DETREEEXPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTreeExpView", + "viewfilename": "eamlocation-tree-exp-view", + "viewtag": "135343573fd869053d84ecc2f48ffd49", + "memo": "" + }, + "eamplanassetplangridview": { + "title": "维护计划信息", + "caption": "维护计划", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanAssetPlanGridView", + "viewfilename": "eamplan-asset-plan-grid-view", + "viewtag": "137ce0ca66c0d59f25a3a7c93496b1e6", + "memo": "系统自动添加" + }, + "eamassetstatemodellinegridview": { + "title": "资产状态模型明细表格视图", + "caption": "资产状态模型明细", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelLineGridView", + "viewfilename": "eamasset-state-model-line-grid-view", + "viewtag": "15caf81deb1f02479030f14d90ce5c3e", + "memo": "系统自动添加" + }, + "eamlocationeditview": { + "title": "功能位置编辑", + "caption": "功能位置", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationEditView", + "viewfilename": "eamlocation-edit-view", + "viewtag": "1769804cd7ab51624ac3c88c2090363b", + "memo": "系统自动添加" + }, + "eamapplytypeeditview": { + "title": "维护申请类型编辑", + "caption": "维护申请类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypeEditView", + "viewfilename": "eamapply-type-edit-view", + "viewtag": "1d768bbdaf3091c5d7131992a8ec7412", + "memo": "系统自动添加" + }, + "eamlocationtreechildgridview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTreeChildGridView", + "viewfilename": "eamlocation-tree-child-grid-view", + "viewtag": "21edc7e27023f06aac51f150f3fb1f10", + "memo": "系统自动添加" + }, + "eamassetstateeditview": { + "title": "资产状态信息", + "caption": "资产状态", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateEditView", + "viewfilename": "eamasset-state-edit-view", + "viewtag": "251816f09cb8f040c9309992cf957370", + "memo": "" + }, + "eamassetpartsgrouppartsassetgridview": { + "title": "备件包相关资产", + "caption": "资产备件包", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPartsGroupPartsAssetGridView", + "viewfilename": "eamasset-parts-group-parts-asset-grid-view", + "viewtag": "288c1be7c88b3547179327bd2e2d7a5a", + "memo": "" + }, + "eamlocationpickupview": { + "title": "功能位置数据选择视图", + "caption": "功能位置", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationPickupView", + "viewfilename": "eamlocation-pickup-view", + "viewtag": "2b28313d0f3925fa44b8683eb5ea54d6", + "memo": "系统自动添加" + }, + "eamworkordermastertabinfoview": { + "title": "工单信息", + "caption": "工单", + "viewtype": "DETABEXPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderMasterTabInfoView", + "viewfilename": "eamwork-order-master-tab-info-view", + "viewtag": "2fc820c040c33d878fc98791e3ad6d80", + "memo": "" + }, + "eamassetstatemodelgridview": { + "title": "资产状态模型信息", + "caption": "资产状态模型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelGridView", + "viewfilename": "eamasset-state-model-grid-view", + "viewtag": "30027967566375f388f110149cf48b49", + "memo": "" + }, + "eamworkorderquickcreateview": { + "title": "快速新建", + "caption": "工单", + "viewtype": "DEOPTVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderQuickCreateView", + "viewfilename": "eamwork-order-quick-create-view", + "viewtag": "326f3b663c055e3f1ec6fa0d2c3f0223", + "memo": "" + }, + "wooriginpickupgridview": { + "title": "工单来源选择表格视图", + "caption": "工单来源", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "WOOriginPickupGridView", + "viewfilename": "woorigin-pickup-grid-view", + "viewtag": "34cf27e1eddc36c197176c5632b97179", + "memo": "系统自动添加" + }, + "eamworkorderinfo_mainview": { + "title": "工单主信息", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderInfo_MainView", + "viewfilename": "eamwork-order-info-main-view", + "viewtag": "35d4b9cdba8869e6da734043cbd4f9a8", + "memo": "" + }, + "eamapplytypepickupgridview": { + "title": "维护申请类型选择表格视图", + "caption": "维护申请类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypePickupGridView", + "viewfilename": "eamapply-type-pickup-grid-view", + "viewtag": "36033e61af0b1c58739674b69f745704", + "memo": "系统自动添加" + }, + "eammonitorpointpickupview": { + "title": "测点数据选择视图", + "caption": "测点", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMMonitorPointPickupView", + "viewfilename": "eammonitor-point-pickup-view", + "viewtag": "3b351d19dc35d9e1f2bc5e4baf98e9b8", + "memo": "系统自动添加" + }, + "eamasseteditview": { + "title": "资产信息编辑", + "caption": "资产", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetEditView", + "viewfilename": "eamasset-edit-view", + "viewtag": "3bac4846ece1082b8c3799d9a1fc7dde", + "memo": "系统自动添加" + }, + "eamlocationstatemodelpickupview": { + "title": "功能位置状态模型数据选择视图", + "caption": "功能位置状态模型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelPickupView", + "viewfilename": "eamlocation-state-model-pickup-view", + "viewtag": "3d676a12800fca23bec463d5c5217413", + "memo": "系统自动添加" + }, + "eamdocumenttypegridview": { + "title": "文档类型信息", + "caption": "文档类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypeGridView", + "viewfilename": "eamdocument-type-grid-view", + "viewtag": "3fefaea52048336382356c9d224d17c1", + "memo": "" + }, + "eamwotypegridview": { + "title": "工单类型表格视图", + "caption": "工单类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypeGridView", + "viewfilename": "eamwotype-grid-view", + "viewtag": "47c5acae861f30987e0ef5e7c4cc0b21", + "memo": "" + }, + "eamlocationtypepickupview": { + "title": "功能位置类型数据选择视图", + "caption": "功能位置类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypePickupView", + "viewfilename": "eamlocation-type-pickup-view", + "viewtag": "4a5dd0204cc256862db03b36fc570e71", + "memo": "系统自动添加" + }, + "eamlocationtypegridview": { + "title": "功能位置类型信息", + "caption": "功能位置类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypeGridView", + "viewfilename": "eamlocation-type-grid-view", + "viewtag": "4c95ec14aa2de5370d9d81f7d85f4bd5", + "memo": "" + }, + "eamassetsummaryview": { + "title": "资产数据看板视图", + "caption": "资产", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetSummaryView", + "viewfilename": "eamasset-summary-view", + "viewtag": "4db903dc10459c98d4834775020d8b74", + "memo": "" + }, + "eamapplyassetapplygridview": { + "title": "维护申请信息", + "caption": "维护申请", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyAssetApplyGridView", + "viewfilename": "eamapply-asset-apply-grid-view", + "viewtag": "54b41ee0f64fc8764a9d3cf1559c09db", + "memo": "系统自动添加" + }, + "eamapplytypepickupview": { + "title": "维护申请类型数据选择视图", + "caption": "维护申请类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypePickupView", + "viewfilename": "eamapply-type-pickup-view", + "viewtag": "580afbcfa6a1d32b3591d40eaa1b9d5a", + "memo": "系统自动添加" + }, + "eamassettypepickupgridview": { + "title": "资产类型选择表格视图", + "caption": "资产类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypePickupGridView", + "viewfilename": "eamasset-type-pickup-grid-view", + "viewtag": "58b301299902245cdd7dfd5ae23545b4", + "memo": "系统自动添加" + }, + "eamapplygridview": { + "title": "维护申请信息", + "caption": "维护申请", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyGridView", + "viewfilename": "eamapply-grid-view", + "viewtag": "5c77b6ea410878aa7297d299eb755563", + "memo": "" + }, + "eamplaninfoview": { + "title": "维护计划信息", + "caption": "维护计划", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanInfoView", + "viewfilename": "eamplan-info-view", + "viewtag": "66df4099ca35ed7c25fe15aca40ea3a5", + "memo": "" + }, + "eamapplystategridview": { + "title": "维护申请状态表格视图", + "caption": "维护申请状态", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyStateGridView", + "viewfilename": "eamapply-state-grid-view", + "viewtag": "67367b30b36597f2b4f455b9738f4dd8", + "memo": "" + }, + "eamworkorderassetwogridview": { + "title": "工单信息", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderAssetWOGridView", + "viewfilename": "eamwork-order-asset-wogrid-view", + "viewtag": "676593404c77c76b49ada7a06d45a25b", + "memo": "系统自动添加" + }, + "eamwotypepickupview": { + "title": "工单类型数据选择视图", + "caption": "工单类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypePickupView", + "viewfilename": "eamwotype-pickup-view", + "viewtag": "687ed577b14b3da7a542f17d0a1a6529", + "memo": "系统自动添加" + }, + "eamservicelevelpickupview": { + "title": "服务等级数据选择视图", + "caption": "服务等级", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelPickupView", + "viewfilename": "eamservice-level-pickup-view", + "viewtag": "688cebc536955dbea3a807bd19d98fcc", + "memo": "系统自动添加" + }, + "eamlocationtypepickupgridview": { + "title": "功能位置类型选择表格视图", + "caption": "功能位置类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypePickupGridView", + "viewfilename": "eamlocation-type-pickup-grid-view", + "viewtag": "6a395ea52232233416d9c7120518863d", + "memo": "系统自动添加" + }, + "eamassetstatemodeleditview": { + "title": "资产状态模型编辑视图", + "caption": "资产状态模型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelEditView", + "viewfilename": "eamasset-state-model-edit-view", + "viewtag": "6c2c69027dbbe13ab8d2732923487f59", + "memo": "系统自动添加" + }, + "eamassetinfoview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetInfoView", + "viewfilename": "eamasset-info-view", + "viewtag": "6c816d46a07d56b2a9afca077d9bbfc3", + "memo": "" + }, + "eamplansummaryview": { + "title": "维护计划主信息看板", + "caption": "维护计划", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanSummaryView", + "viewfilename": "eamplan-summary-view", + "viewtag": "6e69be88d76554770ec8448800b6881d", + "memo": "" + }, + "eamplaneditview": { + "title": "维护计划编辑视图", + "caption": "维护计划", + "viewtype": "DEEDITVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanEditView", + "viewfilename": "eamplan-edit-view", + "viewtag": "71e5025e5eabed8ee7dbaff4bf24a189", + "memo": "系统自动添加" + }, + "eamsparepartsproeditview": { + "title": "备件包物料编辑视图", + "caption": "备件包物料", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsPROEditView", + "viewfilename": "eamspare-parts-proedit-view", + "viewtag": "720d2effd5c5d4802fb833e4506e6153", + "memo": "系统自动添加" + }, + "eamsparepartspropartsprogridview": { + "title": "备件包下物料", + "caption": "备件包物料", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsPROPartsProGridView", + "viewfilename": "eamspare-parts-proparts-pro-grid-view", + "viewtag": "7288de876c6d32c0bef31803e540ccbd", + "memo": "" + }, + "eamassettypepickupview": { + "title": "资产类型数据选择视图", + "caption": "资产类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypePickupView", + "viewfilename": "eamasset-type-pickup-view", + "viewtag": "72c39b4fb4834276ae3933be232a2c90", + "memo": "系统自动添加" + }, + "eamplaninfo_mainview": { + "title": "维护计划主信息", + "caption": "维护计划", + "viewtype": "DEEDITVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanInfo_MainView", + "viewfilename": "eamplan-info-main-view", + "viewtag": "77a4e1c6dd284b75b0db1c44937f3d8b", + "memo": "" + }, + "eamworkordergridview": { + "title": "工单信息", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderGridView", + "viewfilename": "eamwork-order-grid-view", + "viewtag": "78b197ae25df6180e6c02c8b1b670a29", + "memo": "" + }, + "eamapplysummaryview": { + "title": "维护申请主信息看板", + "caption": "维护申请", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplySummaryView", + "viewfilename": "eamapply-summary-view", + "viewtag": "7a8816b602f7aa58d702cb0743841f59", + "memo": "" + }, + "eamlocationstatemodeleditview": { + "title": "功能位置状态模型信息", + "caption": "功能位置状态模型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelEditView", + "viewfilename": "eamlocation-state-model-edit-view", + "viewtag": "7bf1327f579d782d5cdb98528999a5e0", + "memo": "系统自动添加" + }, + "eamdocumenteditview": { + "title": "文档编辑视图", + "caption": "文档", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentEditView", + "viewfilename": "eamdocument-edit-view", + "viewtag": "7d7cbe6f35cdf729007b90156298a515", + "memo": "系统自动添加" + }, + "eamassetpartsgroupeditview": { + "title": "资产备件包编辑视图", + "caption": "资产备件包", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPartsGroupEditView", + "viewfilename": "eamasset-parts-group-edit-view", + "viewtag": "7d805e7ef99d4689b7b68c2c6247dceb", + "memo": "系统自动添加" + }, + "eamplanlinegridview": { + "title": "计划步骤表格视图", + "caption": "计划步骤", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanLineGridView", + "viewfilename": "eamplan-line-grid-view", + "viewtag": "7ecd11c1c5ee3add05dd5915be17cdb7", + "memo": "系统自动添加" + }, + "eamsparepartsgrouppickupview": { + "title": "备件包数据选择视图", + "caption": "备件包", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupPickupView", + "viewfilename": "eamspare-parts-group-pickup-view", + "viewtag": "81139a9fb0fce24a58db188651ba7155", + "memo": "系统自动添加" + }, + "eamplanlineeditview": { + "title": "计划步骤编辑", + "caption": "计划步骤", + "viewtype": "DEEDITVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanLineEditView", + "viewfilename": "eamplan-line-edit-view", + "viewtag": "82e6b21fb5252ac02580ad072b168cef", + "memo": "系统自动添加" + }, + "eamworkorderchildwogridview": { + "title": "子工单表格", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderChildWOGridView", + "viewfilename": "eamwork-order-child-wogrid-view", + "viewtag": "8a03ef5ec2679c20c8072339004dcaaf", + "memo": "" + }, + "eamdocumenttypepickupgridview": { + "title": "文档类型选择表格视图", + "caption": "文档类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypePickupGridView", + "viewfilename": "eamdocument-type-pickup-grid-view", + "viewtag": "8dad4ab59adf6e7eb152878eb283da71", + "memo": "系统自动添加" + }, + "eamworkordereditview": { + "title": "工单编辑视图", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderEditView", + "viewfilename": "eamwork-order-edit-view", + "viewtag": "8e9374f1a99e9f5e7b70b37ea8c6936c", + "memo": "系统自动添加" + }, + "eamassetpickupview": { + "title": "资产数据选择视图", + "caption": "资产", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPickupView", + "viewfilename": "eamasset-pickup-view", + "viewtag": "906130a9861c2b0cff3173c9e171c1d1", + "memo": "系统自动添加" + }, + "eammonitorpointpickupgridview": { + "title": "测点选择表格视图", + "caption": "测点", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMMonitorPointPickupGridView", + "viewfilename": "eammonitor-point-pickup-grid-view", + "viewtag": "91dd54198b1e7777908d564a86bc548d", + "memo": "系统自动添加" + }, + "eamapplyinfoview": { + "title": "维护申请信息", + "caption": "维护申请", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyInfoView", + "viewfilename": "eamapply-info-view", + "viewtag": "96e58ee9a57415beb8209aae53b14926", + "memo": "" + }, + "eamdocumentgridview": { + "title": "文档信息", + "caption": "文档", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentGridView", + "viewfilename": "eamdocument-grid-view", + "viewtag": "9930ab7fa32bcb829b706489a25ca808", + "memo": "" + }, + "eamworkorderpickupgridview": { + "title": "工单选择表格视图", + "caption": "工单", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderPickupGridView", + "viewfilename": "eamwork-order-pickup-grid-view", + "viewtag": "99fce329ae1f308142b5b735a41769eb", + "memo": "系统自动添加" + }, + "eamdocumenttypeeditview": { + "title": "文档类型编辑", + "caption": "文档类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypeEditView", + "viewfilename": "eamdocument-type-edit-view", + "viewtag": "9cfb79c7e6fd653338c0366c9d304384", + "memo": "系统自动添加" + }, + "eamsparepartsgroupinfoview": { + "title": "备件包信息", + "caption": "备件包", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupInfoView", + "viewfilename": "eamspare-parts-group-info-view", + "viewtag": "9d4bfdacbd01e6a5072e50c5ecb24e70", + "memo": "" + }, + "eamsparepartsgroupinfo_mainview": { + "title": "备件包信息", + "caption": "备件包", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupInfo_MainView", + "viewfilename": "eamspare-parts-group-info-main-view", + "viewtag": "9e6a4acf7233f5e1643cbbc7509480b6", + "memo": "" + }, + "eamlocationstatemodelgridview": { + "title": "功能位置状态模型信息", + "caption": "功能位置状态模型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelGridView", + "viewfilename": "eamlocation-state-model-grid-view", + "viewtag": "9e9b3600ba892d31757bacef1dcc9458", + "memo": "" + }, + "eamproductpickupgridview": { + "title": "产品选择表格视图", + "caption": "产品", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMPRODUCTPickupGridView", + "viewfilename": "eamproductpickup-grid-view", + "viewtag": "a0c0a1e17b2f207a526c5e4240267b11", + "memo": "系统自动添加" + }, + "eamlocationstatelistexpview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DELISTEXPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateListExpView", + "viewfilename": "eamlocation-state-list-exp-view", + "viewtag": "a3d6a9a21765dd59afa2d3d20a99096c", + "memo": "" + }, + "eamlocationinfo_mainview": { + "title": "功能位置编辑视图", + "caption": "功能位置", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationInfo_MainView", + "viewfilename": "eamlocation-info-main-view", + "viewtag": "a82c591e524f7289432a30a5ccfa8908", + "memo": "" + }, + "eamlocationstatepickupview": { + "title": "功能位置状态数据选择视图", + "caption": "功能位置状态", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStatePickupView", + "viewfilename": "eamlocation-state-pickup-view", + "viewtag": "a9f7eb2645c6505a232a0a13742c42a7", + "memo": "系统自动添加" + }, + "eamassetstatemodelpickupgridview": { + "title": "资产状态模型选择表格视图", + "caption": "资产状态模型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelPickupGridView", + "viewfilename": "eamasset-state-model-pickup-grid-view", + "viewtag": "a9f86b6e01c06082f119369de0ee8f01", + "memo": "系统自动添加" + }, + "eamassetstatemodellineeditview": { + "title": "资产状态模型明细编辑视图", + "caption": "资产状态模型明细", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelLineEditView", + "viewfilename": "eamasset-state-model-line-edit-view", + "viewtag": "ad2a01fb2fd055e63d60260a18136d61", + "memo": "系统自动添加" + }, + "eamassetstatepickupgridview": { + "title": "资产状态选择表格视图", + "caption": "资产状态", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStatePickupGridView", + "viewfilename": "eamasset-state-pickup-grid-view", + "viewtag": "aec3c3b9b959ac67bf41fe45cca7808b", + "memo": "系统自动添加" + }, + "eamassetinfo_mainview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetInfo_MainView", + "viewfilename": "eamasset-info-main-view", + "viewtag": "afb13d98ae97ebb876598388432f8c1d", + "memo": "" + }, + "eamworkordermastersummaryview": { + "title": "概览", + "caption": "工单", + "viewtype": "DEPORTALVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderMasterSummaryView", + "viewfilename": "eamwork-order-master-summary-view", + "viewtag": "b1d6c73a4090f7747188a191cbb59000", + "memo": "" + }, + "eamlocationchildgridview": { + "title": "功能位置表格视图", + "caption": "功能位置", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationChildGridView", + "viewfilename": "eamlocation-child-grid-view", + "viewtag": "b24fce391aeca43222a1017b50ba40e2", + "memo": "" + }, + "eamplanpickupgridview": { + "title": "维护计划选择表格视图", + "caption": "维护计划", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanPickupGridView", + "viewfilename": "eamplan-pickup-grid-view", + "viewtag": "b3cc4865b65edc16f8ad37d87bda4bae", + "memo": "系统自动添加" + }, + "eamlocationstatemodellineeditview": { + "title": "功能位置状态模型明细编辑视图", + "caption": "功能位置状态模型明细", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelLineEditView", + "viewfilename": "eamlocation-state-model-line-edit-view", + "viewtag": "b3d85711a6feb998249451ba167895d2", + "memo": "系统自动添加" + }, + "eamassettypegridview": { + "title": "资产类型信息", + "caption": "资产类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeGridView", + "viewfilename": "eamasset-type-grid-view", + "viewtag": "b4c8e0e90e3940abee6c5f4909fd0e00", + "memo": "" + }, + "eamlocationstatepickupgridview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStatePickupGridView", + "viewfilename": "eamlocation-state-pickup-grid-view", + "viewtag": "b56347aaab650c59a8338876600c21e4", + "memo": "系统自动添加" + }, + "eamsparepartsgroupgridview": { + "title": "备件包信息", + "caption": "备件包", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupGridView", + "viewfilename": "eamspare-parts-group-grid-view", + "viewtag": "b97ed65fd88f536ebb13419938b19e2d", + "memo": "" + }, + "eamwotypepickupgridview": { + "title": "工单类型选择表格视图", + "caption": "工单类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypePickupGridView", + "viewfilename": "eamwotype-pickup-grid-view", + "viewtag": "ba1263ca3437b411e86c330836d2a64b", + "memo": "系统自动添加" + }, + "eamlocationstatemodelpickupgridview": { + "title": "功能位置状态模型选择表格视图", + "caption": "功能位置状态模型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelPickupGridView", + "viewfilename": "eamlocation-state-model-pickup-grid-view", + "viewtag": "bb8b4b03a77ed63b8eb4ef3d62b669a6", + "memo": "系统自动添加" + }, + "eamassetquickcreateview": { + "title": "资产快速新建视图", + "caption": "资产", + "viewtype": "DEOPTVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetQuickCreateView", + "viewfilename": "eamasset-quick-create-view", + "viewtag": "bcdc34d8df9323426a402ba7b111fef2", + "memo": "" + }, + "eamservicelevelpickupgridview": { + "title": "服务等级选择表格视图", + "caption": "服务等级", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelPickupGridView", + "viewfilename": "eamservice-level-pickup-grid-view", + "viewtag": "bea6d22548223244eec14d59f1471c6e", + "memo": "系统自动添加" + }, + "eamworkordermasterinfoview": { + "title": "工单编辑视图", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderMasterInfoView", + "viewfilename": "eamwork-order-master-info-view", + "viewtag": "c2b1b2ac3d7b7e4916f77023fe667b63", + "memo": "" + }, + "eamassetlocationassetgridview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetLocationAssetGridView", + "viewfilename": "eamasset-location-asset-grid-view", + "viewtag": "c6a93309b2a9d12617cdbaf29731d2a4", + "memo": "" + }, + "eamassetchildgridview": { + "title": "资产表格视图", + "caption": "资产", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetChildGridView", + "viewfilename": "eamasset-child-grid-view", + "viewtag": "c8bf8b682adc459f7f285328199ba4b4", + "memo": "系统自动添加" + }, + "eamplanquickcreateview": { + "title": "快速新建", + "caption": "维护计划", + "viewtype": "DEOPTVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanQuickCreateView", + "viewfilename": "eamplan-quick-create-view", + "viewtag": "c98258106bd8b2d56bbadf7a67179c2e", + "memo": "" + }, + "eamserviceleveleditview": { + "title": "服务等级编辑", + "caption": "服务等级", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelEditView", + "viewfilename": "eamservice-level-edit-view", + "viewtag": "ca41431df21901bec3c62db4097e36d4", + "memo": "系统自动添加" + }, + "eamapplytypegridview": { + "title": "维护申请类型信息", + "caption": "维护申请类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypeGridView", + "viewfilename": "eamapply-type-grid-view", + "viewtag": "ca66d81a69c0f084e3f7cf1e99ae9d28", + "memo": "" + }, + "eamlocationsummaryview": { + "title": "功能位置数据看板视图", + "caption": "功能位置", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationSummaryView", + "viewfilename": "eamlocation-summary-view", + "viewtag": "cc29cbcb0398aa069d4b05f3469f0377", + "memo": "" + }, + "eamsparepartsgroupdashboardview": { + "title": "备件包数据看板视图", + "caption": "备件包", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupDashboardView", + "viewfilename": "eamspare-parts-group-dashboard-view", + "viewtag": "d12c50a13617e683c9ee4efee5f46906", + "memo": "" + }, + "eamassettypeeditview": { + "title": "资产类型信息", + "caption": "资产类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeEditView", + "viewfilename": "eamasset-type-edit-view", + "viewtag": "d1b8ecb4e8fc6808282289a1ee763fb8", + "memo": "系统自动添加" + }, + "eamlocationinfoview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationInfoView", + "viewfilename": "eamlocation-info-view", + "viewtag": "d3466c5c60a573062d543896976bf68c", + "memo": "" + }, + "appindexview": { + "title": "应用首页视图", + "caption": "资产管理", + "viewtype": "APPINDEXVIEW", + "viewmodule": "Base", + "viewname": "AppIndexView", + "viewfilename": "app-index-view", + "viewtag": "D44132B9-5261-4008-A146-6287A80D5D31", + "memo": "" + }, + "eamassetstatemodelpickupview": { + "title": "资产状态模型数据选择视图", + "caption": "资产状态模型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelPickupView", + "viewfilename": "eamasset-state-model-pickup-view", + "viewtag": "d69c20799b79d71f84ed52f036b3490c", + "memo": "系统自动添加" + }, + "eamproductpickupview": { + "title": "产品数据选择视图", + "caption": "产品", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMPRODUCTPickupView", + "viewfilename": "eamproductpickup-view", + "viewtag": "d768b752c0404797713700991cbf95c5", + "memo": "系统自动添加" + }, + "eamdocumenttypepickupview": { + "title": "文档类型数据选择视图", + "caption": "文档类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypePickupView", + "viewfilename": "eamdocument-type-pickup-view", + "viewtag": "d7f78755bc3c9a5855de8a2fc67e668e", + "memo": "系统自动添加" + }, + "eamplangridview": { + "title": "维护计划信息", + "caption": "维护计划", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanGridView", + "viewfilename": "eamplan-grid-view", + "viewtag": "db1413b1b33f83be146b43ecb25dd82e", + "memo": "" + }, + "eamlocationtypeeditview": { + "title": "功能位置类型信息", + "caption": "功能位置类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypeEditView", + "viewfilename": "eamlocation-type-edit-view", + "viewtag": "dd09755644dcf1e57c062b4e08e4ce3a", + "memo": "系统自动添加" + }, + "eamassetstatepickupview": { + "title": "资产状态数据选择视图", + "caption": "资产状态", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStatePickupView", + "viewfilename": "eamasset-state-pickup-view", + "viewtag": "ddfe97780b64a25b28b14a283fa27a61", + "memo": "系统自动添加" + }, + "eamworkorderpickupview": { + "title": "工单数据选择视图", + "caption": "工单", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderPickupView", + "viewfilename": "eamwork-order-pickup-view", + "viewtag": "e2c689498cfbde8c97c67a790b1831b8", + "memo": "系统自动添加" + }, + "eamapplystateeditview": { + "title": "维护申请状态编辑视图", + "caption": "维护申请状态", + "viewtype": "DEEDITVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyStateEditView", + "viewfilename": "eamapply-state-edit-view", + "viewtag": "e3f067b2352dbb274918bccb115ebcde", + "memo": "系统自动添加" + }, + "eamworkorderdatapaneleditview": { + "title": "工单编辑视图", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderDataPanelEditView", + "viewfilename": "eamwork-order-data-panel-edit-view", + "viewtag": "e7d505caec71f657e4e7a1db31836416", + "memo": "" + }, + "eamassettypesummaryview": { + "title": "资产类型主信息看板", + "caption": "资产类型", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeSummaryView", + "viewfilename": "eamasset-type-summary-view", + "viewtag": "e82ae69965b5b61347246f54ab96dc6f", + "memo": "" + }, + "eamsparepartsgrouppickupgridview": { + "title": "备件包选择表格视图", + "caption": "备件包", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupPickupGridView", + "viewfilename": "eamspare-parts-group-pickup-grid-view", + "viewtag": "ebf6c093d1d6c599cc011b2c54ab6bc2", + "memo": "系统自动添加" + }, + "eamlocationstatemodellinegridview": { + "title": "功能位置状态模型明细表格视图", + "caption": "功能位置状态模型明细", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelLineGridView", + "viewfilename": "eamlocation-state-model-line-grid-view", + "viewtag": "ecd1ec6299b5b24e2004fa15c4eef92d", + "memo": "系统自动添加" + }, + "eamservicelevelgridview": { + "title": "服务等级信息", + "caption": "服务等级", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelGridView", + "viewfilename": "eamservice-level-grid-view", + "viewtag": "edea4ef4e4810cea28340d5636e6e28d", + "memo": "" + }, + "eamlocationgridview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationGridView", + "viewfilename": "eamlocation-grid-view", + "viewtag": "eee617336f6dc6e5e97835d6309fd452", + "memo": "" + }, + "eamapplyquickcreateview": { + "title": "快速新建", + "caption": "维护申请", + "viewtype": "DEOPTVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyQuickCreateView", + "viewfilename": "eamapply-quick-create-view", + "viewtag": "ef9454c4b53cd737f1beca7bf2c5ea25", + "memo": "" + }, + "eamplanpickupview": { + "title": "维护计划数据选择视图", + "caption": "维护计划", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanPickupView", + "viewfilename": "eamplan-pickup-view", + "viewtag": "f38b93e7294aee1966d727940e0852f4", + "memo": "系统自动添加" + }, + "eamworkorderapplywogridview": { + "title": "产生的工单", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderApplyWOGridView", + "viewfilename": "eamwork-order-apply-wogrid-view", + "viewtag": "f51a84e7a2149cb66cb5db8370abb115", + "memo": "" + }, + "eamlocationpickupgridview": { + "title": "功能位置选择表格视图", + "caption": "功能位置", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationPickupGridView", + "viewfilename": "eamlocation-pickup-grid-view", + "viewtag": "f572d337efac74735bf54b199e054081", + "memo": "系统自动添加" + }, + "eamlocationstategridview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateGridView", + "viewfilename": "eamlocation-state-grid-view", + "viewtag": "f7c04762f2a3e3026c909e6191a0998f", + "memo": "" + }, + "eamassetpickupgridview": { + "title": "资产选择表格视图", + "caption": "资产", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPickupGridView", + "viewfilename": "eamasset-pickup-grid-view", + "viewtag": "fc2bbe178f6e4ee12ebeb45875b7f87c", + "memo": "系统自动添加" + }, + "eamassetgridview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetGridView", + "viewfilename": "eamasset-grid-view", + "viewtag": "fc4b884f4116e498cafad375e0b6cb7d", + "memo": "系统自动添加" + }, + "eamwotypeeditview": { + "title": "工单类型编辑视图", + "caption": "工单类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypeEditView", + "viewfilename": "eamwotype-edit-view", + "viewtag": "fc86dc7e981c8fcc8533f992bd51ce5c", + "memo": "系统自动添加" + }, + "eamlocationquickcreateview": { + "title": "快速新建", + "caption": "功能位置", + "viewtype": "DEOPTVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationQuickCreateView", + "viewfilename": "eamlocation-quick-create-view", + "viewtag": "ffe322f0701bebd0de2fd525d20641c3", + "memo": "" + } +} \ No newline at end of file diff --git a/app_AssetManagement/public/assets/styles/loader.css b/app_AssetManagement/public/assets/styles/loader.css new file mode 100644 index 0000000..7d48a3c --- /dev/null +++ b/app_AssetManagement/public/assets/styles/loader.css @@ -0,0 +1,66 @@ +.loader { + position: relative; + width: 12.5em; + height: 12.5em; + transform: rotate(165deg); +} +.loader:before, .loader:after { + content: ''; + position: absolute; + top: 50%; + left: 50%; + display: block; + width: 2.5em; + height: 2.5em; + border-radius: 1.25em; + transform: translate(-50%, -50%); +} +.loader:before { + animation: before 2s infinite; +} +.loader:after { + animation: after 2s infinite; +} +@keyframes before { + 0% { + width: 2.5em; + box-shadow: 5em -2.5em rgba(88, 163, 243, 0.75), -5em 2.5em rgba(153, 202, 255, 0.75); + } + 35% { + width: 12.5em; + box-shadow: 0 -2.5em rgba(88, 163, 243, 0.75), 0 2.5em rgba(153, 202, 255, 0.75); + } + 70% { + width: 2.5em; + box-shadow: -5em -2.5em rgba(88, 163, 243, 0.75), 5em 2.5em rgba(153, 202, 255, 0.75); + } + 100% { + box-shadow: 5em -2.5em rgba(88, 163, 243, 0.75), -5em 2.5em rgba(153, 202, 255, 0.75); + } +} +@keyframes after { + 0% { + height: 2.5em; + box-shadow: 2.5em 5em rgba(224, 224, 224, 0.75), -2.5em -5em rgba(198, 200, 210, 0.75); + } + 35% { + height: 12.5em; + box-shadow: 2.5em 0 rgba(224, 224, 224, 0.75), -2.5em 0 rgba(198, 200, 210, 0.75); + } + 70% { + height: 2.5em; + box-shadow: 2.5em -5em rgba(224, 224, 224, 0.75), -2.5em 5em rgba(198, 200, 210, 0.75); + } + 100% { + box-shadow: 2.5em 5em rgba(224, 224, 224, 0.75), -2.5em -5em rgba(198, 200, 210, 0.75); + } +} +/** * Attempt to center the whole thing! */ +html, body { + height: 100%; +} +.loader { + position: absolute; + top: calc(50% - 6.25em); + left: calc(50% - 6.25em); +} diff --git a/app_AssetManagement/public/assets/tinymce/langs/en_US.js b/app_AssetManagement/public/assets/tinymce/langs/en_US.js new file mode 100644 index 0000000..3018c1b --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/langs/en_US.js @@ -0,0 +1,230 @@ +tinymce.addI18n('en_US',{ +"Cut": "Cut", +"Heading 5": "Heading 5", +"Header 2": "Header 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.", +"Heading 4": "Heading 4", +"Div": "Div", +"Heading 2": "Heading 2", +"Paste": "Paste", +"Close": "Close", +"Font Family": "Font Family", +"Pre": "Pre", +"Align right": "Align right", +"New document": "New document", +"Blockquote": "Blockquote", +"Numbered list": "Numbered list", +"Heading 1": "Heading 1", +"Headings": "Headings", +"Increase indent": "Increase indent", +"Formats": "Formats", +"Headers": "Headers", +"Select all": "Select all", +"Header 3": "Header 3", +"Blocks": "Blocks", +"Undo": "Undo", +"Strikethrough": "Strike-through", +"Bullet list": "Bullet list", +"Header 1": "Header 1", +"Superscript": "Superscript", +"Clear formatting": "Clear formatting", +"Font Sizes": "Font Sizes", +"Subscript": "Subscript", +"Header 6": "Header 6", +"Redo": "Redo", +"Paragraph": "Paragraph", +"Ok": "Ok", +"Bold": "Bold", +"Code": "Code", +"Italic": "Italic", +"Align center": "Align centre", +"Header 5": "Header 5", +"Heading 6": "Heading 6", +"Heading 3": "Heading 3", +"Decrease indent": "Decrease indent", +"Header 4": "Header 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.", +"Underline": "Underline", +"Cancel": "Cancel", +"Justify": "Justify", +"Inline": "Inline", +"Copy": "Copy", +"Align left": "Align left", +"Visual aids": "Visual aids", +"Lower Greek": "Lower Greek", +"Square": "Square", +"Default": "Default", +"Lower Alpha": "Lower Alpha", +"Circle": "Circle", +"Disc": "Disc", +"Upper Alpha": "Upper Alpha", +"Upper Roman": "Upper Roman", +"Lower Roman": "Lower Roman", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.", +"Name": "Name", +"Anchor": "Anchor", +"Id": "ID", +"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?", +"Restore last draft": "Restore last draft", +"Special character": "Special character", +"Source code": "Source code", +"Language": "Language", +"Insert\/Edit code sample": "Insert\/Edit code sample", +"B": "B", +"R": "R", +"G": "G", +"Color": "Colour", +"Right to left": "Right to left", +"Left to right": "Left to right", +"Emoticons": "Emoticons", +"Robots": "Robots", +"Document properties": "Document properties", +"Title": "Title", +"Keywords": "Keywords", +"Encoding": "Encoding", +"Description": "Description", +"Author": "Author", +"Fullscreen": "Full-screen", +"Horizontal line": "Horizontal line", +"Horizontal space": "Horizontal space", +"Insert\/edit image": "Insert\/edit image", +"General": "General", +"Advanced": "Advanced", +"Source": "Source", +"Border": "Border", +"Constrain proportions": "Constrain proportions", +"Vertical space": "Vertical space", +"Image description": "Image description", +"Style": "Style", +"Dimensions": "Dimensions", +"Insert image": "Insert image", +"Image": "Image", +"Zoom in": "Zoom in", +"Contrast": "Contrast", +"Back": "Back", +"Gamma": "Gamma", +"Flip horizontally": "Flip horizontally", +"Resize": "Resize", +"Sharpen": "Sharpen", +"Zoom out": "Zoom out", +"Image options": "Image options", +"Apply": "Apply", +"Brightness": "Brightness", +"Rotate clockwise": "Rotate clockwise", +"Rotate counterclockwise": "Rotate counterclockwise", +"Edit image": "Edit image", +"Color levels": "Colour levels", +"Crop": "Crop", +"Orientation": "Orientation", +"Flip vertically": "Flip vertically", +"Invert": "Invert", +"Date\/time": "Date\/time", +"Insert date\/time": "Insert date\/time", +"Remove link": "Remove link", +"Url": "URL", +"Text to display": "Text to display", +"Anchors": "Anchors", +"Insert link": "Insert link", +"Link": "Link", +"New window": "New window", +"None": "None", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?", +"Paste or type a link": "Paste or type a link", +"Target": "Target", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", +"Insert\/edit link": "Insert\/edit link", +"Insert\/edit video": "Insert\/edit video", +"Media": "Media", +"Alternative source": "Alternative source", +"Paste your embed code below:": "Paste your embed code below:", +"Insert video": "Insert video", +"Poster": "Poster", +"Insert\/edit media": "Insert\/edit media", +"Embed": "Embed", +"Nonbreaking space": "Non-breaking space", +"Page break": "Page break", +"Paste as text": "Paste as text", +"Preview": "Preview", +"Print": "Print", +"Save": "Save", +"Could not find the specified string.": "Could not find the specified string.", +"Replace": "Replace", +"Next": "Next", +"Whole words": "Whole words", +"Find and replace": "Find and replace", +"Replace with": "Replace with", +"Find": "Find", +"Replace all": "Replace all", +"Match case": "Match case", +"Prev": "Prev", +"Spellcheck": "Spell-check", +"Finish": "Finish", +"Ignore all": "Ignore all", +"Ignore": "Ignore", +"Add to Dictionary": "Add to Dictionary", +"Insert row before": "Insert row before", +"Rows": "Rows", +"Height": "Height", +"Paste row after": "Paste row after", +"Alignment": "Alignment", +"Border color": "Border colour", +"Column group": "Column group", +"Row": "Row", +"Insert column before": "Insert column before", +"Split cell": "Split cell", +"Cell padding": "Cell padding", +"Cell spacing": "Cell spacing", +"Row type": "Row type", +"Insert table": "Insert table", +"Body": "Body", +"Caption": "Caption", +"Footer": "Footer", +"Delete row": "Delete row", +"Paste row before": "Paste row before", +"Scope": "Scope", +"Delete table": "Delete table", +"H Align": "H Align", +"Top": "Top", +"Header cell": "Header cell", +"Column": "Column", +"Row group": "Row group", +"Cell": "Cell", +"Middle": "Middle", +"Cell type": "Cell type", +"Copy row": "Copy row", +"Row properties": "Row properties", +"Table properties": "Table properties", +"Bottom": "Bottom", +"V Align": "V Align", +"Header": "Header", +"Right": "Right", +"Insert column after": "Insert column after", +"Cols": "Cols", +"Insert row after": "Insert row after", +"Width": "Width", +"Cell properties": "Cell properties", +"Left": "Left", +"Cut row": "Cut row", +"Delete column": "Delete column", +"Center": "Centre", +"Merge cells": "Merge cells", +"Insert template": "Insert template", +"Templates": "Templates", +"Background color": "Background colour", +"Custom...": "Custom...", +"Custom color": "Custom colour", +"No color": "No colour", +"Text color": "Text colour", +"Table of Contents": "Table of Contents", +"Show blocks": "Show blocks", +"Show invisible characters": "Show invisible characters", +"Words: {0}": "Words: {0}", +"Insert": "Insert", +"File": "File", +"Edit": "Edit", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help", +"Tools": "Tools", +"View": "View", +"Table": "Table", +"Format": "Format" +}); \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/langs/zh_CN.js b/app_AssetManagement/public/assets/tinymce/langs/zh_CN.js new file mode 100644 index 0000000..0f3cf92 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/langs/zh_CN.js @@ -0,0 +1,261 @@ +tinymce.addI18n('zh_CN',{ +"Redo": "\u91cd\u590d", +"Undo": "\u64a4\u6d88", +"Cut": "\u526a\u5207", +"Copy": "\u590d\u5236", +"Paste": "\u7c98\u8d34", +"Select all": "\u5168\u9009", +"New document": "\u65b0\u6587\u6863", +"Ok": "\u786e\u5b9a", +"Cancel": "\u53d6\u6d88", +"Visual aids": "\u7f51\u683c\u7ebf", +"Bold": "\u7c97\u4f53", +"Italic": "\u659c\u4f53", +"Underline": "\u4e0b\u5212\u7ebf", +"Strikethrough": "\u5220\u9664\u7ebf", +"Superscript": "\u4e0a\u6807", +"Subscript": "\u4e0b\u6807", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Align left": "\u5de6\u5bf9\u9f50", +"Align center": "\u5c45\u4e2d", +"Align right": "\u53f3\u5bf9\u9f50", +"Justify": "\u4e24\u7aef\u5bf9\u9f50", +"Bullet list": "\u9879\u76ee\u7b26\u53f7", +"Numbered list": "\u7f16\u53f7\u5217\u8868", +"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", +"Increase indent": "\u589e\u52a0\u7f29\u8fdb", +"Close": "\u5173\u95ed", +"Formats": "\u683c\u5f0f", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002", +"Headers": "\u6807\u9898", +"Header 1": "\u6807\u98981", +"Header 2": "\u6807\u98982", +"Header 3": "\u6807\u98983", +"Header 4": "\u6807\u98984", +"Header 5": "\u6807\u98985", +"Header 6": "\u6807\u98986", +"Headings": "\u6807\u9898", +"Heading 1": "\u6807\u98981", +"Heading 2": "\u6807\u98982", +"Heading 3": "\u6807\u98983", +"Heading 4": "\u6807\u98984", +"Heading 5": "\u6807\u98985", +"Heading 6": "\u6807\u98986", +"Preformatted": "\u9884\u683c\u5f0f\u5316", +"Div": "Div\u533a\u5757", +"Pre": "\u9884\u683c\u5f0f\u6587\u672c", +"Code": "\u4ee3\u7801", +"Paragraph": "\u6bb5\u843d", +"Blockquote": "\u5f15\u7528", +"Inline": "\u6587\u672c", +"Blocks": "\u533a\u5757", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", +"Font Family": "\u5b57\u4f53", +"Font Sizes": "\u5b57\u53f7", +"Class": "Class", +"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf", +"OR": "\u6216", +"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64", +"Upload": "\u4e0a\u4f20", +"Block": "\u5757", +"Align": "\u5bf9\u9f50", +"Default": "\u9ed8\u8ba4", +"Circle": "\u7a7a\u5fc3\u5706", +"Disc": "\u5b9e\u5fc3\u5706", +"Square": "\u65b9\u5757", +"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", +"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Anchor": "\u951a\u70b9", +"Name": "\u540d\u79f0", +"Id": "\u6807\u8bc6\u7b26", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", +"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", +"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", +"Special character": "\u7279\u6b8a\u7b26\u53f7", +"Source code": "\u6e90\u4ee3\u7801", +"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", +"Language": "\u8bed\u8a00", +"Code sample": "\u4ee3\u7801\u793a\u4f8b", +"Color": "\u989c\u8272", +"R": "R", +"G": "G", +"B": "B", +"Left to right": "\u4ece\u5de6\u5230\u53f3", +"Right to left": "\u4ece\u53f3\u5230\u5de6", +"Emoticons": "\u8868\u60c5", +"Document properties": "\u6587\u6863\u5c5e\u6027", +"Title": "\u6807\u9898", +"Keywords": "\u5173\u952e\u8bcd", +"Description": "\u63cf\u8ff0", +"Robots": "\u673a\u5668\u4eba", +"Author": "\u4f5c\u8005", +"Encoding": "\u7f16\u7801", +"Fullscreen": "\u5168\u5c4f", +"Action": "\u64cd\u4f5c", +"Shortcut": "\u5feb\u6377\u952e", +"Help": "\u5e2e\u52a9", +"Address": "\u5730\u5740", +"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f", +"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f", +"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84", +"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355", +"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):", +"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a", +"Learn more...": "\u4e86\u89e3\u66f4\u591a...", +"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}", +"Plugins": "\u63d2\u4ef6", +"Handy Shortcuts": "\u5feb\u6377\u952e", +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", +"Image description": "\u56fe\u7247\u63cf\u8ff0", +"Source": "\u5730\u5740", +"Dimensions": "\u5927\u5c0f", +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", +"General": "\u666e\u901a", +"Advanced": "\u9ad8\u7ea7", +"Style": "\u6837\u5f0f", +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", +"Border": "\u8fb9\u6846", +"Insert image": "\u63d2\u5165\u56fe\u7247", +"Image": "\u56fe\u7247", +"Image list": "\u56fe\u7247\u5217\u8868", +"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", +"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", +"Edit image": "\u7f16\u8f91\u56fe\u7247", +"Image options": "\u56fe\u7247\u9009\u9879", +"Zoom in": "\u653e\u5927", +"Zoom out": "\u7f29\u5c0f", +"Crop": "\u88c1\u526a", +"Resize": "\u8c03\u6574\u5927\u5c0f", +"Orientation": "\u65b9\u5411", +"Brightness": "\u4eae\u5ea6", +"Sharpen": "\u9510\u5316", +"Contrast": "\u5bf9\u6bd4\u5ea6", +"Color levels": "\u989c\u8272\u5c42\u6b21", +"Gamma": "\u4f3d\u9a6c\u503c", +"Invert": "\u53cd\u8f6c", +"Apply": "\u5e94\u7528", +"Back": "\u540e\u9000", +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", +"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", +"Insert link": "\u63d2\u5165\u94fe\u63a5", +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Text to display": "\u663e\u793a\u6587\u5b57", +"Url": "\u5730\u5740", +"Target": "\u6253\u5f00\u65b9\u5f0f", +"None": "\u65e0", +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", +"Remove link": "\u5220\u9664\u94fe\u63a5", +"Anchors": "\u951a\u70b9", +"Link": "\u94fe\u63a5", +"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", +"Link list": "\u94fe\u63a5\u5217\u8868", +"Insert video": "\u63d2\u5165\u89c6\u9891", +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", +"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", +"Alternative source": "\u955c\u50cf", +"Poster": "\u5c01\u9762", +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", +"Embed": "\u5185\u5d4c", +"Media": "\u5a92\u4f53", +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", +"Page break": "\u5206\u9875\u7b26", +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", +"Preview": "\u9884\u89c8", +"Print": "\u6253\u5370", +"Save": "\u4fdd\u5b58", +"Find": "\u67e5\u627e", +"Replace with": "\u66ff\u6362\u4e3a", +"Replace": "\u66ff\u6362", +"Replace all": "\u5168\u90e8\u66ff\u6362", +"Prev": "\u4e0a\u4e00\u4e2a", +"Next": "\u4e0b\u4e00\u4e2a", +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", +"Match case": "\u533a\u5206\u5927\u5c0f\u5199", +"Whole words": "\u5168\u5b57\u5339\u914d", +"Spellcheck": "\u62fc\u5199\u68c0\u67e5", +"Ignore": "\u5ffd\u7565", +"Ignore all": "\u5168\u90e8\u5ffd\u7565", +"Finish": "\u5b8c\u6210", +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Table properties": "\u8868\u683c\u5c5e\u6027", +"Delete table": "\u5220\u9664\u8868\u683c", +"Cell": "\u5355\u5143\u683c", +"Row": "\u884c", +"Column": "\u5217", +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", +"Split cell": "\u62c6\u5206\u5355\u5143\u683c", +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", +"Delete row": "\u5220\u9664\u884c", +"Row properties": "\u884c\u5c5e\u6027", +"Cut row": "\u526a\u5207\u884c", +"Copy row": "\u590d\u5236\u884c", +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", +"Delete column": "\u5220\u9664\u5217", +"Cols": "\u5217", +"Rows": "\u884c", +"Width": "\u5bbd", +"Height": "\u9ad8", +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", +"Caption": "\u6807\u9898", +"Left": "\u5de6\u5bf9\u9f50", +"Center": "\u5c45\u4e2d", +"Right": "\u53f3\u5bf9\u9f50", +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", +"Scope": "\u8303\u56f4", +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", +"H Align": "\u6c34\u5e73\u5bf9\u9f50", +"V Align": "\u5782\u76f4\u5bf9\u9f50", +"Top": "\u9876\u90e8\u5bf9\u9f50", +"Middle": "\u5782\u76f4\u5c45\u4e2d", +"Bottom": "\u5e95\u90e8\u5bf9\u9f50", +"Header cell": "\u8868\u5934\u5355\u5143\u683c", +"Row group": "\u884c\u7ec4", +"Column group": "\u5217\u7ec4", +"Row type": "\u884c\u7c7b\u578b", +"Header": "\u8868\u5934", +"Body": "\u8868\u4f53", +"Footer": "\u8868\u5c3e", +"Border color": "\u8fb9\u6846\u989c\u8272", +"Insert template": "\u63d2\u5165\u6a21\u677f", +"Templates": "\u6a21\u677f", +"Template": "\u6a21\u677f", +"Text color": "\u6587\u5b57\u989c\u8272", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u81ea\u5b9a\u4e49...", +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", +"No color": "\u65e0", +"Table of Contents": "\u5185\u5bb9\u5217\u8868", +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", +"Words: {0}": "\u5b57\u6570\uff1a{0}", +"{0} words": "{0} \u5b57", +"File": "\u6587\u4ef6", +"Edit": "\u7f16\u8f91", +"Insert": "\u63d2\u5165", +"View": "\u89c6\u56fe", +"Format": "\u683c\u5f0f", +"Table": "\u8868\u683c", +"Tools": "\u5de5\u5177", +"Powered by {0}": "\u7531{0}\u9a71\u52a8", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9" +}); \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/prism.css b/app_AssetManagement/public/assets/tinymce/prism.css new file mode 100644 index 0000000..1d58b3c --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/prism.css @@ -0,0 +1,141 @@ +/* PrismJS 1.14.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.inline.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.inline.min.css new file mode 100644 index 0000000..e4a77ff --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.inline.min.css @@ -0,0 +1 @@ +.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2}.mce-content-body{line-height:1.3} \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.min.css new file mode 100644 index 0000000..1434177 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.min.css @@ -0,0 +1 @@ +body{background-color:#FFFFFF;color:#000000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px;line-height:1.3;scrollbar-3dlight-color:#F0F0EE;scrollbar-arrow-color:#676662;scrollbar-base-color:#F0F0EE;scrollbar-darkshadow-color:#DDDDDD;scrollbar-face-color:#E0E0DD;scrollbar-highlight-color:#F0F0EE;scrollbar-shadow-color:#F0F0EE;scrollbar-track-color:#F5F5F5}td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:14px}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-content-body .mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:black;font-family:Arial;font-size:11px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;line-height:normal;font-weight:normal;text-align:left;-webkit-tap-highlight-color:transparent;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-object{border:1px dotted #3A3A3A;background:#D5D5D5 url(img/object.gif) no-repeat center}.mce-preview-object{display:inline-block;position:relative;margin:0 2px 0 2px;line-height:0;border:1px solid gray}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-preview-object .mce-shim{position:absolute;top:0;left:0;width:100%;height:100%;background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}figure.align-left{float:left}figure.align-right{float:right}figure.image.align-center{display:table;margin-left:auto;margin-right:auto}figure.image{display:inline-block;border:1px solid gray;margin:0 2px 0 1px;background:#f5f2f0}figure.image img{margin:8px 8px 0 8px}figure.image figcaption{margin:6px 8px 6px 8px;text-align:center}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-pagebreak{cursor:default;display:block;border:0;width:100%;height:5px;border:1px dashed #666;margin-top:15px;page-break-before:always}@media print{.mce-pagebreak{border:0}}.mce-item-anchor{cursor:default;display:inline-block;-webkit-user-select:all;-webkit-user-modify:read-only;-moz-user-select:all;-moz-user-modify:read-only;user-select:all;user-modify:read-only;width:9px !important;height:9px !important;border:1px dotted #3A3A3A;background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-nbsp,.mce-shy{background:#AAA}.mce-shy::after{content:'-'}.mce-match-marker{background:#AAA;color:#fff}.mce-match-marker-selected{background:#3399ff;color:#fff}.mce-spellchecker-word{border-bottom:2px solid rgba(208,2,27,0.5);cursor:default}.mce-spellchecker-grammar{border-bottom:2px solid #008000;cursor:default}.mce-item-table,.mce-item-table td,.mce-item-table th,.mce-item-table caption{border:1px dashed #BBB}td[data-mce-selected],th[data-mce-selected]{background-color:#2276d2 !important}.mce-edit-focus{outline:1px dotted #333}.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover{outline:2px solid #2276d2}.mce-content-body *[contentEditable=false][data-mce-selected]{outline:2px solid #2276d2}.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,.mce-content-body.mce-content-readonly *[contentEditable=true]:hover{outline:none}.mce-content-body *[data-mce-selected="inline-boundary"]{background:#bfe6ff}.mce-content-body .mce-item-anchor[data-mce-selected]{background:#D5D5D5 url(img/anchor.gif) no-repeat center}.mce-content-body hr{cursor:default}.mce-content-body table{-webkit-nbsp-mode:normal}.ephox-snooker-resizer-bar{background-color:#2276d2;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:.2} \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.mobile.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.mobile.min.css new file mode 100644 index 0000000..fa69a9d --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/content.mobile.min.css @@ -0,0 +1 @@ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{position:absolute;display:inline-block;background-color:green;opacity:.5}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%} \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-mobile.woff b/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 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 + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-small.ttf b/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce-small.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a983e2dc4cb30880fffe00e1f0879be4d95eb4cc GIT binary patch literal 9304 zcmcgyYj7Lab-s5Ozyf??34$wvB!~xr6$uf90D>SbkzA3IY?+cwJtDttQZgecqA2QN zS8_A$#<3iwZW2{-ovAyiIrXDI+=r%r>Si?Q&5S4YbR3WCaoZ$KV@#^abf)c$o3^go z5tjYVU4W!$N%fy*!MpdlXV1O&-0wV=j5EgSnaxy|yYIk2zPUy1LCZCynIk7>7r*~U z-+PuZ-iiAB(b=<$$b+a~Lhe60f8q0iyQAMj{W4?So?~;fPiRNQuQC>U0sTYA(4f7c z{sQ%PQ13Z*^4$3!D=oi^`bVf=pFeeE_Pw4TKEzo31Juu*oIStDcCq&uOWcEcY+?4~ zoU{8UUqbyD-tq3@sk7(6C$64h>SwC@UwE^ZG39p@dc!x|oc}W`@Boclb8)bJ^JOvi zb5#|~f>|mOI%zFxS40VR z&3M8W)?3>O@%&Jc7sAP6D6S9l&2c2Xkkkj$NjV~^7sBqSQEup}C|9n=2L|FwIX>Xn zmSsCOw{0sOaqLLiLe8y7+MZUX%LDOBOpd%NM8)Q88FPrF(~)JS*n$dg*iIO8w!xbX z-de#~7E5Mkx%=iSZ{Wn#qTEOpqr97kB!9%GF4-|1#g3#qTC%=6_02ln zd$9v=#e0<>JlE2Zj#T8!l~`n3OTSmIdsD6RU92prV9TME#tJSA4_1lg*a)~Nf(^4| zYFR$OlUftkOwDNG%{**?70oCSFNM+=FBv6sjF0n_mNbi{f)Vzxmwheu$4=X!j1gQ4 z8kvxN`dEF7@8#PxJHnP1U;GS%*U$*Mj}h;*zZUkFWKzSaZDuSK4`YE=lcm}>u*f%T z#i|HOSodXSbBpdEaVHuzS}Qb!f;FSGj>sMO;8k8$XmIP+oZNv%Z9XeBYI9o02Ilfr z)~o)CI>Y*~GJDt&>}M7`Sjvs@v>D({Jjyp4TH1$wHQI)-i)P92wP9yVLuu2C&2Hk! zMA}SKS0PUwS}Bn(4i2FbZuKQGg!&;NYlo;ai9@~PqGv-x&Jm8tHEie+ zt-X5GALI!lBR1Xh2wuUh+#~mF601b%^{X#@u%#y$40-**$*A7q@z+KC-*Rbpr2gIS z4F!WeE&fQI-_xQ;Cxgr@F#;k2Of%UgoC2T(FAk*AA=EHHcFjotQi_Y=}mSTC#7YkhbaR4Lc zhN)E%{MHq2*G?Ga%dEEf>vPqz1%8UC$)0nI63&zjcoC2fm#@^#JgLQ`p2T(_g*7C~ zWxaSa8&DYdlb5ioZ{`bEIIWhI-+INu#Vt&jrZkNxI-r6DR=5KVx@cgGWV8Z$TM9B zUpQr*+tlX|1~|WM2ZVAFjAMmh2e8x_VPZJI!$VQ-(-hIxleqXz=PIAR`p)=$^K5GA z*#n-R@@YQ(BhQ7mK0c3g$hn2>xa>a9iveCtH}N(j%g4B(SbW;K`pt`pp0@e>#^1TB z{K1c$tIpM*dJa6hGG*eu3 z)rh?M^2K0po6#G5Ego05t6uMGs-|#Fy(mju(Ntx-66`hF_)?CF1FPi?up zxMN3!3+SOn*i%%Lw~BSUQ84*dM*V*a!@v5xwiG?Odwow=nF9kHO1G+rzJJ?6j;IZS z3@PMrs0=dXg=S)04{$xsO$|yIZVG-5!eH@NAA-%(&gx8R8H=D!c zf#KuUurjgr9Ksx8Zh|!pHrLc`ft8kP#;|5Kw6D(Y0)OPD;Xrh8Em&!|I;m! zC6VfQ{UvB>Tijvf%CpdgGfb#UieRo>z;A*c(%>d>z9h(+f^fj96BY@HY=9HU+y>0k z%l2Zjf2w|-)nQM1*%&(jU2nj-GMiK_Mb2L-tC}hyhiim)ak9w?!7+cDJk6Y@ozzJI zlm4wK-M#zLXLdw0dv|Oxl!MV7XVUwOEj#vRCOn#Yg=Bl7A>i{i2WF<9KfZPA@#m*& z`PSom`}_A&o0}`&D2zUAJlvESnn?d03ZsSe#89TG@{+=LeL&~v4@m z%FJ3iL=ST&KgY)2w!!Nypge~eW5QCAVQxkd&IPtmZZFhyiVD>YMl(4fD-H?#QdGzr zkpxOo`MDON2}<~b9bzT+^lg7}&z={z_w7lv4|bXd4?Wo5|KOp6X6Il#7dz~;htui9 zXYC!UrJAAm!@~T?$b7-v+10hvtZS|F`xmFD7yW(|-8TM7dVIsi-rkKH#?w!QQ$ZuS zp`l?z(g>!)PhIMneEhDv9-r)~S`!vFd0$lBas$so0=h}?TMpAjcCA!7h+7-Hd`mUedb^5pd*3`PX zH1kE})v;*Ia$#tsF_j=neLCUPEZRr6XP)uY4>tYG%_W+qfIOOnVU=Mo3IAS{8 z;y8E(jgDWOZliP(fl6Fdtke326M*swgN-C>Zif}9&hs#Fb1ec(j zW!rGX>4I#)c>snAg%Ch`@{+zn7P!O&OD#)GXas(-68J3QAS6TJEgUl8=E9pT;qYk| z`RI!Hhd;ac=7);)`_DWxw(=)zTd~NAx9y6x(ux9Jf!5AtpbpM+Ju_e_k}VIoA>31w znwbnh2O9+r8yjTAPcB`%c8R7;`7+Drtt(rRl>OJPEu;0?HPRYH6MKnSxitA2n%e(K zQ~5=e=)z4ju})YJP-TPQvgiUI9T^FS;iQR`$pQ^m(Lh6smQ=*ZW7|_ZpMK@hM_+k* zXKMRnBS0oAJ>K6wu`5R zd4E2C|C1BB2d1`!J}l2L*M}y4HbA3nfv5T)HdDqAaA2!J1!=L;IWMkmVAGd( ztAp!^NOHT^k|DCI9^s0Q_)#IVX==E;dw6P7rhxq=JhQMD7E0~FvY$`rkT!}RM$!T~MH8V`A!2;V9ncYS z`EX^z#~Kk+>;NBTDXy1{c*)S?hNc@@T-VIFX6kXX#LL2VmTUpFBy(Z&846CgIZo^? zTHQ9x*|#EpA&DL%&|H&vU$N?#8?cQ+*l5HmcmeY!^a>+hfn$V}^pXpoAA;?R9-Y=k zrGq9Y{`&qh2Y;eMu~jSz)&NJBwL~H=oiZnZ zCi8<<(ZS=S*2N6faC0yi=8-LcHsr@*-*DC&pnDk^Jm3v{fDY1)+q%QUFD*>RELCbsf~&fvU->bv439**4GzWzbB9kV-N_KzK^PO06m_4ua7L zBP3y30){bOhi50Wtw863kPEn!A67IG| z>jS}YO%u#P#zqC6Vceo-4q6t|R_5e~26E>UM?8ih3LPp?;%Z!lG$Vnt(z>MPf)zU$ z3o0xat1JZ-Dmy4&mMbr6cNH-)#Kj~R*fb#}THyWeg|$_d%Ou#ql{6xAtFeY+o&uDR zBG>Jua6_S<7sk{=2w}KFSg~rDaJQY$7mNA4eK$(!eBe9f@@w^bpZeD41hkH7*UtM) zZ3qocKR!rmY~R<8Zb9r0`^;1zxdr>*g2s$7STXRs$>@Ug#-;t0HqDhl8{&o(YJ;Y9 z<8I37o=kFdf40nH+5Mx*>G6N-Y@Lkt_s7n@a<;Ye6)N%fI}Z$Gb`QrZEIzzDGjZJb zZfhsm_LrSpXX|Aufgu|_;0JkSTqMvsG^vi(nMUq(hxF0m2hxm;oW9D3dW~CZ(+g7^v=Pp{NSy zyhaYS@?aL(7v&G_Uy0^c-m#d2NvBEPWpXzIFeus;W&TajhwhbiHJ0hLk z-JRVB`?CkTxx%f+p~TJY9R&kR1iqK5>)MJ+O*J8sDu2Z|w`tdC18vL3!BZ_NQ=22m zc>yY5ooVhi=H5zn!>y>4OfGIF%`}x;(V%nm`*I95ak>P4vAffRmTZaFb|OYeC)pQ-o|HOr#6u&dryrOIxIU-Z%Ao%{-&^NSAh~vwM{{WirrM0*tdzE zp=SZCS5CF%JLtLT#iqvRS`|E4&=0v!6?Rqk9I|O+z0+9h9Axzl-#2dYc|)qAFdPqB ze=>%RLUH|v4oJr8cMhBqiUGu8R&FV0#bU~*K6fY<;DXkl@CKuSFQ^F1#@a7`!eSo3 zIs<((#U5ZM;0egD7-U>f_$vbwS_Z=Kr2}mgLQB&Y#IXs$-j%-a%6KxrD9~1d32Lr2 zzBHI6z$2)SaE{#Qbn@+NEE1VILHAhp#1!4TB9Sg-@z(9{jb<{Vl#XRavs+t=$!&YL zjb@aIW3lY96H|20#*R&$pnH0VP(M;bKwcSw1l+;5HWJVb-93M)- zXD0vR@#d}n$?84S%HGe7(pMsxFPHHZ*AFj)BAyDh;=(iXdp>k1`akjbB_+4dy^pw* z+zLI0x`kv@d$mmUTKejmGL4~B>!WzcdHks8jS^KA|*fz_Age;b?`C&<=pXw3n!1v^`AXCJ3r6PvEyukUBIV|BM9I0v$H78vUxUt zXzt9}8=G?r5E=;FoCqU{65x;&Hu_e8&UY+?Qh z#$rYE4^z^PieEW~M#kc;sCQG+URQr{?Bw|iXxobV4N5;&nto^T)DetJ#85v^>D}%h zK6G;a0^XZ=9(8Juv7PMQrTLQ!X!}#V`yEQot`EL+`qVi*)BQ|!oQjgF{ujT(yo@Qo zt-Ou;H{6{6Gt2P+>Z>mvTwSBG#n{hORjdeRsYqzyNR=xl3-T=}b)b*R9k|n|4(4IA z$b2UTyJaXi;3sk@B| zV}()4(k;I3-sYiMs6w?_0}HVzD=?PQ&3M8W)|*>$@xkFd&xMouP+TA3o8m}%E~yWt zlX65-&xPGlW8BbHQ7m1H4-CYWVtl}{Ez5RnZrfHm;@FY2g`8WFv^}fL76;;`m>hXc zh?33O3g!?=rz0y&u>}=gx1BKNY=bu&yfuTfek_^U&)qkdc>^b=7Uf1VALU&5vg zb;+)}|JkN(5oeAFDt08@-qi1_QQxT1y_eeYR=ijF!Lv>6=}1YwT!}@tHT8M*nm5!M z-=)&B3bq_tSFGTQ@L-i#mW_goJlHS`rq<5~cv5TNnyDELype|uu%a0S;w4uY=LMr+ zj`Ing(voJrkTb#__L8ru_ShLalre(KK_e5g&m605^1XD2W=Gia;-^2w;8iq&?qkF| z?XQLX#X>R-C%=)gP&|wUx|J-|zKKP?X)9JqP{O*eFq>O+2Z_7UsL-m?5DM0e(mEn{ z;e(fXsnX!q?K!y%jmmtgG%9mi#|Gx|Ro0_^L7ij0Sef1I2==odJ6On$^RyY@4Lr&> z8Cu$heKlH!v5RKG@U>uP3&UyCi_LD}$wb;rQ&(<~IhsP}~Y&HkW2 zs`oUb5b*Gq+Eb}^N<4>#P>nqe>JRb+kr5m3eFU%IR`!v5H;P+C>Gii> z_+V3aFc|XsgHutx$>Xny_`l`SZcqKY-x~@ByPN!x8o#GWk4^=dS7HQ21Q=$rjW`8B z37#KHXWU!D*NHhx#Mr{a@q(V@ID|PQAcvO6_VRpADfm(vj($L0D^sJ_T; zAsmud4!BU*!h$V;212pWZPCfKLiG--4+%jB*0O|UmHvKV;Z?yg&Xr9j@v9eS^IrA< zI0G!i+;TZg*byU^O|x?c6dh~)@th0%Q^+S?obd9>G- z_ugpf#v6^{aHG7vY0=E&jc>ixtXRZ9K^@(Dqs}bR;3LjkGQSq>by%pL9<2{?yHawh zCFa9%v@ll-hl|c~D@!rb)L7ukj{_JnH%zUJ;J2@EyK=%PUtyKaU!SX%E$~xBMfRNA zlyIhOz>9!8B zl1Ewxyi~43BWrR|t%4*nH#Cbt;1-xT;P9qhEUtzGg)J}NnO+4|DCe3X=~Wia1(@4V zBYj~pTk_Y%Ca@NRQ6=2mpd=IhO5PkAS90M5!HWg}iQlDsT8ab>;RS;Crk_n zcz8I0INp*WRAEf04~BKeONS6F$plf8@FN=0~vF80QwY3(#p1KhwQpWZbhj+tKk@c8<@bN&Tyw7d#IygI<(Uf~y?N0?J4w&Kgy*yD zB>OcG1cX9}8@aE!ixUW4m}ub0c6HM|A*u5=Gna1RowUWd#Ua?d%6Sp{x8< zp+c{L!)ECM%*zMI3Bo{#AbqI7hX;+8W{t?JFI@`uv=}|XSL1PYyXy76s%i??)Jw9& z6-`yPE5RP4MUHSTZ&y`CQ7ePW<+a0tx*n_$rLy{$T7$2)mRq&4+S*!2_!>0j$Cs$* z)%c@vkoVT(t)P0TQUD{BZs%*;6_+D-h^o=cWVtfR<<2GO&P6%t^WtTAV=XdAczxJ9 zSnjm;wD<1Xf1Q1s{W1G4`@t`J7Yy1{Y{T#%?J{Xv?8_LJy0w!-xvoQGz_uLdOUTEt z(}lqnIk5Z~2@FIc!(9#i%h=QZ#-7@8d2z>%3K!5r^{}U?C~qa}PNQJ*RY(1Q3&X$q zytWiQx_f<3m6-zr97?yWh`xWvL5`>lf($9-aHtG2jAFExv4=3!%e}@VO)?7 zmzc~}FtU^pLiw%I33>J{$e#tzsGDuV)2sat($nO8s9G(V6;(fEjj97RX~V1XE|!ae ztoM-(8%8Lp@I6YfI9xZNWMM0K%!w&Bynv!RWMl(lfwEp9KEf=*y1-2j{Ei&?t)JkD zC-b?mUcGTLZgSPC?1<~BwTzWq^=5OJJTQFR8dfH@oJ%uTSS!RD&EEwIvZ&6qs1 z9;UO+;E&ui9EeV?CG&-RJRdg`4T{#FhMS{`5mj@8<4R#%%@6e}X1|)`csXb7sT+?7 zSc|skJGggeES62^dLkQ(?c95??~^T(C6Q`>?L}y6Tij)2^;zh`IVRL)MKD(`;5R`J zX>gM`UlwFdK{#O535$e8HoysFZUg4&WqUB$KT$u+YOp6gY@F?ft~cOZnGLFzBImEr zubL_$hiim)aTnU zNGi`YMYmX6J408_Z2sxyGr#$_rqj7MXZ69X*Wc;#}N*V}d(Qf8HHOAqjX zVj``qlO?3z17r%}ki(mSJ?IVNi0O2Tc%)o+9^3g zUJAq<0T3iAsjOrv!m(@|E*pUpT!LOZo~~;1UxowFnIM zuzKJZD}c{D4ni^n-ohahZZ5pp0uG;Mk&mv3fB3UYZ+xg&zxVXh$p;1pA9!*yduV1$=)>Y1bA4#yrxhAy3p~{a zv6(V{fCF0&DoBf!&Ut=4bZt^sJ9hEa6+oX^KK(fC3Y+;#K0h*&&wpj+R*B|PnG@vz zao3~cRoBnj_2rF$zN!5K1N*1?0vo@)OC4HAM3URJnhcS>L+@rXyJ`Yj_)SNt#@0(0AHH zp>|5D1!<%BVI(b(Q#2836(Yu$-2v?(mk(Dad^jJ?tQ~xqg}7cY;sryG8=7utaa}Xx znyJUl0xt^NS+)h#lFWt8=O{Sg<~XspX?5E$XJ1wRLJ~bjp}D5;zI@p+H((ouu+fNB z@Eqn%=oLo10>=m`=_MC_a2U2PdURSFl@6Lb8LAMGv|n@n`s@3O9Q=tA#a6K>SOXkg z))a{}VSO-2P=iXnj;IRZOD(szTvFb zLH9B;c)%O@04H9uc4*tkkf2LpH*o`S30bu*3PK5ir2vXr<+JGe>pG~l0acS_>uQvZ zv2CCa%AlDHAr)kVfbf)nm0DF=90a2gMo7Z61PYU&U~Ob84m8FPWJ$afmR-hCs#_F= zwo0~i*{u?A5-VoOX@g}8oT5UJCERU`)(3*)nkJZojExFB!?;Dw9JDN^Rp;b~26E>U zM?8ih3LVN(;%Z!lG$Vnt!n&kpgC#o{3o0xaD=h~VDmy4&kt;7McNH-)#Kj~R*fb#} zTHyWeg|$^yiX_;;l{6xAw_*+XK?+bpid?ss!VS4vo*P$lA%x*_Va2Lo!aerjU_L)M zXy1cUdNA;vV)515J)i&9X9Tp4YFEztTxAFiPCq_GYHaV+6f1 zd-+^*$IDdW?{(}S$m|-4msoscS7!3K@!jSQvhA-p*^cHbR02abc)$DpD9U8anMrA@0S3x@n#-%g`6%^RZtC#isgVa8&iFFP^n5-)pYG}F>*1>6 ze5CNq=qLIb8{g)ly<=P7#%%-1^o~eJS64^Zfxi9&U0mT-{cvJ!dwb5n5`pjK^13#o zQc+Eaq{?4D&TZN?+CbZ~aqv`&%GBlva$bN6SZA8Mjk!0I-Ecc91(S=lgdB?2eUey- zxwt~Ug}a`2qzN~}T1!*8Jxu~aOqEGJEzeU8aH|P8l>oQNya}|y!7;=5)Ta zc|%IG^EbJjJ9Ct9s%;7~l5|MY_oy~bNWH|soc); zo6o%tL>rck8k;||D&;iM~^_>H!gkk`(n3Y}5TCte& ziO(I11-PK~C%nOE;0r3kva$9nAG4Upug*c=%&gOi**R@uk5m0UkkpgtO#Er;~5>$0CuL6LgRDpO~S0 zXC%_8oW6bgyJMNm7^P#GvHq=1`Q)}e+r~1=oK zE}gN=i({GIEoz&gjw`8$4rRs|E*u|9!KbJG;_=3<|H*1S)XLt=j?q^lnXeS_71s|h zgCd>^wc^4v@_RmXDEdG4_$4K`&%KYjl-vqEhPs7hQ+v5g^-B8csxpnCROzGqw1@Fk zb$~Yr01|V=9~1*`Cjq;kG4l!(*DW+l>asVM*&Y@I4~FZ z^}u^Ivo+7x{8jD7+S%Ig)H-#Ob5^%KO1#vAerWBQ^Fyxm`v3z2!1_y|0(c6m2rgWwQ29mCH5oi{Asr z;>#&oBIt3;3ef)B@(%E2jw@)WiM;N_cnLD5A9zpmuui-{>%B}OBYWbS?D`= za(;0U|EzMHEwPLElyL;%n?809rFs18%;Ld?v*(VVT8eGz&$5H)I*YF3;BJY<5c%w9 z*-uI5Qx4m=aP-N=`Lk>vUUif`2@dAj*-!cG^r@xuv7-x13uougFFX-Dd@;83$f@0@ uPA&DbY02?<@O%`6m*hO=G3f>N1lkT`;`CoRM=)wP63q_(y@A!b>-E1{Pg!yR literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.eot b/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.eot new file mode 100644 index 0000000000000000000000000000000000000000..8542df8d569c5ad817a72e362e3c6d42c0e8bf94 GIT binary patch literal 18912 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 i{JW$x@b5s{?f8Z_$)>>F9LM+S$3 + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.ttf b/app_AssetManagement/public/assets/tinymce/skins/lightgray/fonts/tinymce.ttf new file mode 100644 index 0000000000000000000000000000000000000000..929e633fce17e1531fc6fbdb7af9ae8a0d607e5f GIT binary patch literal 18748 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 literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/img/anchor.gif b/app_AssetManagement/public/assets/tinymce/skins/lightgray/img/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..606348c7f53dba169a9aca7279a2a973f4b07bdb GIT binary patch literal 53 zcmZ?wbhEHbWM^P!XkcUjg8%>jEB<5wG8q|kKzxu40~1eAV&{y5e`l1KFoiKNSOWkz C+YCGa literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/img/loader.gif b/app_AssetManagement/public/assets/tinymce/skins/lightgray/img/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..c69e937232b24ea30f01c68bbd2ebc798dcecfcb GIT binary patch literal 2608 zcmdVcdr(tX9tZGC9yiG~=H_*Q-0%n(kWqP*D#hw{AQu8;1%gl-Hrf&{2?48KX;hHy z3Ze*zEz4t3XdUFyLbNPUYlA`|B}P=N1fqtL1*}S;87#|-W9v<#G;ul(e%d3)N(^9c$d2Dz{7}?ErjNd;{EMKkCsk21~b9Gvg zDo<7L=3Z5HNbVlZUcm1eg#o#CZCJU`3IYHwM->zCd?uYrF3vKFeM}v?f+%s?E>ly|3W25ry9#NNbTx-}0ON58dTrs^ix{_1O0Wh~SVSBlH)Ajn zPn^Gbjz}PCtN@#keR&hK&Dhl-b$kZ8^S)x#dh0{7X=X%CCJk7P1PSO>T&S8I4{#Lg zb5#)o=;!ZP*1nM{cI4@(x7o27*SA()NHmrn67aN@Pmi~(i_SnrjYnwh36aG%!@i0d zqbvfa44f|?OG4ntP|nbjhEl1)Yp6ZN@yjy zy4==QmLy%t;ps3R?~f2KfTTI|2?q8dFd6^z5GF+Xa&Y)sjG)hxit80pPcOP zJ z*LW{SyGHD%hUotV+W%I}fBLAIx!8|7#}$;clKQ+{&FjDqGQ2ZNx(lYM3*%~}ILnao zM`aui55~ZFJlu^!5rdA9Q_7H68H_;##u{x(Yn-vSfIRCb^Nqsg zGRS!Egm>h+o<}LeV4&CLReo9FrDjDvs}8?JwC)#Qs|ie=r?~xUh)&*d`Fx>FG}%X# zNdtDHBKhLPC0wpooFDAQKL%*6T|ULH$=wX!NhcasgD3d;-d$I6yRK3yN+E~C1335_iLOt+*9uvSZ`>*KA}vm}08wRq=>5l|t*Na&jR z-C1&C`nkEk#sB|@yyt-#fXngP04My zm7u$Q%EJbHp`>~`5W&L{W!6`y&}LMS;jfUpgO~7TLVMRZ9IC)IZp0A${`yp0{&wco z#1nx@XMkhqeK%7?RE7JdLr1^nwFfaJ0Q&Lv?WNJ%9}VSJsNY2+UYs2%EU0J~ayFXv zi*?7KCXQHkD)O6!0Q%4N+HTODHxJ{kQSuQX$l-rSwkwh(zMkdfzxyGwl@yHC)C4p< z&n2%8#M?)Q@mgHL1ot8`SFdSEj9ye|jHy+U8#@HoUExG=@AVkRAe_qYm4EpzK6L*& zh`)26?V#f4#_h^P9G^%>h2-H3)$QP zQovu6J9qDvsxqweDdNNa!Lb?L4_UF{tLX_nN7r0U_vF14YKcGR-*Gl} zx3oG)bzf|65dBxD-;2ZCp??K;+TuQ9onnK?==5hzbkb^r_g>z4#D8mcv8(+XdoszA zCx-qhdgxMNMotj}SiL_6V(tLcsK7(M(r(%u<}QrVfOvyK6_;~NOTlPGfX@M7S5YQF z&*$(ylJMHJt^_aQeu{C6NaTE$G3HNN@_SnN8YcaKn%`)F@~L1x+ah7-gEJPpc6w%3 zyX}r+Qk$4RHZzfH){e~F*qJ{d*L8a6n4;U?+{de0-t)mal#TVxe)3F}^UBh+zd T)6_**#cgp_+?JL9(ew3BlNF>u literal 0 HcmV?d00001 diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/img/object.gif b/app_AssetManagement/public/assets/tinymce/skins/lightgray/img/object.gif new file mode 100644 index 0000000000000000000000000000000000000000..cccd7f023fb80908cb33bb7d9604236cd21b7ae7 GIT binary patch literal 152 zcmV;J0B8S4Nk%w1VG#fg0J9GO<>lo+KR<78Z?v?uS65g4{r%Y3*xlXT%F4>`@9+2b z_ww@cot>Tk|Nk>HGXMYpA^8LW000jFEC2ui01*HU000C<(8)=wd#<&tyXIMjHBV`d zBSi|xsj3(;nD0kQ0aJq8eLH~x02P|t2!_J&Wqb%0io?#xD.mce-container-body{display:flex;padding-right:16px}.mce-statusbar>.mce-container-body .mce-path{flex:1}.mce-wordcount{font-size:inherit;text-transform:uppercase;padding:8px 0}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative;font-size:11px}.mce-fullscreen .mce-resizehandle{display:none}.mce-statusbar .mce-flow-layout-item{margin:0}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:white}.mce-grid td.mce-grid-cell div{border:1px solid #c5c5c5;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#91bbe9}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#91bbe9}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#c5c5c5;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#91bbe9;background:#bdd6f2}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#8b8b8b}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-container b{font-weight:bold}.mce-container p{margin-bottom:5px}.mce-container a{cursor:pointer;color:#2276d2}.mce-container a:hover{text-decoration:underline}.mce-container ul{margin-left:15px}.mce-container .mce-table-striped{border-collapse:collapse;margin:10px}.mce-container .mce-table-striped thead>tr{background-color:#fafafa}.mce-container .mce-table-striped thead>tr th{font-weight:bold}.mce-container .mce-table-striped td,.mce-container .mce-table-striped th{padding:5px}.mce-container .mce-table-striped tr:nth-child(even){background-color:#fafafa}.mce-container .mce-table-striped tbody>tr:hover{background-color:#e1e1e1}.mce-branding{font-size:inherit;text-transform:uppercase;white-space:pre;padding:8px 0}.mce-branding a{font-size:inherit;color:inherit}.mce-top-part{position:relative}.mce-top-part::before{content:'';position:absolute;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);top:0;right:0;bottom:0;left:0;pointer-events:none}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-rtl .mce-statusbar>.mce-container-body>*:last-child{padding-right:0;padding-left:10px}.mce-rtl .mce-path{text-align:right;padding-right:16px}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.5;filter:alpha(opacity=50);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#2276d2}.mce-croprect-handle-move:focus{outline:1px solid #2276d2}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url('data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==')}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:#c5c5c5;border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:#c5c5c5;border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#fff;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#fff;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:#c5c5c5;border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#fff;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:#c5c5c5;border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#fff;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body .mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body .mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0 solid #c5c5c5;border-left-width:1px}.mce-sidebar-toolbar .mce-btn{border-left:0;border-right:0}.mce-sidebar-toolbar .mce-btn.mce-active,.mce-sidebar-toolbar .mce-btn.mce-active:hover{background-color:#555c66}.mce-sidebar-toolbar .mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover button,.mce-sidebar-toolbar .mce-btn.mce-active button i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button i{color:white;text-shadow:1px 1px none}.mce-sidebar-panel{border:0 solid #c5c5c5;border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #f3f3f3;border:0 solid #c5c5c5;background-color:#fff}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);top:0;left:0;background:#FFF;border:1px solid #c5c5c5;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#c5c5c5;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-top{margin-top:-10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-top>.mce-arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#c5c5c5;top:auto;bottom:-11px}.mce-floatpanel.mce-popover.mce-top>.mce-arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start,.mce-floatpanel.mce-popover.mce-top.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end,.mce-floatpanel.mce-popover.mce-top.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow,.mce-floatpanel.mce-popover.mce-top.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#FFF}#mce-modal-block.mce-in{opacity:.5;filter:alpha(opacity=50);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#9b9b9b}.mce-close:hover i{color:#bdbdbd}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#e2e4e7}.mce-window .mce-btn:hover{border-color:#c5c5c5}.mce-window .mce-btn:focus{border-color:#2276d2}.mce-window-body .mce-btn,.mce-foot .mce-btn{border-color:#c5c5c5}.mce-foot .mce-btn.mce-primary{border-color:transparent}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:0}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right;padding-right:0;padding-left:20px}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1;margin-top:1px}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#595959}.mce-bar{display:block;width:0;height:100%;background-color:#dfdfdf;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#fff;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#c5c5c5;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0;box-sizing:border-box}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#595959}.mce-notification .mce-progress .mce-bar-container{border-color:#c5c5c5}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#595959}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ECB}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#9b9b9b;cursor:pointer}.mce-abs-layout{position:relative}html .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b3b3b3;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);background:white;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn:hover,.mce-btn:active{background:white;color:#595959;border-color:#e2e4e7}.mce-btn:focus{background:white;color:#595959;border-color:#e2e4e7}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover,.mce-btn.mce-active:focus,.mce-btn.mce-active:active{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:#555c66;color:white;border-color:transparent}.mce-btn.mce-active button,.mce-btn.mce-active:hover button,.mce-btn.mce-active i,.mce-btn.mce-active:hover i{color:white}.mce-btn:hover .mce-caret{border-top-color:#b5bcc2}.mce-btn.mce-active .mce-caret,.mce-btn.mce-active:hover .mce-caret{border-top-color:white}.mce-btn button{padding:4px 6px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#595959;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:white;border:1px solid transparent;border-color:transparent;background-color:#2276d2}.mce-primary:hover,.mce-primary:focus{background-color:#1e6abc;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#1e6abc;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-primary button,.mce-primary button i{color:white;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #b5bcc2;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #b5bcc2;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-toolbar .mce-btn-group{margin:0;padding:2px 0}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:0;margin-left:2px}.mce-btn-group{margin-left:2px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:white;text-indent:-10em;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#595959;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid #2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#bdbdbd}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#bdbdbd}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text,.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link b{font-size:11px}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, rgba(0,0,0,0), #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid black;background:white;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal;font-size:inherit}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#595959;font-size:inherit;text-transform:uppercase}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#555c66;color:white}.mce-path .mce-divider{display:inline;font-size:inherit}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #e2e4e7}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar{border:1px solid #e2e4e7}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar .mce-menubtn button span{color:#595959}.mce-menubar .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-active .mce-caret,.mce-menubar .mce-menubtn:hover .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#e2e4e7;background:white;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubar .mce-menubtn.mce-active{border-bottom:none;z-index:65537}div.mce-menubtn.mce-opened{border-bottom-color:white;z-index:65537}div.mce-menubtn.mce-opened.mce-opened-under{z-index:0}.mce-menubtn button{color:#595959}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-rtl .mce-menubtn.mce-fixed-width span{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 4px 6px 4px;clear:both;font-weight:normal;line-height:20px;color:#595959;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-text,.mce-menu-item .mce-text b{line-height:1;vertical-align:initial}.mce-menu-item .mce-caret{margin-top:4px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #595959}.mce-menu-item .mce-menu-shortcut{display:inline-block;padding:0 10px 0 20px;color:#aaa}.mce-menu-item .mce-ico{padding-right:4px}.mce-menu-item:hover,.mce-menu-item:focus{background:#ededee}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#aaa}.mce-menu-item:hover .mce-text,.mce-menu-item:focus .mce-text,.mce-menu-item:hover .mce-ico,.mce-menu-item:focus .mce-ico{color:#595959}.mce-menu-item.mce-selected{background:#ededee}.mce-menu-item.mce-selected .mce-text,.mce-menu-item.mce-selected .mce-ico{color:#595959}.mce-menu-item.mce-active.mce-menu-item-normal{background:#555c66}.mce-menu-item.mce-active.mce-menu-item-normal .mce-text,.mce-menu-item.mce-active.mce-menu-item-normal .mce-ico{color:white}.mce-menu-item.mce-active.mce-menu-item-checkbox .mce-ico{visibility:visible}.mce-menu-item.mce-disabled,.mce-menu-item.mce-disabled:hover{background:white}.mce-menu-item.mce-disabled:focus,.mce-menu-item.mce-disabled:hover:focus{background:#ededee}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled:hover .mce-text,.mce-menu-item.mce-disabled .mce-ico,.mce-menu-item.mce-disabled:hover .mce-ico{color:#aaa}.mce-menu-item.mce-menu-item-preview.mce-active{border-left:5px solid #555c66;background:white}.mce-menu-item.mce-menu-item-preview.mce-active .mce-text,.mce-menu-item.mce-menu-item-preview.mce-active .mce-ico{color:#595959}.mce-menu-item.mce-menu-item-preview.mce-active:hover{background:#ededee}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:#595959}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #595959;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#595959}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url('img/loader.gif') no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:180px;background:white;border:1px solid #c5c9cf;border:1px solid #e2e4e7;z-index:1002;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);box-shadow:0 1px 2px rgba(0, 0, 0, 0.2);max-height:500px;overflow:auto;overflow-x:hidden}.mce-menu.mce-animate{opacity:.01;transform:rotateY(10deg) rotateX(-10deg);transform-origin:left top}.mce-menu.mce-menu-align .mce-menu-shortcut,.mce-menu.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block}.mce-menu.mce-in.mce-animate{opacity:1;transform:rotateY(0) rotateX(0);transition:opacity .075s ease,transform .1s ease}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-rtl.mce-menu-align .mce-caret,.mce-rtl .mce-menu-shortcut{right:auto;left:0}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#595959}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #c5c5c5;background:#fff;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #c5c5c5;background:#e6e6e6;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{border-color:#2276d2}.mce-spacer{visibility:hidden}.mce-splitbtn:hover .mce-open{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open{border-left:1px solid transparent;padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open:focus{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open:hover,.mce-splitbtn .mce-open:active{border-left:1px solid #e2e4e7}.mce-splitbtn.mce-active:hover .mce-open{border-left:1px solid white}.mce-splitbtn.mce-opened{border-color:#e2e4e7}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px 15px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-tab:focus{color:#2276d2}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#595959}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#bdbdbd}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-dropzone{border:3px dashed gray;text-align:center}.mce-dropzone span{text-transform:uppercase;display:inline-block;vertical-align:middle}.mce-dropzone:after{content:"";height:100%;display:inline-block;vertical-align:middle}.mce-dropzone.mce-disabled{opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-dropzone.mce-disabled.mce-dragenter{cursor:not-allowed}.mce-browsebutton{position:relative;overflow:hidden}.mce-browsebutton button{position:relative;z-index:1}.mce-browsebutton input{opacity:0;filter:alpha(opacity=0);zoom:1;position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}@font-face{font-family:'tinymce';src:url('fonts/tinymce.eot');src:url('fonts/tinymce.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce.woff') format('woff'),url('fonts/tinymce.ttf') format('truetype'),url('fonts/tinymce.svg#tinymce') format('svg');font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url('fonts/tinymce-small.eot');src:url('fonts/tinymce-small.eot?#iefix') format('embedded-opentype'),url('fonts/tinymce-small.woff') format('woff'),url('fonts/tinymce-small.ttf') format('truetype'),url('fonts/tinymce-small.svg#tinymce') format('svg');font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#595959}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-format-painter:before{content:"\e909"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB}.mce-rtl .mce-filepicker input{direction:ltr}/*# sourceMappingURL=skin.min.css.map */ \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/skin.mobile.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/skin.mobile.min.css new file mode 100644 index 0000000..1b54909 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/skin.mobile.min.css @@ -0,0 +1,2 @@ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{-webkit-box-sizing:initial;box-sizing:initial;line-height:1;margin:0;padding:0;border:0;outline:0;text-shadow:none;float:none;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent}.tinymce-mobile-icon-arrow-back:before{content:"\e5cd"}.tinymce-mobile-icon-image:before{content:"\e412"}.tinymce-mobile-icon-cancel-circle:before{content:"\e5c9"}.tinymce-mobile-icon-full-dot:before{content:"\e061"}.tinymce-mobile-icon-align-center:before{content:"\e234"}.tinymce-mobile-icon-align-left:before{content:"\e236"}.tinymce-mobile-icon-align-right:before{content:"\e237"}.tinymce-mobile-icon-bold:before{content:"\e238"}.tinymce-mobile-icon-italic:before{content:"\e23f"}.tinymce-mobile-icon-unordered-list:before{content:"\e241"}.tinymce-mobile-icon-ordered-list:before{content:"\e242"}.tinymce-mobile-icon-font-size:before{content:"\e245"}.tinymce-mobile-icon-underline:before{content:"\e249"}.tinymce-mobile-icon-link:before{content:"\e157"}.tinymce-mobile-icon-unlink:before{content:"\eca2"}.tinymce-mobile-icon-color:before{content:"\e891"}.tinymce-mobile-icon-previous:before{content:"\e314"}.tinymce-mobile-icon-next:before{content:"\e315"}.tinymce-mobile-icon-large-font:before,.tinymce-mobile-icon-style-formats:before{content:"\e264"}.tinymce-mobile-icon-undo:before{content:"\e166"}.tinymce-mobile-icon-redo:before{content:"\e15a"}.tinymce-mobile-icon-removeformat:before{content:"\e239"}.tinymce-mobile-icon-small-font:before{content:"\e906"}.tinymce-mobile-icon-readonly-back:before,.tinymce-mobile-format-matches:after{content:"\e5ca"}.tinymce-mobile-icon-small-heading:before{content:"small"}.tinymce-mobile-icon-large-heading:before{content:"large"}.tinymce-mobile-icon-small-heading:before,.tinymce-mobile-icon-large-heading:before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon:before{content:"\e254"}.tinymce-mobile-icon-back:before{content:"\e5c4"}.tinymce-mobile-icon-heading:before{content:"Headings";font-family:sans-serif;font-weight:bold;font-size:80%}.tinymce-mobile-icon-h1:before{content:"H1";font-weight:bold}.tinymce-mobile-icon-h2:before{content:"H2";font-weight:bold}.tinymce-mobile-icon-h3:before{content:"H3";font-weight:bold}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;position:absolute;width:100%;height:100%;top:0;background:rgba(51,51,51,0.5)}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-border-radius:50%;border-radius:50%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;font-family:sans-serif;font-size:1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;color:#4682B4;background-color:white}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon:before{font-family:'tinymce-mobile';content:"\e900"}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{position:fixed;top:0;bottom:0;left:0;right:0;border:none;background:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:-webkit-box !important;display:-webkit-flex !important;display:-ms-flexbox !important;display:flex !important;height:auto !important;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#eceff1;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;z-index:1;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:100%;height:2.5em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#4682B4;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;margin-left:2px;margin-right:2px;height:80%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#455a64;color:#b1bec6}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;padding-top:.4em;padding-bottom:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;position:relative;width:100%;min-height:1.5em;padding-left:0;padding-right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{-webkit-transition:left cubic-bezier(.4, 0, 1, 1) .15s;transition:left cubic-bezier(.4, 0, 1, 1) .15s;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{position:absolute;right:0;color:#888;font-size:.6em;font-weight:bold;background:inherit;-webkit-border-radius:50%;border-radius:50%;border:none;-webkit-align-self:center;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;height:100%;padding-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next:before{padding-left:.5em;padding-right:.5em;height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;font-weight:bold}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled:before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{margin:0 2px;font-size:10px;line-height:10px;padding-top:3px;color:#b1bec6}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative;padding:.28em 0;margin-left:10%;margin-right:10%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading:before{margin-right:.9em;margin-left:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font:before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading:before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{margin-left:0;margin-right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-top:.3em;margin-bottom:.3em;background:#b1bec6;height:.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;height:100%;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;margin-top:.3em;margin-bottom:.3em;background:-webkit-gradient(linear, left top, right top, color-stop(0, #f00), color-stop(17%, #ff0), color-stop(33%, #0f0), color-stop(50%, #0ff), color-stop(67%, #00f), color-stop(83%, #f0f), to(#f00));background:linear-gradient(to right, #f00 0, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);height:.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:black;width:1.2em;height:.2em;margin-top:.3em;margin-bottom:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:white;width:1.2em;height:.2em;margin-top:.3em;margin-bottom:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{position:absolute;height:.5em;width:.5em;left:-10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;margin:auto;top:0;bottom:0;-webkit-transition:border 120ms cubic-bezier(.39, .58, .57, 1);transition:border 120ms cubic-bezier(.39, .58, .57, 1);background-color:#455a64;background-clip:padding-box;color:#eceff1;border:.5em solid rgba(136,136,136,0);-webkit-border-radius:3em;border-radius:3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,0.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{padding-top:.1em;padding-bottom:.1em;padding-left:5px;font-size:.85em;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;background:#fff;border:none;-webkit-border-radius:0;border-radius:0;color:#455a64}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input:-ms-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation: landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-dropup{background:white;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;overflow:hidden}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{-webkit-transition:height .3s ease-out;transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{-webkit-transition:height .3s ease-in;transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tinymce-mobile-styles-menu{overflow:hidden;outline:4px solid black;position:relative;width:100%;font-family:sans-serif}.tinymce-mobile-styles-menu [role="menu"]{height:100%;position:absolute;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%}.tinymce-mobile-styles-menu [role="menu"].transitioning{-webkit-transition:-webkit-transform .5s ease-in-out;transition:-webkit-transform .5s ease-in-out;transition:transform .5s ease-in-out;transition:transform .5s ease-in-out, -webkit-transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{cursor:pointer;padding:1em 1em;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-bottom:1px solid #ddd;color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon:before{font-family:'tinymce-mobile';content:"\e314";color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu:after{font-family:'tinymce-mobile';content:"\e315";position:absolute;padding-left:1em;padding-right:1em;right:0;color:#455a64}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches:after{font-family:'tinymce-mobile';position:absolute;padding-left:1em;padding-right:1em;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser{border-top:#455a64;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;background:#eceff1;color:#455a64}.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="before"]{-webkit-transform:translate(-100%);transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="current"]{-webkit-transform:translate(0);transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state="after"]{-webkit-transform:translate(100%);transform:translate(100%)}@font-face{font-family:'tinymce-mobile';src:url('fonts/tinymce-mobile.woff?8x92w3') format('woff');font-weight:normal;font-style:normal}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:'tinymce-mobile'}.mixin-flex-and-centre{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.mixin-flex-bar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{overflow:hidden;height:300px}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{position:fixed;right:2em;bottom:1em;color:white;background-color:#4682B4;-webkit-border-radius:50%;border-radius:50%;width:2.1em;height:2.1em;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}input[type="file"]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} +/*# sourceMappingURL=skin.mobile.min.css.map */ \ No newline at end of file diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.css new file mode 100644 index 0000000..b18a588 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.css @@ -0,0 +1,675 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * Dracula Theme originally by Zeno Rocha [@zenorocha] + * https://draculatheme.com/ + * + * Ported for PrismJS by Albert Vallverdu [@byverdu] + */ +code[class*="language-"], +pre[class*="language-"] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #282a36; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #6272a4; +} +.token.punctuation { + color: #f8f8f2; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #ff79c6; +} +.token.boolean, +.token.number { + color: #bd93f9; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #50fa7b; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { + color: #f1fa8c; +} +.token.keyword { + color: #8be9fd; +} +.token.regex, +.token.important { + color: #ffb86c; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-clonedresizable { + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10000; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10001; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #4099ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #4099ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #4099ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #4099ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #4099ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #4099ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #4099ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + background-color: #b4d7ff !important; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #4099ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +.mce-item-table, +.mce-item-table td, +.mce-item-table th, +.mce-item-table caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.css new file mode 100644 index 0000000..945d714 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.css @@ -0,0 +1,687 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-clonedresizable { + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10000; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10001; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + background-color: #b4d7ff !important; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +.mce-item-table, +.mce-item-table td, +.mce-item-table th, +.mce-item-table caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.min.css new file mode 100644 index 0000000..90cc361 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.inline.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.min.css new file mode 100644 index 0000000..76d6c56 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.css new file mode 100644 index 0000000..4bdb8ba --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.css @@ -0,0 +1,29 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { + /* Note: this file is used inside the content, so isn't part of theming */ + background-color: green; + display: inline-block; + opacity: 0.5; + position: absolute; +} +body { + -webkit-text-size-adjust: none; +} +body img { + /* this is related to the content margin */ + max-width: 96vw; +} +body table img { + max-width: 95%; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.min.css new file mode 100644 index 0000000..35f7dc0 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/content.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/fonts/tinymce-mobile.woff b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > *:last-child:not(:only-child) { + border-color: #000000; + border-style: solid; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(32, 122, 183, 0.5); + border-color: #207ab7; + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { + border-color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.5); + border-color: rgba(255, 165, 0, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { + border-color: rgba(255, 165, 0, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.5); + border-color: rgba(204, 0, 0, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { + border-color: rgba(204, 0, 0, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.5); + border-color: rgba(120, 171, 70, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + border-color: rgba(120, 171, 70, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-left-width: 1px; + padding-left: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-right-width: 1px; + padding-right: 4px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #207ab7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #207ab7; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + text-align: center; + text-decoration: none; + text-transform: capitalize; + white-space: nowrap; +} +.tox .tox-button[disabled] { + background-color: #207ab7; + background-image: none; + border-color: #207ab7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #185d8c; + background-image: none; + border-color: #185d8c; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary { + background-color: #3d546f; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #3d546f; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #fff; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: capitalize; +} +.tox .tox-button--secondary[disabled] { + background-color: #3d546f; + background-image: none; + border-color: #3d546f; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #34485f; + background-image: none; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #34485f; + background-image: none; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #2b3b4e; + background-image: none; + border-color: #2b3b4e; + box-shadow: none; + color: #fff; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #fff; +} +.tox .tox-button--naked[disabled] { + background-color: #3d546f; + border-color: #3d546f; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: #34485f; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: #34485f; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: #2b3b4e; + border-color: #2b3b4e; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #fff; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 3px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(255, 255, 255, 0.2); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox--disabled { + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 3px; + box-shadow: inset 0 0 0 1px #207ab7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #1a1a1a; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #333333; + color: #fff; + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + color: #fff; + cursor: pointer; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #2b3b4e; + color: #fff; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #4a5562; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #757d87; + color: #fff; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #4a5562; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #757d87; + color: #fff; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #4a5562; + color: #fff; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #fff; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #fff; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(255, 255, 255, 0.5); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #fff; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #2b3b4e; + border: 1px solid #1a1a1a; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 34px; + margin: 2px 0 3px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid #000000; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid #000000; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-icon-rtl { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg { + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 2px 0 3px 4px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px 0; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #4a5562; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #2b3b4e; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #2b3b4e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #fff; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: rgba(255, 255, 255, 0.5); + font-size: 12px; +} +.tox .tox-comment__body { + color: #fff; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(255, 255, 255, 0.5); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #2b3b4e; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #2b3b4e; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #fff; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #2b3b4e; + box-shadow: 0 0 8px 8px #2b3b4e; + color: #fff; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #2b3b4e; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-user__name { + color: rgba(255, 255, 255, 0.5); + font-size: 12px; + font-style: normal; + font-weight: bold; + text-transform: uppercase; +} +.tox:not([dir=rtl]) .tox-user__avatar svg { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(34, 47, 62, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #222f3e; +} +.tox .tox-dialog { + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #2b3b4e; + border-bottom: none; + color: #fff; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #fff; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + padding: 16px 16px; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(255, 255, 255, 0.5); + display: inline-block; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + text-decoration: none; + white-space: nowrap; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(32, 122, 183, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #207ab7; + color: #207ab7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; + max-height: 650px; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #207ab7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #fff; +} +.tox .tox-dialog__body-content ul { + display: block; + list-style-type: disc; + margin-bottom: 16px; + -webkit-margin-end: 0; + margin-inline-end: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-padding-start: 2.5rem; + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #fff; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #fff; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #2b3b4e; + border-top: 1px solid #000000; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(34, 47, 62, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #000000; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox.tox-platform-ie { + /* IE11 CSS styles go here */ +} +.tox.tox-platform-ie .tox-dialog-wrap { + position: -ms-device-fixed; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #000000; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(255, 255, 255, 0.5); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-inline-edit-area { + border: 1px dotted #000000; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + z-index: 1; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + box-shadow: none; + transition: box-shadow 0.5s; +} +.tox.tox-tinymce--toolbar-bottom .tox-editor-header, +.tox.tox-tinymce-inline .tox-editor-header { + margin-bottom: -1px; +} +.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { + box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(42, 55, 70, 0.2); + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #207ab7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #2b3b4e; + border-radius: 3px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(255, 255, 255, 0.5); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #222f3e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-textarea:focus { + background-color: #2b3b4e; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #207ab7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #fff; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #19232e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #2b3b4e; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox-fullscreen { + border: 0; + height: 100%; + left: 0; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + position: fixed; + top: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox-fullscreen .tox.tox-tinymce.tox-fullscreen { + z-index: 1200; +} +.tox-fullscreen .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-image-tools { + width: 100%; +} +.tox .tox-image-tools__toolbar { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-image-tools__image { + background-color: #666; + height: 380px; + overflow: auto; + position: relative; + width: 100%; +} +.tox .tox-image-tools__image, +.tox .tox-image-tools__image + .tox-image-tools__toolbar { + margin-top: 8px; +} +.tox .tox-image-tools__image-bg { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools__toolbar > .tox-spacer { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-left: 32px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-left: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-right: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-right: 32px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #000000; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px 0; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(32, 122, 183, 0.5); + border-color: rgba(32, 122, 183, 0.5); +} +.tox .tox-insert-table-picker__label { + color: #fff; + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #2b3b4e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 4px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 4px; +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e; + background-color: #222f3e; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 4px 0 4px; +} +.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { + border-top: 1px solid #000000; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn--active { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: -ms-grid; + display: grid; + font-size: 14px; + font-weight: normal; + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #fff; +} +.tox .tox-notification--success p { + color: #fff; +} +.tox .tox-notification--success a { + color: #547831; +} +.tox .tox-notification--success svg { + fill: #fff; +} +.tox .tox-notification--error { + background-color: #f8dede; + border-color: #f2bfbf; + color: #fff; +} +.tox .tox-notification--error p { + color: #fff; +} +.tox .tox-notification--error a { + color: #c00; +} +.tox .tox-notification--error svg { + fill: #fff; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fffaea; + border-color: #ffe89d; + color: #fff; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #fff; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #fff; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #fff; +} +.tox .tox-notification--info { + background-color: #d9edf7; + border-color: #779ecb; + color: #fff; +} +.tox .tox-notification--info p { + color: #fff; +} +.tox .tox-notification--info a { + color: #fff; +} +.tox .tox-notification--info svg { + fill: #fff; +} +.tox .tox-notification__body { + -ms-grid-row-align: center; + align-self: center; + color: #fff; + font-size: 14px; + -ms-grid-column-span: 1; + grid-column-end: 3; + -ms-grid-column: 2; + grid-column-start: 2; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + -ms-grid-row-align: center; + align-self: center; + -ms-grid-column-span: 1; + grid-column-end: 2; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + -ms-grid-row-align: start; + align-self: start; + -ms-grid-column-span: 1; + grid-column-end: 4; + -ms-grid-column: 3; + grid-column-start: 3; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + -ms-grid-column-span: 3; + grid-column-end: 4; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 3; + -ms-grid-row: 2; + grid-row-start: 2; + -ms-grid-column-align: center; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar { + flex-wrap: nowrap; +} +.tox .tox-pop__dialog { + background-color: #222f3e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #222f3e transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #000000 transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #222f3e transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #000000 transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #222f3e transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #000000 transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #222f3e; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #000000; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + -ms-flex-preferred-size: 0; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #222f3e; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #000000; + border-radius: 3px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #207ab7; + border: 2px solid #185d8c; + border-radius: 3px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #222f3e; + border-top: 1px solid #000000; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 12px; + font-weight: normal; + height: 18px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: uppercase; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: #fff; + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-left: 1ch; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: #fff; +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 1ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1400; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(34, 47, 62, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #fff; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #4a5562; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn:hover svg { + fill: #fff; +} +.tox .tox-tbtn:active { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn:active svg { + fill: #fff; +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #fff; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #fff; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #fff; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 51px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 68px; + width: 68px; +} +.tox .tox-tbtn--return { + -ms-grid-row-align: stretch; + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tbtn--select { + margin: 2px 0 3px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 2px 0 3px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #4a5562 inset; +} +.tox .tox-split-button:focus { + background: #4a5562; + box-shadow: none; + color: #fff; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-toolbar-overlord { + background-color: #222f3e; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e; + background-color: #222f3e; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0; +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { + border-top: 1px solid #000000; + margin-top: -1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { + border-top: 1px solid #000000; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #222f3e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); +} +.tox[dir=rtl] .tox-tbtn__icon-rtl svg { + transform: rotateY(180deg); +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 4px 0 4px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid #000000; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid #000000; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #3d546f; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #3d546f; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #3d546f; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #3d546f; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #3d546f; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-well { + border: 1px solid #000000; + border-radius: 3px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #000000; + border-radius: 3px; + display: flex; + flex: 1; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-image-tools-edit-panel { + height: 60px; +} +.tox .tox-image-tools__sidebar { + height: 60px; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.min.css new file mode 100644 index 0000000..a3f8040 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tox{box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.css new file mode 100644 index 0000000..875721a --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.css @@ -0,0 +1,673 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +/* RESET all the things! */ +.tinymce-mobile-outer-container { + all: initial; + display: block; +} +.tinymce-mobile-outer-container * { + border: 0; + box-sizing: initial; + cursor: inherit; + float: none; + line-height: 1; + margin: 0; + outline: 0; + padding: 0; + -webkit-tap-highlight-color: transparent; + /* TBIO-3691, stop the gray flicker on touch. */ + text-shadow: none; + white-space: nowrap; +} +.tinymce-mobile-icon-arrow-back::before { + content: "\e5cd"; +} +.tinymce-mobile-icon-image::before { + content: "\e412"; +} +.tinymce-mobile-icon-cancel-circle::before { + content: "\e5c9"; +} +.tinymce-mobile-icon-full-dot::before { + content: "\e061"; +} +.tinymce-mobile-icon-align-center::before { + content: "\e234"; +} +.tinymce-mobile-icon-align-left::before { + content: "\e236"; +} +.tinymce-mobile-icon-align-right::before { + content: "\e237"; +} +.tinymce-mobile-icon-bold::before { + content: "\e238"; +} +.tinymce-mobile-icon-italic::before { + content: "\e23f"; +} +.tinymce-mobile-icon-unordered-list::before { + content: "\e241"; +} +.tinymce-mobile-icon-ordered-list::before { + content: "\e242"; +} +.tinymce-mobile-icon-font-size::before { + content: "\e245"; +} +.tinymce-mobile-icon-underline::before { + content: "\e249"; +} +.tinymce-mobile-icon-link::before { + content: "\e157"; +} +.tinymce-mobile-icon-unlink::before { + content: "\eca2"; +} +.tinymce-mobile-icon-color::before { + content: "\e891"; +} +.tinymce-mobile-icon-previous::before { + content: "\e314"; +} +.tinymce-mobile-icon-next::before { + content: "\e315"; +} +.tinymce-mobile-icon-large-font::before, +.tinymce-mobile-icon-style-formats::before { + content: "\e264"; +} +.tinymce-mobile-icon-undo::before { + content: "\e166"; +} +.tinymce-mobile-icon-redo::before { + content: "\e15a"; +} +.tinymce-mobile-icon-removeformat::before { + content: "\e239"; +} +.tinymce-mobile-icon-small-font::before { + content: "\e906"; +} +.tinymce-mobile-icon-readonly-back::before, +.tinymce-mobile-format-matches::after { + content: "\e5ca"; +} +.tinymce-mobile-icon-small-heading::before { + content: "small"; +} +.tinymce-mobile-icon-large-heading::before { + content: "large"; +} +.tinymce-mobile-icon-small-heading::before, +.tinymce-mobile-icon-large-heading::before { + font-family: sans-serif; + font-size: 80%; +} +.tinymce-mobile-mask-edit-icon::before { + content: "\e254"; +} +.tinymce-mobile-icon-back::before { + content: "\e5c4"; +} +.tinymce-mobile-icon-heading::before { + /* TODO: Translate */ + content: "Headings"; + font-family: sans-serif; + font-size: 80%; + font-weight: bold; +} +.tinymce-mobile-icon-h1::before { + content: "H1"; + font-weight: bold; +} +.tinymce-mobile-icon-h2::before { + content: "H2"; + font-weight: bold; +} +.tinymce-mobile-icon-h3::before { + content: "H3"; + font-weight: bold; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { + align-items: center; + display: flex; + justify-content: center; + background: rgba(51, 51, 51, 0.5); + height: 100%; + position: absolute; + top: 0; + width: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { + align-items: center; + border-radius: 50%; + display: flex; + flex-direction: column; + font-family: sans-serif; + font-size: 1em; + justify-content: space-between; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + align-items: center; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 1em; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; + background-color: white; + color: #207ab7; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { + content: "\e900"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { + z-index: 2; +} +.tinymce-mobile-android-container.tinymce-mobile-android-maximized { + background: #ffffff; + border: none; + bottom: 0; + display: flex; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + top: 0; +} +.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { + position: relative; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket { + display: flex; + flex-grow: 1; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { + display: flex !important; + flex-grow: 1; + height: auto !important; +} +.tinymce-mobile-android-scroll-reload { + overflow: hidden; +} +:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { + margin-top: 23px; +} +.tinymce-mobile-toolstrip { + background: #fff; + display: flex; + flex: 0 0 auto; + z-index: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { + align-items: center; + background-color: #fff; + border-bottom: 1px solid #cccccc; + display: flex; + flex: 1; + height: 2.5em; + width: 100%; + /* Make it no larger than the toolstrip, so that it needs to scroll */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex-shrink: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { + background: #f44336; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { + flex-grow: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { + align-items: center; + display: flex; + height: 80%; + margin-left: 2px; + margin-right: 2px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background: #c8cbcf; + color: #cccccc; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background: #207ab7; + color: #eceff1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { + /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex: 1; + padding-bottom: 0.4em; + padding-top: 0.4em; + /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* For widgets like the colour picker, use the whole height */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { + display: flex; + min-height: 1.5em; + overflow: hidden; + padding-left: 0; + padding-right: 0; + position: relative; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { + display: flex; + height: 100%; + transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { + font-family: Sans-serif; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { + display: flex; + flex-grow: 1; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { + -ms-grid-row-align: center; + align-self: center; + background: inherit; + border: none; + border-radius: 50%; + color: #888; + font-size: 0.6em; + font-weight: bold; + height: 100%; + padding-right: 2px; + position: absolute; + right: 0; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { + display: none; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { + align-items: center; + display: flex; + font-weight: bold; + height: 100%; + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { + visibility: hidden; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { + color: #cccccc; + font-size: 10px; + line-height: 10px; + margin: 0 2px; + padding-top: 3px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { + color: #c8cbcf; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { + margin-left: 0.5em; + margin-right: 0.9em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { + margin-left: 0.9em; + margin-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { + display: flex; + flex: 1; + margin-left: 0; + margin-right: 0; + padding: 0.28em 0; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { + background: #cccccc; + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { + padding-left: 2em; + padding-right: 2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { + background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { + /* Not part of theming */ + background: black; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { + /* Not part of theming */ + background: white; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { + /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave + * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is + * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without + * this approach. + */ + align-items: center; + background-clip: padding-box; + background-color: #455a64; + border: 0.5em solid rgba(136, 136, 136, 0); + border-radius: 3em; + bottom: 0; + color: #fff; + display: flex; + height: 0.5em; + justify-content: center; + left: -10px; + margin: auto; + position: absolute; + top: 0; + transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); + width: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { + border: 0.5em solid rgba(136, 136, 136, 0.39); +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { + flex-direction: column; + justify-content: center; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { + background: #ffffff; + border: none; + border-radius: 0; + color: #455a64; + flex-grow: 1; + font-size: 0.85em; + padding-bottom: 0.1em; + padding-left: 5px; + padding-top: 0.1em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +/* dropup */ +.tinymce-mobile-dropup { + background: white; + display: flex; + overflow: hidden; + width: 100%; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { + transition: height 0.3s ease-out; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { + transition: height 0.3s ease-in; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { + flex-grow: 0; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { + flex-grow: 1; +} +/* TODO min-height for device size and orientation */ +.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; +} +@media only screen and (orientation: landscape) { + .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; + } +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 150px; + } +} +/* styles menu */ +.tinymce-mobile-styles-menu { + font-family: sans-serif; + outline: 4px solid black; + overflow: hidden; + position: relative; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"] { + display: flex; + flex-direction: column; + height: 100%; + position: absolute; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"].transitioning { + transition: transform 0.5s ease-in-out; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { + border-bottom: 1px solid #ddd; + color: #455a64; + cursor: pointer; + display: flex; + padding: 1em 1em; + position: relative; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { + color: #455a64; + content: "\e314"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { + color: #455a64; + content: "\e315"; + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { + align-items: center; + background: #fff; + border-top: #455a64; + color: #455a64; + display: flex; + min-height: 2.5em; + padding-left: 1em; + padding-right: 1em; +} +.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="before"] { + transform: translate(-100%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="current"] { + transform: translate(0%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="after"] { + transform: translate(100%); +} +@font-face { + font-family: 'tinymce-mobile'; + font-style: normal; + font-weight: normal; + src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); +} +@media (min-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 25px; + } +} +@media (max-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 18px; + } +} +.tinymce-mobile-icon { + font-family: 'tinymce-mobile', sans-serif; +} +.mixin-flex-and-centre { + align-items: center; + display: flex; + justify-content: center; +} +.mixin-flex-bar { + align-items: center; + display: flex; + height: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { + background-color: #fff; + width: 100%; +} +.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + background-color: #207ab7; + border-radius: 50%; + bottom: 1em; + color: white; + font-size: 1em; + height: 2.1em; + position: fixed; + right: 2em; + width: 2.1em; + align-items: center; + display: flex; + justify-content: center; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 300px; + overflow: hidden; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { + height: 100%; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { + display: none; +} +/* + Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets + increased and the whole body becomes scrollable. It's important! + */ +input[type="file"]::-webkit-file-upload-button { + display: none; +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + bottom: 50%; + } +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.min.css new file mode 100644 index 0000000..3a45cac --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide-dark/skin.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.css new file mode 100644 index 0000000..ea9022d --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.css @@ -0,0 +1,693 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-clonedresizable { + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10000; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10001; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + background-color: #b4d7ff !important; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +.mce-item-table, +.mce-item-table td, +.mce-item-table th, +.mce-item-table caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.css new file mode 100644 index 0000000..945d714 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.css @@ -0,0 +1,687 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 10000; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-clonedresizable { + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10000; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10001; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + background-color: #b4d7ff !important; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +.mce-item-table, +.mce-item-table td, +.mce-item-table th, +.mce-item-table caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.min.css new file mode 100644 index 0000000..90cc361 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.inline.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.min.css new file mode 100644 index 0000000..b3bd401 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.css new file mode 100644 index 0000000..4bdb8ba --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.css @@ -0,0 +1,29 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { + /* Note: this file is used inside the content, so isn't part of theming */ + background-color: green; + display: inline-block; + opacity: 0.5; + position: absolute; +} +body { + -webkit-text-size-adjust: none; +} +body img { + /* this is related to the content margin */ + max-width: 96vw; +} +body table img { + max-width: 95%; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.min.css new file mode 100644 index 0000000..35f7dc0 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/content.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/fonts/tinymce-mobile.woff b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > *:last-child:not(:only-child) { + border-color: #cccccc; + border-style: solid; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(32, 122, 183, 0.1); + border-color: rgba(32, 122, 183, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { + border-color: rgba(32, 122, 183, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { + color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.1); + border-color: rgba(255, 165, 0, 0.5); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { + border-color: rgba(255, 165, 0, 0.5); +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { + color: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.1); + border-color: rgba(204, 0, 0, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { + border-color: rgba(204, 0, 0, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.1); + border-color: rgba(120, 171, 70, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + border-color: rgba(120, 171, 70, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { + color: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-left-width: 1px; + padding-left: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-right-width: 1px; + padding-right: 4px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #207ab7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #207ab7; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + text-align: center; + text-decoration: none; + text-transform: capitalize; + white-space: nowrap; +} +.tox .tox-button[disabled] { + background-color: #207ab7; + background-image: none; + border-color: #207ab7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #185d8c; + background-image: none; + border-color: #185d8c; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary { + background-color: #f0f0f0; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #f0f0f0; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: capitalize; +} +.tox .tox-button--secondary[disabled] { + background-color: #f0f0f0; + background-image: none; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #d6d6d6; + background-image: none; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked[disabled] { + background-color: #f0f0f0; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: #e3e3e3; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: #e3e3e3; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: #d6d6d6; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #222f3e; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 3px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(34, 47, 62, 0.3); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox--disabled { + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 3px; + box-shadow: inset 0 0 0 1px #207ab7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #cccccc; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #e6e6e6; + color: rgba(34, 47, 62, 0.7); + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + color: #222f3e; + cursor: pointer; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #fff; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #dee0e2; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #c8cbcf; + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #dee0e2; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #c8cbcf; + color: #222f3e; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #dee0e2; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #222f3e; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 34px; + margin: 2px 0 3px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid #cccccc; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid #cccccc; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-icon-rtl { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg { + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 2px 0 3px 4px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px 0; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #dee0e2; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #fff; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #222f3e; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: rgba(34, 47, 62, 0.7); + font-size: 12px; +} +.tox .tox-comment__body { + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(34, 47, 62, 0.7); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #fff; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(255, 255, 255, 0), #fff); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #fff; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #222f3e; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #fff; + box-shadow: 0 0 8px 8px #fff; + color: #222f3e; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #fff; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(34, 47, 62, 0.7); +} +.tox .tox-user__name { + color: rgba(34, 47, 62, 0.7); + font-size: 12px; + font-style: normal; + font-weight: bold; + text-transform: uppercase; +} +.tox:not([dir=rtl]) .tox-user__avatar svg { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #fff; +} +.tox .tox-dialog { + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #fff; + border-bottom: none; + color: #222f3e; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #222f3e; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + padding: 16px 16px; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + text-decoration: none; + white-space: nowrap; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(32, 122, 183, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #207ab7; + color: #207ab7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; + max-height: 650px; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #207ab7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #222f3e; +} +.tox .tox-dialog__body-content ul { + display: block; + list-style-type: disc; + margin-bottom: 16px; + -webkit-margin-end: 0; + margin-inline-end: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-padding-start: 2.5rem; + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #222f3e; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #222f3e; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #fff; + border-top: 1px solid #cccccc; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #cccccc; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox.tox-platform-ie { + /* IE11 CSS styles go here */ +} +.tox.tox-platform-ie .tox-dialog-wrap { + position: -ms-device-fixed; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #cccccc; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(34, 47, 62, 0.7); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-inline-edit-area { + border: 1px dotted #cccccc; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + z-index: 1; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + box-shadow: none; + transition: box-shadow 0.5s; +} +.tox.tox-tinymce--toolbar-bottom .tox-editor-header, +.tox.tox-tinymce-inline .tox-editor-header { + margin-bottom: -1px; +} +.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { + box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(34, 47, 62, 0.2); + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #207ab7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #fff; + border-radius: 3px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-textarea:focus { + background-color: #fff; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #207ab7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #222f3e; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #fff; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox-fullscreen { + border: 0; + height: 100%; + left: 0; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + position: fixed; + top: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox-fullscreen .tox.tox-tinymce.tox-fullscreen { + z-index: 1200; +} +.tox-fullscreen .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-image-tools { + width: 100%; +} +.tox .tox-image-tools__toolbar { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-image-tools__image { + background-color: #666; + height: 380px; + overflow: auto; + position: relative; + width: 100%; +} +.tox .tox-image-tools__image, +.tox .tox-image-tools__image + .tox-image-tools__toolbar { + margin-top: 8px; +} +.tox .tox-image-tools__image-bg { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools__toolbar > .tox-spacer { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-left: 32px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-left: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-right: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-right: 32px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #cccccc; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px 0; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(32, 122, 183, 0.5); + border-color: rgba(32, 122, 183, 0.5); +} +.tox .tox-insert-table-picker__label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 4px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 4px; +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 4px 0 4px; +} +.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { + border-top: 1px solid #cccccc; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn--active { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: -ms-grid; + display: grid; + font-size: 14px; + font-weight: normal; + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #222f3e; +} +.tox .tox-notification--success p { + color: #222f3e; +} +.tox .tox-notification--success a { + color: #547831; +} +.tox .tox-notification--success svg { + fill: #222f3e; +} +.tox .tox-notification--error { + background-color: #f8dede; + border-color: #f2bfbf; + color: #222f3e; +} +.tox .tox-notification--error p { + color: #222f3e; +} +.tox .tox-notification--error a { + color: #c00; +} +.tox .tox-notification--error svg { + fill: #222f3e; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fffaea; + border-color: #ffe89d; + color: #222f3e; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #222f3e; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #222f3e; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #222f3e; +} +.tox .tox-notification--info { + background-color: #d9edf7; + border-color: #779ecb; + color: #222f3e; +} +.tox .tox-notification--info p { + color: #222f3e; +} +.tox .tox-notification--info a { + color: #222f3e; +} +.tox .tox-notification--info svg { + fill: #222f3e; +} +.tox .tox-notification__body { + -ms-grid-row-align: center; + align-self: center; + color: #222f3e; + font-size: 14px; + -ms-grid-column-span: 1; + grid-column-end: 3; + -ms-grid-column: 2; + grid-column-start: 2; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + -ms-grid-row-align: center; + align-self: center; + -ms-grid-column-span: 1; + grid-column-end: 2; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + -ms-grid-row-align: start; + align-self: start; + -ms-grid-column-span: 1; + grid-column-end: 4; + -ms-grid-column: 3; + grid-column-start: 3; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + -ms-grid-column-span: 3; + grid-column-end: 4; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 3; + -ms-grid-row: 2; + grid-row-start: 2; + -ms-grid-column-align: center; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar { + flex-wrap: nowrap; +} +.tox .tox-pop__dialog { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #fff transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #cccccc transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #fff transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #cccccc transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #fff transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #cccccc transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #fff; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #cccccc; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + -ms-flex-preferred-size: 0; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #fff; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #cccccc; + border-radius: 3px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #207ab7; + border: 2px solid #185d8c; + border-radius: 3px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(34, 47, 62, 0.7); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #fff; + border-top: 1px solid #cccccc; + color: rgba(34, 47, 62, 0.7); + display: flex; + flex: 0 0 auto; + font-size: 12px; + font-weight: normal; + height: 18px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: uppercase; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: rgba(34, 47, 62, 0.7); + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-left: 1ch; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: rgba(34, 47, 62, 0.7); +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 1ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1400; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #222f3e; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #dee0e2; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:hover svg { + fill: #222f3e; +} +.tox .tox-tbtn:active { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:active svg { + fill: #222f3e; +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #222f3e; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 51px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 68px; + width: 68px; +} +.tox .tox-tbtn--return { + -ms-grid-row-align: stretch; + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tbtn--select { + margin: 2px 0 3px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 2px 0 3px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #dee0e2 inset; +} +.tox .tox-split-button:focus { + background: #dee0e2; + box-shadow: none; + color: #222f3e; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-toolbar-overlord { + background-color: #fff; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0; +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { + border-top: 1px solid #cccccc; + margin-top: -1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { + border-top: 1px solid #cccccc; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); +} +.tox[dir=rtl] .tox-tbtn__icon-rtl svg { + transform: rotateY(180deg); +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 4px 0 4px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid #cccccc; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid #cccccc; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #222f3e; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #222f3e; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #222f3e; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #222f3e; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #222f3e; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-well { + border: 1px solid #cccccc; + border-radius: 3px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #cccccc; + border-radius: 3px; + display: flex; + flex: 1; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-image-tools-edit-panel { + height: 60px; +} +.tox .tox-image-tools__sidebar { + height: 60px; +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.min.css new file mode 100644 index 0000000..97791b6 --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.css new file mode 100644 index 0000000..875721a --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.css @@ -0,0 +1,673 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +/* RESET all the things! */ +.tinymce-mobile-outer-container { + all: initial; + display: block; +} +.tinymce-mobile-outer-container * { + border: 0; + box-sizing: initial; + cursor: inherit; + float: none; + line-height: 1; + margin: 0; + outline: 0; + padding: 0; + -webkit-tap-highlight-color: transparent; + /* TBIO-3691, stop the gray flicker on touch. */ + text-shadow: none; + white-space: nowrap; +} +.tinymce-mobile-icon-arrow-back::before { + content: "\e5cd"; +} +.tinymce-mobile-icon-image::before { + content: "\e412"; +} +.tinymce-mobile-icon-cancel-circle::before { + content: "\e5c9"; +} +.tinymce-mobile-icon-full-dot::before { + content: "\e061"; +} +.tinymce-mobile-icon-align-center::before { + content: "\e234"; +} +.tinymce-mobile-icon-align-left::before { + content: "\e236"; +} +.tinymce-mobile-icon-align-right::before { + content: "\e237"; +} +.tinymce-mobile-icon-bold::before { + content: "\e238"; +} +.tinymce-mobile-icon-italic::before { + content: "\e23f"; +} +.tinymce-mobile-icon-unordered-list::before { + content: "\e241"; +} +.tinymce-mobile-icon-ordered-list::before { + content: "\e242"; +} +.tinymce-mobile-icon-font-size::before { + content: "\e245"; +} +.tinymce-mobile-icon-underline::before { + content: "\e249"; +} +.tinymce-mobile-icon-link::before { + content: "\e157"; +} +.tinymce-mobile-icon-unlink::before { + content: "\eca2"; +} +.tinymce-mobile-icon-color::before { + content: "\e891"; +} +.tinymce-mobile-icon-previous::before { + content: "\e314"; +} +.tinymce-mobile-icon-next::before { + content: "\e315"; +} +.tinymce-mobile-icon-large-font::before, +.tinymce-mobile-icon-style-formats::before { + content: "\e264"; +} +.tinymce-mobile-icon-undo::before { + content: "\e166"; +} +.tinymce-mobile-icon-redo::before { + content: "\e15a"; +} +.tinymce-mobile-icon-removeformat::before { + content: "\e239"; +} +.tinymce-mobile-icon-small-font::before { + content: "\e906"; +} +.tinymce-mobile-icon-readonly-back::before, +.tinymce-mobile-format-matches::after { + content: "\e5ca"; +} +.tinymce-mobile-icon-small-heading::before { + content: "small"; +} +.tinymce-mobile-icon-large-heading::before { + content: "large"; +} +.tinymce-mobile-icon-small-heading::before, +.tinymce-mobile-icon-large-heading::before { + font-family: sans-serif; + font-size: 80%; +} +.tinymce-mobile-mask-edit-icon::before { + content: "\e254"; +} +.tinymce-mobile-icon-back::before { + content: "\e5c4"; +} +.tinymce-mobile-icon-heading::before { + /* TODO: Translate */ + content: "Headings"; + font-family: sans-serif; + font-size: 80%; + font-weight: bold; +} +.tinymce-mobile-icon-h1::before { + content: "H1"; + font-weight: bold; +} +.tinymce-mobile-icon-h2::before { + content: "H2"; + font-weight: bold; +} +.tinymce-mobile-icon-h3::before { + content: "H3"; + font-weight: bold; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { + align-items: center; + display: flex; + justify-content: center; + background: rgba(51, 51, 51, 0.5); + height: 100%; + position: absolute; + top: 0; + width: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { + align-items: center; + border-radius: 50%; + display: flex; + flex-direction: column; + font-family: sans-serif; + font-size: 1em; + justify-content: space-between; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + align-items: center; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 1em; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; + background-color: white; + color: #207ab7; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { + content: "\e900"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { + z-index: 2; +} +.tinymce-mobile-android-container.tinymce-mobile-android-maximized { + background: #ffffff; + border: none; + bottom: 0; + display: flex; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + top: 0; +} +.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { + position: relative; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket { + display: flex; + flex-grow: 1; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { + display: flex !important; + flex-grow: 1; + height: auto !important; +} +.tinymce-mobile-android-scroll-reload { + overflow: hidden; +} +:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { + margin-top: 23px; +} +.tinymce-mobile-toolstrip { + background: #fff; + display: flex; + flex: 0 0 auto; + z-index: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { + align-items: center; + background-color: #fff; + border-bottom: 1px solid #cccccc; + display: flex; + flex: 1; + height: 2.5em; + width: 100%; + /* Make it no larger than the toolstrip, so that it needs to scroll */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex-shrink: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { + background: #f44336; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { + flex-grow: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { + align-items: center; + display: flex; + height: 80%; + margin-left: 2px; + margin-right: 2px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background: #c8cbcf; + color: #cccccc; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background: #207ab7; + color: #eceff1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { + /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex: 1; + padding-bottom: 0.4em; + padding-top: 0.4em; + /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* For widgets like the colour picker, use the whole height */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { + display: flex; + min-height: 1.5em; + overflow: hidden; + padding-left: 0; + padding-right: 0; + position: relative; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { + display: flex; + height: 100%; + transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { + font-family: Sans-serif; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { + display: flex; + flex-grow: 1; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { + -ms-grid-row-align: center; + align-self: center; + background: inherit; + border: none; + border-radius: 50%; + color: #888; + font-size: 0.6em; + font-weight: bold; + height: 100%; + padding-right: 2px; + position: absolute; + right: 0; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { + display: none; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { + align-items: center; + display: flex; + font-weight: bold; + height: 100%; + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { + visibility: hidden; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { + color: #cccccc; + font-size: 10px; + line-height: 10px; + margin: 0 2px; + padding-top: 3px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { + color: #c8cbcf; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { + margin-left: 0.5em; + margin-right: 0.9em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { + margin-left: 0.9em; + margin-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { + display: flex; + flex: 1; + margin-left: 0; + margin-right: 0; + padding: 0.28em 0; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { + background: #cccccc; + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { + padding-left: 2em; + padding-right: 2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { + background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { + /* Not part of theming */ + background: black; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { + /* Not part of theming */ + background: white; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { + /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave + * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is + * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without + * this approach. + */ + align-items: center; + background-clip: padding-box; + background-color: #455a64; + border: 0.5em solid rgba(136, 136, 136, 0); + border-radius: 3em; + bottom: 0; + color: #fff; + display: flex; + height: 0.5em; + justify-content: center; + left: -10px; + margin: auto; + position: absolute; + top: 0; + transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); + width: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { + border: 0.5em solid rgba(136, 136, 136, 0.39); +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { + flex-direction: column; + justify-content: center; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { + background: #ffffff; + border: none; + border-radius: 0; + color: #455a64; + flex-grow: 1; + font-size: 0.85em; + padding-bottom: 0.1em; + padding-left: 5px; + padding-top: 0.1em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +/* dropup */ +.tinymce-mobile-dropup { + background: white; + display: flex; + overflow: hidden; + width: 100%; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { + transition: height 0.3s ease-out; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { + transition: height 0.3s ease-in; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { + flex-grow: 0; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { + flex-grow: 1; +} +/* TODO min-height for device size and orientation */ +.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; +} +@media only screen and (orientation: landscape) { + .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; + } +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 150px; + } +} +/* styles menu */ +.tinymce-mobile-styles-menu { + font-family: sans-serif; + outline: 4px solid black; + overflow: hidden; + position: relative; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"] { + display: flex; + flex-direction: column; + height: 100%; + position: absolute; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"].transitioning { + transition: transform 0.5s ease-in-out; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { + border-bottom: 1px solid #ddd; + color: #455a64; + cursor: pointer; + display: flex; + padding: 1em 1em; + position: relative; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { + color: #455a64; + content: "\e314"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { + color: #455a64; + content: "\e315"; + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { + align-items: center; + background: #fff; + border-top: #455a64; + color: #455a64; + display: flex; + min-height: 2.5em; + padding-left: 1em; + padding-right: 1em; +} +.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="before"] { + transform: translate(-100%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="current"] { + transform: translate(0%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="after"] { + transform: translate(100%); +} +@font-face { + font-family: 'tinymce-mobile'; + font-style: normal; + font-weight: normal; + src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); +} +@media (min-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 25px; + } +} +@media (max-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 18px; + } +} +.tinymce-mobile-icon { + font-family: 'tinymce-mobile', sans-serif; +} +.mixin-flex-and-centre { + align-items: center; + display: flex; + justify-content: center; +} +.mixin-flex-bar { + align-items: center; + display: flex; + height: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { + background-color: #fff; + width: 100%; +} +.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + background-color: #207ab7; + border-radius: 50%; + bottom: 1em; + color: white; + font-size: 1em; + height: 2.1em; + position: fixed; + right: 2em; + width: 2.1em; + align-items: center; + display: flex; + justify-content: center; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 300px; + overflow: hidden; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { + height: 100%; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { + display: none; +} +/* + Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets + increased and the whole body becomes scrollable. It's important! + */ +input[type="file"]::-webkit-file-upload-button { + display: none; +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + bottom: 50%; + } +} diff --git a/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.min.css b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.min.css new file mode 100644 index 0000000..3a45cac --- /dev/null +++ b/app_AssetManagement/public/assets/tinymce/skins/lightgray/ui/oxide/skin.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/app_AssetManagement/public/environments/environment.js b/app_AssetManagement/public/environments/environment.js new file mode 100644 index 0000000..daa5ff8 --- /dev/null +++ b/app_AssetManagement/public/environments/environment.js @@ -0,0 +1,14 @@ +window.Environment = { + // 是否为开发模式 + devMode: true, + // 项目模板地址 + ProjectUrl: "https://gitee.com/ibizlab/iBizPMS", + // 配置平台地址 + StudioUrl: "http://studio.ibizlab.cn/slnstudio/", + // 方案标识 + SlnId: "506FF789-2742-4C35-A91D-E3990C379D41", + // 系统标识 + SysId: "3A921F6B-613D-4975-ACD6-79565D82E1DE", + // 前端应用标识 + AppId: "67ca55365f7abcc05c30f4fba9f8ee37" +} \ No newline at end of file diff --git a/app_AssetManagement/public/favicon.ico b/app_AssetManagement/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..dcae918a1c24406e1bb55a4cd60d0ef030a1177a GIT binary patch literal 1150 zcmZuxeN0L1P*QbToQ3EWBI-u`V^ldoXMdMX_HeE*#Sf&V}_tyrKqDcO4ZEuj`I8@AF~9<9~Up zQWtNwZ3!gim#wL>h$SiBSpv5heLyENCg$Ugec4Orv#>)WE2@14;JVj_v5zNf!H0vT)i6 zbnsM$yjLf}etim#Uwrz3{*I&I{gI}0be8fS#6EkSBkL$j#>>aKI91QpGS8iG=Ds#) zO2ey-kKuJs-a7ZLbDv<|whh}q0X+XPt8k-!tXV0hIkzM8by+}BUyM5{tF?=O^(5`XBF z3~%_9I)*#hlo>U>1z7S5*qM3lVfKZZH(5Aqf-z=Zd4OGd)hNTcR(Wv7mAiMeEh|1~ zPRD6iuIkV3y|hEkN0k!rU>?<2UBsy~t2lT~Ppw3)AZ7G5Z?Nf$YB8h7skZFd&>8uH zPbb8i&YX9C{Vu2Uy%z!Z=fIlgRqnkDM|n8az#3m}flNlbG1@=nSB*7h;0z$!uWE} zh*rNj!pCbS8Y4znnlpeXQJ3h44Jn}!V=8*fsFl77h}u5lGg<0kQ%yA&8;UnPZ;Mm~<#QaIEg{UU7JVVUmAx6gX=?KAG@?bn^V>_6JF?c}WN z-Bp5i{|T0*|0D-J +

    + +
    + ++ \ No newline at end of file diff --git a/app_AssetManagement/src/app-register.ts b/app_AssetManagement/src/app-register.ts new file mode 100644 index 0000000..9cea338 --- /dev/null +++ b/app_AssetManagement/src/app-register.ts @@ -0,0 +1,164 @@ +import { ViewTool } from './utils/view-tool/view-tool'; +import { UIActionTool } from './utils/uiaction-tool/uiaction-tool'; +import { Verify } from './utils/verify/verify'; +import { Util } from './utils/util/util'; +import { Http } from './utils/http/http'; +import { exportExcel } from './utils/export/export'; +import { AppPopover } from './utils/app-popover/app-popover'; +import { AppModal } from './utils/app-modal/app-modal'; +import { AppDrawer } from './utils/app-drawer/app-drawer'; +import { uiServiceRegister } from '@/uiservice/ui-service-register'; +import { authServiceRegister } from '@/authservice/auth-service-register'; +import { utilServiceRegister } from '@/utilservice/util-service-register'; +import { entityServiceRegister } from '@/service/entity-service-register'; +import { counterServiceRegister } from '@/counter/counter-service-register'; + +import InputBox from './components/input-box/input-box.vue' +import AppKeepAlive from './components/app-keep-alive/app-keep-alive.vue' +import TabPageExp from './components/tab-page-exp/tab-page-exp.vue' +import AppLang from './components/app-lang/app-lang.vue' +import AppUser from './components/app-user/app-user.vue' +import AppForm from './components/app-form/app-form.vue' +import APPAutocomplete from './components/app-autocomplete/app-autocomplete.vue' +import AppFormDruipart from './components/app-form-druipart/app-form-druipart.vue' +import DropdownList from './components/dropdown-list/dropdown-list.vue' +import UploadFile from './components/upload-file/upload-file.vue' +import ContextMenuContainer from './components/context-menu-container/context-menu-container.vue' +import AppCheckboxList from './components/app-checkbox-list/app-checkbox-list.vue' +import AppRadioGroup from './components/app-radio-group/app-radio-group.vue' +import AppEmbedPicker from './components/app-embed-picker/app-embed-picker.vue' +import AppTreePicker from './components/app-tree-picker/app-tree-picker.vue' +import AppFileUpload from './components/app-file-upload/app-file-upload.vue' +import AppImageUpload from './components/app-image-upload/app-image-upload.vue' +import PropertyLayout from './components/property-layout/property-layout.vue' +import AppRangeEditor from './components/app-range-editor/app-range-editor.vue' +import AppExportExcel from './components/app-export-excel/app-export-excel.vue' +import AppFormItem from './components/app-form-item/app-form-item.vue' +import AppPicker from './components/app-picker/app-picker.vue' +import AppMpicker from './components/app-mpicker/app-mpicker.vue' +import AppFormGroup2 from './components/app-form-group2/app-form-group2.vue' +import AppFormItem2 from './components/app-form-item2/app-form-item2.vue' +import CodeList from './components/codelist/codelist.vue' +import AppQuickMenus from './components/app-quick-menus/app-quick-menus.vue' +import AppCheckbox from './components/app-checkbox/app-checkbox.vue' +import AppColumnRender from './components/app-column-render/app-column-render.vue' +import AppPickerSelectView from './components/app-picker-select-view/app-picker-select-view.vue' +import AppSiderMenus from './components/app-sider-menus/app-sider-menus.vue' +import AppAddressSelection from './components/app-address-selection/app-address-selection.vue' +import DropdownListMpicker from './components/dropdown-list-mpicker/dropdown-list-mpicker.vue' +import AppRate from './components/app-rate/app-rate.vue' +import AppSwitch from './components/app-switch/app-switch.vue' +import AppSlider from './components/app-slider/app-slider.vue' +import AppStepper from './components/app-stepper/app-stepper.vue' +import DatePickerRange from './components/date-picker-range/date-picker-range.vue' +import AppRangeDate from './components/app-range-date/app-range-date.vue' +import AppActionBar from './components/app-actionbar/app-actionbar.vue' +import AppOrgSector from './components/app-orgsector/app-orgsector.vue' +import AppBuild from './components/app-build/app-build.vue' +import AppStudioAction from './components/app-studioaction/app-studioaction.vue' +import AppDebugActions from './components/app-debug-actions/app-debug-actions.vue' +import AppHeaderMenus from './components/app-header-menus/app-header-menus.vue' +import AppColumnLink from './components/app-column-link/app-column-link.vue' +import DropDownListDynamic from './components/dropdown-list-dynamic/dropdown-list-dynamic.vue' +import AppImagePreview from './components/app-image-preview/app-image-preview.vue' +import AppFormatData from './components/app-format-data/app-format-data.vue' +import AppUploadFileInfo from './components/app-upload-file-info/app-upload-file-info.vue' +import ContextMenu from './components/context-menu/context-menu' +import AppColumnFormat from './components/app-column-format/app-column-format.vue' +import AppQuickGroup from './components/app-quick-group/app-quick-group.vue' +import AppGroupPicker from './components/app-group-picker/app-group-picker.vue' +import AppWFApproval from './components/app-wf-approval/app-wf-approval.vue' +import AppTransfer from './components/app-transfer/app-transfer.vue' +import ContextMenuDrag from './components/context-menu-drag/context-menu-drag.vue' +import AppOrgSelect from './components/app-org-select/app-org-select.vue' +import AppDepartmentSelect from './components/app-department-select/app-department-select.vue' +import AppGroupSelect from './components/app-group-select/app-group-select.vue' +import UpdatePwd from './components/app-update-password/app-update-password.vue' +// 全局挂载UI实体服务注册中心 +window['uiServiceRegister'] = uiServiceRegister; +// 全局挂载实体权限服务注册中心 +window['authServiceRegister'] = authServiceRegister; +// 全局挂载功能服务注册中心 +window['utilServiceRegister'] = utilServiceRegister; +// 全局挂载数据服务注册中心 +window['entityServiceRegister'] = entityServiceRegister; +// 全局挂载计数器服务注册中心 +window['counterServiceRegister'] = counterServiceRegister; + +export const AppComponents = { + install(v: any, opt: any) { + v.prototype.$appdrawer = AppDrawer.getInstance(); + v.prototype.$appmodal = AppModal.getInstance(); + v.prototype.$apppopover = AppPopover.getInstance(); + v.prototype.$http = Http.getInstance(); + v.prototype.$export = exportExcel.getInstance(); + v.prototype.$util = Util; + v.prototype.$verify = Verify; + v.prototype.$viewTool = ViewTool; + v.prototype.$uiActionTool = UIActionTool; + v.component('input-box', InputBox); + v.component('app-keep-alive',AppKeepAlive); + v.component('tab-page-exp',TabPageExp); + v.component('app-lang',AppLang); + v.component('app-user',AppUser); + v.component('app-form', AppForm); + v.component('app-autocomplete', APPAutocomplete); + v.component('app-form-druipart', AppFormDruipart); + v.component('dropdown-list', DropdownList); + v.component('upload-file', UploadFile); + v.component('context-menu-container', ContextMenuContainer); + v.component('app-checkbox-list',AppCheckboxList); + v.component('app-radio-group',AppRadioGroup); + v.component('app-embed-picker', AppEmbedPicker); + v.component('app-tree-picker', AppTreePicker); + v.component('app-rich-text-editor', () => import('./components/app-rich-text-editor/app-rich-text-editor.vue')); + v.component('app-file-upload',AppFileUpload); + v.component('app-image-upload',AppImageUpload); + v.component('property-layout',PropertyLayout); + v.component('app-range-editor',AppRangeEditor); + v.component('app-export-excel',AppExportExcel); + v.component('app-form-item',AppFormItem); + v.component('app-picker', AppPicker); + v.component('app-mpicker', AppMpicker); + v.component('app-form-group2', AppFormGroup2); + v.component('app-form-item2', AppFormItem2); + v.component('codelist', CodeList); + v.component('app-quick-menus', AppQuickMenus); + v.component('app-checkbox',AppCheckbox); + v.component('app-column-render',AppColumnRender); + v.component('app-picker-select-view',AppPickerSelectView); + v.component('app-sider-menus',AppSiderMenus); + v.component('app-address-selection', AppAddressSelection); + v.component('dropdown-list-mpicker', DropdownListMpicker); + v.component('app-rate', AppRate); + v.component('app-switch', AppSwitch); + v.component('app-slider', AppSlider); + v.component('app-stepper', AppStepper); + v.component('app-portal-design', () => import('./components/app-portal-design/app-portal-design.vue')); + v.component('date-picker-range',DatePickerRange); + v.component('app-range-date', AppRangeDate); + v.component('app-actionbar', AppActionBar); + v.component('app-orgsector', AppOrgSector); + v.component('app-build', AppBuild); + v.component('app-studioaction', AppStudioAction); + v.component('app-debug-actions', AppDebugActions); + v.component('app-header-menus', AppHeaderMenus); + v.component('app-column-link', AppColumnLink); + v.component('app-data-upload', () => import('./components/app-data-upload/app-data-upload.vue')); + v.component('dropdown-list-dynamic', DropDownListDynamic); + v.component('app-image-preview', AppImagePreview); + v.component('app-format-data', AppFormatData); + v.component('app-upload-file-info', AppUploadFileInfo); + v.component('context-menu',ContextMenu); + v.component('app-column-format',AppColumnFormat); + v.component('app-quick-group',AppQuickGroup); + v.component('app-org-select',AppOrgSelect); + v.component('app-department-select',AppDepartmentSelect); + v.component('app-group-select',AppGroupSelect); + v.component('app-group-picker',AppGroupPicker); + v.component('app-wf-approval',AppWFApproval); + v.component('app-transfer',AppTransfer); + v.component('context-menu-drag',ContextMenuDrag); + v.component('app-update-password',UpdatePwd); + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/assets/img/404.png b/app_AssetManagement/src/assets/img/404.png new file mode 100644 index 0000000000000000000000000000000000000000..d863349e6367fb46dd4eefbacc073260a51cb931 GIT binary patch literal 52110 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 Sm=Qz)0p@zy!olYQ literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/500.png b/app_AssetManagement/src/assets/img/500.png new file mode 100644 index 0000000000000000000000000000000000000000..c2abd1b033a8e7d74aa1ed00288ab6e516204e57 GIT binary patch literal 30309 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
    yi~&`7Yx2(f1Mi1_`tzcIZkWD(7F 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 IM6N<$g4*}d$p8QV literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/avatar.png b/app_AssetManagement/src/assets/img/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..2d07992f1f5ebd157523bae7fc238cabcfe70556 GIT binary patch literal 3880 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 literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/doc.png b/app_AssetManagement/src/assets/img/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f71bb3f5faf4f12769cfafedd2b7dfaf81a2c5fc GIT binary patch literal 2178 zcmV-|2z~d7P)2si&00001b5ch_0Itp) z=>Px-JV``BRCodHTwQEbMHD`>yDdlrD-sAoEDF*V+Ny~}g$MNk5)<`7Z39RZGy!?w z-v{E0pb0Mq3WTU2Mu;Mn@&w@ljT&FXh#G@L#3&Fn{HUQp+fur_cl^%Xy?5`Oxw~_> z-EDVaCtU8#nKS2}`SzSMb7!VkP>H3MEpn`gP@}Y{8LBn$C5bK`Tq~X(4pn2r@lbwd z%K=#(yFm5HWC{pNP?I2PmQqfVNxxQt#AklW(3OS+poKeRZ8AYk0HY})sM%tx_=D== zBs0&4nc!c^rHq0FP;GI$tm%P!kOcrFHNzro7wNw)$2j7xQbfT~F5o^OfR^r*Rag6{ z4spT;0&;C2x-EGZz;RQVVd3iS%@_fCe!H9;k9z_pT%@aq>Jcldyn=4jybI7v@5|A> z-PDvotUza*2te@tdR*4{IzNnN(Xv&}h3nS)^eJ*7hGF#(1M%-wswF8AHqvPrfpApN z?iRH{$2N^#L_!R%@>CJ!m%Zpn+4rEx9jE|g0Js8B1t0?ghH7`1H}I82HHP@O5aL=< zl#w(-lGHq^tN=Q=PP`0o_$qj6*(^VW(7CE$4KbDBW-nI&GFU)axmfEK`5NAZH8(Ky zFWGes}04ggNi$>|)ge8s|`ZSAHyijnO`m9nYXSJa8ilVM#gid?coiX+Arb+aZ&PY^EbgW;g5Y=d}q($v=VxJ|) zDP*lUf18}0u;^~Bq7Vd&CI*Sg3J}bFLfboX{D;fMU*3j-v<`mT*(#KstW=AS*N8J% zvAoQ(m;x~44KwMCS03m4Q_H(5Su11P=#^rvC=O_t@4K!~o^BgOzoDxMM|%KfiV1E# zUN(Q<@OY-JBO|?w>J&@ro^zNFQhe7k5r_Mob$cP{n41sC2;l)xXx3-9z^}&}1SOfW zx)^KAyP$zuOS_}@!e?L<^i3d7hL{0R&@UOXFBkkA9}Dc3&|ZkI6mnsT*yzMCf4eFy zCqU?Z;QI-La7UlS2z9!1ow%Y3^_EA~(Dyx8L_Z#0&HUav&hsW@S2y(v z>V&>g7jrBjqQ@U>?$xP%g>~3&hEYg!F)MYtLv2zr<(w|YS|%;q%}#nXPR7vDIATK7 z6M)kU2<+>SUFzkx1GN-woojV>#8zc<*kc`-GVF%jgR-gluP;SAz2k|tMqA?pt&3bGO1jh`gF;@-Qw-n_HSdV6Hi~!lc zaDd);z1WM1pD(rol{uKm)hukM8QvxxE5rqy8sjxzEul?50BP-uO)vvQ!6O-bbFZeH zphuXNlr&qdV?b3JEN(2Ufvql7!mj~5hc+2w5G-Qif}L{Q{$=7HuWB7@#5r%7^OzRc zz@Q_1f6rUrxk{Y(mN_3q{7Lw1Q04HKt0MF&mOD23sRb+T!H+dZm1YJAEfT%98+@TQ z_LdiaAV>Ce(F19kW?O!b}gPE^_C(MI-gM=Dgj2j`+WScO$GW)t{ z7JdQyP!%SH)7k3W$}E|n0U!(Ou#rPq5M0L?ND~}?JnoY0vE$L9B^HhgIS>fLTEGs1aN$Am5xJM0oovCTu;LoHr^@Q zcenz-i27)r0?tC3tC1W;o0uhYvO)nj|a8MH~!c%B6K8@ z6c>Z!4VDIdTA}k4RZeJt(rZH=tPOFsFF-SaQ#w$m3i|(f&4KjhLqiE|K>+B%mUg*ZRSR?f2;SfugGK?= zJsQ*o$VI__42F5%0YYJF~Y{W{L|L^995h}!kk0gojhEfHrY2{8W+w9LxG+`}>mq_^wE&S1e zI?PA1F39JWn13yQ{RJo4=H=gV@GXop>GYmDyWkP$alBjc-!;(?hqZymR%e3;Yn$xw z+$eV=KtUa~Pr4GFKpkIh;;+B-rVd2ez@>L&XTsXXxJ+f1F}m1b`vY*qf~{1Wbb!Mb zV<3~iDm6W5{UzvmCGBEC3g<&hAF?`!Hhl4SLhQ6+yBu*TDH>3) z72SgJ?d1zQXlmGw#07*qoM6N<$ Ef^jJS5&!@I literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/error.png b/app_AssetManagement/src/assets/img/error.png new file mode 100644 index 0000000000000000000000000000000000000000..13ff77d27cd1336b89bbc439e8d5acd2bd5b4492 GIT binary patch literal 60601 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

    X%rS@g_@3#hbI7eUt>dZU2E&LhkTt&6|)L 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 z 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 JFON#+gU^ffU7@#Et@b5o=1{fd7v(G7^R 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�pc+A&x&m-5gu7LJR|`!jX(4DhX-NgN;0ql#pYA7IiVTu=N| zK!DmThTMrRhv)ZhM+834RZ=Vr=zFK|=eIyiEk}SIdyD}|SGOJyd?8bS9PcAS{LE3X zF91Re+DL|V5+c>6`Ojb^;=CL6_w^vaMfa3zNy1a~TBXqTp*2Dlaz#(}<8}|Pgu?og zUVn9C-oC`>#L;O{AbAm;`^Fk6+zKLp7cNRts| z+}9r(h#fey>u=czJcn`5CFom{d>L3ee?8TnTU^J6IrF&HcsW0QA+~!|*qp_$k z04w$$k76sW0PNS`&#KeXH@v>g63rsWk5}c~i@14#wj~HI>8zKK2yjB7bl!y@MK6y5 ze5s$HZ%F)vtk?OzQ<0n{`|>Ix4shUmivrztXsC}u=C-K;c^K&GDlfJlH z?ksUXIiD>Ert?4*uQOrzj*ps-ctHB;(CWM!oXvh&`^E9y@y1&E=guq^4Nz(S!+4IeY2g$w46;n|90}-nXJt}H7`X@> zSC*k7Ww43wn3r=(d0tpZ~G$zYJJ4 zM4DAYi_wlOkJhy-M}Q_61J=KdayIatgx-^zYJbh>zkZ0J;8-}wVgYWh2EN{O-50Bz z`JSL8HhO*S8f*V0(SDEirIcSsRyK*LE#k=wb(Jr z=1dAHSNC7;A$)%k-;Jl^JaB~8e8LAj7X3fz*Us#4$2eWZ?XPGF*CY(TMhMQ}KMMgA zK>pq>zEc>&zi0=d_D5{he!ZQDZ8p>a=E)^fpeza4%Xf%D}HQ()p)ZSy#4 z-m$DA%X5`$TWAPBlJF-$t74P?l)IfQ(oBws{1{9nAy-FFQruJ~TLJTxyEwCtf&jON z>4RP5r-U`@63vPub!`OGdnFj81=Cp>Ps$;^fb#=P2T}Dmf&=0iEi>6<3FEwd@~w2Q zNNPFoY$S~T-Tq=27xRB`v0#$kiEv~7aXGKL@n^L_^%pQt`X!(nQgUzTKbT+mIP9>4J9IfuUcy8kf#Bs4r5 z2R{W;QLpJ(2ld|ngVYnD)&q34q|Vm@kNW;IH8h8GS>Ic$!~qXV{jDx{$yR6bVRErE zv@$7o@cA7P!s|wdbYdJV~{Dd-hp#7%c0t0KT&n?tRGYsi@t>enNs=p+7+R4N0dyglrdAkx!caUW8h zA+|IWHCKML8^&0W2WRmms1aH`;UJk9aPL$9pLh(QN)QO+L61a$7mH7pf-j}dFRqlN zpE*jAf=N1m>*>iTTUny13DzCWBm{~RWcn`564ROW$gc@c?ba6 zpd^QF>8g+$5T_>Z(lZ3rWE*`I=Eh)NTG`&*-#~O^U7)cdsCx6SY5`m02Rv2QY(P|> zl-Ao6PSS<=)Y~j)bOWChIuWmC52)=;QyU3Wklmpc04OI7zjbv?;C;^7`0K!*?BRn# zM4jHvf2_KlNUqtBWwHk&l*PLRCS?ZCHu!0rS|(?8sF+$oqwn{he7EpZ$Z{hu_4m~p z;ens0@-9H}ak~(VDtba`Tpg@gIx4VRWf-@0YFs2=H0Kp96Sdv_QGKEe_)d0j*f{@b zpp-~#N!m(q$C%5GS&REW#2>lf%TrD!ko=%XO(_4YCGJFMO=*D+#S9yT{}i8Bq!-Zi z*ePeyZ_nL0c_;QPu6WT@qb~ye$QB_ovDN?MtVU+w}4u5Qpjjc zLMPrlisLJ^lJehapYFupEjjri@xB>#bwF{D1i>|Mf$u zD^%+|GHx__6;M{74H|IzEV+IKFXI0m8P7SW5$VVUcX~`(WiqEG@ZT(aYmZOaaevF& z{{2xgSs~ljW25IVoZWAZ3gNv0*>jKoP5W3~bJRWqTUIorgpKwHOnw3+fa3f5f=DV( z_xay5kl7n$l0qO2QUoR~pe#sr14EY#K=ud+z@%(=G{gU%$k33D-N|_476gSBKnTKi`!&FG zy}-2Mz%@@pmu<``0_VRt=xvlq)Fcom1Z$L;UCZR_Pc`8_OhG!OZ<+n(&JbXVwXAvY zH@*L`v!@#|7On`!NWk8Wr9)_1#=e3VLvi{W64l9<*H)gX8K5yX@w#^VnLI>`D5b=-ggC0?GY+yvf-yBYX!z6}o zT*6wnheuTw+2cmT8Q+SXjEmMH7}GrEz<&)R!|PO5 zC!1ym;DUaWz^&A8^8Rax_zSrM)mbx5aTM^zp1f-YD|= zIs6}PyaVP@^VdJUlKd~?JSf9IGy;eBbt-FG*B}@Sg7X1;f$cN!d+Eu!0ecds^z?tJ z8nA3dhTK4>_S^WUTegnVbb^|aTqhRyP+Hkre`2=(zp@&}DE@4u-_fA0AqDY~VP8>M z)qB)0UZZ_-#pkZP{X0AXG}nOZp4YbeD*toIOonFE><|b}+L`pmiRt6#0c0}aN7dgV zx_`6EP(Kr~TN~7T)DvWsI{@>5Es{#u>fm|gYyoT_`)E_y|CCJN8j`$uZ;5&n0pF>w zn&@8ptpJ<=ZMn<(hX0#3mCPX6EZGL*w{#@x+>=eG=xTf=29tiX_F}1C3G#nzVK%LB z#pbQHP?{A7)2HIAh4A`IGv) z|JooRg~(Al5}XiZA2m8O7BxEyc8Jh%_98RmdJCryIr@AS>X+%gL||QotKC8n6w8WN zI}T-ZyE=cjJ2_m~-vJbkZkQtmh$%JA{EagzB{mE~CbULeUFS$LSK;#j_hJACgp&YHDiCCuwC&Z)lBybsH=UH03UChD-QB{8K` z+NJBPJBqA2q<;LdsF1L{Ibv(-VLC~r1x0>h+J9s)CG6KfC9PMMrN~ciAeYO_%Ygl&7<`rt#W*yk$4A-Vc1jH z#8`sc;^HIuk;mp8u?&+_O@;@K?uI1Y|lqFR6%XF6vJS_a(@K*o?(bvIeJJ zv;u)PxPz~8)^(EG8J`?`e?`EhT^!W1pJHSPtH}qOYG*b>gdA4}muG!uM`wF9ccr-t zTvmrPV6~z{q9TjiRF=7P$1SBwho=G^?;uljivV>xByXFtC6Fhd}g zAqC$N1L(*|)C`gYniB)>oZn^ld-tV+4mvrKov~xk>baDO;vn@gzdjq27ax&w8zEuk zHk=|a+He*9#N(QNbnP)j3UOWstW}u#Jk07^WYXnh7w{3a?PjqOy z$0BX1mS$G+ELHcY0A@3J-Y%ZK<0?<$kHd!1NAlC~o}#mpytJu-#tVSul)YdDlWeTt z4J*>}ny^jpBM~Y$=I&Wmp!lV|x2@j`Ck@%k77}QmpIorq6HUJ+c5>F#0oI`P*$4oC zA5m1aFQL8EU5Oq>>{UDqQCbC4Dm>}ZH0a~%dY|<%Lsz3Z?kLCI)dKz4vZF-HLkW)X z2CJB@{=#frtAku(Io867BEmaJB;^+@ZHSC7bh@V)f$GH_@qv00eQt_P;%K=QIlhWJOxI0wJTTC)w9;{sq5k@#vL2EroE zz-A@V-rzVXk;9zZbpvGr$!lV8H&-e9imPi%hVpu(^OB0~pNW2HeX{tp8r?|zAfzJ< z)4HUvAGTx|uydc>`~q|}WvzZt3`)>VPRl8h5_se$4fnU+N}Y~b63ceLVeR8*&7x_u&0VB()Dg<@4v-`9fm!+JLw+B}1K?56 zDie9g^JSkd-=kd#^2ypUi9CLcOKqiw6@R-ANF}Yi8vJQFt9w!C;>J^)!x+MY|8eF@VZEOV+vpwY4o(yXd<(|xm z*;#y4rcZMCW-lx4(#|ox*+EGcpIhA`pN%0!DhL@kLy-;Ns4DH*kl<6 z((-}vOqSV#J;2lPd4XCoUM1pkqlTm^dR+=MP+qS1qO$xCw`5x)t@HpBC6f| zx)d_x>#%Y*O*QK06!lpLqxBV{`idfOj7n!R>?aB@&gOjxH@FI8sq$M|>TMG&I^6T2 zpJSf#DFMH87z4Sj-3j2XAlftAm=NVB2K@C{JP=4#Evq?_1HI-m4Eg)-^mJ*QGyC{H z{fzHppojx-LLuB7g4)uMv@Zs7zaXvjv{B4@HFD$aEj zwPO}#exhuDXSFN=(d`yoxWHDb2L=0O=^XoIHT8J&3dhFJGY<{7`F5x(*fhqE43iWW z2@hel;u)9rSqho5i>F*zjQvav%he29%~+eOlNJ;=iPy7e zG_q2Vv*qsR_YgijPUSqx;##iX%Dq)GsZ8IAJ2(#T)eX+;o`NaQ!a-V%5m}!`na#g> zB*RhJ*Lp}R*0dh3dBAVlcfF7(e&173?{=inR(FuNosQi--z34%wE0w`=emdda1-(J z^+V6&jJ|Js?T7Mp{110U4|AJL%~Kd0mUk1ZPhuXEi@)Rs7!<_tr}QC8^(o<%2-tf< z!z+#xh8o263DpW(Lef5=^yoF}<@m!zT#7$kh-#^9Ncpn#?JHB$zaG-kU8+K5$>!XR zu*r5=Y|D^h$++~Z;}dlNPT|SOC;f1qKATDmSlS`~5xa1s;xP(CgOqM;-r=Fa*uwSc zW1T0Hzt+HW*JO}tDRFCdRXr#%-kONVYhFj8yKjkX=`$U0pp~Gt(R+4l$GE0my^w$% zv4`&)K^mZ863ZvjZ$8@$8(=hlVH~y|c`W%oU9$ZQlroJ707vch!?!>SI6?BA0@04! zneJqEDxkqSb5qTa6VE(urZMzvJ?9Sax*=DkqP{Ibk>B=X=Yyg|56%m^!ypne91>9J zrK=v3tGflsSo(^&Jz;={wbKH3aIBqPg__$-&TjJbeKloiBexa_dffffEfE1}=!;~U zY+?|BE}c?`MFh28Zxu+7&E*DWgVAxUPK}1pHtU@^$_TLUxx!q)(Aa*YG*>U*3;`W_Uy*T zhT*$@3L*|VYZ*(KV+Z7J^q##TGdPGy)mhB1dt*J7L9w-85N+gi@2f0+!jBU*mEk%+ z;ha|9o~g+!aZ5Yd4@8RBWJbh3D(}}vHfCCIsM9aeMaA9w z`Bo!abWCX7_Z_XPehO0H+siY0nB#9dPwP_ne!PC;Uy@DNfy1Tfp9>gMcU$Eh4biXI z@FF^T_7WApErox=3`LCiEc!zw(%9ZQka^FbsvItzuJJu(dmLMNBz`;HB;0tB8eUy; zx8oLwvi0@KmIi}siV^f1^A&ExL|ls84UF{kKF^MPB6_c>L?`2p#IgJpHIwtdj$XN} z?=m9vdv4A9UGLuU?fh=A45LYVfYRDx!6%OKHG;Q>Up3H5)+sun_g)!XHJ7TrEb%SU zaYy~2-VViI5c87+tS&?zYj+MygUP>yQ~Q_`hf!I^BK8@7aL12=sL~k6wIV)()3((p zK082yU?AOWAG*=1zFrYMkc%1);v-_8Ic)xfeL$JU!gJXZXb^uyy75F(|-&XK=9ndWe>>SP4;xGY)g$g zs`S~_3ognCu|ZIhZ~Yj(dw9ORJRVRv*e~$g5E_J zTIY>hr&gC_Od;i10^B{~i;k)r(FX&aqO;}a&-H?~oPo|>6afRM78`YzSLx2{v3YW(h=BlJ!nv56UQ!#nZjL|^+>YqXA zE2UTKgO;~{DD6!NG1t&JX5(PL9*kgSG$Ip@w)ZMQB^cMmJ|n@So($GCcxaXBmN9M~ zem5mwhi4lw3F;itI4#IAL?brSqMc|rjS+!8Sid^da4g;Nn#9*tet?F_vIp%kntrFe z(5<`*rO#F)x9HtlOWcTNLR8_b@+m#bS*u~|m`^1$eb4$7_HYbG2M4j5cBX2}28R#e zk7mPgntXET>q}o}l7LPhB{WUr_UBYHh&ml0@~oAIW_$XTXkAQqrEjC|7{AOi@J3Ho zu-*6!=7Zc(t=^=(jm^dS|)H{|4gT#6k|2|z00zBj+IVT~`+F8Yb7^k#*#hQ*@|hIZ zhUm1C0?)#;l#>RS|m zsgzk0nyWgM?CWDYBA0A1PUlEE&{-YqzoJ!PfBJe8q!qISl$tT8?wl&4`Kv9AguM@6@8qETmEt z_qkX8Nw-GrQyYBVO$w0r`9g;`04jMw{>nG{uz-8E7xM{+uWFC4e_DcL)w%_5p;Yx@ z_Q&v>i`#t&$b-27iK3^zb#+oJRRg)Bnk2UMYflH)6p|4U0tz(w1_W!5a|nOr*ovo# zBrP1%9G1t;%IQ0o(PO&XC_2o&>%Ok_>*=7VE;klwCN8Ug|ICkQb(q1>NDJAefVB<2?s+!9B(y@mSj*I_nOpfeHVYVhP|AQ zv6{fJ3OvVHyEh|zZAy;SiynhNPH#yhgLQMX<(aIwE~onBb^mZ6jScC;RFyp^`q~(5 zGbX{S6g?_X0-y&3$>$W{XobN~mfwLUip2-Twjk48%N-Nmk-BRSi+gI|_B|=v)P>ga zp*BQu!JFrxNb8GEC3Le-5j|e_aRr`sSB2Kfi`1nMr~tl_xmx&c>%Nr`*lAlK#qr9y zfb$-`{e!q9x22Y*YSs)5gl{XD>9y$MDqRGoBBQ*j8nEH`wzm;_iK`cYOuEOboV#2Q zhh=Wk5^;arN6(Fp)aHdbTZ@#5OAbqOwmr8Dp$R5O6I$@(qTWPuJARDQc8}LxlL+s` zeovKruLj)^1C&Q1STsdV1e8Snbr)$&5lx3)z9+?}v9O!h_`P1x2uAO*oa?YX;Q(1_ z<(J?$By24Nbu`H?28&Z`L8dD@zW3cc!Zbi0c6<}Ra0|t^F>1O?MP)N`J-`&?B+&=` zh9J`J`#gj8;Ge);rJf{iO_C^Xl{Pg=N(jhB89%5tt@bg3H5T(~SwGT%Tqv6QxF1J@ z`5t8@+&5}5VYPNo?p*rfd6lVjl;O7hQevL?gl&mPddYE$gSTJ3cM~X8{K7u3lbo6m*RPMo#zn|hqUII;1*|R zVyZwb8g<~`3t}BYCQWreS2I_n2U97M=RMhNvhkRZmmkz1th*i-^7ghFnO2_+u`jDP z#<(ACYHj<{ynbIXv%&BJ5&)5dznOVMtRLI|%BJBa1owQ;-!z)I!rYsGTU+aBup$3V zgsR@cN=8kjL5{FQ-C*_FPyI1hvZ8DHB5TazUnM*W2ZPkZ_$KVBp1Kf77S65h$XYab z_ot?bH)v)JeHzmY7ocOJak|}?&LMpf$KMi6YB=za(s*C-uybXgNOf#8d4yu%PU-~n z(~xlio^$1nF?Q|r7&l#lyKVOMSbGmvWY-Fy3Cz!&Gb+%xv%fK zRWqlQqRd|6?U3XJX(rmJU4;XG=5^1))xGxui}NmNQwnnRQA-c+PHU5h;$ohf%Jq;+ z(aKYP8h!J1@y4AZ5=+I}yL328%edCj#QWYadzLXFLe0hSwBgCHk$}toNsGfc>1q-Dt|Ldr* zsdM@t>#vUnamEZjEAcr{=!wCeyQ%b1^Knl_Or!c&?S_F% zucSQ*o*r*DU(DF)g}d$w!Y)snzd-#ccgEd8SC5<_3X|ht4qjuKeYdM-lYZ?$kq~wN zZSXsZR_3+#9B|4MLs_Uh)e3{5R zujecdGtoNrOm{6Bly9*G{S?j7J#tNTIAp8ujR;2)W*q$Zs{C%HcYfSx=?7T({)SM- zOU|d(*HYi?xn%OO-BL2PX}>8pOOB1qtPt9aXcchU6nqPnKV+9Ul58N&I3f}7ZuX-# z_dN^#Vn?D5qAQ}}>Heh21`0k_{z6_do_fVor({D$;oBFJt*eZ{vzA&hBVEugX#GsH zE&)PAPyG(pSr#bq1$#piYtkn;htKzediqr4qaMEU%lZ65x#Y~<0(AG>&SScle%2k8 zzq&Oo$`iZ#Wg~oD^!)~no}GD2%Y~+5J<^>JKC6jQx_zes>)@ch25Ntr3b&a2{OHq5 znZZq8v~CVTVJF|GS6=f~Vy{TO2Fy}veguixy@y-MyMpX<}h4Xy@YP^2PL;>$i|P_wfwss z-0#gg>clc$VmkObLJ1pP6Bn+W{c0{0Nxz-fn?K0>uw`eIVz@Kd+qK>8;n39xd&;!)Wu~pkYDmeO5I#S(^xkZ* z?i^k^mn>O-j&I~ufE>B%lHu~HWyz2*O96{5|8t908*|Nb%@L9hvj!quQ^xV?B+GJ^ z)}*lWw&8rp#v`KM*|-HTPt`*fmR2h+rv01e>p)d$N>?1NJZ-2@(^gG?WpM{JOVBe) zQ3t9J>?EQfwC#Y{XulL8CSA+T)DfdixA1eF8pL1<)9;ORUp%GogWK+-jS zoL5c+7cczS<=K6EKcAmgdX`WAh7inLFlF9L%$S!wz|9YEFl`I0r50$6*?sAt6|GwG^pfp((fFLX?XOiLT8Z4uBHlWaE(Zz zqNXwCa@~AXuJ9%H1KvXG2fppx?M0J%=@pqNfMx7N$9@K0Pg5^+CK&hOg*pvg%D#XW z_qPgH-ZMK6`fmNn`3#!zt+T%PE?D}2G(g{qK~=Y5ugh+eku-8Kv_ZCYd-J~E8~fn> z3pIjoX1}|pzYE_?-v2PM_aT70m*_i>icm}NT!_F-1fxkNu{66^BNyYG6qTjysH~lM zA5pq_Z{0h~(F&*L*gZ~5X9kXptSQC|;_IX;Uk3soJPZ=BlxJU~i(jdIKI+&S-C0Mr zrXtH~fp#cwVE3u9}sLB$&%ypMB{5~gpCGWLqu>VmGg5D=2y?hDi7 zRA&>jI=|y91>yfLRS8Tuf*wr1RzWJ*ELB}RimNNH)O<-pLJjYp>|q>RQ|{8p`d8%I}rIQj4HXpE$!*d ze&shK+}$r$l&APLmKCv6;Fzubv#5geWKDbyC5bhkMM4qQWyo?-aqgq0d)BXjb{&)a zy$?0N%~##1en6ErClq|2mI75F@Fn4lf1+Ab>-*u*!&h*vYKQqsCJ;|YGI{E^(l!B8 z#tYuVuubK+(%ENUyP|H(1hLG6$+gf4{tCnBGR3A~tB!I4*$zsr=Gre&X`360O-)nC zu&WmXf)QSojP~AAJ#kXbna_$-w>$2DBBX92I(V^bYK)x1!JT%oSE_Tco30gwIW8P2 zWoxhzWI*2L@+0r!hfkvS!UOILIV8pSzXf`3lasq;ml zf~)NPXyRAnZmGiC4>UzkFNa)Kb?M3yHlBo1##^4X$QDhCB4sku^ayf%LjftfvMDf= z&dCIga`qEs1Di)X%~bnD8b7_kkrgWz&GL41R-qlNw0~WD8JD`{?rZwZ;_afb_ip-R zH)*p4kK4&lI(>= z=56)ovD$F|L6dLthVd6SDwEb)%D?-4UocG1<_)Hle~RRB#1WzTYUC%q|^%F$I;PACA z4k~YPY5yzBcc+zNbmBsq6FDLwuXWNH;o>hV@7#7^LcQzdXk&R7)nZ+n@Nw;~D?ihc z7IZ2BAu`j&jeU(XdVHVOU@hZtA;xoIc3P}2`g>rxB<&fU2QC>epL0pSB7VXnbr3*R zZ%R!E?u!{Mv6}BD69cnh4qhzZplnLr5_^44Sd&@jUiWyL)ZFcbxCY63b?>VNtY;4| zFED8*>kN1w>x4e&Z*`h`rgl;H$}O9R$EYT(Ez-g zzab5ql%}YZu#~eCQ_bttO2rF8U*ccdkb9?=zF*yP(pI$nVE)pAq>QZUbMUMo*aN*T zDQ+3uP5;uIm(HK7>3q~w!k2BTO*Z~8GxDL7M@oNuy8j z+5o#^9c->#J951cJHL}OOPa(ts51Aa7A<$Rdj4)w6!0!=lo<1@d{EVfBej^z&s+RM z<(U>SM=C@jju{klSM7e@B>a)LAn=r5)`!qpz5X822X?BD8^)qx%O=E9@~b3=od%Ys z8n-c+mu-F5ee>AFN*=4Sc`{{0gq-#QD9x1BHWM^~;axn7CZd`?+OFO9lH(8LMP9z!s^z2TRW;_7Jxcj_ z@0|qp0j5w|IRBNYaPvqM8S*^?UEP%DCh>PCF*V%v$nQNXY|OI?nKBJb2dv^BS-d-D zG-W2<7`#}X{O13K^lm^>o1-Y4V^hZ=r7qpd71`(#*fhY1_2Zjljt_yp6lsW>^-`Jj zyG{0h}5XfI_6?9CpD`K)#Ju@Nl$@I&mZm*cC=Hn;Ngk)bM zZeW^L4qZ_;(HWl~iV43^Ca(!w42)X7YxL`oBnoU1mf>nd7#2X#QL8<77cBCj?NzBr zLy#B$#m6j4AOfo1e$f5hkB?VwiN6niBk^lvLPezA@J{`!+Aa#2^&r{jpC!L?74((4 z+4=~ylxY;U&?+@PJXRP}6zl(VBNmoY!Yk%cCw2o9$W7rJxcMaxE2uMby%2uS$xqE> zQ|BzdK9&F~t145BF}{)}`)(oH!BVCsdx=TdZZ{L5<7F=M09GQY{JES^a&S0`YZmos z7Wo3IY0vm7TcaLTLs~7?Qcjg|EGotJ%F17ku2tQW;_UP0MEB5zls-OJHdV9s?I>Ob zQvl4JtF5@TwM+lu>KHe|VBCE`QJ(#4%@=E@Lb6vV-;8t)Hq+P-`%&N5t{Uk$q)81p zl{JE23dejt4z+h?*%f>M?$kPt7n-rY%02)7=H@tu^K{tz)EmJ8^wK*m`;X2jpJy_i zr0hXKX}k+EjDr>}rSE;ovyYH4Ex+%{y_XLE=7+@ax6U=6#UF?u(V^*W*i0rx!&z&G zb6lm2Y0_rP6gl5vaiMq4f2(eDZcvL0F(RF-ZLH01YAoF3uH+S|^~ArU zzvEVhiCn-h=btVccBPt50zpq!&S^E+4fZH*jqZEY=-f$?y;B0IQG1`qrZS;@kJ#K- z&#Z1-ZRg$b<90gp^Y;)e^iTR@54{Bfkh>w#GhyxPJ%~qJdB}`SgOUC%dnppOl?fE!yEfUuIr){mBXTr+lAeaio%0NP-<;HlU$E-is?d_<-69==Qg{X zKSWi`grss`*&;cIK*wDl&4JucUOAtNeK;AvwRgp_IPT1us}^fNNSjTppC7&^HY-gj zk!vM0oA*38*c0~WeC-=}M)NwuRpo{qmHC189G{;AvLB~&W2~|2DJ7~NpuCUFRm*A8 z@7ME-4DVh0jtJLJHeGbB&gZ{}rjHi3cQzkl$@BWDl_x&L!-0Hz&F&%7t!c?NVuc&e z;fKTwv+q^*$saU|CSi77VIOjO%RXzotHzublb3#Wpe3i4_bjqDPVDD_P^x+yV%K@t zL_yNEas~F0Y!73!HiaPL`Yt1;An8|2hbaQj33>!`}`7)O&DfuhYGS+r26~a88?6+x|^>&wCU(hO2V*$&gQfUtp8w zO$fh}OvJh_zm83|zl#)KF#Yu_xUF758(w5=O8)(K@tyX6#CS8lzQ_DvN6)h&$Z+}I z11_e(Z1GsaIxN8N!B&B?(cZF>c>f#ip0bPg)WJoK5QBSZTu+K{gIGqM=m*DG&y1rk z##+WF;=Uw!_zq6rJfpG3r{U#??{5EhM)M`h|5mtYYu@A_0`ywlGOt6H_vv7Sebynw ze-y&Y{{L1q&wM8bCI{}015*KfcU3Y8njAQT0|)@w6(;$hT@j*1>@3EefpR7}zyVJ- zisu4D;PMsEQ{Xzlv{y#4ki?J04JJiDwXkuo{LZ94HbqyPq1h~TR1QRl4{YqPi#b&0 zQGlVi@}`3oTuC$9&U6eo!R>`4i3#M-gm0gcCiHb%j=}Adi#aK%s#`UbJ7r(e?6`_F zuL8J=>2`rARwyS5I@Wq9BMQeTGD0Rc^-t4XqmJ?xj2)aLAndPif?lKmF3LReDSmc^ zF8EQPqHrgve&lO>C|+_M@sh`+19yzBEVh?4lrwoIeuM?r*caDuC*5d|I0$$5hS)RA zN}g8Sij_9Yyq55cEv)SMYQIVoYlH=lNfckkG6M_0Q}@&X-|5B1VEL!Vh|iG+9&TH^ z%3nhZhwC-<0$su10OVJ@to(iIlW~K(T$*F(0XL?@D*xX^mxwTKms>zwGi?4e@E4yX zW;~x}odccU>(OV2x*5RtmG&?q-51Tcux$UNa~s6224lY-mDPs!L04Ot)og-`w$+W? z*+}H^j|DG9T8rF)rekto;6ODbk2N%&X>P*-@g2F*CxH==#(sPo3O-~m42Z~%@cq}X zssr)fyDvW^H=YWuS5Mn8w|LtiC-DxEu}sD1Isl=$1{8N>J7lf}uD1PK;lTf*HopWtwzBMuwoelODs5zeyjvCBjY0I#KP0$3BOLMkBBv!`OVZ+;5I6t_le9z7-8rF| z)7Tgkk^U~W+@7~ydCVto^Q`LMM7;8mx<**yis^e+s9HYL7z3M`MO>HyEzEA^SSSa#> zk;>vWOoFEcCxfzD!!W|41?~OkPb=3vk+#APhLj0!@PgkfJ_|k({9 zsKP65MDfh+epaFCTR!!RBAM`v6-3j9s9Nee;pCq(D}4K1Fn`wK7j^ula4hKt-ys7$ z{gw9?#Tjl=a|%pYYs#(A;Z@1u>{JciAjK9x$_mn;?>Ew;gu2Auup z40`^9qf%9TaKz4grcfog+vM%vK!luKc?}@^fF2C^3@R(J9t^;m2o@QgicDf zH#I1IS z05A=sEgm)Q>?k-5QUu4UMHP3Wt^iPE%7q;_={t;(-TlMm=St=9M0P)U$m|yPS+y zO6QZ`V|oLh_<-h^9d`mxuw8yJXzj%H31}wh865CHd`7x+lZ7Udsb8`Wbm(KutQrF!;e~qc+dg ztjiO5$rBqoWSdTp4@y|58?Hh%thCej1o>1Ixeq&aJU(A3~!23!LgSL)yMH#IM1CLQ0`FA6QS^$7qd(9u5JEth9!6 z9Ze72Y5?UkO>OgyY}3$eZ({R2sDl^Xl@aNH=cgdc_8FHooU~h+6bZQ4YuZV|yMmjl z5d2Z#_1$usSA{Wula7QSk103S7@X*RHgq0iLi-Zj^h+78a5lJ`SJ;$;uo0f(Fs})0 zaFV|e_E6{*peJj`!JJx^kImzTEk zCO4hzBdU?M_sLorYY1FVtaAEfDsGI*+fJs^xMa?rn;fX4hI#$@EZMVw^>hyrTJ;70 zSyP~mvz}nP_@8p9eq0Za&bRZj2q0iu=Vpg919;>klyA9=+8d{!^|AG{iqxxq2D}_^0V!duUWtvk1|0R zQLcrJ@sHqU;>x#JL#uf!&qCQ}B?JnA0_@kP{;EYeRzp~n`z(g*p(kXruWdT< z%7{82{p3BigJm4?k7iOHc<(-;_I~YhY4OJI@8Yi)Kjn5G^yw2Zk+x(yiWn?i+3krt zSHI)0sLt}GzekW(?Xor>^mK>d$F$dWd%UT|pL?O{+GTzTf7<29k7_SH=?HVkJ>p2> zz~iUgW7gnW%zZ!ISJXE&Ms9UQqTfU6N4tGYg<}z!llW1_X2Vk!aL4j9-eNo^G-vN~ zuq!{J03G3Y2eJuhG$ZctK3b2R)pT(2(*xVMWkajq&lM)i0Kj0dRgPX}hgD=?2zzKV zGV!$qDW-55)e3-1;(je{?>)VEZw0)To#F3ubWNz`&0Yru zY^&TJ+p51*5cSsOeBzgeF&U#Mk4Y%^x*=}BhnIE`IX44e;n;Y57QA7UFL-J^v~rT< z`qSv=Vm*zW4X57=#8s9?z_bPh1qQsl8+b2-24pNuFPr?`-J*;SoL-A*uvRW>NHJZ? z!*Rm7B@f1X^3<(9&WJS~P6U$`oA>Dxz+uX29z9JvIC@Bh4SqXQNO?xsfDuhOY&W-y zrAOysV3G!!l7=wVi*=9SS6QuS3{9ZQG9>S;|cuSpV z-tBqQNQZ)L5*GXfk_UBaz9&GoaQZV{Xyi5a|HAms#!vF_T$f6d>GdE);E%t>K0S$B z7HEeK2m!q^XwJrahw>2Lfp@l*P^39b!EX9VhX;_hBcg2iFJ&tGOQCy)2OgpXmg!m1 z2iy;u3c`KT{o`5cBLX_sBVca?lDgZM-K|M>-}IIPpAa@#oDNnU^zR3&O&$L`#@+{lR?}VdrLA>69ltg_qPfSEUexP^2iI_C)~+3=@+q z+`Tf_$4yQhjRtNF^=9T({Ek~5&u9wVAn;y4;5cC|-ZNR|&!?;NEgvRow=@IYp1`uG z>u>HV!fl|4S+Zi4#-o5%QyvZ+h&&9q8w)vn7nYOMTv?1?JEAvM#K<$AK4r%`*{o&7 zq`Af)7S{X8#K6WD*zqQbOq7yg#}GIA%bO$tiw$VNp%r&v6CT)0*x(NS0iP#Voe*FG zB>rQx0I}i3HRH>cZ~e+xStom>*%A95S13@(9J5>t8{@ls33zltI)>{zL=$5bK^jogil?| z;lYdl&YMS#L;K*yH23PRchLrAD&P8+OyN^k zyxizBY5&mga?4hKFg#)Bn8@p6T3BgX#=wO;`O}Y~t=Qk893P+-`m~5%X#zabKop8^ zD~jdOKYXwP26#{sM*KsX3)5{SBywdK^N>t=P@+|rY;?2o1tla(v1u;OfsBhZasTvS zj*I(~_|Hb$jlK>1m-+!pNDOj9rSs%KRkO{;v~)p@As$*$?u{~2WDL?{JPvD)!5puf z!HrY>(0gD^QvnI5r`eW=k`Q3Rp-=f!48~5J-E6%+bqU*a&vCBESVXPM4}43UIWRDR}d zE4S+@n-U$J%9jVz^H&aWx0t7=P2`Z36*=q7BS#v2tU@41##HdWw?o1IC)G4H+2!>Bz+GgCHQ^5~dG?Uya^1i9pdXG;BL#6n? zK_Se>Ala55*}PMV`};1)q;7Ixa^M^esJBluIWRe}!+|cy${ zJQYrPblywx_=Q!&GUBnn>HA%i15X4*FB6b)GH8)J^oQP*D~OJQ!^E~n^c_Xw9-uwJMt$ptSLIZ=Ttj(J zwB3pqZ(8PRWaC(Kt8!mDpYSn##S8e#gz)A2V$3`6W7x6oHN2<1*WtUzAY~Z(_vIZr zmw7JzyqD3YfDim+k@_VVF^YF2ztIF{42!#=iSNk{iln`Pi1w8EC0rCtKV+bcL6<-~ zaU9P9D}lv-*8!TdX^RkU)}8nG_0J9#5JE%VQ1WiqVp1b+10p_UncSnP=mV!ZMy1Kyo+YFp38dRx(G8 zZqneVd?nu-hDVKaTjn~Lj8lF$z#oO{cAh8+iKjdp!c<;o!~B8dnMV*v5Mkw(s~G|r z0|T4OXF^NnCO;ky3F`9q8H#OkKX-u)f6mC*$l6O3*W zK?7mXHP%(&H23i)MPR}0Lg6`J4#A|3$u|bP$C|*JK6#4HG|i62w92=nMe@Hl`m_1J zHlZ7a^&hVRbqwb@sQY1h*Xp>43C$2q`*R~|1)^5fqgqpe4q%BwiEX-^xX~2eQMRg51KKg_s_rO*8N0k5s*Mr9m?4cG4q?0nT~{siogr77+I|<$G1P+; z!EB6RLpp16TxV{@{8R`x9?j?Ez&qf8q>gDO2POx0IAB43l-hP;FXPFsw-VZ3e7UX( zY?q;Azi@SNp=(4qx-V6bBk`bcN8lIumdO@E&8o038cQZ>m`9rTxsRm5U?Yx2x&u)Q z$m@BT?6vtw%Y$9nnQRcENU!CO;qc3}>rwXhFCo!nk}JKoZuffafEb~Z69D^o-*UbF zlX6f_HH$2mc%j6TCl#WXsYsz*E?fEIsq)5)?QY9>f>6!rK4+A4SGLD7BlNP+z)p82 zU0Ypi{zJc0P4H3{@KU~n?ZX9}V4i`6u0(WyA);RNGw)Emt{Jth?Vl=77A%4b*j~3< zj8S7%Ev#X99tIBZjo+uDo%`KzB#!4;)eboIs~zVo{>;hL8i%eM#<>0}J96uT-Um;cfbN*y_edJDKMG*3B>ro@4=z!~ z&w76PJN;FCl~aZuCm8;@4G855ryx0fr^(&+yXqk_FR;v8mZ~#kMXbCKEG2~HWN&`+r`AmnxfCG=loOWVWvc2*Gy>S!H=Dy_Vbb3%G z@XK;K;K3Cex-ulA5M~poOh8C#(;el+>Yo?w5o8c}kS4N=%ASTWE^+c%G;2u2x9 z0xP{>(853nNzrg>UM*@3-f${h__lm{W+kaHkrow8U6+-91bK6J zDhT?|F;N7&{3wGNm&97y5Wm#>DY!{v-VKRY+q~f5Dc|?Cp-reBm9}qEFkO1EgurJe z6mLU1x2a0&zNHv!;?j3R0`$a965Re(xY9L}<=@waobeSNk_ytPp;k(u+V%W6ejUTKX=_lj5_@Q^lG?N390}soA)|(%e{7Lxaz=Lo=!dN@$ ziv%Z{k+)EM{TN=f4^oteB-4sV36nKZK!EY&_aO^&WunzSeTCLnwN)mwOb{?~y6xJt zc)(X?4zz6y6I>>#nMCNyF%(~(m~i!sPW#@C@kHy1bWfTfj!Bd!C31UKR20Jx|MbAd z6ppxU50A}PmHpBtG=+wp$)y724~PaIHT};u=KLxCOL$MZQ|K~IaBDKgRnnPYf+P6S z2F9?&IjlTbMIaW*9K(a=LjVu*IB1lBx=LY{#tRijpoFB?&sU8d#8Z*ZQwvI8G!bI+ z0!Ee>jF?mhZ;LtZ2~EF#Rr$cFwjWxLOFf}3!2vDm_{#0c|4VT5JRH9InL*^di{*;~;avooj$l~E zCHxk)6_6}0Q-HT5z=Ul8q%BH6`$@hqG&n*DC#%K1e@KpN6IUn7?5XN3*xl zeC*pFJ_)?}BpDTjr0YeBs4vtFvMVEjeq|Y-=SG472e{LXEQ`xe{uy_IBjXP+xnT#| zFu{#mab1xq+$dH7^YFw2JSebJ2IzAhf&viyG2ks)Ir-ZVDNK0UJRyK(LpRA$vX!EZ zYo~Wi@=YK#ayk>ZDzlZr#0#IR!o=ez5TpF@P!{u7<0qftVT0T!{Wz&iJ@i77gu)C4 zT%kAaA$sX_JwhjFl&{f|KMvDAq%gk0kCSxdx1?hM_OM=;S^a_eEt^GIv(S~e?pIdI z1Mo_-#yj}RdI@o+L4MjQhI*oXP*0ew+LzaL(qh_kBrz}v3+|^z=r-OqW3=RK7TcnX zhMuGw@!!hrH9FOU%tnewub*-~G4#<-Ru2x`intGy4+k}tr-L~}!;c2yjYQPPTQ-&t zR3EdblLHsxKwc#mLO0P&4onVo4sgvaFUbhlOhV=^w$7fbJJ`8~;;{s73-t(&Okk#2 z=KzyvPKcuXWukbY;d4(;d@`u`PZMC zR9;}$CU{lvz8Z+{#&EJ3LwF{fZKc4$esrQL$n;bK@ifVHY|zqo`5oe&HYsfWDX{RL zIx-?ZT3Vbn4ip84EpR{=-};I@kG81f>S=FK?3yBfLZUg}}_Zd>{fF$xh+ecOxF$RcW96wl*qWRo#H z&5s|ZWG}lDW{)1mp$E3p=z)!2cv~LwA~d#81ge z^dEGPC~E`D*gzgpjxuK?40&0>zSzLv@_{!7T$qe409*0d&^a-5I<5MpH(%n>f2G}0 z9$)P&IOKkYP)umU4PNH3;7(q|L$5ZicEz#~JDGy5tRgR+H(MYDNRJn&o* zSki-3X+v}HIk@wnff)y3Dyz!^y<2?>i7}1-fZS>Zs1mG@6D)Zsjqy8exd|te<#-qZ zhz4GYMT%w`$qx@U^$0($6_;)1G&sit=R9On2jQ)}@6u>o@|qDW;$$}O2^G7a3chrq z!%u8Y*}Zl`9`M~i9!HoZ7)s+Z)!&pMJ=iUY$hs zEpn`>QjTe^&jImyJRR(M;Bbu<^U5A&@l?)VzaC}|lLHsvz*GQVfQb{u+==6kGg4L`a$D`W!$wltAJgo1R6fDt=1o@?LifGU?QW!E*-$eCQ1V1#2t$~_iRQ!QeGzc zDL3x0fO5L*3P2d9Se+No3kWZL`WGeXp?Z0q^eKdi8ugYP^W;nYC0}S-8ouiV{lIX` zz*6awx>vg1b_8lv)ce{Z0%OSXJ+CAdxayaYJbPkJ^QT*I7O zXV3yoTqUMDn5TZPQ8`EA%oSpM^KP2A;Q;-JzQBo=Y2JKbeG2;kL54u?1f~p|?JRQv9~#1B()6Dk z#Is5FZ^=trG+n_m*uhcxI)*UJkZ%i^PuEqdk?|&O>MHyt40rqp(!?`&uzS8I&TdKY zRBhifI*QQDJtDscaoVoyK@aht>f+Nd8#az^{w2Tq7N3b>4iY#V{3ndM^afWs@_r$Y z^qX?K%K$r?f(LbLHwECf;?T-BiE8en`F!-0j`2LKff}XeCJm>`M7ax9A47r;9w@JE z4aJU!1b&*=SRqP0Kb6;4=?kIf$jp176GNs2=e+P!;3{7OdLqLxp~*IRP-l3^TsF64 zDg9Q8$F`AL`RNp@Z!QCjyhW4ifx0-xq`Vz=NC%%h*A-BaU@*o})&(3VH*t${b#(91 zAr^TJiL%v!4)+f+V*e+sUdagft2X&+Gxk9vqw+9nH=HnLP2rJ@`&ezFX8pl)Y!r}g zlZS71jE}R}Iq|=ELr1eh^zSqMK zlR6B1>=xUe$(K0VG821E(%P~@g1&KTdb!Gtl@XbdwwlmW*QPb?NMQa> zGm}Dg%F}iP-~|)_D_u{Mw&4uUc!2M{8Y$rE6aLn3>fpVW^6! zz0&)h>C*M{e(#K$n)h7Zdo7y>bB*iM+y@8HF!Ya3-Umq+qXI$UrB}Qcxz~V(u*gjo zJVc%RJ(i~Yw}czyq-xfd?p)2J23$4sUk9N5vz2Oh2d2im%+*VdWfiQ@Zsd8Xsn8#QWRktONe0`rvf1+T~O{ z-nde==IUV~+19n)o3Cu@YGcK?HXg8PPYz5DybT95Qcg2DFgb7%2dr?ERD~dnLD)dy zc#i^LqwxJbbG@?_km5fRkw-r1%j8ktTk5B8J?mOjTcoQ@q_F)OAqkP|L@n-vn77Cbr-@Ad|?2ME2#u6YG&cpe+^$z4kkcl4#>=(GQd+av*%v}yNK;9t zr9~QchwH*~)r0!NG;hWMD}TMfQ9H)pjFJzYF$e)-k6jRpFKjr zG%s>sA)oBXq>L+)#WueVyj;R3gMHzSSD)aT&%dQ~+-sDX^0C;I>|&EfvR6(eTeK@# zyvyUjj_`Z)xlsfKabX6!ps&K4+*mTL!YGr$E56B*4%sC*LEUZ+E7z9g|6B8iktvSX z)vFsV8vmud*+{xfGv;R5xMXEBeNmPX_M^DPZY$jx>e;YLtubGr8V>b=#9_lrPS*do z_|FN{uR0;mH&&#ScN?cpKC8Wp|85r@H|g|a11aqvBYdWZ`4NT$q$|?K>zAD-^BsY^ z4MMw;cuq?k>0UCVCA%?C%GLgj&vX=tpktHm)}o>UT^?DS@@1aL+?;t);33K70~Sx& zq{AGdGcedn>&?2PVJ>OrF4Fff5w~H3gz7^ZeYYs0e^MXnFVJ-iU&!YelX3zpcUwCHPyxZ$;RF zd`CXBF7UO<<^H}aeU`cy>+=AryNhyvLjkG&K^vXdM8AC%p%C^#9FfAO!laz{RqCJG zW? zyUKD?2Pl0XLGdnf_fB*W%ul4(WcDV${nrirLeh%zDNr!Y^hGm!@0kiRF@$_mpa z;mRA~--^Ogh-R`jP8ys-564jt2y)7c3D0*4ds=MRXtJu!(U+Z!Cf`fg#fJ?FPEO`h z=4Bbhx2+a1b`-BnjJ%ja*^~yp6UJ{$Pg;fq$Kfu&f_Bp2UmEHllYQb|8d`uy;YdBm zY&kJOT@cO$4@LDM1-DbJJg8rOQ#x2-&YmE6uB(RGS-t%m1^i2uw+GJ*emw`&A2+{# zRXwOL%qxdq&(GIl;N;5k3i{XLoaxWw0PiZ^P1D=~2P{0?0Uhsvgi!`Nr#L?T*B0^n z=D9UI$%ps-GxHQ^F%B6KF#tK-Ke-b|T4d)@js)h0W`lAJ8PQ}H?O6Wl9cmd+o+0X0 zpBPpWpEYaZm}4@X#T*je=c%;UTVl>$u|JgpYbE9ew3X616mru0HF0D%!V1N%XW0 zei^4va_Rv(;?I}@AZ#7WV;DV16L`r|zF9~o<*5^Ylaq~(zbI4T^&AA^(uTpCwD19% ziY}s#Hl$HDhm!7%>+Nuno5zGomBf@4^NR}Ljmx;@=|Jv7Q-PHShZs{;!@A?&pid^Y8!hpTnsC zj!Qa=HaTz#2Q+c;i;4*ZLPL~{B}ANpYQnyP1D>pMs!o$LgoP3m9zyAxVl(Mx66*;} z1zPZwTfsXM@}!BK(Yf1l@E-w;a7|v@6~PUkCySL{IV%JGm}Gk*%>)rRJrK$YZ<`1x zJVF;Rn2NU>L7H#iM2My@@O=*!3L?mb7AEFnS|d2{2u*<4EnDbqoRg`Lr5qavVN4JV|^4_Ta*U{FlE4iOaGlWFb&$wyuwL5VU$0-kax#`CUgOh z!Cnnhc<`AH<>~Yar%!y=6~n5Fex*(nEX0A6Hpk9&%A368eA%1?{4%=t43W;mwcEPN zvwicrt}RTRUbOrlp>Bqbd@Ap#kDS1^@|P16kHRy`y+-TEk1;;sV^|orjEg_<`|J@{ z(h!DwjN6xf46pRMg4^%xzi(9+p)>SDQ^H32;$D_*nJ)hDA?Y5?rX0KvSai`l+b@?x ze0jw3LGxHoDPQVvUzx@<`(UmS&bwOjR6BNdjSMEvRSu+GjFA`YA8BsMCVsNx9Th(| zvNUoYGUIq^68X*VF2$o1imV}LAI^d+_=r2!h&G>YL;;+Gv^W}e)4h|ltJVg z;&7AaNaILDGBB(>;%A>Dk%l&yw7{f28ixXgIfNA{y3*5ar*Cu=4CxG4?&Nuj4Gs+X zG6zEmjS0Q917K1%=2}ry3%>EjDO#JZ`L5FtOj=N&%ynFa5$Adq4%x1I!pxhp$(w#c zI^2|%G|*t)DGpHPq9}ivKN1eDL@3XeR&M5>DT}<_08YBPG0G>HlNa+k@+^EkFWQ7o z%KJ*+FMRq(nKKt;JW0Fg8C3c{MoU00%; zcROyi18B znx(y#7ML-8VB9wq2VRtpz_Er!=hBO}okB$(mT{yWwp&o=M~|=Yk79+7XO(v)@iIvL zgLQVs&~d$;bwyv{y@WrDj+tn3U~*uM16mE3W^&+8IDlZj^Y*!1owQ>w{}CuAuw(FJ1GAcN8tDIUgw&DowzG>34<7Xl_p?5d;t(0<8J z$eI5+54UM0aDc)v#1Ujq`QyeWGk#p%;uEHF1FbMmW=sr#2-6@UzPv)b<+`wxrNz{< z;1UK+@W>NgxlOww0b}w3f$Rb%e560=WpC)C%Bz0fR*wi zspg>|2us-$AG!$lc+xRFCz*T$518o~i7BMO1fSc5PFFKNO7ZKqPl44ZHthP=PIo+jb*KAH!tDC*mN<$!0B&wXhNKzW6bGbdPD@(0wXNyu&bzT{fp8sAP9-jb$3$hloBF?huZ1 z;t*PDF7Z|*oJ01*r`gAB)d$*E-&mmc`8nei@1fcdX_?k1Y=`#{&cSP?25ATcmTYCU z&yq-%P?Y6cD}gJ{vaq61dW}kBMVn;My<`OAQ)}SmJ&C-Cv0HxS(LWi|ViZSw!6fXO zHs#pD5WPoqqsJ#cZE{T6pmAv&widAjlwb9s(#xS=^4qcH(Z6AE5*N9@yNRecFhw2* zZ6Al_9?b}&@J?;PcZCdjrOp)RcBag{Q6O|knd4y|;sopYliWTrYvpQXtUQSWU5s_w z@smEU3jtWp{h>Pf{h!L0Ylx+6MD`u&A#Kukq$I9zU>zTzp*$gkIUmY13}6Y5AKUXn z!7%kvxw|r$c_Y_3mtMzhdq}_4F;>?HeC0>^%l2FpLKzCk1D<`SlgNOB@8EKC6nzyK z6woMbl|QU+b2dXiJ&Z^=$kdyU!Sxh9x|l{&ZyRs|1f25Sa2l5R-;iztvEXK%%4;Ji zQN#>32K#eZMSQ}eTkQrhg!T<<70y_*q1oeC^YU0izk01%qIk)F zD8FS|VAsMD&XvTtxw+AbM^2%t;QUl4Ugu@JJA{Mu(_D@NtleqD3&uBUQZIbNnRQ36 z0W-D%qxZ}-lLM0j7v;b_0en$*PGqm*fQ7e`KwgFDKw?Yj6`z+43ddxNAYf%!tY;|16q}xO?YBh;F7rFKbnmS{^^vW2+Ye*ZJ<#?MX|VEF-zOd-UnhNV z%I}~e$=L+Po_Y|kvbbE9(-lA%Wx!rbQ%PTK@p%o+*SGihJ_#Q^XQ8CxKlPwT_S#rU z1(V>BdDX!ByD?$5dF(N%TR<{b3g4lFeEriyuvR7lC*ILG+*aIP6b}yS6J@47vPjIo ze#R5nl<^5fNx1Ts4UlSgKmJtxDA7Vm33x|cblOUrF#s^40XkEbgr8zVBmIcwIg@TbT*d4>3_RnX2@XF`coZpN-0VSEr@i6vTTMd zyVLNBrEmCpDrKk-`LgqQ`|}U)uI`g_U@6aXGC&5QhXsXX2p#?jziFsAPu?0y9k#r- zJWq0hG4x}(DL$vKwR*&LfPGi@$Kt|$m6nYWEZVCvZ-1iP>b>Z`==@03pp4gI`v7w@5Z=p$AFBL~+ix9GJ( z1o4%+ifD?PQ!Lm#BpWy76ViS2cSRjAF-eco!Y3I)%ufJ@E8y_OZKUv_;0hjW!zd&$ zW8CNlz2^hUlYIQs+(6#lyeW3_s+?RvC6L!nv1JoR00ORS8f{wH>LhU6RHPH9sh4Z! zc`WYKQPb@x)e|$GT*o4N0nYQjJuuMGGi;9TbrRL}Z>diOBr^05XdUH>Rv=vfx09+> zQ}?(%Z`6jn-@fY5{67W424U3=G-60I(nK1C1+Cj+@(wMDG=h3K-54;qiGwik(2l7C z^{EZZ3V$nL$j@MD*Rqq;ZJl}ZJ_BBv%@-8j<$)*851uAWI6y-g_@Ruh{Gv?tX*ZfL zNknt+d*j?0H)F!zvKd?c!iMiTnXa^JMquW>uYuO>P@lDt<##FQr8Mckw9(=_NxB(% z5AB?MW`l|QdMnaX09QPYi*fBa_aP# zui`C?RtbJ$zoAJ#OdG&YTM=p8pte<8Y$whew;Pz;u7fwE`x06E&`;yP6~QQkSqmc^ z{G8}s*-UbYtS62G9AM1*roj@U=IHT^y7^4qP$#N0wNqae%{V*FNgS98;FH)j zfgh0rd8vDnfG~rw#mhyzBfCKRhy{C4nm1oGF<~(hA+v<9E!RrTm-zDy(3%ScHtH^i$_grAF(wz3KSIaOgO(u=w%YmcLJ#&O-9>i zu7rA~RJm;P4arc-hk8@>3P z0CY(__NGhoKz{wh4=Z-qD9NTsij-o7RusaA*7li;{-FFyKtAA&ExvRmnfmSayO5)h zaXxyC{Boeu!ry(y=_-<}kl|54!~ccxXH&oxygipwV2C2tpsLq9>ocB zltYZYT(<8DQ`$`G?@-|aiz293xLj!yz3$swaq}DVdd*wDYhxsJ@n5iQ>Lajy8`{JrUgawYG= zFkY-C?W^83R`$Q) z=|+Rl3`{5_Y4 z=JvhDGw4J?&zQ(&pU>Pvp)mRnb%$bjn#qC5ffqRt5#>d|2{1YEFdX2;z;(hqLQK6J z=F9tSs*&q&P%$!xyxJz4b=f_2sQmTzp~R&swAMQ*2XKT?>5;<9C(WY)@Y5`vEb>|Ksb*b!#G zbDb@c?KE%70j?L;;?|Z;5kJ&Nrnw6aY(D=(b)v~03i)a7g9BU(sg+M(#eE+XO)B6( zl#KIza$oI%`ar(A2Lmn0irD&DIl)5j9{QSc68IvX)r3*bGoFg4h$t_)9vPVwoSbs= z3dEh1zlvdt_X_hBl)#(_rd-Iy=8tS-b>GY)KEWeS31OdVND`$*XQaYl2|RK>vW2@V zUwR&==Vw~=eNl?D{i(;V!m+Gh>Mivcw?HxN)NgAdCb!}}yyPTg1HH}@<;nJ&hBLkU zKb4~KIyp_O`#6xcQEj4wp_EsL-uy$Sf%$Zku7$R7V{4~Zw^9lxdB&RFigAoM<0jmF zL=M{9XoT!ZNm~&E9`AQb64J&UQ2Oi=XYi9hePg5}eZ0~bU1$Ro_)?a&4HnJs?->*R zQym%w8YX=jKS5Zg2RsE+QD&hTr*S5E7>Qto*5d@QBy&>n+u=NPdY;V_%wv2tv^G$n z9L_bj1=sQ5@J~tEB;p9UWxDd;9>tNNNZRO>vd5={gVS^nAVaw*CuPRZqsodJH9_kD z06+jqL_t*d;s*TANEY81#m$BT=)#Qo6DFQ|3`^O8$=Hkg8U`Bb07U;LEgQet?1K{P z7K*H~?aSTziwL7m*=RspgEv+Ft?Qe3{q+BC4dqPTP)L237G>~;6ZJ4D%HVg)fIBak z`-iHc#<2F?V2y9TtN+k2sUJRD_tq!t@0^X3ypPQRPrp7k3ufux1qav(gm8+Jx37>V3ZAZhu6NT@)O5Wi2Ylpej$b#af_?Li z$W)29pE^O_LmoS#esgyVN956%F@Ho#%0M*os|8r_)Eo2~0%H(C*Q(G4O$^Gr_90?Lgz zd@_ai(GgX6RQbq9bIfQ`hOPqI1h)9?R!n#<5`m}Bb1qZ?oKKexc489E!< z6b`pNTxzdsU+u;#L%99*v4oE4F-8e8Rymo{0G>>^Eh~Q7tI}+kW&y%h%hUHQIsh8mNA($JW@u& z7^CAa)D5s;;T>x|iCeQNGdwCjwX#9m5Vn@?5@E{1N?>^D0tzYggipoGt#3n6I57NE zAeUPX!SuA3plON28@}5(M%}o6WH&`Hr%sm%F5nLjj9U+iPCMWxxY5K5T-pY1(%T+^ z->F-QMk^b|3xAhZS9p7E)9)g6^lYYhr^UbbV)c{T5Q?&%14mz_3`QT!x{W_AsBvzZ z$$`m%&Vi`_?yQ)OhvI+*(>lG#0MC^WGQQqwVI$;NJ>V!$oG`Ht~>c)y+a#kHo z#qaH_U~i84u9+9KHObxn_&`U=V^u0&&7Br7>9@qJ;PgnZ`_oR;5|09=vrSbWCdM^PZl ziUJ;qBM^f>^500KBkKXI7T){fdz2WIA$gAQS+pO+L`7FlDo^B9lK>9jDF@~4vZcc0 z-uy%3H}pA9FrgLP&`bW|0bxrckd~3`CEOBM(k2ZyiItD9Qx-3sf6?gcSq;;I%|7_4 z8(F*oY~bfsd2N2t!Y@h#Os;lqzQ=o3xpxSsUQsZm-0%q=!*`$LR3hs1ivoZf`M-nc z3LX~TfBtuq1vXOBPg&p!Og;qar4aa1b$0plC(oP6ZBl9vzq>Y6Qz>2aAW zhxtyWf}ip)d|2s2^c_y%WB%5-$k+~g#+0_4CBETSxD>dK1e_n`1wV8|VN7N#Jmn-O zC$IgEp+4i6Q<-&N&BBU#)yr)xHwSl8nKjm(I01p|B*WGg7)UZ_Rk zzyf?=9C_jcxfPj}Jd-ad}n(`Hg%@ z{=}0%vTpc9J&kE1V-XCFlp7pz%lXWF)@>8K0CYf$zi;S2OGCc=4y9kFxpTjH4=<(g zu+qa!glL6P));t;zv>{tx3)P6jImsB>&$0evi>LX5!|Tu^z>2-Vgf<1Wv|W##Y8X{@JjC zA0s8BKRv`iEJZzv;Ae(DJ{r;3-(S${ae#-M84sWc79@ z&Js-y9OA${0epx%Gw$sE3vIue()|u!c9Qak&*6BBuzZc==#gX___L_p^;yF!(Cv$-J z4FW)4T|F7Y$4S5(0~2`(TVegQEDM~qXlhU%U3PQIqaXbQ?XR3Bku1$AFAVZ@@^`@c zqk#;7h~oOLD_42iKzC3o$dCcAGQ5}%s0v-DVr?;;$XXmWywj1XG9*uaT12)IA`8XD zVM=k_7mrz3=R~xO=?@$MOI`yzDj=YNxd?Dcm;6b;W|laYFh3-xp#=6R)1o;rFX0Z{ zquB716O4RDhK;8-vCDgB7BT@!U|$K%=CEn*iv#+k&32;`r#1K4@@?QnH#(bO`aZ9> z3{vUyXCpk2&|0q{KI4vqS|9N@aw*#qc1U*6Ii^cl=##9sP)7D|6V5nS<7OXYAtB?D zZ5}aNN3a4@AX5C2O^@Z;Zob*|TKCmIrAtg10 zaL5%Ig%h@=pzgNDavKw@yxM=uHn0ui_0KRQb}-ssGJr^ICxP{zrJSPAe5F3{`^V#g zhWxq0)>n1csnaiP8q<4@bx@R8=NkCBk6cv=Q7)$+l?j2A*JVZ-EZ#sPxY8a9^g~(0 z$y2Y5e%7f|ojkSNgM#rEhcBptz2;!#-c)LDkCKXKa|-wvh?>)?{t zOBq`*wDA|sF))P$P&!NSzleJROb%R+15*KfJ>E{t=W<|F`htVgSSYdP2i?!*=w;IB zW#|*7sviplsh3*_HkT>E{bOOWhlyZ*tZYHu{3>CSx{-jXzFBVN?|0SB>^JvNBRe$sJK0nW z-;$r^4mlv1V48IfjN=K5GFlw>Rf~kPP=l@Y)h!Frtg{k!X~P1paA)uFI2;1irEDUQH zck%8^a(cM%asn77@SA)NVjqK3-hJ_>m$aoQd_f;H1dmyb@nd-4Z)J-PZl2gsKfnD; zbyRYK+pGxNM_cIM7vJfB5uii9=m6Ex`M!wlaR98W`ldRPqW=Fxk5XQ$ zC?kWxdBM876p6u;cZn5e2^?(V8Q%;?qfuE<;!>m(i(ujlwr^BQ+gEfmm5%SbvO$Jx zt9j>u2OJpIbG~Ua1t+%k{btK^D2F)_41RAUYoI-UyrduKF*+V74N(GbB!AR<1@Kh^ zEhvH=sl-MiPmS;P>wQ9SyMCBB`3S?tBu(?RXX3`N*Sc9_;k)k;+uv1Mf1!-|y*7_! zdh&AlR9@CXStDhmKZ+~LNdIDel=qa|lNd^xa}9Zso(trbe8ulJCp-MdmbaaV#&N)e zuHfxuQ<}B7HB?DUT++M-ZY}M(VWQ2-dMWI!WJD3nAr5$ki4u}^Q^vkU-#Ap9hTsjK z8LLv3kg_j4@%Lg6Qz6&JAG*~=4EO2!uiAu3UGdZP>+Vm!HL>~@6~ndPV_7J7co80q z@z31aI6@!gH_hb08*^YPfZwC?%&I(EZ^c&$Sh$L5O z-yZ8!H@f2f)2+XsU0t?)cM=*@MC3{o4VE8W=-pyhnu^(PF&-e-vVtuBZh4@9ApOYS z{TS{ihT9E(ky3>B5m$BJ#W)8eFKDV>w%=7xDCwy`+5=_P5aKox@re4<8YavB{-*P? zy|{ueOy62j>A%p*|4(hKx}V9eY1`JAK+&S&&1f-+*pVvOzgpdTgSF@wWQo~QpVSqt@b%G7H&A%>}D-u;fv{`jQn1cLypXQJrmX>q z9yXXGkNfIjtutUo94+MKCwaj?%0v2;2RCtSlH;}#_)EE6_KK7BF$|2rgelF}pB26R zrh4Fq;hWB^bBnL8D^3UN>T|DiHwZt2c?g=$D|5h`k=R%fL*1~};B_MPt>0B|UR%`( zVcPpNlLPO718UXNd^is9BJx7&{()?N%zkbyUxoN%jL(9C1PA5agi8&u2pOS;9Z?9N ze4oU^hlD#`m^U*c#g%D-mJHb!PBP+_@D5leTKX%`6Rl@i9ZC=InC)Z;);oN7$uI@+J@Gi;d$NW-N&C zyFoF=X(3lv3b&I8btN6|A)7^-3O&mjQBlPBNB3EX&q)7wFU;Hea+r z=&?-;yBPC~!9iwUmixk6s{QE_Kkbt^(68lY+;bOxsRCX=|H|YqV1LKaOU4a;UYvhx zaihIVAD9P2nT{=m7bt7YP#TM`CDXwV`{BzI$g!9&3kMCz)YQ{04YDU!{`y3d+6m&x zG4JA+s)F(W!_Tr>b8jTBHl@4#k7j=A`{uv#Jzz1Z-GBOMB{)oP>Xi8oQ}NNDP@*3B zc3xx`pCnWma~9eW3K`;o+h_K*E!xYzxDi+Ss@oPDk>y~$fV8yZ4JUdOrjw?h_#Qn< z64R?N(pY&VCkiu^7|9p4V0KW|zetC?%V5hM3@ ze3`BSzQaJjn=*%}@*!t%!f_mTvyjQV4ufnatAiL10YvUGc|9J2*^|`4$OYOsc2k4+ z#3`}gr5U*Ny9X9qDNzgof7OST5jQR9g)*ZLam_sow%`BjLP#G34gH3xg-$FjjbhY( z6p8})H@QnGw1jgPu{7Es8>xWUPj#)sd(L^QwKeH3s>%Y1HW+(y+W zXya~gW%s_Rc1u5E14Y^{w$icO(dOU{DOZ+m|IlU%P6O*Z&YQ2gB3d_9Y`Lw1KEV6Z zIFugxG33ul(du`g{KW2`agG_-*oGNB1js2-3hiT;NU5n!kNgqKN$E}~&c%dnAg7<+_ zRy~-TBwsmg3@ew@%VJz0Or{-FRRV;c;KT-|;0($`U@l7S{@*Ym;>~hQ`M}RaqZVcN z?bL1S*UF5%!0!Udg1BSy5$M$neAZ6(Pt=jHS(J+Us5)xxK>?8BI!hY? zNTw{i;j1RG+p0r&>Ndc)q7=7k$Uln+0F3yE!(TR*s|j50t8zF{R^<(fs~S!l@U34I zi$4a%;%hRc42O()Pym5-5aT=>w5ZtPcKK;~bo@wrr11PH` zGk6oleNs57f&-i?#boShzK`)_ELHKnaNJ9*m!XuNey0%+U-GK9SiyTw;WBl?<;0z0Tf4^Tf*TsjpLg+VvR$?M109`_GJ3uht4MwFosvB?CSl!0*oP(QHcfIo!u z?x{X{6wknOih;+bp~gHE+@%Z-FZ%5PRg7MqQ}Q_jwtc@;^ssh?vg*rMu|foYuk|D7 zhL@tNx2y0P-mxYFA7kJzziBSd0ThUTsID+l*t6E>Z##P&sLe}<*2`PU`MePad}xh> zYZ&T_{`I?*!RUjn-(a(aI?JpxvuHl7_Ugj}o>&g5WumnEM?`ycNP*mSR zs6gQGHP6Dsj!q^wR2O{;L9s07l1UGAL((q-#9k{$`lQl$B47l-wx3Z6ck^uC z0h}l~TKP*FNYu~QPI)8gPYcd%DI zyWU-2VutHq6i{FA27iUMx|5%9euoTTq|uir@@*%FcV5cNFjDQ%$A!Ny_m(2Oi<= zGOF>O!<17Ax)J=3|E)#8|DkTBx$Uj$>PAI-bvEuxFVwXf~y~I6!#8y`eb8?$cv-qlED}tNS{_#t9VhPmNQ2uVUfo9R5Pea7m zE|Ye->sz8)^qsN&EkU^kn)*Uf#b%h_*;I>SQQruT>F-kI3N8!;R6p{tN&m;FFVG!) ztuuc513!%mo{OfR6nO7Ph8xxaD&Av;k~=LMlsN@`O_MT_2b)Vgo>hjTqhE_Jdb>gx z+HYZ4d;O-3w6q0XS#AFRf~HDDQ)k?c0DE{)2^iciQ}fQ}4LP9oSbu6yS$ZvTsxvHFf$}6vp>K^`v5Qz#Nzg;Movf#{q;I zzGc8*hx~vrfza`%RzmJwq4>IzKUC`Wy$N;q2zk7?#*g0LTWM%Z{vkBumIq}LiYcD} zy*GkiL60TyD&uDfdYr5xjFZ?B-sw_)L@+;kQj@VICB(E1Y7Z3?WN6Vlq7BaDfMMs!s~DRTEL?pNn!OWhOLm5HbE4) zSp?J1Y=S>*0)PQo9HZ=)pg}lkH5(=yLfP>rALttSI?@UJNQ0`gpU}?Z+qU1@bIQ$^hN)Q%v>ZMDe?qKW!^*n>5r1b&-bn4Dk^GS^Nb5HOyE)l+iyu z6z=xZ{fZL}Ps;ym5OV;hmGn|7T0uW2xCc1(=25wx`>LB=-n^9Wg#g{^fO2t~#sS_x z<5-JdQRFeJ5u? zc!hAvmy>ENu#YkuF#Ht!E)BfU2~(dg{r$@``Jb?vFI zKK-fs`udMgn}7We(aj0&Z>l@BS=MP}bv%?Sc;g-mps+rt6(C*08^beq6iaN?>llDJpYB{QD5&gH<9(olk>)|%RPxK(c$4ux3ffLL^I+ip?KUS8DZYDfe6v}T1#s$btWFX>nR(izxT_5 z#W!R5wlCK`YqGHYFP&110jg&+!N0F5&mWQYEFY%n?r)_G7dfVBjNfXy$jf9+oGig%4l$i}Q z$dQDBpZ-djar4;67e!yh2)`G1qc?EABW41QG#+b!uX;#1$K;3F#|U?d+uuLp8>Q+` zfBt{_Q$mm0o=#%_2Fd((%(H+NOVJXAn~A-Qi!~P8IQ3uxUWmI1JrYH2EZQ3%T7>r%Aa&efy366oPJ-{mkhE4zOq>v-54{6OvER z8*+f_pBYo;DaF?@opF-)FIQ^n9RW)%qcXN<%;r7!>Y+;rsIyn&Iia|`6S(ft3->M|oAhW_ZKW)_f9UkKl)^sw_L!wPooedRpA@LR zaXNcoG z75M67jFGB4*OgBO-|2e%eQ|P9b0rQ;1@M&^`>xP3xzoU9Q{N=DWW@l7LUF!$?xwnZ zy))FXv)U&VwP=N~r@FcugVfF<692fN)wbH1!{za$L2;K5ey>sROfnGcanlD7uF0$1 zPqssec`^tDT%SaFxB8Zjz5%lRCdID=y-P2CJY{-)mlq}eR2euO!lXm>*LMT2Wl#O8 z{x`mtQ2-KmS{{ zXLM>qJ{j_=OT&6J9s1Ou{Jlp|USfUCeul;t5ClmXHeYtA6g&RM23kGWq~*1^cze z-#n6%Uf(G7wf6f?{U#r1WMQ9$$WzM)eyT|k>Viu2S6k7>`&sdfL#_}*KJ3Gv)X^gO=65L-HTU9VsprQJTcRTgN6z9?1**neukSXH zHUS#?QtJOmv{wi7iD30Bl!^K#=7xz7^I7WfR}t&E1#R;XB`wm5V1`s_cGJ!s0}m*B zc!90=mEU2!w;sVzZ_rF3=)0$eQx}k`LPf&&-RIGFR(O5`4lN9 zNm=92X~oSy^*+<}>!y$J8nYYpeBK2IhHHm?!W5 zn9nd;8LayBdLrY%y&llIA5Kn6F35q+zyHU7KFC}1f~B6QUgiKw8J`}l1#WiYA>bio z&6mr|{JSMY?Fh3{0f9||+m`yew|bILYh_O<9GD2$KM1_HWZT(!(Fe33mL1rhjKFUN zTVCdYkiTO5;@6H#3;GCh2;1sc@7ADLVlvC_brvU>(0Ep}r^K0XNLFfX7+%6y{CbQF zN}yn(gh1ss1akb!f;M*SLI`=T(Zp$-FH$BF$G2Dbxw4-uvg_v9vh@UV&}^i9v;rFi z@Ug~uEr7=|D1P+rdX%pCY^(U2qAjpq);rP-f&8nkdx|TAH1|}U7fl4tad^>blJ|QKWNXg+0{)uVxfMm9htr-+I+JD8*kVs zk@5JfjL%QRX&gF$H@=*YW~RIm2R2{-P5ngQf8!g?)7(7={OwB(@Ka%bW>ukNVPhVO zm(gh0WaH0!h-o{eX_vU)SmG^3LWRz^)7RHtdvv!l!v09^KLwch6haJ zQ#krQ-}c-8`+(G6h~!bWD7ms@rWxP3DfhhhI5zY#zG468|I_8*J)n;j%(#Rs{X24< ze&PFD%B2_L;O4XB`Y&9gsqvT%xF5yPpEUk@?wk6g?1UrpGdADr_$;Np>kS3fC)L|l zS3_$pVCS9rntFr>yq~x+>refb@9CFti#JOPFu*YEp|Tdg#)bLvmnFCVCs=^D2MCrZ4LikcsA*{2nTAUxCpL^XFagq}2ha`5qH(gT zcI9u(GO1+2BWczqKMmXN6QrI%f?Pk^Bsik@Wn1na+DyTBs4&C{tQ*qfcN*vv4V-k{ zmp`zkA4fAeVPhYYI~gnImN>#ILjWXLz+43qv6$y(W9)gz_IG}idBil7nQ_&hkmCy zjOW+fAcg;)%wLl4_4B8#bVAW{G)}qx)JbmS6U=McA!%9uV*d9J-kVw{fFGU@8N1wN zuULLpvoRgRyP7o!rS+yKyIa(oJfWK(>rGV%ZXWU40P75pP5JrP&jxth4wonE8AO^_ zO3#f|e8q+GdH$>V7~2gva>7*UeGR)#bK7Vg*lWSfH=p;!0qRpSR5SxZ+!eczqJ^F4y)Oh4cBK9LQ4qgOWeV zel-UeX!NmiFFGJRAUt`%X@k+L@lOPo;{XB~r$@cROO@r_d3ve)rGL3>E`~`$s+A5_ zjEVLV)-9xtLOO!#tql3D8HC`_gwP!@1S<>{ZbeuLISS1NSb3nN=PD%GTZAxur{g0E z(7wh>b?>&2F$VszX@T9Sxz4OJy?Cif3-cCVTcn_8%3pT7GlBEBu}*A5Qy3Z)v^=is+lFS>MQzr#~2)`p=7v75ZjkSJrSelordwlDiO>mxOm7n=7Hsauo zP6T%_)4`Q~7AzjDg0)K=c;ox>1e#hljy@ z_?7NxE~cLkkL!Jv;JHA+jx9*sSN%@`C)POTZTzh~w z>bnzsZ->AZ(-4}Fd2^VPpi^TX4lS6|+d;z~qCWeCN!vbPc3pyv2WW9?k9H{ssk?X# znx8A#uypmio*~2}ZR|<$vk+-t;;G4g0*~m>(0%(>Li?|0^G96yf>27rL|N2o_(QCD zs!v)wH?A4^5R&W3!7TF$Xs7;~|I~itCxb2=nSa3eXYC`setb_ZY2gpVx;}=rQFZYd zu~70z_;R(WdU6g9eDa-JaI7a|!r!_QlE_zP>De?qvfn-#GwI&huw3US!bI+zEt;jb zxZ1amZrRppKv)nAUzjoeK$a7@GZ=*-_!AN)-r+;0v9xWGZN6RV-2yqLCn_9YQM~V| z4x570yk)IzG`Bg}BD3uD-Ta~YkT|}%kD^^T{6t@dV;xvp*3yW`efLQg%F4^Qo2rCN z90NrFJn;_PxcUe=I347#TL@FvB0e<3Cr zb5O8;>c{QTde zQ4nglNXFArM2D{Ui3}@}Y#T*qdWz9p0}OW>&-CxG_NNKwb(J$9{rIVbJi|{u4%^2?O8@r9r9p2nvI>mD1b=#Fi6W0(Cz z84E~WmiR>Bx|g}SFXj)-*Dpmg@kG6_ak16?$C|fAAD)Y*)W#UtB11mcZIONFEbU#g zTF6damz^6E0J;rflI?~?+BMIZpLw#@LrWx@#0PjZoy%%vGiQ?q=XFx$+2p?n4ur(| zELtY9tD_&7uBDG#zf@Uf}w(_GsKO%VDQYT|QRwD#Ul6hjn4+ zIL`f~%in`04;nJwyYTwn1*Z`lDU#+zy}w)ug?I25;X9So0U{Js+77jckbn&y0vC)G z`jmAp_9mnOjQhHY$~y8fpgldvF$Ox zqKuW`dJ^>ntpu@$$bA(V-4^iTohlNRzYndph4m8H`$|XpkGr1XTLfR(n%&Ycr38gX z*(>3<17KyUp2#)O*F^UKTphG;c&kfW9lJ^ArL-3GA`GU#to)@(PJLM2Xu_wj^!-}c zk8%;$5Hhd%n_klJCBbdQ+jxD~95g8hh+EX0qo>>fe2%@^ZIiWp5ptLU&?=&d0wJP5 z@J(i=F5okHZzsLHJ-vZ>g1i1LvMc~GF|H6MafsymN$|_W?*7uLAN)9otz}C!QPHg% z*JcU``ZVx4M7S~Vj}c5O>>G#X`N3$34P9# z|IqBb>GtOVdE(3;r!ggrsvb$(mwU50A!(vY3pepB$bE#iE0w_tZ)#t>u79eYovLyg z*7ziIDrX@HWi&~QJCZn_ALZp_ZhcSBMCe)2sx-By5QPiR-V7Oj0}HPmumKpGr1Z{X zVH3JgA@Yzwj_~k1pz}i=h*!Gi&MOf`oPu5kFVC)g^|crVAHS%LBBFG!RCP~xxJe*Y ze-aaclXdh}YIh41W(forCd@H8Z65>>B3LiC=p+0@I7vjxC0|MnzX2-5gyPOhg=RjU;O5ae%< zr~a7VFuS#Kyaa9&yp@kbA$Mh=yG6p>!Gy5x)2=_uoH{1pwqdmHR*RB*Qw+dl<-SCH zTlMF+dL|Crrf?>iKIY!O%5U<$_T}$}ErYlHw_bhK974lHZE+n8fL7*g4x=T8u<6dA ztvku{*Y@sTeG0yJPFU!@~qSk1oei~iXHAsk~rt%u%jGiKh~z$5#Z zuxS$eZmw4n&0Sw>&Xka`cdvca>QS*k68=59rQnuEEH9ia{?`xa^nShZH-cfsCw_^? z1!>pqkw~-7F~)H0qkJ`1;+e>-ccp!{uhX$$wn?_vU)n<(*rPG7qnp+hlG<*IWeA1Q z4hBx(gZN`R@YwPxQU#(O-S9yTC3B9D&U^G*YNxe<5hki1;U!xToSS8D>#z(l9r(+V zErdq{7Xq7?i0U?>C+Wopsc+1yLVdxdcJW3E&4nvq< zT*1J43={$IdK?W;(Q0ePN<`LtH5v|T^OP!6lQ@K$Pxn9=YjUqm5F@ZjCqIZyKzY7D6r@0 zJ`EA8_#JZlOt0+&T(pT6y|*A! zeJRIfkw?z`r2<-Jts+Ga4MM3FX+2Tr&M7jENDD?cs#jYuV?&FY?8N7>CAeKV`IX}K?^0l^ab`t&#q z1rt&koLc~mPdI28!1>(SO|m2F$*Y{~n2*XR62-g^PIOB%*Wsaet@4<%v7;|zK90WWE>8FYE^VY;! z1Ug&iXH}t{q{n`Zs!{zu|H}F(gK$&PXB@Klge3%he=+B-%v&PYV<0+Yeaekf09sn4 zXl&P?#1s!s;KqO^kReB7e5QouW1ePo-$&du-?9CN=E>iSroFp~IU2_U>mMBYK>&

  • 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
  • B>T&n*v1y!}z)Ks(0At*n%{SUvXv+2Stmqcy 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 Xh?=o>a%L+R00000NkvXXu0mjfs8;s< literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/logo2.png b/app_AssetManagement/src/assets/img/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..39f418533d223e14fcd7c3293acee34dacf837fc GIT binary patch literal 2524 zcmbVOdpuM9A0Hmdq8sU^%-lk|xy&qNvkesqu`Xz~lMUP1c7~yvL@1QX{JNkeKe~D9 zalfTpdMHU!p6YQ==&2~BlIl6D^!xqM>-oK2zwq4r`@C7CQ`(pn`!Ap1=`3R$Yfi@i>lXe_Ic{htLJ! z^4wy?fKQC4FFPiTZO=ikbwW8v$uI#Qkg!lvez*W4OC8Z)dCBlxxs5}kzKTe~9MRv5 zVtRO?TtG2^vc+0s*mwc~MI>SgHnv0}VKvGMPq4z_;hTsd*pO|BWGg$=_X`bc6LWTw zy=jc^y5N-~nk$hA$v9k8R1`MK8Via;a0GjMdnJdJ6$X~TK+ysTONtRdMl%dF0Ah=I zLJ1EPpp=ZPU@$`Bh=wiw<^o^n;qil50DTV>95S4gCBzZ1cpRUv^y{lMB=H9RW5!RV zA>U{rfb#|*Fhb0R^Rd%t1`NmUpA{(uVQa`6#XLAEtZ*90j^G0Vi95{^4WD2+JPz5G zO0uIei1v0wDuGTS5J(h)H3QFJ5U2zSolYdqaQqBQqmyi{=ytHE9gL)tDAqQ37aEmL z!P}CoDR}w})?ENeSOPXMqn8Kk{f@=|BbMwU23QhM>4l6kqA18vn2j`kQrgjt9txHkY-ZnL|q{c^%Gm z*49SL8f`FoG$h?y{n+6+c^3L^vSNXo%#$JtWi@FN2)KpcMTw&ptkkT0J(}uz9=`a9j zVltWGQ)M+Ztx~BpAp`&xz3i^;x>8kDb-t{O__(7(oc6GPN7J=uZ(|q=uNqa?p~%Qc ztD0YrU&%;KOG}ePMU_WJMA$mXK2O_)g@vir1!A)-EiEj3ot&I-6VSPH=L|~A$^x&K zuh^S;VE6WI+t~9}F7);Fp<-iW*ApIBR8$nEq@)a;IdjIkT+lrwKeOSlsIi_)5(t8Z zUKlUbES7!w+%?u)Cj$yHhG-3KzqQ6pX+M4#ekaFKuCA_LsZb~iO15H*GS@9F-TKKD zf{G86FEudeI`4a)e0)Qh&&7cZTRT%Tv*Fhh6VPHkJyU*o_;V_iimtD(?=jplot&PY z4u*zWG!0tJtvQ^PwHSK$vU|4I&8vBNd3-Lna7dB*Eph}*^$rF;2%-}DRIqQPi$H(Ph(5d6cH|@KFW6|UwH1Jo+=2pbnVrB!k*L(OWo4ta(U_)0;8#=rKR_%v#ZOF1z}boV_OCW z2kXY)ypasQ1L1_kg%+;R*AKke+}zxoZh<;_@_GlOum3_~V&d9{3=gsRby#wOCwHIC z&FN2{Tn-NqNFue6Lrsm1`a^YH_wScJ=inT$6V2mJ`0Lisi{&SfJK1ae12=DeYdhD$L)|s0H*|iYbE1el9(^h| z5!Vo-vqcgaIZ4_x{l2;$mE#yYnd4JXZuOG~@u#;U9KwQ?w`y~D#A zvt|`2MtM^GynUjHi3zRu86M6p2=i(6`Y&dp&{4StEXsEM5YHSlv ztuZ&z_zsgHH ztnvxYcY?bixyXR&`%1*s$U3{bU}LV+yzcJ8LjwZ?3#*=w+Ynyso8O8QiA2tIFPmD> z{(gQp9?XfeHS4rdUq0BPspUB6*(VxlSL~x!_xH2jRxP_6TtnAp4nKXWXFw8OOUtbj z4Kmb_4oBk|AHg_nBocX+K0Es9$jAsj;Ss^aB)_7zwpOE#>@%yAe>koD+NdbT-y$Mbr3NMNx_Wq#f zNv)9eCC45>Px#PO7Z+J7MjkOH+zs-SMlWbB?zrIptKMlawtuZg(DuO-hRs2$BV)RY z2J}h!4JuQj5Awfmml)Tpe$3Cw$x(Kv24~pxfamW);@M1@OlEK`<3KxVWs%nduVc@y oUUh1+O59R&+TLdV?Os(aL|d>!)uiKXC*}W^JKd93MBNepH&H7k82|tP literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/logout_bg.png b/app_AssetManagement/src/assets/img/logout_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..1fe4477db67f7fe4e07386a71b8ce46b88983758 GIT binary patch literal 122032 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 D+ILdt literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/pdf.png b/app_AssetManagement/src/assets/img/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..e8def599ec46f1ce9c1990203c59cba7cac82468 GIT binary patch literal 2621 zcmV-D3c~e?P)Px;_en%SRCodHTzhOBM;V{lJD=kuwn+p@h}*nKKxs)^+TyeCEY}I4Q9x;{&{!n4 zr2=i*3W-VtDjt6{s2~;53MxtqB&Dt5N9q=d2(Y=3sD_>|aoQpRrcEP~G>KEd!LA?p zaeKQn{ATagx4XBF_k8EGZ{?BpX6Bo39^Y@j`R2Jt$sBhr)z#OlvKk59CN>t=g%UE#IrdvovJf-~LSw{VpQC_o{U1eEdEb;dl5(phQqtW>HC-dt1jVKS~% zGH8p?m@}vU{%L4Ukx1tgKRWm9`Z)uNb52{Ts%~J=7NDSYBXuq1@+Nd6PqIC8SY48h zoHR5opxU-?FB}*gyp^fY77`zgq9nG0Fhf20jf+8$c+e40&Hm3UXHqo4S={LM^$p$z zfC^Jeb1@+WD87Hc^m5y=O{&B+gDdQd%174`)x{_{5Y5}Vb!%yCWTZkfx&%hI{iq+> zQf%r*4hnKR3q4d`DRf237eOf{?-5R~=A^xp%c!fv=PCPv=z4hrk^l!I=^Fgv$$^W{ zdV^7RWo3$u%0cxRRRN89n-JQQQ6Ww=b z|97Fr#d+23G7&n{yz@XgL@@uloZrP71DPlmhF$ZleFtwtTL zsNRSX@)=0GjB>t4VeC1RFFWmTA(qu)nmHr6h7b)5pF^SO4d$42EZL&yRmd7i3|yx!7O5fH~` zJMnCa4vidX@&|s*DOm;dR)Y`6_Iv>TDc`E=UaEcNm6Q_#R|18lich|D=J| z11&Nex{v?~cR$FW4g^4ai%Qaci0{G7s~d@T>1jsaq*0VgPk`}^kwFVHz8r;bfU150 z4Ok**sNf=g9<%adxlqg~zm*bR1vTGbO^3bMM-ywWlr&K;;VT&9PuQh7p}kg9`Td1b4Z*IHnoQy#@&pkz&mkRTIiKttqq4S znYoj(CVw@+jin8gIK9Sn;42zPoUBEO3_|~rOY~Pumy{g&Tzh*oS&J5W9P&KRVz66; z-3T;&puYW)(#1cw@M%#KP<9MP+V0NI_nZ7x4{@%(VWiuI>HhuVfc09|6AV$jk#xd|u96ODnb zIyXta0s!&}!q|aB6~X&;9&DVUyJp|P&iqn z=zls5Z%kYO(>B9&n$@SAJq((rRTAa@5dF~TaKZ2cD%0N?X(Ei5uocGD(FPmZaSzO| zusyE

    + + {this.titleBarCloseMode !== 0 ? this.clickCollapse()}> : null} + + {this.caption} +

    + + {Object.is(this.layoutType, 'FLEX') ? this.$slots.default : {this.$slots.default}} +
    + this.model.changeShowMore()} size="small"> + {this.model?.showMore ? this.$t('form.group.hidden_more') : this.$t('form.group.show_more')} + +
    + ; + } + + /** + * 绘制内容 + * + * @returns {*} + * @memberof AppFormGroup + */ + public render(): any { + let content: any; + if (this.uiStyle === 'STYLE4') { + content = this.renderStyle4(); + } else if (this.uiStyle === 'STYLE2') { + content = this.renderStyle2(); + } else { + content = this.renderContent(); + } + return
    {content}
    ; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group2/app-form-group2.less b/app_AssetManagement/src/components/app-form-group2/app-form-group2.less new file mode 100644 index 0000000..e69de29 diff --git a/app_AssetManagement/src/components/app-form-group2/app-form-group2.vue b/app_AssetManagement/src/components/app-form-group2/app-form-group2.vue new file mode 100644 index 0000000..127b6d8 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group2/app-form-group2.vue @@ -0,0 +1,67 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group4/app-form-group4.less b/app_AssetManagement/src/components/app-form-group4/app-form-group4.less new file mode 100644 index 0000000..3a1c366 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group4/app-form-group4.less @@ -0,0 +1,17 @@ +.app-form-group.app-info-group-mode.style4 { + height: 100%; + + .form-group-container-style4 { + height: 100%; + + .form-group-content { + height: calc(100% - 24px); + overflow: hidden; + } + + .form-group-button.show-more { + height: 24px; + padding-left: 16px; + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group4/app-form-group4.tsx b/app_AssetManagement/src/components/app-form-group4/app-form-group4.tsx new file mode 100644 index 0000000..d28cee5 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group4/app-form-group4.tsx @@ -0,0 +1,118 @@ +import { Vue, Component, Prop, } from 'vue-property-decorator'; +import './app-form-group4.less'; + +/** + * 表单分组模式4 + * + * @export + * @class AppFormGroup4 + * @extends {Vue} + */ +@Component({}) +export default class AppFormGroup4 extends Vue { + + /** + * 标题 + * + * @type {string} + * @memberof AppFormGroup4 + */ + @Prop() public caption?: string; + + /** + * 内置界面样式 + * + * @type {string} + * @memberof AppFormGroup4 + */ + @Prop() public uiStyle?: string; + + /** + * 布局模式 + * + * @type {string} + * @memberof AppFormGroup4 + */ + @Prop() public layoutType?: string; + + /** + * 是否显示标题 + * + * @type {boolean} + * @memberof AppFormGroup4 + */ + @Prop({ default: true }) public isShowCaption!: boolean; + + /** + * 信息面板模式 + * + * @type {boolean} + * @memberof AppFormGroup4 + */ + @Prop({ default: false }) public isInfoGroupMode!: boolean; + + /** + * 界面行为组 + * + * @type {*} + * @memberof AppFormGroup4 + */ + @Prop() public uiActionGroup?: any; + + /** + * 标题栏关闭模式 + * 0: 不支持关闭 + * 1: 默认打开 + * 2: 默认关闭 + * + * @type {(number | 0 | 1 | 2)} + * @memberof AppFormGroup4 + */ + @Prop({ default: 0 }) public titleBarCloseMode!: number | 0 | 1 | 2; + + /** + * 是否为第一次展开 + * + * @protected + * @type {boolean} + * @memberof AppFormGroup4 + */ + protected isFirstShow: boolean = true; + + /** + * 是否显示更多信息 + * + * @protected + * @type {boolean} + * @memberof AppFormGroup4 + */ + protected isShowMore: boolean = false; + + /** + * 改变显示状态 + * + * @protected + * @memberof AppFormGroup4 + */ + protected changeShow(): void { + this.isFirstShow = false; + this.isShowMore = !this.isShowMore; + } + + /** + * 绘制内容 + * + * @returns {*} + * @memberof AppFormGroup4 + */ + public render(): any { + return
    + {!this.isFirstShow ?
    + {this.$slots.default} +
    : null} +
    + this.changeShow()}>{this.isShowMore ? '隐藏' : '显示'}更多信息 +
    +
    ; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-item/app-form-item.less b/app_AssetManagement/src/components/app-form-item/app-form-item.less new file mode 100644 index 0000000..faaf938 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-item/app-form-item.less @@ -0,0 +1,104 @@ +.app-form-item { + height: calc(100% - 6px); + + .app-form-item-label { + height: 32px; + line-height: 32px; + text-decoration: none; + display: block; + overflow: hidden; + white-space: nowrap; + + .required { + vertical-align: -2px; + color: var(--app-color-danger); + } + } + + .ivu-form-item { + height: 100%; + margin-bottom: 0px; + } + + .ivu-form-item-content { + height: 100%; + min-height: 36px; + + >.editor-wrapper { + position: relative; + height: 100%; + display: flex; + + .editor-content { + flex-grow: 1; + } + + .editor-error-tip { + flex-shrink: 0; + width: 20px; + font-size: 20px; + color: var(--app-color-danger); + + .ivu-tooltip-popper[x-placement^=left] .ivu-tooltip-arrow { + border-left-color: var(--view-background-color-bright); + } + + .ivu-tooltip-inner { + background-color: var(--view-background-color-bright); + } + + .editor-error-tip-content { + color: var(--app-color-danger); + font-weight: 500; + } + } + } + + .ivu-form-item-error-tip { + display: none; + } + } +} + +.app-form-item.label-top, .app-form-item.label-bottom { + + .editor-wrapper { + height: calc(100% - 32px); + } +} + +.app-form-item.label-left, .app-form-item.label-right { + + .app-form-item-label, .editor-wrapper { + height: 100%; + } +} + +.app-form-item.label-left { + + .app-form-item-label { + float: left; + text-align: right; + padding-right: 10px; + } +} + +.app-form-item.label-right { + + .app-form-item-label { + float: right; + text-align: left; + padding-left: 10px; + } +} + +.app-form-item.label-none { + + .app-form-item-label { + display: none !important; + } + + .editor-wrapper { + height: 100%; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-item/app-form-item.vue b/app_AssetManagement/src/components/app-form-item/app-form-item.vue new file mode 100644 index 0000000..73d6fd8 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-item/app-form-item.vue @@ -0,0 +1,305 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-item2/app-form-item2.less b/app_AssetManagement/src/components/app-form-item2/app-form-item2.less new file mode 100644 index 0000000..8d11714 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-item2/app-form-item2.less @@ -0,0 +1,29 @@ +.app-form-item2 { + // margin-bottom: 16px; + >.ivu-form-item-label { + text-decoration: none; + display: block; + overflow: hidden; + white-space: nowrap; + } + >.ivu-form-item-content { + min-height: 36px; + display: flex; + .app-editor-contant { + flex-grow: 1; + } + .app-error-tip { + width: 20px; + } + } + .ivu-form-item-error-tip { + display: none; + } +} +.app-form-item-label-top { + >.ivu-form-item-label { + float: none; + display: inline-block; + padding: 0 0 10px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-item2/app-form-item2.vue b/app_AssetManagement/src/components/app-form-item2/app-form-item2.vue new file mode 100644 index 0000000..ad0d019 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-item2/app-form-item2.vue @@ -0,0 +1,216 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form/app-form.less b/app_AssetManagement/src/components/app-form/app-form.less new file mode 100644 index 0000000..8aff67b --- /dev/null +++ b/app_AssetManagement/src/components/app-form/app-form.less @@ -0,0 +1,42 @@ +.form-detail-show { + display: block; +} +.form-detail-hidden { + display: none; +} +.app-form { + height: 100%; + > .ivu-row { + height: 100%; + > .ivu-tabs { + height: 100%; + > .ivu-tabs-content { + height: calc(100% - 50px); + overflow: auto; + > .ivu-tabs-tabpane { + height: 100%; + overflow: initial; + } + } + } + > .el-tabs { + height: 100%; + > .el-tabs__content { + height: calc(100% - 62px); + > .el-tab-pane { + height: 100%; + overflow: auto; + } + } + .el-tabs__header { + .el-tabs__nav-wrap::after { + background-color: var(--app-border-content); + height: 1px; + } + .el-tabs__item { + height: 36px; + } + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form/app-form.vue b/app_AssetManagement/src/components/app-form/app-form.vue new file mode 100644 index 0000000..7f64673 --- /dev/null +++ b/app_AssetManagement/src/components/app-form/app-form.vue @@ -0,0 +1,33 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-format-data/app-format-data.less b/app_AssetManagement/src/components/app-format-data/app-format-data.less new file mode 100644 index 0000000..7d3ab3c --- /dev/null +++ b/app_AssetManagement/src/components/app-format-data/app-format-data.less @@ -0,0 +1,3 @@ +.app-format-data{ + display: inline-block; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-format-data/app-format-data.vue b/app_AssetManagement/src/components/app-format-data/app-format-data.vue new file mode 100644 index 0000000..355df14 --- /dev/null +++ b/app_AssetManagement/src/components/app-format-data/app-format-data.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-group-picker/app-group-picker.vue b/app_AssetManagement/src/components/app-group-picker/app-group-picker.vue new file mode 100644 index 0000000..01957f5 --- /dev/null +++ b/app_AssetManagement/src/components/app-group-picker/app-group-picker.vue @@ -0,0 +1,303 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-group-select/app-group-select.vue b/app_AssetManagement/src/components/app-group-select/app-group-select.vue new file mode 100644 index 0000000..b61647d --- /dev/null +++ b/app_AssetManagement/src/components/app-group-select/app-group-select.vue @@ -0,0 +1,309 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-header-menus/app-header-menus.less b/app_AssetManagement/src/components/app-header-menus/app-header-menus.less new file mode 100644 index 0000000..d649338 --- /dev/null +++ b/app_AssetManagement/src/components/app-header-menus/app-header-menus.less @@ -0,0 +1,73 @@ +.app-header-menus { + display: flex; + align-items: center; + height: 100%; + line-height: 20px; + >.app-header-menu-item{ + height: 24px; + display: flex; + align-items: center; + margin-right: 16px; + color: #8893a7; + border: 1px solid rgba(0, 0, 0, 0); + cursor: pointer; + } + + >.app-header-menu-item.icon { + + >.app-header-menu-item-icon { + font-size: 20px; + } + + >.app-header-menu-item-img { + height: 20px; + width: 20px; + + >img { + height: 100%; + width: 100%; + } + } + } + + >.app-header-menu-item.icon:hover{ + color: #68758e; + text-decoration: none; + } + + >.app-header-menu-item.text { + border-radius: 4px; + border: 1px solid #8893a7; + text-align: center; + font-size: 12px; + padding: 2px 4px; + + >.app-header-menu-item-icon { + width: 20px; + height: 20px; + overflow: hidden; + font-size: 16px; + margin-right: 3px; + margin-top: -3px; + } + + >.app-header-menu-item-img { + height: 16px; + width: 16px; + margin-right: 3px; + + >img { + height: 100%; + width: 100%; + } + } + } + + >.app-header-menu-item.text:hover { + color: #107fff; + border: 1px solid #107fff; + } +} +.app-header-menus:hover { + background: none !important; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-header-menus/app-header-menus.vue b/app_AssetManagement/src/components/app-header-menus/app-header-menus.vue new file mode 100644 index 0000000..6ceb62f --- /dev/null +++ b/app_AssetManagement/src/components/app-header-menus/app-header-menus.vue @@ -0,0 +1,70 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-image-preview/app-image-preview.less b/app_AssetManagement/src/components/app-image-preview/app-image-preview.less new file mode 100644 index 0000000..0d6316e --- /dev/null +++ b/app_AssetManagement/src/components/app-image-preview/app-image-preview.less @@ -0,0 +1,94 @@ +/*** BEGIN:图片上传 ***/ +.app-picture-preview { + .preview-file-list-item{ + margin: 0 8px 8px 0; + display: inline-block; + position: relative; + } + .preview-file-list-img{ + display: inline-block; + position: relative; + width: 148px; + height: 148px; + .el-image{ + width: 100%; + height: 100%; + .image-slot{ + width: 100%; + height: 100%; + } + } + } + .preview-file-list-actions{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + font-size: 20px; + text-align: center; + color: #fff; + opacity: 0; + transition: opacity .3s; + .action-download{ + margin-left: 15px; + } + } + .preview-file-list-actions:hover{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + font-size: 20px; + text-align: center; + color: #fff; + opacity: 1; + background-color: rgba(0,0,0,.5); + } + .preview-file-list-actions::after{ + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; + } + >div{ + display: inline; + } +} + +.app-image-preview-model { + width: 100%; + height: 100%; + text-align: center; + .ivu-modal{ + top: 50%; + transform: translateY(-50%); + display: inline-block; + .ivu-modal-content{ + display: inline-block; + .ivu-modal-close{ + display: none; + } + .ivu-modal-body{ + display: inline-block; + line-height: 0; + .el-image { + width: auto; + height: auto; + line-height: 0; + .image-slot { + width: auto; + height: auto; + line-height: 0; + img{ + max-width: 1200px; + max-height: 1600px; + } + } + } + } + } + } +} +/*** END:图片上传 ***/ \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-image-preview/app-image-preview.vue b/app_AssetManagement/src/components/app-image-preview/app-image-preview.vue new file mode 100644 index 0000000..29e444e --- /dev/null +++ b/app_AssetManagement/src/components/app-image-preview/app-image-preview.vue @@ -0,0 +1,204 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-image-upload/app-image-upload.less b/app_AssetManagement/src/components/app-image-upload/app-image-upload.less new file mode 100644 index 0000000..7765624 --- /dev/null +++ b/app_AssetManagement/src/components/app-image-upload/app-image-upload.less @@ -0,0 +1,41 @@ +/*** BEGIN:图片上传 ***/ +.app-picture-upload { + >div{ + display: inline; + } + .el-upload-disabled { + .el-upload { + cursor: not-allowed; + } + } + .el-image { + .image-slot { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + background: #f5f7fa; + color: #909399; + font-size: 30px; + } + } +} + +.app-image-upload-model { + .el-image { + width: 100%; + height: 100%; + .image-slot { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 300px; + background: #f5f7fa; + color: #909399; + font-size: 30px; + } + } +} +/*** END:图片上传 ***/ \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-image-upload/app-image-upload.vue b/app_AssetManagement/src/components/app-image-upload/app-image-upload.vue new file mode 100644 index 0000000..acaea6c --- /dev/null +++ b/app_AssetManagement/src/components/app-image-upload/app-image-upload.vue @@ -0,0 +1,479 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-keep-alive/app-keep-alive.vue b/app_AssetManagement/src/components/app-keep-alive/app-keep-alive.vue new file mode 100644 index 0000000..5ee9d0e --- /dev/null +++ b/app_AssetManagement/src/components/app-keep-alive/app-keep-alive.vue @@ -0,0 +1,160 @@ + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-lang/app-lang.less b/app_AssetManagement/src/components/app-lang/app-lang.less new file mode 100644 index 0000000..af8f918 --- /dev/null +++ b/app_AssetManagement/src/components/app-lang/app-lang.less @@ -0,0 +1,3 @@ +.ivu-dropdown{ + cursor: pointer; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-lang/app-lang.vue b/app_AssetManagement/src/components/app-lang/app-lang.vue new file mode 100644 index 0000000..ac3caa5 --- /dev/null +++ b/app_AssetManagement/src/components/app-lang/app-lang.vue @@ -0,0 +1,64 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-menu-item/app-menu-item.vue b/app_AssetManagement/src/components/app-menu-item/app-menu-item.vue new file mode 100644 index 0000000..456f5a2 --- /dev/null +++ b/app_AssetManagement/src/components/app-menu-item/app-menu-item.vue @@ -0,0 +1,143 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-mpicker/app-mpicker.less b/app_AssetManagement/src/components/app-mpicker/app-mpicker.less new file mode 100644 index 0000000..e69de29 diff --git a/app_AssetManagement/src/components/app-mpicker/app-mpicker.vue b/app_AssetManagement/src/components/app-mpicker/app-mpicker.vue new file mode 100644 index 0000000..98ac170 --- /dev/null +++ b/app_AssetManagement/src/components/app-mpicker/app-mpicker.vue @@ -0,0 +1,423 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-org-select/app-org-select.less b/app_AssetManagement/src/components/app-org-select/app-org-select.less new file mode 100644 index 0000000..0bda687 --- /dev/null +++ b/app_AssetManagement/src/components/app-org-select/app-org-select.less @@ -0,0 +1,10 @@ +.app-org-select { + width: 100%; + .el-input__inner{ + height: 32px !important; + line-height: 32px !important; + } + .el-input__icon{ + line-height: 32px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-org-select/app-org-select.vue b/app_AssetManagement/src/components/app-org-select/app-org-select.vue new file mode 100644 index 0000000..f239ea8 --- /dev/null +++ b/app_AssetManagement/src/components/app-org-select/app-org-select.vue @@ -0,0 +1,255 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-orgsector/app-orgsector.less b/app_AssetManagement/src/components/app-orgsector/app-orgsector.less new file mode 100644 index 0000000..0a80d48 --- /dev/null +++ b/app_AssetManagement/src/components/app-orgsector/app-orgsector.less @@ -0,0 +1,8 @@ +.app-org-sector { + .orgsector{ + font-size: 15px; + cursor: pointer; + margin-right: 10px; + padding: 0 5px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-orgsector/app-orgsector.vue b/app_AssetManagement/src/components/app-orgsector/app-orgsector.vue new file mode 100644 index 0000000..dd35e0c --- /dev/null +++ b/app_AssetManagement/src/components/app-orgsector/app-orgsector.vue @@ -0,0 +1,139 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.less b/app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.less new file mode 100644 index 0000000..615cfab --- /dev/null +++ b/app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.less @@ -0,0 +1,41 @@ +.app-picker-select-view { + .ivu-dropdown{ + .ivu-dropdown-rel{ + .tree-input{ + .ivu-input-suffix{ + width: auto; + text-align: right; + .icon-arrow{ + margin-right: 4px; + } + } + .el-icon-circle-close{ + display: none; + } + } + .tree-input:hover{ + .el-icon-circle-close{ + display: inline-block; + } + } + } + .ivu-select-dropdown{ + max-height: 200px; + overflow: scroll; + margin: 0; + padding: 0; + .ivu-dropdown-menu{ + .view-container{ + margin: 0; + padding: 0; + } + } + .tree-contant{ + overflow:inherit; + } + } + } +} +.select-no-dropdown.el-select-dropdown{ + display: none; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.vue b/app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.vue new file mode 100644 index 0000000..db9dbb9 --- /dev/null +++ b/app_AssetManagement/src/components/app-picker-select-view/app-picker-select-view.vue @@ -0,0 +1,565 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-picker/app-picker.less b/app_AssetManagement/src/components/app-picker/app-picker.less new file mode 100644 index 0000000..887fe8a --- /dev/null +++ b/app_AssetManagement/src/components/app-picker/app-picker.less @@ -0,0 +1,23 @@ +.app-picker { + width: 100%; + .el-select { + .el-input__suffix { + right: 20px; + } + } + .text-value { + .el-icon-circle-close { + display: none; + } + } + .text-value:hover { + .el-icon-circle-close { + display: inline-block; + } + } + .ivu-icon-ios-open-outline { + margin-top: -2px; + margin-left: 5px; + font-size: 15px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-picker/app-picker.vue b/app_AssetManagement/src/components/app-picker/app-picker.vue new file mode 100644 index 0000000..bb35c42 --- /dev/null +++ b/app_AssetManagement/src/components/app-picker/app-picker.vue @@ -0,0 +1,803 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-portal-design/app-portal-design.less b/app_AssetManagement/src/components/app-portal-design/app-portal-design.less new file mode 100644 index 0000000..dfa87ee --- /dev/null +++ b/app_AssetManagement/src/components/app-portal-design/app-portal-design.less @@ -0,0 +1,13 @@ +.app-portal-design{ + width:100%; + height: 100%; + .design-toolbar { + margin-top: -5px; + } + .ivu-card-body { + height: calc(100% - 51px); + .design-container { + height: 100%; + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-portal-design/app-portal-design.vue b/app_AssetManagement/src/components/app-portal-design/app-portal-design.vue new file mode 100644 index 0000000..efa1a60 --- /dev/null +++ b/app_AssetManagement/src/components/app-portal-design/app-portal-design.vue @@ -0,0 +1,179 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-quick-group/app-quick-group.less b/app_AssetManagement/src/components/app-quick-group/app-quick-group.less new file mode 100644 index 0000000..fffb1d8 --- /dev/null +++ b/app_AssetManagement/src/components/app-quick-group/app-quick-group.less @@ -0,0 +1,47 @@ +.app-quick-group { + height: 100%; + display: flex; + flex-direction: row; + + >.app-quick-item { + cursor: pointer; + color: var(--view-font-color); + font-family: Segoe WPC, Segoe UI, Microsoft YaHei, sans-serif; + font-weight: 700; + font-size: 14px; + padding: 5px 3px; + margin-right: 8px; + + .app-seleted-item { + display: inline-block; + font-weight: 700; + color: var(--view-font-color-bright); + border-bottom: 1px solid; + } + + .app-seleted-item:focus { + outline: none; + } + + .app-quick-item-counter { + border-radius: 12px; + padding-left: 4px; + font-size: 12px; + font-weight: 400; + vertical-align: middle; + display: inline-block; + width: 18px; + height: 18px; + margin-left: 4px; + background-color: #ddd; + } + } + + >.app-quick-item:hover { + color: var(--view-font-color-bright); + } +} + +.app-quick-item-dropdown { + outline: none; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-quick-group/app-quick-group.vue b/app_AssetManagement/src/components/app-quick-group/app-quick-group.vue new file mode 100644 index 0000000..f24206f --- /dev/null +++ b/app_AssetManagement/src/components/app-quick-group/app-quick-group.vue @@ -0,0 +1,233 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-quick-menus/app-quick-menus.less b/app_AssetManagement/src/components/app-quick-menus/app-quick-menus.less new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app_AssetManagement/src/components/app-quick-menus/app-quick-menus.less @@ -0,0 +1 @@ + diff --git a/app_AssetManagement/src/components/app-quick-menus/app-quick-menus.vue b/app_AssetManagement/src/components/app-quick-menus/app-quick-menus.vue new file mode 100644 index 0000000..2a83aac --- /dev/null +++ b/app_AssetManagement/src/components/app-quick-menus/app-quick-menus.vue @@ -0,0 +1,72 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-radio-group/app-radio-group.less b/app_AssetManagement/src/components/app-radio-group/app-radio-group.less new file mode 100644 index 0000000..8f456be --- /dev/null +++ b/app_AssetManagement/src/components/app-radio-group/app-radio-group.less @@ -0,0 +1,3 @@ +.app-radio-group { + overflow: auto; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-radio-group/app-radio-group.vue b/app_AssetManagement/src/components/app-radio-group/app-radio-group.vue new file mode 100644 index 0000000..aee027d --- /dev/null +++ b/app_AssetManagement/src/components/app-radio-group/app-radio-group.vue @@ -0,0 +1,215 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-range-date/app-range-date.less b/app_AssetManagement/src/components/app-range-date/app-range-date.less new file mode 100644 index 0000000..af8ce52 --- /dev/null +++ b/app_AssetManagement/src/components/app-range-date/app-range-date.less @@ -0,0 +1,16 @@ +.app-range-date { + display: flex; + min-width: 493px; + .editor-span{ + padding: 0 10px; + font-size: 15px; + } + .editor-space { + padding: 0 10px; + font-size: 15px; + min-width: 108px; + } + .ivu-date-picker { + flex-grow: 1; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-range-date/app-range-date.vue b/app_AssetManagement/src/components/app-range-date/app-range-date.vue new file mode 100644 index 0000000..5ad7dfa --- /dev/null +++ b/app_AssetManagement/src/components/app-range-date/app-range-date.vue @@ -0,0 +1,202 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-range-editor/app-range-editor.less b/app_AssetManagement/src/components/app-range-editor/app-range-editor.less new file mode 100644 index 0000000..3a062f6 --- /dev/null +++ b/app_AssetManagement/src/components/app-range-editor/app-range-editor.less @@ -0,0 +1,10 @@ +.app-range-editor { + display: flex; + .editor-space { + padding: 0 5px; + font-size: 15px; + } + .ivu-date-picker { + flex-grow: 1; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-range-editor/app-range-editor.vue b/app_AssetManagement/src/components/app-range-editor/app-range-editor.vue new file mode 100644 index 0000000..971fade --- /dev/null +++ b/app_AssetManagement/src/components/app-range-editor/app-range-editor.vue @@ -0,0 +1,191 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-rate/app-rate.less b/app_AssetManagement/src/components/app-rate/app-rate.less new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app_AssetManagement/src/components/app-rate/app-rate.less @@ -0,0 +1 @@ + diff --git a/app_AssetManagement/src/components/app-rate/app-rate.vue b/app_AssetManagement/src/components/app-rate/app-rate.vue new file mode 100644 index 0000000..bf0b473 --- /dev/null +++ b/app_AssetManagement/src/components/app-rate/app-rate.vue @@ -0,0 +1,61 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-rich-text-editor/app-rich-text-editor.vue b/app_AssetManagement/src/components/app-rich-text-editor/app-rich-text-editor.vue new file mode 100644 index 0000000..fa44e9d --- /dev/null +++ b/app_AssetManagement/src/components/app-rich-text-editor/app-rich-text-editor.vue @@ -0,0 +1,522 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-sider-menus/app-sider-menus.less b/app_AssetManagement/src/components/app-sider-menus/app-sider-menus.less new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app_AssetManagement/src/components/app-sider-menus/app-sider-menus.less @@ -0,0 +1 @@ + diff --git a/app_AssetManagement/src/components/app-sider-menus/app-sider-menus.vue b/app_AssetManagement/src/components/app-sider-menus/app-sider-menus.vue new file mode 100644 index 0000000..23e2232 --- /dev/null +++ b/app_AssetManagement/src/components/app-sider-menus/app-sider-menus.vue @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-slider/app-slider.less b/app_AssetManagement/src/components/app-slider/app-slider.less new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app_AssetManagement/src/components/app-slider/app-slider.less @@ -0,0 +1 @@ + diff --git a/app_AssetManagement/src/components/app-slider/app-slider.vue b/app_AssetManagement/src/components/app-slider/app-slider.vue new file mode 100644 index 0000000..e014d4b --- /dev/null +++ b/app_AssetManagement/src/components/app-slider/app-slider.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-span/app-span.less b/app_AssetManagement/src/components/app-span/app-span.less new file mode 100644 index 0000000..9434f30 --- /dev/null +++ b/app_AssetManagement/src/components/app-span/app-span.less @@ -0,0 +1,7 @@ +.app-span{ + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + overflow: hidden; +} + diff --git a/app_AssetManagement/src/components/app-span/app-span.tsx b/app_AssetManagement/src/components/app-span/app-span.tsx new file mode 100644 index 0000000..fba98ff --- /dev/null +++ b/app_AssetManagement/src/components/app-span/app-span.tsx @@ -0,0 +1,193 @@ +import { Vue, Component, Prop, Watch, Model } from 'vue-property-decorator'; + +/** + * 标签 + * + * @export + * @class AppSpan + * @extends {Vue} + */ +@Component({}) +export default class AppSpan extends Vue { + + /** + * 当前值 + * + * @type {*} + * @memberof AppSpan + */ + @Prop() public value?: any; + + /** + * 当前表单项名称 + * + * @type {*} + * @memberof AppSpan + */ + @Prop() public name?: any; + + /** + * 代码表标识 + * + * @type {string} + * @memberof AppSpan + */ + @Prop() public tag?: string; + + /** + * 代码表类型 + * + * @type {string} + * @memberof AppSpan + */ + @Prop() public codelistType?: string; + + /** + * 获取或模式 + * @type {boolean} + * @memberof AppSpan + */ + @Prop({ default: "STR" }) public renderMode?: string; + + /** + * 文本分隔符 + * @type {boolean} + * @memberof AppSpan + */ + @Prop({ default: '、' }) public textSeparator?: string; + + /** + * 值分隔符 + * @type {boolean} + * @memberof AppSpan + */ + @Prop({ default: ',' }) public valueSeparator?: string; + + /** + * 传入表单数据 + * + * @type {*} + * @memberof AppSpan + */ + @Prop() public data?: any; + + /** + * 局部上下文导航参数 + * + * @type {any} + * @memberof AppSpan + */ + @Prop() public localContext!: any; + + /** + * 局部导航参数 + * + * @type {any} + * @memberof AppSpan + */ + @Prop() public localParam!: any; + + /** + * 视图上下文 + * + * @type {*} + * @memberof AppSpan + */ + @Prop() public context!: any; + + /** + * 视图参数 + * + * @type {*} + * @memberof AppSpan + */ + @Prop() public viewparams!: any; + + /** + * 监控表单属性 data 值 + * + * @memberof AppSpan + */ + @Watch('value') + onDataChange(newVal: any, oldVal: any) { + if (newVal !== oldVal) { + this.load(); + } + } + + /** + * 显示值 + * @type {*} + * @memberof AppSpan + */ + public text: any = ''; + + /** + * 编辑器类型 + * + * @type {string} + * @memberof AppSpan + */ + @Prop() public editorType?: string; + + /** + * 单位 + * + * @type {*} + * @memberof AppSpan + */ + @Prop() public unitName?: any; + + /** + * vue 生命周期 + * + * @memberof AppSpan + */ + public created() { + this.load(); + } + + /** + * 处理数据 + * + * @memberof AppSpan + */ + public load() { + if (this.tag) { + return; //代码表走codelist组件 + } else if (this.editorType === "ADDRESSPICKUP") { + JSON.parse(this.value).forEach((item: any, index: number) => { + this.text += index === 0 ? item.srfmajortext : "," + item.srfmajortext; + }); + } else { + this.text = this.value; + } + } + + /** + * 绘制内容 + * + * @returns {*} + * @memberof AppSpan + */ + public render(): any { + if (!isExist(this.value) || isEmpty(this.value)) { + return ---; + } + if (this.tag) { + return + } else if (Object.is(this.editorType, 'PICTURE') || Object.is(this.editorType, 'PICTURE_ONE') || Object.is(this.editorType, 'FILEUPLOADER')) { + return ; + } + + if(this.unitName != null && !Object.is(this.unitName, '')) { + let _text: any = this.text.toString(); + if(_text.indexOf(this.unitName) == -1) { + return {this.text} {this.unitName}; + } + } + + return {this.text}; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-stepper/app-stepper.less b/app_AssetManagement/src/components/app-stepper/app-stepper.less new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app_AssetManagement/src/components/app-stepper/app-stepper.less @@ -0,0 +1 @@ + diff --git a/app_AssetManagement/src/components/app-stepper/app-stepper.vue b/app_AssetManagement/src/components/app-stepper/app-stepper.vue new file mode 100644 index 0000000..b7c7a98 --- /dev/null +++ b/app_AssetManagement/src/components/app-stepper/app-stepper.vue @@ -0,0 +1,77 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-studioaction/app-studioaction.less b/app_AssetManagement/src/components/app-studioaction/app-studioaction.less new file mode 100644 index 0000000..8b77016 --- /dev/null +++ b/app_AssetManagement/src/components/app-studioaction/app-studioaction.less @@ -0,0 +1,22 @@ +.app-studioaction { + .studio-config-container { + position: absolute; + top: 10px; + right: 30px; + z-index: 1; + background: rgba(22, 22, 22, 0.6); + border-radius: 5px; + display: flex; + + >.title { + color: white; + border-right: 1px solid #333; + padding: 5px; + text-align: center; + } + + >.actions { + display: flex; + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-studioaction/app-studioaction.vue b/app_AssetManagement/src/components/app-studioaction/app-studioaction.vue new file mode 100644 index 0000000..7064e54 --- /dev/null +++ b/app_AssetManagement/src/components/app-studioaction/app-studioaction.vue @@ -0,0 +1,84 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-switch/app-switch.less b/app_AssetManagement/src/components/app-switch/app-switch.less new file mode 100644 index 0000000..f903339 --- /dev/null +++ b/app_AssetManagement/src/components/app-switch/app-switch.less @@ -0,0 +1,4 @@ +.dropdown-list{ + +} + diff --git a/app_AssetManagement/src/components/app-switch/app-switch.vue b/app_AssetManagement/src/components/app-switch/app-switch.vue new file mode 100644 index 0000000..b1671c6 --- /dev/null +++ b/app_AssetManagement/src/components/app-switch/app-switch.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-transfer/app-transfer.less b/app_AssetManagement/src/components/app-transfer/app-transfer.less new file mode 100644 index 0000000..147413f --- /dev/null +++ b/app_AssetManagement/src/components/app-transfer/app-transfer.less @@ -0,0 +1,20 @@ +.transfer-select{ + .ivu-select-dropdown { + padding: 0px; + .hidden { + display: none; + } + .el-transfer{ + min-width: 100% !important; + display: flex; + justify-content: space-between; + .el-transfer-panel{ + min-width: 25%; + } + .el-transfer__buttons{ + align-self: center; + } + } + } +} + diff --git a/app_AssetManagement/src/components/app-transfer/app-transfer.vue b/app_AssetManagement/src/components/app-transfer/app-transfer.vue new file mode 100644 index 0000000..5d21524 --- /dev/null +++ b/app_AssetManagement/src/components/app-transfer/app-transfer.vue @@ -0,0 +1,306 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-tree-picker/app-tree-picker.less b/app_AssetManagement/src/components/app-tree-picker/app-tree-picker.less new file mode 100644 index 0000000..b2f845b --- /dev/null +++ b/app_AssetManagement/src/components/app-tree-picker/app-tree-picker.less @@ -0,0 +1,31 @@ +.app-tree-picker { + .ivu-dropdown{ + .ivu-dropdown-rel{ + .tree-input{ + .ivu-input-suffix{ + width: auto; + text-align: right; + .icon-arrow{ + margin-right: 4px; + } + } + .el-icon-circle-close{ + display: none; + } + } + .tree-input:hover{ + .el-icon-circle-close{ + display: inline-block; + } + } + } + .ivu-select-dropdown{ + max-height: 200px; + overflow: scroll; + .tree-contant{ + overflow:inherit; + } + } + + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-tree-picker/app-tree-picker.vue b/app_AssetManagement/src/components/app-tree-picker/app-tree-picker.vue new file mode 100644 index 0000000..9e0dd2c --- /dev/null +++ b/app_AssetManagement/src/components/app-tree-picker/app-tree-picker.vue @@ -0,0 +1,335 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-update-password/app-update-password.less b/app_AssetManagement/src/components/app-update-password/app-update-password.less new file mode 100644 index 0000000..311ecc2 --- /dev/null +++ b/app_AssetManagement/src/components/app-update-password/app-update-password.less @@ -0,0 +1,12 @@ +.update-password{ + .password-item{ + margin-top:10px; + padding:0 10px 0 10px; + .ivu-btn{ + margin-top:15px; + } + } + .password-btn{ + margin-top: 42px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-update-password/app-update-password.vue b/app_AssetManagement/src/components/app-update-password/app-update-password.vue new file mode 100644 index 0000000..6363d35 --- /dev/null +++ b/app_AssetManagement/src/components/app-update-password/app-update-password.vue @@ -0,0 +1,150 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.less b/app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.less new file mode 100644 index 0000000..fce2d87 --- /dev/null +++ b/app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.less @@ -0,0 +1,23 @@ +.app-upload-file-info{ + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + overflow: hidden; + text-align: left; + .file-item{ + color: #606266; + display: inline-block; + padding-left: 4px; + text-overflow: ellipsis; + -webkit-transition: color .3s; + transition: color .3s; + white-space: nowrap; + } + .file-item:hover{ + color: #409EFF; + cursor: pointer; + } + i{ + margin-right: 7px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.vue b/app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.vue new file mode 100644 index 0000000..21ce917 --- /dev/null +++ b/app_AssetManagement/src/components/app-upload-file-info/app-upload-file-info.vue @@ -0,0 +1,112 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-user/app-user.less b/app_AssetManagement/src/components/app-user/app-user.less new file mode 100644 index 0000000..2b216af --- /dev/null +++ b/app_AssetManagement/src/components/app-user/app-user.less @@ -0,0 +1,11 @@ +.app-header-user { + .user { + font-size: 15px; + cursor: pointer; + margin-right: 10px; + padding: 0 5px; + } +} +.user-dropdownMenu{ + margin-top: 9px; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-user/app-user.vue b/app_AssetManagement/src/components/app-user/app-user.vue new file mode 100644 index 0000000..467981c --- /dev/null +++ b/app_AssetManagement/src/components/app-user/app-user.vue @@ -0,0 +1,114 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-vue-pivottable/app-vue-pivottable.vue b/app_AssetManagement/src/components/app-vue-pivottable/app-vue-pivottable.vue new file mode 100755 index 0000000..868b4b5 --- /dev/null +++ b/app_AssetManagement/src/components/app-vue-pivottable/app-vue-pivottable.vue @@ -0,0 +1,208 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-wf-approval/app-wf-approval.less b/app_AssetManagement/src/components/app-wf-approval/app-wf-approval.less new file mode 100644 index 0000000..6674688 --- /dev/null +++ b/app_AssetManagement/src/components/app-wf-approval/app-wf-approval.less @@ -0,0 +1,92 @@ +.app-wf-approval{ + width:100%; + .app-wf-approval-header{ + width: 100%; + text-align: center; + background: #e5eaef; + height: 32px; + line-height: 32px; + font-size: 16px; + border: 1px solid #565656; + .approval-header-left{ + margin-right: 24px; + } + } + .app-wf-approval-bottom{ + width: 100%; + text-align: center; + background: #e5eaef; + height: 32px; + line-height: 32px; + font-size: 16px; + border-style: solid; + border-width: 0px 1px 1px 1px; + border-color: #565656; + } + .app-wf-approval-content{ + border-left: 1px solid #565656; + border-right: 1px solid #565656; + .approval-content-item{ + display: flex; + align-items: center; + font-size: 16px; + border-bottom: 1px solid #565656; + .approval-content-item-left{ + width: 130px; + padding: 8px; + text-align: center; + } + .approval-content-item-right{ + width: calc(100% - 130px); + border-left:1px solid #565656; + .approval-content-item-wait{ + padding: 0px 4px; + height: 32px; + line-height: 32px; + font-size: 16px; + border-bottom:1px solid #565656; + background: #d1ef5c; + >span{ + font-size: 18px; + color: #000; + font-weight: 600; + } + } + .approval-content-item-info{ + .approval-content-item-info-item { + padding: 0px 4px; + height: 32px; + line-height: 32px; + border-bottom:1px solid #565656; + } + .approval-content-item-info-top{ + font-size: 16px; + } + .approval-content-item-info-bottom{ + font-size: 14px; + text-align: right; + >span{ + margin-right:6px; + } + .info-bottom-name{ + font-size: 18px; + font-weight: 600; + } + } + > div:nth-last-child(1){ + > .approval-content-item-info-item:nth-last-child(1){ + border-bottom: 0; + } + } + } + .approval-content-item-memo{ + padding: 0px 4px; + .el-textarea__inner{ + border: 0px !important; + padding: 0px !important; + } + } + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-wf-approval/app-wf-approval.vue b/app_AssetManagement/src/components/app-wf-approval/app-wf-approval.vue new file mode 100644 index 0000000..51a3f27 --- /dev/null +++ b/app_AssetManagement/src/components/app-wf-approval/app-wf-approval.vue @@ -0,0 +1,116 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/codelist/codelist.vue b/app_AssetManagement/src/components/codelist/codelist.vue new file mode 100644 index 0000000..0950575 --- /dev/null +++ b/app_AssetManagement/src/components/codelist/codelist.vue @@ -0,0 +1,301 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/context-menu-container/context-menu-container.vue b/app_AssetManagement/src/components/context-menu-container/context-menu-container.vue new file mode 100644 index 0000000..36a4025 --- /dev/null +++ b/app_AssetManagement/src/components/context-menu-container/context-menu-container.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/app_AssetManagement/src/components/context-menu-drag/context-menu-drag.less b/app_AssetManagement/src/components/context-menu-drag/context-menu-drag.less new file mode 100644 index 0000000..f19d494 --- /dev/null +++ b/app_AssetManagement/src/components/context-menu-drag/context-menu-drag.less @@ -0,0 +1,129 @@ +.menu-drawer { + .ivu-drawer-left { + left: 201px !important; + } + .ivu-drawer { + top: 64px !important; + } + .ivu-drawer-body { + padding: 32px !important; + .menuItems { + display: flex; + flex-wrap: wrap; + > .item { + margin: 0px 10px; + width: calc(33.333% - 20px); + padding: 0px 15px; + font-size: 13px; + transition: all 0.3s; + display: flex; + justify-content: space-between; + height: 32px; + align-items: center; + .star { + display: flex; + height: 100%; + width: 30px; + font-size: 15px; + align-items: center; + justify-content: center; + .ivu-icon-ios-star-outline{ + display: none; + } + } + } + > .item:hover { + background-color: #eaeaea; + cursor: pointer; + .ivu-icon-ios-star-outline{ + display: inline; + } + } + } + } + } + .sider-drawer { + .ivu-drawer { + background-color: #ffffff !important; + } + .ivu-drawer-body { + padding: 0px !important; + } + .ivu-drawer { + top: 64px !important; + } + .context-menu-drag { + display: flex; + .flip-list-move { + transition: transform 0.3s; + } + .menu-list { + width: 100%; + height: 100%; + .menu-header { + cursor: pointer; + border-bottom: 1px solid rgb(222, 222, 222); + height: 48px; + line-height: 48px; + display: flex; + align-items: center; + .menuicon { + display: inline-block; + width: 50px; + font-size: 16px; + text-align: center; + font-size: 22px; + } + .content { + display: inline-block; + text-overflow: ellipsis; + white-space: nowrap; + flex: 1 1 0%; + overflow: hidden; + font-size: 13px; + } + .forward { + margin: 0px 8px 0px 4px; + color: rgb(222, 222, 222); + font-size: 15px; + } + } + .list-group-item { + transition: background 1s; + -webkit-transition: background 1s; + .menuicon { + text-align: center; + } + .el-row { + height: 100%; + display: flex; + align-items: center; + padding: 0px 5px; + } + height: 40px; + cursor: pointer; + position: relative; + display: block; + margin-bottom: -1px; + transition: background-color 0.5s; + transition-timing-function: ease-in-out; + .handle { + cursor: move; + } + .bar { + display: flex; + .ivu-icon-ios-close { + cursor: pointer; + font-size: 25px; + } + } + } + .list-group-item:hover { + background-color: #f5f5f5; + .ivu-icon-ios-star-outline{ + display: inline; + } + } + } + } + } \ No newline at end of file diff --git a/app_AssetManagement/src/components/context-menu-drag/context-menu-drag.vue b/app_AssetManagement/src/components/context-menu-drag/context-menu-drag.vue new file mode 100644 index 0000000..df37299 --- /dev/null +++ b/app_AssetManagement/src/components/context-menu-drag/context-menu-drag.vue @@ -0,0 +1,309 @@ + + + + + diff --git a/app_AssetManagement/src/components/context-menu/context-menu.less b/app_AssetManagement/src/components/context-menu/context-menu.less new file mode 100644 index 0000000..1117f2c --- /dev/null +++ b/app_AssetManagement/src/components/context-menu/context-menu.less @@ -0,0 +1,61 @@ +.context-menu-container { + // width: 100vw; + // height: 100vh; + // z-index: -10000; + // position: absolute; + // top: 0; + // left: 0; + // line-height: 1; + z-index: 10001; + + .context-menu-content { + position: absolute; + background: #FFF; + // border: 1px solid #e3e3e3; + .tree-right-menu{ + .ivu-select-dropdown{ + overflow: auto; + } + } + .ivu-divider{ + width: 100%; + } + + } + + .context-menus { + + .context-menus-item { + list-style: none; + line-height: 36px; + padding: 0 13px; + margin: 0; + font-size: 14px; + color: #606266; + cursor: pointer; + outline: none; + display: flex; + + .icon { + display: flex; + justify-content: center; + align-items: center; + font-size: 16px; + width: 20px; + margin-right: 8px; + } + } + + .context-menus-item:hover { + background-color: #ecf5ff; + color: #66b1ff; + } + } +} +.context-menu { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/context-menu/context-menu.tsx b/app_AssetManagement/src/components/context-menu/context-menu.tsx new file mode 100644 index 0000000..a68fb31 --- /dev/null +++ b/app_AssetManagement/src/components/context-menu/context-menu.tsx @@ -0,0 +1,226 @@ +class ContextMenuService { + /** + * 容器Dom对象 + * + * @private + * @memberof ContextMenuService + */ + private container: Element | undefined; + + /** + * Creates an instance of ContextMenuService. + * @memberof ContextMenuService + */ + constructor() { + document.addEventListener('click', () => { + this.clearContainer(); + }); + } + + /** + * 设置容器 + * + * @param {Element} container + * @memberof ContextMenuService + */ + public setContainer(container: Element) { + if (container) { + this.clearContainer(); + this.container = container; + } else { + console.error('容器Dom节点不存在'); + } + } + + /** + * 清楚容器 + * + * @memberof ContextMenuService + */ + public clearContainer() { + if (this.container) { + this.container.remove(); + } + } + +} + +const service = new ContextMenuService(); + +import { Vue, Component, Provide, Prop, Emit } from 'vue-property-decorator'; +import './context-menu.less'; + +@Component({}) +export default class ContextMenu extends Vue { + /** + * 设置右键菜单Class + * + * @type {string} + * @memberof ContextMenu + */ + @Prop() + public contextMenuClass?: string; + /** + * 设置右键菜单Style + * + * @type {*} + * @memberof ContextMenu + */ + @Prop() + public contextMenuStyle?: any; + /** + * 右键菜单数据,在调用renderContent时会传回去。 + * + * @type {*} + * @memberof ContextMenu + */ + @Prop() + public data?: any; + /** + * 用于绘制右键菜单内容 + * + * @type {any} + * @memberof ContextMenu + */ + @Prop() + public renderContent?: any; + /** + * 菜单数据 + * + * @type {any[]} + * @memberof ContextMenu + */ + @Prop() + public menus?: any[] + + /** + * 显示右键菜单 + * + * @param {*} x x轴坐标 + * @param {*} y y轴坐标 + */ + public showContextMenu(x: number, y: number) { + // 创建全屏覆盖容器 + const container = document.createElement('div'); + service.setContainer(container); + container.oncontextmenu = () => { + container.remove(); + }; + document.body.appendChild(container); + // 创建Vue实例挂载 + const mount = document.createElement('div'); + container.appendChild(mount); + this.renderContextMenu({ + top: y + 'px', + left: x + 'px' + }, mount, container); + } + + /** + * 绘制菜单 + * + * @param {*} position 菜单显示位置 + * @param {*} mount Vue实例挂载 + * @param {*} container 容器 + * @returns + */ + public renderContextMenu(position: any, mount: any, container: any) { + const self = this; + new Vue({ + data() { + return { + menus: self.menus + }; + }, + methods: { + destroy($event: Event) { + container.remove(); + this.$destroy(); + $event.stopPropagation(); + }, + onContextMenu($event: any) { + $event.preventDefault(); + }, + renderContent() { + let menus; + if (this.menus) { + menus = this.menus.map((item) => { + let icon; + if (item.icon) { + icon = ; + } + if (item.iconcls) { + icon = ; + } + return ( +

    0s|b3RWoMz8F<$$_G@O|K3k(P>P?o+H?rhXK4@iLupqi`N7SMtq%~zd$WG zi)%r8RP(war?cxCG*MRm*uuXSElm6->-kr54Lc%6y-AxKq zLs#VUrrH3~;XvS%io&t~JhcP33w174k}$C7vA8d8-E4sEradZ0FbueZHr;lfs5}` z3r3YjKW5FKjw?5+j7O~WbmEDn#>?sCnJ%v_P-6oFi!kYX+*)WF1CmgR-{|?dNa`Yy<^JrQZ_eG*wkC;W70-*pa+;Spf>e@gqP%JSKU^hwaKS0R;nG6uR@yMg2qaB0>~9{s|gJ9FO3gAS42# zvRp70jjmu^s=;z%ANt^WBafo03q`)(q0u5EJ(I99%okw#(vV3RA}^=Xf8b3G6lbih zcVO6AeVpG6-if(YY9`AtmterC_KxE^QVX@EFyb2{(&+QHiD?iqdSYz1cP5RpXPNud z`mS~{GrxZ(Tk32HGm|aIld@f*QR1ttce}eQGsV0>@m{Vy_2&zA<+uWJD{*s*$ipLGXstaklXvn8Vf~kW!78U!PqQ-2b>2hP-f3n}GaHTKUx$w4aP^1UiW^5t z>qv|R0ay@6;X%By8&Kk$v|m)Bdvo=vtPxeM>&3qtA?J~xP2a`wk1{e|$ruA@1mN*< z_$enY#)8})wzW~U$Bv0Rj(ot2vi~xC@0YOM*Q z!m+{6MRyHg2(LhwT`bbv;HC|fRrtF*JH^TA(ZoZj$311e=n!`ojwc>s{O>BpNDyCU2<=Px*AW1|)RCodHoLgudRT#&=v$@z(6>F*%D_)vSRYa`y`rutr6r_mKRs}^xOR&)- z)(ci`qP7pBJG(Kl##-v7l@RNLPYOPW`V=3uQlB!riITJktyDBklg-Y2{?8^U-R$h_ zIdh>IG6$B~`M&@8=9^#6%(={D1u-Wmoogqun~7;9#l@X~pdq5f4r*;o2});QAlrV| zy+-UUBaldJPN3yAmpNiXbpqff;WbuQ#)>im;Fc&e#s*~qF+62d<-*!>(~L!k9unf` zivES-V7?x=wr8DA*99K^K&{CyohmITTiQI1A)F(;__FoU5@L8UJRbynRE=9+49^Dv zA5|;&wmyQERP8darUJi2f^I>twG7)M*#1bh;vIUf>DLl%#CF2FY`^DPGR&=H@c@`? z0I>71t)JO$DB7jJpKBt<>_ocZwY>e=Ef`#OoH)|lFHChr@E^=dPv=~B6!ybudGb;v z-l7Hox}si9J)czJz?1j5V#`uERjHHu2$pc*$<9Hi=<0Q1ho}t)p6pe1imqNKc8J<= z;K|{LPSMrt#12s#4m>%I(|1VmROLlHi?a0SA=ko+lwjwGJZ zYWYsN&DerVte@+#Xd+K`vCHvFUCiroKRZCOg`Hfw%+tuW_TdlFaI!g&@63oT6d#Ma zA2B$1quK2^S@f*hWd)Y0z6HSdsefb|yu}&Bx=uTiY6aVVlDda3Qk7TI1q08>-30*N zNAblTm^abr@n0x4_!huztdwv-_Ik=&ultSVAD&!{Bfb*{o z2H}D_yyT@1&oFO82NC%4j+f*Etn(ms4PB)hPY>SoRO<8Kr%bwO2dtOlOv~!jjj9K4 zGXD`SSM?PU-E2;!o_Q^$a@XplpbjrH_yoW`q!T=HT4BGbld~GUo@^3J;9WX_BdKM+ z7qgBVRdZK^m*87F@~qc$x#)S0NBz zwp9SRxnp>4bgKBUelK!WG_l)>0JuqbJDhy6tqK8ftD$c)12pi@7+&W}Lhk&!SCu#m k$}N9zRV23K2Um^%0h$!Te0MBPRR91007*qoM6N<$f~<%s=l}o! literal 0 HcmV?d00001 diff --git a/app_AssetManagement/src/assets/img/ppt.png b/app_AssetManagement/src/assets/img/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6cb532c513169bb757d829ad1a1a4c9130146e GIT binary patch literal 2220 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 Promise> = new Map(); + + /** + * 已加载实体权限服务Map缓存 + * + * @protected + * @type {Map} + * @memberof AuthServiceRegister + */ + protected serviceCache: Map = new Map(); + + /** + * Creates an instance of AuthServiceRegister. + * @memberof AuthServiceRegister + */ + constructor() { + this.init(); + } + + /** + * 初始化 + * + * @protected + * @memberof AuthServiceRegister + */ + protected init(): void { + this.allAuthService.set('eamdocument', () => import('@/authservice/eamdocument/eamdocument-auth-service')); + this.allAuthService.set('eamlocationstatemodel', () => import('@/authservice/eamlocation-state-model/eamlocation-state-model-auth-service')); + this.allAuthService.set('eamlocationtype', () => import('@/authservice/eamlocation-type/eamlocation-type-auth-service')); + this.allAuthService.set('eamworkorder', () => import('@/authservice/eamwork-order/eamwork-order-auth-service')); + this.allAuthService.set('eamlocation', () => import('@/authservice/eamlocation/eamlocation-auth-service')); + this.allAuthService.set('eammonitorpoint', () => import('@/authservice/eammonitor-point/eammonitor-point-auth-service')); + this.allAuthService.set('eamassetstate', () => import('@/authservice/eamasset-state/eamasset-state-auth-service')); + this.allAuthService.set('eamlocationstate', () => import('@/authservice/eamlocation-state/eamlocation-state-auth-service')); + this.allAuthService.set('eamassettype', () => import('@/authservice/eamasset-type/eamasset-type-auth-service')); + this.allAuthService.set('eamassetstatemodelline', () => import('@/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service')); + this.allAuthService.set('woorigin', () => import('@/authservice/woorigin/woorigin-auth-service')); + this.allAuthService.set('eamapplytype', () => import('@/authservice/eamapply-type/eamapply-type-auth-service')); + this.allAuthService.set('eamproduct', () => import('@/authservice/eamproduct/eamproduct-auth-service')); + this.allAuthService.set('eamservicelevel', () => import('@/authservice/eamservice-level/eamservice-level-auth-service')); + this.allAuthService.set('eamplancdt', () => import('@/authservice/eamplan-cdt/eamplan-cdt-auth-service')); + this.allAuthService.set('eamplan', () => import('@/authservice/eamplan/eamplan-auth-service')); + this.allAuthService.set('eamsparepartspro', () => import('@/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service')); + this.allAuthService.set('eamapplystatemodelline', () => import('@/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service')); + this.allAuthService.set('eamsparepartsgroup', () => import('@/authservice/eamspare-parts-group/eamspare-parts-group-auth-service')); + this.allAuthService.set('eamplanline', () => import('@/authservice/eamplan-line/eamplan-line-auth-service')); + this.allAuthService.set('eamlocationstatemodelline', () => import('@/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service')); + this.allAuthService.set('eamplanschedule', () => import('@/authservice/eamplan-schedule/eamplan-schedule-auth-service')); + this.allAuthService.set('eamassetpartsgroup', () => import('@/authservice/eamasset-parts-group/eamasset-parts-group-auth-service')); + this.allAuthService.set('eamasset', () => import('@/authservice/eamasset/eamasset-auth-service')); + this.allAuthService.set('eamapplystate', () => import('@/authservice/eamapply-state/eamapply-state-auth-service')); + this.allAuthService.set('eamapply', () => import('@/authservice/eamapply/eamapply-auth-service')); + this.allAuthService.set('eamwostate', () => import('@/authservice/eamwostate/eamwostate-auth-service')); + this.allAuthService.set('eamdocumenttype', () => import('@/authservice/eamdocument-type/eamdocument-type-auth-service')); + this.allAuthService.set('eamassetstatemodel', () => import('@/authservice/eamasset-state-model/eamasset-state-model-auth-service')); + this.allAuthService.set('eamwotype', () => import('@/authservice/eamwotype/eamwotype-auth-service')); + } + + /** + * 加载实体权限服务 + * + * @protected + * @param {string} serviceName + * @returns {Promise} + * @memberof AuthServiceRegister + */ + protected async loadService(serviceName: string): Promise { + const service = this.allAuthService.get(serviceName); + if (service) { + return service(); + } + } + + /** + * 获取应用实体权限服务 + * + * @param {string} name + * @returns {Promise} + * @memberof AuthServiceRegister + */ + public async getService(name: string): Promise { + if (this.serviceCache.has(name)) { + return this.serviceCache.get(name); + } + const authService: any = await this.loadService(name); + if (authService && authService.default) { + const instance: any = new authService.default(); + this.serviceCache.set(name, instance); + return instance; + } + } + +} +export const authServiceRegister: AuthServiceRegister = new AuthServiceRegister(); \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/auth-service.ts b/app_AssetManagement/src/authservice/auth-service.ts new file mode 100644 index 0000000..081990b --- /dev/null +++ b/app_AssetManagement/src/authservice/auth-service.ts @@ -0,0 +1,93 @@ +import { Store } from 'vuex'; + +/** + * 实体权限服务 + * + * @export + * @class AuthService + */ +export default class AuthService { + + /** + * Vue 状态管理器 + * + * @public + * @type {(any | null)} + * @memberof AuthService + */ + public $store: Store | null = null; + + /** + * 默认操作标识 + * + * @public + * @type {(any)} + * @memberof AuthService + */ + public defaultOPPrivs: any = { UPDATE: 1, CREATE: 1, READ: 1, DELETE: 1, WFSTART:1,DENY:1,NONE:1 }; + + /** + * Creates an instance of AuthService. + * + * @param {*} [opts={}] + * @memberof AuthService + */ + constructor(opts: any = {}) { + this.$store = opts.$store; + } + + /** + * 获取状态管理器 + * + * @returns {(any | null)} + * @memberof AuthService + */ + public getStore(): Store | null { + return this.$store; + } + + /** + * 获取实体权限服务 + * + * @param {string} name 实体名称 + * @returns {Promise} + * @memberof AuthService + */ + public getService(name: string): Promise { + return (window as any)['authServiceRegister'].getService(name); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {string} name 实体名称 + * @returns {any} + * @memberof AuthService + */ + public getOPPrivs(data: any): any { + return null; + } + + /** + * 根据菜单项获取菜单权限 + * + * @param {*} item 菜单标识 + * @returns {boolean} + * @memberof AuthService + */ + public getMenusPermission(item: any): boolean { + return true; + } + + /** + * 根据统一资源标识获取统一资源权限 + * + * @param {*} tag 统一资源标识 + * @returns {boolean} + * @memberof AuthService + */ + public getResourcePermission(tag: any): boolean { + return true; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service-base.ts b/app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service-base.ts new file mode 100644 index 0000000..a6330b7 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护申请状态模型明细权限服务对象基类 + * + * @export + * @class EAMApplyStateModelLineAuthServiceBase + * @extends {AuthService} + */ +export default class EAMApplyStateModelLineAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMApplyStateModelLineAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMApplyStateModelLineAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMApplyStateModelLineAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service.ts b/app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service.ts new file mode 100644 index 0000000..31280b5 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply-state-model-line/eamapply-state-model-line-auth-service.ts @@ -0,0 +1,24 @@ +import EAMApplyStateModelLineAuthServiceBase from './eamapply-state-model-line-auth-service-base'; + + +/** + * 维护申请状态模型明细权限服务对象 + * + * @export + * @class EAMApplyStateModelLineAuthService + * @extends {EAMApplyStateModelLineAuthServiceBase} + */ +export default class EAMApplyStateModelLineAuthService extends EAMApplyStateModelLineAuthServiceBase { + + /** + * Creates an instance of EAMApplyStateModelLineAuthService. + * + * @param {*} [opts={}] + * @memberof EAMApplyStateModelLineAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service-base.ts b/app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service-base.ts new file mode 100644 index 0000000..5429bb4 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护申请状态权限服务对象基类 + * + * @export + * @class EAMApplyStateAuthServiceBase + * @extends {AuthService} + */ +export default class EAMApplyStateAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMApplyStateAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMApplyStateAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMApplyStateAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service.ts b/app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service.ts new file mode 100644 index 0000000..d12237c --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply-state/eamapply-state-auth-service.ts @@ -0,0 +1,24 @@ +import EAMApplyStateAuthServiceBase from './eamapply-state-auth-service-base'; + + +/** + * 维护申请状态权限服务对象 + * + * @export + * @class EAMApplyStateAuthService + * @extends {EAMApplyStateAuthServiceBase} + */ +export default class EAMApplyStateAuthService extends EAMApplyStateAuthServiceBase { + + /** + * Creates an instance of EAMApplyStateAuthService. + * + * @param {*} [opts={}] + * @memberof EAMApplyStateAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service-base.ts b/app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service-base.ts new file mode 100644 index 0000000..be57e0f --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护申请类型权限服务对象基类 + * + * @export + * @class EAMApplyTypeAuthServiceBase + * @extends {AuthService} + */ +export default class EAMApplyTypeAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMApplyTypeAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMApplyTypeAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMApplyTypeAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service.ts b/app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service.ts new file mode 100644 index 0000000..0167e74 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply-type/eamapply-type-auth-service.ts @@ -0,0 +1,24 @@ +import EAMApplyTypeAuthServiceBase from './eamapply-type-auth-service-base'; + + +/** + * 维护申请类型权限服务对象 + * + * @export + * @class EAMApplyTypeAuthService + * @extends {EAMApplyTypeAuthServiceBase} + */ +export default class EAMApplyTypeAuthService extends EAMApplyTypeAuthServiceBase { + + /** + * Creates an instance of EAMApplyTypeAuthService. + * + * @param {*} [opts={}] + * @memberof EAMApplyTypeAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply/eamapply-auth-service-base.ts b/app_AssetManagement/src/authservice/eamapply/eamapply-auth-service-base.ts new file mode 100644 index 0000000..f16c097 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply/eamapply-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护申请权限服务对象基类 + * + * @export + * @class EAMApplyAuthServiceBase + * @extends {AuthService} + */ +export default class EAMApplyAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMApplyAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMApplyAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMApplyAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamapply/eamapply-auth-service.ts b/app_AssetManagement/src/authservice/eamapply/eamapply-auth-service.ts new file mode 100644 index 0000000..a67ddaa --- /dev/null +++ b/app_AssetManagement/src/authservice/eamapply/eamapply-auth-service.ts @@ -0,0 +1,24 @@ +import EAMApplyAuthServiceBase from './eamapply-auth-service-base'; + + +/** + * 维护申请权限服务对象 + * + * @export + * @class EAMApplyAuthService + * @extends {EAMApplyAuthServiceBase} + */ +export default class EAMApplyAuthService extends EAMApplyAuthServiceBase { + + /** + * Creates an instance of EAMApplyAuthService. + * + * @param {*} [opts={}] + * @memberof EAMApplyAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service-base.ts b/app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service-base.ts new file mode 100644 index 0000000..4fe90b5 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 资产备件包权限服务对象基类 + * + * @export + * @class EAMAssetPartsGroupAuthServiceBase + * @extends {AuthService} + */ +export default class EAMAssetPartsGroupAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMAssetPartsGroupAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMAssetPartsGroupAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMAssetPartsGroupAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service.ts b/app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service.ts new file mode 100644 index 0000000..8bbc631 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-parts-group/eamasset-parts-group-auth-service.ts @@ -0,0 +1,24 @@ +import EAMAssetPartsGroupAuthServiceBase from './eamasset-parts-group-auth-service-base'; + + +/** + * 资产备件包权限服务对象 + * + * @export + * @class EAMAssetPartsGroupAuthService + * @extends {EAMAssetPartsGroupAuthServiceBase} + */ +export default class EAMAssetPartsGroupAuthService extends EAMAssetPartsGroupAuthServiceBase { + + /** + * Creates an instance of EAMAssetPartsGroupAuthService. + * + * @param {*} [opts={}] + * @memberof EAMAssetPartsGroupAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service-base.ts b/app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service-base.ts new file mode 100644 index 0000000..d87c6b1 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 资产状态模型明细权限服务对象基类 + * + * @export + * @class EAMAssetStateModelLineAuthServiceBase + * @extends {AuthService} + */ +export default class EAMAssetStateModelLineAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMAssetStateModelLineAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMAssetStateModelLineAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMAssetStateModelLineAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service.ts b/app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service.ts new file mode 100644 index 0000000..44425c3 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-state-model-line/eamasset-state-model-line-auth-service.ts @@ -0,0 +1,24 @@ +import EAMAssetStateModelLineAuthServiceBase from './eamasset-state-model-line-auth-service-base'; + + +/** + * 资产状态模型明细权限服务对象 + * + * @export + * @class EAMAssetStateModelLineAuthService + * @extends {EAMAssetStateModelLineAuthServiceBase} + */ +export default class EAMAssetStateModelLineAuthService extends EAMAssetStateModelLineAuthServiceBase { + + /** + * Creates an instance of EAMAssetStateModelLineAuthService. + * + * @param {*} [opts={}] + * @memberof EAMAssetStateModelLineAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service-base.ts b/app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service-base.ts new file mode 100644 index 0000000..81d09f3 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 资产状态模型权限服务对象基类 + * + * @export + * @class EAMAssetStateModelAuthServiceBase + * @extends {AuthService} + */ +export default class EAMAssetStateModelAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMAssetStateModelAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMAssetStateModelAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMAssetStateModelAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service.ts b/app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service.ts new file mode 100644 index 0000000..1ebe29c --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-state-model/eamasset-state-model-auth-service.ts @@ -0,0 +1,24 @@ +import EAMAssetStateModelAuthServiceBase from './eamasset-state-model-auth-service-base'; + + +/** + * 资产状态模型权限服务对象 + * + * @export + * @class EAMAssetStateModelAuthService + * @extends {EAMAssetStateModelAuthServiceBase} + */ +export default class EAMAssetStateModelAuthService extends EAMAssetStateModelAuthServiceBase { + + /** + * Creates an instance of EAMAssetStateModelAuthService. + * + * @param {*} [opts={}] + * @memberof EAMAssetStateModelAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service-base.ts b/app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service-base.ts new file mode 100644 index 0000000..af1e772 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 资产状态权限服务对象基类 + * + * @export + * @class EAMAssetStateAuthServiceBase + * @extends {AuthService} + */ +export default class EAMAssetStateAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMAssetStateAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMAssetStateAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMAssetStateAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service.ts b/app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service.ts new file mode 100644 index 0000000..9d9383c --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-state/eamasset-state-auth-service.ts @@ -0,0 +1,24 @@ +import EAMAssetStateAuthServiceBase from './eamasset-state-auth-service-base'; + + +/** + * 资产状态权限服务对象 + * + * @export + * @class EAMAssetStateAuthService + * @extends {EAMAssetStateAuthServiceBase} + */ +export default class EAMAssetStateAuthService extends EAMAssetStateAuthServiceBase { + + /** + * Creates an instance of EAMAssetStateAuthService. + * + * @param {*} [opts={}] + * @memberof EAMAssetStateAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service-base.ts b/app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service-base.ts new file mode 100644 index 0000000..8859a97 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 资产类型权限服务对象基类 + * + * @export + * @class EAMAssetTypeAuthServiceBase + * @extends {AuthService} + */ +export default class EAMAssetTypeAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMAssetTypeAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMAssetTypeAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMAssetTypeAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service.ts b/app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service.ts new file mode 100644 index 0000000..38c5c04 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset-type/eamasset-type-auth-service.ts @@ -0,0 +1,24 @@ +import EAMAssetTypeAuthServiceBase from './eamasset-type-auth-service-base'; + + +/** + * 资产类型权限服务对象 + * + * @export + * @class EAMAssetTypeAuthService + * @extends {EAMAssetTypeAuthServiceBase} + */ +export default class EAMAssetTypeAuthService extends EAMAssetTypeAuthServiceBase { + + /** + * Creates an instance of EAMAssetTypeAuthService. + * + * @param {*} [opts={}] + * @memberof EAMAssetTypeAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset/eamasset-auth-service-base.ts b/app_AssetManagement/src/authservice/eamasset/eamasset-auth-service-base.ts new file mode 100644 index 0000000..21deecd --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset/eamasset-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 资产权限服务对象基类 + * + * @export + * @class EAMAssetAuthServiceBase + * @extends {AuthService} + */ +export default class EAMAssetAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMAssetAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMAssetAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMAssetAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamasset/eamasset-auth-service.ts b/app_AssetManagement/src/authservice/eamasset/eamasset-auth-service.ts new file mode 100644 index 0000000..3c9780d --- /dev/null +++ b/app_AssetManagement/src/authservice/eamasset/eamasset-auth-service.ts @@ -0,0 +1,24 @@ +import EAMAssetAuthServiceBase from './eamasset-auth-service-base'; + + +/** + * 资产权限服务对象 + * + * @export + * @class EAMAssetAuthService + * @extends {EAMAssetAuthServiceBase} + */ +export default class EAMAssetAuthService extends EAMAssetAuthServiceBase { + + /** + * Creates an instance of EAMAssetAuthService. + * + * @param {*} [opts={}] + * @memberof EAMAssetAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service-base.ts b/app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service-base.ts new file mode 100644 index 0000000..4726ad0 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 文档类型权限服务对象基类 + * + * @export + * @class EAMDocumentTypeAuthServiceBase + * @extends {AuthService} + */ +export default class EAMDocumentTypeAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMDocumentTypeAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMDocumentTypeAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMDocumentTypeAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service.ts b/app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service.ts new file mode 100644 index 0000000..535aaa8 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamdocument-type/eamdocument-type-auth-service.ts @@ -0,0 +1,24 @@ +import EAMDocumentTypeAuthServiceBase from './eamdocument-type-auth-service-base'; + + +/** + * 文档类型权限服务对象 + * + * @export + * @class EAMDocumentTypeAuthService + * @extends {EAMDocumentTypeAuthServiceBase} + */ +export default class EAMDocumentTypeAuthService extends EAMDocumentTypeAuthServiceBase { + + /** + * Creates an instance of EAMDocumentTypeAuthService. + * + * @param {*} [opts={}] + * @memberof EAMDocumentTypeAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service-base.ts b/app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service-base.ts new file mode 100644 index 0000000..78c77f5 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 文档权限服务对象基类 + * + * @export + * @class EAMDocumentAuthServiceBase + * @extends {AuthService} + */ +export default class EAMDocumentAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMDocumentAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMDocumentAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMDocumentAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service.ts b/app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service.ts new file mode 100644 index 0000000..6c09573 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamdocument/eamdocument-auth-service.ts @@ -0,0 +1,24 @@ +import EAMDocumentAuthServiceBase from './eamdocument-auth-service-base'; + + +/** + * 文档权限服务对象 + * + * @export + * @class EAMDocumentAuthService + * @extends {EAMDocumentAuthServiceBase} + */ +export default class EAMDocumentAuthService extends EAMDocumentAuthServiceBase { + + /** + * Creates an instance of EAMDocumentAuthService. + * + * @param {*} [opts={}] + * @memberof EAMDocumentAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service-base.ts b/app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service-base.ts new file mode 100644 index 0000000..990a602 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 功能位置状态模型明细权限服务对象基类 + * + * @export + * @class EAMLocationStateModelLineAuthServiceBase + * @extends {AuthService} + */ +export default class EAMLocationStateModelLineAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMLocationStateModelLineAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMLocationStateModelLineAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMLocationStateModelLineAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service.ts b/app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service.ts new file mode 100644 index 0000000..290d5d8 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-state-model-line/eamlocation-state-model-line-auth-service.ts @@ -0,0 +1,24 @@ +import EAMLocationStateModelLineAuthServiceBase from './eamlocation-state-model-line-auth-service-base'; + + +/** + * 功能位置状态模型明细权限服务对象 + * + * @export + * @class EAMLocationStateModelLineAuthService + * @extends {EAMLocationStateModelLineAuthServiceBase} + */ +export default class EAMLocationStateModelLineAuthService extends EAMLocationStateModelLineAuthServiceBase { + + /** + * Creates an instance of EAMLocationStateModelLineAuthService. + * + * @param {*} [opts={}] + * @memberof EAMLocationStateModelLineAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service-base.ts b/app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service-base.ts new file mode 100644 index 0000000..0d89de4 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 功能位置状态模型权限服务对象基类 + * + * @export + * @class EAMLocationStateModelAuthServiceBase + * @extends {AuthService} + */ +export default class EAMLocationStateModelAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMLocationStateModelAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMLocationStateModelAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMLocationStateModelAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service.ts b/app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service.ts new file mode 100644 index 0000000..57f1768 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-state-model/eamlocation-state-model-auth-service.ts @@ -0,0 +1,24 @@ +import EAMLocationStateModelAuthServiceBase from './eamlocation-state-model-auth-service-base'; + + +/** + * 功能位置状态模型权限服务对象 + * + * @export + * @class EAMLocationStateModelAuthService + * @extends {EAMLocationStateModelAuthServiceBase} + */ +export default class EAMLocationStateModelAuthService extends EAMLocationStateModelAuthServiceBase { + + /** + * Creates an instance of EAMLocationStateModelAuthService. + * + * @param {*} [opts={}] + * @memberof EAMLocationStateModelAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service-base.ts b/app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service-base.ts new file mode 100644 index 0000000..a4d6ae8 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 功能位置状态权限服务对象基类 + * + * @export + * @class EAMLocationStateAuthServiceBase + * @extends {AuthService} + */ +export default class EAMLocationStateAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMLocationStateAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMLocationStateAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMLocationStateAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service.ts b/app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service.ts new file mode 100644 index 0000000..65ebac9 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-state/eamlocation-state-auth-service.ts @@ -0,0 +1,24 @@ +import EAMLocationStateAuthServiceBase from './eamlocation-state-auth-service-base'; + + +/** + * 功能位置状态权限服务对象 + * + * @export + * @class EAMLocationStateAuthService + * @extends {EAMLocationStateAuthServiceBase} + */ +export default class EAMLocationStateAuthService extends EAMLocationStateAuthServiceBase { + + /** + * Creates an instance of EAMLocationStateAuthService. + * + * @param {*} [opts={}] + * @memberof EAMLocationStateAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service-base.ts b/app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service-base.ts new file mode 100644 index 0000000..c774f60 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 功能位置类型权限服务对象基类 + * + * @export + * @class EAMLocationTypeAuthServiceBase + * @extends {AuthService} + */ +export default class EAMLocationTypeAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMLocationTypeAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMLocationTypeAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMLocationTypeAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service.ts b/app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service.ts new file mode 100644 index 0000000..4dd6e6d --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation-type/eamlocation-type-auth-service.ts @@ -0,0 +1,24 @@ +import EAMLocationTypeAuthServiceBase from './eamlocation-type-auth-service-base'; + + +/** + * 功能位置类型权限服务对象 + * + * @export + * @class EAMLocationTypeAuthService + * @extends {EAMLocationTypeAuthServiceBase} + */ +export default class EAMLocationTypeAuthService extends EAMLocationTypeAuthServiceBase { + + /** + * Creates an instance of EAMLocationTypeAuthService. + * + * @param {*} [opts={}] + * @memberof EAMLocationTypeAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service-base.ts b/app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service-base.ts new file mode 100644 index 0000000..acd0d08 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 功能位置权限服务对象基类 + * + * @export + * @class EAMLocationAuthServiceBase + * @extends {AuthService} + */ +export default class EAMLocationAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMLocationAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMLocationAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMLocationAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service.ts b/app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service.ts new file mode 100644 index 0000000..f0f11b1 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamlocation/eamlocation-auth-service.ts @@ -0,0 +1,24 @@ +import EAMLocationAuthServiceBase from './eamlocation-auth-service-base'; + + +/** + * 功能位置权限服务对象 + * + * @export + * @class EAMLocationAuthService + * @extends {EAMLocationAuthServiceBase} + */ +export default class EAMLocationAuthService extends EAMLocationAuthServiceBase { + + /** + * Creates an instance of EAMLocationAuthService. + * + * @param {*} [opts={}] + * @memberof EAMLocationAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service-base.ts b/app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service-base.ts new file mode 100644 index 0000000..7147742 --- /dev/null +++ b/app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 测点权限服务对象基类 + * + * @export + * @class EAMMonitorPointAuthServiceBase + * @extends {AuthService} + */ +export default class EAMMonitorPointAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMMonitorPointAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMMonitorPointAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMMonitorPointAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service.ts b/app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service.ts new file mode 100644 index 0000000..6733c90 --- /dev/null +++ b/app_AssetManagement/src/authservice/eammonitor-point/eammonitor-point-auth-service.ts @@ -0,0 +1,24 @@ +import EAMMonitorPointAuthServiceBase from './eammonitor-point-auth-service-base'; + + +/** + * 测点权限服务对象 + * + * @export + * @class EAMMonitorPointAuthService + * @extends {EAMMonitorPointAuthServiceBase} + */ +export default class EAMMonitorPointAuthService extends EAMMonitorPointAuthServiceBase { + + /** + * Creates an instance of EAMMonitorPointAuthService. + * + * @param {*} [opts={}] + * @memberof EAMMonitorPointAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service-base.ts b/app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service-base.ts new file mode 100644 index 0000000..19b982a --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护计划条件权限服务对象基类 + * + * @export + * @class EAMPlanCDTAuthServiceBase + * @extends {AuthService} + */ +export default class EAMPlanCDTAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMPlanCDTAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMPlanCDTAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMPlanCDTAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service.ts b/app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service.ts new file mode 100644 index 0000000..c7b82d1 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan-cdt/eamplan-cdt-auth-service.ts @@ -0,0 +1,24 @@ +import EAMPlanCDTAuthServiceBase from './eamplan-cdt-auth-service-base'; + + +/** + * 维护计划条件权限服务对象 + * + * @export + * @class EAMPlanCDTAuthService + * @extends {EAMPlanCDTAuthServiceBase} + */ +export default class EAMPlanCDTAuthService extends EAMPlanCDTAuthServiceBase { + + /** + * Creates an instance of EAMPlanCDTAuthService. + * + * @param {*} [opts={}] + * @memberof EAMPlanCDTAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service-base.ts b/app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service-base.ts new file mode 100644 index 0000000..3dd8cd7 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 计划步骤权限服务对象基类 + * + * @export + * @class EAMPlanLineAuthServiceBase + * @extends {AuthService} + */ +export default class EAMPlanLineAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMPlanLineAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMPlanLineAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMPlanLineAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service.ts b/app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service.ts new file mode 100644 index 0000000..51c311a --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan-line/eamplan-line-auth-service.ts @@ -0,0 +1,24 @@ +import EAMPlanLineAuthServiceBase from './eamplan-line-auth-service-base'; + + +/** + * 计划步骤权限服务对象 + * + * @export + * @class EAMPlanLineAuthService + * @extends {EAMPlanLineAuthServiceBase} + */ +export default class EAMPlanLineAuthService extends EAMPlanLineAuthServiceBase { + + /** + * Creates an instance of EAMPlanLineAuthService. + * + * @param {*} [opts={}] + * @memberof EAMPlanLineAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service-base.ts b/app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service-base.ts new file mode 100644 index 0000000..3e6ef3a --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护计划时刻设置权限服务对象基类 + * + * @export + * @class EAMPlanScheduleAuthServiceBase + * @extends {AuthService} + */ +export default class EAMPlanScheduleAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMPlanScheduleAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMPlanScheduleAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMPlanScheduleAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service.ts b/app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service.ts new file mode 100644 index 0000000..bf58e1b --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan-schedule/eamplan-schedule-auth-service.ts @@ -0,0 +1,24 @@ +import EAMPlanScheduleAuthServiceBase from './eamplan-schedule-auth-service-base'; + + +/** + * 维护计划时刻设置权限服务对象 + * + * @export + * @class EAMPlanScheduleAuthService + * @extends {EAMPlanScheduleAuthServiceBase} + */ +export default class EAMPlanScheduleAuthService extends EAMPlanScheduleAuthServiceBase { + + /** + * Creates an instance of EAMPlanScheduleAuthService. + * + * @param {*} [opts={}] + * @memberof EAMPlanScheduleAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan/eamplan-auth-service-base.ts b/app_AssetManagement/src/authservice/eamplan/eamplan-auth-service-base.ts new file mode 100644 index 0000000..7704eb1 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan/eamplan-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 维护计划权限服务对象基类 + * + * @export + * @class EAMPlanAuthServiceBase + * @extends {AuthService} + */ +export default class EAMPlanAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMPlanAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMPlanAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMPlanAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamplan/eamplan-auth-service.ts b/app_AssetManagement/src/authservice/eamplan/eamplan-auth-service.ts new file mode 100644 index 0000000..729534b --- /dev/null +++ b/app_AssetManagement/src/authservice/eamplan/eamplan-auth-service.ts @@ -0,0 +1,24 @@ +import EAMPlanAuthServiceBase from './eamplan-auth-service-base'; + + +/** + * 维护计划权限服务对象 + * + * @export + * @class EAMPlanAuthService + * @extends {EAMPlanAuthServiceBase} + */ +export default class EAMPlanAuthService extends EAMPlanAuthServiceBase { + + /** + * Creates an instance of EAMPlanAuthService. + * + * @param {*} [opts={}] + * @memberof EAMPlanAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service-base.ts b/app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service-base.ts new file mode 100644 index 0000000..f7df956 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 产品权限服务对象基类 + * + * @export + * @class EAMPRODUCTAuthServiceBase + * @extends {AuthService} + */ +export default class EAMPRODUCTAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMPRODUCTAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMPRODUCTAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMPRODUCTAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service.ts b/app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service.ts new file mode 100644 index 0000000..3f949a0 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamproduct/eamproduct-auth-service.ts @@ -0,0 +1,24 @@ +import EAMPRODUCTAuthServiceBase from './eamproduct-auth-service-base'; + + +/** + * 产品权限服务对象 + * + * @export + * @class EAMPRODUCTAuthService + * @extends {EAMPRODUCTAuthServiceBase} + */ +export default class EAMPRODUCTAuthService extends EAMPRODUCTAuthServiceBase { + + /** + * Creates an instance of EAMPRODUCTAuthService. + * + * @param {*} [opts={}] + * @memberof EAMPRODUCTAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service-base.ts b/app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service-base.ts new file mode 100644 index 0000000..ae173f2 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 服务等级权限服务对象基类 + * + * @export + * @class EAMServiceLevelAuthServiceBase + * @extends {AuthService} + */ +export default class EAMServiceLevelAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMServiceLevelAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMServiceLevelAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMServiceLevelAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service.ts b/app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service.ts new file mode 100644 index 0000000..620fde2 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamservice-level/eamservice-level-auth-service.ts @@ -0,0 +1,24 @@ +import EAMServiceLevelAuthServiceBase from './eamservice-level-auth-service-base'; + + +/** + * 服务等级权限服务对象 + * + * @export + * @class EAMServiceLevelAuthService + * @extends {EAMServiceLevelAuthServiceBase} + */ +export default class EAMServiceLevelAuthService extends EAMServiceLevelAuthServiceBase { + + /** + * Creates an instance of EAMServiceLevelAuthService. + * + * @param {*} [opts={}] + * @memberof EAMServiceLevelAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service-base.ts b/app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service-base.ts new file mode 100644 index 0000000..05f2d70 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 备件包权限服务对象基类 + * + * @export + * @class EAMSparePartsGroupAuthServiceBase + * @extends {AuthService} + */ +export default class EAMSparePartsGroupAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMSparePartsGroupAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMSparePartsGroupAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMSparePartsGroupAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service.ts b/app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service.ts new file mode 100644 index 0000000..a5708d9 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamspare-parts-group/eamspare-parts-group-auth-service.ts @@ -0,0 +1,24 @@ +import EAMSparePartsGroupAuthServiceBase from './eamspare-parts-group-auth-service-base'; + + +/** + * 备件包权限服务对象 + * + * @export + * @class EAMSparePartsGroupAuthService + * @extends {EAMSparePartsGroupAuthServiceBase} + */ +export default class EAMSparePartsGroupAuthService extends EAMSparePartsGroupAuthServiceBase { + + /** + * Creates an instance of EAMSparePartsGroupAuthService. + * + * @param {*} [opts={}] + * @memberof EAMSparePartsGroupAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service-base.ts b/app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service-base.ts new file mode 100644 index 0000000..28b7838 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 备件包物料权限服务对象基类 + * + * @export + * @class EAMSparePartsPROAuthServiceBase + * @extends {AuthService} + */ +export default class EAMSparePartsPROAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMSparePartsPROAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMSparePartsPROAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMSparePartsPROAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service.ts b/app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service.ts new file mode 100644 index 0000000..9a01c0e --- /dev/null +++ b/app_AssetManagement/src/authservice/eamspare-parts-pro/eamspare-parts-pro-auth-service.ts @@ -0,0 +1,24 @@ +import EAMSparePartsPROAuthServiceBase from './eamspare-parts-pro-auth-service-base'; + + +/** + * 备件包物料权限服务对象 + * + * @export + * @class EAMSparePartsPROAuthService + * @extends {EAMSparePartsPROAuthServiceBase} + */ +export default class EAMSparePartsPROAuthService extends EAMSparePartsPROAuthServiceBase { + + /** + * Creates an instance of EAMSparePartsPROAuthService. + * + * @param {*} [opts={}] + * @memberof EAMSparePartsPROAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service-base.ts b/app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service-base.ts new file mode 100644 index 0000000..716448b --- /dev/null +++ b/app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 工单权限服务对象基类 + * + * @export + * @class EAMWorkOrderAuthServiceBase + * @extends {AuthService} + */ +export default class EAMWorkOrderAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMWorkOrderAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMWorkOrderAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMWorkOrderAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service.ts b/app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service.ts new file mode 100644 index 0000000..8743e03 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamwork-order/eamwork-order-auth-service.ts @@ -0,0 +1,24 @@ +import EAMWorkOrderAuthServiceBase from './eamwork-order-auth-service-base'; + + +/** + * 工单权限服务对象 + * + * @export + * @class EAMWorkOrderAuthService + * @extends {EAMWorkOrderAuthServiceBase} + */ +export default class EAMWorkOrderAuthService extends EAMWorkOrderAuthServiceBase { + + /** + * Creates an instance of EAMWorkOrderAuthService. + * + * @param {*} [opts={}] + * @memberof EAMWorkOrderAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service-base.ts b/app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service-base.ts new file mode 100644 index 0000000..994fc93 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 工单状态权限服务对象基类 + * + * @export + * @class EAMWOStateAuthServiceBase + * @extends {AuthService} + */ +export default class EAMWOStateAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMWOStateAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMWOStateAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMWOStateAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service.ts b/app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service.ts new file mode 100644 index 0000000..04d02b0 --- /dev/null +++ b/app_AssetManagement/src/authservice/eamwostate/eamwostate-auth-service.ts @@ -0,0 +1,24 @@ +import EAMWOStateAuthServiceBase from './eamwostate-auth-service-base'; + + +/** + * 工单状态权限服务对象 + * + * @export + * @class EAMWOStateAuthService + * @extends {EAMWOStateAuthServiceBase} + */ +export default class EAMWOStateAuthService extends EAMWOStateAuthServiceBase { + + /** + * Creates an instance of EAMWOStateAuthService. + * + * @param {*} [opts={}] + * @memberof EAMWOStateAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service-base.ts b/app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service-base.ts new file mode 100644 index 0000000..ff6cc2e --- /dev/null +++ b/app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 工单类型权限服务对象基类 + * + * @export + * @class EAMWOTypeAuthServiceBase + * @extends {AuthService} + */ +export default class EAMWOTypeAuthServiceBase extends AuthService { + + /** + * Creates an instance of EAMWOTypeAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof EAMWOTypeAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof EAMWOTypeAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service.ts b/app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service.ts new file mode 100644 index 0000000..f738e4f --- /dev/null +++ b/app_AssetManagement/src/authservice/eamwotype/eamwotype-auth-service.ts @@ -0,0 +1,24 @@ +import EAMWOTypeAuthServiceBase from './eamwotype-auth-service-base'; + + +/** + * 工单类型权限服务对象 + * + * @export + * @class EAMWOTypeAuthService + * @extends {EAMWOTypeAuthServiceBase} + */ +export default class EAMWOTypeAuthService extends EAMWOTypeAuthServiceBase { + + /** + * Creates an instance of EAMWOTypeAuthService. + * + * @param {*} [opts={}] + * @memberof EAMWOTypeAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/woorigin/woorigin-auth-service-base.ts b/app_AssetManagement/src/authservice/woorigin/woorigin-auth-service-base.ts new file mode 100644 index 0000000..6972d5c --- /dev/null +++ b/app_AssetManagement/src/authservice/woorigin/woorigin-auth-service-base.ts @@ -0,0 +1,37 @@ +import AuthService from '../auth-service'; + +/** + * 工单来源权限服务对象基类 + * + * @export + * @class WOOriginAuthServiceBase + * @extends {AuthService} + */ +export default class WOOriginAuthServiceBase extends AuthService { + + /** + * Creates an instance of WOOriginAuthServiceBase. + * + * @param {*} [opts={}] + * @memberof WOOriginAuthServiceBase + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 根据当前数据获取实体操作标识 + * + * @param {*} mainSateOPPrivs 传入数据操作标识 + * @returns {any} + * @memberof WOOriginAuthServiceBase + */ + public getOPPrivs(mainSateOPPrivs:any):any{ + let curDefaultOPPrivs:any = JSON.parse(JSON.stringify(this.defaultOPPrivs)); + if(mainSateOPPrivs){ + Object.assign(curDefaultOPPrivs,mainSateOPPrivs); + } + return curDefaultOPPrivs; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/authservice/woorigin/woorigin-auth-service.ts b/app_AssetManagement/src/authservice/woorigin/woorigin-auth-service.ts new file mode 100644 index 0000000..2e19b2e --- /dev/null +++ b/app_AssetManagement/src/authservice/woorigin/woorigin-auth-service.ts @@ -0,0 +1,24 @@ +import WOOriginAuthServiceBase from './woorigin-auth-service-base'; + + +/** + * 工单来源权限服务对象 + * + * @export + * @class WOOriginAuthService + * @extends {WOOriginAuthServiceBase} + */ +export default class WOOriginAuthService extends WOOriginAuthServiceBase { + + /** + * Creates an instance of WOOriginAuthService. + * + * @param {*} [opts={}] + * @memberof WOOriginAuthService + */ + constructor(opts: any = {}) { + super(opts); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/codelist/sys-operator.ts b/app_AssetManagement/src/codelist/sys-operator.ts new file mode 100644 index 0000000..b83b86b --- /dev/null +++ b/app_AssetManagement/src/codelist/sys-operator.ts @@ -0,0 +1,105 @@ +/** + * 代码表--云系统操作者 + * + * @export + * @class SysOperator + */ +export default class SysOperator { + + /** + * 是否启用缓存 + * + * @type boolean + * @memberof SysOperator + */ + public isEnableCache:boolean = true; + + /** + * 过期时间 + * + * @type any + * @memberof SysOperator + */ + public expirationTime:any; + + /** + * 缓存超长时长 + * + * @type any + * @memberof SysOperator + */ + public cacheTimeout:any = -1; + + /** + * 代码表模型对象 + * + * @type any + * @memberof SysOperator + */ + public codelistModel:any = { + codelistid:"SysOperator" + }; + + /** + * 自定义参数集合 + * + * @type any + * @memberof SysOperator + */ + public userParamNames:any ={ + } + + /** + * 查询参数集合 + * + * @type any + * @memberof SysOperator + */ + public queryParamNames:any ={ + } + + + + /** + * 获取数据项 + * + * @param {*} data + * @param {boolean} [isloading] + * @returns {Promise} + * @memberof SysOperator + */ + public getItems(data: any={}, isloading?: boolean): Promise { + return Promise.reject([]); + } + + /** + * 处理查询参数 + * @param data 传入data + * @memberof SysOperator + */ + public handleQueryParam(data:any){ + let tempData:any = data?JSON.parse(JSON.stringify(data)):{}; + if(this.userParamNames && Object.keys(this.userParamNames).length >0){ + Object.keys(this.userParamNames).forEach((name: string) => { + if (!name) { + return; + } + let value: string | null = this.userParamNames[name]; + if (value && value.startsWith('%') && value.endsWith('%')) { + const key = value.substring(1, value.length - 1); + if (this.codelistModel && this.codelistModel.hasOwnProperty(key)) { + value = (this.codelistModel[key] !== null && this.codelistModel[key] !== undefined) ? this.codelistModel[key] : null; + } else { + value = null; + } + } + Object.assign(tempData, { [name]: value }); + }); + } + Object.assign(tempData,{page: 0, size: 1000}); + if(this.queryParamNames && Object.keys(this.queryParamNames).length > 0){ + Object.assign(tempData,this.queryParamNames); + } + return tempData; + } +} diff --git a/app_AssetManagement/src/components/404/404.less b/app_AssetManagement/src/components/404/404.less new file mode 100644 index 0000000..9856866 --- /dev/null +++ b/app_AssetManagement/src/components/404/404.less @@ -0,0 +1,27 @@ +html, body { + height: 100%; +} + +.app-error-view { + height: 100%; + width: 100%; + .app-error-container { + height: 380px; + width: 670px; + position: absolute; + top: calc((100% - 400px) / 2); + left: calc((100% - 670px) / 2); + display: flex; + align-items: center; + .error-text { + padding-left: 20px; + .error-text1 { + font-size: 20px; + margin-bottom: 20px; + } + .error-text2 { + font-size: 14px; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/404/404.vue b/app_AssetManagement/src/components/404/404.vue new file mode 100644 index 0000000..6643d82 --- /dev/null +++ b/app_AssetManagement/src/components/404/404.vue @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/500/500.less b/app_AssetManagement/src/components/500/500.less new file mode 100644 index 0000000..a4482c0 --- /dev/null +++ b/app_AssetManagement/src/components/500/500.less @@ -0,0 +1,26 @@ +html, body { + height: 100%; +} +.app-error-view { + height: 100%; + width: 100%; + .app-error-container { + height: 380px; + width: 670px; + position: absolute; + top: calc((100% - 400px) / 2); + left: calc((100% - 670px) / 2); + display: flex; + align-items: center; + .error-text { + padding-left: 20px; + .error-text1 { + font-size: 20px; + margin-bottom: 20px; + } + .error-text2 { + font-size: 14px; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/500/500.vue b/app_AssetManagement/src/components/500/500.vue new file mode 100644 index 0000000..b1c2db3 --- /dev/null +++ b/app_AssetManagement/src/components/500/500.vue @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-actionbar/app-actionbar.less b/app_AssetManagement/src/components/app-actionbar/app-actionbar.less new file mode 100644 index 0000000..217cd48 --- /dev/null +++ b/app_AssetManagement/src/components/app-actionbar/app-actionbar.less @@ -0,0 +1,23 @@ +.app-actionbar { + display: flex; + justify-content: center; + align-items: center; + flex-wrap: wrap; + background: var(--view-button-background-color); + border-radius: 5px; + + .app-actionbar-item { + + >.ivu-btn.ivu-btn-text { + color: var(--view-button-color); + } + + >.ivu-btn.ivu-btn-text:hover { + color: var(--view-button-background-color-active); + } + } + + .app-actionbar-item:nth-child(n + 2) { + border-left: 1px solid var(--app-dividing-line-color-bright); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-actionbar/app-actionbar.vue b/app_AssetManagement/src/components/app-actionbar/app-actionbar.vue new file mode 100644 index 0000000..692d597 --- /dev/null +++ b/app_AssetManagement/src/components/app-actionbar/app-actionbar.vue @@ -0,0 +1,49 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-address-selection/app-address-selection.less b/app_AssetManagement/src/components/app-address-selection/app-address-selection.less new file mode 100644 index 0000000..e69de29 diff --git a/app_AssetManagement/src/components/app-address-selection/app-address-selection.vue b/app_AssetManagement/src/components/app-address-selection/app-address-selection.vue new file mode 100644 index 0000000..d6287f3 --- /dev/null +++ b/app_AssetManagement/src/components/app-address-selection/app-address-selection.vue @@ -0,0 +1,98 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-address-selection/city_code.ts b/app_AssetManagement/src/components/app-address-selection/city_code.ts new file mode 100644 index 0000000..35df0d2 --- /dev/null +++ b/app_AssetManagement/src/components/app-address-selection/city_code.ts @@ -0,0 +1,14036 @@ +export const cityCode = [{ + "name": "北京市", + "code": "110000", + "city": [{ + "name": "市辖区", + "code": "110100", + "area": [{ + "name": "东城区", + "code": "110101" + }, + { + "name": "西城区", + "code": "110102" + }, + { + "name": "朝阳区", + "code": "110105" + }, + { + "name": "丰台区", + "code": "110106" + }, + { + "name": "石景山区", + "code": "110107" + }, + { + "name": "海淀区", + "code": "110108" + }, + { + "name": "门头沟区", + "code": "110109" + }, + { + "name": "房山区", + "code": "110111" + }, + { + "name": "通州区", + "code": "110112" + }, + { + "name": "顺义区", + "code": "110113" + }, + { + "name": "昌平区", + "code": "110114" + }, + { + "name": "大兴区", + "code": "110115" + }, + { + "name": "怀柔区", + "code": "110116" + }, + { + "name": "平谷区", + "code": "110117" + }, + { + "name": "密云区", + "code": "110118" + }, + { + "name": "延庆区", + "code": "110119" + }] + }] +}, +{ + "name": "天津市", + "code": "120000", + "city": [{ + "name": "市辖区", + "code": "120100", + "area": [{ + "name": "和平区", + "code": "120101" + }, + { + "name": "河东区", + "code": "120102" + }, + { + "name": "河西区", + "code": "120103" + }, + { + "name": "南开区", + "code": "120104" + }, + { + "name": "河北区", + "code": "120105" + }, + { + "name": "红桥区", + "code": "120106" + }, + { + "name": "东丽区", + "code": "120110" + }, + { + "name": "西青区", + "code": "120111" + }, + { + "name": "津南区", + "code": "120112" + }, + { + "name": "北辰区", + "code": "120113" + }, + { + "name": "武清区", + "code": "120114" + }, + { + "name": "宝坻区", + "code": "120115" + }, + { + "name": "滨海新区", + "code": "120116" + }, + { + "name": "宁河区", + "code": "120117" + }, + { + "name": "静海区", + "code": "120118" + }, + { + "name": "蓟州区", + "code": "120119" + }] + }] +}, +{ + "name": "河北省", + "code": "130000", + "city": [{ + "name": "石家庄市", + "code": "130100", + "area": [{ + "name": "市辖区", + "code": "130101" + }, + { + "name": "长安区", + "code": "130102" + }, + { + "name": "桥西区", + "code": "130104" + }, + { + "name": "新华区", + "code": "130105" + }, + { + "name": "井陉矿区", + "code": "130107" + }, + { + "name": "裕华区", + "code": "130108" + }, + { + "name": "藁城区", + "code": "130109" + }, + { + "name": "鹿泉区", + "code": "130110" + }, + { + "name": "栾城区", + "code": "130111" + }, + { + "name": "井陉县", + "code": "130121" + }, + { + "name": "正定县", + "code": "130123" + }, + { + "name": "行唐县", + "code": "130125" + }, + { + "name": "灵寿县", + "code": "130126" + }, + { + "name": "高邑县", + "code": "130127" + }, + { + "name": "深泽县", + "code": "130128" + }, + { + "name": "赞皇县", + "code": "130129" + }, + { + "name": "无极县", + "code": "130130" + }, + { + "name": "平山县", + "code": "130131" + }, + { + "name": "元氏县", + "code": "130132" + }, + { + "name": "赵县", + "code": "130133" + }, + { + "name": "晋州市", + "code": "130183" + }, + { + "name": "新乐市", + "code": "130184" + }] + }, + { + "name": "唐山市", + "code": "130200", + "area": [{ + "name": "市辖区", + "code": "130201" + }, + { + "name": "路南区", + "code": "130202" + }, + { + "name": "路北区", + "code": "130203" + }, + { + "name": "古冶区", + "code": "130204" + }, + { + "name": "开平区", + "code": "130205" + }, + { + "name": "丰南区", + "code": "130207" + }, + { + "name": "丰润区", + "code": "130208" + }, + { + "name": "曹妃甸区", + "code": "130209" + }, + { + "name": "滦县", + "code": "130223" + }, + { + "name": "滦南县", + "code": "130224" + }, + { + "name": "乐亭县", + "code": "130225" + }, + { + "name": "迁西县", + "code": "130227" + }, + { + "name": "玉田县", + "code": "130229" + }, + { + "name": "遵化市", + "code": "130281" + }, + { + "name": "迁安市", + "code": "130283" + }] + }, + { + "name": "秦皇岛市", + "code": "130300", + "area": [{ + "name": "市辖区", + "code": "130301" + }, + { + "name": "海港区", + "code": "130302" + }, + { + "name": "山海关区", + "code": "130303" + }, + { + "name": "北戴河区", + "code": "130304" + }, + { + "name": "抚宁区", + "code": "130306" + }, + { + "name": "青龙满族自治县", + "code": "130321" + }, + { + "name": "昌黎县", + "code": "130322" + }, + { + "name": "卢龙县", + "code": "130324" + }] + }, + { + "name": "邯郸市", + "code": "130400", + "area": [{ + "name": "市辖区", + "code": "130401" + }, + { + "name": "邯山区", + "code": "130402" + }, + { + "name": "丛台区", + "code": "130403" + }, + { + "name": "复兴区", + "code": "130404" + }, + { + "name": "峰峰矿区", + "code": "130406" + }, + { + "name": "邯郸县", + "code": "130421" + }, + { + "name": "临漳县", + "code": "130423" + }, + { + "name": "成安县", + "code": "130424" + }, + { + "name": "大名县", + "code": "130425" + }, + { + "name": "涉县", + "code": "130426" + }, + { + "name": "磁县", + "code": "130427" + }, + { + "name": "肥乡县", + "code": "130428" + }, + { + "name": "永年县", + "code": "130429" + }, + { + "name": "邱县", + "code": "130430" + }, + { + "name": "鸡泽县", + "code": "130431" + }, + { + "name": "广平县", + "code": "130432" + }, + { + "name": "馆陶县", + "code": "130433" + }, + { + "name": "魏县", + "code": "130434" + }, + { + "name": "曲周县", + "code": "130435" + }, + { + "name": "武安市", + "code": "130481" + }] + }, + { + "name": "邢台市", + "code": "130500", + "area": [{ + "name": "市辖区", + "code": "130501" + }, + { + "name": "桥东区", + "code": "130502" + }, + { + "name": "桥西区", + "code": "130503" + }, + { + "name": "邢台县", + "code": "130521" + }, + { + "name": "临城县", + "code": "130522" + }, + { + "name": "内丘县", + "code": "130523" + }, + { + "name": "柏乡县", + "code": "130524" + }, + { + "name": "隆尧县", + "code": "130525" + }, + { + "name": "任县", + "code": "130526" + }, + { + "name": "南和县", + "code": "130527" + }, + { + "name": "宁晋县", + "code": "130528" + }, + { + "name": "巨鹿县", + "code": "130529" + }, + { + "name": "新河县", + "code": "130530" + }, + { + "name": "广宗县", + "code": "130531" + }, + { + "name": "平乡县", + "code": "130532" + }, + { + "name": "威县", + "code": "130533" + }, + { + "name": "清河县", + "code": "130534" + }, + { + "name": "临西县", + "code": "130535" + }, + { + "name": "南宫市", + "code": "130581" + }, + { + "name": "沙河市", + "code": "130582" + }] + }, + { + "name": "保定市", + "code": "130600", + "area": [{ + "name": "市辖区", + "code": "130601" + }, + { + "name": "竞秀区", + "code": "130602" + }, + { + "name": "莲池区", + "code": "130606" + }, + { + "name": "满城区", + "code": "130607" + }, + { + "name": "清苑区", + "code": "130608" + }, + { + "name": "徐水区", + "code": "130609" + }, + { + "name": "涞水县", + "code": "130623" + }, + { + "name": "阜平县", + "code": "130624" + }, + { + "name": "定兴县", + "code": "130626" + }, + { + "name": "唐县", + "code": "130627" + }, + { + "name": "高阳县", + "code": "130628" + }, + { + "name": "容城县", + "code": "130629" + }, + { + "name": "涞源县", + "code": "130630" + }, + { + "name": "望都县", + "code": "130631" + }, + { + "name": "安新县", + "code": "130632" + }, + { + "name": "易县", + "code": "130633" + }, + { + "name": "曲阳县", + "code": "130634" + }, + { + "name": "蠡县", + "code": "130635" + }, + { + "name": "顺平县", + "code": "130636" + }, + { + "name": "博野县", + "code": "130637" + }, + { + "name": "雄县", + "code": "130638" + }, + { + "name": "涿州市", + "code": "130681" + }, + { + "name": "安国市", + "code": "130683" + }, + { + "name": "高碑店市", + "code": "130684" + }] + }, + { + "name": "张家口市", + "code": "130700", + "area": [{ + "name": "市辖区", + "code": "130701" + }, + { + "name": "桥东区", + "code": "130702" + }, + { + "name": "桥西区", + "code": "130703" + }, + { + "name": "宣化区", + "code": "130705" + }, + { + "name": "下花园区", + "code": "130706" + }, + { + "name": "万全区", + "code": "130708" + }, + { + "name": "崇礼区", + "code": "130709" + }, + { + "name": "张北县", + "code": "130722" + }, + { + "name": "康保县", + "code": "130723" + }, + { + "name": "沽源县", + "code": "130724" + }, + { + "name": "尚义县", + "code": "130725" + }, + { + "name": "蔚县", + "code": "130726" + }, + { + "name": "阳原县", + "code": "130727" + }, + { + "name": "怀安县", + "code": "130728" + }, + { + "name": "怀来县", + "code": "130730" + }, + { + "name": "涿鹿县", + "code": "130731" + }, + { + "name": "赤城县", + "code": "130732" + }] + }, + { + "name": "承德市", + "code": "130800", + "area": [{ + "name": "市辖区", + "code": "130801" + }, + { + "name": "双桥区", + "code": "130802" + }, + { + "name": "双滦区", + "code": "130803" + }, + { + "name": "鹰手营子矿区", + "code": "130804" + }, + { + "name": "承德县", + "code": "130821" + }, + { + "name": "兴隆县", + "code": "130822" + }, + { + "name": "平泉县", + "code": "130823" + }, + { + "name": "滦平县", + "code": "130824" + }, + { + "name": "隆化县", + "code": "130825" + }, + { + "name": "丰宁满族自治县", + "code": "130826" + }, + { + "name": "宽城满族自治县", + "code": "130827" + }, + { + "name": "围场满族蒙古族自治县", + "code": "130828" + }] + }, + { + "name": "沧州市", + "code": "130900", + "area": [{ + "name": "市辖区", + "code": "130901" + }, + { + "name": "新华区", + "code": "130902" + }, + { + "name": "运河区", + "code": "130903" + }, + { + "name": "沧县", + "code": "130921" + }, + { + "name": "青县", + "code": "130922" + }, + { + "name": "东光县", + "code": "130923" + }, + { + "name": "海兴县", + "code": "130924" + }, + { + "name": "盐山县", + "code": "130925" + }, + { + "name": "肃宁县", + "code": "130926" + }, + { + "name": "南皮县", + "code": "130927" + }, + { + "name": "吴桥县", + "code": "130928" + }, + { + "name": "献县", + "code": "130929" + }, + { + "name": "孟村回族自治县", + "code": "130930" + }, + { + "name": "泊头市", + "code": "130981" + }, + { + "name": "任丘市", + "code": "130982" + }, + { + "name": "黄骅市", + "code": "130983" + }, + { + "name": "河间市", + "code": "130984" + }] + }, + { + "name": "廊坊市", + "code": "131000", + "area": [{ + "name": "市辖区", + "code": "131001" + }, + { + "name": "安次区", + "code": "131002" + }, + { + "name": "广阳区", + "code": "131003" + }, + { + "name": "固安县", + "code": "131022" + }, + { + "name": "永清县", + "code": "131023" + }, + { + "name": "香河县", + "code": "131024" + }, + { + "name": "大城县", + "code": "131025" + }, + { + "name": "文安县", + "code": "131026" + }, + { + "name": "大厂回族自治县", + "code": "131028" + }, + { + "name": "霸州市", + "code": "131081" + }, + { + "name": "三河市", + "code": "131082" + }] + }, + { + "name": "衡水市", + "code": "131100", + "area": [{ + "name": "市辖区", + "code": "131101" + }, + { + "name": "桃城区", + "code": "131102" + }, + { + "name": "冀州区", + "code": "131103" + }, + { + "name": "枣强县", + "code": "131121" + }, + { + "name": "武邑县", + "code": "131122" + }, + { + "name": "武强县", + "code": "131123" + }, + { + "name": "饶阳县", + "code": "131124" + }, + { + "name": "安平县", + "code": "131125" + }, + { + "name": "故城县", + "code": "131126" + }, + { + "name": "景县", + "code": "131127" + }, + { + "name": "阜城县", + "code": "131128" + }, + { + "name": "深州市", + "code": "131182" + }] + }, + { + "name": "省直辖县级行政区划", + "code": "139000", + "area": [{ + "name": "定州市", + "code": "139001" + }, + { + "name": "辛集市", + "code": "139002" + }] + }] +}, +{ + "name": "山西省", + "code": "140000", + "city": [{ + "name": "太原市", + "code": "140100", + "area": [{ + "name": "市辖区", + "code": "140101" + }, + { + "name": "小店区", + "code": "140105" + }, + { + "name": "迎泽区", + "code": "140106" + }, + { + "name": "杏花岭区", + "code": "140107" + }, + { + "name": "尖草坪区", + "code": "140108" + }, + { + "name": "万柏林区", + "code": "140109" + }, + { + "name": "晋源区", + "code": "140110" + }, + { + "name": "清徐县", + "code": "140121" + }, + { + "name": "阳曲县", + "code": "140122" + }, + { + "name": "娄烦县", + "code": "140123" + }, + { + "name": "古交市", + "code": "140181" + }] + }, + { + "name": "大同市", + "code": "140200", + "area": [{ + "name": "市辖区", + "code": "140201" + }, + { + "name": "城区", + "code": "140202" + }, + { + "name": "矿区", + "code": "140203" + }, + { + "name": "南郊区", + "code": "140211" + }, + { + "name": "新荣区", + "code": "140212" + }, + { + "name": "阳高县", + "code": "140221" + }, + { + "name": "天镇县", + "code": "140222" + }, + { + "name": "广灵县", + "code": "140223" + }, + { + "name": "灵丘县", + "code": "140224" + }, + { + "name": "浑源县", + "code": "140225" + }, + { + "name": "左云县", + "code": "140226" + }, + { + "name": "大同县", + "code": "140227" + }] + }, + { + "name": "阳泉市", + "code": "140300", + "area": [{ + "name": "市辖区", + "code": "140301" + }, + { + "name": "城区", + "code": "140302" + }, + { + "name": "矿区", + "code": "140303" + }, + { + "name": "郊区", + "code": "140311" + }, + { + "name": "平定县", + "code": "140321" + }, + { + "name": "盂县", + "code": "140322" + }] + }, + { + "name": "长治市", + "code": "140400", + "area": [{ + "name": "市辖区", + "code": "140401" + }, + { + "name": "城区", + "code": "140402" + }, + { + "name": "郊区", + "code": "140411" + }, + { + "name": "长治县", + "code": "140421" + }, + { + "name": "襄垣县", + "code": "140423" + }, + { + "name": "屯留县", + "code": "140424" + }, + { + "name": "平顺县", + "code": "140425" + }, + { + "name": "黎城县", + "code": "140426" + }, + { + "name": "壶关县", + "code": "140427" + }, + { + "name": "长子县", + "code": "140428" + }, + { + "name": "武乡县", + "code": "140429" + }, + { + "name": "沁县", + "code": "140430" + }, + { + "name": "沁源县", + "code": "140431" + }, + { + "name": "潞城市", + "code": "140481" + }] + }, + { + "name": "晋城市", + "code": "140500", + "area": [{ + "name": "市辖区", + "code": "140501" + }, + { + "name": "城区", + "code": "140502" + }, + { + "name": "沁水县", + "code": "140521" + }, + { + "name": "阳城县", + "code": "140522" + }, + { + "name": "陵川县", + "code": "140524" + }, + { + "name": "泽州县", + "code": "140525" + }, + { + "name": "高平市", + "code": "140581" + }] + }, + { + "name": "朔州市", + "code": "140600", + "area": [{ + "name": "市辖区", + "code": "140601" + }, + { + "name": "朔城区", + "code": "140602" + }, + { + "name": "平鲁区", + "code": "140603" + }, + { + "name": "山阴县", + "code": "140621" + }, + { + "name": "应县", + "code": "140622" + }, + { + "name": "右玉县", + "code": "140623" + }, + { + "name": "怀仁县", + "code": "140624" + }] + }, + { + "name": "晋中市", + "code": "140700", + "area": [{ + "name": "市辖区", + "code": "140701" + }, + { + "name": "榆次区", + "code": "140702" + }, + { + "name": "榆社县", + "code": "140721" + }, + { + "name": "左权县", + "code": "140722" + }, + { + "name": "和顺县", + "code": "140723" + }, + { + "name": "昔阳县", + "code": "140724" + }, + { + "name": "寿阳县", + "code": "140725" + }, + { + "name": "太谷县", + "code": "140726" + }, + { + "name": "祁县", + "code": "140727" + }, + { + "name": "平遥县", + "code": "140728" + }, + { + "name": "灵石县", + "code": "140729" + }, + { + "name": "介休市", + "code": "140781" + }] + }, + { + "name": "运城市", + "code": "140800", + "area": [{ + "name": "市辖区", + "code": "140801" + }, + { + "name": "盐湖区", + "code": "140802" + }, + { + "name": "临猗县", + "code": "140821" + }, + { + "name": "万荣县", + "code": "140822" + }, + { + "name": "闻喜县", + "code": "140823" + }, + { + "name": "稷山县", + "code": "140824" + }, + { + "name": "新绛县", + "code": "140825" + }, + { + "name": "绛县", + "code": "140826" + }, + { + "name": "垣曲县", + "code": "140827" + }, + { + "name": "夏县", + "code": "140828" + }, + { + "name": "平陆县", + "code": "140829" + }, + { + "name": "芮城县", + "code": "140830" + }, + { + "name": "永济市", + "code": "140881" + }, + { + "name": "河津市", + "code": "140882" + }] + }, + { + "name": "忻州市", + "code": "140900", + "area": [{ + "name": "市辖区", + "code": "140901" + }, + { + "name": "忻府区", + "code": "140902" + }, + { + "name": "定襄县", + "code": "140921" + }, + { + "name": "五台县", + "code": "140922" + }, + { + "name": "代县", + "code": "140923" + }, + { + "name": "繁峙县", + "code": "140924" + }, + { + "name": "宁武县", + "code": "140925" + }, + { + "name": "静乐县", + "code": "140926" + }, + { + "name": "神池县", + "code": "140927" + }, + { + "name": "五寨县", + "code": "140928" + }, + { + "name": "岢岚县", + "code": "140929" + }, + { + "name": "河曲县", + "code": "140930" + }, + { + "name": "保德县", + "code": "140931" + }, + { + "name": "偏关县", + "code": "140932" + }, + { + "name": "原平市", + "code": "140981" + }] + }, + { + "name": "临汾市", + "code": "141000", + "area": [{ + "name": "市辖区", + "code": "141001" + }, + { + "name": "尧都区", + "code": "141002" + }, + { + "name": "曲沃县", + "code": "141021" + }, + { + "name": "翼城县", + "code": "141022" + }, + { + "name": "襄汾县", + "code": "141023" + }, + { + "name": "洪洞县", + "code": "141024" + }, + { + "name": "古县", + "code": "141025" + }, + { + "name": "安泽县", + "code": "141026" + }, + { + "name": "浮山县", + "code": "141027" + }, + { + "name": "吉县", + "code": "141028" + }, + { + "name": "乡宁县", + "code": "141029" + }, + { + "name": "大宁县", + "code": "141030" + }, + { + "name": "隰县", + "code": "141031" + }, + { + "name": "永和县", + "code": "141032" + }, + { + "name": "蒲县", + "code": "141033" + }, + { + "name": "汾西县", + "code": "141034" + }, + { + "name": "侯马市", + "code": "141081" + }, + { + "name": "霍州市", + "code": "141082" + }] + }, + { + "name": "吕梁市", + "code": "141100", + "area": [{ + "name": "市辖区", + "code": "141101" + }, + { + "name": "离石区", + "code": "141102" + }, + { + "name": "文水县", + "code": "141121" + }, + { + "name": "交城县", + "code": "141122" + }, + { + "name": "兴县", + "code": "141123" + }, + { + "name": "临县", + "code": "141124" + }, + { + "name": "柳林县", + "code": "141125" + }, + { + "name": "石楼县", + "code": "141126" + }, + { + "name": "岚县", + "code": "141127" + }, + { + "name": "方山县", + "code": "141128" + }, + { + "name": "中阳县", + "code": "141129" + }, + { + "name": "交口县", + "code": "141130" + }, + { + "name": "孝义市", + "code": "141181" + }, + { + "name": "汾阳市", + "code": "141182" + }] + }] +}, +{ + "name": "内蒙古自治区", + "code": "150000", + "city": [{ + "name": "呼和浩特市", + "code": "150100", + "area": [{ + "name": "市辖区", + "code": "150101" + }, + { + "name": "新城区", + "code": "150102" + }, + { + "name": "回民区", + "code": "150103" + }, + { + "name": "玉泉区", + "code": "150104" + }, + { + "name": "赛罕区", + "code": "150105" + }, + { + "name": "土默特左旗", + "code": "150121" + }, + { + "name": "托克托县", + "code": "150122" + }, + { + "name": "和林格尔县", + "code": "150123" + }, + { + "name": "清水河县", + "code": "150124" + }, + { + "name": "武川县", + "code": "150125" + }] + }, + { + "name": "包头市", + "code": "150200", + "area": [{ + "name": "市辖区", + "code": "150201" + }, + { + "name": "东河区", + "code": "150202" + }, + { + "name": "昆都仑区", + "code": "150203" + }, + { + "name": "青山区", + "code": "150204" + }, + { + "name": "石拐区", + "code": "150205" + }, + { + "name": "白云鄂博矿区", + "code": "150206" + }, + { + "name": "九原区", + "code": "150207" + }, + { + "name": "土默特右旗", + "code": "150221" + }, + { + "name": "固阳县", + "code": "150222" + }, + { + "name": "达尔罕茂明安联合旗", + "code": "150223" + }] + }, + { + "name": "乌海市", + "code": "150300", + "area": [{ + "name": "市辖区", + "code": "150301" + }, + { + "name": "海勃湾区", + "code": "150302" + }, + { + "name": "海南区", + "code": "150303" + }, + { + "name": "乌达区", + "code": "150304" + }] + }, + { + "name": "赤峰市", + "code": "150400", + "area": [{ + "name": "市辖区", + "code": "150401" + }, + { + "name": "红山区", + "code": "150402" + }, + { + "name": "元宝山区", + "code": "150403" + }, + { + "name": "松山区", + "code": "150404" + }, + { + "name": "阿鲁科尔沁旗", + "code": "150421" + }, + { + "name": "巴林左旗", + "code": "150422" + }, + { + "name": "巴林右旗", + "code": "150423" + }, + { + "name": "林西县", + "code": "150424" + }, + { + "name": "克什克腾旗", + "code": "150425" + }, + { + "name": "翁牛特旗", + "code": "150426" + }, + { + "name": "喀喇沁旗", + "code": "150428" + }, + { + "name": "宁城县", + "code": "150429" + }, + { + "name": "敖汉旗", + "code": "150430" + }] + }, + { + "name": "通辽市", + "code": "150500", + "area": [{ + "name": "市辖区", + "code": "150501" + }, + { + "name": "科尔沁区", + "code": "150502" + }, + { + "name": "科尔沁左翼中旗", + "code": "150521" + }, + { + "name": "科尔沁左翼后旗", + "code": "150522" + }, + { + "name": "开鲁县", + "code": "150523" + }, + { + "name": "库伦旗", + "code": "150524" + }, + { + "name": "奈曼旗", + "code": "150525" + }, + { + "name": "扎鲁特旗", + "code": "150526" + }, + { + "name": "霍林郭勒市", + "code": "150581" + }] + }, + { + "name": "鄂尔多斯市", + "code": "150600", + "area": [{ + "name": "市辖区", + "code": "150601" + }, + { + "name": "东胜区", + "code": "150602" + }, + { + "name": "康巴什区", + "code": "150603" + }, + { + "name": "达拉特旗", + "code": "150621" + }, + { + "name": "准格尔旗", + "code": "150622" + }, + { + "name": "鄂托克前旗", + "code": "150623" + }, + { + "name": "鄂托克旗", + "code": "150624" + }, + { + "name": "杭锦旗", + "code": "150625" + }, + { + "name": "乌审旗", + "code": "150626" + }, + { + "name": "伊金霍洛旗", + "code": "150627" + }] + }, + { + "name": "呼伦贝尔市", + "code": "150700", + "area": [{ + "name": "市辖区", + "code": "150701" + }, + { + "name": "海拉尔区", + "code": "150702" + }, + { + "name": "扎赉诺尔区", + "code": "150703" + }, + { + "name": "阿荣旗", + "code": "150721" + }, + { + "name": "莫力达瓦达斡尔族自治旗", + "code": "150722" + }, + { + "name": "鄂伦春自治旗", + "code": "150723" + }, + { + "name": "鄂温克族自治旗", + "code": "150724" + }, + { + "name": "陈巴尔虎旗", + "code": "150725" + }, + { + "name": "新巴尔虎左旗", + "code": "150726" + }, + { + "name": "新巴尔虎右旗", + "code": "150727" + }, + { + "name": "满洲里市", + "code": "150781" + }, + { + "name": "牙克石市", + "code": "150782" + }, + { + "name": "扎兰屯市", + "code": "150783" + }, + { + "name": "额尔古纳市", + "code": "150784" + }, + { + "name": "根河市", + "code": "150785" + }] + }, + { + "name": "巴彦淖尔市", + "code": "150800", + "area": [{ + "name": "市辖区", + "code": "150801" + }, + { + "name": "临河区", + "code": "150802" + }, + { + "name": "五原县", + "code": "150821" + }, + { + "name": "磴口县", + "code": "150822" + }, + { + "name": "乌拉特前旗", + "code": "150823" + }, + { + "name": "乌拉特中旗", + "code": "150824" + }, + { + "name": "乌拉特后旗", + "code": "150825" + }, + { + "name": "杭锦后旗", + "code": "150826" + }] + }, + { + "name": "乌兰察布市", + "code": "150900", + "area": [{ + "name": "市辖区", + "code": "150901" + }, + { + "name": "集宁区", + "code": "150902" + }, + { + "name": "卓资县", + "code": "150921" + }, + { + "name": "化德县", + "code": "150922" + }, + { + "name": "商都县", + "code": "150923" + }, + { + "name": "兴和县", + "code": "150924" + }, + { + "name": "凉城县", + "code": "150925" + }, + { + "name": "察哈尔右翼前旗", + "code": "150926" + }, + { + "name": "察哈尔右翼中旗", + "code": "150927" + }, + { + "name": "察哈尔右翼后旗", + "code": "150928" + }, + { + "name": "四子王旗", + "code": "150929" + }, + { + "name": "丰镇市", + "code": "150981" + }] + }, + { + "name": "兴安盟", + "code": "152200", + "area": [{ + "name": "乌兰浩特市", + "code": "152201" + }, + { + "name": "阿尔山市", + "code": "152202" + }, + { + "name": "科尔沁右翼前旗", + "code": "152221" + }, + { + "name": "科尔沁右翼中旗", + "code": "152222" + }, + { + "name": "扎赉特旗", + "code": "152223" + }, + { + "name": "突泉县", + "code": "152224" + }] + }, + { + "name": "锡林郭勒盟", + "code": "152500", + "area": [{ + "name": "二连浩特市", + "code": "152501" + }, + { + "name": "锡林浩特市", + "code": "152502" + }, + { + "name": "阿巴嘎旗", + "code": "152522" + }, + { + "name": "苏尼特左旗", + "code": "152523" + }, + { + "name": "苏尼特右旗", + "code": "152524" + }, + { + "name": "东乌珠穆沁旗", + "code": "152525" + }, + { + "name": "西乌珠穆沁旗", + "code": "152526" + }, + { + "name": "太仆寺旗", + "code": "152527" + }, + { + "name": "镶黄旗", + "code": "152528" + }, + { + "name": "正镶白旗", + "code": "152529" + }, + { + "name": "正蓝旗", + "code": "152530" + }, + { + "name": "多伦县", + "code": "152531" + }] + }, + { + "name": "阿拉善盟", + "code": "152900", + "area": [{ + "name": "阿拉善左旗", + "code": "152921" + }, + { + "name": "阿拉善右旗", + "code": "152922" + }, + { + "name": "额济纳旗", + "code": "152923" + }] + }] +}, +{ + "name": "辽宁省", + "code": "210000", + "city": [{ + "name": "沈阳市", + "code": "210100", + "area": [{ + "name": "市辖区", + "code": "210101" + }, + { + "name": "和平区", + "code": "210102" + }, + { + "name": "沈河区", + "code": "210103" + }, + { + "name": "大东区", + "code": "210104" + }, + { + "name": "皇姑区", + "code": "210105" + }, + { + "name": "铁西区", + "code": "210106" + }, + { + "name": "苏家屯区", + "code": "210111" + }, + { + "name": "浑南区", + "code": "210112" + }, + { + "name": "沈北新区", + "code": "210113" + }, + { + "name": "于洪区", + "code": "210114" + }, + { + "name": "辽中区", + "code": "210115" + }, + { + "name": "康平县", + "code": "210123" + }, + { + "name": "法库县", + "code": "210124" + }, + { + "name": "新民市", + "code": "210181" + }] + }, + { + "name": "大连市", + "code": "210200", + "area": [{ + "name": "市辖区", + "code": "210201" + }, + { + "name": "中山区", + "code": "210202" + }, + { + "name": "西岗区", + "code": "210203" + }, + { + "name": "沙河口区", + "code": "210204" + }, + { + "name": "甘井子区", + "code": "210211" + }, + { + "name": "旅顺口区", + "code": "210212" + }, + { + "name": "金州区", + "code": "210213" + }, + { + "name": "普兰店区", + "code": "210214" + }, + { + "name": "长海县", + "code": "210224" + }, + { + "name": "瓦房店市", + "code": "210281" + }, + { + "name": "庄河市", + "code": "210283" + }] + }, + { + "name": "鞍山市", + "code": "210300", + "area": [{ + "name": "市辖区", + "code": "210301" + }, + { + "name": "铁东区", + "code": "210302" + }, + { + "name": "铁西区", + "code": "210303" + }, + { + "name": "立山区", + "code": "210304" + }, + { + "name": "千山区", + "code": "210311" + }, + { + "name": "台安县", + "code": "210321" + }, + { + "name": "岫岩满族自治县", + "code": "210323" + }, + { + "name": "海城市", + "code": "210381" + }] + }, + { + "name": "抚顺市", + "code": "210400", + "area": [{ + "name": "市辖区", + "code": "210401" + }, + { + "name": "新抚区", + "code": "210402" + }, + { + "name": "东洲区", + "code": "210403" + }, + { + "name": "望花区", + "code": "210404" + }, + { + "name": "顺城区", + "code": "210411" + }, + { + "name": "抚顺县", + "code": "210421" + }, + { + "name": "新宾满族自治县", + "code": "210422" + }, + { + "name": "清原满族自治县", + "code": "210423" + }] + }, + { + "name": "本溪市", + "code": "210500", + "area": [{ + "name": "市辖区", + "code": "210501" + }, + { + "name": "平山区", + "code": "210502" + }, + { + "name": "溪湖区", + "code": "210503" + }, + { + "name": "明山区", + "code": "210504" + }, + { + "name": "南芬区", + "code": "210505" + }, + { + "name": "本溪满族自治县", + "code": "210521" + }, + { + "name": "桓仁满族自治县", + "code": "210522" + }] + }, + { + "name": "丹东市", + "code": "210600", + "area": [{ + "name": "市辖区", + "code": "210601" + }, + { + "name": "元宝区", + "code": "210602" + }, + { + "name": "振兴区", + "code": "210603" + }, + { + "name": "振安区", + "code": "210604" + }, + { + "name": "宽甸满族自治县", + "code": "210624" + }, + { + "name": "东港市", + "code": "210681" + }, + { + "name": "凤城市", + "code": "210682" + }] + }, + { + "name": "锦州市", + "code": "210700", + "area": [{ + "name": "市辖区", + "code": "210701" + }, + { + "name": "古塔区", + "code": "210702" + }, + { + "name": "凌河区", + "code": "210703" + }, + { + "name": "太和区", + "code": "210711" + }, + { + "name": "黑山县", + "code": "210726" + }, + { + "name": "义县", + "code": "210727" + }, + { + "name": "凌海市", + "code": "210781" + }, + { + "name": "北镇市", + "code": "210782" + }] + }, + { + "name": "营口市", + "code": "210800", + "area": [{ + "name": "市辖区", + "code": "210801" + }, + { + "name": "站前区", + "code": "210802" + }, + { + "name": "西市区", + "code": "210803" + }, + { + "name": "鲅鱼圈区", + "code": "210804" + }, + { + "name": "老边区", + "code": "210811" + }, + { + "name": "盖州市", + "code": "210881" + }, + { + "name": "大石桥市", + "code": "210882" + }] + }, + { + "name": "阜新市", + "code": "210900", + "area": [{ + "name": "市辖区", + "code": "210901" + }, + { + "name": "海州区", + "code": "210902" + }, + { + "name": "新邱区", + "code": "210903" + }, + { + "name": "太平区", + "code": "210904" + }, + { + "name": "清河门区", + "code": "210905" + }, + { + "name": "细河区", + "code": "210911" + }, + { + "name": "阜新蒙古族自治县", + "code": "210921" + }, + { + "name": "彰武县", + "code": "210922" + }] + }, + { + "name": "辽阳市", + "code": "211000", + "area": [{ + "name": "市辖区", + "code": "211001" + }, + { + "name": "白塔区", + "code": "211002" + }, + { + "name": "文圣区", + "code": "211003" + }, + { + "name": "宏伟区", + "code": "211004" + }, + { + "name": "弓长岭区", + "code": "211005" + }, + { + "name": "太子河区", + "code": "211011" + }, + { + "name": "辽阳县", + "code": "211021" + }, + { + "name": "灯塔市", + "code": "211081" + }] + }, + { + "name": "盘锦市", + "code": "211100", + "area": [{ + "name": "市辖区", + "code": "211101" + }, + { + "name": "双台子区", + "code": "211102" + }, + { + "name": "兴隆台区", + "code": "211103" + }, + { + "name": "大洼区", + "code": "211104" + }, + { + "name": "盘山县", + "code": "211122" + }] + }, + { + "name": "铁岭市", + "code": "211200", + "area": [{ + "name": "市辖区", + "code": "211201" + }, + { + "name": "银州区", + "code": "211202" + }, + { + "name": "清河区", + "code": "211204" + }, + { + "name": "铁岭县", + "code": "211221" + }, + { + "name": "西丰县", + "code": "211223" + }, + { + "name": "昌图县", + "code": "211224" + }, + { + "name": "调兵山市", + "code": "211281" + }, + { + "name": "开原市", + "code": "211282" + }] + }, + { + "name": "朝阳市", + "code": "211300", + "area": [{ + "name": "市辖区", + "code": "211301" + }, + { + "name": "双塔区", + "code": "211302" + }, + { + "name": "龙城区", + "code": "211303" + }, + { + "name": "朝阳县", + "code": "211321" + }, + { + "name": "建平县", + "code": "211322" + }, + { + "name": "喀喇沁左翼蒙古族自治县", + "code": "211324" + }, + { + "name": "北票市", + "code": "211381" + }, + { + "name": "凌源市", + "code": "211382" + }] + }, + { + "name": "葫芦岛市", + "code": "211400", + "area": [{ + "name": "市辖区", + "code": "211401" + }, + { + "name": "连山区", + "code": "211402" + }, + { + "name": "龙港区", + "code": "211403" + }, + { + "name": "南票区", + "code": "211404" + }, + { + "name": "绥中县", + "code": "211421" + }, + { + "name": "建昌县", + "code": "211422" + }, + { + "name": "兴城市", + "code": "211481" + }] + }] +}, +{ + "name": "吉林省", + "code": "220000", + "city": [{ + "name": "长春市", + "code": "220100", + "area": [{ + "name": "市辖区", + "code": "220101" + }, + { + "name": "南关区", + "code": "220102" + }, + { + "name": "宽城区", + "code": "220103" + }, + { + "name": "朝阳区", + "code": "220104" + }, + { + "name": "二道区", + "code": "220105" + }, + { + "name": "绿园区", + "code": "220106" + }, + { + "name": "双阳区", + "code": "220112" + }, + { + "name": "九台区", + "code": "220113" + }, + { + "name": "农安县", + "code": "220122" + }, + { + "name": "榆树市", + "code": "220182" + }, + { + "name": "德惠市", + "code": "220183" + }] + }, + { + "name": "吉林市", + "code": "220200", + "area": [{ + "name": "市辖区", + "code": "220201" + }, + { + "name": "昌邑区", + "code": "220202" + }, + { + "name": "龙潭区", + "code": "220203" + }, + { + "name": "船营区", + "code": "220204" + }, + { + "name": "丰满区", + "code": "220211" + }, + { + "name": "永吉县", + "code": "220221" + }, + { + "name": "蛟河市", + "code": "220281" + }, + { + "name": "桦甸市", + "code": "220282" + }, + { + "name": "舒兰市", + "code": "220283" + }, + { + "name": "磐石市", + "code": "220284" + }] + }, + { + "name": "四平市", + "code": "220300", + "area": [{ + "name": "市辖区", + "code": "220301" + }, + { + "name": "铁西区", + "code": "220302" + }, + { + "name": "铁东区", + "code": "220303" + }, + { + "name": "梨树县", + "code": "220322" + }, + { + "name": "伊通满族自治县", + "code": "220323" + }, + { + "name": "公主岭市", + "code": "220381" + }, + { + "name": "双辽市", + "code": "220382" + }] + }, + { + "name": "辽源市", + "code": "220400", + "area": [{ + "name": "市辖区", + "code": "220401" + }, + { + "name": "龙山区", + "code": "220402" + }, + { + "name": "西安区", + "code": "220403" + }, + { + "name": "东丰县", + "code": "220421" + }, + { + "name": "东辽县", + "code": "220422" + }] + }, + { + "name": "通化市", + "code": "220500", + "area": [{ + "name": "市辖区", + "code": "220501" + }, + { + "name": "东昌区", + "code": "220502" + }, + { + "name": "二道江区", + "code": "220503" + }, + { + "name": "通化县", + "code": "220521" + }, + { + "name": "辉南县", + "code": "220523" + }, + { + "name": "柳河县", + "code": "220524" + }, + { + "name": "梅河口市", + "code": "220581" + }, + { + "name": "集安市", + "code": "220582" + }] + }, + { + "name": "白山市", + "code": "220600", + "area": [{ + "name": "市辖区", + "code": "220601" + }, + { + "name": "浑江区", + "code": "220602" + }, + { + "name": "江源区", + "code": "220605" + }, + { + "name": "抚松县", + "code": "220621" + }, + { + "name": "靖宇县", + "code": "220622" + }, + { + "name": "长白朝鲜族自治县", + "code": "220623" + }, + { + "name": "临江市", + "code": "220681" + }] + }, + { + "name": "松原市", + "code": "220700", + "area": [{ + "name": "市辖区", + "code": "220701" + }, + { + "name": "宁江区", + "code": "220702" + }, + { + "name": "前郭尔罗斯蒙古族自治县", + "code": "220721" + }, + { + "name": "长岭县", + "code": "220722" + }, + { + "name": "乾安县", + "code": "220723" + }, + { + "name": "扶余市", + "code": "220781" + }] + }, + { + "name": "白城市", + "code": "220800", + "area": [{ + "name": "市辖区", + "code": "220801" + }, + { + "name": "洮北区", + "code": "220802" + }, + { + "name": "镇赉县", + "code": "220821" + }, + { + "name": "通榆县", + "code": "220822" + }, + { + "name": "洮南市", + "code": "220881" + }, + { + "name": "大安市", + "code": "220882" + }] + }, + { + "name": "延边朝鲜族自治州", + "code": "222400", + "area": [{ + "name": "延吉市", + "code": "222401" + }, + { + "name": "图们市", + "code": "222402" + }, + { + "name": "敦化市", + "code": "222403" + }, + { + "name": "珲春市", + "code": "222404" + }, + { + "name": "龙井市", + "code": "222405" + }, + { + "name": "和龙市", + "code": "222406" + }, + { + "name": "汪清县", + "code": "222424" + }, + { + "name": "安图县", + "code": "222426" + }] + }] +}, +{ + "name": "黑龙江省", + "code": "230000", + "city": [{ + "name": "哈尔滨市", + "code": "230100", + "area": [{ + "name": "市辖区", + "code": "230101" + }, + { + "name": "道里区", + "code": "230102" + }, + { + "name": "南岗区", + "code": "230103" + }, + { + "name": "道外区", + "code": "230104" + }, + { + "name": "平房区", + "code": "230108" + }, + { + "name": "松北区", + "code": "230109" + }, + { + "name": "香坊区", + "code": "230110" + }, + { + "name": "呼兰区", + "code": "230111" + }, + { + "name": "阿城区", + "code": "230112" + }, + { + "name": "双城区", + "code": "230113" + }, + { + "name": "依兰县", + "code": "230123" + }, + { + "name": "方正县", + "code": "230124" + }, + { + "name": "宾县", + "code": "230125" + }, + { + "name": "巴彦县", + "code": "230126" + }, + { + "name": "木兰县", + "code": "230127" + }, + { + "name": "通河县", + "code": "230128" + }, + { + "name": "延寿县", + "code": "230129" + }, + { + "name": "尚志市", + "code": "230183" + }, + { + "name": "五常市", + "code": "230184" + }] + }, + { + "name": "齐齐哈尔市", + "code": "230200", + "area": [{ + "name": "市辖区", + "code": "230201" + }, + { + "name": "龙沙区", + "code": "230202" + }, + { + "name": "建华区", + "code": "230203" + }, + { + "name": "铁锋区", + "code": "230204" + }, + { + "name": "昂昂溪区", + "code": "230205" + }, + { + "name": "富拉尔基区", + "code": "230206" + }, + { + "name": "碾子山区", + "code": "230207" + }, + { + "name": "梅里斯达斡尔族区", + "code": "230208" + }, + { + "name": "龙江县", + "code": "230221" + }, + { + "name": "依安县", + "code": "230223" + }, + { + "name": "泰来县", + "code": "230224" + }, + { + "name": "甘南县", + "code": "230225" + }, + { + "name": "富裕县", + "code": "230227" + }, + { + "name": "克山县", + "code": "230229" + }, + { + "name": "克东县", + "code": "230230" + }, + { + "name": "拜泉县", + "code": "230231" + }, + { + "name": "讷河市", + "code": "230281" + }] + }, + { + "name": "鸡西市", + "code": "230300", + "area": [{ + "name": "市辖区", + "code": "230301" + }, + { + "name": "鸡冠区", + "code": "230302" + }, + { + "name": "恒山区", + "code": "230303" + }, + { + "name": "滴道区", + "code": "230304" + }, + { + "name": "梨树区", + "code": "230305" + }, + { + "name": "城子河区", + "code": "230306" + }, + { + "name": "麻山区", + "code": "230307" + }, + { + "name": "鸡东县", + "code": "230321" + }, + { + "name": "虎林市", + "code": "230381" + }, + { + "name": "密山市", + "code": "230382" + }] + }, + { + "name": "鹤岗市", + "code": "230400", + "area": [{ + "name": "市辖区", + "code": "230401" + }, + { + "name": "向阳区", + "code": "230402" + }, + { + "name": "工农区", + "code": "230403" + }, + { + "name": "南山区", + "code": "230404" + }, + { + "name": "兴安区", + "code": "230405" + }, + { + "name": "东山区", + "code": "230406" + }, + { + "name": "兴山区", + "code": "230407" + }, + { + "name": "萝北县", + "code": "230421" + }, + { + "name": "绥滨县", + "code": "230422" + }] + }, + { + "name": "双鸭山市", + "code": "230500", + "area": [{ + "name": "市辖区", + "code": "230501" + }, + { + "name": "尖山区", + "code": "230502" + }, + { + "name": "岭东区", + "code": "230503" + }, + { + "name": "四方台区", + "code": "230505" + }, + { + "name": "宝山区", + "code": "230506" + }, + { + "name": "集贤县", + "code": "230521" + }, + { + "name": "友谊县", + "code": "230522" + }, + { + "name": "宝清县", + "code": "230523" + }, + { + "name": "饶河县", + "code": "230524" + }] + }, + { + "name": "大庆市", + "code": "230600", + "area": [{ + "name": "市辖区", + "code": "230601" + }, + { + "name": "萨尔图区", + "code": "230602" + }, + { + "name": "龙凤区", + "code": "230603" + }, + { + "name": "让胡路区", + "code": "230604" + }, + { + "name": "红岗区", + "code": "230605" + }, + { + "name": "大同区", + "code": "230606" + }, + { + "name": "肇州县", + "code": "230621" + }, + { + "name": "肇源县", + "code": "230622" + }, + { + "name": "林甸县", + "code": "230623" + }, + { + "name": "杜尔伯特蒙古族自治县", + "code": "230624" + }] + }, + { + "name": "伊春市", + "code": "230700", + "area": [{ + "name": "市辖区", + "code": "230701" + }, + { + "name": "伊春区", + "code": "230702" + }, + { + "name": "南岔区", + "code": "230703" + }, + { + "name": "友好区", + "code": "230704" + }, + { + "name": "西林区", + "code": "230705" + }, + { + "name": "翠峦区", + "code": "230706" + }, + { + "name": "新青区", + "code": "230707" + }, + { + "name": "美溪区", + "code": "230708" + }, + { + "name": "金山屯区", + "code": "230709" + }, + { + "name": "五营区", + "code": "230710" + }, + { + "name": "乌马河区", + "code": "230711" + }, + { + "name": "汤旺河区", + "code": "230712" + }, + { + "name": "带岭区", + "code": "230713" + }, + { + "name": "乌伊岭区", + "code": "230714" + }, + { + "name": "红星区", + "code": "230715" + }, + { + "name": "上甘岭区", + "code": "230716" + }, + { + "name": "嘉荫县", + "code": "230722" + }, + { + "name": "铁力市", + "code": "230781" + }] + }, + { + "name": "佳木斯市", + "code": "230800", + "area": [{ + "name": "市辖区", + "code": "230801" + }, + { + "name": "向阳区", + "code": "230803" + }, + { + "name": "前进区", + "code": "230804" + }, + { + "name": "东风区", + "code": "230805" + }, + { + "name": "郊区", + "code": "230811" + }, + { + "name": "桦南县", + "code": "230822" + }, + { + "name": "桦川县", + "code": "230826" + }, + { + "name": "汤原县", + "code": "230828" + }, + { + "name": "同江市", + "code": "230881" + }, + { + "name": "富锦市", + "code": "230882" + }, + { + "name": "抚远市", + "code": "230883" + }] + }, + { + "name": "七台河市", + "code": "230900", + "area": [{ + "name": "市辖区", + "code": "230901" + }, + { + "name": "新兴区", + "code": "230902" + }, + { + "name": "桃山区", + "code": "230903" + }, + { + "name": "茄子河区", + "code": "230904" + }, + { + "name": "勃利县", + "code": "230921" + }] + }, + { + "name": "牡丹江市", + "code": "231000", + "area": [{ + "name": "市辖区", + "code": "231001" + }, + { + "name": "东安区", + "code": "231002" + }, + { + "name": "阳明区", + "code": "231003" + }, + { + "name": "爱民区", + "code": "231004" + }, + { + "name": "西安区", + "code": "231005" + }, + { + "name": "林口县", + "code": "231025" + }, + { + "name": "绥芬河市", + "code": "231081" + }, + { + "name": "海林市", + "code": "231083" + }, + { + "name": "宁安市", + "code": "231084" + }, + { + "name": "穆棱市", + "code": "231085" + }, + { + "name": "东宁市", + "code": "231086" + }] + }, + { + "name": "黑河市", + "code": "231100", + "area": [{ + "name": "市辖区", + "code": "231101" + }, + { + "name": "爱辉区", + "code": "231102" + }, + { + "name": "嫩江县", + "code": "231121" + }, + { + "name": "逊克县", + "code": "231123" + }, + { + "name": "孙吴县", + "code": "231124" + }, + { + "name": "北安市", + "code": "231181" + }, + { + "name": "五大连池市", + "code": "231182" + }] + }, + { + "name": "绥化市", + "code": "231200", + "area": [{ + "name": "市辖区", + "code": "231201" + }, + { + "name": "北林区", + "code": "231202" + }, + { + "name": "望奎县", + "code": "231221" + }, + { + "name": "兰西县", + "code": "231222" + }, + { + "name": "青冈县", + "code": "231223" + }, + { + "name": "庆安县", + "code": "231224" + }, + { + "name": "明水县", + "code": "231225" + }, + { + "name": "绥棱县", + "code": "231226" + }, + { + "name": "安达市", + "code": "231281" + }, + { + "name": "肇东市", + "code": "231282" + }, + { + "name": "海伦市", + "code": "231283" + }] + }, + { + "name": "大兴安岭地区", + "code": "232700", + "area": [{ + "name": "呼玛县", + "code": "232721" + }, + { + "name": "塔河县", + "code": "232722" + }, + { + "name": "漠河县", + "code": "232723" + }] + }] +}, +{ + "name": "上海市", + "code": "310000", + "city": [{ + "name": "市辖区", + "code": "310100", + "area": [{ + "name": "黄浦区", + "code": "310101" + }, + { + "name": "徐汇区", + "code": "310104" + }, + { + "name": "长宁区", + "code": "310105" + }, + { + "name": "静安区", + "code": "310106" + }, + { + "name": "普陀区", + "code": "310107" + }, + { + "name": "虹口区", + "code": "310109" + }, + { + "name": "杨浦区", + "code": "310110" + }, + { + "name": "闵行区", + "code": "310112" + }, + { + "name": "宝山区", + "code": "310113" + }, + { + "name": "嘉定区", + "code": "310114" + }, + { + "name": "浦东新区", + "code": "310115" + }, + { + "name": "金山区", + "code": "310116" + }, + { + "name": "松江区", + "code": "310117" + }, + { + "name": "青浦区", + "code": "310118" + }, + { + "name": "奉贤区", + "code": "310120" + }, + { + "name": "崇明区", + "code": "310151" + }] + }] +}, +{ + "name": "江苏省", + "code": "320000", + "city": [{ + "name": "南京市", + "code": "320100", + "area": [{ + "name": "市辖区", + "code": "320101" + }, + { + "name": "玄武区", + "code": "320102" + }, + { + "name": "秦淮区", + "code": "320104" + }, + { + "name": "建邺区", + "code": "320105" + }, + { + "name": "鼓楼区", + "code": "320106" + }, + { + "name": "浦口区", + "code": "320111" + }, + { + "name": "栖霞区", + "code": "320113" + }, + { + "name": "雨花台区", + "code": "320114" + }, + { + "name": "江宁区", + "code": "320115" + }, + { + "name": "六合区", + "code": "320116" + }, + { + "name": "溧水区", + "code": "320117" + }, + { + "name": "高淳区", + "code": "320118" + }] + }, + { + "name": "无锡市", + "code": "320200", + "area": [{ + "name": "市辖区", + "code": "320201" + }, + { + "name": "锡山区", + "code": "320205" + }, + { + "name": "惠山区", + "code": "320206" + }, + { + "name": "滨湖区", + "code": "320211" + }, + { + "name": "梁溪区", + "code": "320213" + }, + { + "name": "新吴区", + "code": "320214" + }, + { + "name": "江阴市", + "code": "320281" + }, + { + "name": "宜兴市", + "code": "320282" + }] + }, + { + "name": "徐州市", + "code": "320300", + "area": [{ + "name": "市辖区", + "code": "320301" + }, + { + "name": "鼓楼区", + "code": "320302" + }, + { + "name": "云龙区", + "code": "320303" + }, + { + "name": "贾汪区", + "code": "320305" + }, + { + "name": "泉山区", + "code": "320311" + }, + { + "name": "铜山区", + "code": "320312" + }, + { + "name": "丰县", + "code": "320321" + }, + { + "name": "沛县", + "code": "320322" + }, + { + "name": "睢宁县", + "code": "320324" + }, + { + "name": "新沂市", + "code": "320381" + }, + { + "name": "邳州市", + "code": "320382" + }] + }, + { + "name": "常州市", + "code": "320400", + "area": [{ + "name": "市辖区", + "code": "320401" + }, + { + "name": "天宁区", + "code": "320402" + }, + { + "name": "钟楼区", + "code": "320404" + }, + { + "name": "新北区", + "code": "320411" + }, + { + "name": "武进区", + "code": "320412" + }, + { + "name": "金坛区", + "code": "320413" + }, + { + "name": "溧阳市", + "code": "320481" + }] + }, + { + "name": "苏州市", + "code": "320500", + "area": [{ + "name": "市辖区", + "code": "320501" + }, + { + "name": "虎丘区", + "code": "320505" + }, + { + "name": "吴中区", + "code": "320506" + }, + { + "name": "相城区", + "code": "320507" + }, + { + "name": "姑苏区", + "code": "320508" + }, + { + "name": "吴江区", + "code": "320509" + }, + { + "name": "常熟市", + "code": "320581" + }, + { + "name": "张家港市", + "code": "320582" + }, + { + "name": "昆山市", + "code": "320583" + }, + { + "name": "太仓市", + "code": "320585" + }] + }, + { + "name": "南通市", + "code": "320600", + "area": [{ + "name": "市辖区", + "code": "320601" + }, + { + "name": "崇川区", + "code": "320602" + }, + { + "name": "港闸区", + "code": "320611" + }, + { + "name": "通州区", + "code": "320612" + }, + { + "name": "海安县", + "code": "320621" + }, + { + "name": "如东县", + "code": "320623" + }, + { + "name": "启东市", + "code": "320681" + }, + { + "name": "如皋市", + "code": "320682" + }, + { + "name": "海门市", + "code": "320684" + }] + }, + { + "name": "连云港市", + "code": "320700", + "area": [{ + "name": "市辖区", + "code": "320701" + }, + { + "name": "连云区", + "code": "320703" + }, + { + "name": "海州区", + "code": "320706" + }, + { + "name": "赣榆区", + "code": "320707" + }, + { + "name": "东海县", + "code": "320722" + }, + { + "name": "灌云县", + "code": "320723" + }, + { + "name": "灌南县", + "code": "320724" + }] + }, + { + "name": "淮安市", + "code": "320800", + "area": [{ + "name": "市辖区", + "code": "320801" + }, + { + "name": "淮安区", + "code": "320803" + }, + { + "name": "淮阴区", + "code": "320804" + }, + { + "name": "清江浦区", + "code": "320812" + }, + { + "name": "洪泽区", + "code": "320813" + }, + { + "name": "涟水县", + "code": "320826" + }, + { + "name": "盱眙县", + "code": "320830" + }, + { + "name": "金湖县", + "code": "320831" + }] + }, + { + "name": "盐城市", + "code": "320900", + "area": [{ + "name": "市辖区", + "code": "320901" + }, + { + "name": "亭湖区", + "code": "320902" + }, + { + "name": "盐都区", + "code": "320903" + }, + { + "name": "大丰区", + "code": "320904" + }, + { + "name": "响水县", + "code": "320921" + }, + { + "name": "滨海县", + "code": "320922" + }, + { + "name": "阜宁县", + "code": "320923" + }, + { + "name": "射阳县", + "code": "320924" + }, + { + "name": "建湖县", + "code": "320925" + }, + { + "name": "东台市", + "code": "320981" + }] + }, + { + "name": "扬州市", + "code": "321000", + "area": [{ + "name": "市辖区", + "code": "321001" + }, + { + "name": "广陵区", + "code": "321002" + }, + { + "name": "邗江区", + "code": "321003" + }, + { + "name": "江都区", + "code": "321012" + }, + { + "name": "宝应县", + "code": "321023" + }, + { + "name": "仪征市", + "code": "321081" + }, + { + "name": "高邮市", + "code": "321084" + }] + }, + { + "name": "镇江市", + "code": "321100", + "area": [{ + "name": "市辖区", + "code": "321101" + }, + { + "name": "京口区", + "code": "321102" + }, + { + "name": "润州区", + "code": "321111" + }, + { + "name": "丹徒区", + "code": "321112" + }, + { + "name": "丹阳市", + "code": "321181" + }, + { + "name": "扬中市", + "code": "321182" + }, + { + "name": "句容市", + "code": "321183" + }] + }, + { + "name": "泰州市", + "code": "321200", + "area": [{ + "name": "市辖区", + "code": "321201" + }, + { + "name": "海陵区", + "code": "321202" + }, + { + "name": "高港区", + "code": "321203" + }, + { + "name": "姜堰区", + "code": "321204" + }, + { + "name": "兴化市", + "code": "321281" + }, + { + "name": "靖江市", + "code": "321282" + }, + { + "name": "泰兴市", + "code": "321283" + }] + }, + { + "name": "宿迁市", + "code": "321300", + "area": [{ + "name": "市辖区", + "code": "321301" + }, + { + "name": "宿城区", + "code": "321302" + }, + { + "name": "宿豫区", + "code": "321311" + }, + { + "name": "沭阳县", + "code": "321322" + }, + { + "name": "泗阳县", + "code": "321323" + }, + { + "name": "泗洪县", + "code": "321324" + }] + }] +}, +{ + "name": "浙江省", + "code": "330000", + "city": [{ + "name": "杭州市", + "code": "330100", + "area": [{ + "name": "市辖区", + "code": "330101" + }, + { + "name": "上城区", + "code": "330102" + }, + { + "name": "下城区", + "code": "330103" + }, + { + "name": "江干区", + "code": "330104" + }, + { + "name": "拱墅区", + "code": "330105" + }, + { + "name": "西湖区", + "code": "330106" + }, + { + "name": "滨江区", + "code": "330108" + }, + { + "name": "萧山区", + "code": "330109" + }, + { + "name": "余杭区", + "code": "330110" + }, + { + "name": "富阳区", + "code": "330111" + }, + { + "name": "桐庐县", + "code": "330122" + }, + { + "name": "淳安县", + "code": "330127" + }, + { + "name": "建德市", + "code": "330182" + }, + { + "name": "临安市", + "code": "330185" + }] + }, + { + "name": "宁波市", + "code": "330200", + "area": [{ + "name": "市辖区", + "code": "330201" + }, + { + "name": "海曙区", + "code": "330203" + }, + { + "name": "江东区", + "code": "330204" + }, + { + "name": "江北区", + "code": "330205" + }, + { + "name": "北仑区", + "code": "330206" + }, + { + "name": "镇海区", + "code": "330211" + }, + { + "name": "鄞州区", + "code": "330212" + }, + { + "name": "象山县", + "code": "330225" + }, + { + "name": "宁海县", + "code": "330226" + }, + { + "name": "余姚市", + "code": "330281" + }, + { + "name": "慈溪市", + "code": "330282" + }, + { + "name": "奉化市", + "code": "330283" + }] + }, + { + "name": "温州市", + "code": "330300", + "area": [{ + "name": "市辖区", + "code": "330301" + }, + { + "name": "鹿城区", + "code": "330302" + }, + { + "name": "龙湾区", + "code": "330303" + }, + { + "name": "瓯海区", + "code": "330304" + }, + { + "name": "洞头区", + "code": "330305" + }, + { + "name": "永嘉县", + "code": "330324" + }, + { + "name": "平阳县", + "code": "330326" + }, + { + "name": "苍南县", + "code": "330327" + }, + { + "name": "文成县", + "code": "330328" + }, + { + "name": "泰顺县", + "code": "330329" + }, + { + "name": "瑞安市", + "code": "330381" + }, + { + "name": "乐清市", + "code": "330382" + }] + }, + { + "name": "嘉兴市", + "code": "330400", + "area": [{ + "name": "市辖区", + "code": "330401" + }, + { + "name": "南湖区", + "code": "330402" + }, + { + "name": "秀洲区", + "code": "330411" + }, + { + "name": "嘉善县", + "code": "330421" + }, + { + "name": "海盐县", + "code": "330424" + }, + { + "name": "海宁市", + "code": "330481" + }, + { + "name": "平湖市", + "code": "330482" + }, + { + "name": "桐乡市", + "code": "330483" + }] + }, + { + "name": "湖州市", + "code": "330500", + "area": [{ + "name": "市辖区", + "code": "330501" + }, + { + "name": "吴兴区", + "code": "330502" + }, + { + "name": "南浔区", + "code": "330503" + }, + { + "name": "德清县", + "code": "330521" + }, + { + "name": "长兴县", + "code": "330522" + }, + { + "name": "安吉县", + "code": "330523" + }] + }, + { + "name": "绍兴市", + "code": "330600", + "area": [{ + "name": "市辖区", + "code": "330601" + }, + { + "name": "越城区", + "code": "330602" + }, + { + "name": "柯桥区", + "code": "330603" + }, + { + "name": "上虞区", + "code": "330604" + }, + { + "name": "新昌县", + "code": "330624" + }, + { + "name": "诸暨市", + "code": "330681" + }, + { + "name": "嵊州市", + "code": "330683" + }] + }, + { + "name": "金华市", + "code": "330700", + "area": [{ + "name": "市辖区", + "code": "330701" + }, + { + "name": "婺城区", + "code": "330702" + }, + { + "name": "金东区", + "code": "330703" + }, + { + "name": "武义县", + "code": "330723" + }, + { + "name": "浦江县", + "code": "330726" + }, + { + "name": "磐安县", + "code": "330727" + }, + { + "name": "兰溪市", + "code": "330781" + }, + { + "name": "义乌市", + "code": "330782" + }, + { + "name": "东阳市", + "code": "330783" + }, + { + "name": "永康市", + "code": "330784" + }] + }, + { + "name": "衢州市", + "code": "330800", + "area": [{ + "name": "市辖区", + "code": "330801" + }, + { + "name": "柯城区", + "code": "330802" + }, + { + "name": "衢江区", + "code": "330803" + }, + { + "name": "常山县", + "code": "330822" + }, + { + "name": "开化县", + "code": "330824" + }, + { + "name": "龙游县", + "code": "330825" + }, + { + "name": "江山市", + "code": "330881" + }] + }, + { + "name": "舟山市", + "code": "330900", + "area": [{ + "name": "市辖区", + "code": "330901" + }, + { + "name": "定海区", + "code": "330902" + }, + { + "name": "普陀区", + "code": "330903" + }, + { + "name": "岱山县", + "code": "330921" + }, + { + "name": "嵊泗县", + "code": "330922" + }] + }, + { + "name": "台州市", + "code": "331000", + "area": [{ + "name": "市辖区", + "code": "331001" + }, + { + "name": "椒江区", + "code": "331002" + }, + { + "name": "黄岩区", + "code": "331003" + }, + { + "name": "路桥区", + "code": "331004" + }, + { + "name": "玉环县", + "code": "331021" + }, + { + "name": "三门县", + "code": "331022" + }, + { + "name": "天台县", + "code": "331023" + }, + { + "name": "仙居县", + "code": "331024" + }, + { + "name": "温岭市", + "code": "331081" + }, + { + "name": "临海市", + "code": "331082" + }] + }, + { + "name": "丽水市", + "code": "331100", + "area": [{ + "name": "市辖区", + "code": "331101" + }, + { + "name": "莲都区", + "code": "331102" + }, + { + "name": "青田县", + "code": "331121" + }, + { + "name": "缙云县", + "code": "331122" + }, + { + "name": "遂昌县", + "code": "331123" + }, + { + "name": "松阳县", + "code": "331124" + }, + { + "name": "云和县", + "code": "331125" + }, + { + "name": "庆元县", + "code": "331126" + }, + { + "name": "景宁畲族自治县", + "code": "331127" + }, + { + "name": "龙泉市", + "code": "331181" + }] + }] +}, +{ + "name": "安徽省", + "code": "340000", + "city": [{ + "name": "合肥市", + "code": "340100", + "area": [{ + "name": "市辖区", + "code": "340101" + }, + { + "name": "瑶海区", + "code": "340102" + }, + { + "name": "庐阳区", + "code": "340103" + }, + { + "name": "蜀山区", + "code": "340104" + }, + { + "name": "包河区", + "code": "340111" + }, + { + "name": "长丰县", + "code": "340121" + }, + { + "name": "肥东县", + "code": "340122" + }, + { + "name": "肥西县", + "code": "340123" + }, + { + "name": "庐江县", + "code": "340124" + }, + { + "name": "巢湖市", + "code": "340181" + }] + }, + { + "name": "芜湖市", + "code": "340200", + "area": [{ + "name": "市辖区", + "code": "340201" + }, + { + "name": "镜湖区", + "code": "340202" + }, + { + "name": "弋江区", + "code": "340203" + }, + { + "name": "鸠江区", + "code": "340207" + }, + { + "name": "三山区", + "code": "340208" + }, + { + "name": "芜湖县", + "code": "340221" + }, + { + "name": "繁昌县", + "code": "340222" + }, + { + "name": "南陵县", + "code": "340223" + }, + { + "name": "无为县", + "code": "340225" + }] + }, + { + "name": "蚌埠市", + "code": "340300", + "area": [{ + "name": "市辖区", + "code": "340301" + }, + { + "name": "龙子湖区", + "code": "340302" + }, + { + "name": "蚌山区", + "code": "340303" + }, + { + "name": "禹会区", + "code": "340304" + }, + { + "name": "淮上区", + "code": "340311" + }, + { + "name": "怀远县", + "code": "340321" + }, + { + "name": "五河县", + "code": "340322" + }, + { + "name": "固镇县", + "code": "340323" + }] + }, + { + "name": "淮南市", + "code": "340400", + "area": [{ + "name": "市辖区", + "code": "340401" + }, + { + "name": "大通区", + "code": "340402" + }, + { + "name": "田家庵区", + "code": "340403" + }, + { + "name": "谢家集区", + "code": "340404" + }, + { + "name": "八公山区", + "code": "340405" + }, + { + "name": "潘集区", + "code": "340406" + }, + { + "name": "凤台县", + "code": "340421" + }, + { + "name": "寿县", + "code": "340422" + }] + }, + { + "name": "马鞍山市", + "code": "340500", + "area": [{ + "name": "市辖区", + "code": "340501" + }, + { + "name": "花山区", + "code": "340503" + }, + { + "name": "雨山区", + "code": "340504" + }, + { + "name": "博望区", + "code": "340506" + }, + { + "name": "当涂县", + "code": "340521" + }, + { + "name": "含山县", + "code": "340522" + }, + { + "name": "和县", + "code": "340523" + }] + }, + { + "name": "淮北市", + "code": "340600", + "area": [{ + "name": "市辖区", + "code": "340601" + }, + { + "name": "杜集区", + "code": "340602" + }, + { + "name": "相山区", + "code": "340603" + }, + { + "name": "烈山区", + "code": "340604" + }, + { + "name": "濉溪县", + "code": "340621" + }] + }, + { + "name": "铜陵市", + "code": "340700", + "area": [{ + "name": "市辖区", + "code": "340701" + }, + { + "name": "铜官区", + "code": "340705" + }, + { + "name": "义安区", + "code": "340706" + }, + { + "name": "郊区", + "code": "340711" + }, + { + "name": "枞阳县", + "code": "340722" + }] + }, + { + "name": "安庆市", + "code": "340800", + "area": [{ + "name": "市辖区", + "code": "340801" + }, + { + "name": "迎江区", + "code": "340802" + }, + { + "name": "大观区", + "code": "340803" + }, + { + "name": "宜秀区", + "code": "340811" + }, + { + "name": "怀宁县", + "code": "340822" + }, + { + "name": "潜山县", + "code": "340824" + }, + { + "name": "太湖县", + "code": "340825" + }, + { + "name": "宿松县", + "code": "340826" + }, + { + "name": "望江县", + "code": "340827" + }, + { + "name": "岳西县", + "code": "340828" + }, + { + "name": "桐城市", + "code": "340881" + }] + }, + { + "name": "黄山市", + "code": "341000", + "area": [{ + "name": "市辖区", + "code": "341001" + }, + { + "name": "屯溪区", + "code": "341002" + }, + { + "name": "黄山区", + "code": "341003" + }, + { + "name": "徽州区", + "code": "341004" + }, + { + "name": "歙县", + "code": "341021" + }, + { + "name": "休宁县", + "code": "341022" + }, + { + "name": "黟县", + "code": "341023" + }, + { + "name": "祁门县", + "code": "341024" + }] + }, + { + "name": "滁州市", + "code": "341100", + "area": [{ + "name": "市辖区", + "code": "341101" + }, + { + "name": "琅琊区", + "code": "341102" + }, + { + "name": "南谯区", + "code": "341103" + }, + { + "name": "来安县", + "code": "341122" + }, + { + "name": "全椒县", + "code": "341124" + }, + { + "name": "定远县", + "code": "341125" + }, + { + "name": "凤阳县", + "code": "341126" + }, + { + "name": "天长市", + "code": "341181" + }, + { + "name": "明光市", + "code": "341182" + }] + }, + { + "name": "阜阳市", + "code": "341200", + "area": [{ + "name": "市辖区", + "code": "341201" + }, + { + "name": "颍州区", + "code": "341202" + }, + { + "name": "颍东区", + "code": "341203" + }, + { + "name": "颍泉区", + "code": "341204" + }, + { + "name": "临泉县", + "code": "341221" + }, + { + "name": "太和县", + "code": "341222" + }, + { + "name": "阜南县", + "code": "341225" + }, + { + "name": "颍上县", + "code": "341226" + }, + { + "name": "界首市", + "code": "341282" + }] + }, + { + "name": "宿州市", + "code": "341300", + "area": [{ + "name": "市辖区", + "code": "341301" + }, + { + "name": "埇桥区", + "code": "341302" + }, + { + "name": "砀山县", + "code": "341321" + }, + { + "name": "萧县", + "code": "341322" + }, + { + "name": "灵璧县", + "code": "341323" + }, + { + "name": "泗县", + "code": "341324" + }] + }, + { + "name": "六安市", + "code": "341500", + "area": [{ + "name": "市辖区", + "code": "341501" + }, + { + "name": "金安区", + "code": "341502" + }, + { + "name": "裕安区", + "code": "341503" + }, + { + "name": "叶集区", + "code": "341504" + }, + { + "name": "霍邱县", + "code": "341522" + }, + { + "name": "舒城县", + "code": "341523" + }, + { + "name": "金寨县", + "code": "341524" + }, + { + "name": "霍山县", + "code": "341525" + }] + }, + { + "name": "亳州市", + "code": "341600", + "area": [{ + "name": "市辖区", + "code": "341601" + }, + { + "name": "谯城区", + "code": "341602" + }, + { + "name": "涡阳县", + "code": "341621" + }, + { + "name": "蒙城县", + "code": "341622" + }, + { + "name": "利辛县", + "code": "341623" + }] + }, + { + "name": "池州市", + "code": "341700", + "area": [{ + "name": "市辖区", + "code": "341701" + }, + { + "name": "贵池区", + "code": "341702" + }, + { + "name": "东至县", + "code": "341721" + }, + { + "name": "石台县", + "code": "341722" + }, + { + "name": "青阳县", + "code": "341723" + }] + }, + { + "name": "宣城市", + "code": "341800", + "area": [{ + "name": "市辖区", + "code": "341801" + }, + { + "name": "宣州区", + "code": "341802" + }, + { + "name": "郎溪县", + "code": "341821" + }, + { + "name": "广德县", + "code": "341822" + }, + { + "name": "泾县", + "code": "341823" + }, + { + "name": "绩溪县", + "code": "341824" + }, + { + "name": "旌德县", + "code": "341825" + }, + { + "name": "宁国市", + "code": "341881" + }] + }] +}, +{ + "name": "福建省", + "code": "350000", + "city": [{ + "name": "福州市", + "code": "350100", + "area": [{ + "name": "市辖区", + "code": "350101" + }, + { + "name": "鼓楼区", + "code": "350102" + }, + { + "name": "台江区", + "code": "350103" + }, + { + "name": "仓山区", + "code": "350104" + }, + { + "name": "马尾区", + "code": "350105" + }, + { + "name": "晋安区", + "code": "350111" + }, + { + "name": "闽侯县", + "code": "350121" + }, + { + "name": "连江县", + "code": "350122" + }, + { + "name": "罗源县", + "code": "350123" + }, + { + "name": "闽清县", + "code": "350124" + }, + { + "name": "永泰县", + "code": "350125" + }, + { + "name": "平潭县", + "code": "350128" + }, + { + "name": "福清市", + "code": "350181" + }, + { + "name": "长乐市", + "code": "350182" + }] + }, + { + "name": "厦门市", + "code": "350200", + "area": [{ + "name": "市辖区", + "code": "350201" + }, + { + "name": "思明区", + "code": "350203" + }, + { + "name": "海沧区", + "code": "350205" + }, + { + "name": "湖里区", + "code": "350206" + }, + { + "name": "集美区", + "code": "350211" + }, + { + "name": "同安区", + "code": "350212" + }, + { + "name": "翔安区", + "code": "350213" + }] + }, + { + "name": "莆田市", + "code": "350300", + "area": [{ + "name": "市辖区", + "code": "350301" + }, + { + "name": "城厢区", + "code": "350302" + }, + { + "name": "涵江区", + "code": "350303" + }, + { + "name": "荔城区", + "code": "350304" + }, + { + "name": "秀屿区", + "code": "350305" + }, + { + "name": "仙游县", + "code": "350322" + }] + }, + { + "name": "三明市", + "code": "350400", + "area": [{ + "name": "市辖区", + "code": "350401" + }, + { + "name": "梅列区", + "code": "350402" + }, + { + "name": "三元区", + "code": "350403" + }, + { + "name": "明溪县", + "code": "350421" + }, + { + "name": "清流县", + "code": "350423" + }, + { + "name": "宁化县", + "code": "350424" + }, + { + "name": "大田县", + "code": "350425" + }, + { + "name": "尤溪县", + "code": "350426" + }, + { + "name": "沙县", + "code": "350427" + }, + { + "name": "将乐县", + "code": "350428" + }, + { + "name": "泰宁县", + "code": "350429" + }, + { + "name": "建宁县", + "code": "350430" + }, + { + "name": "永安市", + "code": "350481" + }] + }, + { + "name": "泉州市", + "code": "350500", + "area": [{ + "name": "市辖区", + "code": "350501" + }, + { + "name": "鲤城区", + "code": "350502" + }, + { + "name": "丰泽区", + "code": "350503" + }, + { + "name": "洛江区", + "code": "350504" + }, + { + "name": "泉港区", + "code": "350505" + }, + { + "name": "惠安县", + "code": "350521" + }, + { + "name": "安溪县", + "code": "350524" + }, + { + "name": "永春县", + "code": "350525" + }, + { + "name": "德化县", + "code": "350526" + }, + { + "name": "金门县", + "code": "350527" + }, + { + "name": "石狮市", + "code": "350581" + }, + { + "name": "晋江市", + "code": "350582" + }, + { + "name": "南安市", + "code": "350583" + }] + }, + { + "name": "漳州市", + "code": "350600", + "area": [{ + "name": "市辖区", + "code": "350601" + }, + { + "name": "芗城区", + "code": "350602" + }, + { + "name": "龙文区", + "code": "350603" + }, + { + "name": "云霄县", + "code": "350622" + }, + { + "name": "漳浦县", + "code": "350623" + }, + { + "name": "诏安县", + "code": "350624" + }, + { + "name": "长泰县", + "code": "350625" + }, + { + "name": "东山县", + "code": "350626" + }, + { + "name": "南靖县", + "code": "350627" + }, + { + "name": "平和县", + "code": "350628" + }, + { + "name": "华安县", + "code": "350629" + }, + { + "name": "龙海市", + "code": "350681" + }] + }, + { + "name": "南平市", + "code": "350700", + "area": [{ + "name": "市辖区", + "code": "350701" + }, + { + "name": "延平区", + "code": "350702" + }, + { + "name": "建阳区", + "code": "350703" + }, + { + "name": "顺昌县", + "code": "350721" + }, + { + "name": "浦城县", + "code": "350722" + }, + { + "name": "光泽县", + "code": "350723" + }, + { + "name": "松溪县", + "code": "350724" + }, + { + "name": "政和县", + "code": "350725" + }, + { + "name": "邵武市", + "code": "350781" + }, + { + "name": "武夷山市", + "code": "350782" + }, + { + "name": "建瓯市", + "code": "350783" + }] + }, + { + "name": "龙岩市", + "code": "350800", + "area": [{ + "name": "市辖区", + "code": "350801" + }, + { + "name": "新罗区", + "code": "350802" + }, + { + "name": "永定区", + "code": "350803" + }, + { + "name": "长汀县", + "code": "350821" + }, + { + "name": "上杭县", + "code": "350823" + }, + { + "name": "武平县", + "code": "350824" + }, + { + "name": "连城县", + "code": "350825" + }, + { + "name": "漳平市", + "code": "350881" + }] + }, + { + "name": "宁德市", + "code": "350900", + "area": [{ + "name": "市辖区", + "code": "350901" + }, + { + "name": "蕉城区", + "code": "350902" + }, + { + "name": "霞浦县", + "code": "350921" + }, + { + "name": "古田县", + "code": "350922" + }, + { + "name": "屏南县", + "code": "350923" + }, + { + "name": "寿宁县", + "code": "350924" + }, + { + "name": "周宁县", + "code": "350925" + }, + { + "name": "柘荣县", + "code": "350926" + }, + { + "name": "福安市", + "code": "350981" + }, + { + "name": "福鼎市", + "code": "350982" + }] + }] +}, +{ + "name": "江西省", + "code": "360000", + "city": [{ + "name": "南昌市", + "code": "360100", + "area": [{ + "name": "市辖区", + "code": "360101" + }, + { + "name": "东湖区", + "code": "360102" + }, + { + "name": "西湖区", + "code": "360103" + }, + { + "name": "青云谱区", + "code": "360104" + }, + { + "name": "湾里区", + "code": "360105" + }, + { + "name": "青山湖区", + "code": "360111" + }, + { + "name": "新建区", + "code": "360112" + }, + { + "name": "南昌县", + "code": "360121" + }, + { + "name": "安义县", + "code": "360123" + }, + { + "name": "进贤县", + "code": "360124" + }] + }, + { + "name": "景德镇市", + "code": "360200", + "area": [{ + "name": "市辖区", + "code": "360201" + }, + { + "name": "昌江区", + "code": "360202" + }, + { + "name": "珠山区", + "code": "360203" + }, + { + "name": "浮梁县", + "code": "360222" + }, + { + "name": "乐平市", + "code": "360281" + }] + }, + { + "name": "萍乡市", + "code": "360300", + "area": [{ + "name": "市辖区", + "code": "360301" + }, + { + "name": "安源区", + "code": "360302" + }, + { + "name": "湘东区", + "code": "360313" + }, + { + "name": "莲花县", + "code": "360321" + }, + { + "name": "上栗县", + "code": "360322" + }, + { + "name": "芦溪县", + "code": "360323" + }] + }, + { + "name": "九江市", + "code": "360400", + "area": [{ + "name": "市辖区", + "code": "360401" + }, + { + "name": "濂溪区", + "code": "360402" + }, + { + "name": "浔阳区", + "code": "360403" + }, + { + "name": "九江县", + "code": "360421" + }, + { + "name": "武宁县", + "code": "360423" + }, + { + "name": "修水县", + "code": "360424" + }, + { + "name": "永修县", + "code": "360425" + }, + { + "name": "德安县", + "code": "360426" + }, + { + "name": "都昌县", + "code": "360428" + }, + { + "name": "湖口县", + "code": "360429" + }, + { + "name": "彭泽县", + "code": "360430" + }, + { + "name": "瑞昌市", + "code": "360481" + }, + { + "name": "共青城市", + "code": "360482" + }, + { + "name": "庐山市", + "code": "360483" + }] + }, + { + "name": "新余市", + "code": "360500", + "area": [{ + "name": "市辖区", + "code": "360501" + }, + { + "name": "渝水区", + "code": "360502" + }, + { + "name": "分宜县", + "code": "360521" + }] + }, + { + "name": "鹰潭市", + "code": "360600", + "area": [{ + "name": "市辖区", + "code": "360601" + }, + { + "name": "月湖区", + "code": "360602" + }, + { + "name": "余江县", + "code": "360622" + }, + { + "name": "贵溪市", + "code": "360681" + }] + }, + { + "name": "赣州市", + "code": "360700", + "area": [{ + "name": "市辖区", + "code": "360701" + }, + { + "name": "章贡区", + "code": "360702" + }, + { + "name": "南康区", + "code": "360703" + }, + { + "name": "赣县", + "code": "360721" + }, + { + "name": "信丰县", + "code": "360722" + }, + { + "name": "大余县", + "code": "360723" + }, + { + "name": "上犹县", + "code": "360724" + }, + { + "name": "崇义县", + "code": "360725" + }, + { + "name": "安远县", + "code": "360726" + }, + { + "name": "龙南县", + "code": "360727" + }, + { + "name": "定南县", + "code": "360728" + }, + { + "name": "全南县", + "code": "360729" + }, + { + "name": "宁都县", + "code": "360730" + }, + { + "name": "于都县", + "code": "360731" + }, + { + "name": "兴国县", + "code": "360732" + }, + { + "name": "会昌县", + "code": "360733" + }, + { + "name": "寻乌县", + "code": "360734" + }, + { + "name": "石城县", + "code": "360735" + }, + { + "name": "瑞金市", + "code": "360781" + }] + }, + { + "name": "吉安市", + "code": "360800", + "area": [{ + "name": "市辖区", + "code": "360801" + }, + { + "name": "吉州区", + "code": "360802" + }, + { + "name": "青原区", + "code": "360803" + }, + { + "name": "吉安县", + "code": "360821" + }, + { + "name": "吉水县", + "code": "360822" + }, + { + "name": "峡江县", + "code": "360823" + }, + { + "name": "新干县", + "code": "360824" + }, + { + "name": "永丰县", + "code": "360825" + }, + { + "name": "泰和县", + "code": "360826" + }, + { + "name": "遂川县", + "code": "360827" + }, + { + "name": "万安县", + "code": "360828" + }, + { + "name": "安福县", + "code": "360829" + }, + { + "name": "永新县", + "code": "360830" + }, + { + "name": "井冈山市", + "code": "360881" + }] + }, + { + "name": "宜春市", + "code": "360900", + "area": [{ + "name": "市辖区", + "code": "360901" + }, + { + "name": "袁州区", + "code": "360902" + }, + { + "name": "奉新县", + "code": "360921" + }, + { + "name": "万载县", + "code": "360922" + }, + { + "name": "上高县", + "code": "360923" + }, + { + "name": "宜丰县", + "code": "360924" + }, + { + "name": "靖安县", + "code": "360925" + }, + { + "name": "铜鼓县", + "code": "360926" + }, + { + "name": "丰城市", + "code": "360981" + }, + { + "name": "樟树市", + "code": "360982" + }, + { + "name": "高安市", + "code": "360983" + }] + }, + { + "name": "抚州市", + "code": "361000", + "area": [{ + "name": "市辖区", + "code": "361001" + }, + { + "name": "临川区", + "code": "361002" + }, + { + "name": "南城县", + "code": "361021" + }, + { + "name": "黎川县", + "code": "361022" + }, + { + "name": "南丰县", + "code": "361023" + }, + { + "name": "崇仁县", + "code": "361024" + }, + { + "name": "乐安县", + "code": "361025" + }, + { + "name": "宜黄县", + "code": "361026" + }, + { + "name": "金溪县", + "code": "361027" + }, + { + "name": "资溪县", + "code": "361028" + }, + { + "name": "东乡县", + "code": "361029" + }, + { + "name": "广昌县", + "code": "361030" + }] + }, + { + "name": "上饶市", + "code": "361100", + "area": [{ + "name": "市辖区", + "code": "361101" + }, + { + "name": "信州区", + "code": "361102" + }, + { + "name": "广丰区", + "code": "361103" + }, + { + "name": "上饶县", + "code": "361121" + }, + { + "name": "玉山县", + "code": "361123" + }, + { + "name": "铅山县", + "code": "361124" + }, + { + "name": "横峰县", + "code": "361125" + }, + { + "name": "弋阳县", + "code": "361126" + }, + { + "name": "余干县", + "code": "361127" + }, + { + "name": "鄱阳县", + "code": "361128" + }, + { + "name": "万年县", + "code": "361129" + }, + { + "name": "婺源县", + "code": "361130" + }, + { + "name": "德兴市", + "code": "361181" + }] + }] +}, +{ + "name": "山东省", + "code": "370000", + "city": [{ + "name": "济南市", + "code": "370100", + "area": [{ + "name": "市辖区", + "code": "370101" + }, + { + "name": "历下区", + "code": "370102" + }, + { + "name": "市中区", + "code": "370103" + }, + { + "name": "槐荫区", + "code": "370104" + }, + { + "name": "天桥区", + "code": "370105" + }, + { + "name": "历城区", + "code": "370112" + }, + { + "name": "长清区", + "code": "370113" + }, + { + "name": "平阴县", + "code": "370124" + }, + { + "name": "济阳县", + "code": "370125" + }, + { + "name": "商河县", + "code": "370126" + }, + { + "name": "章丘市", + "code": "370181" + }] + }, + { + "name": "青岛市", + "code": "370200", + "area": [{ + "name": "市辖区", + "code": "370201" + }, + { + "name": "市南区", + "code": "370202" + }, + { + "name": "市北区", + "code": "370203" + }, + { + "name": "黄岛区", + "code": "370211" + }, + { + "name": "崂山区", + "code": "370212" + }, + { + "name": "李沧区", + "code": "370213" + }, + { + "name": "城阳区", + "code": "370214" + }, + { + "name": "胶州市", + "code": "370281" + }, + { + "name": "即墨市", + "code": "370282" + }, + { + "name": "平度市", + "code": "370283" + }, + { + "name": "莱西市", + "code": "370285" + }] + }, + { + "name": "淄博市", + "code": "370300", + "area": [{ + "name": "市辖区", + "code": "370301" + }, + { + "name": "淄川区", + "code": "370302" + }, + { + "name": "张店区", + "code": "370303" + }, + { + "name": "博山区", + "code": "370304" + }, + { + "name": "临淄区", + "code": "370305" + }, + { + "name": "周村区", + "code": "370306" + }, + { + "name": "桓台县", + "code": "370321" + }, + { + "name": "高青县", + "code": "370322" + }, + { + "name": "沂源县", + "code": "370323" + }] + }, + { + "name": "枣庄市", + "code": "370400", + "area": [{ + "name": "市辖区", + "code": "370401" + }, + { + "name": "市中区", + "code": "370402" + }, + { + "name": "薛城区", + "code": "370403" + }, + { + "name": "峄城区", + "code": "370404" + }, + { + "name": "台儿庄区", + "code": "370405" + }, + { + "name": "山亭区", + "code": "370406" + }, + { + "name": "滕州市", + "code": "370481" + }] + }, + { + "name": "东营市", + "code": "370500", + "area": [{ + "name": "市辖区", + "code": "370501" + }, + { + "name": "东营区", + "code": "370502" + }, + { + "name": "河口区", + "code": "370503" + }, + { + "name": "垦利区", + "code": "370505" + }, + { + "name": "利津县", + "code": "370522" + }, + { + "name": "广饶县", + "code": "370523" + }] + }, + { + "name": "烟台市", + "code": "370600", + "area": [{ + "name": "市辖区", + "code": "370601" + }, + { + "name": "芝罘区", + "code": "370602" + }, + { + "name": "福山区", + "code": "370611" + }, + { + "name": "牟平区", + "code": "370612" + }, + { + "name": "莱山区", + "code": "370613" + }, + { + "name": "长岛县", + "code": "370634" + }, + { + "name": "龙口市", + "code": "370681" + }, + { + "name": "莱阳市", + "code": "370682" + }, + { + "name": "莱州市", + "code": "370683" + }, + { + "name": "蓬莱市", + "code": "370684" + }, + { + "name": "招远市", + "code": "370685" + }, + { + "name": "栖霞市", + "code": "370686" + }, + { + "name": "海阳市", + "code": "370687" + }] + }, + { + "name": "潍坊市", + "code": "370700", + "area": [{ + "name": "市辖区", + "code": "370701" + }, + { + "name": "潍城区", + "code": "370702" + }, + { + "name": "寒亭区", + "code": "370703" + }, + { + "name": "坊子区", + "code": "370704" + }, + { + "name": "奎文区", + "code": "370705" + }, + { + "name": "临朐县", + "code": "370724" + }, + { + "name": "昌乐县", + "code": "370725" + }, + { + "name": "青州市", + "code": "370781" + }, + { + "name": "诸城市", + "code": "370782" + }, + { + "name": "寿光市", + "code": "370783" + }, + { + "name": "安丘市", + "code": "370784" + }, + { + "name": "高密市", + "code": "370785" + }, + { + "name": "昌邑市", + "code": "370786" + }] + }, + { + "name": "济宁市", + "code": "370800", + "area": [{ + "name": "市辖区", + "code": "370801" + }, + { + "name": "任城区", + "code": "370811" + }, + { + "name": "兖州区", + "code": "370812" + }, + { + "name": "微山县", + "code": "370826" + }, + { + "name": "鱼台县", + "code": "370827" + }, + { + "name": "金乡县", + "code": "370828" + }, + { + "name": "嘉祥县", + "code": "370829" + }, + { + "name": "汶上县", + "code": "370830" + }, + { + "name": "泗水县", + "code": "370831" + }, + { + "name": "梁山县", + "code": "370832" + }, + { + "name": "曲阜市", + "code": "370881" + }, + { + "name": "邹城市", + "code": "370883" + }] + }, + { + "name": "泰安市", + "code": "370900", + "area": [{ + "name": "市辖区", + "code": "370901" + }, + { + "name": "泰山区", + "code": "370902" + }, + { + "name": "岱岳区", + "code": "370911" + }, + { + "name": "宁阳县", + "code": "370921" + }, + { + "name": "东平县", + "code": "370923" + }, + { + "name": "新泰市", + "code": "370982" + }, + { + "name": "肥城市", + "code": "370983" + }] + }, + { + "name": "威海市", + "code": "371000", + "area": [{ + "name": "市辖区", + "code": "371001" + }, + { + "name": "环翠区", + "code": "371002" + }, + { + "name": "文登区", + "code": "371003" + }, + { + "name": "荣成市", + "code": "371082" + }, + { + "name": "乳山市", + "code": "371083" + }] + }, + { + "name": "日照市", + "code": "371100", + "area": [{ + "name": "市辖区", + "code": "371101" + }, + { + "name": "东港区", + "code": "371102" + }, + { + "name": "岚山区", + "code": "371103" + }, + { + "name": "五莲县", + "code": "371121" + }, + { + "name": "莒县", + "code": "371122" + }] + }, + { + "name": "莱芜市", + "code": "371200", + "area": [{ + "name": "市辖区", + "code": "371201" + }, + { + "name": "莱城区", + "code": "371202" + }, + { + "name": "钢城区", + "code": "371203" + }] + }, + { + "name": "临沂市", + "code": "371300", + "area": [{ + "name": "市辖区", + "code": "371301" + }, + { + "name": "兰山区", + "code": "371302" + }, + { + "name": "罗庄区", + "code": "371311" + }, + { + "name": "河东区", + "code": "371312" + }, + { + "name": "沂南县", + "code": "371321" + }, + { + "name": "郯城县", + "code": "371322" + }, + { + "name": "沂水县", + "code": "371323" + }, + { + "name": "兰陵县", + "code": "371324" + }, + { + "name": "费县", + "code": "371325" + }, + { + "name": "平邑县", + "code": "371326" + }, + { + "name": "莒南县", + "code": "371327" + }, + { + "name": "蒙阴县", + "code": "371328" + }, + { + "name": "临沭县", + "code": "371329" + }] + }, + { + "name": "德州市", + "code": "371400", + "area": [{ + "name": "市辖区", + "code": "371401" + }, + { + "name": "德城区", + "code": "371402" + }, + { + "name": "陵城区", + "code": "371403" + }, + { + "name": "宁津县", + "code": "371422" + }, + { + "name": "庆云县", + "code": "371423" + }, + { + "name": "临邑县", + "code": "371424" + }, + { + "name": "齐河县", + "code": "371425" + }, + { + "name": "平原县", + "code": "371426" + }, + { + "name": "夏津县", + "code": "371427" + }, + { + "name": "武城县", + "code": "371428" + }, + { + "name": "乐陵市", + "code": "371481" + }, + { + "name": "禹城市", + "code": "371482" + }] + }, + { + "name": "聊城市", + "code": "371500", + "area": [{ + "name": "市辖区", + "code": "371501" + }, + { + "name": "东昌府区", + "code": "371502" + }, + { + "name": "阳谷县", + "code": "371521" + }, + { + "name": "莘县", + "code": "371522" + }, + { + "name": "茌平县", + "code": "371523" + }, + { + "name": "东阿县", + "code": "371524" + }, + { + "name": "冠县", + "code": "371525" + }, + { + "name": "高唐县", + "code": "371526" + }, + { + "name": "临清市", + "code": "371581" + }] + }, + { + "name": "滨州市", + "code": "371600", + "area": [{ + "name": "市辖区", + "code": "371601" + }, + { + "name": "滨城区", + "code": "371602" + }, + { + "name": "沾化区", + "code": "371603" + }, + { + "name": "惠民县", + "code": "371621" + }, + { + "name": "阳信县", + "code": "371622" + }, + { + "name": "无棣县", + "code": "371623" + }, + { + "name": "博兴县", + "code": "371625" + }, + { + "name": "邹平县", + "code": "371626" + }] + }, + { + "name": "菏泽市", + "code": "371700", + "area": [{ + "name": "市辖区", + "code": "371701" + }, + { + "name": "牡丹区", + "code": "371702" + }, + { + "name": "定陶区", + "code": "371703" + }, + { + "name": "曹县", + "code": "371721" + }, + { + "name": "单县", + "code": "371722" + }, + { + "name": "成武县", + "code": "371723" + }, + { + "name": "巨野县", + "code": "371724" + }, + { + "name": "郓城县", + "code": "371725" + }, + { + "name": "鄄城县", + "code": "371726" + }, + { + "name": "东明县", + "code": "371728" + }] + }] +}, +{ + "name": "河南省", + "code": "410000", + "city": [{ + "name": "郑州市", + "code": "410100", + "area": [{ + "name": "市辖区", + "code": "410101" + }, + { + "name": "中原区", + "code": "410102" + }, + { + "name": "二七区", + "code": "410103" + }, + { + "name": "管城回族区", + "code": "410104" + }, + { + "name": "金水区", + "code": "410105" + }, + { + "name": "上街区", + "code": "410106" + }, + { + "name": "惠济区", + "code": "410108" + }, + { + "name": "中牟县", + "code": "410122" + }, + { + "name": "巩义市", + "code": "410181" + }, + { + "name": "荥阳市", + "code": "410182" + }, + { + "name": "新密市", + "code": "410183" + }, + { + "name": "新郑市", + "code": "410184" + }, + { + "name": "登封市", + "code": "410185" + }] + }, + { + "name": "开封市", + "code": "410200", + "area": [{ + "name": "市辖区", + "code": "410201" + }, + { + "name": "龙亭区", + "code": "410202" + }, + { + "name": "顺河回族区", + "code": "410203" + }, + { + "name": "鼓楼区", + "code": "410204" + }, + { + "name": "禹王台区", + "code": "410205" + }, + { + "name": "金明区", + "code": "410211" + }, + { + "name": "祥符区", + "code": "410212" + }, + { + "name": "杞县", + "code": "410221" + }, + { + "name": "通许县", + "code": "410222" + }, + { + "name": "尉氏县", + "code": "410223" + }, + { + "name": "兰考县", + "code": "410225" + }] + }, + { + "name": "洛阳市", + "code": "410300", + "area": [{ + "name": "市辖区", + "code": "410301" + }, + { + "name": "老城区", + "code": "410302" + }, + { + "name": "西工区", + "code": "410303" + }, + { + "name": "瀍河回族区", + "code": "410304" + }, + { + "name": "涧西区", + "code": "410305" + }, + { + "name": "吉利区", + "code": "410306" + }, + { + "name": "洛龙区", + "code": "410311" + }, + { + "name": "孟津县", + "code": "410322" + }, + { + "name": "新安县", + "code": "410323" + }, + { + "name": "栾川县", + "code": "410324" + }, + { + "name": "嵩县", + "code": "410325" + }, + { + "name": "汝阳县", + "code": "410326" + }, + { + "name": "宜阳县", + "code": "410327" + }, + { + "name": "洛宁县", + "code": "410328" + }, + { + "name": "伊川县", + "code": "410329" + }, + { + "name": "偃师市", + "code": "410381" + }] + }, + { + "name": "平顶山市", + "code": "410400", + "area": [{ + "name": "市辖区", + "code": "410401" + }, + { + "name": "新华区", + "code": "410402" + }, + { + "name": "卫东区", + "code": "410403" + }, + { + "name": "石龙区", + "code": "410404" + }, + { + "name": "湛河区", + "code": "410411" + }, + { + "name": "宝丰县", + "code": "410421" + }, + { + "name": "叶县", + "code": "410422" + }, + { + "name": "鲁山县", + "code": "410423" + }, + { + "name": "郏县", + "code": "410425" + }, + { + "name": "舞钢市", + "code": "410481" + }, + { + "name": "汝州市", + "code": "410482" + }] + }, + { + "name": "安阳市", + "code": "410500", + "area": [{ + "name": "市辖区", + "code": "410501" + }, + { + "name": "文峰区", + "code": "410502" + }, + { + "name": "北关区", + "code": "410503" + }, + { + "name": "殷都区", + "code": "410505" + }, + { + "name": "龙安区", + "code": "410506" + }, + { + "name": "安阳县", + "code": "410522" + }, + { + "name": "汤阴县", + "code": "410523" + }, + { + "name": "滑县", + "code": "410526" + }, + { + "name": "内黄县", + "code": "410527" + }, + { + "name": "林州市", + "code": "410581" + }] + }, + { + "name": "鹤壁市", + "code": "410600", + "area": [{ + "name": "市辖区", + "code": "410601" + }, + { + "name": "鹤山区", + "code": "410602" + }, + { + "name": "山城区", + "code": "410603" + }, + { + "name": "淇滨区", + "code": "410611" + }, + { + "name": "浚县", + "code": "410621" + }, + { + "name": "淇县", + "code": "410622" + }] + }, + { + "name": "新乡市", + "code": "410700", + "area": [{ + "name": "市辖区", + "code": "410701" + }, + { + "name": "红旗区", + "code": "410702" + }, + { + "name": "卫滨区", + "code": "410703" + }, + { + "name": "凤泉区", + "code": "410704" + }, + { + "name": "牧野区", + "code": "410711" + }, + { + "name": "新乡县", + "code": "410721" + }, + { + "name": "获嘉县", + "code": "410724" + }, + { + "name": "原阳县", + "code": "410725" + }, + { + "name": "延津县", + "code": "410726" + }, + { + "name": "封丘县", + "code": "410727" + }, + { + "name": "长垣县", + "code": "410728" + }, + { + "name": "卫辉市", + "code": "410781" + }, + { + "name": "辉县市", + "code": "410782" + }] + }, + { + "name": "焦作市", + "code": "410800", + "area": [{ + "name": "市辖区", + "code": "410801" + }, + { + "name": "解放区", + "code": "410802" + }, + { + "name": "中站区", + "code": "410803" + }, + { + "name": "马村区", + "code": "410804" + }, + { + "name": "山阳区", + "code": "410811" + }, + { + "name": "修武县", + "code": "410821" + }, + { + "name": "博爱县", + "code": "410822" + }, + { + "name": "武陟县", + "code": "410823" + }, + { + "name": "温县", + "code": "410825" + }, + { + "name": "沁阳市", + "code": "410882" + }, + { + "name": "孟州市", + "code": "410883" + }] + }, + { + "name": "濮阳市", + "code": "410900", + "area": [{ + "name": "市辖区", + "code": "410901" + }, + { + "name": "华龙区", + "code": "410902" + }, + { + "name": "清丰县", + "code": "410922" + }, + { + "name": "南乐县", + "code": "410923" + }, + { + "name": "范县", + "code": "410926" + }, + { + "name": "台前县", + "code": "410927" + }, + { + "name": "濮阳县", + "code": "410928" + }] + }, + { + "name": "许昌市", + "code": "411000", + "area": [{ + "name": "市辖区", + "code": "411001" + }, + { + "name": "魏都区", + "code": "411002" + }, + { + "name": "许昌县", + "code": "411023" + }, + { + "name": "鄢陵县", + "code": "411024" + }, + { + "name": "襄城县", + "code": "411025" + }, + { + "name": "禹州市", + "code": "411081" + }, + { + "name": "长葛市", + "code": "411082" + }] + }, + { + "name": "漯河市", + "code": "411100", + "area": [{ + "name": "市辖区", + "code": "411101" + }, + { + "name": "源汇区", + "code": "411102" + }, + { + "name": "郾城区", + "code": "411103" + }, + { + "name": "召陵区", + "code": "411104" + }, + { + "name": "舞阳县", + "code": "411121" + }, + { + "name": "临颍县", + "code": "411122" + }] + }, + { + "name": "三门峡市", + "code": "411200", + "area": [{ + "name": "市辖区", + "code": "411201" + }, + { + "name": "湖滨区", + "code": "411202" + }, + { + "name": "陕州区", + "code": "411203" + }, + { + "name": "渑池县", + "code": "411221" + }, + { + "name": "卢氏县", + "code": "411224" + }, + { + "name": "义马市", + "code": "411281" + }, + { + "name": "灵宝市", + "code": "411282" + }] + }, + { + "name": "南阳市", + "code": "411300", + "area": [{ + "name": "市辖区", + "code": "411301" + }, + { + "name": "宛城区", + "code": "411302" + }, + { + "name": "卧龙区", + "code": "411303" + }, + { + "name": "南召县", + "code": "411321" + }, + { + "name": "方城县", + "code": "411322" + }, + { + "name": "西峡县", + "code": "411323" + }, + { + "name": "镇平县", + "code": "411324" + }, + { + "name": "内乡县", + "code": "411325" + }, + { + "name": "淅川县", + "code": "411326" + }, + { + "name": "社旗县", + "code": "411327" + }, + { + "name": "唐河县", + "code": "411328" + }, + { + "name": "新野县", + "code": "411329" + }, + { + "name": "桐柏县", + "code": "411330" + }, + { + "name": "邓州市", + "code": "411381" + }] + }, + { + "name": "商丘市", + "code": "411400", + "area": [{ + "name": "市辖区", + "code": "411401" + }, + { + "name": "梁园区", + "code": "411402" + }, + { + "name": "睢阳区", + "code": "411403" + }, + { + "name": "民权县", + "code": "411421" + }, + { + "name": "睢县", + "code": "411422" + }, + { + "name": "宁陵县", + "code": "411423" + }, + { + "name": "柘城县", + "code": "411424" + }, + { + "name": "虞城县", + "code": "411425" + }, + { + "name": "夏邑县", + "code": "411426" + }, + { + "name": "永城市", + "code": "411481" + }] + }, + { + "name": "信阳市", + "code": "411500", + "area": [{ + "name": "市辖区", + "code": "411501" + }, + { + "name": "浉河区", + "code": "411502" + }, + { + "name": "平桥区", + "code": "411503" + }, + { + "name": "罗山县", + "code": "411521" + }, + { + "name": "光山县", + "code": "411522" + }, + { + "name": "新县", + "code": "411523" + }, + { + "name": "商城县", + "code": "411524" + }, + { + "name": "固始县", + "code": "411525" + }, + { + "name": "潢川县", + "code": "411526" + }, + { + "name": "淮滨县", + "code": "411527" + }, + { + "name": "息县", + "code": "411528" + }] + }, + { + "name": "周口市", + "code": "411600", + "area": [{ + "name": "市辖区", + "code": "411601" + }, + { + "name": "川汇区", + "code": "411602" + }, + { + "name": "扶沟县", + "code": "411621" + }, + { + "name": "西华县", + "code": "411622" + }, + { + "name": "商水县", + "code": "411623" + }, + { + "name": "沈丘县", + "code": "411624" + }, + { + "name": "郸城县", + "code": "411625" + }, + { + "name": "淮阳县", + "code": "411626" + }, + { + "name": "太康县", + "code": "411627" + }, + { + "name": "鹿邑县", + "code": "411628" + }, + { + "name": "项城市", + "code": "411681" + }] + }, + { + "name": "驻马店市", + "code": "411700", + "area": [{ + "name": "市辖区", + "code": "411701" + }, + { + "name": "驿城区", + "code": "411702" + }, + { + "name": "西平县", + "code": "411721" + }, + { + "name": "上蔡县", + "code": "411722" + }, + { + "name": "平舆县", + "code": "411723" + }, + { + "name": "正阳县", + "code": "411724" + }, + { + "name": "确山县", + "code": "411725" + }, + { + "name": "泌阳县", + "code": "411726" + }, + { + "name": "汝南县", + "code": "411727" + }, + { + "name": "遂平县", + "code": "411728" + }, + { + "name": "新蔡县", + "code": "411729" + }] + }, + { + "name": "省直辖县级行政区划", + "code": "419000", + "area": [{ + "name": "济源市", + "code": "419001" + }] + }] +}, +{ + "name": "湖北省", + "code": "420000", + "city": [{ + "name": "武汉市", + "code": "420100", + "area": [{ + "name": "市辖区", + "code": "420101" + }, + { + "name": "江岸区", + "code": "420102" + }, + { + "name": "江汉区", + "code": "420103" + }, + { + "name": "硚口区", + "code": "420104" + }, + { + "name": "汉阳区", + "code": "420105" + }, + { + "name": "武昌区", + "code": "420106" + }, + { + "name": "青山区", + "code": "420107" + }, + { + "name": "洪山区", + "code": "420111" + }, + { + "name": "东西湖区", + "code": "420112" + }, + { + "name": "汉南区", + "code": "420113" + }, + { + "name": "蔡甸区", + "code": "420114" + }, + { + "name": "江夏区", + "code": "420115" + }, + { + "name": "黄陂区", + "code": "420116" + }, + { + "name": "新洲区", + "code": "420117" + }] + }, + { + "name": "黄石市", + "code": "420200", + "area": [{ + "name": "市辖区", + "code": "420201" + }, + { + "name": "黄石港区", + "code": "420202" + }, + { + "name": "西塞山区", + "code": "420203" + }, + { + "name": "下陆区", + "code": "420204" + }, + { + "name": "铁山区", + "code": "420205" + }, + { + "name": "阳新县", + "code": "420222" + }, + { + "name": "大冶市", + "code": "420281" + }] + }, + { + "name": "十堰市", + "code": "420300", + "area": [{ + "name": "市辖区", + "code": "420301" + }, + { + "name": "茅箭区", + "code": "420302" + }, + { + "name": "张湾区", + "code": "420303" + }, + { + "name": "郧阳区", + "code": "420304" + }, + { + "name": "郧西县", + "code": "420322" + }, + { + "name": "竹山县", + "code": "420323" + }, + { + "name": "竹溪县", + "code": "420324" + }, + { + "name": "房县", + "code": "420325" + }, + { + "name": "丹江口市", + "code": "420381" + }] + }, + { + "name": "宜昌市", + "code": "420500", + "area": [{ + "name": "市辖区", + "code": "420501" + }, + { + "name": "西陵区", + "code": "420502" + }, + { + "name": "伍家岗区", + "code": "420503" + }, + { + "name": "点军区", + "code": "420504" + }, + { + "name": "猇亭区", + "code": "420505" + }, + { + "name": "夷陵区", + "code": "420506" + }, + { + "name": "远安县", + "code": "420525" + }, + { + "name": "兴山县", + "code": "420526" + }, + { + "name": "秭归县", + "code": "420527" + }, + { + "name": "长阳土家族自治县", + "code": "420528" + }, + { + "name": "五峰土家族自治县", + "code": "420529" + }, + { + "name": "宜都市", + "code": "420581" + }, + { + "name": "当阳市", + "code": "420582" + }, + { + "name": "枝江市", + "code": "420583" + }] + }, + { + "name": "襄阳市", + "code": "420600", + "area": [{ + "name": "市辖区", + "code": "420601" + }, + { + "name": "襄城区", + "code": "420602" + }, + { + "name": "樊城区", + "code": "420606" + }, + { + "name": "襄州区", + "code": "420607" + }, + { + "name": "南漳县", + "code": "420624" + }, + { + "name": "谷城县", + "code": "420625" + }, + { + "name": "保康县", + "code": "420626" + }, + { + "name": "老河口市", + "code": "420682" + }, + { + "name": "枣阳市", + "code": "420683" + }, + { + "name": "宜城市", + "code": "420684" + }] + }, + { + "name": "鄂州市", + "code": "420700", + "area": [{ + "name": "市辖区", + "code": "420701" + }, + { + "name": "梁子湖区", + "code": "420702" + }, + { + "name": "华容区", + "code": "420703" + }, + { + "name": "鄂城区", + "code": "420704" + }] + }, + { + "name": "荆门市", + "code": "420800", + "area": [{ + "name": "市辖区", + "code": "420801" + }, + { + "name": "东宝区", + "code": "420802" + }, + { + "name": "掇刀区", + "code": "420804" + }, + { + "name": "京山县", + "code": "420821" + }, + { + "name": "沙洋县", + "code": "420822" + }, + { + "name": "钟祥市", + "code": "420881" + }] + }, + { + "name": "孝感市", + "code": "420900", + "area": [{ + "name": "市辖区", + "code": "420901" + }, + { + "name": "孝南区", + "code": "420902" + }, + { + "name": "孝昌县", + "code": "420921" + }, + { + "name": "大悟县", + "code": "420922" + }, + { + "name": "云梦县", + "code": "420923" + }, + { + "name": "应城市", + "code": "420981" + }, + { + "name": "安陆市", + "code": "420982" + }, + { + "name": "汉川市", + "code": "420984" + }] + }, + { + "name": "荆州市", + "code": "421000", + "area": [{ + "name": "市辖区", + "code": "421001" + }, + { + "name": "沙市区", + "code": "421002" + }, + { + "name": "荆州区", + "code": "421003" + }, + { + "name": "公安县", + "code": "421022" + }, + { + "name": "监利县", + "code": "421023" + }, + { + "name": "江陵县", + "code": "421024" + }, + { + "name": "石首市", + "code": "421081" + }, + { + "name": "洪湖市", + "code": "421083" + }, + { + "name": "松滋市", + "code": "421087" + }] + }, + { + "name": "黄冈市", + "code": "421100", + "area": [{ + "name": "市辖区", + "code": "421101" + }, + { + "name": "黄州区", + "code": "421102" + }, + { + "name": "团风县", + "code": "421121" + }, + { + "name": "红安县", + "code": "421122" + }, + { + "name": "罗田县", + "code": "421123" + }, + { + "name": "英山县", + "code": "421124" + }, + { + "name": "浠水县", + "code": "421125" + }, + { + "name": "蕲春县", + "code": "421126" + }, + { + "name": "黄梅县", + "code": "421127" + }, + { + "name": "麻城市", + "code": "421181" + }, + { + "name": "武穴市", + "code": "421182" + }] + }, + { + "name": "咸宁市", + "code": "421200", + "area": [{ + "name": "市辖区", + "code": "421201" + }, + { + "name": "咸安区", + "code": "421202" + }, + { + "name": "嘉鱼县", + "code": "421221" + }, + { + "name": "通城县", + "code": "421222" + }, + { + "name": "崇阳县", + "code": "421223" + }, + { + "name": "通山县", + "code": "421224" + }, + { + "name": "赤壁市", + "code": "421281" + }] + }, + { + "name": "随州市", + "code": "421300", + "area": [{ + "name": "市辖区", + "code": "421301" + }, + { + "name": "曾都区", + "code": "421303" + }, + { + "name": "随县", + "code": "421321" + }, + { + "name": "广水市", + "code": "421381" + }] + }, + { + "name": "恩施土家族苗族自治州", + "code": "422800", + "area": [{ + "name": "恩施市", + "code": "422801" + }, + { + "name": "利川市", + "code": "422802" + }, + { + "name": "建始县", + "code": "422822" + }, + { + "name": "巴东县", + "code": "422823" + }, + { + "name": "宣恩县", + "code": "422825" + }, + { + "name": "咸丰县", + "code": "422826" + }, + { + "name": "来凤县", + "code": "422827" + }, + { + "name": "鹤峰县", + "code": "422828" + }] + }, + { + "name": "省直辖县级行政区划", + "code": "429000", + "area": [{ + "name": "仙桃市", + "code": "429004" + }, + { + "name": "潜江市", + "code": "429005" + }, + { + "name": "天门市", + "code": "429006" + }, + { + "name": "神农架林区", + "code": "429021" + }] + }] +}, +{ + "name": "湖南省", + "code": "430000", + "city": [{ + "name": "长沙市", + "code": "430100", + "area": [{ + "name": "市辖区", + "code": "430101" + }, + { + "name": "芙蓉区", + "code": "430102" + }, + { + "name": "天心区", + "code": "430103" + }, + { + "name": "岳麓区", + "code": "430104" + }, + { + "name": "开福区", + "code": "430105" + }, + { + "name": "雨花区", + "code": "430111" + }, + { + "name": "望城区", + "code": "430112" + }, + { + "name": "长沙县", + "code": "430121" + }, + { + "name": "宁乡县", + "code": "430124" + }, + { + "name": "浏阳市", + "code": "430181" + }] + }, + { + "name": "株洲市", + "code": "430200", + "area": [{ + "name": "市辖区", + "code": "430201" + }, + { + "name": "荷塘区", + "code": "430202" + }, + { + "name": "芦淞区", + "code": "430203" + }, + { + "name": "石峰区", + "code": "430204" + }, + { + "name": "天元区", + "code": "430211" + }, + { + "name": "株洲县", + "code": "430221" + }, + { + "name": "攸县", + "code": "430223" + }, + { + "name": "茶陵县", + "code": "430224" + }, + { + "name": "炎陵县", + "code": "430225" + }, + { + "name": "醴陵市", + "code": "430281" + }] + }, + { + "name": "湘潭市", + "code": "430300", + "area": [{ + "name": "市辖区", + "code": "430301" + }, + { + "name": "雨湖区", + "code": "430302" + }, + { + "name": "岳塘区", + "code": "430304" + }, + { + "name": "湘潭县", + "code": "430321" + }, + { + "name": "湘乡市", + "code": "430381" + }, + { + "name": "韶山市", + "code": "430382" + }] + }, + { + "name": "衡阳市", + "code": "430400", + "area": [{ + "name": "市辖区", + "code": "430401" + }, + { + "name": "珠晖区", + "code": "430405" + }, + { + "name": "雁峰区", + "code": "430406" + }, + { + "name": "石鼓区", + "code": "430407" + }, + { + "name": "蒸湘区", + "code": "430408" + }, + { + "name": "南岳区", + "code": "430412" + }, + { + "name": "衡阳县", + "code": "430421" + }, + { + "name": "衡南县", + "code": "430422" + }, + { + "name": "衡山县", + "code": "430423" + }, + { + "name": "衡东县", + "code": "430424" + }, + { + "name": "祁东县", + "code": "430426" + }, + { + "name": "耒阳市", + "code": "430481" + }, + { + "name": "常宁市", + "code": "430482" + }] + }, + { + "name": "邵阳市", + "code": "430500", + "area": [{ + "name": "市辖区", + "code": "430501" + }, + { + "name": "双清区", + "code": "430502" + }, + { + "name": "大祥区", + "code": "430503" + }, + { + "name": "北塔区", + "code": "430511" + }, + { + "name": "邵东县", + "code": "430521" + }, + { + "name": "新邵县", + "code": "430522" + }, + { + "name": "邵阳县", + "code": "430523" + }, + { + "name": "隆回县", + "code": "430524" + }, + { + "name": "洞口县", + "code": "430525" + }, + { + "name": "绥宁县", + "code": "430527" + }, + { + "name": "新宁县", + "code": "430528" + }, + { + "name": "城步苗族自治县", + "code": "430529" + }, + { + "name": "武冈市", + "code": "430581" + }] + }, + { + "name": "岳阳市", + "code": "430600", + "area": [{ + "name": "市辖区", + "code": "430601" + }, + { + "name": "岳阳楼区", + "code": "430602" + }, + { + "name": "云溪区", + "code": "430603" + }, + { + "name": "君山区", + "code": "430611" + }, + { + "name": "岳阳县", + "code": "430621" + }, + { + "name": "华容县", + "code": "430623" + }, + { + "name": "湘阴县", + "code": "430624" + }, + { + "name": "平江县", + "code": "430626" + }, + { + "name": "汨罗市", + "code": "430681" + }, + { + "name": "临湘市", + "code": "430682" + }] + }, + { + "name": "常德市", + "code": "430700", + "area": [{ + "name": "市辖区", + "code": "430701" + }, + { + "name": "武陵区", + "code": "430702" + }, + { + "name": "鼎城区", + "code": "430703" + }, + { + "name": "安乡县", + "code": "430721" + }, + { + "name": "汉寿县", + "code": "430722" + }, + { + "name": "澧县", + "code": "430723" + }, + { + "name": "临澧县", + "code": "430724" + }, + { + "name": "桃源县", + "code": "430725" + }, + { + "name": "石门县", + "code": "430726" + }, + { + "name": "津市市", + "code": "430781" + }] + }, + { + "name": "张家界市", + "code": "430800", + "area": [{ + "name": "市辖区", + "code": "430801" + }, + { + "name": "永定区", + "code": "430802" + }, + { + "name": "武陵源区", + "code": "430811" + }, + { + "name": "慈利县", + "code": "430821" + }, + { + "name": "桑植县", + "code": "430822" + }] + }, + { + "name": "益阳市", + "code": "430900", + "area": [{ + "name": "市辖区", + "code": "430901" + }, + { + "name": "资阳区", + "code": "430902" + }, + { + "name": "赫山区", + "code": "430903" + }, + { + "name": "南县", + "code": "430921" + }, + { + "name": "桃江县", + "code": "430922" + }, + { + "name": "安化县", + "code": "430923" + }, + { + "name": "沅江市", + "code": "430981" + }] + }, + { + "name": "郴州市", + "code": "431000", + "area": [{ + "name": "市辖区", + "code": "431001" + }, + { + "name": "北湖区", + "code": "431002" + }, + { + "name": "苏仙区", + "code": "431003" + }, + { + "name": "桂阳县", + "code": "431021" + }, + { + "name": "宜章县", + "code": "431022" + }, + { + "name": "永兴县", + "code": "431023" + }, + { + "name": "嘉禾县", + "code": "431024" + }, + { + "name": "临武县", + "code": "431025" + }, + { + "name": "汝城县", + "code": "431026" + }, + { + "name": "桂东县", + "code": "431027" + }, + { + "name": "安仁县", + "code": "431028" + }, + { + "name": "资兴市", + "code": "431081" + }] + }, + { + "name": "永州市", + "code": "431100", + "area": [{ + "name": "市辖区", + "code": "431101" + }, + { + "name": "零陵区", + "code": "431102" + }, + { + "name": "冷水滩区", + "code": "431103" + }, + { + "name": "祁阳县", + "code": "431121" + }, + { + "name": "东安县", + "code": "431122" + }, + { + "name": "双牌县", + "code": "431123" + }, + { + "name": "道县", + "code": "431124" + }, + { + "name": "江永县", + "code": "431125" + }, + { + "name": "宁远县", + "code": "431126" + }, + { + "name": "蓝山县", + "code": "431127" + }, + { + "name": "新田县", + "code": "431128" + }, + { + "name": "江华瑶族自治县", + "code": "431129" + }] + }, + { + "name": "怀化市", + "code": "431200", + "area": [{ + "name": "市辖区", + "code": "431201" + }, + { + "name": "鹤城区", + "code": "431202" + }, + { + "name": "中方县", + "code": "431221" + }, + { + "name": "沅陵县", + "code": "431222" + }, + { + "name": "辰溪县", + "code": "431223" + }, + { + "name": "溆浦县", + "code": "431224" + }, + { + "name": "会同县", + "code": "431225" + }, + { + "name": "麻阳苗族自治县", + "code": "431226" + }, + { + "name": "新晃侗族自治县", + "code": "431227" + }, + { + "name": "芷江侗族自治县", + "code": "431228" + }, + { + "name": "靖州苗族侗族自治县", + "code": "431229" + }, + { + "name": "通道侗族自治县", + "code": "431230" + }, + { + "name": "洪江市", + "code": "431281" + }] + }, + { + "name": "娄底市", + "code": "431300", + "area": [{ + "name": "市辖区", + "code": "431301" + }, + { + "name": "娄星区", + "code": "431302" + }, + { + "name": "双峰县", + "code": "431321" + }, + { + "name": "新化县", + "code": "431322" + }, + { + "name": "冷水江市", + "code": "431381" + }, + { + "name": "涟源市", + "code": "431382" + }] + }, + { + "name": "湘西土家族苗族自治州", + "code": "433100", + "area": [{ + "name": "吉首市", + "code": "433101" + }, + { + "name": "泸溪县", + "code": "433122" + }, + { + "name": "凤凰县", + "code": "433123" + }, + { + "name": "花垣县", + "code": "433124" + }, + { + "name": "保靖县", + "code": "433125" + }, + { + "name": "古丈县", + "code": "433126" + }, + { + "name": "永顺县", + "code": "433127" + }, + { + "name": "龙山县", + "code": "433130" + }] + }] +}, +{ + "name": "广东省", + "code": "440000", + "city": [{ + "name": "广州市", + "code": "440100", + "area": [{ + "name": "市辖区", + "code": "440101" + }, + { + "name": "荔湾区", + "code": "440103" + }, + { + "name": "越秀区", + "code": "440104" + }, + { + "name": "海珠区", + "code": "440105" + }, + { + "name": "天河区", + "code": "440106" + }, + { + "name": "白云区", + "code": "440111" + }, + { + "name": "黄埔区", + "code": "440112" + }, + { + "name": "番禺区", + "code": "440113" + }, + { + "name": "花都区", + "code": "440114" + }, + { + "name": "南沙区", + "code": "440115" + }, + { + "name": "从化区", + "code": "440117" + }, + { + "name": "增城区", + "code": "440118" + }] + }, + { + "name": "韶关市", + "code": "440200", + "area": [{ + "name": "市辖区", + "code": "440201" + }, + { + "name": "武江区", + "code": "440203" + }, + { + "name": "浈江区", + "code": "440204" + }, + { + "name": "曲江区", + "code": "440205" + }, + { + "name": "始兴县", + "code": "440222" + }, + { + "name": "仁化县", + "code": "440224" + }, + { + "name": "翁源县", + "code": "440229" + }, + { + "name": "乳源瑶族自治县", + "code": "440232" + }, + { + "name": "新丰县", + "code": "440233" + }, + { + "name": "乐昌市", + "code": "440281" + }, + { + "name": "南雄市", + "code": "440282" + }] + }, + { + "name": "深圳市", + "code": "440300", + "area": [{ + "name": "市辖区", + "code": "440301" + }, + { + "name": "罗湖区", + "code": "440303" + }, + { + "name": "福田区", + "code": "440304" + }, + { + "name": "南山区", + "code": "440305" + }, + { + "name": "宝安区", + "code": "440306" + }, + { + "name": "龙岗区", + "code": "440307" + }, + { + "name": "盐田区", + "code": "440308" + }] + }, + { + "name": "珠海市", + "code": "440400", + "area": [{ + "name": "市辖区", + "code": "440401" + }, + { + "name": "香洲区", + "code": "440402" + }, + { + "name": "斗门区", + "code": "440403" + }, + { + "name": "金湾区", + "code": "440404" + }] + }, + { + "name": "汕头市", + "code": "440500", + "area": [{ + "name": "市辖区", + "code": "440501" + }, + { + "name": "龙湖区", + "code": "440507" + }, + { + "name": "金平区", + "code": "440511" + }, + { + "name": "濠江区", + "code": "440512" + }, + { + "name": "潮阳区", + "code": "440513" + }, + { + "name": "潮南区", + "code": "440514" + }, + { + "name": "澄海区", + "code": "440515" + }, + { + "name": "南澳县", + "code": "440523" + }] + }, + { + "name": "佛山市", + "code": "440600", + "area": [{ + "name": "市辖区", + "code": "440601" + }, + { + "name": "禅城区", + "code": "440604" + }, + { + "name": "南海区", + "code": "440605" + }, + { + "name": "顺德区", + "code": "440606" + }, + { + "name": "三水区", + "code": "440607" + }, + { + "name": "高明区", + "code": "440608" + }] + }, + { + "name": "江门市", + "code": "440700", + "area": [{ + "name": "市辖区", + "code": "440701" + }, + { + "name": "蓬江区", + "code": "440703" + }, + { + "name": "江海区", + "code": "440704" + }, + { + "name": "新会区", + "code": "440705" + }, + { + "name": "台山市", + "code": "440781" + }, + { + "name": "开平市", + "code": "440783" + }, + { + "name": "鹤山市", + "code": "440784" + }, + { + "name": "恩平市", + "code": "440785" + }] + }, + { + "name": "湛江市", + "code": "440800", + "area": [{ + "name": "市辖区", + "code": "440801" + }, + { + "name": "赤坎区", + "code": "440802" + }, + { + "name": "霞山区", + "code": "440803" + }, + { + "name": "坡头区", + "code": "440804" + }, + { + "name": "麻章区", + "code": "440811" + }, + { + "name": "遂溪县", + "code": "440823" + }, + { + "name": "徐闻县", + "code": "440825" + }, + { + "name": "廉江市", + "code": "440881" + }, + { + "name": "雷州市", + "code": "440882" + }, + { + "name": "吴川市", + "code": "440883" + }] + }, + { + "name": "茂名市", + "code": "440900", + "area": [{ + "name": "市辖区", + "code": "440901" + }, + { + "name": "茂南区", + "code": "440902" + }, + { + "name": "电白区", + "code": "440904" + }, + { + "name": "高州市", + "code": "440981" + }, + { + "name": "化州市", + "code": "440982" + }, + { + "name": "信宜市", + "code": "440983" + }] + }, + { + "name": "肇庆市", + "code": "441200", + "area": [{ + "name": "市辖区", + "code": "441201" + }, + { + "name": "端州区", + "code": "441202" + }, + { + "name": "鼎湖区", + "code": "441203" + }, + { + "name": "高要区", + "code": "441204" + }, + { + "name": "广宁县", + "code": "441223" + }, + { + "name": "怀集县", + "code": "441224" + }, + { + "name": "封开县", + "code": "441225" + }, + { + "name": "德庆县", + "code": "441226" + }, + { + "name": "四会市", + "code": "441284" + }] + }, + { + "name": "惠州市", + "code": "441300", + "area": [{ + "name": "市辖区", + "code": "441301" + }, + { + "name": "惠城区", + "code": "441302" + }, + { + "name": "惠阳区", + "code": "441303" + }, + { + "name": "博罗县", + "code": "441322" + }, + { + "name": "惠东县", + "code": "441323" + }, + { + "name": "龙门县", + "code": "441324" + }] + }, + { + "name": "梅州市", + "code": "441400", + "area": [{ + "name": "市辖区", + "code": "441401" + }, + { + "name": "梅江区", + "code": "441402" + }, + { + "name": "梅县区", + "code": "441403" + }, + { + "name": "大埔县", + "code": "441422" + }, + { + "name": "丰顺县", + "code": "441423" + }, + { + "name": "五华县", + "code": "441424" + }, + { + "name": "平远县", + "code": "441426" + }, + { + "name": "蕉岭县", + "code": "441427" + }, + { + "name": "兴宁市", + "code": "441481" + }] + }, + { + "name": "汕尾市", + "code": "441500", + "area": [{ + "name": "市辖区", + "code": "441501" + }, + { + "name": "城区", + "code": "441502" + }, + { + "name": "海丰县", + "code": "441521" + }, + { + "name": "陆河县", + "code": "441523" + }, + { + "name": "陆丰市", + "code": "441581" + }] + }, + { + "name": "河源市", + "code": "441600", + "area": [{ + "name": "市辖区", + "code": "441601" + }, + { + "name": "源城区", + "code": "441602" + }, + { + "name": "紫金县", + "code": "441621" + }, + { + "name": "龙川县", + "code": "441622" + }, + { + "name": "连平县", + "code": "441623" + }, + { + "name": "和平县", + "code": "441624" + }, + { + "name": "东源县", + "code": "441625" + }] + }, + { + "name": "阳江市", + "code": "441700", + "area": [{ + "name": "市辖区", + "code": "441701" + }, + { + "name": "江城区", + "code": "441702" + }, + { + "name": "阳东区", + "code": "441704" + }, + { + "name": "阳西县", + "code": "441721" + }, + { + "name": "阳春市", + "code": "441781" + }] + }, + { + "name": "清远市", + "code": "441800", + "area": [{ + "name": "市辖区", + "code": "441801" + }, + { + "name": "清城区", + "code": "441802" + }, + { + "name": "清新区", + "code": "441803" + }, + { + "name": "佛冈县", + "code": "441821" + }, + { + "name": "阳山县", + "code": "441823" + }, + { + "name": "连山壮族瑶族自治县", + "code": "441825" + }, + { + "name": "连南瑶族自治县", + "code": "441826" + }, + { + "name": "英德市", + "code": "441881" + }, + { + "name": "连州市", + "code": "441882" + }] + }, + { + "name": "东莞市", + "code": "441900", + "area": [] + }, + { + "name": "中山市", + "code": "442000", + "area": [] + }, + { + "name": "潮州市", + "code": "445100", + "area": [{ + "name": "市辖区", + "code": "445101" + }, + { + "name": "湘桥区", + "code": "445102" + }, + { + "name": "潮安区", + "code": "445103" + }, + { + "name": "饶平县", + "code": "445122" + }] + }, + { + "name": "揭阳市", + "code": "445200", + "area": [{ + "name": "市辖区", + "code": "445201" + }, + { + "name": "榕城区", + "code": "445202" + }, + { + "name": "揭东区", + "code": "445203" + }, + { + "name": "揭西县", + "code": "445222" + }, + { + "name": "惠来县", + "code": "445224" + }, + { + "name": "普宁市", + "code": "445281" + }] + }, + { + "name": "云浮市", + "code": "445300", + "area": [{ + "name": "市辖区", + "code": "445301" + }, + { + "name": "云城区", + "code": "445302" + }, + { + "name": "云安区", + "code": "445303" + }, + { + "name": "新兴县", + "code": "445321" + }, + { + "name": "郁南县", + "code": "445322" + }, + { + "name": "罗定市", + "code": "445381" + }] + }] +}, +{ + "name": "广西壮族自治区", + "code": "450000", + "city": [{ + "name": "南宁市", + "code": "450100", + "area": [{ + "name": "市辖区", + "code": "450101" + }, + { + "name": "兴宁区", + "code": "450102" + }, + { + "name": "青秀区", + "code": "450103" + }, + { + "name": "江南区", + "code": "450105" + }, + { + "name": "西乡塘区", + "code": "450107" + }, + { + "name": "良庆区", + "code": "450108" + }, + { + "name": "邕宁区", + "code": "450109" + }, + { + "name": "武鸣区", + "code": "450110" + }, + { + "name": "隆安县", + "code": "450123" + }, + { + "name": "马山县", + "code": "450124" + }, + { + "name": "上林县", + "code": "450125" + }, + { + "name": "宾阳县", + "code": "450126" + }, + { + "name": "横县", + "code": "450127" + }] + }, + { + "name": "柳州市", + "code": "450200", + "area": [{ + "name": "市辖区", + "code": "450201" + }, + { + "name": "城中区", + "code": "450202" + }, + { + "name": "鱼峰区", + "code": "450203" + }, + { + "name": "柳南区", + "code": "450204" + }, + { + "name": "柳北区", + "code": "450205" + }, + { + "name": "柳江区", + "code": "450206" + }, + { + "name": "柳城县", + "code": "450222" + }, + { + "name": "鹿寨县", + "code": "450223" + }, + { + "name": "融安县", + "code": "450224" + }, + { + "name": "融水苗族自治县", + "code": "450225" + }, + { + "name": "三江侗族自治县", + "code": "450226" + }] + }, + { + "name": "桂林市", + "code": "450300", + "area": [{ + "name": "市辖区", + "code": "450301" + }, + { + "name": "秀峰区", + "code": "450302" + }, + { + "name": "叠彩区", + "code": "450303" + }, + { + "name": "象山区", + "code": "450304" + }, + { + "name": "七星区", + "code": "450305" + }, + { + "name": "雁山区", + "code": "450311" + }, + { + "name": "临桂区", + "code": "450312" + }, + { + "name": "阳朔县", + "code": "450321" + }, + { + "name": "灵川县", + "code": "450323" + }, + { + "name": "全州县", + "code": "450324" + }, + { + "name": "兴安县", + "code": "450325" + }, + { + "name": "永福县", + "code": "450326" + }, + { + "name": "灌阳县", + "code": "450327" + }, + { + "name": "龙胜各族自治县", + "code": "450328" + }, + { + "name": "资源县", + "code": "450329" + }, + { + "name": "平乐县", + "code": "450330" + }, + { + "name": "荔浦县", + "code": "450331" + }, + { + "name": "恭城瑶族自治县", + "code": "450332" + }] + }, + { + "name": "梧州市", + "code": "450400", + "area": [{ + "name": "市辖区", + "code": "450401" + }, + { + "name": "万秀区", + "code": "450403" + }, + { + "name": "长洲区", + "code": "450405" + }, + { + "name": "龙圩区", + "code": "450406" + }, + { + "name": "苍梧县", + "code": "450421" + }, + { + "name": "藤县", + "code": "450422" + }, + { + "name": "蒙山县", + "code": "450423" + }, + { + "name": "岑溪市", + "code": "450481" + }] + }, + { + "name": "北海市", + "code": "450500", + "area": [{ + "name": "市辖区", + "code": "450501" + }, + { + "name": "海城区", + "code": "450502" + }, + { + "name": "银海区", + "code": "450503" + }, + { + "name": "铁山港区", + "code": "450512" + }, + { + "name": "合浦县", + "code": "450521" + }] + }, + { + "name": "防城港市", + "code": "450600", + "area": [{ + "name": "市辖区", + "code": "450601" + }, + { + "name": "港口区", + "code": "450602" + }, + { + "name": "防城区", + "code": "450603" + }, + { + "name": "上思县", + "code": "450621" + }, + { + "name": "东兴市", + "code": "450681" + }] + }, + { + "name": "钦州市", + "code": "450700", + "area": [{ + "name": "市辖区", + "code": "450701" + }, + { + "name": "钦南区", + "code": "450702" + }, + { + "name": "钦北区", + "code": "450703" + }, + { + "name": "灵山县", + "code": "450721" + }, + { + "name": "浦北县", + "code": "450722" + }] + }, + { + "name": "贵港市", + "code": "450800", + "area": [{ + "name": "市辖区", + "code": "450801" + }, + { + "name": "港北区", + "code": "450802" + }, + { + "name": "港南区", + "code": "450803" + }, + { + "name": "覃塘区", + "code": "450804" + }, + { + "name": "平南县", + "code": "450821" + }, + { + "name": "桂平市", + "code": "450881" + }] + }, + { + "name": "玉林市", + "code": "450900", + "area": [{ + "name": "市辖区", + "code": "450901" + }, + { + "name": "玉州区", + "code": "450902" + }, + { + "name": "福绵区", + "code": "450903" + }, + { + "name": "容县", + "code": "450921" + }, + { + "name": "陆川县", + "code": "450922" + }, + { + "name": "博白县", + "code": "450923" + }, + { + "name": "兴业县", + "code": "450924" + }, + { + "name": "北流市", + "code": "450981" + }] + }, + { + "name": "百色市", + "code": "451000", + "area": [{ + "name": "市辖区", + "code": "451001" + }, + { + "name": "右江区", + "code": "451002" + }, + { + "name": "田阳县", + "code": "451021" + }, + { + "name": "田东县", + "code": "451022" + }, + { + "name": "平果县", + "code": "451023" + }, + { + "name": "德保县", + "code": "451024" + }, + { + "name": "那坡县", + "code": "451026" + }, + { + "name": "凌云县", + "code": "451027" + }, + { + "name": "乐业县", + "code": "451028" + }, + { + "name": "田林县", + "code": "451029" + }, + { + "name": "西林县", + "code": "451030" + }, + { + "name": "隆林各族自治县", + "code": "451031" + }, + { + "name": "靖西市", + "code": "451081" + }] + }, + { + "name": "贺州市", + "code": "451100", + "area": [{ + "name": "市辖区", + "code": "451101" + }, + { + "name": "八步区", + "code": "451102" + }, + { + "name": "平桂区", + "code": "451103" + }, + { + "name": "昭平县", + "code": "451121" + }, + { + "name": "钟山县", + "code": "451122" + }, + { + "name": "富川瑶族自治县", + "code": "451123" + }] + }, + { + "name": "河池市", + "code": "451200", + "area": [{ + "name": "市辖区", + "code": "451201" + }, + { + "name": "金城江区", + "code": "451202" + }, + { + "name": "南丹县", + "code": "451221" + }, + { + "name": "天峨县", + "code": "451222" + }, + { + "name": "凤山县", + "code": "451223" + }, + { + "name": "东兰县", + "code": "451224" + }, + { + "name": "罗城仫佬族自治县", + "code": "451225" + }, + { + "name": "环江毛南族自治县", + "code": "451226" + }, + { + "name": "巴马瑶族自治县", + "code": "451227" + }, + { + "name": "都安瑶族自治县", + "code": "451228" + }, + { + "name": "大化瑶族自治县", + "code": "451229" + }, + { + "name": "宜州市", + "code": "451281" + }] + }, + { + "name": "来宾市", + "code": "451300", + "area": [{ + "name": "市辖区", + "code": "451301" + }, + { + "name": "兴宾区", + "code": "451302" + }, + { + "name": "忻城县", + "code": "451321" + }, + { + "name": "象州县", + "code": "451322" + }, + { + "name": "武宣县", + "code": "451323" + }, + { + "name": "金秀瑶族自治县", + "code": "451324" + }, + { + "name": "合山市", + "code": "451381" + }] + }, + { + "name": "崇左市", + "code": "451400", + "area": [{ + "name": "市辖区", + "code": "451401" + }, + { + "name": "江州区", + "code": "451402" + }, + { + "name": "扶绥县", + "code": "451421" + }, + { + "name": "宁明县", + "code": "451422" + }, + { + "name": "龙州县", + "code": "451423" + }, + { + "name": "大新县", + "code": "451424" + }, + { + "name": "天等县", + "code": "451425" + }, + { + "name": "凭祥市", + "code": "451481" + }] + }] +}, +{ + "name": "海南省", + "code": "460000", + "city": [{ + "name": "海口市", + "code": "460100", + "area": [{ + "name": "市辖区", + "code": "460101" + }, + { + "name": "秀英区", + "code": "460105" + }, + { + "name": "龙华区", + "code": "460106" + }, + { + "name": "琼山区", + "code": "460107" + }, + { + "name": "美兰区", + "code": "460108" + }] + }, + { + "name": "三亚市", + "code": "460200", + "area": [{ + "name": "市辖区", + "code": "460201" + }, + { + "name": "海棠区", + "code": "460202" + }, + { + "name": "吉阳区", + "code": "460203" + }, + { + "name": "天涯区", + "code": "460204" + }, + { + "name": "崖州区", + "code": "460205" + }] + }, + { + "name": "三沙市", + "code": "460300", + "area": [] + }, + { + "name": "儋州市", + "code": "460400", + "area": [] + }, + { + "name": "省直辖县级行政区划", + "code": "469000", + "area": [{ + "name": "五指山市", + "code": "469001" + }, + { + "name": "琼海市", + "code": "469002" + }, + { + "name": "文昌市", + "code": "469005" + }, + { + "name": "万宁市", + "code": "469006" + }, + { + "name": "东方市", + "code": "469007" + }, + { + "name": "定安县", + "code": "469021" + }, + { + "name": "屯昌县", + "code": "469022" + }, + { + "name": "澄迈县", + "code": "469023" + }, + { + "name": "临高县", + "code": "469024" + }, + { + "name": "白沙黎族自治县", + "code": "469025" + }, + { + "name": "昌江黎族自治县", + "code": "469026" + }, + { + "name": "乐东黎族自治县", + "code": "469027" + }, + { + "name": "陵水黎族自治县", + "code": "469028" + }, + { + "name": "保亭黎族苗族自治县", + "code": "469029" + }, + { + "name": "琼中黎族苗族自治县", + "code": "469030" + }] + }] +}, +{ + "name": "重庆市", + "code": "500000", + "city": [{ + "name": "市辖区", + "code": "500100", + "area": [{ + "name": "万州区", + "code": "500101" + }, + { + "name": "涪陵区", + "code": "500102" + }, + { + "name": "渝中区", + "code": "500103" + }, + { + "name": "大渡口区", + "code": "500104" + }, + { + "name": "江北区", + "code": "500105" + }, + { + "name": "沙坪坝区", + "code": "500106" + }, + { + "name": "九龙坡区", + "code": "500107" + }, + { + "name": "南岸区", + "code": "500108" + }, + { + "name": "北碚区", + "code": "500109" + }, + { + "name": "綦江区", + "code": "500110" + }, + { + "name": "大足区", + "code": "500111" + }, + { + "name": "渝北区", + "code": "500112" + }, + { + "name": "巴南区", + "code": "500113" + }, + { + "name": "黔江区", + "code": "500114" + }, + { + "name": "长寿区", + "code": "500115" + }, + { + "name": "江津区", + "code": "500116" + }, + { + "name": "合川区", + "code": "500117" + }, + { + "name": "永川区", + "code": "500118" + }, + { + "name": "南川区", + "code": "500119" + }, + { + "name": "璧山区", + "code": "500120" + }, + { + "name": "铜梁区", + "code": "500151" + }, + { + "name": "潼南区", + "code": "500152" + }, + { + "name": "荣昌区", + "code": "500153" + }, + { + "name": "开州区", + "code": "500154" + }] + }, + { + "name": "县", + "code": "500200", + "area": [{ + "name": "梁平县", + "code": "500228" + }, + { + "name": "城口县", + "code": "500229" + }, + { + "name": "丰都县", + "code": "500230" + }, + { + "name": "垫江县", + "code": "500231" + }, + { + "name": "武隆县", + "code": "500232" + }, + { + "name": "忠县", + "code": "500233" + }, + { + "name": "云阳县", + "code": "500235" + }, + { + "name": "奉节县", + "code": "500236" + }, + { + "name": "巫山县", + "code": "500237" + }, + { + "name": "巫溪县", + "code": "500238" + }, + { + "name": "石柱土家族自治县", + "code": "500240" + }, + { + "name": "秀山土家族苗族自治县", + "code": "500241" + }, + { + "name": "酉阳土家族苗族自治县", + "code": "500242" + }, + { + "name": "彭水苗族土家族自治县", + "code": "500243" + }] + }] +}, +{ + "name": "四川省", + "code": "510000", + "city": [{ + "name": "成都市", + "code": "510100", + "area": [{ + "name": "市辖区", + "code": "510101" + }, + { + "name": "锦江区", + "code": "510104" + }, + { + "name": "青羊区", + "code": "510105" + }, + { + "name": "金牛区", + "code": "510106" + }, + { + "name": "武侯区", + "code": "510107" + }, + { + "name": "成华区", + "code": "510108" + }, + { + "name": "龙泉驿区", + "code": "510112" + }, + { + "name": "青白江区", + "code": "510113" + }, + { + "name": "新都区", + "code": "510114" + }, + { + "name": "温江区", + "code": "510115" + }, + { + "name": "双流区", + "code": "510116" + }, + { + "name": "金堂县", + "code": "510121" + }, + { + "name": "郫县", + "code": "510124" + }, + { + "name": "大邑县", + "code": "510129" + }, + { + "name": "蒲江县", + "code": "510131" + }, + { + "name": "新津县", + "code": "510132" + }, + { + "name": "都江堰市", + "code": "510181" + }, + { + "name": "彭州市", + "code": "510182" + }, + { + "name": "邛崃市", + "code": "510183" + }, + { + "name": "崇州市", + "code": "510184" + }, + { + "name": "简阳市", + "code": "510185" + }] + }, + { + "name": "自贡市", + "code": "510300", + "area": [{ + "name": "市辖区", + "code": "510301" + }, + { + "name": "自流井区", + "code": "510302" + }, + { + "name": "贡井区", + "code": "510303" + }, + { + "name": "大安区", + "code": "510304" + }, + { + "name": "沿滩区", + "code": "510311" + }, + { + "name": "荣县", + "code": "510321" + }, + { + "name": "富顺县", + "code": "510322" + }] + }, + { + "name": "攀枝花市", + "code": "510400", + "area": [{ + "name": "市辖区", + "code": "510401" + }, + { + "name": "东区", + "code": "510402" + }, + { + "name": "西区", + "code": "510403" + }, + { + "name": "仁和区", + "code": "510411" + }, + { + "name": "米易县", + "code": "510421" + }, + { + "name": "盐边县", + "code": "510422" + }] + }, + { + "name": "泸州市", + "code": "510500", + "area": [{ + "name": "市辖区", + "code": "510501" + }, + { + "name": "江阳区", + "code": "510502" + }, + { + "name": "纳溪区", + "code": "510503" + }, + { + "name": "龙马潭区", + "code": "510504" + }, + { + "name": "泸县", + "code": "510521" + }, + { + "name": "合江县", + "code": "510522" + }, + { + "name": "叙永县", + "code": "510524" + }, + { + "name": "古蔺县", + "code": "510525" + }] + }, + { + "name": "德阳市", + "code": "510600", + "area": [{ + "name": "市辖区", + "code": "510601" + }, + { + "name": "旌阳区", + "code": "510603" + }, + { + "name": "中江县", + "code": "510623" + }, + { + "name": "罗江县", + "code": "510626" + }, + { + "name": "广汉市", + "code": "510681" + }, + { + "name": "什邡市", + "code": "510682" + }, + { + "name": "绵竹市", + "code": "510683" + }] + }, + { + "name": "绵阳市", + "code": "510700", + "area": [{ + "name": "市辖区", + "code": "510701" + }, + { + "name": "涪城区", + "code": "510703" + }, + { + "name": "游仙区", + "code": "510704" + }, + { + "name": "安州区", + "code": "510705" + }, + { + "name": "三台县", + "code": "510722" + }, + { + "name": "盐亭县", + "code": "510723" + }, + { + "name": "梓潼县", + "code": "510725" + }, + { + "name": "北川羌族自治县", + "code": "510726" + }, + { + "name": "平武县", + "code": "510727" + }, + { + "name": "江油市", + "code": "510781" + }] + }, + { + "name": "广元市", + "code": "510800", + "area": [{ + "name": "市辖区", + "code": "510801" + }, + { + "name": "利州区", + "code": "510802" + }, + { + "name": "昭化区", + "code": "510811" + }, + { + "name": "朝天区", + "code": "510812" + }, + { + "name": "旺苍县", + "code": "510821" + }, + { + "name": "青川县", + "code": "510822" + }, + { + "name": "剑阁县", + "code": "510823" + }, + { + "name": "苍溪县", + "code": "510824" + }] + }, + { + "name": "遂宁市", + "code": "510900", + "area": [{ + "name": "市辖区", + "code": "510901" + }, + { + "name": "船山区", + "code": "510903" + }, + { + "name": "安居区", + "code": "510904" + }, + { + "name": "蓬溪县", + "code": "510921" + }, + { + "name": "射洪县", + "code": "510922" + }, + { + "name": "大英县", + "code": "510923" + }] + }, + { + "name": "内江市", + "code": "511000", + "area": [{ + "name": "市辖区", + "code": "511001" + }, + { + "name": "市中区", + "code": "511002" + }, + { + "name": "东兴区", + "code": "511011" + }, + { + "name": "威远县", + "code": "511024" + }, + { + "name": "资中县", + "code": "511025" + }, + { + "name": "隆昌县", + "code": "511028" + }] + }, + { + "name": "乐山市", + "code": "511100", + "area": [{ + "name": "市辖区", + "code": "511101" + }, + { + "name": "市中区", + "code": "511102" + }, + { + "name": "沙湾区", + "code": "511111" + }, + { + "name": "五通桥区", + "code": "511112" + }, + { + "name": "金口河区", + "code": "511113" + }, + { + "name": "犍为县", + "code": "511123" + }, + { + "name": "井研县", + "code": "511124" + }, + { + "name": "夹江县", + "code": "511126" + }, + { + "name": "沐川县", + "code": "511129" + }, + { + "name": "峨边彝族自治县", + "code": "511132" + }, + { + "name": "马边彝族自治县", + "code": "511133" + }, + { + "name": "峨眉山市", + "code": "511181" + }] + }, + { + "name": "南充市", + "code": "511300", + "area": [{ + "name": "市辖区", + "code": "511301" + }, + { + "name": "顺庆区", + "code": "511302" + }, + { + "name": "高坪区", + "code": "511303" + }, + { + "name": "嘉陵区", + "code": "511304" + }, + { + "name": "南部县", + "code": "511321" + }, + { + "name": "营山县", + "code": "511322" + }, + { + "name": "蓬安县", + "code": "511323" + }, + { + "name": "仪陇县", + "code": "511324" + }, + { + "name": "西充县", + "code": "511325" + }, + { + "name": "阆中市", + "code": "511381" + }] + }, + { + "name": "眉山市", + "code": "511400", + "area": [{ + "name": "市辖区", + "code": "511401" + }, + { + "name": "东坡区", + "code": "511402" + }, + { + "name": "彭山区", + "code": "511403" + }, + { + "name": "仁寿县", + "code": "511421" + }, + { + "name": "洪雅县", + "code": "511423" + }, + { + "name": "丹棱县", + "code": "511424" + }, + { + "name": "青神县", + "code": "511425" + }] + }, + { + "name": "宜宾市", + "code": "511500", + "area": [{ + "name": "市辖区", + "code": "511501" + }, + { + "name": "翠屏区", + "code": "511502" + }, + { + "name": "南溪区", + "code": "511503" + }, + { + "name": "宜宾县", + "code": "511521" + }, + { + "name": "江安县", + "code": "511523" + }, + { + "name": "长宁县", + "code": "511524" + }, + { + "name": "高县", + "code": "511525" + }, + { + "name": "珙县", + "code": "511526" + }, + { + "name": "筠连县", + "code": "511527" + }, + { + "name": "兴文县", + "code": "511528" + }, + { + "name": "屏山县", + "code": "511529" + }] + }, + { + "name": "广安市", + "code": "511600", + "area": [{ + "name": "市辖区", + "code": "511601" + }, + { + "name": "广安区", + "code": "511602" + }, + { + "name": "前锋区", + "code": "511603" + }, + { + "name": "岳池县", + "code": "511621" + }, + { + "name": "武胜县", + "code": "511622" + }, + { + "name": "邻水县", + "code": "511623" + }, + { + "name": "华蓥市", + "code": "511681" + }] + }, + { + "name": "达州市", + "code": "511700", + "area": [{ + "name": "市辖区", + "code": "511701" + }, + { + "name": "通川区", + "code": "511702" + }, + { + "name": "达川区", + "code": "511703" + }, + { + "name": "宣汉县", + "code": "511722" + }, + { + "name": "开江县", + "code": "511723" + }, + { + "name": "大竹县", + "code": "511724" + }, + { + "name": "渠县", + "code": "511725" + }, + { + "name": "万源市", + "code": "511781" + }] + }, + { + "name": "雅安市", + "code": "511800", + "area": [{ + "name": "市辖区", + "code": "511801" + }, + { + "name": "雨城区", + "code": "511802" + }, + { + "name": "名山区", + "code": "511803" + }, + { + "name": "荥经县", + "code": "511822" + }, + { + "name": "汉源县", + "code": "511823" + }, + { + "name": "石棉县", + "code": "511824" + }, + { + "name": "天全县", + "code": "511825" + }, + { + "name": "芦山县", + "code": "511826" + }, + { + "name": "宝兴县", + "code": "511827" + }] + }, + { + "name": "巴中市", + "code": "511900", + "area": [{ + "name": "市辖区", + "code": "511901" + }, + { + "name": "巴州区", + "code": "511902" + }, + { + "name": "恩阳区", + "code": "511903" + }, + { + "name": "通江县", + "code": "511921" + }, + { + "name": "南江县", + "code": "511922" + }, + { + "name": "平昌县", + "code": "511923" + }] + }, + { + "name": "资阳市", + "code": "512000", + "area": [{ + "name": "市辖区", + "code": "512001" + }, + { + "name": "雁江区", + "code": "512002" + }, + { + "name": "安岳县", + "code": "512021" + }, + { + "name": "乐至县", + "code": "512022" + }] + }, + { + "name": "阿坝藏族羌族自治州", + "code": "513200", + "area": [{ + "name": "马尔康市", + "code": "513201" + }, + { + "name": "汶川县", + "code": "513221" + }, + { + "name": "理县", + "code": "513222" + }, + { + "name": "茂县", + "code": "513223" + }, + { + "name": "松潘县", + "code": "513224" + }, + { + "name": "九寨沟县", + "code": "513225" + }, + { + "name": "金川县", + "code": "513226" + }, + { + "name": "小金县", + "code": "513227" + }, + { + "name": "黑水县", + "code": "513228" + }, + { + "name": "壤塘县", + "code": "513230" + }, + { + "name": "阿坝县", + "code": "513231" + }, + { + "name": "若尔盖县", + "code": "513232" + }, + { + "name": "红原县", + "code": "513233" + }] + }, + { + "name": "甘孜藏族自治州", + "code": "513300", + "area": [{ + "name": "康定市", + "code": "513301" + }, + { + "name": "泸定县", + "code": "513322" + }, + { + "name": "丹巴县", + "code": "513323" + }, + { + "name": "九龙县", + "code": "513324" + }, + { + "name": "雅江县", + "code": "513325" + }, + { + "name": "道孚县", + "code": "513326" + }, + { + "name": "炉霍县", + "code": "513327" + }, + { + "name": "甘孜县", + "code": "513328" + }, + { + "name": "新龙县", + "code": "513329" + }, + { + "name": "德格县", + "code": "513330" + }, + { + "name": "白玉县", + "code": "513331" + }, + { + "name": "石渠县", + "code": "513332" + }, + { + "name": "色达县", + "code": "513333" + }, + { + "name": "理塘县", + "code": "513334" + }, + { + "name": "巴塘县", + "code": "513335" + }, + { + "name": "乡城县", + "code": "513336" + }, + { + "name": "稻城县", + "code": "513337" + }, + { + "name": "得荣县", + "code": "513338" + }] + }, + { + "name": "凉山彝族自治州", + "code": "513400", + "area": [{ + "name": "西昌市", + "code": "513401" + }, + { + "name": "木里藏族自治县", + "code": "513422" + }, + { + "name": "盐源县", + "code": "513423" + }, + { + "name": "德昌县", + "code": "513424" + }, + { + "name": "会理县", + "code": "513425" + }, + { + "name": "会东县", + "code": "513426" + }, + { + "name": "宁南县", + "code": "513427" + }, + { + "name": "普格县", + "code": "513428" + }, + { + "name": "布拖县", + "code": "513429" + }, + { + "name": "金阳县", + "code": "513430" + }, + { + "name": "昭觉县", + "code": "513431" + }, + { + "name": "喜德县", + "code": "513432" + }, + { + "name": "冕宁县", + "code": "513433" + }, + { + "name": "越西县", + "code": "513434" + }, + { + "name": "甘洛县", + "code": "513435" + }, + { + "name": "美姑县", + "code": "513436" + }, + { + "name": "雷波县", + "code": "513437" + }] + }] +}, +{ + "name": "贵州省", + "code": "520000", + "city": [{ + "name": "贵阳市", + "code": "520100", + "area": [{ + "name": "市辖区", + "code": "520101" + }, + { + "name": "南明区", + "code": "520102" + }, + { + "name": "云岩区", + "code": "520103" + }, + { + "name": "花溪区", + "code": "520111" + }, + { + "name": "乌当区", + "code": "520112" + }, + { + "name": "白云区", + "code": "520113" + }, + { + "name": "观山湖区", + "code": "520115" + }, + { + "name": "开阳县", + "code": "520121" + }, + { + "name": "息烽县", + "code": "520122" + }, + { + "name": "修文县", + "code": "520123" + }, + { + "name": "清镇市", + "code": "520181" + }] + }, + { + "name": "六盘水市", + "code": "520200", + "area": [{ + "name": "钟山区", + "code": "520201" + }, + { + "name": "六枝特区", + "code": "520203" + }, + { + "name": "水城县", + "code": "520221" + }, + { + "name": "盘县", + "code": "520222" + }] + }, + { + "name": "遵义市", + "code": "520300", + "area": [{ + "name": "市辖区", + "code": "520301" + }, + { + "name": "红花岗区", + "code": "520302" + }, + { + "name": "汇川区", + "code": "520303" + }, + { + "name": "播州区", + "code": "520304" + }, + { + "name": "桐梓县", + "code": "520322" + }, + { + "name": "绥阳县", + "code": "520323" + }, + { + "name": "正安县", + "code": "520324" + }, + { + "name": "道真仡佬族苗族自治县", + "code": "520325" + }, + { + "name": "务川仡佬族苗族自治县", + "code": "520326" + }, + { + "name": "凤冈县", + "code": "520327" + }, + { + "name": "湄潭县", + "code": "520328" + }, + { + "name": "余庆县", + "code": "520329" + }, + { + "name": "习水县", + "code": "520330" + }, + { + "name": "赤水市", + "code": "520381" + }, + { + "name": "仁怀市", + "code": "520382" + }] + }, + { + "name": "安顺市", + "code": "520400", + "area": [{ + "name": "市辖区", + "code": "520401" + }, + { + "name": "西秀区", + "code": "520402" + }, + { + "name": "平坝区", + "code": "520403" + }, + { + "name": "普定县", + "code": "520422" + }, + { + "name": "镇宁布依族苗族自治县", + "code": "520423" + }, + { + "name": "关岭布依族苗族自治县", + "code": "520424" + }, + { + "name": "紫云苗族布依族自治县", + "code": "520425" + }] + }, + { + "name": "毕节市", + "code": "520500", + "area": [{ + "name": "市辖区", + "code": "520501" + }, + { + "name": "七星关区", + "code": "520502" + }, + { + "name": "大方县", + "code": "520521" + }, + { + "name": "黔西县", + "code": "520522" + }, + { + "name": "金沙县", + "code": "520523" + }, + { + "name": "织金县", + "code": "520524" + }, + { + "name": "纳雍县", + "code": "520525" + }, + { + "name": "威宁彝族回族苗族自治县", + "code": "520526" + }, + { + "name": "赫章县", + "code": "520527" + }] + }, + { + "name": "铜仁市", + "code": "520600", + "area": [{ + "name": "市辖区", + "code": "520601" + }, + { + "name": "碧江区", + "code": "520602" + }, + { + "name": "万山区", + "code": "520603" + }, + { + "name": "江口县", + "code": "520621" + }, + { + "name": "玉屏侗族自治县", + "code": "520622" + }, + { + "name": "石阡县", + "code": "520623" + }, + { + "name": "思南县", + "code": "520624" + }, + { + "name": "印江土家族苗族自治县", + "code": "520625" + }, + { + "name": "德江县", + "code": "520626" + }, + { + "name": "沿河土家族自治县", + "code": "520627" + }, + { + "name": "松桃苗族自治县", + "code": "520628" + }] + }, + { + "name": "黔西南布依族苗族自治州", + "code": "522300", + "area": [{ + "name": "兴义市", + "code": "522301" + }, + { + "name": "兴仁县", + "code": "522322" + }, + { + "name": "普安县", + "code": "522323" + }, + { + "name": "晴隆县", + "code": "522324" + }, + { + "name": "贞丰县", + "code": "522325" + }, + { + "name": "望谟县", + "code": "522326" + }, + { + "name": "册亨县", + "code": "522327" + }, + { + "name": "安龙县", + "code": "522328" + }] + }, + { + "name": "黔东南苗族侗族自治州", + "code": "522600", + "area": [{ + "name": "凯里市", + "code": "522601" + }, + { + "name": "黄平县", + "code": "522622" + }, + { + "name": "施秉县", + "code": "522623" + }, + { + "name": "三穗县", + "code": "522624" + }, + { + "name": "镇远县", + "code": "522625" + }, + { + "name": "岑巩县", + "code": "522626" + }, + { + "name": "天柱县", + "code": "522627" + }, + { + "name": "锦屏县", + "code": "522628" + }, + { + "name": "剑河县", + "code": "522629" + }, + { + "name": "台江县", + "code": "522630" + }, + { + "name": "黎平县", + "code": "522631" + }, + { + "name": "榕江县", + "code": "522632" + }, + { + "name": "从江县", + "code": "522633" + }, + { + "name": "雷山县", + "code": "522634" + }, + { + "name": "麻江县", + "code": "522635" + }, + { + "name": "丹寨县", + "code": "522636" + }] + }, + { + "name": "黔南布依族苗族自治州", + "code": "522700", + "area": [{ + "name": "都匀市", + "code": "522701" + }, + { + "name": "福泉市", + "code": "522702" + }, + { + "name": "荔波县", + "code": "522722" + }, + { + "name": "贵定县", + "code": "522723" + }, + { + "name": "瓮安县", + "code": "522725" + }, + { + "name": "独山县", + "code": "522726" + }, + { + "name": "平塘县", + "code": "522727" + }, + { + "name": "罗甸县", + "code": "522728" + }, + { + "name": "长顺县", + "code": "522729" + }, + { + "name": "龙里县", + "code": "522730" + }, + { + "name": "惠水县", + "code": "522731" + }, + { + "name": "三都水族自治县", + "code": "522732" + }] + }] +}, +{ + "name": "云南省", + "code": "530000", + "city": [{ + "name": "昆明市", + "code": "530100", + "area": [{ + "name": "市辖区", + "code": "530101" + }, + { + "name": "五华区", + "code": "530102" + }, + { + "name": "盘龙区", + "code": "530103" + }, + { + "name": "官渡区", + "code": "530111" + }, + { + "name": "西山区", + "code": "530112" + }, + { + "name": "东川区", + "code": "530113" + }, + { + "name": "呈贡区", + "code": "530114" + }, + { + "name": "晋宁县", + "code": "530122" + }, + { + "name": "富民县", + "code": "530124" + }, + { + "name": "宜良县", + "code": "530125" + }, + { + "name": "石林彝族自治县", + "code": "530126" + }, + { + "name": "嵩明县", + "code": "530127" + }, + { + "name": "禄劝彝族苗族自治县", + "code": "530128" + }, + { + "name": "寻甸回族彝族自治县", + "code": "530129" + }, + { + "name": "安宁市", + "code": "530181" + }] + }, + { + "name": "曲靖市", + "code": "530300", + "area": [{ + "name": "市辖区", + "code": "530301" + }, + { + "name": "麒麟区", + "code": "530302" + }, + { + "name": "沾益区", + "code": "530303" + }, + { + "name": "马龙县", + "code": "530321" + }, + { + "name": "陆良县", + "code": "530322" + }, + { + "name": "师宗县", + "code": "530323" + }, + { + "name": "罗平县", + "code": "530324" + }, + { + "name": "富源县", + "code": "530325" + }, + { + "name": "会泽县", + "code": "530326" + }, + { + "name": "宣威市", + "code": "530381" + }] + }, + { + "name": "玉溪市", + "code": "530400", + "area": [{ + "name": "市辖区", + "code": "530401" + }, + { + "name": "红塔区", + "code": "530402" + }, + { + "name": "江川区", + "code": "530403" + }, + { + "name": "澄江县", + "code": "530422" + }, + { + "name": "通海县", + "code": "530423" + }, + { + "name": "华宁县", + "code": "530424" + }, + { + "name": "易门县", + "code": "530425" + }, + { + "name": "峨山彝族自治县", + "code": "530426" + }, + { + "name": "新平彝族傣族自治县", + "code": "530427" + }, + { + "name": "元江哈尼族彝族傣族自治县", + "code": "530428" + }] + }, + { + "name": "保山市", + "code": "530500", + "area": [{ + "name": "市辖区", + "code": "530501" + }, + { + "name": "隆阳区", + "code": "530502" + }, + { + "name": "施甸县", + "code": "530521" + }, + { + "name": "龙陵县", + "code": "530523" + }, + { + "name": "昌宁县", + "code": "530524" + }, + { + "name": "腾冲市", + "code": "530581" + }] + }, + { + "name": "昭通市", + "code": "530600", + "area": [{ + "name": "市辖区", + "code": "530601" + }, + { + "name": "昭阳区", + "code": "530602" + }, + { + "name": "鲁甸县", + "code": "530621" + }, + { + "name": "巧家县", + "code": "530622" + }, + { + "name": "盐津县", + "code": "530623" + }, + { + "name": "大关县", + "code": "530624" + }, + { + "name": "永善县", + "code": "530625" + }, + { + "name": "绥江县", + "code": "530626" + }, + { + "name": "镇雄县", + "code": "530627" + }, + { + "name": "彝良县", + "code": "530628" + }, + { + "name": "威信县", + "code": "530629" + }, + { + "name": "水富县", + "code": "530630" + }] + }, + { + "name": "丽江市", + "code": "530700", + "area": [{ + "name": "市辖区", + "code": "530701" + }, + { + "name": "古城区", + "code": "530702" + }, + { + "name": "玉龙纳西族自治县", + "code": "530721" + }, + { + "name": "永胜县", + "code": "530722" + }, + { + "name": "华坪县", + "code": "530723" + }, + { + "name": "宁蒗彝族自治县", + "code": "530724" + }] + }, + { + "name": "普洱市", + "code": "530800", + "area": [{ + "name": "市辖区", + "code": "530801" + }, + { + "name": "思茅区", + "code": "530802" + }, + { + "name": "宁洱哈尼族彝族自治县", + "code": "530821" + }, + { + "name": "墨江哈尼族自治县", + "code": "530822" + }, + { + "name": "景东彝族自治县", + "code": "530823" + }, + { + "name": "景谷傣族彝族自治县", + "code": "530824" + }, + { + "name": "镇沅彝族哈尼族拉祜族自治县", + "code": "530825" + }, + { + "name": "江城哈尼族彝族自治县", + "code": "530826" + }, + { + "name": "孟连傣族拉祜族佤族自治县", + "code": "530827" + }, + { + "name": "澜沧拉祜族自治县", + "code": "530828" + }, + { + "name": "西盟佤族自治县", + "code": "530829" + }] + }, + { + "name": "临沧市", + "code": "530900", + "area": [{ + "name": "市辖区", + "code": "530901" + }, + { + "name": "临翔区", + "code": "530902" + }, + { + "name": "凤庆县", + "code": "530921" + }, + { + "name": "云县", + "code": "530922" + }, + { + "name": "永德县", + "code": "530923" + }, + { + "name": "镇康县", + "code": "530924" + }, + { + "name": "双江拉祜族佤族布朗族傣族自治县", + "code": "530925" + }, + { + "name": "耿马傣族佤族自治县", + "code": "530926" + }, + { + "name": "沧源佤族自治县", + "code": "530927" + }] + }, + { + "name": "楚雄彝族自治州", + "code": "532300", + "area": [{ + "name": "楚雄市", + "code": "532301" + }, + { + "name": "双柏县", + "code": "532322" + }, + { + "name": "牟定县", + "code": "532323" + }, + { + "name": "南华县", + "code": "532324" + }, + { + "name": "姚安县", + "code": "532325" + }, + { + "name": "大姚县", + "code": "532326" + }, + { + "name": "永仁县", + "code": "532327" + }, + { + "name": "元谋县", + "code": "532328" + }, + { + "name": "武定县", + "code": "532329" + }, + { + "name": "禄丰县", + "code": "532331" + }] + }, + { + "name": "红河哈尼族彝族自治州", + "code": "532500", + "area": [{ + "name": "个旧市", + "code": "532501" + }, + { + "name": "开远市", + "code": "532502" + }, + { + "name": "蒙自市", + "code": "532503" + }, + { + "name": "弥勒市", + "code": "532504" + }, + { + "name": "屏边苗族自治县", + "code": "532523" + }, + { + "name": "建水县", + "code": "532524" + }, + { + "name": "石屏县", + "code": "532525" + }, + { + "name": "泸西县", + "code": "532527" + }, + { + "name": "元阳县", + "code": "532528" + }, + { + "name": "红河县", + "code": "532529" + }, + { + "name": "金平苗族瑶族傣族自治县", + "code": "532530" + }, + { + "name": "绿春县", + "code": "532531" + }, + { + "name": "河口瑶族自治县", + "code": "532532" + }] + }, + { + "name": "文山壮族苗族自治州", + "code": "532600", + "area": [{ + "name": "文山市", + "code": "532601" + }, + { + "name": "砚山县", + "code": "532622" + }, + { + "name": "西畴县", + "code": "532623" + }, + { + "name": "麻栗坡县", + "code": "532624" + }, + { + "name": "马关县", + "code": "532625" + }, + { + "name": "丘北县", + "code": "532626" + }, + { + "name": "广南县", + "code": "532627" + }, + { + "name": "富宁县", + "code": "532628" + }] + }, + { + "name": "西双版纳傣族自治州", + "code": "532800", + "area": [{ + "name": "景洪市", + "code": "532801" + }, + { + "name": "勐海县", + "code": "532822" + }, + { + "name": "勐腊县", + "code": "532823" + }] + }, + { + "name": "大理白族自治州", + "code": "532900", + "area": [{ + "name": "大理市", + "code": "532901" + }, + { + "name": "漾濞彝族自治县", + "code": "532922" + }, + { + "name": "祥云县", + "code": "532923" + }, + { + "name": "宾川县", + "code": "532924" + }, + { + "name": "弥渡县", + "code": "532925" + }, + { + "name": "南涧彝族自治县", + "code": "532926" + }, + { + "name": "巍山彝族回族自治县", + "code": "532927" + }, + { + "name": "永平县", + "code": "532928" + }, + { + "name": "云龙县", + "code": "532929" + }, + { + "name": "洱源县", + "code": "532930" + }, + { + "name": "剑川县", + "code": "532931" + }, + { + "name": "鹤庆县", + "code": "532932" + }] + }, + { + "name": "德宏傣族景颇族自治州", + "code": "533100", + "area": [{ + "name": "瑞丽市", + "code": "533102" + }, + { + "name": "芒市", + "code": "533103" + }, + { + "name": "梁河县", + "code": "533122" + }, + { + "name": "盈江县", + "code": "533123" + }, + { + "name": "陇川县", + "code": "533124" + }] + }, + { + "name": "怒江傈僳族自治州", + "code": "533300", + "area": [{ + "name": "泸水市", + "code": "533301" + }, + { + "name": "福贡县", + "code": "533323" + }, + { + "name": "贡山独龙族怒族自治县", + "code": "533324" + }, + { + "name": "兰坪白族普米族自治县", + "code": "533325" + }] + }, + { + "name": "迪庆藏族自治州", + "code": "533400", + "area": [{ + "name": "香格里拉市", + "code": "533401" + }, + { + "name": "德钦县", + "code": "533422" + }, + { + "name": "维西傈僳族自治县", + "code": "533423" + }] + }] +}, +{ + "name": "西藏自治区", + "code": "540000", + "city": [{ + "name": "拉萨市", + "code": "540100", + "area": [{ + "name": "市辖区", + "code": "540101" + }, + { + "name": "城关区", + "code": "540102" + }, + { + "name": "堆龙德庆区", + "code": "540103" + }, + { + "name": "林周县", + "code": "540121" + }, + { + "name": "当雄县", + "code": "540122" + }, + { + "name": "尼木县", + "code": "540123" + }, + { + "name": "曲水县", + "code": "540124" + }, + { + "name": "达孜县", + "code": "540126" + }, + { + "name": "墨竹工卡县", + "code": "540127" + }] + }, + { + "name": "日喀则市", + "code": "540200", + "area": [{ + "name": "桑珠孜区", + "code": "540202" + }, + { + "name": "南木林县", + "code": "540221" + }, + { + "name": "江孜县", + "code": "540222" + }, + { + "name": "定日县", + "code": "540223" + }, + { + "name": "萨迦县", + "code": "540224" + }, + { + "name": "拉孜县", + "code": "540225" + }, + { + "name": "昂仁县", + "code": "540226" + }, + { + "name": "谢通门县", + "code": "540227" + }, + { + "name": "白朗县", + "code": "540228" + }, + { + "name": "仁布县", + "code": "540229" + }, + { + "name": "康马县", + "code": "540230" + }, + { + "name": "定结县", + "code": "540231" + }, + { + "name": "仲巴县", + "code": "540232" + }, + { + "name": "亚东县", + "code": "540233" + }, + { + "name": "吉隆县", + "code": "540234" + }, + { + "name": "聂拉木县", + "code": "540235" + }, + { + "name": "萨嘎县", + "code": "540236" + }, + { + "name": "岗巴县", + "code": "540237" + }] + }, + { + "name": "昌都市", + "code": "540300", + "area": [{ + "name": "卡若区", + "code": "540302" + }, + { + "name": "江达县", + "code": "540321" + }, + { + "name": "贡觉县", + "code": "540322" + }, + { + "name": "类乌齐县", + "code": "540323" + }, + { + "name": "丁青县", + "code": "540324" + }, + { + "name": "察雅县", + "code": "540325" + }, + { + "name": "八宿县", + "code": "540326" + }, + { + "name": "左贡县", + "code": "540327" + }, + { + "name": "芒康县", + "code": "540328" + }, + { + "name": "洛隆县", + "code": "540329" + }, + { + "name": "边坝县", + "code": "540330" + }] + }, + { + "name": "林芝市", + "code": "540400", + "area": [{ + "name": "巴宜区", + "code": "540402" + }, + { + "name": "工布江达县", + "code": "540421" + }, + { + "name": "米林县", + "code": "540422" + }, + { + "name": "墨脱县", + "code": "540423" + }, + { + "name": "波密县", + "code": "540424" + }, + { + "name": "察隅县", + "code": "540425" + }, + { + "name": "朗县", + "code": "540426" + }] + }, + { + "name": "山南市", + "code": "540500", + "area": [{ + "name": "市辖区", + "code": "540501" + }, + { + "name": "乃东区", + "code": "540502" + }, + { + "name": "扎囊县", + "code": "540521" + }, + { + "name": "贡嘎县", + "code": "540522" + }, + { + "name": "桑日县", + "code": "540523" + }, + { + "name": "琼结县", + "code": "540524" + }, + { + "name": "曲松县", + "code": "540525" + }, + { + "name": "措美县", + "code": "540526" + }, + { + "name": "洛扎县", + "code": "540527" + }, + { + "name": "加查县", + "code": "540528" + }, + { + "name": "隆子县", + "code": "540529" + }, + { + "name": "错那县", + "code": "540530" + }, + { + "name": "浪卡子县", + "code": "540531" + }] + }, + { + "name": "那曲地区", + "code": "542400", + "area": [{ + "name": "那曲县", + "code": "542421" + }, + { + "name": "嘉黎县", + "code": "542422" + }, + { + "name": "比如县", + "code": "542423" + }, + { + "name": "聂荣县", + "code": "542424" + }, + { + "name": "安多县", + "code": "542425" + }, + { + "name": "申扎县", + "code": "542426" + }, + { + "name": "索县", + "code": "542427" + }, + { + "name": "班戈县", + "code": "542428" + }, + { + "name": "巴青县", + "code": "542429" + }, + { + "name": "尼玛县", + "code": "542430" + }, + { + "name": "双湖县", + "code": "542431" + }] + }, + { + "name": "阿里地区", + "code": "542500", + "area": [{ + "name": "普兰县", + "code": "542521" + }, + { + "name": "札达县", + "code": "542522" + }, + { + "name": "噶尔县", + "code": "542523" + }, + { + "name": "日土县", + "code": "542524" + }, + { + "name": "革吉县", + "code": "542525" + }, + { + "name": "改则县", + "code": "542526" + }, + { + "name": "措勤县", + "code": "542527" + }] + }] +}, +{ + "name": "陕西省", + "code": "610000", + "city": [{ + "name": "西安市", + "code": "610100", + "area": [{ + "name": "市辖区", + "code": "610101" + }, + { + "name": "新城区", + "code": "610102" + }, + { + "name": "碑林区", + "code": "610103" + }, + { + "name": "莲湖区", + "code": "610104" + }, + { + "name": "灞桥区", + "code": "610111" + }, + { + "name": "未央区", + "code": "610112" + }, + { + "name": "雁塔区", + "code": "610113" + }, + { + "name": "阎良区", + "code": "610114" + }, + { + "name": "临潼区", + "code": "610115" + }, + { + "name": "长安区", + "code": "610116" + }, + { + "name": "高陵区", + "code": "610117" + }, + { + "name": "蓝田县", + "code": "610122" + }, + { + "name": "周至县", + "code": "610124" + }, + { + "name": "户县", + "code": "610125" + }] + }, + { + "name": "铜川市", + "code": "610200", + "area": [{ + "name": "市辖区", + "code": "610201" + }, + { + "name": "王益区", + "code": "610202" + }, + { + "name": "印台区", + "code": "610203" + }, + { + "name": "耀州区", + "code": "610204" + }, + { + "name": "宜君县", + "code": "610222" + }] + }, + { + "name": "宝鸡市", + "code": "610300", + "area": [{ + "name": "市辖区", + "code": "610301" + }, + { + "name": "渭滨区", + "code": "610302" + }, + { + "name": "金台区", + "code": "610303" + }, + { + "name": "陈仓区", + "code": "610304" + }, + { + "name": "凤翔县", + "code": "610322" + }, + { + "name": "岐山县", + "code": "610323" + }, + { + "name": "扶风县", + "code": "610324" + }, + { + "name": "眉县", + "code": "610326" + }, + { + "name": "陇县", + "code": "610327" + }, + { + "name": "千阳县", + "code": "610328" + }, + { + "name": "麟游县", + "code": "610329" + }, + { + "name": "凤县", + "code": "610330" + }, + { + "name": "太白县", + "code": "610331" + }] + }, + { + "name": "咸阳市", + "code": "610400", + "area": [{ + "name": "市辖区", + "code": "610401" + }, + { + "name": "秦都区", + "code": "610402" + }, + { + "name": "杨陵区", + "code": "610403" + }, + { + "name": "渭城区", + "code": "610404" + }, + { + "name": "三原县", + "code": "610422" + }, + { + "name": "泾阳县", + "code": "610423" + }, + { + "name": "乾县", + "code": "610424" + }, + { + "name": "礼泉县", + "code": "610425" + }, + { + "name": "永寿县", + "code": "610426" + }, + { + "name": "彬县", + "code": "610427" + }, + { + "name": "长武县", + "code": "610428" + }, + { + "name": "旬邑县", + "code": "610429" + }, + { + "name": "淳化县", + "code": "610430" + }, + { + "name": "武功县", + "code": "610431" + }, + { + "name": "兴平市", + "code": "610481" + }] + }, + { + "name": "渭南市", + "code": "610500", + "area": [{ + "name": "市辖区", + "code": "610501" + }, + { + "name": "临渭区", + "code": "610502" + }, + { + "name": "华州区", + "code": "610503" + }, + { + "name": "潼关县", + "code": "610522" + }, + { + "name": "大荔县", + "code": "610523" + }, + { + "name": "合阳县", + "code": "610524" + }, + { + "name": "澄城县", + "code": "610525" + }, + { + "name": "蒲城县", + "code": "610526" + }, + { + "name": "白水县", + "code": "610527" + }, + { + "name": "富平县", + "code": "610528" + }, + { + "name": "韩城市", + "code": "610581" + }, + { + "name": "华阴市", + "code": "610582" + }] + }, + { + "name": "延安市", + "code": "610600", + "area": [{ + "name": "市辖区", + "code": "610601" + }, + { + "name": "宝塔区", + "code": "610602" + }, + { + "name": "安塞区", + "code": "610603" + }, + { + "name": "延长县", + "code": "610621" + }, + { + "name": "延川县", + "code": "610622" + }, + { + "name": "子长县", + "code": "610623" + }, + { + "name": "志丹县", + "code": "610625" + }, + { + "name": "吴起县", + "code": "610626" + }, + { + "name": "甘泉县", + "code": "610627" + }, + { + "name": "富县", + "code": "610628" + }, + { + "name": "洛川县", + "code": "610629" + }, + { + "name": "宜川县", + "code": "610630" + }, + { + "name": "黄龙县", + "code": "610631" + }, + { + "name": "黄陵县", + "code": "610632" + }] + }, + { + "name": "汉中市", + "code": "610700", + "area": [{ + "name": "市辖区", + "code": "610701" + }, + { + "name": "汉台区", + "code": "610702" + }, + { + "name": "南郑县", + "code": "610721" + }, + { + "name": "城固县", + "code": "610722" + }, + { + "name": "洋县", + "code": "610723" + }, + { + "name": "西乡县", + "code": "610724" + }, + { + "name": "勉县", + "code": "610725" + }, + { + "name": "宁强县", + "code": "610726" + }, + { + "name": "略阳县", + "code": "610727" + }, + { + "name": "镇巴县", + "code": "610728" + }, + { + "name": "留坝县", + "code": "610729" + }, + { + "name": "佛坪县", + "code": "610730" + }] + }, + { + "name": "榆林市", + "code": "610800", + "area": [{ + "name": "市辖区", + "code": "610801" + }, + { + "name": "榆阳区", + "code": "610802" + }, + { + "name": "横山区", + "code": "610803" + }, + { + "name": "神木县", + "code": "610821" + }, + { + "name": "府谷县", + "code": "610822" + }, + { + "name": "靖边县", + "code": "610824" + }, + { + "name": "定边县", + "code": "610825" + }, + { + "name": "绥德县", + "code": "610826" + }, + { + "name": "米脂县", + "code": "610827" + }, + { + "name": "佳县", + "code": "610828" + }, + { + "name": "吴堡县", + "code": "610829" + }, + { + "name": "清涧县", + "code": "610830" + }, + { + "name": "子洲县", + "code": "610831" + }] + }, + { + "name": "安康市", + "code": "610900", + "area": [{ + "name": "市辖区", + "code": "610901" + }, + { + "name": "汉滨区", + "code": "610902" + }, + { + "name": "汉阴县", + "code": "610921" + }, + { + "name": "石泉县", + "code": "610922" + }, + { + "name": "宁陕县", + "code": "610923" + }, + { + "name": "紫阳县", + "code": "610924" + }, + { + "name": "岚皋县", + "code": "610925" + }, + { + "name": "平利县", + "code": "610926" + }, + { + "name": "镇坪县", + "code": "610927" + }, + { + "name": "旬阳县", + "code": "610928" + }, + { + "name": "白河县", + "code": "610929" + }] + }, + { + "name": "商洛市", + "code": "611000", + "area": [{ + "name": "市辖区", + "code": "611001" + }, + { + "name": "商州区", + "code": "611002" + }, + { + "name": "洛南县", + "code": "611021" + }, + { + "name": "丹凤县", + "code": "611022" + }, + { + "name": "商南县", + "code": "611023" + }, + { + "name": "山阳县", + "code": "611024" + }, + { + "name": "镇安县", + "code": "611025" + }, + { + "name": "柞水县", + "code": "611026" + }] + }] +}, +{ + "name": "甘肃省", + "code": "620000", + "city": [{ + "name": "兰州市", + "code": "620100", + "area": [{ + "name": "市辖区", + "code": "620101" + }, + { + "name": "城关区", + "code": "620102" + }, + { + "name": "七里河区", + "code": "620103" + }, + { + "name": "西固区", + "code": "620104" + }, + { + "name": "安宁区", + "code": "620105" + }, + { + "name": "红古区", + "code": "620111" + }, + { + "name": "永登县", + "code": "620121" + }, + { + "name": "皋兰县", + "code": "620122" + }, + { + "name": "榆中县", + "code": "620123" + }] + }, + { + "name": "嘉峪关市", + "code": "620200", + "area": [{ + "name": "市辖区", + "code": "620201" + }] + }, + { + "name": "金昌市", + "code": "620300", + "area": [{ + "name": "市辖区", + "code": "620301" + }, + { + "name": "金川区", + "code": "620302" + }, + { + "name": "永昌县", + "code": "620321" + }] + }, + { + "name": "白银市", + "code": "620400", + "area": [{ + "name": "市辖区", + "code": "620401" + }, + { + "name": "白银区", + "code": "620402" + }, + { + "name": "平川区", + "code": "620403" + }, + { + "name": "靖远县", + "code": "620421" + }, + { + "name": "会宁县", + "code": "620422" + }, + { + "name": "景泰县", + "code": "620423" + }] + }, + { + "name": "天水市", + "code": "620500", + "area": [{ + "name": "市辖区", + "code": "620501" + }, + { + "name": "秦州区", + "code": "620502" + }, + { + "name": "麦积区", + "code": "620503" + }, + { + "name": "清水县", + "code": "620521" + }, + { + "name": "秦安县", + "code": "620522" + }, + { + "name": "甘谷县", + "code": "620523" + }, + { + "name": "武山县", + "code": "620524" + }, + { + "name": "张家川回族自治县", + "code": "620525" + }] + }, + { + "name": "武威市", + "code": "620600", + "area": [{ + "name": "市辖区", + "code": "620601" + }, + { + "name": "凉州区", + "code": "620602" + }, + { + "name": "民勤县", + "code": "620621" + }, + { + "name": "古浪县", + "code": "620622" + }, + { + "name": "天祝藏族自治县", + "code": "620623" + }] + }, + { + "name": "张掖市", + "code": "620700", + "area": [{ + "name": "市辖区", + "code": "620701" + }, + { + "name": "甘州区", + "code": "620702" + }, + { + "name": "肃南裕固族自治县", + "code": "620721" + }, + { + "name": "民乐县", + "code": "620722" + }, + { + "name": "临泽县", + "code": "620723" + }, + { + "name": "高台县", + "code": "620724" + }, + { + "name": "山丹县", + "code": "620725" + }] + }, + { + "name": "平凉市", + "code": "620800", + "area": [{ + "name": "市辖区", + "code": "620801" + }, + { + "name": "崆峒区", + "code": "620802" + }, + { + "name": "泾川县", + "code": "620821" + }, + { + "name": "灵台县", + "code": "620822" + }, + { + "name": "崇信县", + "code": "620823" + }, + { + "name": "华亭县", + "code": "620824" + }, + { + "name": "庄浪县", + "code": "620825" + }, + { + "name": "静宁县", + "code": "620826" + }] + }, + { + "name": "酒泉市", + "code": "620900", + "area": [{ + "name": "市辖区", + "code": "620901" + }, + { + "name": "肃州区", + "code": "620902" + }, + { + "name": "金塔县", + "code": "620921" + }, + { + "name": "瓜州县", + "code": "620922" + }, + { + "name": "肃北蒙古族自治县", + "code": "620923" + }, + { + "name": "阿克塞哈萨克族自治县", + "code": "620924" + }, + { + "name": "玉门市", + "code": "620981" + }, + { + "name": "敦煌市", + "code": "620982" + }] + }, + { + "name": "庆阳市", + "code": "621000", + "area": [{ + "name": "市辖区", + "code": "621001" + }, + { + "name": "西峰区", + "code": "621002" + }, + { + "name": "庆城县", + "code": "621021" + }, + { + "name": "环县", + "code": "621022" + }, + { + "name": "华池县", + "code": "621023" + }, + { + "name": "合水县", + "code": "621024" + }, + { + "name": "正宁县", + "code": "621025" + }, + { + "name": "宁县", + "code": "621026" + }, + { + "name": "镇原县", + "code": "621027" + }] + }, + { + "name": "定西市", + "code": "621100", + "area": [{ + "name": "市辖区", + "code": "621101" + }, + { + "name": "安定区", + "code": "621102" + }, + { + "name": "通渭县", + "code": "621121" + }, + { + "name": "陇西县", + "code": "621122" + }, + { + "name": "渭源县", + "code": "621123" + }, + { + "name": "临洮县", + "code": "621124" + }, + { + "name": "漳县", + "code": "621125" + }, + { + "name": "岷县", + "code": "621126" + }] + }, + { + "name": "陇南市", + "code": "621200", + "area": [{ + "name": "市辖区", + "code": "621201" + }, + { + "name": "武都区", + "code": "621202" + }, + { + "name": "成县", + "code": "621221" + }, + { + "name": "文县", + "code": "621222" + }, + { + "name": "宕昌县", + "code": "621223" + }, + { + "name": "康县", + "code": "621224" + }, + { + "name": "西和县", + "code": "621225" + }, + { + "name": "礼县", + "code": "621226" + }, + { + "name": "徽县", + "code": "621227" + }, + { + "name": "两当县", + "code": "621228" + }] + }, + { + "name": "临夏回族自治州", + "code": "622900", + "area": [{ + "name": "临夏市", + "code": "622901" + }, + { + "name": "临夏县", + "code": "622921" + }, + { + "name": "康乐县", + "code": "622922" + }, + { + "name": "永靖县", + "code": "622923" + }, + { + "name": "广河县", + "code": "622924" + }, + { + "name": "和政县", + "code": "622925" + }, + { + "name": "东乡族自治县", + "code": "622926" + }, + { + "name": "积石山保安族东乡族撒拉族自治县", + "code": "622927" + }] + }, + { + "name": "甘南藏族自治州", + "code": "623000", + "area": [{ + "name": "合作市", + "code": "623001" + }, + { + "name": "临潭县", + "code": "623021" + }, + { + "name": "卓尼县", + "code": "623022" + }, + { + "name": "舟曲县", + "code": "623023" + }, + { + "name": "迭部县", + "code": "623024" + }, + { + "name": "玛曲县", + "code": "623025" + }, + { + "name": "碌曲县", + "code": "623026" + }, + { + "name": "夏河县", + "code": "623027" + }] + }] +}, +{ + "name": "青海省", + "code": "630000", + "city": [{ + "name": "西宁市", + "code": "630100", + "area": [{ + "name": "市辖区", + "code": "630101" + }, + { + "name": "城东区", + "code": "630102" + }, + { + "name": "城中区", + "code": "630103" + }, + { + "name": "城西区", + "code": "630104" + }, + { + "name": "城北区", + "code": "630105" + }, + { + "name": "大通回族土族自治县", + "code": "630121" + }, + { + "name": "湟中县", + "code": "630122" + }, + { + "name": "湟源县", + "code": "630123" + }] + }, + { + "name": "海东市", + "code": "630200", + "area": [{ + "name": "乐都区", + "code": "630202" + }, + { + "name": "平安区", + "code": "630203" + }, + { + "name": "民和回族土族自治县", + "code": "630222" + }, + { + "name": "互助土族自治县", + "code": "630223" + }, + { + "name": "化隆回族自治县", + "code": "630224" + }, + { + "name": "循化撒拉族自治县", + "code": "630225" + }] + }, + { + "name": "海北藏族自治州", + "code": "632200", + "area": [{ + "name": "门源回族自治县", + "code": "632221" + }, + { + "name": "祁连县", + "code": "632222" + }, + { + "name": "海晏县", + "code": "632223" + }, + { + "name": "刚察县", + "code": "632224" + }] + }, + { + "name": "黄南藏族自治州", + "code": "632300", + "area": [{ + "name": "同仁县", + "code": "632321" + }, + { + "name": "尖扎县", + "code": "632322" + }, + { + "name": "泽库县", + "code": "632323" + }, + { + "name": "河南蒙古族自治县", + "code": "632324" + }] + }, + { + "name": "海南藏族自治州", + "code": "632500", + "area": [{ + "name": "共和县", + "code": "632521" + }, + { + "name": "同德县", + "code": "632522" + }, + { + "name": "贵德县", + "code": "632523" + }, + { + "name": "兴海县", + "code": "632524" + }, + { + "name": "贵南县", + "code": "632525" + }] + }, + { + "name": "果洛藏族自治州", + "code": "632600", + "area": [{ + "name": "玛沁县", + "code": "632621" + }, + { + "name": "班玛县", + "code": "632622" + }, + { + "name": "甘德县", + "code": "632623" + }, + { + "name": "达日县", + "code": "632624" + }, + { + "name": "久治县", + "code": "632625" + }, + { + "name": "玛多县", + "code": "632626" + }] + }, + { + "name": "玉树藏族自治州", + "code": "632700", + "area": [{ + "name": "玉树市", + "code": "632701" + }, + { + "name": "杂多县", + "code": "632722" + }, + { + "name": "称多县", + "code": "632723" + }, + { + "name": "治多县", + "code": "632724" + }, + { + "name": "囊谦县", + "code": "632725" + }, + { + "name": "曲麻莱县", + "code": "632726" + }] + }, + { + "name": "海西蒙古族藏族自治州", + "code": "632800", + "area": [{ + "name": "格尔木市", + "code": "632801" + }, + { + "name": "德令哈市", + "code": "632802" + }, + { + "name": "乌兰县", + "code": "632821" + }, + { + "name": "都兰县", + "code": "632822" + }, + { + "name": "天峻县", + "code": "632823" + }] + }] +}, +{ + "name": "宁夏回族自治区", + "code": "640000", + "city": [{ + "name": "银川市", + "code": "640100", + "area": [{ + "name": "市辖区", + "code": "640101" + }, + { + "name": "兴庆区", + "code": "640104" + }, + { + "name": "西夏区", + "code": "640105" + }, + { + "name": "金凤区", + "code": "640106" + }, + { + "name": "永宁县", + "code": "640121" + }, + { + "name": "贺兰县", + "code": "640122" + }, + { + "name": "灵武市", + "code": "640181" + }] + }, + { + "name": "石嘴山市", + "code": "640200", + "area": [{ + "name": "市辖区", + "code": "640201" + }, + { + "name": "大武口区", + "code": "640202" + }, + { + "name": "惠农区", + "code": "640205" + }, + { + "name": "平罗县", + "code": "640221" + }] + }, + { + "name": "吴忠市", + "code": "640300", + "area": [{ + "name": "市辖区", + "code": "640301" + }, + { + "name": "利通区", + "code": "640302" + }, + { + "name": "红寺堡区", + "code": "640303" + }, + { + "name": "盐池县", + "code": "640323" + }, + { + "name": "同心县", + "code": "640324" + }, + { + "name": "青铜峡市", + "code": "640381" + }] + }, + { + "name": "固原市", + "code": "640400", + "area": [{ + "name": "市辖区", + "code": "640401" + }, + { + "name": "原州区", + "code": "640402" + }, + { + "name": "西吉县", + "code": "640422" + }, + { + "name": "隆德县", + "code": "640423" + }, + { + "name": "泾源县", + "code": "640424" + }, + { + "name": "彭阳县", + "code": "640425" + }] + }, + { + "name": "中卫市", + "code": "640500", + "area": [{ + "name": "市辖区", + "code": "640501" + }, + { + "name": "沙坡头区", + "code": "640502" + }, + { + "name": "中宁县", + "code": "640521" + }, + { + "name": "海原县", + "code": "640522" + }] + }] +}, +{ + "name": "新疆维吾尔自治区", + "code": "650000", + "city": [{ + "name": "乌鲁木齐市", + "code": "650100", + "area": [{ + "name": "市辖区", + "code": "650101" + }, + { + "name": "天山区", + "code": "650102" + }, + { + "name": "沙依巴克区", + "code": "650103" + }, + { + "name": "新市区", + "code": "650104" + }, + { + "name": "水磨沟区", + "code": "650105" + }, + { + "name": "头屯河区", + "code": "650106" + }, + { + "name": "达坂城区", + "code": "650107" + }, + { + "name": "米东区", + "code": "650109" + }, + { + "name": "乌鲁木齐县", + "code": "650121" + }] + }, + { + "name": "克拉玛依市", + "code": "650200", + "area": [{ + "name": "市辖区", + "code": "650201" + }, + { + "name": "独山子区", + "code": "650202" + }, + { + "name": "克拉玛依区", + "code": "650203" + }, + { + "name": "白碱滩区", + "code": "650204" + }, + { + "name": "乌尔禾区", + "code": "650205" + }] + }, + { + "name": "吐鲁番市", + "code": "650400", + "area": [{ + "name": "高昌区", + "code": "650402" + }, + { + "name": "鄯善县", + "code": "650421" + }, + { + "name": "托克逊县", + "code": "650422" + }] + }, + { + "name": "哈密市", + "code": "650500", + "area": [{ + "name": "伊州区", + "code": "650502" + }, + { + "name": "巴里坤哈萨克自治县", + "code": "650521" + }, + { + "name": "伊吾县", + "code": "650522" + }] + }, + { + "name": "昌吉回族自治州", + "code": "652300", + "area": [{ + "name": "昌吉市", + "code": "652301" + }, + { + "name": "阜康市", + "code": "652302" + }, + { + "name": "呼图壁县", + "code": "652323" + }, + { + "name": "玛纳斯县", + "code": "652324" + }, + { + "name": "奇台县", + "code": "652325" + }, + { + "name": "吉木萨尔县", + "code": "652327" + }, + { + "name": "木垒哈萨克自治县", + "code": "652328" + }] + }, + { + "name": "博尔塔拉蒙古自治州", + "code": "652700", + "area": [{ + "name": "博乐市", + "code": "652701" + }, + { + "name": "阿拉山口市", + "code": "652702" + }, + { + "name": "精河县", + "code": "652722" + }, + { + "name": "温泉县", + "code": "652723" + }] + }, + { + "name": "巴音郭楞蒙古自治州", + "code": "652800", + "area": [{ + "name": "库尔勒市", + "code": "652801" + }, + { + "name": "轮台县", + "code": "652822" + }, + { + "name": "尉犁县", + "code": "652823" + }, + { + "name": "若羌县", + "code": "652824" + }, + { + "name": "且末县", + "code": "652825" + }, + { + "name": "焉耆回族自治县", + "code": "652826" + }, + { + "name": "和静县", + "code": "652827" + }, + { + "name": "和硕县", + "code": "652828" + }, + { + "name": "博湖县", + "code": "652829" + }] + }, + { + "name": "阿克苏地区", + "code": "652900", + "area": [{ + "name": "阿克苏市", + "code": "652901" + }, + { + "name": "温宿县", + "code": "652922" + }, + { + "name": "库车县", + "code": "652923" + }, + { + "name": "沙雅县", + "code": "652924" + }, + { + "name": "新和县", + "code": "652925" + }, + { + "name": "拜城县", + "code": "652926" + }, + { + "name": "乌什县", + "code": "652927" + }, + { + "name": "阿瓦提县", + "code": "652928" + }, + { + "name": "柯坪县", + "code": "652929" + }] + }, + { + "name": "克孜勒苏柯尔克孜自治州", + "code": "653000", + "area": [{ + "name": "阿图什市", + "code": "653001" + }, + { + "name": "阿克陶县", + "code": "653022" + }, + { + "name": "阿合奇县", + "code": "653023" + }, + { + "name": "乌恰县", + "code": "653024" + }] + }, + { + "name": "喀什地区", + "code": "653100", + "area": [{ + "name": "喀什市", + "code": "653101" + }, + { + "name": "疏附县", + "code": "653121" + }, + { + "name": "疏勒县", + "code": "653122" + }, + { + "name": "英吉沙县", + "code": "653123" + }, + { + "name": "泽普县", + "code": "653124" + }, + { + "name": "莎车县", + "code": "653125" + }, + { + "name": "叶城县", + "code": "653126" + }, + { + "name": "麦盖提县", + "code": "653127" + }, + { + "name": "岳普湖县", + "code": "653128" + }, + { + "name": "伽师县", + "code": "653129" + }, + { + "name": "巴楚县", + "code": "653130" + }, + { + "name": "塔什库尔干塔吉克自治县", + "code": "653131" + }] + }, + { + "name": "和田地区", + "code": "653200", + "area": [{ + "name": "和田市", + "code": "653201" + }, + { + "name": "和田县", + "code": "653221" + }, + { + "name": "墨玉县", + "code": "653222" + }, + { + "name": "皮山县", + "code": "653223" + }, + { + "name": "洛浦县", + "code": "653224" + }, + { + "name": "策勒县", + "code": "653225" + }, + { + "name": "于田县", + "code": "653226" + }, + { + "name": "民丰县", + "code": "653227" + }] + }, + { + "name": "伊犁哈萨克自治州", + "code": "654000", + "area": [{ + "name": "伊宁市", + "code": "654002" + }, + { + "name": "奎屯市", + "code": "654003" + }, + { + "name": "霍尔果斯市", + "code": "654004" + }, + { + "name": "伊宁县", + "code": "654021" + }, + { + "name": "察布查尔锡伯自治县", + "code": "654022" + }, + { + "name": "霍城县", + "code": "654023" + }, + { + "name": "巩留县", + "code": "654024" + }, + { + "name": "新源县", + "code": "654025" + }, + { + "name": "昭苏县", + "code": "654026" + }, + { + "name": "特克斯县", + "code": "654027" + }, + { + "name": "尼勒克县", + "code": "654028" + }] + }, + { + "name": "塔城地区", + "code": "654200", + "area": [{ + "name": "塔城市", + "code": "654201" + }, + { + "name": "乌苏市", + "code": "654202" + }, + { + "name": "额敏县", + "code": "654221" + }, + { + "name": "沙湾县", + "code": "654223" + }, + { + "name": "托里县", + "code": "654224" + }, + { + "name": "裕民县", + "code": "654225" + }, + { + "name": "和布克赛尔蒙古自治县", + "code": "654226" + }] + }, + { + "name": "阿勒泰地区", + "code": "654300", + "area": [{ + "name": "阿勒泰市", + "code": "654301" + }, + { + "name": "布尔津县", + "code": "654321" + }, + { + "name": "富蕴县", + "code": "654322" + }, + { + "name": "福海县", + "code": "654323" + }, + { + "name": "哈巴河县", + "code": "654324" + }, + { + "name": "青河县", + "code": "654325" + }, + { + "name": "吉木乃县", + "code": "654326" + }] + }, + { + "name": "自治区直辖县级行政区划", + "code": "659000", + "area": [{ + "name": "石河子市", + "code": "659001" + }, + { + "name": "阿拉尔市", + "code": "659002" + }, + { + "name": "图木舒克市", + "code": "659003" + }, + { + "name": "五家渠市", + "code": "659004" + }, + { + "name": "铁门关市", + "code": "659006" + }] + }] +}, +{ + "name": "台湾省", + "code": "710000" +}, +{ + "name": "香港特别行政区", + "code": "810000" +}, +{ + "name": "澳门特别行政区", + "code": "820000" +}] \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-autocomplete/app-autocomplete.less b/app_AssetManagement/src/components/app-autocomplete/app-autocomplete.less new file mode 100644 index 0000000..93169d9 --- /dev/null +++ b/app_AssetManagement/src/components/app-autocomplete/app-autocomplete.less @@ -0,0 +1,5 @@ +.ivu-auto-complete { + .ivu-select-dropdown-list { + height: 300px; + } +} diff --git a/app_AssetManagement/src/components/app-autocomplete/app-autocomplete.vue b/app_AssetManagement/src/components/app-autocomplete/app-autocomplete.vue new file mode 100644 index 0000000..32a2e1c --- /dev/null +++ b/app_AssetManagement/src/components/app-autocomplete/app-autocomplete.vue @@ -0,0 +1,324 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-build/app-build.less b/app_AssetManagement/src/components/app-build/app-build.less new file mode 100644 index 0000000..d297c19 --- /dev/null +++ b/app_AssetManagement/src/components/app-build/app-build.less @@ -0,0 +1,12 @@ +.show-type { + text-align: right; + position: absolute; + z-index: 99; + right: 0; + top: 2px; + .ivu-btn-group { + .collapse-btn { + padding: 0; + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-build/app-build.vue b/app_AssetManagement/src/components/app-build/app-build.vue new file mode 100644 index 0000000..ed776a9 --- /dev/null +++ b/app_AssetManagement/src/components/app-build/app-build.vue @@ -0,0 +1,60 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.less b/app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.less new file mode 100644 index 0000000..757b52c --- /dev/null +++ b/app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.less @@ -0,0 +1,3 @@ +.app-checkbox-list { + overflow: auto; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.vue b/app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.vue new file mode 100644 index 0000000..d46e3be --- /dev/null +++ b/app_AssetManagement/src/components/app-checkbox-list/app-checkbox-list.vue @@ -0,0 +1,289 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-checkbox/app-checkbox.less b/app_AssetManagement/src/components/app-checkbox/app-checkbox.less new file mode 100644 index 0000000..757b52c --- /dev/null +++ b/app_AssetManagement/src/components/app-checkbox/app-checkbox.less @@ -0,0 +1,3 @@ +.app-checkbox-list { + overflow: auto; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-checkbox/app-checkbox.vue b/app_AssetManagement/src/components/app-checkbox/app-checkbox.vue new file mode 100644 index 0000000..d2adaaf --- /dev/null +++ b/app_AssetManagement/src/components/app-checkbox/app-checkbox.vue @@ -0,0 +1,55 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-column-format/app-column-format.less b/app_AssetManagement/src/components/app-column-format/app-column-format.less new file mode 100644 index 0000000..0746643 --- /dev/null +++ b/app_AssetManagement/src/components/app-column-format/app-column-format.less @@ -0,0 +1,3 @@ +.app-column-format{ + display: inline-block; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-column-format/app-column-format.vue b/app_AssetManagement/src/components/app-column-format/app-column-format.vue new file mode 100644 index 0000000..af8e51a --- /dev/null +++ b/app_AssetManagement/src/components/app-column-format/app-column-format.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-column-link/app-column-link.less b/app_AssetManagement/src/components/app-column-link/app-column-link.less new file mode 100644 index 0000000..2d89eff --- /dev/null +++ b/app_AssetManagement/src/components/app-column-link/app-column-link.less @@ -0,0 +1,4 @@ +.app-column-link{ + display: inline-block; + cursor:pointer; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-column-link/app-column-link.vue b/app_AssetManagement/src/components/app-column-link/app-column-link.vue new file mode 100644 index 0000000..d63c416 --- /dev/null +++ b/app_AssetManagement/src/components/app-column-link/app-column-link.vue @@ -0,0 +1,319 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-column-render/app-column-render.less b/app_AssetManagement/src/components/app-column-render/app-column-render.less new file mode 100644 index 0000000..7000ed3 --- /dev/null +++ b/app_AssetManagement/src/components/app-column-render/app-column-render.less @@ -0,0 +1,5 @@ +.column-render{ + .input-unit{ + display: inline-block; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-column-render/app-column-render.vue b/app_AssetManagement/src/components/app-column-render/app-column-render.vue new file mode 100644 index 0000000..1babcfa --- /dev/null +++ b/app_AssetManagement/src/components/app-column-render/app-column-render.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design-service.ts b/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design-service.ts new file mode 100644 index 0000000..74ba9d1 --- /dev/null +++ b/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design-service.ts @@ -0,0 +1,175 @@ +import { Http } from './../../utils/http/http'; +import UtilService from '@/utilservice/util-service'; + +export default class AppDashboardDesignService { + + /** + * 工具服务对象 + * + * @protected + * @type {UtilService} + * @memberof AppDashboardDesignService + */ + protected utilService: UtilService = new UtilService(); + + /** + * 加载数据模型 + * + * @param {string} serviceName + * @param {*} context + * @param {*} viewparams + * @memberof AppDashboardDesignService + */ + public loadModel(serviceName: string, context: any, viewparams: any) { + return new Promise((resolve: any, reject: any) => { + this.utilService.getService(serviceName).then((service: any) => { + service.loadModelData(JSON.stringify(context), viewparams).then((response: any) => { + resolve(response); + }).catch((response: any) => { + reject(response); + }); + }).catch((response: any) => { + reject(response); + }); + }); + } + + /** + * 保存模型 + * + * @param {string} serviceName + * @param {*} context + * @param {*} viewparams + * @returns + * @memberof AppDashboardDesignService + */ + public saveModel(serviceName: string, context: any, viewparams: any) { + return new Promise((resolve: any, reject: any) => { + this.utilService.getService(serviceName).then((service: any) => { + service.saveModelData(JSON.stringify(context), '', viewparams).then((response: any) => { + resolve(response); + }).catch((response: any) => { + reject(response); + }); + }).catch((response: any) => { + reject(response); + }); + }); + } + + /** + * 加载门户部件集合 + * + * @memberof AppDashboardDesignService + */ + public loadPortletList(context: any, viewparams: any): Promise { + return new Promise((resolve: any, reject: any) => { + Http.getInstance().get('./assets/json/portlet-data.json').then((response: any) => { + if (response && response.status === 200 && response.data) { + let result:Array = []; + if(typeof(response.data)=='string'){ + const index:number = response.data.lastIndexOf(","); + result = JSON.parse((response.data).slice(0,index)+']'); + }else{ + result = response.data; + } + const datas: any[] = this.filterData(result, viewparams.appdeName); + const list = this.prepareList(datas); + const groups = this.prepareGroup(datas); + resolve({data: datas, result: list.reverse(), groups: groups}); + } + }).catch((response: any) => { + console.log(response); + }); + }); + } + + /** + * 过滤数据 + * + * @param {any[]} datas + * @memberof AppDashboardDesignService + */ + public filterData(datas: any[] = [], dataType: string): any[] { + let items: any[] = []; + datas.forEach((data: any) => { + if(Object.is(data.type, 'app')) { + items.push(data); + } + if(Object.is(data.appCodeName, dataType)) { + items.push(data); + } + }); + return items; + } + + /** + * 分组集合 + * + * @param {any[]} [datas=[]] + * @returns {any[]} + * @memberof AppDashboardDesignService + */ + public prepareGroup(datas: any[] = []): any[] { + let items: any[] = []; + datas.forEach((data: any) => { + let item = items.find((item: any) => Object.is(item.value, data.groupCodeName)); + if(item) { + let _item = item.children.find((a: any) => Object.is(a.portletCodeName, data.portletCodeName)); + if(!_item) { + item.children.push(data); + } + } else { + items.push({name: data.groupName, value: data.groupCodeName, children: [data]}); + } + }); + return items; + } + + /** + * 准备list集合 + * + * @memberof AppDashboardDesignService + */ + public prepareList(datas: any[] = []): any[] { + let list: any[] = []; + datas.forEach((data: any) => { + let item = list.find((item: any) => Object.is(data.type, item.type)); + if(!item) { + item = {}; + Object.assign(item, { + type: data.type, + name: Object.is(data.type, 'app') ? "全局" : data.appName, + children: [] + }); + list.push(item); + } + this.prepareList2(item.children, data); + }) + return list + } + + /** + * 准备list项集合 + * + * @param {any[]} [children=[]] + * @param {*} [data={}] + * @memberof AppDashboardDesignService + */ + public prepareList2(children: any[] = [], data: any = {}) { + let item = children.find((item: any) => Object.is(data.groupCodeName, item.type)); + if(!item) { + item = {}; + Object.assign(item, { + type: data.groupCodeName, + name: data.groupName, + children: [] + }); + children.push(item); + } + let _item = item.children.find((a: any) => Object.is(a.portletCodeName, data.portletCodeName)); + if(!_item) { + item.children.push(data); + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.less b/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.less new file mode 100644 index 0000000..e14188d --- /dev/null +++ b/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.less @@ -0,0 +1,79 @@ +.app-dashboard-design { + width: 100%; + height: 100%; + border: 1px solid #ccc; + display: flex; + .design-tree { + width: 300px; + height: 100%; + padding: 5px; + overflow: auto; + .design-filter { + width: 100%; + } + .design-tree-content { + height: calc(100% - 40px); + overflow: auto; + .el-menu { + width: 100%; + border-right: 0; + .drag-div-item { + height: 40px; + line-height: 40px; + background-color: #f7fafc; + margin-bottom: 5px; + border: 1px dashed transparent; + cursor: move; + } + .drag-div-item:hover { + border-color: #107fff; + } + .el-menu-item.is-active { + color: initial; + } + .is-disable { + background-color: #e8eaef; + color: #c9ccd8; + cursor: no-drop !important; + } + } + } + .drag-tree-item { + opacity: .7; + z-index: 1; + position: fixed; + } + + } + .design-panel { + flex-grow: 1; + height: 100%; + overflow: auto; + background: #efefef; + .app-grid-layout { + .app-grid-layout-mask { + height: calc(100% + 180px); + top: 0; + left: 0; + bottom: 0; + right: 0; + position: absolute; + background: -webkit-linear-gradient(top, #ddd 10px, transparent 10px),-webkit-linear-gradient(left, #ddd 10px, transparent 10px); + } + .app-grid-layout-item { + height: 100%; + .el-icon-close { + font-size: 16px; + float: right; + margin-top: 4px; + cursor: pointer; + } + } + } + .layout-draging { + .vue-grid-placeholder { + display: initial !important; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.vue b/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.vue new file mode 100644 index 0000000..69f2e9e --- /dev/null +++ b/app_AssetManagement/src/components/app-dashboard-design/app-dashboard-design.vue @@ -0,0 +1,462 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-data-upload/app-data-upload.less b/app_AssetManagement/src/components/app-data-upload/app-data-upload.less new file mode 100644 index 0000000..957480e --- /dev/null +++ b/app_AssetManagement/src/components/app-data-upload/app-data-upload.less @@ -0,0 +1,21 @@ +.app-data-upload-view{ + width: 100%; + height: 100%; + padding: 16px; + .import-temp{ + text-align: right; + vertical-align: middle; + color: #409EFF; + } + .data-info-content{ + height: 100%; + width: 100%; + overflow: auto; + } + .font-class{ + margin: 0px; + padding: 0px; + font-family: '微软雅黑','黑体','宋体'; + font-size: 16px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-data-upload/app-data-upload.vue b/app_AssetManagement/src/components/app-data-upload/app-data-upload.vue new file mode 100644 index 0000000..1541547 --- /dev/null +++ b/app_AssetManagement/src/components/app-data-upload/app-data-upload.vue @@ -0,0 +1,517 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-debug-actions/app-debug-actions.less b/app_AssetManagement/src/components/app-debug-actions/app-debug-actions.less new file mode 100644 index 0000000..d0b787a --- /dev/null +++ b/app_AssetManagement/src/components/app-debug-actions/app-debug-actions.less @@ -0,0 +1,35 @@ +.app-debug-actions { + position: absolute; + top: 0px; + left: 50%; + z-index: 10000; + text-align: center; + transition: all 0.3s; + margin-top: -32px; + + >.actions { + + .ivu-btn { + width: 100%; + } + } + + >.show-buttons { + width: 100%; + height: 18px; + border-width: 0px 1px 1px 1px; + border-style: solid; + border-color: #8893a7; + text-align: center; + color: #8893a7; + cursor: pointer; + + >.button { + margin-top: -5px; + } + } +} + +.app-debug-actions:hover { + margin-top: 0px; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-debug-actions/app-debug-actions.vue b/app_AssetManagement/src/components/app-debug-actions/app-debug-actions.vue new file mode 100644 index 0000000..c0f86d5 --- /dev/null +++ b/app_AssetManagement/src/components/app-debug-actions/app-debug-actions.vue @@ -0,0 +1,40 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-department-select/app-department-select.less b/app_AssetManagement/src/components/app-department-select/app-department-select.less new file mode 100644 index 0000000..83630b1 --- /dev/null +++ b/app_AssetManagement/src/components/app-department-select/app-department-select.less @@ -0,0 +1,39 @@ +.app-department-select{ + .ivu-dropdown{ + .ivu-dropdown-rel{ + .tree-input{ + .ivu-input-suffix{ + width: auto; + text-align: right; + .icon-arrow{ + margin-right: 4px; + } + } + .el-icon-circle-close{ + display: none; + } + } + .tree-input:hover{ + .el-icon-circle-close{ + display: inline-block; + } + } + } + .ivu-select-dropdown{ + max-height: 200px; + overflow: scroll; + .tree-contant{ + overflow:inherit; + } + } + } + .el-input__inner{ + height: 32px; + line-height: 32px + } + .el-input__icon{ + line-height: 32px; + } +} + + diff --git a/app_AssetManagement/src/components/app-department-select/app-department-select.vue b/app_AssetManagement/src/components/app-department-select/app-department-select.vue new file mode 100644 index 0000000..d5a1852 --- /dev/null +++ b/app_AssetManagement/src/components/app-department-select/app-department-select.vue @@ -0,0 +1,220 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-embed-picker/app-embed-picker.less b/app_AssetManagement/src/components/app-embed-picker/app-embed-picker.less new file mode 100644 index 0000000..0de1797 --- /dev/null +++ b/app_AssetManagement/src/components/app-embed-picker/app-embed-picker.less @@ -0,0 +1,16 @@ +.app-embed-picker { + .app-embed-value, .app-embed-placeholder { + line-height: 32px; + height: 32px; + } + .app-embed-placeholder { + color: #c1c1c1; + } + > .ivu-card { + > .ivu-card-body { + > .content-container { + margin: 0; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-embed-picker/app-embed-picker.vue b/app_AssetManagement/src/components/app-embed-picker/app-embed-picker.vue new file mode 100644 index 0000000..3f631e1 --- /dev/null +++ b/app_AssetManagement/src/components/app-embed-picker/app-embed-picker.vue @@ -0,0 +1,273 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-export-excel/app-export-excel.less b/app_AssetManagement/src/components/app-export-excel/app-export-excel.less new file mode 100644 index 0000000..e69de29 diff --git a/app_AssetManagement/src/components/app-export-excel/app-export-excel.vue b/app_AssetManagement/src/components/app-export-excel/app-export-excel.vue new file mode 100644 index 0000000..7c10dc6 --- /dev/null +++ b/app_AssetManagement/src/components/app-export-excel/app-export-excel.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/app_AssetManagement/src/components/app-file-upload/app-file-upload.less b/app_AssetManagement/src/components/app-file-upload/app-file-upload.less new file mode 100644 index 0000000..1ca37ce --- /dev/null +++ b/app_AssetManagement/src/components/app-file-upload/app-file-upload.less @@ -0,0 +1,70 @@ +.app-file-upload{ + .upload-col{ + .button-preview{ + padding: 8px 15px 8.5px 15px; + .ivu-badge{ + margin-left: 2px; + .ivu-badge-count{ + height: auto; + min-width: auto; + line-height: unset; + padding: 0 4px; + } + } + } + } +} +.upload-preview-modal{ + .ivu-modal{ + height: 86%; + .ivu-modal-content{ + height: 100%; + overflow-y: scroll; + .preview-file-list-item{ + margin: 0 8px 8px 0; + display: inline-block; + position: relative; + } + .preview-file-list-img{ + display: inline-block; + position: relative; + } + .file-name{ + text-align: center; + } + .preview-file-list-actions{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + font-size: 20px; + text-align: center; + color: #fff; + opacity: 0; + transition: opacity .3s; + } + .preview-file-list-actions:hover{ + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + font-size: 20px; + text-align: center; + color: #fff; + opacity: 1; + background-color: rgba(0,0,0,.5); + } + .preview-file-list-actions::after{ + display: inline-block; + content: ""; + height: 100%; + vertical-align: middle; + } + .action-delete{ + margin-left:15px; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-file-upload/app-file-upload.vue b/app_AssetManagement/src/components/app-file-upload/app-file-upload.vue new file mode 100644 index 0000000..04f2acf --- /dev/null +++ b/app_AssetManagement/src/components/app-file-upload/app-file-upload.vue @@ -0,0 +1,482 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-druipart/app-form-druipart.less b/app_AssetManagement/src/components/app-form-druipart/app-form-druipart.less new file mode 100644 index 0000000..7687a24 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-druipart/app-form-druipart.less @@ -0,0 +1,3 @@ +.form-druipart { + position: relative; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-druipart/app-form-druipart.vue b/app_AssetManagement/src/components/app-form-druipart/app-form-druipart.vue new file mode 100644 index 0000000..29c4619 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-druipart/app-form-druipart.vue @@ -0,0 +1,490 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.less b/app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.less new file mode 100644 index 0000000..263e2cb --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.less @@ -0,0 +1,15 @@ +.form-group-data-panel { + + .data-item { + position: relative; + padding: 6px 6px 6px 8px; + } + + .data-item:nth-child(n+2)::before { + content: ' '; + height: 75%; + position: absolute; + border-left: 2px solid var(--view-dividing-line-color-bright); + left: 0; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.tsx b/app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.tsx new file mode 100644 index 0000000..b452dcd --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group-data-panel/app-form-group-data-panel.tsx @@ -0,0 +1,87 @@ +import { Vue, Component, Prop } from 'vue-property-decorator'; +import './app-form-group-data-panel.less'; + +/** + * 表单分组 + * + * @export + * @class AppFormGroupDataPanel + * @extends {Vue} + */ +@Component({}) +export default class AppFormGroupDataPanel extends Vue { + + /** + * 表单分组模型 + * + * @type {*} + * @memberof AppFormGroupDataPanel + */ + @Prop({ default: () => { } }) + public model: any; + + /** + * 表单数据 + * + * @type {*} + * @memberof AppFormGroupDataPanel + */ + @Prop({ default: () => { } }) + public data!: any; + + /** + * 上下文 + * + * @type {*} + * @memberof AppFormGroupDataPanel + */ + @Prop() + public context?: any; + + /** + * 视图参数 + * + * @type {*} + * @memberof AppFormGroupDataPanel + */ + @Prop() + public viewparams?: any; + + /** + * 获取项标题 + * + * @protected + * @param {*} item + * @returns {*} + * @memberof AppFormGroupDataPanel + */ + protected getCaption(item: any): any { + if (isExistAndNotEmpty(item.langbase)) { + return this.$t(`${item.langbase}.${item.name}`); + } + return item.caption; + } + + /** + * 绘制内容 + * + * @returns {*} + * @memberof AppFormGroupDataPanel + */ + public render(): any { + const data: any[] = this.model?.anchorPoints; + if (data) { + const items: any[] = []; + for (const key in data) { + if (Object.prototype.hasOwnProperty.call(data, key)) { + const item = data[key]; + items.push( + {/* {item.isShowCaption ? {this.getCaption(item)}: : null} */} + + ); + } + } + return {items}; + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group/app-form-group.less b/app_AssetManagement/src/components/app-form-group/app-form-group.less new file mode 100644 index 0000000..164a736 --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group/app-form-group.less @@ -0,0 +1,52 @@ +.app-form-group { + + .show-more { + margin-top: 5px; + } + + >.ivu-card-head { + + .arrow-forward { + cursor: pointer; + margin-right: 6px; + } + } + + >.ivu-card-extra { + + >span { + float: right; + } + + .item-extract-mode { + display: flex; + + .item { + margin-left: 12px; + + .caption { + padding-left: 5px; + } + } + } + } +} + +.app-form-group.app-group-collapse-contant { + + .ivu-card-body { + display: none; + } +} + +.app-group-flex { + height: 100%; + overflow-y: auto; + overflow-x: hidden; + + >.ivu-card-body { + height: calc(100% - 51px); + overflow-y: auto; + overflow-x: hidden; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/app-form-group/app-form-group.tsx b/app_AssetManagement/src/components/app-form-group/app-form-group.tsx new file mode 100644 index 0000000..a40495a --- /dev/null +++ b/app_AssetManagement/src/components/app-form-group/app-form-group.tsx @@ -0,0 +1,318 @@ +import { Vue, Component, Prop } from 'vue-property-decorator'; +import './app-form-group.less' + +/** + * 表单分组 + * + * @export + * @class AppFormGroup + * @extends {Vue} + */ +@Component({}) +export default class AppFormGroup extends Vue { + + /** + * 表单分组模型 + * + * @type {*} + * @memberof AppFormGroup + */ + @Prop({ default: () => { } }) + public model: any; + + /** + * 标题 + * + * @type {string} + * @memberof AppFormGroup + */ + @Prop() + public caption?: string; + + /** + * 内置界面样式 + * + * @type {string} + * @memberof AppFormGroup + */ + @Prop({ default: 'DEFAULT' }) + public uiStyle!: string; + + /** + * 布局模式 + * + * @type {string} + * @memberof AppFormGroup + */ + @Prop() + public layoutType?: string; + + /** + * 标题样式 + * + * @type {string} + * @memberof AppFormGroup + */ + @Prop() + public titleStyle?: string; + + /** + * 分组图标 + * + * @type {string} + * @memberof AppFormGroup + */ + @Prop() + public iconInfo?: any; + + /** + * 是否显示标题 + * + * @type {boolean} + * @memberof AppFormGroup + */ + @Prop({ default: true }) + public isShowCaption!: boolean; + + /** + * 信息面板模式 + * + * @type {boolean} + * @memberof AppFormGroup + */ + @Prop({ default: false }) + public isInfoGroupMode!: boolean; + + /** + * 界面行为组 + * + * @type {*} + * @memberof AppFormGroup + */ + @Prop() + public uiActionGroup?: any; + + /** + * 标题栏关闭模式 + * 0: 不支持关闭 + * 1: 默认打开 + * 2: 默认关闭 + * + * @type {(number | 0 | 1 | 2)} + * @memberof AppFormGroup + */ + @Prop({ default: 0 }) + public titleBarCloseMode!: number | 0 | 1 | 2; + + /** + * 收缩内容 + * + * @type {boolean} + * @memberof AppFormGroup + */ + public collapseContant: boolean = false; + + /** + * 计算样式 + * + * @readonly + * @type {string[]} + * @memberof AppFormGroup + */ + get classes(): string[] { + return [ + 'app-form-group', + this.isShowCaption && this.collapseContant ? 'app-group-collapse-contant' : '', + this.isInfoGroupMode ? 'app-info-group-mode' : '', + Object.is(this.layoutType, 'FLEX') ? 'app-group-flex' : '', + this.uiStyle.toLowerCase() + ]; + } + + /** + * 标题样式 + * + * @readonly + * @type {string} + * @memberof AppFormGroup + */ + get titleClass(): string { + return this.titleStyle ? this.titleStyle : ''; + } + + /** + * vue 生命周期 + * + * @memberof AppFormGroup + */ + public created() { + this.collapseContant = this.titleBarCloseMode === 2 ? true : false; + } + + /** + * 触发收缩 + * + * @memberof AppFormGroup + */ + public clickCollapse(): void { + this.collapseContant = !this.collapseContant; + } + + /** + * 执行界面行 + * + * @param {*} $event + * @memberof AppFormGroup + */ + public doUIAction($event: any, item: any): void { + this.$emit('groupuiactionclick', { event: $event, item: item }); + } + + /** + * 计算行为项图标 + * + * @protected + * @param {*} detail + * @returns {*} + * @memberof AppFormGroup + */ + protected getIcon(detail: any): any { + if (detail.isShowIcon) { + if (isExistAndNotEmpty(detail.icon)) { + return ; + } else if (isExistAndNotEmpty(detail.img)) { + return ; + } + } + } + + /** + * 计算行为项标题 + * + * @protected + * @param {*} detail + * @returns {*} + * @memberof AppFormGroup + */ + protected getCaption(detail: any): any { + if (detail.isShowCaption) { + if (isExistAndNotEmpty(detail.uiactiontag) && isExistAndNotEmpty(this.uiActionGroup.langbase)) { + return this.$t(`${this.uiActionGroup.langbase}.uiactions.${detail.uiactiontag}`); + } + return detail.caption; + } + } + + /** + * 绘制样式4模式分组 + * + * @protected + * @returns {*} + * @memberof AppFormGroup + */ + protected renderStyle4(): any { + return + {this.$slots.default} + ; + } + + /** + * 绘制样式2模式分组 + * + * @protected + * @returns {*} + * @memberof AppFormGroup + */ + protected renderStyle2(): any { + return + {this.$slots.default} + ; + } + + /** + * 绘制行为组 + * + * @protected + * @returns {*} + * @memberof AppFormGroup + */ + protected renderActionGroup(): any { + if (this.uiActionGroup) { + if (this.uiActionGroup.extractMode && Object.is(this.uiActionGroup.extractMode, 'ITEMS')) { + return + + {this.uiActionGroup.caption} + + + {this.uiActionGroup.details.map((detail: any, i: number) => { + return + this.doUIAction(e, detail)}> + {this.getIcon(detail)} + {this.getCaption(detail)} + ; + ; + })} + + ; + } else { + return + {this.uiActionGroup.details.map((detail: any, i: number) => { + return this.doUIAction(e, detail)}> + {this.getIcon(detail)} + {this.getCaption(detail)} + ; + })} + ; + } + } + } + + /** + * 绘制默认内容 + * + * @protected + * @returns {*} + * @memberof AppFormGroup + */ + protected renderContent(): any { + if (this.isShowCaption === false) { + return this.$slots.default; + } + return +

  • self.menuClick(item, self.data)}> + {icon ?
    {icon}
    : null} +
    {item.text}
    +
  • + ); + }); + } + return
      {menus}
    ; + } + }, + render() { + let content; + if (self.renderContent) { + content = self.renderContent(self.data); + } + if (self.$slots.content) { + content = self.$slots.content; + } + if (this.menus) { + content = this.renderContent(); + } + return ( +
    this.onContextMenu($event)} on-click={($event: Event) => this.destroy($event)}> +
    + {content} +
    +
    + ); + } + }).$mount(mount); + } + + /** + * 组件挂在完毕 + * + * @memberof ContextMenu + */ + public mounted() { + const contextRef: any = this.$refs.context; + if (contextRef) { + contextRef.oncontextmenu = (event: MouseEvent) => { + event.preventDefault(); + this.showContextMenu(event.clientX, event.clientY); + }; + } + } + + /** + * 菜单点击 + * + * @param {*} data + * @memberof ContextMenu + */ + @Emit('menu-click') + public menuClick(item: any, data: any) { } + + /** + * 绘制内容 + * + * @returns + * @memberof ContextMenu + */ + public render() { + return ( +
    + {this.$slots.default} +
    + ); + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/date-picker-range/date-picker-range.less b/app_AssetManagement/src/components/date-picker-range/date-picker-range.less new file mode 100644 index 0000000..521755c --- /dev/null +++ b/app_AssetManagement/src/components/date-picker-range/date-picker-range.less @@ -0,0 +1,31 @@ +.ibiz-date-picker { + display: flex; + min-width: 600px; + width: 600px; + .el-range-separator { + width: 30%; + } + + + .el-range-input { + + width: 35%; + border: 1px solid #DCDFE6; + border-radius: 4px; + padding: 0 21px; + } + + .el-input__inner { + width: calc( 100% - 200px); + border: none !important; + + .el-range__icon { + position: absolute; + left: 16px; + } + } + .date-picker-text{ + line-height: 36px; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/date-picker-range/date-picker-range.vue b/app_AssetManagement/src/components/date-picker-range/date-picker-range.vue new file mode 100644 index 0000000..690b5b7 --- /dev/null +++ b/app_AssetManagement/src/components/date-picker-range/date-picker-range.vue @@ -0,0 +1,97 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.less b/app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.less new file mode 100644 index 0000000..54fcfa1 --- /dev/null +++ b/app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.less @@ -0,0 +1,4 @@ +.dropdown-list-dynamic{ + display: inline-block; +} + diff --git a/app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.vue b/app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.vue new file mode 100644 index 0000000..d9c2912 --- /dev/null +++ b/app_AssetManagement/src/components/dropdown-list-dynamic/dropdown-list-dynamic.vue @@ -0,0 +1,295 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.less b/app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.less new file mode 100644 index 0000000..2d87468 --- /dev/null +++ b/app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.less @@ -0,0 +1,4 @@ + +.ivu-select-multiple .ivu-select-item-selected:after{ + display: none; +} diff --git a/app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.vue b/app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.vue new file mode 100644 index 0000000..3893517 --- /dev/null +++ b/app_AssetManagement/src/components/dropdown-list-mpicker/dropdown-list-mpicker.vue @@ -0,0 +1,234 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/dropdown-list/dropdown-list.less b/app_AssetManagement/src/components/dropdown-list/dropdown-list.less new file mode 100644 index 0000000..511ead1 --- /dev/null +++ b/app_AssetManagement/src/components/dropdown-list/dropdown-list.less @@ -0,0 +1,16 @@ +.dropdown-list-container { + .dropdown-list{ + display: inline-block; + } + .icon-circle { + display: none; + position: absolute; + right: 24px; + padding-top: 10px; + } +} +.dropdown-list-container:hover { + .icon-circle { + display: unset; + } +} diff --git a/app_AssetManagement/src/components/dropdown-list/dropdown-list.vue b/app_AssetManagement/src/components/dropdown-list/dropdown-list.vue new file mode 100644 index 0000000..a5f067c --- /dev/null +++ b/app_AssetManagement/src/components/dropdown-list/dropdown-list.vue @@ -0,0 +1,360 @@ + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/filter-tree/filter-mode.vue b/app_AssetManagement/src/components/filter-tree/filter-mode.vue new file mode 100755 index 0000000..2a7a5e2 --- /dev/null +++ b/app_AssetManagement/src/components/filter-tree/filter-mode.vue @@ -0,0 +1,147 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/filter-tree/filter-tree.less b/app_AssetManagement/src/components/filter-tree/filter-tree.less new file mode 100755 index 0000000..b7612a7 --- /dev/null +++ b/app_AssetManagement/src/components/filter-tree/filter-tree.less @@ -0,0 +1,31 @@ +.filter-tree { + .el-tree-node__content { + height: 40px; + .filter-tree-item { + display: flex; + width: 100%; + >div { + margin-right: 10px; + } + >div:nth-last-child(1) { + margin-right: 0; + } + .filter-tree-action { + display: none; + align-items: center; + .ivu-btn { + margin-right: 5px; + } + .ivu-icon-md-close { + color: red; + font-size: 24px; + } + } + } + .filter-tree-item:hover { + .filter-tree-action { + display: flex; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/filter-tree/filter-tree.vue b/app_AssetManagement/src/components/filter-tree/filter-tree.vue new file mode 100755 index 0000000..fe36372 --- /dev/null +++ b/app_AssetManagement/src/components/filter-tree/filter-tree.vue @@ -0,0 +1,241 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/input-box/input-box.less b/app_AssetManagement/src/components/input-box/input-box.less new file mode 100644 index 0000000..98a69c6 --- /dev/null +++ b/app_AssetManagement/src/components/input-box/input-box.less @@ -0,0 +1,17 @@ +.input-unit{ + position: relative; + .unit-text{ + position: absolute; + top: 0; + right: 20px; + } + .ivu-input-number{ + width: 100%; + } + .ivu-input-number-input{ + text-align: left; + } + .ivu-input-number-input:hover{ + padding-right:22px; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/input-box/input-box.vue b/app_AssetManagement/src/components/input-box/input-box.vue new file mode 100644 index 0000000..7c5de43 --- /dev/null +++ b/app_AssetManagement/src/components/input-box/input-box.vue @@ -0,0 +1,199 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/login/login.less b/app_AssetManagement/src/components/login/login.less new file mode 100644 index 0000000..a1a4099 --- /dev/null +++ b/app_AssetManagement/src/components/login/login.less @@ -0,0 +1,171 @@ +.ibiz-login { + height: 100vh; + width: 100vw; + + .ivu-row.content { + height: 100%; + + .ivu-col { + height: 100%; + } + + .left { + background-image: linear-gradient(0deg, #376be6 0%, #6470ef 100%); + color: #fff; + display: flex; + justify-content: center; + align-items: center; + + .pattern-svg { + position: absolute; + overflow: hidden; + max-width: 100%; + top: 25%; + left: 10%; + } + + .title { + width: 75%; + font-weight: bolder; + text-align: center; + font-family: "Inter", sans-serif; + font-size: 2.125rem; + padding-bottom: 3rem; + } + } + + .right { + background-color: #f6f8fb; + padding: 48px 15px; + display: flex; + justify-content: center; + + .login-wrapper { + width: 75%; + height: 100%; + } + } + + .ivu-layout { + margin: 48px 0px; + height: calc(100% - 96px); + background: transparent; + + .ivu-layout-header { + background: transparent; + padding: 0; + display: flex; + + img { + height: 40px; + } + + .title { + font-size: 36px; + display: inline-block; + line-height: 40px; + vertical-align: bottom; + margin-left: 8px; + } + } + + .ivu-layout-content { + + a[disable="true"] { + cursor: no-drop; + color: #c7cace; + fill: #c7cace; + } + + a[disable="true"]:hover { + color: #c7cace; + fill: #c7cace; + } + + h3 { + font-family: "Inter", sans-serif; + font-weight: 500; + line-height: 1.3; + color: #101f41; + font-size: 1.625rem; + margin-bottom: 25px; + } + + .ivu-form { + + .ivu-form-item { + margin-top: 30px; + + .ivu-input.ivu-input-default { + font-size: 1rem; + height: calc(3.25rem - 2px); + padding: 0.75rem 1.25rem; + } + + } + + .submit { + + .ivu-btn { + color: #fff; + background-color: #2d8cf0; + border-color: #2d8cf0; + } + } + } + + .forgot-password { + text-align: right; + } + + .external-account { + + .top-line { + padding: 8px 0px 16px 0px; + margin-bottom: 16px; + text-align: center; + + hr { + width: calc(100% - 30px); + margin-left: 15px; + position: absolute; + top: 19px; + z-index: 1; + } + + small { + position: absolute; + background: #f6f8fb; + z-index: 2; + left: 50%; + transform: translateX(-50%); + } + } + + .icons { + margin-bottom: 8px; + display: flex; + justify-content: space-evenly; + height: 54px; + fill: #2d8cf0; + } + + .bottom-line { + margin-bottom: 8px; + padding: 8px 0px 16px 0px; + + hr { + width: calc(100% - 30px); + margin-left: 15px; + } + } + } + } + + .ivu-layout-footer { + background: transparent; + padding: 0; + } + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/login/login.tsx b/app_AssetManagement/src/components/login/login.tsx new file mode 100644 index 0000000..7e0580e --- /dev/null +++ b/app_AssetManagement/src/components/login/login.tsx @@ -0,0 +1,321 @@ +import { Vue, Component, Watch } from 'vue-property-decorator'; +import { Environment } from '@/environments/environment'; +import './login.less'; + +/** + * 登录页面 + * + * @export + * @class Login + * @extends {Vue} + */ +@Component({}) +export default class Login extends Vue { + + /** + * 表单对象 + * + * @type {*} + * @memberof Login + */ + public form = { loginname: '', password: '' }; + + /** + * 登录提示语 + * + * @type {*} + * @memberof Login + */ + public loginTip: any = ""; + + /** + * 按钮可点击 + * + * @type {*} + * @memberof Login + */ + public canClick: any = true; + + /** + * 应用名称 + * + * @type {string} + * @memberof Login + */ + public appTitle: string = Environment.AppTitle; + + /** + * 值规则 + * + * @type {*} + * @memberof Login + */ + public rules: any = {}; + + /** + * 设置值规则 + * + * @memberof Login + */ + public setRules() { + this.rules = { + loginname: [ + { required: true, message: this.$t('components.login.loginname.message'), trigger: 'change' }, + ], + password: [ + { required: true, message: this.$t('components.login.password.message'), trigger: 'change' }, + ] + } + }; + + /** + * 生命周期Create + * + * @memberof Login + */ + public created() { + this.setRules(); + } + + /** + * 组件挂载完毕 + * + * @memberof Login + */ + public mounted() { + this.getCookie("loginname"); + setTimeout(() => { + const el = document.getElementById('app-loading-x'); + if (el) { + el.style.display = 'none'; + } + }, 300); + window.addEventListener('keydown', this.onKeyDown); + } + + /** + * 组件销毁 + * + * @memberof Login + */ + public destroyed(): void { + window.removeEventListener('keydown', this.onKeyDown); + } + + /** + * 按键 + * + * @memberof Login + */ + public onKeyDown = (e: KeyboardEvent) => { + if (e.keyCode === 13) { + this.handleSubmit(); + } + } + + /** + * 监听语言变化 + * + * @memberof Login + */ + @Watch('$i18n.locale') + public onLocaleChange() { + this.setRules(); + } + + /** + * 登陆处理 + * + * @memberof Login + */ + public handleSubmit(): void { + if (!isExistAndNotEmpty(this.form.loginname) || !isExistAndNotEmpty(this.form.password)) { + return; + } + const leftTime = new Date(); + leftTime.setTime(leftTime.getSeconds() - 1000); + document.cookie = "ibzuaa-token=;expires=" + leftTime.toUTCString(); + const form: any = this.$refs.loginForm; + let validatestate: boolean = true; + form.validate((valid: boolean) => { + validatestate = valid ? true : false; + }); + if (!validatestate) { + return; + } + const post: Promise = this.$http.post('/v7/login', this.form, true); + post.then((response: any) => { + if (response && response.status === 200) { + const data = response.data; + if (data && data.token) { + localStorage.setItem('token', data.token); + this.setCookie('ibzuaa-token', data.token, 1); + } + // 设置cookie,保存账号密码7天 + this.setCookie("loginname", this.form.loginname, 7); + // 页面回跳 + if (this.$route.query.redirect) { + window.location.href = decodeURIComponent((this.$route.query.redirect as any)); + } else { + this.$router.push({ path: '/' }); + } + } + }).catch((error: any) => { + // 登录提示 + const data = error.data; + if (data && data.message) { + this.loginTip = data.message; + this.$Message.error({ + content: "登录失败," + data.message, + duration: 5, + closable: true + }); + } else { + this.$Message.error({ + content: "登录失败", + duration: 5, + closable: true + }); + } + }); + + } + + /** + * 重置页面 + * + * @memberof Login + */ + public goReset(): void { + this.form = { loginname: '', password: '' }; + } + + /** + * 设置cookie + * + * @memberof Login + */ + public setCookie(name: any, value: any, day: any) { + if (day !== 0) { //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除 + let curDate = new Date(); + let curTamp = curDate.getTime(); + let curWeeHours = new Date(curDate.toLocaleDateString()).getTime() - 1; + let passedTamp = curTamp - curWeeHours; + let leftTamp = 24 * 60 * 60 * 1000 - passedTamp; + let leftTime = new Date(); + leftTime.setTime(leftTamp + curTamp); + document.cookie = name + "=" + escape(value) + ";expires=" + leftTime.toUTCString(); + } else { + document.cookie = name + "=" + escape(value); + } + } + + /** + * 获取cookie + * + * @memberof Login + */ + public getCookie(name: any): any { + let arr; + let reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); + if (arr = document.cookie.match(reg)) + return unescape(arr[2]); + else + return null; + } + + /** + * 绘制 + * + * @memberof Login + */ + public render(): any { + return ; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/property-layout/property-layout.less b/app_AssetManagement/src/components/property-layout/property-layout.less new file mode 100644 index 0000000..a2f37ff --- /dev/null +++ b/app_AssetManagement/src/components/property-layout/property-layout.less @@ -0,0 +1,25 @@ +.left-and-right { + display: flex; + height: 100%; + > div { + height: 100%; + padding: 0 16px; + } + > div:nth-child(1) { + flex-grow: 1; + padding-left: 0; + border-right: 1px solid var(--app-border-content); + display: flex; + flex-direction: column; + } +} +.top-and-bottom { + display: flex; + flex-direction: column; + height: 100%; + > div:nth-child(1) { + flex-grow: 1; + display: flex; + flex-direction: column; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/property-layout/property-layout.vue b/app_AssetManagement/src/components/property-layout/property-layout.vue new file mode 100644 index 0000000..6426914 --- /dev/null +++ b/app_AssetManagement/src/components/property-layout/property-layout.vue @@ -0,0 +1,48 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/tab-page-exp/tab-page-exp.less b/app_AssetManagement/src/components/tab-page-exp/tab-page-exp.less new file mode 100644 index 0000000..c506f36 --- /dev/null +++ b/app_AssetManagement/src/components/tab-page-exp/tab-page-exp.less @@ -0,0 +1,151 @@ +.ibiz-page-tag { + position: relative; + box-sizing: border-box; + height: 34px; + padding: 0 60px 0 30px; + background: var(--app-left-sidebar-background-color); + + .tags-body { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + + .tags-container { + position: absolute; + overflow: visible; + white-space: nowrap; + transition: left .3s ease; + + .ivu-tag { + margin: 0; + height: 34px; + line-height: 34px; + border: 0; + border-radius: 0; + border-right: 1px solid var(--view-background-color); + background: var(--view-dividing-line-color-tint); + font-size: 14px; + + .ivu-tag-text { + color: var(--view-font-color); + + >i::before { + vertical-align: initial; + } + } + + .text-icon { + height: 16px; + margin-bottom: -3px; + } + + .ivu-icon-ios-close { + visibility: hidden; + } + + .tag-text { + cursor: pointer; + display: table-cell; + + .ivu-tooltip { + display: block; + + .ivu-tooltip-rel { + display: block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + } + } + } + } + + .ivu-tag.tag-is-active { + background: var(--view-background-color); + + .ivu-tag-text { + color: var(--view-font-color-bright); + } + + .ivu-icon { + color: var(--view-font-color-bright); + } + } + + .ivu-tag:hover, + .ivu-tag.tag-is-active { + .ivu-icon-ios-close { + visibility: initial; + } + + .ivu-icon { + color: var(--view-font-color-bright); + } + } + + span { + .ivu-tag:last-child { + border-right: none; + } + } + } + } + + .move-btn { + font-size: 18px; + width: 30px; + height: 34px; + line-height: 34px; + background-color: var(--app-left-sidebar-background-color); + border-left: var(1px solid --view-dividing-line-color-bright); + border-right: var(1px solid --view-dividing-line-color-bright); + text-align: center; + cursor: pointer; + } + + // .move-btn:hover { + // background: #efefef; + // } + .move-left, + .move-right, + .ivu-dropdown { + position: absolute; + top: 0; + color: var(--app-left-sidebar-font-color); + } + + .move-left { + left: 0; + } + + .move-right { + right: 30px; + } + + .ivu-dropdown { + right: 0; + } +} + +.app-page-more { + background: var(--app-suspension-windows-background-color); + + .ivu-dropdown-item { + color: var(--app-suspension-windows-color); + } + + .ivu-dropdown-item:hover { + background: var(--app-suspension-windows-background-color-active); + color: var(--app-suspension-windows-font-color-active); + } +} + +.tags-transition-move { + transition: transform .3s; +} + +.tags-transition-enter, +.tags-transition-leave-to { + opacity: 0; +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/tab-page-exp/tab-page-exp.vue b/app_AssetManagement/src/components/tab-page-exp/tab-page-exp.vue new file mode 100644 index 0000000..b0b89ac --- /dev/null +++ b/app_AssetManagement/src/components/tab-page-exp/tab-page-exp.vue @@ -0,0 +1,254 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/upload-file/upload-file.less b/app_AssetManagement/src/components/upload-file/upload-file.less new file mode 100644 index 0000000..7497a76 --- /dev/null +++ b/app_AssetManagement/src/components/upload-file/upload-file.less @@ -0,0 +1,31 @@ +.upload-file{ + width: 100%; + .ivu-upload{ + height: 100%; + .ivu-upload .ivu-upload-drag{ + height: 100%; + } + .ivu-upload-drag{ + border-radius: 2px; + border:1px dashed #fff !important; + } + .ivu-upload-list{ + margin: 0px; + // display: none !important; + } + } + .upload-text{ + border:1px dashed rgb(125, 134, 148); + padding:12px 18px; + text-align: center; + color: rgb(141, 158, 167); + font-family: -apple-system, "SF UI Text", "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Zen Hei", sans-serif; + font-weight: 400; + font-size: 12px; + + } + .text-style{ + cursor: pointer; + color: rgb(41, 141, 248); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/components/upload-file/upload-file.vue b/app_AssetManagement/src/components/upload-file/upload-file.vue new file mode 100644 index 0000000..4640d56 --- /dev/null +++ b/app_AssetManagement/src/components/upload-file/upload-file.vue @@ -0,0 +1,175 @@ + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/components/view-shell/view-shell.vue b/app_AssetManagement/src/components/view-shell/view-shell.vue new file mode 100644 index 0000000..3ae761e --- /dev/null +++ b/app_AssetManagement/src/components/view-shell/view-shell.vue @@ -0,0 +1,12 @@ + + + \ No newline at end of file diff --git a/app_AssetManagement/src/counter/counter-service-register.ts b/app_AssetManagement/src/counter/counter-service-register.ts new file mode 100644 index 0000000..726caef --- /dev/null +++ b/app_AssetManagement/src/counter/counter-service-register.ts @@ -0,0 +1,79 @@ +/** + * 计数器服务注册中心 + * + * @export + * @class CounterServiceRegister + */ +export class CounterServiceRegister { + + /** + * 所有计数器服务Map + * + * @protected + * @type {*} + * @memberof CounterServiceRegister + */ + protected allCounterService: Map Promise> = new Map(); + + /** + * 已加载计数器服务Map缓存 + * + * @protected + * @type {Map} + * @memberof CounterServiceRegister + */ + protected serviceCache: Map = new Map(); + + /** + * Creates an instance of CounterServiceRegister. + * @memberof CounterServiceRegister + */ + constructor() { + this.init(); + } + + /** + * 初始化 + * + * @protected + * @memberof CounterServiceRegister + */ + protected init(): void { + } + + /** + * 加载计数器服务 + * + * @protected + * @param {string} serviceName + * @returns {Promise} + * @memberof CounterServiceRegister + */ + protected async loadService(serviceName: string): Promise { + const service = this.allCounterService.get(serviceName); + if (service) { + return service(); + } + } + + /** + * 获取计数器服务 + * + * @param {string} name + * @returns {Promise} + * @memberof CounterServiceRegister + */ + public async getService(name: string): Promise { + if (this.serviceCache.has(name)) { + return this.serviceCache.get(name); + } + const entityService: any = await this.loadService(name); + if (entityService && entityService.default) { + const instance: any = new entityService.default(); + this.serviceCache.set(name, instance); + return instance; + } + } + +} +export const counterServiceRegister: CounterServiceRegister = new CounterServiceRegister(); \ No newline at end of file diff --git a/app_AssetManagement/src/counter/counter-service.ts b/app_AssetManagement/src/counter/counter-service.ts new file mode 100644 index 0000000..eedb537 --- /dev/null +++ b/app_AssetManagement/src/counter/counter-service.ts @@ -0,0 +1,53 @@ +import { Store } from 'vuex'; + +/** + * 计数器服务基类 + * + * @export + * @class CounterService + */ +export default class CounterService { + + /** + * Vue 状态管理器 + * + * @private + * @type {(any | null)} + * @memberof CounterService + */ + private $store: Store | null = null; + + /** + * Creates an instance of CounterService. + * + * @param {*} [opts={}] + * @memberof CounterService + */ + constructor(opts: any = {}) { + this.$store = opts.$store; + } + + /** + * 获取状态管理器 + * + * @returns {(any | null)} + * @memberof CounterService + */ + public getStore(): Store | null { + return this.$store; + } + + /** + * 获取计数器服务 + * + * @protected + * @param {string} name 实体名称 + * @returns {Promise} + * @memberof CounterService + */ + public getService(name: string): Promise { + return (window as any)['counterServiceRegister'].getService(name); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/ctrl/data-panel-engine.ts b/app_AssetManagement/src/engine/ctrl/data-panel-engine.ts new file mode 100644 index 0000000..24e0a22 --- /dev/null +++ b/app_AssetManagement/src/engine/ctrl/data-panel-engine.ts @@ -0,0 +1,101 @@ +import ViewEngine from '../view/view-engine'; +import { events, ctrl } from '@/studio-core/global'; + +/** + * 快速摘要栏引擎 + * + * @export + * @class DataPanelEngine + * @extends {ViewEngine} + */ +export default class DataPanelEngine extends ViewEngine { + + /** + * 快捷信息栏部件 + * + * @protected + * @type {*} + * @memberof DataPanelEngine + */ + protected dataPanel: any = null; + + /** + * 表单部件 + * + * @protected + * @type {*} + * @memberof DataPanelEngine + */ + protected form: any = null; + + /** + * 获取上下文 + * + * @readonly + * @protected + * @type {*} + * @memberof DataPanelEngine + */ + protected get context(): any { + return this.view?.context || {}; + } + + /** + * 引擎初始化 + * + * @param {*} [opt={}] + * @memberof DataPanelEngine + */ + public init(opt: any = {}): void { + super.init(opt); + if (opt.form) { + this.form = opt.form; + } + if (opt.datapanel) { + this.dataPanel = opt.datapanel; + } + this.addListener(); + } + + /** + * 新增事件监听 + * + * @protected + * @memberof DataPanelEngine + */ + protected addListener(): void { + if (this.view) { + this.view.$on(events.view.MODEL_LOADED, () => { + this.setData(); + }); + } + if (this.form) { + this.form.$on(events.ctrl.LOAD, () => { + this.setData(); + }); + } + } + + /** + * 向快捷信息栏部件填充数据 + * + * @memberof DataPanelEngine + */ + public setData(): void { + const data = this.view.$appService.contextStore.getContextData(this.context, this.view.appDeName); + if (this.dataPanel) { + if (Object.is(this.dataPanel.controlType, ctrl.type.Form)) { + if (data && data.data) { + this.dataPanel.fillForm(data.data); + this.dataPanel.formLogic({ name: '', newVal: null, oldVal: null }); + } + } else if (Object.is(this.dataPanel.controlType, ctrl.type.Panel)) { + if (data && data.data) { + this.dataPanel.onInputDataChange(data.data); + } + } + + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/calendar-exp-view-engine.ts b/app_AssetManagement/src/engine/view/calendar-exp-view-engine.ts new file mode 100644 index 0000000..dbf5582 --- /dev/null +++ b/app_AssetManagement/src/engine/view/calendar-exp-view-engine.ts @@ -0,0 +1,102 @@ +import ViewEngine from './view-engine'; + +/** + * 日历导航视图界面引擎 + * + * @export + * @class CalendarExpViewEngine + * @extends {ViewEngine} + */ +export default class CalendarExpViewEngine extends ViewEngine { + + /** + * 日历导航栏部件 + * + * @type {*} + * @memberof CalendarExpViewEngine + */ + public calendarExpBar: any = null; + + /** + * Creates an instance of CalendarExpViewEngine. + * + * @memberof CalendarExpViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof CalendarExpViewEngine + */ + public init(options: any): void { + this.calendarExpBar = options.calendarexpbar; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof CalendarExpViewEngine + */ + public load(): void { + super.load(); + if (this.getCalendarExpBar() && this.isLoadDefault) { + const tag = this.getCalendarExpBar().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof CalendarExpViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'calendarexpbar')) { + this.calendarExpBarEvent(eventName, args); + + } + } + + /** + * 日历导航事件 + * + * @param {string} eventName + * @param {*} args + * @memberof CalendarExpViewEngine + */ + public calendarExpBarEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.view.$emit('viewload', args); + } + if (Object.is(eventName, 'selectionchange')) { + this.view.$emit('viewdataschange', args); + } + if (Object.is(eventName, 'activated')) { + this.view.$emit('viewdatasactivated', args); + } + } + + /** + * 获取部件对象 + * + * @returns {*} + * @memberof CalendarExpViewEngine + */ + public getCalendarExpBar(): any { + return this.calendarExpBar; + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/chart-view-engine.ts b/app_AssetManagement/src/engine/view/chart-view-engine.ts new file mode 100644 index 0000000..141124b --- /dev/null +++ b/app_AssetManagement/src/engine/view/chart-view-engine.ts @@ -0,0 +1,102 @@ +import { SearchViewEngine } from './search-view-engine'; + +/** + * 实体图表视图界面引擎 + * + * @export + * @class ChartViewEngine + * @extends {SearchViewEngine} + */ +export default class ChartViewEngine extends SearchViewEngine { + + /** + * 图表对象 + * + * @type {*} + * @memberof ChartViewEngine + */ + public chart: any; + + /** + * 图表初始化 + * + * @param {*} options + * @memberof ChartViewEngine + */ + public init(options: any): void { + this.chart = options.chart; + super.init(options); + + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof ChartViewEngine + */ + public load(opts: any = {}): void { + if (this.getSearchForm()) { + const tag = this.getSearchForm().name; + this.setViewState2({ tag: tag, action: 'loaddraft', viewdata: this.view.viewparams }); + } else if (this.getChart() && this.isLoadDefault) { + const tag = this.getChart().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: {} }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof ChartViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'chart')) { + this.chartEvent(eventName, args); + } + } + + /** + * 图表事件 + * + * @param {string} eventName + * @param {*} args + * @memberof ChartViewEngine + */ + public chartEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'beforeload')) { + this.dataCtrlBeforeLoad(args) + } + } + + + /** + * 搜索表单加载完成 + * + * @memberof ChartViewEngine + */ + public onSearchFormLoad(): void { + super.onSearchFormLoad(); + if (this.getChart() && this.isLoadDefault) { + const tag = this.getChart().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: {} }); + } + this.isLoadDefault = true; + } + + /** + * 获取图表 + * + * @returns {*} + * @memberof ChartViewEngine + */ + public getChart(): any { + return this.chart; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/chart-view9-engine.ts b/app_AssetManagement/src/engine/view/chart-view9-engine.ts new file mode 100644 index 0000000..9aa4fe7 --- /dev/null +++ b/app_AssetManagement/src/engine/view/chart-view9-engine.ts @@ -0,0 +1,30 @@ +import ChartViewEngine from './chart-view-engine'; + + +/** + * 实体图表视图(部件视图)界面引擎 + * + * @export + * @class ChartView9Engine + * @extends {ChartViewEngine} + */ +export default class ChartView9Engine extends ChartViewEngine { + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof ChartView9Engine + */ + public load(opts: any = {},isnotify:boolean=false): void { + if(!this.view.isformDruipart){ + super.load(opts); + }else{ + if(isnotify){ + super.load(opts); + } + } + + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/data-panel-engine.ts b/app_AssetManagement/src/engine/view/data-panel-engine.ts new file mode 100644 index 0000000..24aa8bc --- /dev/null +++ b/app_AssetManagement/src/engine/view/data-panel-engine.ts @@ -0,0 +1,72 @@ +import ViewEngine from './view-engine'; + +/** + * 快速摘要栏引擎 + * + * @export + * @class DataPanelEngine + * @extends {ViewEngine} + */ +export default class DataPanelEngine extends ViewEngine { + + /** + * 快捷信息栏部件 + * + * @protected + * @type {*} + * @memberof DataPanelEngine + */ + protected quickSummary: any = null; + + /** + * 表单部件 + * + * @protected + * @type {*} + * @memberof DataPanelEngine + */ + protected form: any = null; + + /** + * 获取上下文 + * + * @readonly + * @protected + * @type {*} + * @memberof DataPanelEngine + */ + protected get context(): any { + return this.view?.context || {}; + } + + /** + * 引擎初始化 + * + * @param {*} [opt={}] + * @memberof DataPanelEngine + */ + public init(opt: any = {}): void { + super.init(opt); + if (opt.form) { + this.form = opt.form; + } + if (opt.quicksummary) { + this.quickSummary = opt.quicksummary; + } + } + + /** + * 向快捷信息栏部件填充数据 + * + * @memberof DataPanelEngine + */ + public setData(): void { + const data = this.view.$appService.contextStore.getContextData(this.context, this.view.appDeName); + if (this.quickSummary && Object.is(this.quickSummary.controlType, 'FORM')) { + if (data && data.data) { + this.quickSummary.fillForm(data.data); + } + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/data-view-engine.ts b/app_AssetManagement/src/engine/view/data-view-engine.ts new file mode 100644 index 0000000..e9c134f --- /dev/null +++ b/app_AssetManagement/src/engine/view/data-view-engine.ts @@ -0,0 +1,141 @@ +import MDViewEngine from './md-view-engine'; + + +/** + * 视图引擎基础 + * + * @export + * @class DataViewEngine + * @extends {MDViewEngine} + */ +export default class DataViewEngine extends MDViewEngine { + + /** + * 表格部件 + * + * @type {*} + * @memberof DataViewEngine + */ + protected dataView: any; + + /** + * Creates an instance of DataViewEngine. + * @memberof DataViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof DataViewEngine + */ + public init(options: any = {}): void { + this.dataView = options.dataview; + super.init(options); + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof DataViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'dataview')) { + this.MDCtrlEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof DataViewEngine + */ + public getMDCtrl(): any { + return this.dataView; + } + + /** + * 删除操作 + * + * @returns {void} + * @memberof DataViewEngine + */ + public doRemove(): void { + let selectedData = this.getMDCtrl() && this.getMDCtrl().getSelection(); + if (!selectedData || selectedData == null || selectedData.length === 0) { + return; + } + let dataInfo = ''; + selectedData.forEach((record: any, index: number) => { + let srfmajortext = record.srfmajortext; + if (index < 5) { + if (!Object.is(dataInfo, '')) { + dataInfo += '、'; + } + dataInfo += srfmajortext; + } else { + return false; + } + }); + if (selectedData.length < 5) { + dataInfo = dataInfo + '共' + selectedData.length + '条数据'; + } else { + dataInfo = dataInfo + '...' + '共' + selectedData.length + '条数据'; + } + dataInfo = dataInfo.replace(/[null]/g, '').replace(/[undefined]/g, '').replace(/[ ]/g, ''); + // 询问框 + this.view.$Modal.confirm({ + title:'警告', + content: '确认要删除 ' + dataInfo + ',删除操作将不可恢复?', + onOk:() => { + this.removeData(null); + }, + onCancel: () => {} + }); + } + + /** + * 删除 + * + * @param {*} [arg={}] + * @returns {void} + * @memberof DataViewEngine + */ + public removeData(arg: any = {}): void { + if (!arg) { + arg = {}; + } + if (!arg.srfkeys) { + // 获取要删除的数据集合 + const selectedData: Array = this.getMDCtrl() && this.getMDCtrl().getSelection(); + if (!selectedData || selectedData == null || selectedData.length === 0) { + return; + } + + let keys = ''; + selectedData.forEach((record) => { + let key = record.srfkey; + if (!Object.is(keys, '')) { + keys += ';'; + } + keys += key; + }); + arg.srfkeys = keys; + } + + const grid: any = this.getMDCtrl(); + if (grid) { + grid.remove(arg); + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/data-view-exp-view-engine.ts b/app_AssetManagement/src/engine/view/data-view-exp-view-engine.ts new file mode 100644 index 0000000..2661a49 --- /dev/null +++ b/app_AssetManagement/src/engine/view/data-view-exp-view-engine.ts @@ -0,0 +1,102 @@ +import ViewEngine from './view-engine'; + +/** + * 卡片视图导航视图界面引擎 + * + * @export + * @class DataViewExpViewEngine + * @extends {ViewEngine} + */ +export default class DataViewExpViewEngine extends ViewEngine { + + /** + * 卡片导航栏部件 + * + * @type {*} + * @memberof DataViewExpViewEngine + */ + public dataviewExpBar: any = null; + + /** + * Creates an instance of DataViewExpViewEngine. + * + * @memberof DataViewExpViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof DataViewExpViewEngine + */ + public init(options: any): void { + this.dataviewExpBar = options.dataviewexpbar; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof DataViewExpViewEngine + */ + public load(): void { + super.load(); + if (this.getDataviewExpBar() && this.isLoadDefault) { + const tag = this.getDataviewExpBar().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof DataViewExpViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'dataviewexpbar')) { + this.dataviewExpBarEvent(eventName, args); + + } + } + + /** + * 卡片导航事件 + * + * @param {string} eventName + * @param {*} args + * @memberof DataViewExpViewEngine + */ + public dataviewExpBarEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.view.$emit('viewload', args); + } + if (Object.is(eventName, 'selectionchange')) { + this.view.$emit('viewdataschange', args); + } + if (Object.is(eventName, 'activated')) { + this.view.$emit('viewdatasactivated', args); + } + } + + /** + * 获取部件对象 + * + * @returns {*} + * @memberof DataViewExpViewEngine + */ + public getDataviewExpBar(): any { + return this.dataviewExpBar; + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/data-view9-engine.ts b/app_AssetManagement/src/engine/view/data-view9-engine.ts new file mode 100644 index 0000000..334edb6 --- /dev/null +++ b/app_AssetManagement/src/engine/view/data-view9-engine.ts @@ -0,0 +1,27 @@ +import DataViewEngine from './data-view-engine'; + +/** + * + * + * @export + * @class EditView9Engine + * @extends {EditViewEngine} + */ +export default class DataView9Engine extends DataViewEngine { + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof DataView9Engine + */ + public load(opts: any = {},isnotify:boolean=false): void { + if(!this.view.isformDruipart){ + super.load(opts); + }else{ + if(isnotify){ + super.load(opts); + } + } + } +} diff --git a/app_AssetManagement/src/engine/view/edit-view-engine.ts b/app_AssetManagement/src/engine/view/edit-view-engine.ts new file mode 100644 index 0000000..cdba7ba --- /dev/null +++ b/app_AssetManagement/src/engine/view/edit-view-engine.ts @@ -0,0 +1,219 @@ +import ViewEngine from './view-engine'; + +/** + * 编辑视图引擎 + * + * @export + * @class EditViewEngine + * @extends {ViewEngine} + */ +export default class EditViewEngine extends ViewEngine { + + /** + * 表单部件 + * + * @protected + * @type {*} + * @memberof EditViewEngine + */ + protected form: any; + + /** + * 父健为当前健 + * + * @protected + * @type {string} + * @memberof EditViewEngine + */ + protected p2k: string = ''; + + /** + * 初始化编辑视图引擎 + * + * @param {*} [options={}] + * @memberof EditViewEngine + */ + public init(options: any = {}): void { + this.form = options.form; + this.p2k = options.p2k; + super.init(options); + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof EditViewEngine + */ + public load(opts: any = {}): void { + super.load(opts); + if (this.getForm() && this.isLoadDefault) { + const tag = this.getForm().name; + let action: string = ''; + if (this.keyPSDEField && this.view.context[this.keyPSDEField] && !Object.is(this.view.context[this.keyPSDEField], '')) { + action = 'load'; + } else { + action = 'loaddraft'; + } + this.setViewState2({ tag: tag, action: action, viewdata: this.view.viewparams }); + } + this.isLoadDefault = true; + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof EditViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'form')) { + this.formEvent(eventName, args); + } + } + + /** + * 表单事件 + * + * @param {string} eventName + * @param {*} args + * @memberof EditViewEngine + */ + public formEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.onFormLoad(args); + } + if (Object.is(eventName, 'save')) { + this.onFormSave(args); + } + if (Object.is(eventName, 'remove')) { + this.onFormRemove(args); + } + } + + /** + * 表单加载完成 + * + * @param {*} args + * @memberof EditViewEngine + */ + public onFormLoad(arg: any): void { + this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField ? arg[this.majorPSDEField] : arg.srfmajortext) : this.view.$t('app.local.new'); + + this.setTabCaption(this.view.model.dataInfo, Object.is(arg.srfuf, '0')); + const newdata: boolean = !Object.is(arg.srfuf, '1'); + this.calcToolbarItemState(newdata); + this.calcToolbarItemAuthState(this.transformData(arg)); + } + + /** + * 表单保存完成 + * + * @param {*} args + * @memberof EditViewEngine + */ + public onFormSave(arg: any): void { + this.view.model.dataInfo = Object.is(arg.srfuf, '1') ? (this.majorPSDEField ? arg[this.majorPSDEField] : arg.srfmajortext) : this.view.$t('app.local.new'); + + this.setTabCaption(this.view.model.dataInfo, Object.is(arg.srfuf, '0')); + const newdata: boolean = !Object.is(arg.srfuf, '1'); + this.calcToolbarItemState(newdata); + this.calcToolbarItemAuthState(this.transformData(arg)); + this.view.$emit('save', arg); + this.view.$emit('viewdataschange', JSON.stringify({ action: 'save', status: 'success', data: arg })); + } + + /** + * 表单删除完成 + * + * @param {*} args + * @memberof EditViewEngine + */ + public onFormRemove(arg: any): void { + this.view.$emit('remove', arg); + this.view.$emit('viewdataschange', JSON.stringify({ action: 'remove', status: 'success', data: arg })); + } + + /** + * 处理实体界面行为 + * + * @param {string} tag + * @param {string} [actionmode] + * @returns {void} + * @memberof EditViewEngine + */ + public doSysUIAction(tag: string, actionmode?: string): void { + if (Object.is(tag, 'Save')) { + this.doSave(); + return; + } + super.doSysUIAction(tag, actionmode); + } + + /** + * 编辑界面_保存操作 + * + * @memberof IBizEditViewController + */ + public doSave(): void { + // this.afterformsaveaction = ''; + this.saveData({}); + } + + /** + * 保存视图数据 + * + * @param {*} [arg={}] + * @memberof EditViewEngine + */ + public saveData(arg: any = {}): void { + if (this.getForm()) { + const tag = this.getForm().name; + this.setViewState2({ tag: tag, action: 'save', viewdata: arg }); + } + } + + /** + * 获取表单对象 + * + * @returns {*} + * @memberof EditViewEngine + */ + public getForm(): any { + return this.form; + } + + /** + * 设置分页标题 + * + * @param {string} info + * @param {boolean} isNew + * @memberof EditViewEngine + */ + public setTabCaption(info: string, isNew: boolean): void { + let viewdata: any = this.view.model; + if (viewdata && info && !Object.is(info, '')) { + if (this.view.$route) { + this.view.$route.meta.info = info; + } + this.view.$emit('viewModelChange', this.view.viewCaption); + this.view.$appService.navHistory.setCaption({ tag: this.view.viewtag, info: viewdata.dataInfo }); + } + } + + /** + * 转化数据 + * + * @memberof EditViewEngine + */ + public transformData(arg: any) { + if (!this.getForm() || !(this.getForm().transformData instanceof Function)) { + return null; + } + return this.getForm().transformData(arg); + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/edit-view2-engine.ts b/app_AssetManagement/src/engine/view/edit-view2-engine.ts new file mode 100644 index 0000000..929d6da --- /dev/null +++ b/app_AssetManagement/src/engine/view/edit-view2-engine.ts @@ -0,0 +1,123 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体编辑视图(左右关系)界面引擎 + * + * @export + * @class EditView2Engine + * @extends {EditViewEngine} + */ +export default class EditView2Engine extends EditViewEngine { + + /** + * 数据关系栏 + * + * @protected + * @type {*} + * @memberof EditView2Engine + */ + protected drBar: any; + + /** + * Creates an instance of EditView2Engine. + * + * @memberof EditView2Engine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} [options={}] + * @memberof EditView2Engine + */ + public init(options: any = {}): void { + this.drBar = options.drbar; + super.init(options); + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof EditView2Engine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'drbar')) { + this.drbarEvent(eventName, args); + } + } + + /** + * 数据关系栏事件 + * + * @param {string} eventName + * @param {any[]} args + * @memberof EditView2Engine + */ + public drbarEvent(eventName: string, args: any[]): void { + if (Object.is(eventName, 'selectionchange')) { + this.drBarSelectionChange(args); + } + } + + /** + * 数据关系栏选中 + * + * @param {any[]} args + * @memberof EditView2Engine + */ + public drBarSelectionChange(args: any[]): void { + const item = args[0]; + if (!item || Object.keys(item).length === 0) { + return; + } + this.view.selection = {}; + Object.assign(this.view.selection, JSON.parse(JSON.stringify(item))); + } + + /** + * 表单加载完成 + * + * @param {*} [arg={}] + * @memberof EditView2Engine + */ + public onFormLoad(arg: any = {}): void { + super.onFormLoad(arg); + this.view.formData = arg; + if (this.getDRBar()) { + const tag = this.getDRBar().name; + this.setViewState2({ tag: tag, action: 'state', viewdata: this.view.vieparams }); + } + } + + /** + * 表单保存完成 + * + * @param {*} [arg={}] + * @memberof EditView2Engine + */ + public onFormSave(arg: any = {}): void { + super.onFormSave(arg); + this.view.formData = arg; + if (this.getDRBar()) { + const tag = this.getDRBar().name; + this.setViewState2({ tag: tag, action: 'state', viewdata: this.view.viewparams }); + } + } + + /** + * 获取关系 + * + * @returns {*} + * @memberof EditView2Engine + */ + public getDRBar(): any { + return this.drBar; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/edit-view3-engine.ts b/app_AssetManagement/src/engine/view/edit-view3-engine.ts new file mode 100644 index 0000000..22f29e9 --- /dev/null +++ b/app_AssetManagement/src/engine/view/edit-view3-engine.ts @@ -0,0 +1,123 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体编辑视图(分页关系)界面引擎 + * + * @export + * @class EditView3Engine + * @extends {EditViewEngine} + */ +export default class EditView3Engine extends EditViewEngine { + + /** + * 数据关系栏 + * + * @protected + * @type {*} + * @memberof EditView3Engine + */ + protected drTab: any; + + /** + * Creates an instance of EditView3Engine. + * + * @memberof EditView3Engine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} [options={}] + * @memberof EditView3Engine + */ + public init(options: any = {}): void { + this.drTab = options.drtab; + super.init(options); + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof EditView3Engine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'drtab')) { + this.drTabEvent(eventName, args); + } + } + + /** + * 数据关系栏事件 + * + * @param {string} eventName + * @param {any[]} args + * @memberof EditView3Engine + */ + public drTabEvent(eventName: string, args: any[]): void { + if (Object.is(eventName, 'selectionchange')) { + this.drTabSelectionChange(args); + } + } + + /** + * 数据关系栏选中 + * + * @param {any[]} args + * @memberof EditView3Engine + */ + public drTabSelectionChange(args: any[]): void { + const item = args[0]; + if (!item || Object.keys(item).length === 0) { + return; + } + this.view.selection = {}; + Object.assign(this.view.selection, JSON.parse(JSON.stringify(item))); + } + + /** + * 表单加载完成 + * + * @param {*} [arg={}] + * @memberof EditView3Engine + */ + public onFormLoad(arg: any = {}): void { + super.onFormLoad(arg); + this.view.formData = arg; + if (this.getDrTab()) { + const tag = this.getDrTab().name; + this.setViewState2({ tag: tag, action: 'state', viewdata: this.view.viewparams }); + } + } + + /** + * 表单保存完成 + * + * @param {*} [arg={}] + * @memberof EditView3Engine + */ + public onFormSave(arg: any = {}): void { + super.onFormSave(arg); + this.view.formData = arg; + if (this.getDrTab()) { + const tag = this.getDrTab().name; + this.setViewState2({ tag: tag, action: 'state', viewdata: this.view.viewparams }); + } + } + + /** + * 获取关系 + * + * @returns {*} + * @memberof EditView3Engine + */ + public getDrTab(): any { + return this.drTab; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/edit-view4-engine.ts b/app_AssetManagement/src/engine/view/edit-view4-engine.ts new file mode 100644 index 0000000..93335b4 --- /dev/null +++ b/app_AssetManagement/src/engine/view/edit-view4-engine.ts @@ -0,0 +1,121 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体编辑视图(上下关系)界面引擎 + * + * @export + * @class EditView4Engine + * @extends {EditViewEngine} + */ +export default class EditView4Engine extends EditViewEngine { + + /** + * 数据关系栏 + * + * @protected + * @type {*} + * @memberof EditView4Engine + */ + protected drTab: any; + + /** + * Creates an instance of EditView4Engine. + * + * @memberof EditView4Engine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} [options={}] + * @memberof EditView4Engine + */ + public init(options: any = {}): void { + this.drTab = options.drtab; + super.init(options); + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof EditView4Engine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'drtab')) { + this.drTabEvent(eventName, args); + } + } + + /** + * 数据关系栏事件 + * + * @param {string} eventName + * @param {any[]} args + * @memberof EditView4Engine + */ + public drTabEvent(eventName: string, args: any[]): void { + if (Object.is(eventName, 'selectionchange')) { + this.drTabSelectionChange(args); + } + } + + /** + * 数据关系栏选中 + * + * @param {any[]} args + * @memberof EditView4Engine + */ + public drTabSelectionChange(args: any[]): void { + const item = args[0]; + if (!item || Object.keys(item).length === 0) { + return; + } + this.view.selection = {}; + Object.assign(this.view.selection, JSON.parse(JSON.stringify(item))); + } + + /** + * 表单加载完成 + * + * @param {*} [arg={}] + * @memberof EditView4Engine + */ + public onFormLoad(arg: any = {}): void { + super.onFormLoad(arg); + if (this.getDrTab()) { + const tag = this.getDrTab().name; + this.setViewState2({ tag: tag, action: 'state', viewdata: this.view.viewparams }); + } + } + + /** + * 表单保存完成 + * + * @param {*} [arg={}] + * @memberof EditView4Engine + */ + public onFormSave(arg: any = {}): void { + super.onFormSave(arg); + if (this.getDrTab()) { + const tag = this.getDrTab().name; + this.setViewState2({ tag: tag, action: 'state', viewdata: this.view.viewparams }); + } + } + + /** + * 获取关系 + * + * @returns {*} + * @memberof EditView4Engine + */ + public getDrTab(): any { + return this.drTab; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/edit-view9-engine.ts b/app_AssetManagement/src/engine/view/edit-view9-engine.ts new file mode 100644 index 0000000..b5cc1db --- /dev/null +++ b/app_AssetManagement/src/engine/view/edit-view9-engine.ts @@ -0,0 +1,12 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * + * + * @export + * @class EditView9Engine + * @extends {EditViewEngine} + */ +export default class EditView9Engine extends EditViewEngine { + +} diff --git a/app_AssetManagement/src/engine/view/form-pickup-data-view-engine.ts b/app_AssetManagement/src/engine/view/form-pickup-data-view-engine.ts new file mode 100644 index 0000000..1babbc9 --- /dev/null +++ b/app_AssetManagement/src/engine/view/form-pickup-data-view-engine.ts @@ -0,0 +1,65 @@ +import MDViewEngine from './md-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class GridViewEngine + * @extends {MDViewEngine} + */ +export default class FormPickupDataViewEngine extends MDViewEngine { + + /** + * 数据视图部件 + * + * @type {*} + * @memberof FormPickupDataViewEngine + */ + protected dataview: any; + + /** + * Creates an instance of GridViewEngine. + * @memberof GridViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof GridViewEngine + */ + public init(options: any = {}): void { + this.dataview = options.dataview; + super.init(options); + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof GridViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'dataview')) { + this.MDCtrlEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof GridViewEngine + */ + public getMDCtrl(): any { + return this.dataview; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/grid-exp-view-engine.ts b/app_AssetManagement/src/engine/view/grid-exp-view-engine.ts new file mode 100644 index 0000000..79999ab --- /dev/null +++ b/app_AssetManagement/src/engine/view/grid-exp-view-engine.ts @@ -0,0 +1,102 @@ +import ViewEngine from './view-engine'; + +/** + * 表格导航视图界面引擎 + * + * @export + * @class GridExpViewEngine + * @extends {ViewEngine} + */ +export default class GridExpViewEngine extends ViewEngine { + + /** + * 表格导航栏部件 + * + * @type {*} + * @memberof GridExpViewEngine + */ + public gridExpBar: any = null; + + /** + * Creates an instance of GridExpViewEngine. + * + * @memberof GridExpViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof GridExpViewEngine + */ + public init(options: any): void { + this.gridExpBar = options.gridexpbar; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof GridExpViewEngine + */ + public load(): void { + super.load(); + if (this.getGridExpBar() && this.isLoadDefault) { + const tag = this.getGridExpBar().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof GridExpViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'gridexpbar')) { + this.gridExpBarEvent(eventName, args); + + } + } + + /** + * 表格导航事件 + * + * @param {string} eventName + * @param {*} args + * @memberof GridExpViewEngine + */ + public gridExpBarEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.view.$emit('viewload', args); + } + if (Object.is(eventName, 'selectionchange')) { + this.view.$emit('viewdataschange', args); + } + if (Object.is(eventName, 'activated')) { + this.view.$emit('viewdatasactivated', args); + } + } + + /** + * 获取部件对象 + * + * @returns {*} + * @memberof GridExpViewEngine + */ + public getGridExpBar(): any { + return this.gridExpBar; + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/grid-view-engine.ts b/app_AssetManagement/src/engine/view/grid-view-engine.ts new file mode 100644 index 0000000..3ddfb02 --- /dev/null +++ b/app_AssetManagement/src/engine/view/grid-view-engine.ts @@ -0,0 +1,114 @@ +import MDViewEngine from './md-view-engine'; + + +/** + * 视图引擎基础 + * + * @export + * @class GridViewEngine + * @extends {MDViewEngine} + */ +export default class GridViewEngine extends MDViewEngine { + + /** + * 表格部件 + * + * @type {*} + * @memberof GridViewEngine + */ + protected grid: any; + + /** + * Creates an instance of GridViewEngine. + * @memberof GridViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof GridViewEngine + */ + public init(options: any = {}): void { + this.grid = options.grid; + super.init(options); + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof GridViewEngine + */ + public load(opts: any = {},isnotify:boolean=false): void { + if(!this.view.isformDruipart){ + super.load(opts); + }else{ + if(isnotify){ + super.load(opts); + } + } + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof GridViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'grid')) { + this.MDCtrlEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof GridViewEngine + */ + public getMDCtrl(): any { + return this.grid; + } + + /** + * 事件处理 + * + * @param {string} eventName + * @param {*} args + * @memberof GridViewEngine + */ + public MDCtrlEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'rowdblclick') && this.gridRowAllowActive(2)) { + this.doEdit(args); + return; + } + if (Object.is(eventName, 'selectionchange')) { + this.selectionChange(args); + if (this.gridRowAllowActive(1)) { + this.doEdit(args); + } + return; + } + super.MDCtrlEvent(eventName, args); + } + + /** + * 表格是否被允许激活 + * + * @param {number} mode + * @returns {boolean} + * @memberof GridViewEngine + */ + public gridRowAllowActive(mode: number): boolean { + return this.view.gridRowActiveMode === mode ? true : false; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/grid-view8-engine.ts b/app_AssetManagement/src/engine/view/grid-view8-engine.ts new file mode 100644 index 0000000..b118e08 --- /dev/null +++ b/app_AssetManagement/src/engine/view/grid-view8-engine.ts @@ -0,0 +1,288 @@ +import GridViewEngine from './grid-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class GridView8Engine + * @extends {GridViewEngine} + */ +export default class GridView8Engine extends GridViewEngine { + + /** + * 表格部件 + * + * @type {*} + * @memberof GridView8Engine + */ + protected grid: any; + + /** + * 表格部件 + * + * @protected + * @type {*} + * @memberof Grid8ViewEngine + */ + protected totalgrid: any; + + /** + * 选中数据集 + * + * @protected + * @type {any[]} + * @memberof Grid8ViewEngine + */ + public selections: any[] = []; + + /** + * 选中数据集 + * + * @protected + * @type {any[]} + * @memberof Grid8ViewEngine + */ + public selections2: any[] = []; + + /** + * Creates an instance of GridView8Engine. + * @memberof GridView8Engine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof GridView8Engine + */ + public init(options: any = {}): void { + this.grid = options.grid; + this.totalgrid = options.totalgrid; + super.init(options); + } + + /** + * 引擎加载 + * + * @memberof MDViewEngine + */ + public load(): void { + super.load(); + this.load2(); + } + + /** + * 加载 + * + * @memberof Grid8ViewEngine + */ + public load2(): void { + if (this.getMDCtrl2()) { + const tag = this.getMDCtrl2().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof GridView8Engine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'totalgrid')) { + this.MD2Event(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof GridView8Engine + */ + public getMDCtrl(): any { + return this.grid; + } + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof GridView8Engine + */ + public getMDCtrl2(): any { + return this.totalgrid; + } + + /** + * 删除 + * + * @param {*} [arg={}] + * @returns {void} + * @memberof GridView8Engine + */ + public removeData(items: any[] = []): void { + let arg: any = {}; + // 获取要删除的数据集合 + if (!items || items == null || items.length === 0) { + return; + } + + let keys = ''; + items.forEach((item) => { + let key = item.srfkey; + if (!Object.is(keys, '')) { + keys += ';'; + } + keys += key; + }); + arg.srfkeys = keys; + + const grid: any = this.getMDCtrl(); + if (grid) { + grid.remove(arg); + } + } + + /** + * 添加数据 + * + * @param {any[]} [items=[]] + * @memberof Grid8ViewEngine + */ + public addBatchData(items: any[] = []): void { + let arg: any = {}; + // 获取要添加的数据集合 + if (!items || items == null || items.length === 0) { + return; + } + + let keys = ''; + items.forEach((item) => { + let key = item.srfkey; + if (!Object.is(keys, '')) { + keys += ';'; + } + keys += key; + }); + arg.srfkeys = keys; + + const grid: any = this.getMDCtrl(); + if (grid) { + grid.addBatchData(arg); + } + } + + /** + * + * + * @param {string} eventName + * @param {*} [args={}] + * @memberof GridView8Engine + */ + public MDEvent(eventName: string, args: any = {}): void { + if (Object.is(eventName, 'rowclick')) { + // this.***() + } + if (Object.is(eventName, 'rowdblclick')) { + // this.doEdit(args); + } + if (Object.is(eventName, 'selectionchange')) { + // this.***() + this.selectionChange(args); + } + if (Object.is(eventName, 'remove')) { + this.load2(); + } + } + + /** + * + * + * @param {string} eventName + * @param {*} [args={}] + * @memberof GridView8Engine + */ + public MD2Event(eventName: string, args: any = {}): void { + if (Object.is(eventName, 'rowclick')) { + // this.***() + } + if (Object.is(eventName, 'rowdblclick')) { + // this.doEdit(args); + } + if (Object.is(eventName, 'selectionchange')) { + // this.***() + this.selectionChange2(args); + } + } + + /** + * 选中变化 + * + * @param {any[]} args + * @memberof GridView8Engine + */ + public selectionChange(args: any[]): void { + this.selections = [...args]; + } + + /** + * 选中变化 + * + * @param {any[]} args + * @memberof GridView8Engine + */ + public selectionChange2(args: any[]): void { + this.selections2 = [...args]; + } + + /** + * 移动数据 + * + * @memberof Grid8ViewEngine + */ + public moveData() { + this.addBatchData(this.selections2); + } + + /** + * 移动数据 + * + * @memberof Grid8ViewEngine + */ + public moveData2() { + this.removeData(this.selections); + } + + /** + * 移动全部数据 + * + * @memberof Grid8ViewEngine + */ + public moveAllData() { + if (this.getMDCtrl2()) { + var items: any[] = this.getMDCtrl2().getDatas(); + this.addBatchData(items); + } + } + + /** + * 移动全部数据 + * + * @memberof Grid8ViewEngine + */ + public moveAllData2() { + if (this.getMDCtrl()) { + var items: any[] = this.getMDCtrl().getDatas(); + this.removeData(items); + } + } +} diff --git a/app_AssetManagement/src/engine/view/grid-view9-engine.ts b/app_AssetManagement/src/engine/view/grid-view9-engine.ts new file mode 100644 index 0000000..8b64890 --- /dev/null +++ b/app_AssetManagement/src/engine/view/grid-view9-engine.ts @@ -0,0 +1,19 @@ +import GridViewEngine from './grid-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class GridView9Engine + * @extends {GridViewEngine} + */ +export default class GridView9Engine extends GridViewEngine { + + /** + * Creates an instance of GridView9Engine. + * @memberof GridView9Engine + */ + constructor() { + super(); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/html-view-engine.ts b/app_AssetManagement/src/engine/view/html-view-engine.ts new file mode 100644 index 0000000..ad6fc0d --- /dev/null +++ b/app_AssetManagement/src/engine/view/html-view-engine.ts @@ -0,0 +1,12 @@ +import ViewEngine from './view-engine'; + +/** + * + * + * @export + * @class HtmlViewEngine + * @extends {ViewEngine} + */ +export default class HtmlViewEngine extends ViewEngine { + +} diff --git a/app_AssetManagement/src/engine/view/kan-ban-view-engine.ts b/app_AssetManagement/src/engine/view/kan-ban-view-engine.ts new file mode 100644 index 0000000..928ecca --- /dev/null +++ b/app_AssetManagement/src/engine/view/kan-ban-view-engine.ts @@ -0,0 +1,58 @@ +import DataViewEngine from './data-view-engine'; + + +/** + * 视图引擎基础 + * + * @export + * @class DataViewEngine + * @extends {MDViewEngine} + */ +export default class KanBanViewEngine extends DataViewEngine { + + /** + * 表格部件 + * + * @type {*} + * @memberof DataViewEngine + */ + protected kanban: any; + + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof DataViewEngine + */ + public init(options: any = {}): void { + this.kanban = options.kanban; + super.init(options); + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof DataViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'kanban')) { + this.MDCtrlEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof DataViewEngine + */ + public getMDCtrl(): any { + return this.kanban; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/list-exp-view-engine.ts b/app_AssetManagement/src/engine/view/list-exp-view-engine.ts new file mode 100644 index 0000000..c90913e --- /dev/null +++ b/app_AssetManagement/src/engine/view/list-exp-view-engine.ts @@ -0,0 +1,102 @@ +import ViewEngine from './view-engine'; + +/** + * 列表导航视图界面引擎 + * + * @export + * @class ListExpViewEngine + * @extends {ViewEngine} + */ +export default class ListExpViewEngine extends ViewEngine { + + /** + * 列表导航栏部件 + * + * @type {*} + * @memberof ListExpViewEngine + */ + public listExpBar: any = null; + + /** + * Creates an instance of ListExpViewEngine. + * + * @memberof ListExpViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof ListExpViewEngine + */ + public init(options: any): void { + this.listExpBar = options.listexpbar; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof ListExpViewEngine + */ + public load(): void { + super.load(); + if (this.getListExpBar() && this.isLoadDefault) { + const tag = this.getListExpBar().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof ListExpViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'listexpbar')) { + this.listExpBarEvent(eventName, args); + + } + } + + /** + * 列表导航事件 + * + * @param {string} eventName + * @param {*} args + * @memberof ListExpViewEngine + */ + public listExpBarEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.view.$emit('viewload', args); + } + if (Object.is(eventName, 'selectionchange')) { + this.view.$emit('viewdataschange', args); + } + if (Object.is(eventName, 'activated')) { + this.view.$emit('viewdatasactivated', args); + } + } + + /** + * 获取部件对象 + * + * @returns {*} + * @memberof ListExpViewEngine + */ + public getListExpBar(): any { + return this.listExpBar; + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/list-view-engine.ts b/app_AssetManagement/src/engine/view/list-view-engine.ts new file mode 100644 index 0000000..c66c113 --- /dev/null +++ b/app_AssetManagement/src/engine/view/list-view-engine.ts @@ -0,0 +1,150 @@ +import MDViewEngine from './md-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class ListViewEngine + * @extends {MDViewEngine} + */ +export default class ListViewEngine extends MDViewEngine { + + /** + * 表格部件 + * + * @type {*} + * @memberof ListViewEngine + */ + protected list: any; + + /** + * Creates an instance of ListViewEngine. + * @memberof ListViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof ListViewEngine + */ + public init(options: any = {}): void { + this.list = options.list; + super.init(options); + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof ListViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'list')) { + this.MDCtrlEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof ListViewEngine + */ + public getMDCtrl(): any { + return this.list; + } + + /** + * 删除操作 + * + * @returns {void} + * @memberof ListViewEngine + */ + public doRemove(): void { + + let selectedData = this.getMDCtrl() && this.getMDCtrl().getSelection(); + if (!selectedData || selectedData == null || selectedData.length === 0) { + return; + } + + let dataInfo = ''; + + selectedData.forEach((record: any, index: number) => { + let srfmajortext = record.srfmajortext; + if (index < 5) { + if (!Object.is(dataInfo, '')) { + dataInfo += '、'; + } + dataInfo += srfmajortext; + } else { + return false; + } + + }); + + + if (selectedData.length < 5) { + dataInfo = dataInfo + '共' + selectedData.length + '条数据'; + } else { + dataInfo = dataInfo + '...' + '共' + selectedData.length + '条数据'; + } + + dataInfo = dataInfo.replace(/[null]/g, '').replace(/[undefined]/g, '').replace(/[ ]/g, ''); + + // 询问框 + this.view.$Modal.confirm({ + title:'警告', + content: '确认要删除 ' + dataInfo + ',删除操作将不可恢复?', + onOk:() => { + this.removeData(null); + }, + onCancel: () => { + + } + }); + } + + /** + * 删除 + * + * @param {*} [arg={}] + * @returns {void} + * @memberof ListViewEngine + */ + public removeData(arg: any = {}): void { + if (!arg) { + arg = {}; + } + if (!arg.srfkeys) { + // 获取要删除的数据集合 + const selectedData: Array = this.getMDCtrl() && this.getMDCtrl().getSelection(); + if (!selectedData || selectedData == null || selectedData.length === 0) { + return; + } + + let keys = ''; + selectedData.forEach((record) => { + let key = record.srfkey; + if (!Object.is(keys, '')) { + keys += ';'; + } + keys += key; + }); + arg.srfkeys = keys; + } + + const list: any = this.getMDCtrl(); + if (list) { + list.remove(arg); + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/list-view9-engine.ts b/app_AssetManagement/src/engine/view/list-view9-engine.ts new file mode 100644 index 0000000..1cc6cd1 --- /dev/null +++ b/app_AssetManagement/src/engine/view/list-view9-engine.ts @@ -0,0 +1,29 @@ +import ListViewEngine from './list-view-engine'; + +/** + * + * + * @export + * @class EditView9Engine + * @extends {EditViewEngine} + */ +export default class ListView9Engine extends ListViewEngine { + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof ListView9Engine + */ + public load(opts: any = {},isnotify:boolean=false): void { + if(!this.view.isformDruipart){ + super.load(opts); + }else{ + if(isnotify){ + super.load(opts); + } + } + + } + +} diff --git a/app_AssetManagement/src/engine/view/md-view-engine.ts b/app_AssetManagement/src/engine/view/md-view-engine.ts new file mode 100644 index 0000000..6834e64 --- /dev/null +++ b/app_AssetManagement/src/engine/view/md-view-engine.ts @@ -0,0 +1,453 @@ +import ViewEngine from './view-engine'; + +/** + * 多数据引擎 + * + * @export + * @class MDViewEngine + * @extends {ViewEngine} + */ +export default class MDViewEngine extends ViewEngine { + + /** + * 表格部件 + * + * @type {*} + * @memberof GridViewEngine + */ + protected md: any; + + /** + * 表单部件 + * + * @type {*} + * @memberof GridViewEngine + */ + protected searchForm: any; + + /** + * 属性面板 + * + * @protected + * @type {*} + * @memberof PickupGridViewEngine + */ + protected propertypanel: any; + + /** + * 打开数据 + * + * @protected + * @memberof MDViewEngine + */ + protected openData?: (args: any[], fullargs?: any[], params?: any, $event?: any, xData?: any) => void; + + /** + * 新建数据 + * + * @protected + * @memberof GridViewEngine + */ + protected newData?: (args: any[], fullargs?: any[], params?: any, $event?: any, xData?: any) => void; + + /** + * Creates an instance of GridViewEngine. + * @memberof GridViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof GridViewEngine + */ + public init(options: any = {}): void { + this.propertypanel = options.propertypanel; + this.searchForm = options.searchform; + this.openData = options.opendata; + this.newData = options.newdata; + super.init(options); + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof MDViewEngine + */ + public load(opts: any = {}): void { + super.load(opts); + if (this.getSearchForm()) { + const tag = this.getSearchForm().name; + this.setViewState2({ tag: tag, action: 'loaddraft', viewdata: this.view.viewparams }); + } else if (this.getMDCtrl() && this.isLoadDefault) { + const tag = this.getMDCtrl().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: Object.assign(this.view.viewparams,opts) }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof GridViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'searchform')) { + this.searchFormEvent(eventName, args); + } + } + + /** + * 搜索表单事件 + * + * @param {string} eventName + * @param {*} [args={}] + * @memberof MDViewEngine + */ + public searchFormEvent(eventName: string, args: any = {}): void { + if (Object.is(eventName, 'load')) { + this.onSearchFormLoad(args); + } + if (Object.is(eventName, 'search')) { + this.onSearchFormLoad(args); + } + } + + /** + * 事件处理 + * + * @param {string} eventName + * @param {any[]} args + * @memberof MDViewEngine + */ + public MDCtrlEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'rowclick')) { + } + if (Object.is(eventName, 'rowdblclick')) { + this.doEdit(args); + } + if (Object.is(eventName, 'selectionchange')) { + this.selectionChange(args); + } + if (Object.is(eventName, 'load')) { + this.MDCtrlLoad(args); + } + if (Object.is(eventName, 'beforeload')) { + this.MDCtrlBeforeLoad(args) + } + } + + /** + * 搜索表单加载完成 + * + * @param {*} [args={}] + * @memberof MDViewEngine + */ + public onSearchFormLoad(args: any = {}): void { + if (this.getMDCtrl() && this.isLoadDefault) { + const tag = this.getMDCtrl().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } + this.isLoadDefault = true; + } + + /** + * 搜索表单搜索 + * + * @param {*} [args={}] + * @memberof MDViewEngine + */ + public onSearchFormSearch(args: any = {}): void { + if (this.getMDCtrl() && this.isLoadDefault) { + const tag = this.getMDCtrl().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } + this.isLoadDefault = true; + } + + /** + * 处理实体界面行为 + * + * @param {string} tag + * @param {string} [actionmode] + * @returns {void} + * @memberof MDViewEngine + */ + public doSysUIAction(tag: string, actionmode?: string): void { + if (Object.is(tag, 'Edit')) { + this.doEdit(); + return; + } + if (Object.is(tag, 'Remove')) { + this.doRemove(); + return; + } + if (Object.is(tag, 'SaveRow')) { + this.doSaveEditRow(); + return; + } + if (Object.is(tag, 'New')) { + this.doNew(); + return; + } + if (Object.is(tag, 'OpenRowEdit')) { + this.doOpenRowEdit(); + return; + } + if (Object.is(tag, 'CloseRowEdit')) { + this.doCloseRowEdit(); + return; + } + super.doSysUIAction(tag, actionmode); + } + + /** + * 多数据项界面_开启行编辑操作 + * + * @memberof MDViewEngine + */ + public doOpenRowEdit(): void { + if (this.getMDCtrl()) { + const tag = this.getMDCtrl().name; + this.setViewState2({ tag: tag, action: 'openEdit', viewdata: {} }); + } + } + + /** + * 多数据项界面_关闭行编辑操作 + * + * @memberof MDViewEngine + */ + public doCloseRowEdit(): void { + if (this.getMDCtrl()) { + const tag = this.getMDCtrl().name; + this.setViewState2({ tag: tag, action: 'closeEdit', viewdata: {} }); + } + } + + /** + * 多数据项界面_提交编辑数据操作 + * + * @memberof MDViewEngine + */ + public doSaveEditRow(): void { + if (this.getMDCtrl()) { + const tag = this.getMDCtrl().name; + this.setViewState2({ tag: tag, action: 'submitEidt', viewdata: {} }); + } + } + + /** + * 多数据项界面_编辑操作 + * + * @param {*} [params={}] + * @returns {void} + * @memberof MDViewEngine + */ + public doEdit(params: any = {}): void { + // 获取要编辑的数据集合 + if (params && params.srfkey) { + if (this.isFunc(this.getMDCtrl().findItem)) { + params = this.getMDCtrl().findItem('srfkey', params.srfkey); + } + const arg = { data: params }; + this.onEditData(arg); + return; + } + if (this.isFunc(this.getMDCtrl().getSelection)) { + const selectedData = this.getMDCtrl().getSelection(); + if (selectedData == null || selectedData.length === 0) { + return; + } + this.onEditData({ data: selectedData[0] }); + } + } + + /** + * 编辑数据 + * + * @param {*} arg + * @memberof MDViewEngine + */ + public onEditData(arg: any): void { + const loadParam: any = {}; + const { data }: { data: any } = arg; + if (this.keyPSDEField && data[this.keyPSDEField] && !Object.is(data[this.keyPSDEField], '')) { + Object.assign(loadParam, { [this.keyPSDEField]: data[this.keyPSDEField] }); + } + + if (this.openData && this.isFunc(this.openData)) { + this.openData([loadParam],[data], null, null, this.getMDCtrl()); + } + } + + /** + * 多数据项界面_新建操作 + * + * @param {*} [params={}] + * @memberof MDViewEngine + */ + public doNew(params: any = {}): void { + this.onNewData(); + } + + /** + * 新建数据 + * + * @returns {void} + * @memberof MDViewEngine + */ + public onNewData(): void { + + let loadParam: any = {}; + Object.assign(loadParam, this.view.context); + this.doNewDataNormal(loadParam); + } + + /** + * 常规新建数据 + * + * @param {*} arg + * @returns {*} + * @memberof MDViewEngine + */ + public doNewDataNormal(arg: any): any { + return this.openDataView(arg); + } + + /** + * 多数据项界面_删除操作 + * + * @memberof MDViewEngine + */ + public doRemove(): void { + } + + + public openDataView(view: any = {}): boolean { + + if (this.newData && this.isFunc(this.newData)) { + this.newData([],[],null, null, this.getMDCtrl()); + } + + return true; + } + + /** + * 选中变化 + * + * @param {any[]} args + * @memberof MDViewEngine + */ + public selectionChange(args: any[]): void { + if (this.view) { + this.view.$emit('viewdataschange', args); + } + if (this.getPropertyPanel()) { + const tag = this.getPropertyPanel().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: args[0] }); + } + const state = args.length > 0 && !Object.is(args[0].srfkey, '') ? false : true; + this.calcToolbarItemState(state); + if(args && args.length > 0){ + this.calcToolbarItemAuthState(this.transformData(args[0])); + } + } + + /** + * 多数据部件加载完成 + * + * @param {any[]} args + * @memberof MDViewEngine + */ + public MDCtrlLoad(args: any[]) { + let cacheArray:Array = []; + if(args.length >0){ + args.forEach((item:any) =>{ + cacheArray.push({srfkey:item.srfkey,srfmajortext:item.srfmajortext}); + }) + } + this.view.viewCacheData = cacheArray; + if (this.view) { + this.view.$emit('viewload', args); + } + this.calcToolbarItemState(true); + } + + /** + * 多数据部件加载之前 + * + * @param {*} [arg={}] + * @memberof MDViewEngine + */ + public MDCtrlBeforeLoad(arg: any = {}): void { + if (this.view.viewparams && Object.keys(this.view.viewparams).length > 0) { + Object.assign(arg, this.view.viewparams); + } + if (this.getSearchForm() && this.view.isExpandSearchForm) { + Object.assign(arg, this.getSearchForm().getData()); + } + if (this.view && this.view.$refs.searchbar && this.view.isExpandSearchForm) { + Object.assign(arg, this.view.$refs.searchbar.getData()); + } + if (this.view && !this.view.isExpandSearchForm) { + Object.assign(arg, { query: this.view.query }); + } + // 快速分组和快速搜索栏 + let otherQueryParam:any = {}; + if(this.view && this.view.quickGroupData){ + Object.assign(otherQueryParam,this.view.quickGroupData); + } + if(this.view && this.view.quickFormData){ + Object.assign(otherQueryParam,this.view.quickFormData); + } + Object.assign(arg,{viewparams:otherQueryParam}); + } + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof MDViewEngine + */ + public getMDCtrl(): any { + + } + + public getSearchForm(): any { + return this.searchForm; + } + + /** + * 获取属性面板 + * + * @returns + * @memberof MDViewEngine + */ + public getPropertyPanel() { + return this.propertypanel; + } + + /** + * 转化数据 + * + * @memberof EditViewEngine + */ + public transformData(arg:any){ + if(!this.getMDCtrl() || !(this.getMDCtrl().transformData instanceof Function)){ + return null; + } + return this.getMDCtrl().transformData(arg); + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/mpickup-view-engine.ts b/app_AssetManagement/src/engine/view/mpickup-view-engine.ts new file mode 100644 index 0000000..dd60423 --- /dev/null +++ b/app_AssetManagement/src/engine/view/mpickup-view-engine.ts @@ -0,0 +1,123 @@ +import ViewEngine from './view-engine'; + +/** + * 实体选择视图 + * + * @export + * @class MPickupViewEngine + * @extends {ViewEngine} + */ +export default class MPickupViewEngine extends ViewEngine { + + /** + * 选择视图面板 + * + * @type {*} + * @memberof MPickupViewEngine + */ + public pickupViewPanel: any = null; + + /** + * Creates an instance of MPickupViewEngine. + * + * @memberof MPickupViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof MPickupViewEngine + */ + public init(options: any): void { + this.pickupViewPanel = options.pickupviewpanel; + if (options.view.viewdata && options.view.viewdata.selectedData && Array.isArray(options.view.viewdata.selectedData)) { + options.view.viewSelections = [...options.view.viewdata.selectedData]; + delete options.view.viewdata.selectedData; + } + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof MPickupViewEngine + */ + public load(): void { + super.load(); + if (this.getPickupViewPanel()) { + const tag = this.getPickupViewPanel().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } + } + + /** + * 引擎事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof MPickupViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + + if (Object.is(eventName, 'selectionchange')) { + this.onSelectionChange(ctrlName, args); + } + if (Object.is(eventName, 'load')) { + this.onLoad(ctrlName, args); + } + if (Object.is(eventName, 'activated')) { + this.onSelectionChange(ctrlName, args); + this.view.onCLickRight(); + } + } + + /** + * 值选中变化 + * + * @param {string} ctrlName 选择视图面板名称 + * @param {any[]} args 选中数据 + * @memberof MPickupViewEngine + */ + public onSelectionChange(ctrlName: string, args: any[]): void { + this.view.containerModel[`view_${ctrlName}`].selections = [...JSON.parse(JSON.stringify(args))]; + + Object.values(this.view.containerModel).forEach((model: any) => { + if (!Object.is(model.type, 'PICKUPVIEWPANEL')) { + return; + } + }); + const _disbaled: boolean = this.view.containerModel[`view_${ctrlName}`].selections.length > 0 ? true : false; + this.view.containerModel.view_rightbtn = _disbaled; + if(!this.view.isShowButton){ + this.view.$emit('viewdataschange', [...args]); + } + } + + /** + * 视图加载完成 + * + * @param {string} ctrlName 选择视图面板名称 + * @param {any[]} args 选中数据 + * @memberof MPickupViewEngine + */ + public onLoad(ctrlName: string, args: any[]): void { + this.view.containerModel[`view_${ctrlName}`].datas = [...JSON.parse(JSON.stringify(args))]; + } + + /** + * 获取选择视图面板 + * + * @returns {*} + * @memberof MPickupViewEngine + */ + public getPickupViewPanel(): any { + return this.pickupViewPanel; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/option-view-engine.ts b/app_AssetManagement/src/engine/view/option-view-engine.ts new file mode 100644 index 0000000..c65f7d4 --- /dev/null +++ b/app_AssetManagement/src/engine/view/option-view-engine.ts @@ -0,0 +1,21 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体选项操作视图界面引擎 + * + * @export + * @class OptionViewEngine + * @extends {EditViewEngine} + */ +export default class OptionViewEngine extends EditViewEngine { + + /** + * Creates an instance of OptionViewEngine. + * 创建 OptionViewEngine 实例对象 + * + * @memberof OptionViewEngine + */ + constructor() { + super(); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/pickup-data-view-engine.ts b/app_AssetManagement/src/engine/view/pickup-data-view-engine.ts new file mode 100644 index 0000000..8f8e9ae --- /dev/null +++ b/app_AssetManagement/src/engine/view/pickup-data-view-engine.ts @@ -0,0 +1,65 @@ +import MDViewEngine from './md-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class GridViewEngine + * @extends {MDViewEngine} + */ +export default class PickupDataViewEngine extends MDViewEngine { + + /** + * 数据视图部件 + * + * @type {*} + * @memberof FormPickupDataViewEngine + */ + protected dataview: any; + + /** + * Creates an instance of GridViewEngine. + * @memberof GridViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof GridViewEngine + */ + public init(options: any = {}): void { + this.dataview = options.dataview; + super.init(options); + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof GridViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'dataview')) { + this.MDCtrlEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + + /** + * 获取多数据部件 + * + * @returns {*} + * @memberof GridViewEngine + */ + public getMDCtrl(): any { + return this.dataview; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/pickup-grid-view-engine.ts b/app_AssetManagement/src/engine/view/pickup-grid-view-engine.ts new file mode 100644 index 0000000..3fefe42 --- /dev/null +++ b/app_AssetManagement/src/engine/view/pickup-grid-view-engine.ts @@ -0,0 +1,36 @@ +import GridViewEngine from './grid-view-engine'; + +/** + * 实体选择表格视图(部件视图)界面引擎 + * + * @export + * @class PickupGridViewEngine + * @extends {GridViewEngine} + */ +export default class PickupGridViewEngine extends GridViewEngine { + + /** + * Creates an instance of PickupGridViewEngine. + * + * + * @memberof PickupGridViewEngine + */ + constructor() { + super(); + } + + /** + * 选中激活数据 + * + * @param {string} eventName + * @param {*} args + * @memberof PickupGridViewEngine + */ + public MDCtrlEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'rowdblclick') && this.gridRowAllowActive(2)) { + this.view.$emit('viewdatasactivated', args); + return ; + } + super.MDCtrlEvent(eventName, args); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/pickup-tree-view-engine.ts b/app_AssetManagement/src/engine/view/pickup-tree-view-engine.ts new file mode 100644 index 0000000..a383271 --- /dev/null +++ b/app_AssetManagement/src/engine/view/pickup-tree-view-engine.ts @@ -0,0 +1,54 @@ +import TreeViewEngine from './tree-view-engine'; + +/** + * 实体选择树视图(部件视图)界面引擎 + * + * @export + * @class PickupTreeViewEngine + * @extends {TreeViewEngine} + */ +export default class PickupTreeViewEngine extends TreeViewEngine { + + /** + * 部件加载完 + * + * @param {*} args + * @memberof PickupTreeViewEngine + */ + public onLoad(args: any): void { + super.onLoad(args); + if (this.view) { + this.view.$emit('viewload', args); + } + } + + /** + * 选中处理 + * + * @param {any[]} args + * @memberof PickupTreeViewEngine + */ + public onSelectionChange(args: any[]): void { + super.onSelectionChange(args); + if (this.view) { + this.view.viewSelections = [...args]; + this.view.$emit('viewdataschange', args); + } + } + + /** + * 双击选中激活数据 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof PickupTreeViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'tree') && Object.is(eventName, 'nodedblclick')) { + this.view.$emit('viewdatasactivated', args); + return ; + } + super.onCtrlEvent(ctrlName, eventName, args); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/pickup-view-engine.ts b/app_AssetManagement/src/engine/view/pickup-view-engine.ts new file mode 100644 index 0000000..95d6d6a --- /dev/null +++ b/app_AssetManagement/src/engine/view/pickup-view-engine.ts @@ -0,0 +1,99 @@ +import ViewEngine from './view-engine'; + +/** + * 实体选择视图 + * + * @export + * @class PickupViewEngine + * @extends {ViewEngine} + */ +export default class PickupViewEngine extends ViewEngine { + + /** + * 选择视图面板 + * + * @type {*} + * @memberof PickupViewEngine + */ + public pickupViewPanel: any = null; + + /** + * Creates an instance of PickupViewEngine. + * + * @memberof PickupViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof PickupViewEngine + */ + public init(options: any): void { + this.pickupViewPanel = options.pickupviewpanel; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof PickupViewEngine + */ + public load(): void { + this.view.viewSelections = []; + super.load(); + if (this.getPickupViewPanel()) { + const tag = this.getPickupViewPanel().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } + } + + /** + * + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof PickupViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + + if (Object.is(eventName, 'selectionchange')) { + this.onSelectionChange(args); + } + if (Object.is(eventName, 'activated')) { + this.view.$emit('viewdatasactivated', args); + } + } + + /** + * 值选中变化 + * + * @param {any[]} args + * @memberof PickupViewEngine + */ + public onSelectionChange(args: any[]): void { + this.view.viewSelections = []; + this.view.viewSelections = [...args] + const _disabled: boolean = this.view.viewSelections.length > 0 ? false : true; + this.view.containerModel.view_okbtn.disabled = _disabled; + if(!this.view.isShowButton){ + this.view.$emit('viewdataschange', [...args]); + } + } + + /** + * 获取选择视图面板 + * + * @returns {*} + * @memberof PickupViewEngine + */ + public getPickupViewPanel(): any { + return this.pickupViewPanel; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/portal-view-engine.ts b/app_AssetManagement/src/engine/view/portal-view-engine.ts new file mode 100644 index 0000000..a511c3a --- /dev/null +++ b/app_AssetManagement/src/engine/view/portal-view-engine.ts @@ -0,0 +1,95 @@ +import ViewEngine from './view-engine'; + +/** + * 实体数据看板视图界面引擎 + * + * @export + * @class PortalViewEngine + * @extends {ViewEngine} + */ +export default class PortalViewEngine extends ViewEngine { + + /** + * 数据面板部件 + * + * @type {*} + * @memberof PortalViewEngine + */ + public dashboard: any = null; + + /** + * Creates an instance of PortalViewEngine. + * + * @memberof PortalViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof PortalViewEngine + */ + public init(options: any): void { + this.dashboard = options.dashboard; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof PortalViewEngine + */ + public load(): void { + super.load(); + if (this.getDashboard() && this.isLoadDefault) { + const tag = this.getDashboard().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof PortalViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'dashboard')) { + this.DashboardEvent(eventName, args); + + } + } + + /** + * 实体数据看板事件 + * + * @param {string} eventName + * @param {*} args + * @memberof PortalViewEngine + */ + public DashboardEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.view.$emit('viewload', args); + } + } + + /** + * 获取部件对象 + * + * @returns {*} + * @memberof PortalViewEngine + */ + public getDashboard(): any { + return this.dashboard; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/portal-view9-engine.ts b/app_AssetManagement/src/engine/view/portal-view9-engine.ts new file mode 100644 index 0000000..1886928 --- /dev/null +++ b/app_AssetManagement/src/engine/view/portal-view9-engine.ts @@ -0,0 +1,28 @@ +import PortalViewEngine from './portal-view-engine'; + +/** + * 实体数据看板视图(部件视图)界面引擎 + * + * @export + * @class PortalViewEngine + * @extends {PortalViewEngine} + */ +export default class PortalView9Engine extends PortalViewEngine { + + /** + * 引擎加载 + * + * @memberof PortalView9Engine + */ + public load(opts: any = {},isnotify:boolean=false): void { + if(!this.view.isformDruipart){ + super.load(); + }else{ + if(isnotify){ + super.load(); + } + } + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/search-view-engine.ts b/app_AssetManagement/src/engine/view/search-view-engine.ts new file mode 100644 index 0000000..18dc4ec --- /dev/null +++ b/app_AssetManagement/src/engine/view/search-view-engine.ts @@ -0,0 +1,112 @@ +import ViewEngine from './view-engine'; + +/** + * 搜索视图引擎 + * + * @export + * @class SearchViewEngine + * @extends {ViewEngine} + */ +export class SearchViewEngine extends ViewEngine { + + /** + * 表单部件 + * + * @protected + * @type {*} + * @memberof SearchViewEngine + */ + protected searchForm: any; + + /** + * 初始化 + * + * @param {*} options + * @memberof SearchViewEngine + */ + public init(options: any): void { + this.searchForm = options.searchform; + super.init(options); + + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof SearchViewEngine + */ + public load(opts: any = {}): void { + super.load(opts); + if (this.getSearchForm()) { + const tag = this.getSearchForm().name; + this.setViewState2({ tag: tag, action: 'loaddraft', viewdata: this.view.viewparams }); + } + } + + /** + * 事件处理 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof SearchViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'searchform')) { + this.searchFormEvent(eventName, args); + } + } + + /** + * 搜索表单事件 + * + * @param {string} eventName + * @param {*} [args={}] + * @memberof SearchViewEngine + */ + public searchFormEvent(eventName: string, args: any = {}): void { + if (Object.is(eventName, 'load')) { + this.onSearchFormLoad(args); + } + } + + /** + * 搜索表单加载完成 + * + * @param {*} [args={}] + * @memberof SearchViewEngine + */ + public onSearchFormLoad(args: any = {}): void { + } + + /** + * 数据部件加载之前 + * + * @param {*} [arg={}] + * @memberof SearchViewEngine + */ + public dataCtrlBeforeLoad(arg: any = {}): void { + if (this.view.viewparams && Object.keys(this.view.viewparams).length > 0) { + Object.assign(arg, this.view.viewparams); + } + if (this.getSearchForm()) { + Object.assign(arg, this.getSearchForm().getData()); + } + if (this.view && !this.view.isExpandSearchForm) { + Object.assign(arg, { query: this.view.query }); + } + } + + + /** + * 获取搜索表单 + * + * @returns {*} + * @memberof SearchViewEngine + */ + public getSearchForm(): any { + return this.searchForm; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/tab-exp-view-engine.ts b/app_AssetManagement/src/engine/view/tab-exp-view-engine.ts new file mode 100644 index 0000000..e556bb8 --- /dev/null +++ b/app_AssetManagement/src/engine/view/tab-exp-view-engine.ts @@ -0,0 +1,47 @@ +import ViewEngine from './view-engine'; + +/** + * 实体选择视图 + * + * @export + * @class TabExpViewEngine + * @extends {ViewEngine} + */ +export default class TabExpViewEngine extends ViewEngine { + + + /** + * Creates an instance of TabExpViewEngine. + * + * @memberof TabExpViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof TabExpViewEngine + */ + public init(options: any): void { + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof TabExpViewEngine + */ + public load(): void { + super.load(); + Object.values(this.view.containerModel).forEach((_item: any) => { + if (!Object.is(_item.type, 'TABEXPPANEL')) { + return; + } + this.setViewState2({ tag: _item.name, action: 'load', viewdata: this.view.context }); + }); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/tree-exp-view-engine.ts b/app_AssetManagement/src/engine/view/tree-exp-view-engine.ts new file mode 100644 index 0000000..cd1386b --- /dev/null +++ b/app_AssetManagement/src/engine/view/tree-exp-view-engine.ts @@ -0,0 +1,103 @@ +import ViewEngine from './view-engine'; + +/** + * 实体树导航视图界面引擎 + * + * @export + * @class TreeExpView + * @extends {ViewEngine} + */ +export default class TreeExpView extends ViewEngine { + + /** + * 选择视图面板 + * + * @type {*} + * @memberof TreeExpView + */ + public treeExpBar: any = null; + + /** + * Creates an instance of TreeExpView. + * + * @memberof TreeExpView + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof TreeExpView + */ + public init(options: any): void { + this.treeExpBar = options.treeexpbar; + super.init(options); + } + + + /** + * 引擎加载 + * + * @memberof TreeExpView + */ + public load(): void { + super.load(); + + if (this.getTreeExpBar() && this.isLoadDefault) { + const tag = this.getTreeExpBar().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.context }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof TreeExpView + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + if (Object.is(ctrlName, 'treeexpbar')) { + this.treeExpBarEvent(eventName, args); + + } + } + + /** + * 树导航事件 + * + * @param {string} eventName + * @param {*} args + * @memberof TreeExpView + */ + public treeExpBarEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'load')) { + this.view.$emit('viewload', args); + } + if (Object.is(eventName, 'selectionchange')) { + this.view.$emit('viewdataschange', args); + } + if (Object.is(eventName, 'activated')) { + this.view.$emit('viewdatasactivated', args); + } + } + + /** + * 获取部件对象那 + * + * @returns {*} + * @memberof TreeExpView + */ + public getTreeExpBar(): any { + return this.treeExpBar; + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/tree-view-engine.ts b/app_AssetManagement/src/engine/view/tree-view-engine.ts new file mode 100644 index 0000000..2e4bb29 --- /dev/null +++ b/app_AssetManagement/src/engine/view/tree-view-engine.ts @@ -0,0 +1,102 @@ +import ViewEngine from './view-engine'; + +/** + * 实体树视图界面引擎 + * + * @export + * @class TreeViewEngine + * @extends {ViewEngine} + */ +export default class TreeViewEngine extends ViewEngine { + + /** + * 树部件对象 + * + * @type {*} + * @memberof TreeViewEngine + */ + public tree: any; + + /** + * Creates an instance of TreeViewEngine. + * + * @memberof TreeViewEngine + */ + constructor() { + super(); + } + + /** + * 初始化引擎 + * + * @param {*} options + * @memberof PickupViewEngine + */ + public init(options: any): void { + this.tree = options.tree; + super.init(options); + } + + /** + * 引擎加载 + * + * @memberof TreeViewEngine + */ + public load(): void { + super.load(); + if (this.getTreeView() && this.isLoadDefault) { + const tag = this.getTreeView().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.viewparams }); + } else { + this.isLoadDefault = true; + } + } + + /** + * 部件事件 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof TreeViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + super.onCtrlEvent(ctrlName, eventName, args); + + if (Object.is(eventName, 'load')) { + this.onLoad(args); + } + if (Object.is(eventName, 'selectionchange')) { + this.onSelectionChange(args); + } + } + + /** + * 部件加载完 + * + * @param {*} args + * @memberof TreeViewEngine + */ + public onLoad(args: any): void { } + + /** + * 选中处理 + * + * @param {any[]} args + * @memberof TreeViewEngine + */ + public onSelectionChange(args: any[]): void { } + + + /** + * + *获取树视图部件 + * @returns {*} + * @memberof TreeViewEngine + */ + public getTreeView(): any { + return this.tree; + } + + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/tree-view9-engine.ts b/app_AssetManagement/src/engine/view/tree-view9-engine.ts new file mode 100644 index 0000000..ab98097 --- /dev/null +++ b/app_AssetManagement/src/engine/view/tree-view9-engine.ts @@ -0,0 +1,27 @@ +import TreeViewEngine from './tree-view-engine'; + +/** + * + * + * @export + * @class TreeView9Engine + * @extends {TreeViewEngine} + */ +export default class TreeView9Engine extends TreeViewEngine { + + /** + * 引擎加载 + * + * @memberof TreeView9Engine + */ + public load(opts: any = {},isnotify:boolean=false): void { + if(!this.view.isformDruipart){ + super.load(); + }else{ + if(isnotify){ + super.load(); + } + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/view-engine.ts b/app_AssetManagement/src/engine/view/view-engine.ts new file mode 100644 index 0000000..f963162 --- /dev/null +++ b/app_AssetManagement/src/engine/view/view-engine.ts @@ -0,0 +1,215 @@ +/** + * + * + * @export + * @class ViewEngine + */ +export default class ViewEngine { + /** + * 视图部件对象 + * + * @protected + * @type {*} + * @memberof ViewEngine + */ + protected view: any = null; + /** + * 引擎参数 + * + * @type {*} + * @memberof ViewEngine + */ + protected opt: any = {}; + /** + * + * + * @type {*} + * @memberof ViewEngine + */ + protected methods: any = {}; + + /** + * 是否默认记载 + * + * @type {boolean} + * @memberof ViewEngine + */ + public isLoadDefault: boolean = true; + + /** + * 实体主键属性 + * + * @type {(string | undefined)} + * @memberof ViewEngine + */ + public keyPSDEField: string | undefined; + + /** + * 实体主信息属性 + * + * @type {(string | undefined)} + * @memberof ViewEngine + */ + public majorPSDEField: string | undefined; + + /** + * Creates an instance of ViewEngine. + * @memberof ViewEngine + */ + constructor() { } + + /** + * 引擎初始化 + * + * @param {*} [options={}] + * @memberof ViewEngine + */ + public init(options: any = {}): void { + this.opt = options; + this.methods = options.methods; + this.view = options.view; + this.isLoadDefault = options.isLoadDefault; + this.keyPSDEField = options.keyPSDEField; + this.majorPSDEField = options.majorPSDEField; + this.load(); + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof ViewEngine + */ + public load(opts: any = {}): void { + + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof ViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + + } + + /** + * 处理界面行为 + * + * @param {string} tag + * @param {string} [actionmode] + * @memberof ViewEngine + */ + public doSysUIAction(tag: string, actionmode?: string): void { + if (Object.is(actionmode, 'FRONT')) { + if (this.methods.front) { + this.methods.front(tag); + } + } + } + + /** + * 处理工作流界面行为 + * + * @param {string} tag + * @param {string} [actionmode] + * @memberof ViewEngine + */ + public doSysWFUIAction(tag: string, actionmode?: string): void { + if (Object.is(actionmode, 'WFFRONT')) { + if (this.methods.wfFront) { + this.methods.wfFront(tag); + } + } + } + + /** + * 是否为方法 + * + * @protected + * @param {*} func + * @returns {boolean} + * @memberof ViewEngine + */ + protected isFunc(func: any): boolean { + return func instanceof Function; + } + + /** + * 父数据参数模式 + * + * @param {{ tag: string, action: string, viewdata: any }} { tag, action, viewdata } + * @memberof ViewEngine + */ + public setViewState2({ tag, action, viewdata }: { tag: string, action: string, viewdata: any }): void { + this.view.viewState.next({ tag: tag, action: action, data: viewdata }); + } + + /** + * 计算工具栏状态 + * + * @param {boolean} state + * @param {*} [dataaccaction] + * @memberof ViewEngine + */ + public calcToolbarItemState(state: boolean, dataaccaction?: any) { + const _this: any = this; + if (!_this.view.toolBarModels || Object.keys(_this.view.toolBarModels).length === 0) { + return; + } + + for (const key in _this.view.toolBarModels) { + if (!_this.view.toolBarModels.hasOwnProperty(key)) { + return; + } + const _item = _this.view.toolBarModels[key]; + if (_item.uiaction && (Object.is(_item.uiaction.target, 'SINGLEKEY') || Object.is(_item.uiaction.target, 'MULTIKEY'))) { + _item.disabled = state; + } + _item.visabled = true; + if(_item.noprivdisplaymode && _item.noprivdisplaymode === 6){ + _item.visabled = false; + } + } + } + + /** + * 计算工具栏权限状态 + * + * @param {boolean} state + * @param {*} [dataaccaction] + * @memberof ViewEngine + */ + public calcToolbarItemAuthState(data:any){ + const _this: any = this; + for (const key in _this.view.toolBarModels) { + if (!_this.view.toolBarModels.hasOwnProperty(key)) { + return; + } + const _item = _this.view.toolBarModels[key]; + if(_item && _item['dataaccaction'] && _this.view.appUIService && data && Object.keys(data).length >0){ + let dataActionResult:any = _this.view.appUIService.getAllOPPrivs(data)[_item['dataaccaction']]; + // 无权限:0;有权限:1 + if(dataActionResult === 0){ + // 禁用:1;隐藏:2;隐藏且默认隐藏:6 + if(_item.noprivdisplaymode === 1){ + _this.view.toolBarModels[key].disabled = true; + } + if((_item.noprivdisplaymode === 2) || (_item.noprivdisplaymode === 6)){ + _this.view.toolBarModels[key].visabled = false; + }else{ + _this.view.toolBarModels[key].visabled = true; + } + } + if(dataActionResult === 1){ + _this.view.toolBarModels[key].visabled = true; + _this.view.toolBarModels[key].disabled = false; + } + } + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfaction-view-engine.ts b/app_AssetManagement/src/engine/view/wfaction-view-engine.ts new file mode 100644 index 0000000..ac40d73 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfaction-view-engine.ts @@ -0,0 +1,12 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体工作流操作视图界面引擎 + * + * @export + * @class WFActionViewEngine + * @extends {EditViewEngine} + */ +export default class WFActionViewEngine extends EditViewEngine { + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfdyna-edit-view-engine.ts b/app_AssetManagement/src/engine/view/wfdyna-edit-view-engine.ts new file mode 100644 index 0000000..992e650 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfdyna-edit-view-engine.ts @@ -0,0 +1,30 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class WFDynaEditViewEngine + * @extends {EditViewEngine} + */ +export default class WFDynaEditViewEngine extends EditViewEngine { + + /** + * Creates an instance of WFDynaEditViewEngine. + * @memberof WFDynaEditViewEngine + */ + constructor() { + super(); + } + + /** + * 表单加载完成 + * + * @param {*} args + * @memberof WFDynaEditViewEngine + */ + public onFormLoad(arg: any): void { + super.onFormLoad(arg); + this.view.getWFLinkModel(); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfdyna-exp-grid-view-engine.ts b/app_AssetManagement/src/engine/view/wfdyna-exp-grid-view-engine.ts new file mode 100644 index 0000000..73ed550 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfdyna-exp-grid-view-engine.ts @@ -0,0 +1,37 @@ +import GridViewEngine from './grid-view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class WFDynaExpGridViewEngine + * @extends {GridViewEngine} + */ +export default class WFDynaExpGridViewEngine extends GridViewEngine { + + /** + * Creates an instance of WFDynaExpGridViewEngine. + * @memberof WFDynaExpGridViewEngine + */ + constructor() { + super(); + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof WFDynaExpGridViewEngine + */ + public load(opts: any = {},isnotify:boolean=false): void { + this.view.getWFStepModel().then((res:any) =>{ + if(!this.view.isformDruipart){ + super.load(opts); + }else{ + if(isnotify){ + super.load(opts); + } + } + }) + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfedit-view-engine.ts b/app_AssetManagement/src/engine/view/wfedit-view-engine.ts new file mode 100644 index 0000000..2a02638 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfedit-view-engine.ts @@ -0,0 +1,12 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体工作流编辑视图界面引擎 + * + * @export + * @class WFEditViewEngine + * @extends {EditViewEngine} + */ +export default class WFEditViewEngine extends EditViewEngine { + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfedit-view3-engine.ts b/app_AssetManagement/src/engine/view/wfedit-view3-engine.ts new file mode 100644 index 0000000..ed17be8 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfedit-view3-engine.ts @@ -0,0 +1,12 @@ +import EditView3Engine from './edit-view3-engine'; + +/** + * 实体工作流视图(分页关系)界面引擎 + * + * @export + * @class WFEditView3Engine + * @extends {EditView3Engine} + */ +export default class WFEditView3Engine extends EditView3Engine { + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfgrid-view-engine.ts b/app_AssetManagement/src/engine/view/wfgrid-view-engine.ts new file mode 100644 index 0000000..d3ef738 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfgrid-view-engine.ts @@ -0,0 +1,12 @@ +import GridViewEngine from './grid-view-engine'; + +/** + * 实体工作流表格视图界面引擎 + * + * @export + * @class WFGridViewEngine + * @extends {GridViewEngine} + */ +export default class WFGridViewEngine extends GridViewEngine { + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wfstart-view-engine.ts b/app_AssetManagement/src/engine/view/wfstart-view-engine.ts new file mode 100644 index 0000000..5143da5 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wfstart-view-engine.ts @@ -0,0 +1,12 @@ +import EditViewEngine from './edit-view-engine'; + +/** + * 实体工作流启动视图界面引擎 + * + * @export + * @class WFStartViewEngine + * @extends {EditViewEngine} + */ +export default class WFStartViewEngine extends EditViewEngine { + +} \ No newline at end of file diff --git a/app_AssetManagement/src/engine/view/wizard-view-engine.ts b/app_AssetManagement/src/engine/view/wizard-view-engine.ts new file mode 100644 index 0000000..f3335a9 --- /dev/null +++ b/app_AssetManagement/src/engine/view/wizard-view-engine.ts @@ -0,0 +1,93 @@ +import ViewEngine from './view-engine'; + +/** + * 视图引擎基础 + * + * @export + * @class GridViewEngine + */ +export default class WizardViewEngine extends ViewEngine { + + /** + * 向导面板部件 + * + * @protected + * @type {*} + * @memberof EditViewEngine + */ + protected wizardpanel: any; + + /** + * 初始化编辑视图引擎 + * + * @param {*} [options={}] + * @memberof EditViewEngine + */ + public init(options: any = {}): void { + this.wizardpanel = options.wizardpanel; + super.init(options); + } + + /** + * 引擎加载 + * + * @param {*} [opts={}] + * @memberof EditViewEngine + */ + public load(opts: any = {}): void { + super.load(opts); + if (this.getWizardPanel()) { + const tag = this.getWizardPanel().name; + this.setViewState2({ tag: tag, action: 'load', viewdata: this.view.context }); + } + } + + /** + * 部件事件机制 + * + * @param {string} ctrlName + * @param {string} eventName + * @param {*} args + * @memberof ViewEngine + */ + public onCtrlEvent(ctrlName: string, eventName: string, args: any): void { + if (Object.is(ctrlName, 'wizardpanel')) { + this.wizardPanelEvent(eventName, args); + } + super.onCtrlEvent(ctrlName, eventName, args); + } + + /** + * 事件处理 + * + * @param {string} eventName + * @param {any[]} args + * @memberof MDViewEngine + */ + public wizardPanelEvent(eventName: string, args: any): void { + if (Object.is(eventName, 'finish')) { + this.onfinish(args); + } + } + + /** + * 完成 + * + * @param {*} args + * @memberof WizardViewEngine + */ + public onfinish(args: any): void { + this.view.$emit('viewdataschange', [args]); + this.view.$emit('close', null); + } + + /** + * 获取向导面板 + * + * @returns {*} + * @memberof WizardViewEngine + */ + public getWizardPanel(): any { + return this.wizardpanel; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/environments/environment.ts b/app_AssetManagement/src/environments/environment.ts new file mode 100644 index 0000000..172ee4b --- /dev/null +++ b/app_AssetManagement/src/environments/environment.ts @@ -0,0 +1,46 @@ +export const Environment = { + // 原型示例数模式 + SampleMode: false, + // 应用名称 + AppName: 'AssetManagement', + // 应用 title + AppTitle: '资产管理', + // 应用基础路径 + BaseUrl: '', + // 系统名称 + SysName: 'iBizAssetManagement', + // 远程登录地址,本地开发调试使用 + RemoteLogin: 'ibizutil/login', + // 文件导出 + ExportFile: 'ibizutil/download', + // 文件上传 + UploadFile: 'ibizutil/upload', + // 是否为pc端应用 + isAppMode: true, + //统一地址 + uniteAddress: "http://172.16.100.202:8114", + // 是否开启权限认证 + enablePermissionValid:false, + // 是否为开发模式 + devMode: true, + // 项目模板地址 + ProjectUrl: "http://demo.ibizlab.cn/groups/ibizr7pfstdtempl/ibizvuer7plus", + // 配置平台地址 + StudioUrl: "http://neko.org.cn:3333/", + // 方案标识 + SlnId: "506FF789-2742-4C35-A91D-E3990C379D41", + // 系统标识 + SysId: "3A921F6B-613D-4975-ACD6-79565D82E1DE", + // 前端应用标识 + AppId: "67ca55365f7abcc05c30f4fba9f8ee37", + // 项目发布文件地址 + PublishProjectUrl: 'https://oauth2:0fc5b56b52f5ad87efd3850b6536e034@gitee.com/iBizBusinessSuite/iBizAssetManagement.git', + // ibiz开放平台地址 + ibizlabtUrl: 'https://www.ibizlab.cn', + // ibiz论坛地址 + ibizbbstUrl: 'https://bbs.ibizlab.cn', +}; +// 挂载外部配置文件 +if ((window as any).Environment) { + Object.assign(Environment, (window as any).Environment); +} \ No newline at end of file diff --git a/app_AssetManagement/src/index.d.ts b/app_AssetManagement/src/index.d.ts new file mode 100644 index 0000000..90cd6dd --- /dev/null +++ b/app_AssetManagement/src/index.d.ts @@ -0,0 +1,15 @@ +import { UIServiceRegister } from '@/uiservice/ui-service-register'; +import { AuthServiceRegister } from '@/authservice/auth-service-register'; +import { UtilServiceRegister } from '@/utilservice/util-service-register'; +import { EntityServiceRegister } from '@/service/entity-service-register'; +import { CounterServiceRegister } from '@/counter/counter-service-register'; + +declare global { + interface Window { + uiServiceRegister: UIServiceRegister, + authServiceRegister: AuthServiceRegister, + utilServiceRegister: UtilServiceRegister, + entityServiceRegister: EntityServiceRegister, + counterServiceRegister: CounterServiceRegister + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/control.ts b/app_AssetManagement/src/interface/control.ts new file mode 100644 index 0000000..6466f92 --- /dev/null +++ b/app_AssetManagement/src/interface/control.ts @@ -0,0 +1,23 @@ +/** + * 部件接口 + * + * @interface Control + */ +export interface ControlInterface { + + /** + * 获取多项数据 + * + * @returns {any[]} + * @memberof Control + */ + getDatas(): any[]; + + /** + * 获取单项数据 + * + * @returns {*} + * @memberof Control + */ + getData(): any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamapply-state-model-line.ts b/app_AssetManagement/src/interface/entity/eamapply-state-model-line.ts new file mode 100644 index 0000000..6ab8839 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamapply-state-model-line.ts @@ -0,0 +1,72 @@ +/** + * 维护申请状态模型明细 + * + * @export + * @interface EAMApplyStateModelLine + */ +export interface EAMApplyStateModelLine { + + /** + * 维护申请状态模型明细名称 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + eamapplystatemodellinename?: any; + + /** + * 维护申请状态模型明细标识 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + eamapplystatemodellineid?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + updatedate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + createdate?: any; + + /** + * 维护申请状态标识 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + eamapplystateid?: any; + + /** + * 维护申请状态模型标识 + * + * @returns {*} + * @memberof EAMApplyStateModelLine + */ + eamapplystatemodelid?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamapply-state.ts b/app_AssetManagement/src/interface/entity/eamapply-state.ts new file mode 100644 index 0000000..befa38e --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamapply-state.ts @@ -0,0 +1,56 @@ +/** + * 维护申请状态 + * + * @export + * @interface EAMApplyState + */ +export interface EAMApplyState { + + /** + * 维护申请状态标识 + * + * @returns {*} + * @memberof EAMApplyState + */ + eamapplystateid?: any; + + /** + * 维护申请状态名称 + * + * @returns {*} + * @memberof EAMApplyState + */ + eamapplystatename?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMApplyState + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMApplyState + */ + createman?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMApplyState + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMApplyState + */ + updatedate?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamapply-type.ts b/app_AssetManagement/src/interface/entity/eamapply-type.ts new file mode 100644 index 0000000..9647ad7 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamapply-type.ts @@ -0,0 +1,72 @@ +/** + * 维护申请类型 + * + * @export + * @interface EAMApplyType + */ +export interface EAMApplyType { + + /** + * 维护申请类型标识 + * + * @returns {*} + * @memberof EAMApplyType + */ + eamapplytypeid?: any; + + /** + * 维护申请类型名称 + * + * @returns {*} + * @memberof EAMApplyType + */ + eamapplytypename?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMApplyType + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMApplyType + */ + updateman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMApplyType + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMApplyType + */ + createman?: any; + + /** + * 维护申请状态模型标识 + * + * @returns {*} + * @memberof EAMApplyType + */ + eamapplystatemodelid?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMApplyType + */ + description?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamapply.ts b/app_AssetManagement/src/interface/entity/eamapply.ts new file mode 100644 index 0000000..e00bca3 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamapply.ts @@ -0,0 +1,152 @@ +/** + * 维护申请 + * + * @export + * @interface EAMApply + */ +export interface EAMApply { + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMApply + */ + updateman?: any; + + /** + * 维护申请标识 + * + * @returns {*} + * @memberof EAMApply + */ + eamapplyid?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMApply + */ + createman?: any; + + /** + * 维护申请名称 + * + * @returns {*} + * @memberof EAMApply + */ + eamapplyname?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMApply + */ + createdate?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMApply + */ + updatedate?: any; + + /** + * 维护申请类型标识 + * + * @returns {*} + * @memberof EAMApply + */ + eamapplytypeid?: any; + + /** + * 功能位置标识 + * + * @returns {*} + * @memberof EAMApply + */ + eamlocationid?: any; + + /** + * 资产标识 + * + * @returns {*} + * @memberof EAMApply + */ + assetid?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMApply + */ + description?: any; + + /** + * 希望开始时间 + * + * @returns {*} + * @memberof EAMApply + */ + begintime?: any; + + /** + * 希望结束时间 + * + * @returns {*} + * @memberof EAMApply + */ + endtime?: any; + + /** + * 资产 + * + * @returns {*} + * @memberof EAMApply + */ + assetname?: any; + + /** + * 功能位置 + * + * @returns {*} + * @memberof EAMApply + */ + eamlocationname?: any; + + /** + * 维护申请类型 + * + * @returns {*} + * @memberof EAMApply + */ + eamapplytypename?: any; + + /** + * 维护申请编号 + * + * @returns {*} + * @memberof EAMApply + */ + applynumber?: any; + + /** + * 服务等级标识 + * + * @returns {*} + * @memberof EAMApply + */ + eamservicelevelid?: any; + + /** + * 服务等级 + * + * @returns {*} + * @memberof EAMApply + */ + eamservicelevelname?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamasset-parts-group.ts b/app_AssetManagement/src/interface/entity/eamasset-parts-group.ts new file mode 100644 index 0000000..8e3bb47 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamasset-parts-group.ts @@ -0,0 +1,88 @@ +/** + * 资产备件包 + * + * @export + * @interface EAMAssetPartsGroup + */ +export interface EAMAssetPartsGroup { + + /** + * 资产类型标识 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + eamassettypeid?: any; + + /** + * 备件包标识 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + eamsparepartsgroupid?: any; + + /** + * 资产备件包标识 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + eamassetpartsgroupid?: any; + + /** + * 资产备件包名称 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + eamassetpartsgroupname?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + updatedate?: any; + + /** + * 备件包 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + eamsparepartsgroupname?: any; + + /** + * 资产类型 + * + * @returns {*} + * @memberof EAMAssetPartsGroup + */ + eamassettypename?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamasset-state-model-line.ts b/app_AssetManagement/src/interface/entity/eamasset-state-model-line.ts new file mode 100644 index 0000000..77606f0 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamasset-state-model-line.ts @@ -0,0 +1,88 @@ +/** + * 资产状态模型明细 + * + * @export + * @interface EAMAssetStateModelLine + */ +export interface EAMAssetStateModelLine { + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + createman?: any; + + /** + * 资产状态模型明细名称 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + eamassetstatemodellinename?: any; + + /** + * 资产状态模型明细标识 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + eamassetstatemodellineid?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + createdate?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + updateman?: any; + + /** + * 资产状态模型标识 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + eamassetstatemodelid?: any; + + /** + * 资产状态标识 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + eamassetstateid?: any; + + /** + * 资产状态 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + eamassetstatename?: any; + + /** + * 资产状态模型 + * + * @returns {*} + * @memberof EAMAssetStateModelLine + */ + eamassetstatemodelname?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamasset-state-model.ts b/app_AssetManagement/src/interface/entity/eamasset-state-model.ts new file mode 100644 index 0000000..1d8f816 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamasset-state-model.ts @@ -0,0 +1,56 @@ +/** + * 资产状态模型 + * + * @export + * @interface EAMAssetStateModel + */ +export interface EAMAssetStateModel { + + /** + * 资产状态模型标识 + * + * @returns {*} + * @memberof EAMAssetStateModel + */ + eamassetstatemodelid?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMAssetStateModel + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMAssetStateModel + */ + createdate?: any; + + /** + * 资产状态模型名称 + * + * @returns {*} + * @memberof EAMAssetStateModel + */ + eamassetstatemodelname?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMAssetStateModel + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMAssetStateModel + */ + updateman?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamasset-state.ts b/app_AssetManagement/src/interface/entity/eamasset-state.ts new file mode 100644 index 0000000..7402605 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamasset-state.ts @@ -0,0 +1,64 @@ +/** + * 资产状态 + * + * @export + * @interface EAMAssetState + */ +export interface EAMAssetState { + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMAssetState + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMAssetState + */ + updateman?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMAssetState + */ + createman?: any; + + /** + * 资产状态标识 + * + * @returns {*} + * @memberof EAMAssetState + */ + eamassetstateid?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMAssetState + */ + updatedate?: any; + + /** + * 资产状态名称 + * + * @returns {*} + * @memberof EAMAssetState + */ + eamassetstatename?: any; + + /** + * 是否有效 + * + * @returns {*} + * @memberof EAMAssetState + */ + available?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamasset-type.ts b/app_AssetManagement/src/interface/entity/eamasset-type.ts new file mode 100644 index 0000000..8eb5e85 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamasset-type.ts @@ -0,0 +1,88 @@ +/** + * 资产类型 + * + * @export + * @interface EAMAssetType + */ +export interface EAMAssetType { + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMAssetType + */ + createman?: any; + + /** + * 资产类型名称 + * + * @returns {*} + * @memberof EAMAssetType + */ + eamassettypename?: any; + + /** + * 资产类型标识 + * + * @returns {*} + * @memberof EAMAssetType + */ + eamassettypeid?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMAssetType + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMAssetType + */ + updateman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMAssetType + */ + createdate?: any; + + /** + * 资产状态模型标识 + * + * @returns {*} + * @memberof EAMAssetType + */ + eamassetstatemodelid?: any; + + /** + * 资产状态模型 + * + * @returns {*} + * @memberof EAMAssetType + */ + eamassetstatemodelname?: any; + + /** + * 资产类型编号 + * + * @returns {*} + * @memberof EAMAssetType + */ + assettypenumber?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMAssetType + */ + description?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamasset.ts b/app_AssetManagement/src/interface/entity/eamasset.ts new file mode 100644 index 0000000..89e72ed --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamasset.ts @@ -0,0 +1,136 @@ +/** + * 资产 + * + * @export + * @interface EAMAsset + */ +export interface EAMAsset { + + /** + * 资产标识 + * + * @returns {*} + * @memberof EAMAsset + */ + assetid?: any; + + /** + * 资产名称 + * + * @returns {*} + * @memberof EAMAsset + */ + assetname?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMAsset + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMAsset + */ + createman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMAsset + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMAsset + */ + updateman?: any; + + /** + * 资产类型标识 + * + * @returns {*} + * @memberof EAMAsset + */ + eamassettypeid?: any; + + /** + * 功能位置标识 + * + * @returns {*} + * @memberof EAMAsset + */ + eamlocationid?: any; + + /** + * 上级资产标识 + * + * @returns {*} + * @memberof EAMAsset + */ + passetid?: any; + + /** + * 资产类型 + * + * @returns {*} + * @memberof EAMAsset + */ + eamassettypename?: any; + + /** + * 功能位置 + * + * @returns {*} + * @memberof EAMAsset + */ + eamlocationname?: any; + + /** + * 资产状态标识 + * + * @returns {*} + * @memberof EAMAsset + */ + eamassetstateid?: any; + + /** + * 资产状态 + * + * @returns {*} + * @memberof EAMAsset + */ + eamassetstatename?: any; + + /** + * 上级资产 + * + * @returns {*} + * @memberof EAMAsset + */ + passetname?: any; + + /** + * 资产编号 + * + * @returns {*} + * @memberof EAMAsset + */ + assetnumber?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMAsset + */ + description?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamdocument-type.ts b/app_AssetManagement/src/interface/entity/eamdocument-type.ts new file mode 100644 index 0000000..b9baa19 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamdocument-type.ts @@ -0,0 +1,72 @@ +/** + * 文档类型 + * + * @export + * @interface EAMDocumentType + */ +export interface EAMDocumentType { + + /** + * 文档类型名称 + * + * @returns {*} + * @memberof EAMDocumentType + */ + eamdocumenttypename?: any; + + /** + * 文档类型标识 + * + * @returns {*} + * @memberof EAMDocumentType + */ + eamdocumenttypeid?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMDocumentType + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMDocumentType + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMDocumentType + */ + updatedate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMDocumentType + */ + createman?: any; + + /** + * 上级文档类型标识 + * + * @returns {*} + * @memberof EAMDocumentType + */ + peamdocumenttypeid?: any; + + /** + * 上级文档类型 + * + * @returns {*} + * @memberof EAMDocumentType + */ + peamdocumenttypename?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamdocument.ts b/app_AssetManagement/src/interface/entity/eamdocument.ts new file mode 100644 index 0000000..bf91428 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamdocument.ts @@ -0,0 +1,112 @@ +/** + * 文档 + * + * @export + * @interface EAMDocument + */ +export interface EAMDocument { + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMDocument + */ + createdate?: any; + + /** + * 文档名称 + * + * @returns {*} + * @memberof EAMDocument + */ + eamdocumentname?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMDocument + */ + createman?: any; + + /** + * 文档标识 + * + * @returns {*} + * @memberof EAMDocument + */ + eamdocumentid?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMDocument + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMDocument + */ + updateman?: any; + + /** + * 资产类型标识 + * + * @returns {*} + * @memberof EAMDocument + */ + eamassettypeid?: any; + + /** + * 资产类型 + * + * @returns {*} + * @memberof EAMDocument + */ + eamassettypename?: any; + + /** + * 文档编号 + * + * @returns {*} + * @memberof EAMDocument + */ + documentnumber?: any; + + /** + * 文档类型标识 + * + * @returns {*} + * @memberof EAMDocument + */ + eamdocumenttypeid?: any; + + /** + * 文档类型 + * + * @returns {*} + * @memberof EAMDocument + */ + eamdocumenttypename?: any; + + /** + * 内容 + * + * @returns {*} + * @memberof EAMDocument + */ + content?: any; + + /** + * 文件 + * + * @returns {*} + * @memberof EAMDocument + */ + docfile?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamlocation-state-model-line.ts b/app_AssetManagement/src/interface/entity/eamlocation-state-model-line.ts new file mode 100644 index 0000000..ba8429e --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamlocation-state-model-line.ts @@ -0,0 +1,88 @@ +/** + * 功能位置状态模型明细 + * + * @export + * @interface EAMLocationStateModelLine + */ +export interface EAMLocationStateModelLine { + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + updateman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + createdate?: any; + + /** + * 功能位置状态模型明细标识 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + eamlocationstatemodellineid?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + createman?: any; + + /** + * 功能位置状态模型明细名称 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + eamlocationstatemodellinename?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + updatedate?: any; + + /** + * 功能位置状态模型标识 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + eamlocationstatemodelid?: any; + + /** + * 功能位置状态标识 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + eamlocationstateid?: any; + + /** + * 功能位置状态 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + eamlocationstatename?: any; + + /** + * 功能位置状态模型 + * + * @returns {*} + * @memberof EAMLocationStateModelLine + */ + eamlocationstatemodelname?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamlocation-state-model.ts b/app_AssetManagement/src/interface/entity/eamlocation-state-model.ts new file mode 100644 index 0000000..27034b6 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamlocation-state-model.ts @@ -0,0 +1,56 @@ +/** + * 功能位置状态模型 + * + * @export + * @interface EAMLocationStateModel + */ +export interface EAMLocationStateModel { + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMLocationStateModel + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMLocationStateModel + */ + createman?: any; + + /** + * 功能位置状态模型标识 + * + * @returns {*} + * @memberof EAMLocationStateModel + */ + eamlocationstatemodelid?: any; + + /** + * 功能位置状态模型名称 + * + * @returns {*} + * @memberof EAMLocationStateModel + */ + eamlocationstatemodelname?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMLocationStateModel + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMLocationStateModel + */ + updatedate?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamlocation-state.ts b/app_AssetManagement/src/interface/entity/eamlocation-state.ts new file mode 100644 index 0000000..e59dea4 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamlocation-state.ts @@ -0,0 +1,72 @@ +/** + * 功能位置状态 + * + * @export + * @interface EAMLocationState + */ +export interface EAMLocationState { + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMLocationState + */ + createdate?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMLocationState + */ + updatedate?: any; + + /** + * 功能位置状态标识 + * + * @returns {*} + * @memberof EAMLocationState + */ + eamlocationstateid?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMLocationState + */ + updateman?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMLocationState + */ + createman?: any; + + /** + * 功能位置状态名称 + * + * @returns {*} + * @memberof EAMLocationState + */ + eamlocationstatename?: any; + + /** + * 是否有效 + * + * @returns {*} + * @memberof EAMLocationState + */ + available?: any; + + /** + * 是否创建资产 + * + * @returns {*} + * @memberof EAMLocationState + */ + setup?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamlocation-type.ts b/app_AssetManagement/src/interface/entity/eamlocation-type.ts new file mode 100644 index 0000000..ea4df38 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamlocation-type.ts @@ -0,0 +1,80 @@ +/** + * 功能位置类型 + * + * @export + * @interface EAMLocationType + */ +export interface EAMLocationType { + + /** + * 功能位置类型名称 + * + * @returns {*} + * @memberof EAMLocationType + */ + eamlocationtypename?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMLocationType + */ + createman?: any; + + /** + * 功能位置类型标识 + * + * @returns {*} + * @memberof EAMLocationType + */ + eamlocationtypeid?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMLocationType + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMLocationType + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMLocationType + */ + updatedate?: any; + + /** + * 功能位置状态模型标识 + * + * @returns {*} + * @memberof EAMLocationType + */ + eamlocationstatemodelid?: any; + + /** + * 功能位置状态模型 + * + * @returns {*} + * @memberof EAMLocationType + */ + eamlocationstatemodelname?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMLocationType + */ + description?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamlocation.ts b/app_AssetManagement/src/interface/entity/eamlocation.ts new file mode 100644 index 0000000..f56eb2a --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamlocation.ts @@ -0,0 +1,120 @@ +/** + * 功能位置 + * + * @export + * @interface EAMLocation + */ +export interface EAMLocation { + + /** + * 功能位置标识 + * + * @returns {*} + * @memberof EAMLocation + */ + eamlocationid?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMLocation + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMLocation + */ + createdate?: any; + + /** + * 功能位置名称 + * + * @returns {*} + * @memberof EAMLocation + */ + eamlocationname?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMLocation + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMLocation + */ + updatedate?: any; + + /** + * 功能位置类型标识 + * + * @returns {*} + * @memberof EAMLocation + */ + eamlocationtypeid?: any; + + /** + * 上级功能位置标识 + * + * @returns {*} + * @memberof EAMLocation + */ + peamlocationid?: any; + + /** + * 功能位置状态标识 + * + * @returns {*} + * @memberof EAMLocation + */ + eamlocationstateid?: any; + + /** + * 上级位置 + * + * @returns {*} + * @memberof EAMLocation + */ + peamlocationname?: any; + + /** + * 功能位置类型 + * + * @returns {*} + * @memberof EAMLocation + */ + eamlocationtypename?: any; + + /** + * 功能位置状态 + * + * @returns {*} + * @memberof EAMLocation + */ + eamlocationstatename?: any; + + /** + * 功能位置编号 + * + * @returns {*} + * @memberof EAMLocation + */ + locationnumber?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMLocation + */ + description?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eammonitor-point.ts b/app_AssetManagement/src/interface/entity/eammonitor-point.ts new file mode 100644 index 0000000..4a89152 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eammonitor-point.ts @@ -0,0 +1,56 @@ +/** + * 测点 + * + * @export + * @interface EAMMonitorPoint + */ +export interface EAMMonitorPoint { + + /** + * 测点标识 + * + * @returns {*} + * @memberof EAMMonitorPoint + */ + eammonitorpointid?: any; + + /** + * 测点名称 + * + * @returns {*} + * @memberof EAMMonitorPoint + */ + eammonitorpointname?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMMonitorPoint + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMMonitorPoint + */ + updatedate?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMMonitorPoint + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMMonitorPoint + */ + createman?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamplan-cdt.ts b/app_AssetManagement/src/interface/entity/eamplan-cdt.ts new file mode 100644 index 0000000..3654b3d --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamplan-cdt.ts @@ -0,0 +1,64 @@ +/** + * 维护计划条件 + * + * @export + * @interface EAMPlanCDT + */ +export interface EAMPlanCDT { + + /** + * 维护计划条件标识 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + eamplancdtid?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + updateman?: any; + + /** + * 维护计划条件名称 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + eamplancdtname?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + createman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + updatedate?: any; + + /** + * 维护计划标识 + * + * @returns {*} + * @memberof EAMPlanCDT + */ + eamplanid?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamplan-line.ts b/app_AssetManagement/src/interface/entity/eamplan-line.ts new file mode 100644 index 0000000..ed5807d --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamplan-line.ts @@ -0,0 +1,136 @@ +/** + * 计划步骤 + * + * @export + * @interface EAMPlanLine + */ +export interface EAMPlanLine { + + /** + * 计划步骤标识 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eamplanlineid?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMPlanLine + */ + createdate?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMPlanLine + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMPlanLine + */ + updateman?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMPlanLine + */ + createman?: any; + + /** + * 计划步骤名称 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eamplanlinename?: any; + + /** + * 维护计划标识 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eamplanid?: any; + + /** + * 功能位置标识 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eamlocationid?: any; + + /** + * 资产标识 + * + * @returns {*} + * @memberof EAMPlanLine + */ + assetid?: any; + + /** + * 序号 + * + * @returns {*} + * @memberof EAMPlanLine + */ + sortnumber?: any; + + /** + * 内容 + * + * @returns {*} + * @memberof EAMPlanLine + */ + content?: any; + + /** + * 维护计划 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eamplanname?: any; + + /** + * 资产 + * + * @returns {*} + * @memberof EAMPlanLine + */ + assetname?: any; + + /** + * 功能位置 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eamlocationname?: any; + + /** + * 测点标识 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eammonitorpointid?: any; + + /** + * 测点 + * + * @returns {*} + * @memberof EAMPlanLine + */ + eammonitorpointname?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamplan-schedule.ts b/app_AssetManagement/src/interface/entity/eamplan-schedule.ts new file mode 100644 index 0000000..a2522c5 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamplan-schedule.ts @@ -0,0 +1,64 @@ +/** + * 维护计划时刻设置 + * + * @export + * @interface EAMPlanSchedule + */ +export interface EAMPlanSchedule { + + /** + * 维护计划时刻设置标识 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + eamplanscheduleid?: any; + + /** + * 维护计划时刻设置名称 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + eamplanschedulename?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + createdate?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + updateman?: any; + + /** + * 维护计划标识 + * + * @returns {*} + * @memberof EAMPlanSchedule + */ + eamplanid?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamplan.ts b/app_AssetManagement/src/interface/entity/eamplan.ts new file mode 100644 index 0000000..ea59d92 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamplan.ts @@ -0,0 +1,136 @@ +/** + * 维护计划 + * + * @export + * @interface EAMPlan + */ +export interface EAMPlan { + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMPlan + */ + updatedate?: any; + + /** + * 维护计划名称 + * + * @returns {*} + * @memberof EAMPlan + */ + eamplanname?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMPlan + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMPlan + */ + createman?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMPlan + */ + updateman?: any; + + /** + * 维护计划标识 + * + * @returns {*} + * @memberof EAMPlan + */ + eamplanid?: any; + + /** + * 功能位置标识 + * + * @returns {*} + * @memberof EAMPlan + */ + eamlocationid?: any; + + /** + * 资产标识 + * + * @returns {*} + * @memberof EAMPlan + */ + assetid?: any; + + /** + * 资产 + * + * @returns {*} + * @memberof EAMPlan + */ + assetname?: any; + + /** + * 功能位置 + * + * @returns {*} + * @memberof EAMPlan + */ + eamlocationname?: any; + + /** + * 计划编号 + * + * @returns {*} + * @memberof EAMPlan + */ + plannumber?: any; + + /** + * 测点标识 + * + * @returns {*} + * @memberof EAMPlan + */ + eammonitorpointid?: any; + + /** + * 测点 + * + * @returns {*} + * @memberof EAMPlan + */ + eammonitorpointname?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMPlan + */ + description?: any; + + /** + * 制定日期 + * + * @returns {*} + * @memberof EAMPlan + */ + mdate?: any; + + /** + * 内容 + * + * @returns {*} + * @memberof EAMPlan + */ + content?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamproduct.ts b/app_AssetManagement/src/interface/entity/eamproduct.ts new file mode 100644 index 0000000..06a1f1f --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamproduct.ts @@ -0,0 +1,64 @@ +/** + * 产品 + * + * @export + * @interface EAMPRODUCT + */ +export interface EAMPRODUCT { + + /** + * 产品标识 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + productid?: any; + + /** + * 产品名称 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + productname?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + createman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + updateman?: any; + + /** + * 产品编号 + * + * @returns {*} + * @memberof EAMPRODUCT + */ + productnumber?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamservice-level.ts b/app_AssetManagement/src/interface/entity/eamservice-level.ts new file mode 100644 index 0000000..cbdc098 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamservice-level.ts @@ -0,0 +1,64 @@ +/** + * 服务等级 + * + * @export + * @interface EAMServiceLevel + */ +export interface EAMServiceLevel { + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + createdate?: any; + + /** + * 服务等级标识 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + eamservicelevelid?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + updateman?: any; + + /** + * 服务等级名称 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + eamservicelevelname?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + updatedate?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMServiceLevel + */ + description?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamspare-parts-group.ts b/app_AssetManagement/src/interface/entity/eamspare-parts-group.ts new file mode 100644 index 0000000..24af6f9 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamspare-parts-group.ts @@ -0,0 +1,64 @@ +/** + * 备件包 + * + * @export + * @interface EAMSparePartsGroup + */ +export interface EAMSparePartsGroup { + + /** + * 备件包标识 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + eamsparepartsgroupid?: any; + + /** + * 备件包名称 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + eamsparepartsgroupname?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + updatedate?: any; + + /** + * 备件包编号 + * + * @returns {*} + * @memberof EAMSparePartsGroup + */ + sparepartsgrpnumber?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamspare-parts-pro.ts b/app_AssetManagement/src/interface/entity/eamspare-parts-pro.ts new file mode 100644 index 0000000..b61055e --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamspare-parts-pro.ts @@ -0,0 +1,96 @@ +/** + * 备件包物料 + * + * @export + * @interface EAMSparePartsPRO + */ +export interface EAMSparePartsPRO { + + /** + * 备件包标识 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + eamsparepartsgroupid?: any; + + /** + * 产品标识 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + productid?: any; + + /** + * 备件包物料标识 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + eamsparepartsproid?: any; + + /** + * 备件包物料名称 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + eamsparepartsproname?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + updatedate?: any; + + /** + * 备件包 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + eamsparepartsgroupname?: any; + + /** + * 产品 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + productname?: any; + + /** + * 产品编号 + * + * @returns {*} + * @memberof EAMSparePartsPRO + */ + productnumber?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamwork-order.ts b/app_AssetManagement/src/interface/entity/eamwork-order.ts new file mode 100644 index 0000000..7b8c161 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamwork-order.ts @@ -0,0 +1,240 @@ +/** + * 工单 + * + * @export + * @interface EAMWorkOrder + */ +export interface EAMWorkOrder { + + /** + * 工单标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + workorderid?: any; + + /** + * 工单名称 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + workordername?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + createman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + updatedate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + updateman?: any; + + /** + * 工单类型标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + eamwotypeid?: any; + + /** + * 资产标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + assetid?: any; + + /** + * 功能位置标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + eamlocationid?: any; + + /** + * 上级工单标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + pworkorderid?: any; + + /** + * 工单来源标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + wooriginid?: any; + + /** + * 工单编号 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + wonumber?: any; + + /** + * 制定日期 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + mdate?: any; + + /** + * 执行日期 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + wodate?: any; + + /** + * 实际开始时间 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + begintime?: any; + + /** + * 实际结束时间 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + endtime?: any; + + /** + * 服务等级标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + eamservicelevelid?: any; + + /** + * 工时 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + worklength?: any; + + /** + * 资产 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + assetname?: any; + + /** + * 功能位置 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + eamlocationname?: any; + + /** + * 服务等级 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + eamservicelevelname?: any; + + /** + * 工单来源 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + wooriginname?: any; + + /** + * 工单类型 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + eamwotypename?: any; + + /** + * 上级工单 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + pworkordername?: any; + + /** + * 描述 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + description?: any; + + /** + * 组织标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + orgid?: any; + + /** + * 组织 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + orgname?: any; + + /** + * 部门标识 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + deptid?: any; + + /** + * 部门 + * + * @returns {*} + * @memberof EAMWorkOrder + */ + deptname?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamwostate.ts b/app_AssetManagement/src/interface/entity/eamwostate.ts new file mode 100644 index 0000000..d3d95aa --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamwostate.ts @@ -0,0 +1,56 @@ +/** + * 工单状态 + * + * @export + * @interface EAMWOState + */ +export interface EAMWOState { + + /** + * 工单状态名称 + * + * @returns {*} + * @memberof EAMWOState + */ + eamwostatename?: any; + + /** + * 工单状态标识 + * + * @returns {*} + * @memberof EAMWOState + */ + eamwostateid?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMWOState + */ + updateman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMWOState + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMWOState + */ + createman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMWOState + */ + updatedate?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/eamwotype.ts b/app_AssetManagement/src/interface/entity/eamwotype.ts new file mode 100644 index 0000000..2012389 --- /dev/null +++ b/app_AssetManagement/src/interface/entity/eamwotype.ts @@ -0,0 +1,64 @@ +/** + * 工单类型 + * + * @export + * @interface EAMWOType + */ +export interface EAMWOType { + + /** + * 工单类型名称 + * + * @returns {*} + * @memberof EAMWOType + */ + eamwotypename?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof EAMWOType + */ + createdate?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof EAMWOType + */ + createman?: any; + + /** + * 工单类型标识 + * + * @returns {*} + * @memberof EAMWOType + */ + eamwotypeid?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof EAMWOType + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof EAMWOType + */ + updatedate?: any; + + /** + * 工单状态模型标识 + * + * @returns {*} + * @memberof EAMWOType + */ + eamwostatemodelid?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/entity/woorigin.ts b/app_AssetManagement/src/interface/entity/woorigin.ts new file mode 100644 index 0000000..1fd8afc --- /dev/null +++ b/app_AssetManagement/src/interface/entity/woorigin.ts @@ -0,0 +1,64 @@ +/** + * 工单来源 + * + * @export + * @interface WOOrigin + */ +export interface WOOrigin { + + /** + * 工单来源标识 + * + * @returns {*} + * @memberof WOOrigin + */ + wooriginid?: any; + + /** + * 工单来源名称 + * + * @returns {*} + * @memberof WOOrigin + */ + wooriginname?: any; + + /** + * 建立人 + * + * @returns {*} + * @memberof WOOrigin + */ + createman?: any; + + /** + * 建立时间 + * + * @returns {*} + * @memberof WOOrigin + */ + createdate?: any; + + /** + * 更新人 + * + * @returns {*} + * @memberof WOOrigin + */ + updateman?: any; + + /** + * 更新时间 + * + * @returns {*} + * @memberof WOOrigin + */ + updatedate?: any; + + /** + * 工单来源类型 + * + * @returns {*} + * @memberof WOOrigin + */ + woorigintype?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/interface/viewState.ts b/app_AssetManagement/src/interface/viewState.ts new file mode 100644 index 0000000..05f465f --- /dev/null +++ b/app_AssetManagement/src/interface/viewState.ts @@ -0,0 +1,31 @@ +/** + * 视图状态 + * + * @interface ViewState + */ +interface ViewState { + + /** + * 部件标识 + * + * @type {string} + * @memberof ViewState + */ + tag: string; + + /** + * 触发行为 + * + * @type {('load' | 'save' | 'remove' | 'autoload' | 'loaddraft' | 'filter' | 'refresh_parent' | any)} + * @memberof ViewState + */ + action: 'load' | 'save' | 'remove' | 'autoload' | 'loaddraft' | 'filter' | 'refresh_parent' | any; + + /** + * 数据 + * + * @type {*} + * @memberof ViewState + */ + data?: any; +} \ No newline at end of file diff --git a/app_AssetManagement/src/locale/index.ts b/app_AssetManagement/src/locale/index.ts new file mode 100644 index 0000000..9e5cc8f --- /dev/null +++ b/app_AssetManagement/src/locale/index.ts @@ -0,0 +1,33 @@ +import Vue from 'vue' +import VueI18n from 'vue-i18n' + +const vueApp: any = Vue; + +vueApp.use(VueI18n); + +import zhCn from './lang/zh-CN'; +import iviewZhCnLocale from 'view-design/dist/locale/zh-CN'; +import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'; + +const messages = { + 'zh-CN': Object.assign(iviewZhCnLocale, elementZhLocale, zhCn), +}; + + +// 自动根据浏览器系统语言设置语言 +const navLang = localStorage.getItem('local') || navigator.language; +const localLang = (navLang === 'zh-CN' || (navLang === 'en-US' && messages.hasOwnProperty('en-US'))) ? navLang : false; +let lang: string = localLang || 'zh-CN'; + +vueApp.config.lang = lang + +// // vue-i18n 6.x+写法 +vueApp.locale = () => { }; + +const i18n = new VueI18n({ + locale: lang, + messages, + silentTranslationWarn:true +}); + +export default i18n; diff --git a/app_AssetManagement/src/locale/lang/en-US.ts b/app_AssetManagement/src/locale/lang/en-US.ts new file mode 100644 index 0000000..aaa578d --- /dev/null +++ b/app_AssetManagement/src/locale/lang/en-US.ts @@ -0,0 +1,310 @@ +import eamdocument_en_US from '@locale/lanres/entities/eamdocument/eamdocument_en_US'; +import eamlocationstatemodel_en_US from '@locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_en_US'; +import eamlocationtype_en_US from '@locale/lanres/entities/eamlocation-type/eamlocation-type_en_US'; +import eamworkorder_en_US from '@locale/lanres/entities/eamwork-order/eamwork-order_en_US'; +import eamlocation_en_US from '@locale/lanres/entities/eamlocation/eamlocation_en_US'; +import eammonitorpoint_en_US from '@locale/lanres/entities/eammonitor-point/eammonitor-point_en_US'; +import eamassetstate_en_US from '@locale/lanres/entities/eamasset-state/eamasset-state_en_US'; +import eamlocationstate_en_US from '@locale/lanres/entities/eamlocation-state/eamlocation-state_en_US'; +import eamassettype_en_US from '@locale/lanres/entities/eamasset-type/eamasset-type_en_US'; +import eamassetstatemodelline_en_US from '@locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_en_US'; +import woorigin_en_US from '@locale/lanres/entities/woorigin/woorigin_en_US'; +import eamapplytype_en_US from '@locale/lanres/entities/eamapply-type/eamapply-type_en_US'; +import eamproduct_en_US from '@locale/lanres/entities/eamproduct/eamproduct_en_US'; +import eamservicelevel_en_US from '@locale/lanres/entities/eamservice-level/eamservice-level_en_US'; +import eamplancdt_en_US from '@locale/lanres/entities/eamplan-cdt/eamplan-cdt_en_US'; +import eamplan_en_US from '@locale/lanres/entities/eamplan/eamplan_en_US'; +import eamsparepartspro_en_US from '@locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_en_US'; +import eamapplystatemodelline_en_US from '@locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_en_US'; +import eamsparepartsgroup_en_US from '@locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_en_US'; +import eamplanline_en_US from '@locale/lanres/entities/eamplan-line/eamplan-line_en_US'; +import eamlocationstatemodelline_en_US from '@locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_en_US'; +import eamplanschedule_en_US from '@locale/lanres/entities/eamplan-schedule/eamplan-schedule_en_US'; +import eamassetpartsgroup_en_US from '@locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_en_US'; +import eamasset_en_US from '@locale/lanres/entities/eamasset/eamasset_en_US'; +import eamapplystate_en_US from '@locale/lanres/entities/eamapply-state/eamapply-state_en_US'; +import eamapply_en_US from '@locale/lanres/entities/eamapply/eamapply_en_US'; +import eamwostate_en_US from '@locale/lanres/entities/eamwostate/eamwostate_en_US'; +import eamdocumenttype_en_US from '@locale/lanres/entities/eamdocument-type/eamdocument-type_en_US'; +import eamassetstatemodel_en_US from '@locale/lanres/entities/eamasset-state-model/eamasset-state-model_en_US'; +import eamwotype_en_US from '@locale/lanres/entities/eamwotype/eamwotype_en_US'; +import components_en_US from '@locale/lanres/components/components_en_US'; +import codelist_en_US from '@locale/lanres/codelist/codelist_en_US'; +import userCustom_en_US from '@locale/lanres/userCustom/userCustom_en_US'; + +export default { + app: { + commonWords:{ + error: "Error", + success: "Success", + ok: "OK", + cancel: "Cancel", + save: "Save", + codeNotExist: 'Code list does not exist', + reqException: "Request exception", + sysException: "System abnormality", + warning: "Warning", + wrong: "Error", + rulesException: "Abnormal value check rule", + saveSuccess: "Saved successfully", + saveFailed: "Save failed", + deleteSuccess: "Successfully deleted!", + deleteError: "Failed to delete", + delDataFail: "Failed to delete data", + noData: "No data", + startsuccess:"Start successful" + }, + local:{ + new: "New", + add: "Add", + }, + gridpage: { + choicecolumns: "Choice columns", + refresh: "refresh", + show: "Show", + records: "records", + totle: "totle", + noData: "No data", + valueVail: "Value cannot be empty", + notConfig: { + fetchAction: "The view table fetchaction parameter is not configured", + removeAction: "The view table removeaction parameter is not configured", + createAction: "The view table createaction parameter is not configured", + updateAction: "The view table updateaction parameter is not configured", + loaddraftAction: "The view table loadtrafaction parameter is not configured", + }, + data: "Data", + delDataFail: "Failed to delete data", + delSuccess: "Delete successfully!", + confirmDel: "Are you sure you want to delete", + notRecoverable: "delete will not be recoverable?", + notBatch: "Batch addition not implemented", + grid: "Grid", + exportFail: "Data export failed", + sum: "Total", + formitemFailed: "Form item update failed", + }, + list: { + notConfig: { + fetchAction: "View list fetchAction parameter is not configured", + removeAction: "View table removeAction parameter is not configured", + createAction: "View list createAction parameter is not configured", + updateAction: "View list updateAction parameter is not configured", + }, + confirmDel: "Are you sure you want to delete", + notRecoverable: "delete will not be recoverable?", + }, + listExpBar: { + title: "List navigation bar", + }, + wfExpBar: { + title: "Process navigation bar", + }, + calendarExpBar:{ + title: "Calendar navigation bar", + }, + treeExpBar: { + title: "Tree view navigation bar", + }, + portlet: { + noExtensions: "No extensions", + }, + tabpage: { + sureclosetip: { + title: "Close warning", + content: "Form data Changed, are sure close?", + }, + closeall: "Close all", + closeother: "Close other", + }, + fileUpload: { + caption: "Upload", + }, + searchButton: { + search: "Search", + reset: "Reset", + }, + calendar:{ + today: "today", + month: "month", + week: "week", + day: "day", + list: "list", + dateSelectModalTitle: "select the time you wanted", + gotoDate: "goto", + from: "From", + to: "To", + }, + // 非实体视图 + views: { + appindexview: { + caption: "资产管理", + title: "应用首页视图", + }, + }, + utilview:{ + importview:"Import Data", + warning:"warning", + info:"Please configure the data import item" + }, + menus: { + appindexview: { + user_menus: "用户菜单", + top_menus: "顶部菜单", + menuitem15: "系统设置", + menuitem21: "文档类型", + menuitem16: "服务等级", + menuitem17: "维护申请类型", + menuitem19: "工单类型", + left_exp: "左侧菜单", + menuitem1: "功能位置", + menuitem6: "功能位置状态", + menuitem7: "功能位置状态模型", + menuitem8: "功能位置类型", + menuitem9: "功能位置", + menuitem2: "资产管理", + menuitem10: "资产状态", + menuitem11: "资产状态模型", + menuitem12: "资产类型", + menuitem13: "资产管理", + menuitem22: "文档", + menuitem14: "备件包", + menuitem4: "工单管理", + menuitem3: "维护申请", + menuitem18: "工单", + menuitem5: "维护计划", + menuitem20: "维护计划", + }, + }, + formpage:{ + error: "Error", + desc1: "Operation failed, failed to find current form item", + desc2: "Can't continue", + notconfig: { + loadaction: "View form loadAction parameter is not configured", + loaddraftaction: "View form loaddraftAction parameter is not configured", + actionname: "View form actionName parameter is not configured", + removeaction: "View form removeAction parameter is not configured", + }, + saveerror: "Error saving data", + savecontent: "The data is inconsistent. The background data may have been modified. Do you want to reload the data?", + valuecheckex: "Value rule check exception", + savesuccess: "Saved successfully!", + deletesuccess: "Successfully deleted!", + workflow: { + starterror: "Workflow started successfully", + startsuccess: "Workflow failed to start", + submiterror: "Workflow submission failed", + submitsuccess: "Workflow submitted successfully", + }, + updateerror: "Form item update failed", + }, + gridBar: { + title: "Table navigation bar", + }, + multiEditView: { + notConfig: { + fetchAction: "View multi-edit view panel fetchAction parameter is not configured", + loaddraftAction: "View multi-edit view panel loaddraftAction parameter is not configured", + }, + }, + dataViewExpBar: { + title: "Card view navigation bar", + }, + kanban: { + notConfig: { + fetchAction: "View list fetchAction parameter is not configured", + removeAction: "View table removeAction parameter is not configured", + }, + delete1: "Confirm to delete ", + delete2: "the delete operation will be unrecoverable!", + }, + dashBoard: { + handleClick: { + title: "Panel design", + }, + }, + dataView: { + sum: "total", + data: "data", + }, + chart: { + undefined: "Undefined", + quarter: "Quarter", + year: "Year", + }, + searchForm: { + notConfig: { + loadAction: "View search form loadAction parameter is not configured", + loaddraftAction: "View search form loaddraftAction parameter is not configured", + }, + custom: "Store custom queries", + title: "Name", + }, + wizardPanel: { + back: "Back", + next: "Next", + complete: "Complete", + preactionmessage:"The calculation of the previous behavior is not configured" + }, + viewLayoutPanel: { + appLogoutView: { + prompt1: "Dear customer, you have successfully exited the system, after", + prompt2: "seconds, we will jump to the", + logingPage: "login page", + }, + appWfstepTraceView: { + title: "Application process processing record view", + }, + appWfstepDataView: { + title: "Application process tracking view", + }, + appLoginView: { + username: "Username", + password: "Password", + login: "Login", + }, + }, + }, + form: { + group: { + show_more: "Show More", + hidden_more: "Hide More" + } + }, + entities: { + eamdocument: eamdocument_en_US, + eamlocationstatemodel: eamlocationstatemodel_en_US, + eamlocationtype: eamlocationtype_en_US, + eamworkorder: eamworkorder_en_US, + eamlocation: eamlocation_en_US, + eammonitorpoint: eammonitorpoint_en_US, + eamassetstate: eamassetstate_en_US, + eamlocationstate: eamlocationstate_en_US, + eamassettype: eamassettype_en_US, + eamassetstatemodelline: eamassetstatemodelline_en_US, + woorigin: woorigin_en_US, + eamapplytype: eamapplytype_en_US, + eamproduct: eamproduct_en_US, + eamservicelevel: eamservicelevel_en_US, + eamplancdt: eamplancdt_en_US, + eamplan: eamplan_en_US, + eamsparepartspro: eamsparepartspro_en_US, + eamapplystatemodelline: eamapplystatemodelline_en_US, + eamsparepartsgroup: eamsparepartsgroup_en_US, + eamplanline: eamplanline_en_US, + eamlocationstatemodelline: eamlocationstatemodelline_en_US, + eamplanschedule: eamplanschedule_en_US, + eamassetpartsgroup: eamassetpartsgroup_en_US, + eamasset: eamasset_en_US, + eamapplystate: eamapplystate_en_US, + eamapply: eamapply_en_US, + eamwostate: eamwostate_en_US, + eamdocumenttype: eamdocumenttype_en_US, + eamassetstatemodel: eamassetstatemodel_en_US, + eamwotype: eamwotype_en_US, + }, + components: components_en_US, + codelist: codelist_en_US, + userCustom: userCustom_en_US, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lang/zh-CN.ts b/app_AssetManagement/src/locale/lang/zh-CN.ts new file mode 100644 index 0000000..8128109 --- /dev/null +++ b/app_AssetManagement/src/locale/lang/zh-CN.ts @@ -0,0 +1,309 @@ +import eamdocument_zh_CN from '@locale/lanres/entities/eamdocument/eamdocument_zh_CN'; +import eamlocationstatemodel_zh_CN from '@locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_zh_CN'; +import eamlocationtype_zh_CN from '@locale/lanres/entities/eamlocation-type/eamlocation-type_zh_CN'; +import eamworkorder_zh_CN from '@locale/lanres/entities/eamwork-order/eamwork-order_zh_CN'; +import eamlocation_zh_CN from '@locale/lanres/entities/eamlocation/eamlocation_zh_CN'; +import eammonitorpoint_zh_CN from '@locale/lanres/entities/eammonitor-point/eammonitor-point_zh_CN'; +import eamassetstate_zh_CN from '@locale/lanres/entities/eamasset-state/eamasset-state_zh_CN'; +import eamlocationstate_zh_CN from '@locale/lanres/entities/eamlocation-state/eamlocation-state_zh_CN'; +import eamassettype_zh_CN from '@locale/lanres/entities/eamasset-type/eamasset-type_zh_CN'; +import eamassetstatemodelline_zh_CN from '@locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_zh_CN'; +import woorigin_zh_CN from '@locale/lanres/entities/woorigin/woorigin_zh_CN'; +import eamapplytype_zh_CN from '@locale/lanres/entities/eamapply-type/eamapply-type_zh_CN'; +import eamproduct_zh_CN from '@locale/lanres/entities/eamproduct/eamproduct_zh_CN'; +import eamservicelevel_zh_CN from '@locale/lanres/entities/eamservice-level/eamservice-level_zh_CN'; +import eamplancdt_zh_CN from '@locale/lanres/entities/eamplan-cdt/eamplan-cdt_zh_CN'; +import eamplan_zh_CN from '@locale/lanres/entities/eamplan/eamplan_zh_CN'; +import eamsparepartspro_zh_CN from '@locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_zh_CN'; +import eamapplystatemodelline_zh_CN from '@locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_zh_CN'; +import eamsparepartsgroup_zh_CN from '@locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_zh_CN'; +import eamplanline_zh_CN from '@locale/lanres/entities/eamplan-line/eamplan-line_zh_CN'; +import eamlocationstatemodelline_zh_CN from '@locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_zh_CN'; +import eamplanschedule_zh_CN from '@locale/lanres/entities/eamplan-schedule/eamplan-schedule_zh_CN'; +import eamassetpartsgroup_zh_CN from '@locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_zh_CN'; +import eamasset_zh_CN from '@locale/lanres/entities/eamasset/eamasset_zh_CN'; +import eamapplystate_zh_CN from '@locale/lanres/entities/eamapply-state/eamapply-state_zh_CN'; +import eamapply_zh_CN from '@locale/lanres/entities/eamapply/eamapply_zh_CN'; +import eamwostate_zh_CN from '@locale/lanres/entities/eamwostate/eamwostate_zh_CN'; +import eamdocumenttype_zh_CN from '@locale/lanres/entities/eamdocument-type/eamdocument-type_zh_CN'; +import eamassetstatemodel_zh_CN from '@locale/lanres/entities/eamasset-state-model/eamasset-state-model_zh_CN'; +import eamwotype_zh_CN from '@locale/lanres/entities/eamwotype/eamwotype_zh_CN'; +import components_zh_CN from '@locale/lanres/components/components_zh_CN'; +import codelist_zh_CN from '@locale/lanres/codelist/codelist_zh_CN'; +import userCustom_zh_CN from '@locale/lanres/userCustom/userCustom_zh_CN'; + +export default { + app: { + commonWords:{ + error: "失败", + success: "成功", + ok: "确认", + cancel: "取消", + save: "保存", + codeNotExist: "代码表不存在", + reqException: "请求异常", + sysException: "系统异常", + warning: "警告", + wrong: "错误", + rulesException: "值规则校验异常", + saveSuccess: "保存成功", + saveFailed: "保存失败", + deleteSuccess: "删除成功!", + deleteError: "删除失败!", + delDataFail: "删除数据失败", + noData: "暂无数据", + startsuccess:"启动成功" + }, + local:{ + new: "新建", + add: "增加", + }, + gridpage: { + choicecolumns: "选择列", + refresh: "刷新", + show: "显示", + records: "条", + totle: "共", + noData: "无数据", + valueVail: "值不能为空", + notConfig: { + fetchAction: "视图表格fetchAction参数未配置", + removeAction: "视图表格removeAction参数未配置", + createAction: "视图表格createAction参数未配置", + updateAction: "视图表格updateAction参数未配置", + loaddraftAction: "视图表格loaddraftAction参数未配置", + }, + data: "数据", + delDataFail: "删除数据失败", + delSuccess: "删除成功!", + confirmDel: "确认要删除", + notRecoverable: "删除操作将不可恢复?", + notBatch: "批量添加未实现", + grid: "表", + exportFail: "数据导出失败", + sum: "合计", + formitemFailed: "表单项更新失败", + }, + list: { + notConfig: { + fetchAction: "视图列表fetchAction参数未配置", + removeAction: "视图表格removeAction参数未配置", + createAction: "视图列表createAction参数未配置", + updateAction: "视图列表updateAction参数未配置", + }, + confirmDel: "确认要删除", + notRecoverable: "删除操作将不可恢复?", + }, + listExpBar: { + title: "列表导航栏", + }, + wfExpBar: { + title: "流程导航栏", + }, + calendarExpBar:{ + title: "日历导航栏", + }, + treeExpBar: { + title: "树视图导航栏", + }, + portlet: { + noExtensions: "无扩展插件", + }, + tabpage: { + sureclosetip: { + title: "关闭提醒", + content: "表单数据已经修改,确定要关闭?", + }, + closeall: "关闭所有", + closeother: "关闭其他", + }, + fileUpload: { + caption: "上传", + }, + searchButton: { + search: "搜索", + reset: "重置", + }, + calendar:{ + today: "今天", + month: "月", + week: "周", + day: "天", + list: "列", + dateSelectModalTitle: "选择要跳转的时间", + gotoDate: "跳转", + from: "从", + to: "至", + }, + // 非实体视图 + views: { + appindexview: { + caption: "资产管理", + title: "应用首页视图", + }, + }, + utilview:{ + importview:"导入数据", + warning:"警告", + info:"请配置数据导入项" + }, + menus: { + appindexview: { + user_menus: "用户菜单", + top_menus: "顶部菜单", + menuitem15: "系统设置", + menuitem21: "文档类型", + menuitem16: "服务等级", + menuitem17: "维护申请类型", + menuitem19: "工单类型", + left_exp: "左侧菜单", + menuitem1: "功能位置", + menuitem6: "功能位置状态", + menuitem7: "功能位置状态模型", + menuitem8: "功能位置类型", + menuitem9: "功能位置", + menuitem2: "资产管理", + menuitem10: "资产状态", + menuitem11: "资产状态模型", + menuitem12: "资产类型", + menuitem13: "资产管理", + menuitem22: "文档", + menuitem14: "备件包", + menuitem4: "工单管理", + menuitem3: "维护申请", + menuitem18: "工单", + menuitem5: "维护计划", + menuitem20: "维护计划", + }, + }, + formpage:{ + desc1: "操作失败,未能找到当前表单项", + desc2: "无法继续操作", + notconfig: { + loadaction: "视图表单loadAction参数未配置", + loaddraftaction: "视图表单loaddraftAction参数未配置", + actionname: "视图表单'+actionName+'参数未配置", + removeaction: "视图表单removeAction参数未配置", + }, + saveerror: "保存数据发生错误", + savecontent: "数据不一致,可能后台数据已经被修改,是否要重新加载数据?", + valuecheckex: "值规则校验异常", + savesuccess: "保存成功!", + deletesuccess: "删除成功!", + workflow: { + starterror: "工作流启动失败", + startsuccess: "工作流启动成功", + submiterror: "工作流提交失败", + submitsuccess: "工作流提交成功", + }, + updateerror: "表单项更新失败", + }, + gridBar: { + title: "表格导航栏", + }, + multiEditView: { + notConfig: { + fetchAction: "视图多编辑视图面板fetchAction参数未配置", + loaddraftAction: "视图多编辑视图面板loaddraftAction参数未配置", + }, + }, + dataViewExpBar: { + title: "卡片视图导航栏", + }, + kanban: { + notConfig: { + fetchAction: "视图列表fetchAction参数未配置", + removeAction: "视图表格removeAction参数未配置", + }, + delete1: "确认要删除 ", + delete2: "删除操作将不可恢复?", + }, + dashBoard: { + handleClick: { + title: "面板设计", + }, + }, + dataView: { + sum: "共", + data: "条数据", + }, + chart: { + undefined: "未定义", + quarter: "季度", + year: "年", + }, + searchForm: { + notConfig: { + loadAction: "视图搜索表单loadAction参数未配置", + loaddraftAction: "视图搜索表单loaddraftAction参数未配置", + }, + custom: "存储自定义查询", + title: "名称", + }, + wizardPanel: { + back: "上一步", + next: "下一步", + complete: "完成", + preactionmessage:"未配置计算上一步行为" + }, + viewLayoutPanel: { + appLogoutView: { + prompt1: "尊敬的客户您好,您已成功退出系统,将在", + prompt2: "秒后跳转至", + logingPage: "登录页", + }, + appWfstepTraceView: { + title: "应用流程处理记录视图", + }, + appWfstepDataView: { + title: "应用流程跟踪视图", + }, + appLoginView: { + username: "用户名", + password: "密码", + login: "登录", + }, + }, + }, + form: { + group: { + show_more: "显示更多", + hidden_more: "隐藏更多" + } + }, + entities: { + eamdocument: eamdocument_zh_CN, + eamlocationstatemodel: eamlocationstatemodel_zh_CN, + eamlocationtype: eamlocationtype_zh_CN, + eamworkorder: eamworkorder_zh_CN, + eamlocation: eamlocation_zh_CN, + eammonitorpoint: eammonitorpoint_zh_CN, + eamassetstate: eamassetstate_zh_CN, + eamlocationstate: eamlocationstate_zh_CN, + eamassettype: eamassettype_zh_CN, + eamassetstatemodelline: eamassetstatemodelline_zh_CN, + woorigin: woorigin_zh_CN, + eamapplytype: eamapplytype_zh_CN, + eamproduct: eamproduct_zh_CN, + eamservicelevel: eamservicelevel_zh_CN, + eamplancdt: eamplancdt_zh_CN, + eamplan: eamplan_zh_CN, + eamsparepartspro: eamsparepartspro_zh_CN, + eamapplystatemodelline: eamapplystatemodelline_zh_CN, + eamsparepartsgroup: eamsparepartsgroup_zh_CN, + eamplanline: eamplanline_zh_CN, + eamlocationstatemodelline: eamlocationstatemodelline_zh_CN, + eamplanschedule: eamplanschedule_zh_CN, + eamassetpartsgroup: eamassetpartsgroup_zh_CN, + eamasset: eamasset_zh_CN, + eamapplystate: eamapplystate_zh_CN, + eamapply: eamapply_zh_CN, + eamwostate: eamwostate_zh_CN, + eamdocumenttype: eamdocumenttype_zh_CN, + eamassetstatemodel: eamassetstatemodel_zh_CN, + eamwotype: eamwotype_zh_CN, + }, + components: components_zh_CN, + codelist: codelist_zh_CN, + userCustom: userCustom_zh_CN, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/codelist/codelist_en_US.ts b/app_AssetManagement/src/locale/lanres/codelist/codelist_en_US.ts new file mode 100644 index 0000000..ecefad7 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/codelist/codelist_en_US.ts @@ -0,0 +1,10 @@ +export default { + SysOperator: { + "empty": "", + }, + YesNo: { + "1": "是", + "0": "否", + "empty": "" + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/codelist/codelist_zh_CN.ts b/app_AssetManagement/src/locale/lanres/codelist/codelist_zh_CN.ts new file mode 100644 index 0000000..1980140 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/codelist/codelist_zh_CN.ts @@ -0,0 +1,10 @@ +export default { + SysOperator: { + "empty": "", + }, + YesNo: { + "1": "是", + "0": "否", + "empty": "", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/components/components_en_US.ts b/app_AssetManagement/src/locale/lanres/components/components_en_US.ts new file mode 100644 index 0000000..54c1f8b --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/components/components_en_US.ts @@ -0,0 +1,251 @@ +export default { + "404": { + errorText1: 'sorry,the page you visited is not exist!', + errorText2: 'The page you visited is not exist,please return to', + indexPage: 'home page', + continue: 'to continue browsing', + }, + "500": { + errorText1: "sorry,there's something wrong with the server!", + errorText2: "There's something wrong with the server,please return to", + indexPage: 'home page', + continue: 'to continue browsing', + }, + appAutocomplete: { + error: 'Error', + miss: 'Missing parameter ', + requestException: 'Request Exception!', + }, + appBuild: { + custom: 'Customize', + }, + appCheckBox: { + notExist: 'codelist is not existed', + }, + appColumnLink: { + error: 'error', + valueItemException:"value item exception", + rowDataException:"table row data exception", + }, + appColumnRender: { + select: 'please select...', + unsupported: 'unsupported', + }, + appDashboardDesign: { + global: 'Global', + }, + appDataUploadView: { + "viewtitle":"AppDataUploadView", + "selectfile":"Select File", + "uploadserver":"Upload Server", + "datatemplate":"Download Import Data Template", + "dataid":"Data ID is ", + "read":" read Successful", + "importing":"Importing", + "completed":"Import Completed", + "confirm":"OK", + "datatemp":"Data Template", + "importfailed":"Import Failed" + }, + appDebugActions: { + button: 'Open Configuration Mode', + }, + appExportExcel: { + total: 'All', + max: 'At Most', + row: 'Lines', + currentPage: 'Current Page', + desc:'Please enter the start page', + desc1:'Please enter a valid start page', + }, + appFileUpload: { + preview: 'preview', + uploadText: 'Drag files here,or Click to upload', + fileTypeErrorTitle: 'File type incorrect', + fileTypeErrorInfo: 'Please select files with picture types,such as JPEG,GIF,PNG,BMP', + }, + appFormDRUIPart: { + blockUITipInfo: 'Please save the major data first', + viewLoadComp:'After the multi data view is loaded, the subsequent form item update will be triggered', + save:'Relationship data save complete', + change:'Relationship data value change', + change1:'View data changes', + loadComp:'View loading complete', + }, + appHeaderMenus: { + ibizlab:{ + title: 'iBizLab', + }, + publishProject:{ + title: 'Publish Project', + }, + ibizstudio:{ + title: 'Model Design Tools', + }, + ibizbbs:{ + title: 'iBizBBS', + }, + }, + appMpicker: { + error: 'Error', + miss: 'Missing parameter ', + requestException: 'Request Exception!', + }, + appPicker: { + error: 'Error', + miss: 'Missing parameter ', + requestException: 'Request Exception!', + newAndEdit: 'Create And Edit...', + systemException: 'System Error!', + valueitemException: 'valueitem Error!', + formdataException: 'formdata Error!', + }, + appPickerSelectView: { + error: 'Error', + valueitemException: 'valueitem Error!', + formdataException: 'formdata Error!', + placeholder: 'Please select...', + }, + appPortalDesign: { + customPortal: 'Custom portal', + save: 'Save', + }, + appRangDate: { + placeholder: 'Please select time...', + from: 'from', + daystart: '00:00:00 to', + dayend: '24:00:00', + }, + appRangeEditor: { + placeholder: 'Please select time...', + input: 'Please input...', + }, + appStudioAction: { + configTitle: 'Enter the configuration of current view', + configButton: 'Configuration', + issueTitle: 'Create issues of current view', + issueButton: 'Create issues', + }, + appTreePicker: { + placeholder: 'please select...', + }, + dateRange: { + startText: 'Insurance period : From', + endText: '24:00:00', + startPlaceholder: 'Begin Date', + rangeSeparatorr: ' 00:00:00 To', + endPlaceholder: 'End Dat4e', + }, + dropDownList: { + placeholder: 'please select...', + }, + dropDownListDynamic: { + placeholder: 'please select...', + }, + dropDownListMpicker: { + placeholder: 'please select...', + }, + login: { + error: 'Error', + caption: 'Welcome to login', + placeholder1:'User name', + placeholder2:'Password', + name: 'Login', + reset:'Reset', + other:'Other login methods', + tip: 'Enter username and password', + warning1:'QQ authorization login not supported', + warning2:'Wechat authorized login not supported', + loginname: { + placeholder: 'Username', + message: 'The username cannot be empty', + }, + password: { + placeholder: 'Password', + message: 'The password cannot be empty', + }, + loginfailed: 'Login failed', + }, + appUser: { + name: 'System', + logout: 'Logout', + surelogout: 'Are you sure logout?', + changepwd: "Change Password", + }, + appTheme: { + caption: { + theme: 'Theme', + font: 'Font family', + }, + fontFamilys: { + MicrosoftYaHei: 'Microsoft YaHei', + SimHei: 'SimHei', + YouYuan: 'YouYuan', + }, + }, + appFormGroup: { + hide: 'hide', + showMore: 'show more', + }, + appUpdatePassword: { + oldPwd: 'Original password', + newPwd: 'New password', + confirmPwd: 'Confirm password', + sure: 'Confirm modification', + oldPwdErr: 'The original password cannot be empty!', + newPwdErr: 'New password cannot be empty!', + confirmPwdErr: 'The two input passwords are inconsistent!', + }, + appAddressSelection: { + loadDataFail: 'City data loading failed' + }, + appGroupSelect:{ + groupSelect:'Group selection', + }, + appImageUpload:{ + uploadFail:'Upload failed' + }, + appOrgSelect:{ + loadFail:'Failed to load data' + }, + appTransfer:{ + title1:'Not selected', + title2:'Selected', + }, + appWFApproval:{ + commit:'Commit', + wait:'Waiting', + handle:'Handle', + placeholder:'Please enter the content', + end:'End' + }, + contextMenuDrag:{ + allApp:'All applications', + noFind:'The app was not found' + }, + filterMode:{ + placeholder:'Conditional logic', + }, + filterTree:{ + title1:'Add condition', + title2:'Add group', + placeholder:'Attribute', + }, + iBizGroupPicker:{ + ok:'Ok', + cancel:'Cancel', + }, + iBizGroupSelect:{ + groupSelect:'Group selection' + }, + tabPageExp:{ + more:'More', + }, + uploadFile:{ + imgMsg:'Drag the picture here to replace it', + localUpload:'Local upload', + or:'Or', + imgMsg1:'Select from stock' + } + +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/components/components_zh_CN.ts b/app_AssetManagement/src/locale/lanres/components/components_zh_CN.ts new file mode 100644 index 0000000..1c88057 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/components/components_zh_CN.ts @@ -0,0 +1,251 @@ +export default { + "404": { + errorText1: '抱歉,您访问的页面不存在!', + errorText2: '您要找的页面不存在,请返回', + indexPage: '首页', + continue: '继续浏览', + }, + "500": { + errorText1: '抱歉,服务器出错了!', + errorText2: '服务器出错了,请返回 ', + indexPage: '首页', + continue: '继续浏览', + }, + appAutocomplete: { + error: '错误', + miss: '缺少参数', + requestException: '请求异常!', + }, + appBuild: { + custom: '定制', + }, + appCheckBox: { + notExist: '代码表不存在', + }, + appColumnLink: { + error: '错误', + valueItemException:"值项异常", + rowDataException:"表格行数据异常", + }, + appColumnRender: { + select: '请选择...', + unsupported: '不支持', + }, + appDashboardDesign: { + global: '全局', + }, + appDataUploadView: { + "viewtitle":"应用数据导入视图", + "selectfile":"选取文件", + "uploadserver":"上传服务器", + "datatemplate":"下载导入数据模板", + "dataid":"数据标识为", + "read":"读取成功", + "importing":"导入中", + "completed":"导入完成", + "confirm":"确认", + "datatemp":"导入数据模板", + "importfailed":"导入失败" + }, + appDebugActions:{ + button: '开启配置模式', + }, + appExportExcel: { + total: '全部', + max: '最大', + row: '行', + currentPage: '当前页', + desc:'请输入起始页', + desc1:'请输入有效的起始页', + }, + appFileUpload: { + preview: '查看', + uploadText: '将文件拖到此处,或点击上传', + uploadError: '上传失败', + fileTypeErrorTitle: '文件类型错误', + fileTypeErrorInfo: '请选择图片类型的文件,如JPEG,GIF,PNG,BMP', + }, + appFormDRUIPart: { + blockUITipInfo: '请先保存主数据', + viewLoadComp:'多数据视图加载完成,触发后续表单项更新', + save:'关系数据保存完成', + change:'关系数据值变化', + change1:'视图数据变化', + loadComp:'视图加载完成', + }, + appHeaderMenus: { + ibizlab:{ + title: 'iBiz开放平台', + }, + publishProject:{ + title: '项目文件', + }, + ibizstudio:{ + title: '模型设计工具', + }, + ibizbbs:{ + title: 'iBiz论坛', + }, + }, + appMpicker: { + error: '错误', + miss: '缺少参数', + requestException: '请求异常!', + }, + appPicker: { + error: '错误', + miss: '缺少参数', + requestException: '请求异常!', + newAndEdit: '创建并编辑...', + systemException: '系统异常!', + valueitemException: '值项异常!', + formdataException: '表单数据异常!', + }, + appPickerSelectView: { + error: '错误', + valueitemException: '值项异常!', + formdataException: '表单数据异常!', + placeholder: '请选择...', + }, + appPortalDesign: { + customPortal: '自定义门户', + save: '保存', + }, + appRangDate: { + placeholder: '请选择时间...', + from: '自', + daystart: '日 0 时 起 至', + dayend: '日 24 时 止', + }, + appRangeEditor: { + placeholder: '请选择时间...', + input: '请输入...', + }, + appStudioAction: { + configTitle: '进入当前视图配置界面', + configButton: '配置', + issueTitle: '建立当前界面的issues', + issueButton: '新建issues', + }, + appTreePicker: { + placeholder: '请选择...', + }, + dateRange: { + startText: '保险期限 : 自', + endText: '日 24 时 止', + startPlaceholder: '开始日期', + rangeSeparatorr: ' 0 时起 至', + endPlaceholder: '结束日期', + }, + dropDownList: { + placeholder: '请选择...', + }, + dropDownListDynamic: { + placeholder: '请选择...', + }, + dropDownListMpicker: { + placeholder: '请选择...', + }, + login: { + error: '错误', + caption: '欢迎登录', + placeholder1:'用户名', + placeholder2:'密码', + name: '登录', + reset:'重置', + other:'其他登录方式', + tip: '输入用户名和密码', + warning1:'qq授权登录暂未支持', + warning2:'微信授权登录暂未支持', + loginname: { + placeholder: '请输入用户名', + message: '用户名不能为空', + }, + password: { + placeholder: '请输入密码', + message: '密码不能为空', + }, + loginfailed: '登录失败', + }, + appUser: { + name: '系统管理员', + logout: '退出登录', + surelogout: '确认要退出登录?', + changepwd: "修改密码", + }, + appTheme: { + caption: { + theme: '主题', + font: '字体', + }, + fontFamilys: { + MicrosoftYaHei: '微软雅黑', + SimHei: '黑体', + YouYuan: '幼圆', + }, + }, + appFormGroup: { + hide: '隐藏字段', + showMore: '显示更多字段', + }, + appUpdatePassword: { + oldPwd: '原密码', + newPwd: '新密码', + confirmPwd: '确认密码', + sure: '确认修改', + oldPwdErr: '原密码不能为空!', + newPwdErr: '新密码不能为空!', + confirmPwdErr: '两次输入密码不一致!', + }, + appAddressSelection: { + loadDataFail: '城市数据加载失败' + }, + appGroupSelect:{ + groupSelect:'分组选择', + }, + appImageUpload:{ + uploadFail:'上传失败' + }, + appOrgSelect:{ + loadFail:'加载数据失败' + }, + appTransfer:{ + title1:'未选择', + title2:'已选择', + }, + appWFApproval:{ + commit:'提交', + wait:'等待', + handle:'处理', + placeholder:'请输入内容', + end:'结束' + }, + contextMenuDrag:{ + allApp:'全部应用', + noFind:'未找到该应用' + }, + filterMode:{ + placeholder:'条件逻辑', + }, + filterTree:{ + title1:'添加条件', + title2:'添加组', + placeholder:'属性', + }, + iBizGroupPicker:{ + ok:'确认', + cancel:'取消', + }, + iBizGroupSelect:{ + groupSelect:'分组选择' + }, + tabPageExp:{ + more:'更多', + }, + uploadFile:{ + imgMsg:'将图片拖到这里替换', + localUpload:'本地上传', + or:'或', + imgMsg1:'从素材库选择' + } +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_en_US.ts new file mode 100644 index 0000000..d152e92 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_en_US.ts @@ -0,0 +1,13 @@ + +export default { + fields: { + eamapplystatemodellinename: "维护申请状态模型明细名称", + eamapplystatemodellineid: "维护申请状态模型明细标识", + updateman: "更新人", + updatedate: "更新时间", + createman: "建立人", + createdate: "建立时间", + eamapplystateid: "维护申请状态标识", + eamapplystatemodelid: "维护申请状态模型标识", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_zh_CN.ts new file mode 100644 index 0000000..4e2fb40 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply-state-model-line/eamapply-state-model-line_zh_CN.ts @@ -0,0 +1,12 @@ +export default { + fields: { + eamapplystatemodellinename: "维护申请状态模型明细名称", + eamapplystatemodellineid: "维护申请状态模型明细标识", + updateman: "更新人", + updatedate: "更新时间", + createman: "建立人", + createdate: "建立时间", + eamapplystateid: "维护申请状态标识", + eamapplystatemodelid: "维护申请状态模型标识", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_en_US.ts new file mode 100644 index 0000000..3d7deb1 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_en_US.ts @@ -0,0 +1,121 @@ + +export default { + fields: { + eamapplystateid: "维护申请状态标识", + eamapplystatename: "维护申请状态名称", + createdate: "建立时间", + createman: "建立人", + updateman: "更新人", + updatedate: "更新时间", + }, + views: { + gridview: { + caption: "维护申请状态", + title: "维护申请状态表格视图", + }, + editview: { + caption: "维护申请状态", + title: "维护申请状态编辑视图", + }, + }, + main_form: { + details: { + group1: "维护申请状态基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请状态标识", + srfmajortext: "维护申请状态名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamapplystateid: "维护申请状态标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem20: { + caption: "其它", + tip: "其它", + }, + tbitem24: { + caption: "Export Data Model", + tip: "导出数据模型", + }, + tbitem25: { + caption: "数据导入", + tip: "数据导入", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + tbitem4: { + caption: "Help", + tip: "Help", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_zh_CN.ts new file mode 100644 index 0000000..ef795e9 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply-state/eamapply-state_zh_CN.ts @@ -0,0 +1,120 @@ +export default { + fields: { + eamapplystateid: "维护申请状态标识", + eamapplystatename: "维护申请状态名称", + createdate: "建立时间", + createman: "建立人", + updateman: "更新人", + updatedate: "更新时间", + }, + views: { + gridview: { + caption: "维护申请状态", + title: "维护申请状态表格视图", + }, + editview: { + caption: "维护申请状态", + title: "维护申请状态编辑视图", + }, + }, + main_form: { + details: { + group1: "维护申请状态基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请状态标识", + srfmajortext: "维护申请状态名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamapplystateid: "维护申请状态标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem20: { + caption: "其它", + tip: "其它", + }, + tbitem24: { + caption: "导出数据模型", + tip: "导出数据模型", + }, + tbitem25: { + caption: "数据导入", + tip: "数据导入", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + tbitem4: { + caption: "帮助", + tip: "帮助", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_en_US.ts new file mode 100644 index 0000000..1ccdfde --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_en_US.ts @@ -0,0 +1,122 @@ + +export default { + fields: { + eamapplytypeid: "维护申请类型标识", + eamapplytypename: "维护申请类型名称", + updatedate: "更新时间", + updateman: "更新人", + createdate: "建立时间", + createman: "建立人", + eamapplystatemodelid: "维护申请状态模型标识", + description: "描述", + }, + views: { + editview: { + caption: "维护申请类型", + title: "维护申请类型编辑", + }, + pickupgridview: { + caption: "维护申请类型", + title: "维护申请类型选择表格视图", + }, + pickupview: { + caption: "维护申请类型", + title: "维护申请类型数据选择视图", + }, + gridview: { + caption: "维护申请类型", + title: "维护申请类型信息", + }, + }, + main_form: { + details: { + group1: "维护申请类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请类型标识", + srfmajortext: "维护申请类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamapplytypeid: "维护申请类型标识", + eamapplytypename: "维护申请类型名称", + description: "描述", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamapplytypeid: "维护申请类型标识", + eamapplytypename: "维护申请类型名称", + description: "描述", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_zh_CN.ts new file mode 100644 index 0000000..100a2d3 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply-type/eamapply-type_zh_CN.ts @@ -0,0 +1,121 @@ +export default { + fields: { + eamapplytypeid: "维护申请类型标识", + eamapplytypename: "维护申请类型名称", + updatedate: "更新时间", + updateman: "更新人", + createdate: "建立时间", + createman: "建立人", + eamapplystatemodelid: "维护申请状态模型标识", + description: "描述", + }, + views: { + editview: { + caption: "维护申请类型", + title: "维护申请类型编辑", + }, + pickupgridview: { + caption: "维护申请类型", + title: "维护申请类型选择表格视图", + }, + pickupview: { + caption: "维护申请类型", + title: "维护申请类型数据选择视图", + }, + gridview: { + caption: "维护申请类型", + title: "维护申请类型信息", + }, + }, + main_form: { + details: { + group1: "维护申请类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请类型标识", + srfmajortext: "维护申请类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamapplytypeid: "维护申请类型标识", + eamapplytypename: "维护申请类型名称", + description: "描述", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamapplytypeid: "维护申请类型标识", + eamapplytypename: "维护申请类型名称", + description: "描述", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_en_US.ts new file mode 100644 index 0000000..999db9d --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_en_US.ts @@ -0,0 +1,228 @@ + +export default { + fields: { + updateman: "更新人", + eamapplyid: "维护申请标识", + createman: "建立人", + eamapplyname: "维护申请名称", + createdate: "建立时间", + updatedate: "更新时间", + eamapplytypeid: "维护申请类型标识", + eamlocationid: "功能位置标识", + assetid: "资产标识", + description: "描述", + begintime: "希望开始时间", + endtime: "希望结束时间", + assetname: "资产", + eamlocationname: "功能位置", + eamapplytypename: "维护申请类型", + applynumber: "维护申请编号", + eamservicelevelid: "服务等级标识", + eamservicelevelname: "服务等级", + }, + views: { + info_mainview: { + caption: "维护申请", + title: "维护申请主信息", + }, + assetapplygridview: { + caption: "维护申请", + title: "维护申请信息", + }, + gridview: { + caption: "维护申请", + title: "维护申请信息", + }, + summaryview: { + caption: "维护申请", + title: "维护申请主信息看板", + }, + infoview: { + caption: "维护申请", + title: "维护申请信息", + }, + quickcreateview: { + caption: "维护申请", + title: "快速新建", + }, + }, + ef_001_form: { + details: { + group1: "维护申请基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请标识", + srfmajortext: "维护申请名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + assetname: "资产", + eamlocationname: "功能位置", + eamlocationid: "功能位置标识", + eamapplyid: "维护申请标识", + assetid: "资产标识", + eamapplytypeid: "维护申请类型标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请标识", + srfmajortext: "维护申请名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + eamservicelevelname: "服务等级", + begintime: "希望开始时间", + endtime: "希望结束时间", + description: "描述", + assetname: "资产", + eamlocationname: "功能位置", + eamlocationid: "功能位置标识", + eamapplyid: "维护申请标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + grid_001_grid: { + columns: { + assetname: "资产", + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + eamlocationname: "功能位置", + begintime: "希望开始时间", + endtime: "希望结束时间", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + assetname: "资产", + eamlocationname: "功能位置", + begintime: "希望开始时间", + endtime: "希望结束时间", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + assetapplygridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_zh_CN.ts new file mode 100644 index 0000000..17ae9c4 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamapply/eamapply_zh_CN.ts @@ -0,0 +1,227 @@ +export default { + fields: { + updateman: "更新人", + eamapplyid: "维护申请标识", + createman: "建立人", + eamapplyname: "维护申请名称", + createdate: "建立时间", + updatedate: "更新时间", + eamapplytypeid: "维护申请类型标识", + eamlocationid: "功能位置标识", + assetid: "资产标识", + description: "描述", + begintime: "希望开始时间", + endtime: "希望结束时间", + assetname: "资产", + eamlocationname: "功能位置", + eamapplytypename: "维护申请类型", + applynumber: "维护申请编号", + eamservicelevelid: "服务等级标识", + eamservicelevelname: "服务等级", + }, + views: { + info_mainview: { + caption: "维护申请", + title: "维护申请主信息", + }, + assetapplygridview: { + caption: "维护申请", + title: "维护申请信息", + }, + gridview: { + caption: "维护申请", + title: "维护申请信息", + }, + summaryview: { + caption: "维护申请", + title: "维护申请主信息看板", + }, + infoview: { + caption: "维护申请", + title: "维护申请信息", + }, + quickcreateview: { + caption: "维护申请", + title: "快速新建", + }, + }, + ef_001_form: { + details: { + group1: "维护申请基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请标识", + srfmajortext: "维护申请名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + assetname: "资产", + eamlocationname: "功能位置", + eamlocationid: "功能位置标识", + eamapplyid: "维护申请标识", + assetid: "资产标识", + eamapplytypeid: "维护申请类型标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护申请标识", + srfmajortext: "维护申请名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + eamservicelevelname: "服务等级", + begintime: "希望开始时间", + endtime: "希望结束时间", + description: "描述", + assetname: "资产", + eamlocationname: "功能位置", + eamlocationid: "功能位置标识", + eamapplyid: "维护申请标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + grid_001_grid: { + columns: { + assetname: "资产", + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + eamlocationname: "功能位置", + begintime: "希望开始时间", + endtime: "希望结束时间", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + applynumber: "维护申请编号", + eamapplyname: "维护申请名称", + eamapplytypename: "维护申请类型", + assetname: "资产", + eamlocationname: "功能位置", + begintime: "希望开始时间", + endtime: "希望结束时间", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + assetapplygridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_en_US.ts new file mode 100644 index 0000000..2902ac6 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_en_US.ts @@ -0,0 +1,121 @@ + +export default { + fields: { + eamassettypeid: "资产类型标识", + eamsparepartsgroupid: "备件包标识", + eamassetpartsgroupid: "资产备件包标识", + eamassetpartsgroupname: "资产备件包名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + eamsparepartsgroupname: "备件包", + eamassettypename: "资产类型", + }, + views: { + assetpartsgridview: { + caption: "资产备件包", + title: "备件包相关资产", + }, + partsassetgridview: { + caption: "资产备件包", + title: "备件包相关资产", + }, + editview: { + caption: "资产备件包", + title: "资产备件包编辑视图", + }, + }, + main_form: { + details: { + group1: "资产备件包基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产备件包标识", + srfmajortext: "资产备件包名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamsparepartsgroupname: "备件包", + eamassettypename: "资产类型", + eamassetpartsgroupid: "资产备件包标识", + eamassettypeid: "资产类型标识", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamsparepartsgroupname: "备件包", + eamassettypename: "资产类型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + assetpartsgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + partsassetgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_zh_CN.ts new file mode 100644 index 0000000..26712d4 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-parts-group/eamasset-parts-group_zh_CN.ts @@ -0,0 +1,120 @@ +export default { + fields: { + eamassettypeid: "资产类型标识", + eamsparepartsgroupid: "备件包标识", + eamassetpartsgroupid: "资产备件包标识", + eamassetpartsgroupname: "资产备件包名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + eamsparepartsgroupname: "备件包", + eamassettypename: "资产类型", + }, + views: { + assetpartsgridview: { + caption: "资产备件包", + title: "备件包相关资产", + }, + partsassetgridview: { + caption: "资产备件包", + title: "备件包相关资产", + }, + editview: { + caption: "资产备件包", + title: "资产备件包编辑视图", + }, + }, + main_form: { + details: { + group1: "资产备件包基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产备件包标识", + srfmajortext: "资产备件包名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamsparepartsgroupname: "备件包", + eamassettypename: "资产类型", + eamassetpartsgroupid: "资产备件包标识", + eamassettypeid: "资产类型标识", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamsparepartsgroupname: "备件包", + eamassettypename: "资产类型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + assetpartsgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + partsassetgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_en_US.ts new file mode 100644 index 0000000..f70c72e --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_en_US.ts @@ -0,0 +1,109 @@ + +export default { + fields: { + createman: "建立人", + eamassetstatemodellinename: "资产状态模型明细名称", + eamassetstatemodellineid: "资产状态模型明细标识", + createdate: "建立时间", + updatedate: "更新时间", + updateman: "更新人", + eamassetstatemodelid: "资产状态模型标识", + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态", + eamassetstatemodelname: "资产状态模型", + }, + views: { + gridview: { + caption: "资产状态模型明细", + title: "资产状态模型明细表格视图", + }, + editview: { + caption: "资产状态模型明细", + title: "资产状态模型明细编辑视图", + }, + }, + main_form: { + details: { + group1: "资产状态模型明细基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产状态模型明细标识", + srfmajortext: "资产状态模型明细名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamassetstatemodelname: "资产状态模型", + eamassetstatename: "资产状态", + eamassetstatemodelid: "资产状态模型标识", + eamassetstateid: "资产状态标识", + eamassetstatemodellineid: "资产状态模型明细标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamassetstatemodelname: "资产状态模型", + eamassetstatename: "资产状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem9: { + caption: "行编辑", + tip: "行编辑", + }, + tbitem6: { + caption: "新建行", + tip: "新建行", + }, + deuiaction1: { + caption: "保存行", + tip: "保存行", + }, + tbitem23: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_zh_CN.ts new file mode 100644 index 0000000..0a46d2b --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model-line/eamasset-state-model-line_zh_CN.ts @@ -0,0 +1,108 @@ +export default { + fields: { + createman: "建立人", + eamassetstatemodellinename: "资产状态模型明细名称", + eamassetstatemodellineid: "资产状态模型明细标识", + createdate: "建立时间", + updatedate: "更新时间", + updateman: "更新人", + eamassetstatemodelid: "资产状态模型标识", + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态", + eamassetstatemodelname: "资产状态模型", + }, + views: { + gridview: { + caption: "资产状态模型明细", + title: "资产状态模型明细表格视图", + }, + editview: { + caption: "资产状态模型明细", + title: "资产状态模型明细编辑视图", + }, + }, + main_form: { + details: { + group1: "资产状态模型明细基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产状态模型明细标识", + srfmajortext: "资产状态模型明细名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamassetstatemodelname: "资产状态模型", + eamassetstatename: "资产状态", + eamassetstatemodelid: "资产状态模型标识", + eamassetstateid: "资产状态标识", + eamassetstatemodellineid: "资产状态模型明细标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamassetstatemodelname: "资产状态模型", + eamassetstatename: "资产状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem9: { + caption: "行编辑", + tip: "行编辑", + }, + tbitem6: { + caption: "新建行", + tip: "新建行", + }, + deuiaction1: { + caption: "保存行", + tip: "保存行", + }, + tbitem23: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_en_US.ts new file mode 100644 index 0000000..b05563a --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_en_US.ts @@ -0,0 +1,144 @@ + +export default { + fields: { + eamassetstatemodelid: "资产状态模型标识", + createman: "建立人", + createdate: "建立时间", + eamassetstatemodelname: "资产状态模型名称", + updatedate: "更新时间", + updateman: "更新人", + }, + views: { + gridview: { + caption: "资产状态模型", + title: "资产状态模型信息", + }, + editview: { + caption: "资产状态模型", + title: "资产状态模型编辑视图", + }, + pickupgridview: { + caption: "资产状态模型", + title: "资产状态模型选择表格视图", + }, + pickupview: { + caption: "资产状态模型", + title: "资产状态模型数据选择视图", + }, + }, + main_form: { + details: { + group1: "基本信息", + druipart1: "", + grouppanel1: "选中的资产状态", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产状态模型标识", + srfmajortext: "资产状态模型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamassetstatemodelid: "资产状态模型标识", + eamassetstatemodelname: "资产状态模型名称", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamassetstatemodelid: "资产状态模型标识", + eamassetstatemodelname: "资产状态模型名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem20: { + caption: "其它", + tip: "其它", + }, + tbitem24: { + caption: "Export Data Model", + tip: "导出数据模型", + }, + tbitem25: { + caption: "数据导入", + tip: "数据导入", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + tbitem4: { + caption: "Help", + tip: "Help", + }, + }, + editviewtoolbar_toolbar: { + tbitem10: { + caption: "Save", + tip: "Save", + }, + tbitem18: { + caption: "-", + tip: "", + }, + tbitem11: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem19: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_zh_CN.ts new file mode 100644 index 0000000..1b61436 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-state-model/eamasset-state-model_zh_CN.ts @@ -0,0 +1,143 @@ +export default { + fields: { + eamassetstatemodelid: "资产状态模型标识", + createman: "建立人", + createdate: "建立时间", + eamassetstatemodelname: "资产状态模型名称", + updatedate: "更新时间", + updateman: "更新人", + }, + views: { + gridview: { + caption: "资产状态模型", + title: "资产状态模型信息", + }, + editview: { + caption: "资产状态模型", + title: "资产状态模型编辑视图", + }, + pickupgridview: { + caption: "资产状态模型", + title: "资产状态模型选择表格视图", + }, + pickupview: { + caption: "资产状态模型", + title: "资产状态模型数据选择视图", + }, + }, + main_form: { + details: { + group1: "基本信息", + druipart1: "", + grouppanel1: "选中的资产状态", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产状态模型标识", + srfmajortext: "资产状态模型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamassetstatemodelid: "资产状态模型标识", + eamassetstatemodelname: "资产状态模型名称", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamassetstatemodelid: "资产状态模型标识", + eamassetstatemodelname: "资产状态模型名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem20: { + caption: "其它", + tip: "其它", + }, + tbitem24: { + caption: "导出数据模型", + tip: "导出数据模型", + }, + tbitem25: { + caption: "数据导入", + tip: "数据导入", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + tbitem4: { + caption: "帮助", + tip: "帮助", + }, + }, + editviewtoolbar_toolbar: { + tbitem10: { + caption: "保存", + tip: "保存", + }, + tbitem18: { + caption: "-", + tip: "", + }, + tbitem11: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem19: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_en_US.ts new file mode 100644 index 0000000..827caa3 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_en_US.ts @@ -0,0 +1,121 @@ + +export default { + fields: { + createdate: "建立时间", + updateman: "更新人", + createman: "建立人", + eamassetstateid: "资产状态标识", + updatedate: "更新时间", + eamassetstatename: "资产状态名称", + available: "是否有效", + }, + views: { + gridview: { + caption: "资产状态", + title: "资产状态信息", + }, + editview: { + caption: "资产状态", + title: "资产状态信息", + }, + pickupgridview: { + caption: "资产状态", + title: "资产状态选择表格视图", + }, + pickupview: { + caption: "资产状态", + title: "资产状态数据选择视图", + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "配置信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产状态标识", + srfmajortext: "资产状态名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态名称", + available: "是否有效", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_zh_CN.ts new file mode 100644 index 0000000..b646ac6 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-state/eamasset-state_zh_CN.ts @@ -0,0 +1,120 @@ +export default { + fields: { + createdate: "建立时间", + updateman: "更新人", + createman: "建立人", + eamassetstateid: "资产状态标识", + updatedate: "更新时间", + eamassetstatename: "资产状态名称", + available: "是否有效", + }, + views: { + gridview: { + caption: "资产状态", + title: "资产状态信息", + }, + editview: { + caption: "资产状态", + title: "资产状态信息", + }, + pickupgridview: { + caption: "资产状态", + title: "资产状态选择表格视图", + }, + pickupview: { + caption: "资产状态", + title: "资产状态数据选择视图", + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "配置信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产状态标识", + srfmajortext: "资产状态名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态名称", + available: "是否有效", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_en_US.ts new file mode 100644 index 0000000..d8afee7 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_en_US.ts @@ -0,0 +1,160 @@ + +export default { + fields: { + createman: "建立人", + eamassettypename: "资产类型名称", + eamassettypeid: "资产类型标识", + updatedate: "更新时间", + updateman: "更新人", + createdate: "建立时间", + eamassetstatemodelid: "资产状态模型标识", + eamassetstatemodelname: "资产状态模型", + assettypenumber: "资产类型编号", + description: "描述", + }, + views: { + infoview: { + caption: "资产类型", + title: "资产类型信息", + }, + info_mainview: { + caption: "资产类型", + title: "资产类型主信息", + }, + pickupgridview: { + caption: "资产类型", + title: "资产类型选择表格视图", + }, + pickupview: { + caption: "资产类型", + title: "资产类型数据选择视图", + }, + gridview: { + caption: "资产类型", + title: "资产类型信息", + }, + editview: { + caption: "资产类型", + title: "资产类型信息", + }, + summaryview: { + caption: "资产类型", + title: "资产类型主信息看板", + }, + }, + if_001_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产类型标识", + srfmajortext: "资产类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assettypenumber: "资产类型编号", + eamassettypename: "资产类型名称", + eamassetstatemodelname: "资产状态模型", + description: "描述", + eamassettypeid: "资产类型标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "资产类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产类型标识", + srfmajortext: "资产类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assettypenumber: "资产类型编号", + eamassettypename: "资产类型名称", + eamassetstatemodelname: "资产状态模型", + description: "描述", + eamassetstatemodelid: "资产状态模型标识", + eamassettypeid: "资产类型标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + assettypenumber: "资产类型编号", + eamassettypename: "资产类型名称", + eamassetstatemodelname: "资产状态模型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_zh_CN.ts new file mode 100644 index 0000000..54388a7 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset-type/eamasset-type_zh_CN.ts @@ -0,0 +1,159 @@ +export default { + fields: { + createman: "建立人", + eamassettypename: "资产类型名称", + eamassettypeid: "资产类型标识", + updatedate: "更新时间", + updateman: "更新人", + createdate: "建立时间", + eamassetstatemodelid: "资产状态模型标识", + eamassetstatemodelname: "资产状态模型", + assettypenumber: "资产类型编号", + description: "描述", + }, + views: { + infoview: { + caption: "资产类型", + title: "资产类型信息", + }, + info_mainview: { + caption: "资产类型", + title: "资产类型主信息", + }, + pickupgridview: { + caption: "资产类型", + title: "资产类型选择表格视图", + }, + pickupview: { + caption: "资产类型", + title: "资产类型数据选择视图", + }, + gridview: { + caption: "资产类型", + title: "资产类型信息", + }, + editview: { + caption: "资产类型", + title: "资产类型信息", + }, + summaryview: { + caption: "资产类型", + title: "资产类型主信息看板", + }, + }, + if_001_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产类型标识", + srfmajortext: "资产类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assettypenumber: "资产类型编号", + eamassettypename: "资产类型名称", + eamassetstatemodelname: "资产状态模型", + description: "描述", + eamassettypeid: "资产类型标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "资产类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产类型标识", + srfmajortext: "资产类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assettypenumber: "资产类型编号", + eamassettypename: "资产类型名称", + eamassetstatemodelname: "资产状态模型", + description: "描述", + eamassetstatemodelid: "资产状态模型标识", + eamassettypeid: "资产类型标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + assettypenumber: "资产类型编号", + eamassettypename: "资产类型名称", + eamassetstatemodelname: "资产状态模型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_en_US.ts new file mode 100644 index 0000000..5a252d7 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_en_US.ts @@ -0,0 +1,350 @@ + +export default { + fields: { + assetid: "资产标识", + assetname: "资产名称", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + updateman: "更新人", + eamassettypeid: "资产类型标识", + eamlocationid: "功能位置标识", + passetid: "上级资产标识", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态", + passetname: "上级资产", + assetnumber: "资产编号", + description: "描述", + }, + views: { + treeexpview: { + caption: "资产", + title: "资产信息", + }, + editview: { + caption: "资产", + title: "资产信息编辑", + }, + summaryview: { + caption: "资产", + title: "资产数据看板视图", + }, + infoview: { + caption: "资产", + title: "资产信息", + }, + pickupview: { + caption: "资产", + title: "资产数据选择视图", + }, + info_mainview: { + caption: "资产", + title: "资产信息", + }, + quickcreateview: { + caption: "资产", + title: "资产快速新建视图", + }, + locationassetgridview: { + caption: "资产", + title: "资产信息", + }, + childgridview: { + caption: "资产", + title: "资产表格视图", + }, + pickupgridview: { + caption: "资产", + title: "资产选择表格视图", + }, + gridview: { + caption: "资产", + title: "资产信息", + }, + }, + info_main_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产标识", + srfmajortext: "资产名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamlocationid: "功能位置标识", + passetid: "上级资产标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产标识", + srfmajortext: "资产名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamassetstatename: "资产状态", + eamlocationid: "功能位置标识", + eamassettypeid: "资产类型标识", + eamassetstateid: "资产状态标识", + passetid: "上级资产标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + quickcreate_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产标识", + srfmajortext: "资产名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamlocationid: "功能位置标识", + eamassettypeid: "资产类型标识", + passetid: "上级资产标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + childgrid_grid: { + columns: { + passetname: "上级资产", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + eamassetstatename: "资产状态", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamassetstatename: "资产状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + n_assetnumber_like: "资产编号(文本包含(%))", + n_assetname_like: "资产名称(文本包含(%))", + n_eamassettypename_eq: "资产类型(等于(=))", + n_eamlocationname_eq: "功能位置(等于(=))", + n_eamlocationid_eq: "", + n_eamassettypeid_eq: "", + }, + uiactions: { + }, + }, + childgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + infoviewtoolbar_toolbar: { + tbitem15_openmaineditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + locationassetgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_zh_CN.ts new file mode 100644 index 0000000..c50ee78 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamasset/eamasset_zh_CN.ts @@ -0,0 +1,349 @@ +export default { + fields: { + assetid: "资产标识", + assetname: "资产名称", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + updateman: "更新人", + eamassettypeid: "资产类型标识", + eamlocationid: "功能位置标识", + passetid: "上级资产标识", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + eamassetstateid: "资产状态标识", + eamassetstatename: "资产状态", + passetname: "上级资产", + assetnumber: "资产编号", + description: "描述", + }, + views: { + treeexpview: { + caption: "资产", + title: "资产信息", + }, + editview: { + caption: "资产", + title: "资产信息编辑", + }, + summaryview: { + caption: "资产", + title: "资产数据看板视图", + }, + infoview: { + caption: "资产", + title: "资产信息", + }, + pickupview: { + caption: "资产", + title: "资产数据选择视图", + }, + info_mainview: { + caption: "资产", + title: "资产信息", + }, + quickcreateview: { + caption: "资产", + title: "资产快速新建视图", + }, + locationassetgridview: { + caption: "资产", + title: "资产信息", + }, + childgridview: { + caption: "资产", + title: "资产表格视图", + }, + pickupgridview: { + caption: "资产", + title: "资产选择表格视图", + }, + gridview: { + caption: "资产", + title: "资产信息", + }, + }, + info_main_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产标识", + srfmajortext: "资产名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamlocationid: "功能位置标识", + passetid: "上级资产标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产标识", + srfmajortext: "资产名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamassetstatename: "资产状态", + eamlocationid: "功能位置标识", + eamassettypeid: "资产类型标识", + eamassetstateid: "资产状态标识", + passetid: "上级资产标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + quickcreate_form: { + details: { + group1: "基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "资产标识", + srfmajortext: "资产名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamlocationid: "功能位置标识", + eamassettypeid: "资产类型标识", + passetid: "上级资产标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + childgrid_grid: { + columns: { + passetname: "上级资产", + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + eamassetstatename: "资产状态", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + assetnumber: "资产编号", + assetname: "资产名称", + eamassettypename: "资产类型", + eamlocationname: "功能位置", + passetname: "上级资产", + eamassetstatename: "资产状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + n_assetnumber_like: "资产编号(文本包含(%))", + n_assetname_like: "资产名称(文本包含(%))", + n_eamassettypename_eq: "资产类型(等于(=))", + n_eamlocationname_eq: "功能位置(等于(=))", + n_eamlocationid_eq: "", + n_eamassettypeid_eq: "", + }, + uiactions: { + }, + }, + childgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + infoviewtoolbar_toolbar: { + tbitem15_openmaineditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + locationassetgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_en_US.ts new file mode 100644 index 0000000..8393179 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_en_US.ts @@ -0,0 +1,123 @@ + +export default { + fields: { + eamdocumenttypename: "文档类型名称", + eamdocumenttypeid: "文档类型标识", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + createman: "建立人", + peamdocumenttypeid: "上级文档类型标识", + peamdocumenttypename: "上级文档类型", + }, + views: { + gridview: { + caption: "文档类型", + title: "文档类型信息", + }, + pickupgridview: { + caption: "文档类型", + title: "文档类型选择表格视图", + }, + editview: { + caption: "文档类型", + title: "文档类型编辑", + }, + pickupview: { + caption: "文档类型", + title: "文档类型数据选择视图", + }, + }, + main_form: { + details: { + group1: "文档类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "文档类型标识", + srfmajortext: "文档类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamdocumenttypeid: "文档类型标识", + eamdocumenttypename: "文档类型名称", + peamdocumenttypename: "上级文档类型", + peamdocumenttypeid: "上级文档类型标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamdocumenttypeid: "文档类型标识", + eamdocumenttypename: "文档类型名称", + peamdocumenttypename: "上级文档类型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_zh_CN.ts new file mode 100644 index 0000000..7dc48a6 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamdocument-type/eamdocument-type_zh_CN.ts @@ -0,0 +1,122 @@ +export default { + fields: { + eamdocumenttypename: "文档类型名称", + eamdocumenttypeid: "文档类型标识", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + createman: "建立人", + peamdocumenttypeid: "上级文档类型标识", + peamdocumenttypename: "上级文档类型", + }, + views: { + gridview: { + caption: "文档类型", + title: "文档类型信息", + }, + pickupgridview: { + caption: "文档类型", + title: "文档类型选择表格视图", + }, + editview: { + caption: "文档类型", + title: "文档类型编辑", + }, + pickupview: { + caption: "文档类型", + title: "文档类型数据选择视图", + }, + }, + main_form: { + details: { + group1: "文档类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "文档类型标识", + srfmajortext: "文档类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamdocumenttypeid: "文档类型标识", + eamdocumenttypename: "文档类型名称", + peamdocumenttypename: "上级文档类型", + peamdocumenttypeid: "上级文档类型标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamdocumenttypeid: "文档类型标识", + eamdocumenttypename: "文档类型名称", + peamdocumenttypename: "上级文档类型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_en_US.ts new file mode 100644 index 0000000..51442da --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_en_US.ts @@ -0,0 +1,186 @@ + +export default { + fields: { + createdate: "建立时间", + eamdocumentname: "文档名称", + createman: "建立人", + eamdocumentid: "文档标识", + updatedate: "更新时间", + updateman: "更新人", + eamassettypeid: "资产类型标识", + eamassettypename: "资产类型", + documentnumber: "文档编号", + eamdocumenttypeid: "文档类型标识", + eamdocumenttypename: "文档类型", + content: "内容", + docfile: "文件", + }, + views: { + assettypedocgridview: { + caption: "文档", + title: "文档表格视图", + }, + editview: { + caption: "文档", + title: "文档编辑视图", + }, + gridview: { + caption: "文档", + title: "文档信息", + }, + }, + main_form: { + details: { + group1: "文档基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "文档标识", + srfmajortext: "文档名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + documentnumber: "文档编号", + eamdocumentname: "文档名称", + eamdocumenttypename: "文档类型", + content: "内容", + docfile: "文件", + eamdocumenttypeid: "文档类型标识", + eamdocumentid: "文档标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + documentnumber: "文档编号", + eamdocumentname: "文档名称", + eamdocumenttypename: "文档类型", + eamassettypename: "资产类型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + assettypedocgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem20: { + caption: "其它", + tip: "其它", + }, + tbitem24: { + caption: "Export Data Model", + tip: "导出数据模型", + }, + tbitem25: { + caption: "数据导入", + tip: "数据导入", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + tbitem4: { + caption: "Help", + tip: "Help", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_zh_CN.ts new file mode 100644 index 0000000..69db85c --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamdocument/eamdocument_zh_CN.ts @@ -0,0 +1,185 @@ +export default { + fields: { + createdate: "建立时间", + eamdocumentname: "文档名称", + createman: "建立人", + eamdocumentid: "文档标识", + updatedate: "更新时间", + updateman: "更新人", + eamassettypeid: "资产类型标识", + eamassettypename: "资产类型", + documentnumber: "文档编号", + eamdocumenttypeid: "文档类型标识", + eamdocumenttypename: "文档类型", + content: "内容", + docfile: "文件", + }, + views: { + assettypedocgridview: { + caption: "文档", + title: "文档表格视图", + }, + editview: { + caption: "文档", + title: "文档编辑视图", + }, + gridview: { + caption: "文档", + title: "文档信息", + }, + }, + main_form: { + details: { + group1: "文档基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "文档标识", + srfmajortext: "文档名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + documentnumber: "文档编号", + eamdocumentname: "文档名称", + eamdocumenttypename: "文档类型", + content: "内容", + docfile: "文件", + eamdocumenttypeid: "文档类型标识", + eamdocumentid: "文档标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + documentnumber: "文档编号", + eamdocumentname: "文档名称", + eamdocumenttypename: "文档类型", + eamassettypename: "资产类型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + assettypedocgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem20: { + caption: "其它", + tip: "其它", + }, + tbitem24: { + caption: "导出数据模型", + tip: "导出数据模型", + }, + tbitem25: { + caption: "数据导入", + tip: "数据导入", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + tbitem4: { + caption: "帮助", + tip: "帮助", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_en_US.ts new file mode 100644 index 0000000..54a52ec --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_en_US.ts @@ -0,0 +1,109 @@ + +export default { + fields: { + updateman: "更新人", + createdate: "建立时间", + eamlocationstatemodellineid: "功能位置状态模型明细标识", + createman: "建立人", + eamlocationstatemodellinename: "功能位置状态模型明细名称", + updatedate: "更新时间", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstateid: "功能位置状态标识", + eamlocationstatename: "功能位置状态", + eamlocationstatemodelname: "功能位置状态模型", + }, + views: { + editview: { + caption: "功能位置状态模型明细", + title: "功能位置状态模型明细编辑视图", + }, + gridview: { + caption: "功能位置状态模型明细", + title: "功能位置状态模型明细表格视图", + }, + }, + main_form: { + details: { + group1: "功能位置状态模型明细基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置状态模型明细标识", + srfmajortext: "功能位置状态模型明细名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatename: "功能位置状态", + eamlocationstatemodelname: "功能位置状态模型", + eamlocationstateid: "功能位置状态标识", + eamlocationstatemodellineid: "功能位置状态模型明细标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationstatemodelname: "功能位置状态模型", + eamlocationstatename: "功能位置状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem9: { + caption: "行编辑", + tip: "行编辑", + }, + tbitem6: { + caption: "新建行", + tip: "新建行", + }, + deuiaction1: { + caption: "保存行", + tip: "保存行", + }, + tbitem23: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_zh_CN.ts new file mode 100644 index 0000000..d2988de --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model-line/eamlocation-state-model-line_zh_CN.ts @@ -0,0 +1,108 @@ +export default { + fields: { + updateman: "更新人", + createdate: "建立时间", + eamlocationstatemodellineid: "功能位置状态模型明细标识", + createman: "建立人", + eamlocationstatemodellinename: "功能位置状态模型明细名称", + updatedate: "更新时间", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstateid: "功能位置状态标识", + eamlocationstatename: "功能位置状态", + eamlocationstatemodelname: "功能位置状态模型", + }, + views: { + editview: { + caption: "功能位置状态模型明细", + title: "功能位置状态模型明细编辑视图", + }, + gridview: { + caption: "功能位置状态模型明细", + title: "功能位置状态模型明细表格视图", + }, + }, + main_form: { + details: { + group1: "功能位置状态模型明细基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置状态模型明细标识", + srfmajortext: "功能位置状态模型明细名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatename: "功能位置状态", + eamlocationstatemodelname: "功能位置状态模型", + eamlocationstateid: "功能位置状态标识", + eamlocationstatemodellineid: "功能位置状态模型明细标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationstatemodelname: "功能位置状态模型", + eamlocationstatename: "功能位置状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem9: { + caption: "行编辑", + tip: "行编辑", + }, + tbitem6: { + caption: "新建行", + tip: "新建行", + }, + deuiaction1: { + caption: "保存行", + tip: "保存行", + }, + tbitem23: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_en_US.ts new file mode 100644 index 0000000..80aae84 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_en_US.ts @@ -0,0 +1,132 @@ + +export default { + fields: { + createdate: "建立时间", + createman: "建立人", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型名称", + updateman: "更新人", + updatedate: "更新时间", + }, + views: { + pickupview: { + caption: "功能位置状态模型", + title: "功能位置状态模型数据选择视图", + }, + editview: { + caption: "功能位置状态模型", + title: "功能位置状态模型信息", + }, + gridview: { + caption: "功能位置状态模型", + title: "功能位置状态模型信息", + }, + pickupgridview: { + caption: "功能位置状态模型", + title: "功能位置状态模型选择表格视图", + }, + }, + main_form: { + details: { + group1: "基本信息", + druipart1: "", + grouppanel1: "选中功能位置状态", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置状态模型标识", + srfmajortext: "功能位置状态模型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型名称", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem10: { + caption: "Save", + tip: "Save", + }, + tbitem18: { + caption: "-", + tip: "", + }, + tbitem11: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem19: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_zh_CN.ts new file mode 100644 index 0000000..ae179c8 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state-model/eamlocation-state-model_zh_CN.ts @@ -0,0 +1,131 @@ +export default { + fields: { + createdate: "建立时间", + createman: "建立人", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型名称", + updateman: "更新人", + updatedate: "更新时间", + }, + views: { + pickupview: { + caption: "功能位置状态模型", + title: "功能位置状态模型数据选择视图", + }, + editview: { + caption: "功能位置状态模型", + title: "功能位置状态模型信息", + }, + gridview: { + caption: "功能位置状态模型", + title: "功能位置状态模型信息", + }, + pickupgridview: { + caption: "功能位置状态模型", + title: "功能位置状态模型选择表格视图", + }, + }, + main_form: { + details: { + group1: "基本信息", + druipart1: "", + grouppanel1: "选中功能位置状态", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置状态模型标识", + srfmajortext: "功能位置状态模型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型名称", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem10: { + caption: "保存", + tip: "保存", + }, + tbitem18: { + caption: "-", + tip: "", + }, + tbitem11: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem19: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_en_US.ts new file mode 100644 index 0000000..75d78be --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_en_US.ts @@ -0,0 +1,159 @@ + +export default { + fields: { + createdate: "建立时间", + updatedate: "更新时间", + eamlocationstateid: "功能位置状态标识", + updateman: "更新人", + createman: "建立人", + eamlocationstatename: "功能位置状态名称", + available: "是否有效", + setup: "是否创建资产", + }, + views: { + editview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + listexpview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + pickupview: { + caption: "功能位置状态", + title: "功能位置状态数据选择视图", + }, + pickupgridview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + gridview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "配置信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置状态标识", + srfmajortext: "功能位置状态名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationstateid: "功能位置状态标识", + eamlocationstatename: "功能位置状态名称", + available: "是否有效", + setup: "是否创建资产", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationstateid: "功能位置状态标识", + eamlocationstatename: "功能位置状态名称", + available: "是否有效", + setup: "是否创建资产", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + listexpviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator1: { + caption: "", + tip: "", + }, + deuiaction1: { + caption: "Save", + tip: "Save", + }, + tbitem23: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_zh_CN.ts new file mode 100644 index 0000000..4e221db --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-state/eamlocation-state_zh_CN.ts @@ -0,0 +1,158 @@ +export default { + fields: { + createdate: "建立时间", + updatedate: "更新时间", + eamlocationstateid: "功能位置状态标识", + updateman: "更新人", + createman: "建立人", + eamlocationstatename: "功能位置状态名称", + available: "是否有效", + setup: "是否创建资产", + }, + views: { + editview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + listexpview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + pickupview: { + caption: "功能位置状态", + title: "功能位置状态数据选择视图", + }, + pickupgridview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + gridview: { + caption: "功能位置状态", + title: "功能位置状态信息", + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "配置信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置状态标识", + srfmajortext: "功能位置状态名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationstateid: "功能位置状态标识", + eamlocationstatename: "功能位置状态名称", + available: "是否有效", + setup: "是否创建资产", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationstateid: "功能位置状态标识", + eamlocationstatename: "功能位置状态名称", + available: "是否有效", + setup: "是否创建资产", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + listexpviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator1: { + caption: "", + tip: "", + }, + deuiaction1: { + caption: "保存", + tip: "保存", + }, + tbitem23: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_en_US.ts new file mode 100644 index 0000000..70c5478 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_en_US.ts @@ -0,0 +1,124 @@ + +export default { + fields: { + eamlocationtypename: "功能位置类型名称", + createman: "建立人", + eamlocationtypeid: "功能位置类型标识", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型", + description: "描述", + }, + views: { + pickupview: { + caption: "功能位置类型", + title: "功能位置类型数据选择视图", + }, + gridview: { + caption: "功能位置类型", + title: "功能位置类型信息", + }, + pickupgridview: { + caption: "功能位置类型", + title: "功能位置类型选择表格视图", + }, + editview: { + caption: "功能位置类型", + title: "功能位置类型信息", + }, + }, + main_form: { + details: { + group1: "功能位置类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置类型标识", + srfmajortext: "功能位置类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationtypeid: "功能位置类型标识", + eamlocationtypename: "功能位置类型名称", + eamlocationstatemodelname: "功能位置状态模型", + eamlocationstatemodelid: "功能位置状态模型标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationtypeid: "功能位置类型标识", + eamlocationtypename: "功能位置类型名称", + eamlocationstatemodelname: "功能位置状态模型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_zh_CN.ts new file mode 100644 index 0000000..4665354 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation-type/eamlocation-type_zh_CN.ts @@ -0,0 +1,123 @@ +export default { + fields: { + eamlocationtypename: "功能位置类型名称", + createman: "建立人", + eamlocationtypeid: "功能位置类型标识", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + eamlocationstatemodelid: "功能位置状态模型标识", + eamlocationstatemodelname: "功能位置状态模型", + description: "描述", + }, + views: { + pickupview: { + caption: "功能位置类型", + title: "功能位置类型数据选择视图", + }, + gridview: { + caption: "功能位置类型", + title: "功能位置类型信息", + }, + pickupgridview: { + caption: "功能位置类型", + title: "功能位置类型选择表格视图", + }, + editview: { + caption: "功能位置类型", + title: "功能位置类型信息", + }, + }, + main_form: { + details: { + group1: "功能位置类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置类型标识", + srfmajortext: "功能位置类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamlocationtypeid: "功能位置类型标识", + eamlocationtypename: "功能位置类型名称", + eamlocationstatemodelname: "功能位置状态模型", + eamlocationstatemodelid: "功能位置状态模型标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamlocationtypeid: "功能位置类型标识", + eamlocationtypename: "功能位置类型名称", + eamlocationstatemodelname: "功能位置状态模型", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_en_US.ts new file mode 100644 index 0000000..f00a545 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_en_US.ts @@ -0,0 +1,345 @@ + +export default { + fields: { + eamlocationid: "功能位置标识", + createman: "建立人", + createdate: "建立时间", + eamlocationname: "功能位置名称", + updateman: "更新人", + updatedate: "更新时间", + eamlocationtypeid: "功能位置类型标识", + peamlocationid: "上级功能位置标识", + eamlocationstateid: "功能位置状态标识", + peamlocationname: "上级位置", + eamlocationtypename: "功能位置类型", + eamlocationstatename: "功能位置状态", + locationnumber: "功能位置编号", + description: "描述", + }, + views: { + treeexpview: { + caption: "功能位置", + title: "功能位置信息", + }, + editview: { + caption: "功能位置", + title: "功能位置编辑", + }, + treechildgridview: { + caption: "功能位置", + title: "功能位置信息", + }, + pickupview: { + caption: "功能位置", + title: "功能位置数据选择视图", + }, + info_mainview: { + caption: "功能位置", + title: "功能位置编辑视图", + }, + childgridview: { + caption: "功能位置", + title: "功能位置表格视图", + }, + summaryview: { + caption: "功能位置", + title: "功能位置数据看板视图", + }, + infoview: { + caption: "功能位置", + title: "功能位置信息", + }, + gridview: { + caption: "功能位置", + title: "功能位置信息", + }, + pickupgridview: { + caption: "功能位置", + title: "功能位置选择表格视图", + }, + quickcreateview: { + caption: "功能位置", + title: "快速新建", + }, + }, + info_main_form: { + details: { + group1: "功能位置基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置标识", + srfmajortext: "功能位置名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + peamlocationname: "上级位置", + eamlocationid: "功能位置标识", + peamlocationid: "上级功能位置标识", + }, + uiactions: { + }, + }, + edit_main_form: { + details: { + group1: "功能位置基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置标识", + srfmajortext: "功能位置名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + peamlocationname: "上级位置", + eamlocationid: "功能位置标识", + peamlocationid: "上级功能位置标识", + eamlocationtypeid: "功能位置类型标识", + }, + uiactions: { + }, + }, + ef_001_form: { + details: { + group1: "功能位置基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置标识", + srfmajortext: "功能位置名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + eamlocationid: "功能位置标识", + eamlocationtypeid: "功能位置类型标识", + }, + uiactions: { + }, + }, + childgrid_grid: { + columns: { + peamlocationname: "上级位置", + eamlocationid: "功能位置标识", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + peamlocationname: "上级位置", + eamlocationstatename: "功能位置状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + childgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + infoviewtoolbar_toolbar: { + tbitem15_openeditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + treechildgridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + locationassettree_treeview: { + nodes: { + all: "全部资产", + root: "默认根节点", + }, + uiactions: { + }, + }, + locationtree_treeview: { + nodes: { + root: "默认根节点", + all: "全部功能位置", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_zh_CN.ts new file mode 100644 index 0000000..391fc2b --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamlocation/eamlocation_zh_CN.ts @@ -0,0 +1,344 @@ +export default { + fields: { + eamlocationid: "功能位置标识", + createman: "建立人", + createdate: "建立时间", + eamlocationname: "功能位置名称", + updateman: "更新人", + updatedate: "更新时间", + eamlocationtypeid: "功能位置类型标识", + peamlocationid: "上级功能位置标识", + eamlocationstateid: "功能位置状态标识", + peamlocationname: "上级位置", + eamlocationtypename: "功能位置类型", + eamlocationstatename: "功能位置状态", + locationnumber: "功能位置编号", + description: "描述", + }, + views: { + treeexpview: { + caption: "功能位置", + title: "功能位置信息", + }, + editview: { + caption: "功能位置", + title: "功能位置编辑", + }, + treechildgridview: { + caption: "功能位置", + title: "功能位置信息", + }, + pickupview: { + caption: "功能位置", + title: "功能位置数据选择视图", + }, + info_mainview: { + caption: "功能位置", + title: "功能位置编辑视图", + }, + childgridview: { + caption: "功能位置", + title: "功能位置表格视图", + }, + summaryview: { + caption: "功能位置", + title: "功能位置数据看板视图", + }, + infoview: { + caption: "功能位置", + title: "功能位置信息", + }, + gridview: { + caption: "功能位置", + title: "功能位置信息", + }, + pickupgridview: { + caption: "功能位置", + title: "功能位置选择表格视图", + }, + quickcreateview: { + caption: "功能位置", + title: "快速新建", + }, + }, + info_main_form: { + details: { + group1: "功能位置基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置标识", + srfmajortext: "功能位置名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + peamlocationname: "上级位置", + eamlocationid: "功能位置标识", + peamlocationid: "上级功能位置标识", + }, + uiactions: { + }, + }, + edit_main_form: { + details: { + group1: "功能位置基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置标识", + srfmajortext: "功能位置名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + peamlocationname: "上级位置", + eamlocationid: "功能位置标识", + peamlocationid: "上级功能位置标识", + eamlocationtypeid: "功能位置类型标识", + }, + uiactions: { + }, + }, + ef_001_form: { + details: { + group1: "功能位置基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "功能位置标识", + srfmajortext: "功能位置名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + eamlocationid: "功能位置标识", + eamlocationtypeid: "功能位置类型标识", + }, + uiactions: { + }, + }, + childgrid_grid: { + columns: { + peamlocationname: "上级位置", + eamlocationid: "功能位置标识", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + locationnumber: "功能位置编号", + eamlocationname: "功能位置名称", + eamlocationtypename: "功能位置类型", + peamlocationname: "上级位置", + eamlocationstatename: "功能位置状态", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + childgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + infoviewtoolbar_toolbar: { + tbitem15_openeditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + treechildgridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + locationassettree_treeview: { + nodes: { + all: "全部资产", + root: "默认根节点", + }, + uiactions: { + }, + }, + locationtree_treeview: { + nodes: { + root: "默认根节点", + all: "全部功能位置", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_en_US.ts new file mode 100644 index 0000000..65a2ccc --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_en_US.ts @@ -0,0 +1,34 @@ + +export default { + fields: { + eammonitorpointid: "测点标识", + eammonitorpointname: "测点名称", + updateman: "更新人", + updatedate: "更新时间", + createdate: "建立时间", + createman: "建立人", + }, + views: { + pickupview: { + caption: "测点", + title: "测点数据选择视图", + }, + pickupgridview: { + caption: "测点", + title: "测点选择表格视图", + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_zh_CN.ts new file mode 100644 index 0000000..5ab83a7 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eammonitor-point/eammonitor-point_zh_CN.ts @@ -0,0 +1,33 @@ +export default { + fields: { + eammonitorpointid: "测点标识", + eammonitorpointname: "测点名称", + updateman: "更新人", + updatedate: "更新时间", + createdate: "建立时间", + createman: "建立人", + }, + views: { + pickupview: { + caption: "测点", + title: "测点数据选择视图", + }, + pickupgridview: { + caption: "测点", + title: "测点选择表格视图", + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_en_US.ts new file mode 100644 index 0000000..6d84a58 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_en_US.ts @@ -0,0 +1,12 @@ + +export default { + fields: { + eamplancdtid: "维护计划条件标识", + createdate: "建立时间", + updateman: "更新人", + eamplancdtname: "维护计划条件名称", + createman: "建立人", + updatedate: "更新时间", + eamplanid: "维护计划标识", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_zh_CN.ts new file mode 100644 index 0000000..fa924ff --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan-cdt/eamplan-cdt_zh_CN.ts @@ -0,0 +1,11 @@ +export default { + fields: { + eamplancdtid: "维护计划条件标识", + createdate: "建立时间", + updateman: "更新人", + eamplancdtname: "维护计划条件名称", + createman: "建立人", + updatedate: "更新时间", + eamplanid: "维护计划标识", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_en_US.ts new file mode 100644 index 0000000..755f63d --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_en_US.ts @@ -0,0 +1,135 @@ + +export default { + fields: { + eamplanlineid: "计划步骤标识", + createdate: "建立时间", + updatedate: "更新时间", + updateman: "更新人", + createman: "建立人", + eamplanlinename: "计划步骤名称", + eamplanid: "维护计划标识", + eamlocationid: "功能位置标识", + assetid: "资产标识", + sortnumber: "序号", + content: "内容", + eamplanname: "维护计划", + assetname: "资产", + eamlocationname: "功能位置", + eammonitorpointid: "测点标识", + eammonitorpointname: "测点", + }, + views: { + gridview: { + caption: "计划步骤", + title: "计划步骤表格视图", + }, + editview: { + caption: "计划步骤", + title: "计划步骤编辑", + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "计划步骤标识", + srfmajortext: "计划步骤名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + sortnumber: "序号", + eamplanlinename: "计划步骤名称", + eamplanname: "维护计划", + content: "内容", + assetname: "资产", + eamlocationname: "功能位置", + eammonitorpointname: "测点", + eamlocationid: "功能位置标识", + eammonitorpointid: "测点标识", + eamplanid: "维护计划标识", + eamplanlineid: "计划步骤标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + sortnumber: "序号", + eamplanlinename: "计划步骤名称", + eamplanname: "维护计划", + assetname: "资产", + eamlocationname: "功能位置", + content: "内容", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_zh_CN.ts new file mode 100644 index 0000000..1732186 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan-line/eamplan-line_zh_CN.ts @@ -0,0 +1,134 @@ +export default { + fields: { + eamplanlineid: "计划步骤标识", + createdate: "建立时间", + updatedate: "更新时间", + updateman: "更新人", + createman: "建立人", + eamplanlinename: "计划步骤名称", + eamplanid: "维护计划标识", + eamlocationid: "功能位置标识", + assetid: "资产标识", + sortnumber: "序号", + content: "内容", + eamplanname: "维护计划", + assetname: "资产", + eamlocationname: "功能位置", + eammonitorpointid: "测点标识", + eammonitorpointname: "测点", + }, + views: { + gridview: { + caption: "计划步骤", + title: "计划步骤表格视图", + }, + editview: { + caption: "计划步骤", + title: "计划步骤编辑", + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "计划步骤标识", + srfmajortext: "计划步骤名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + sortnumber: "序号", + eamplanlinename: "计划步骤名称", + eamplanname: "维护计划", + content: "内容", + assetname: "资产", + eamlocationname: "功能位置", + eammonitorpointname: "测点", + eamlocationid: "功能位置标识", + eammonitorpointid: "测点标识", + eamplanid: "维护计划标识", + eamplanlineid: "计划步骤标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + sortnumber: "序号", + eamplanlinename: "计划步骤名称", + eamplanname: "维护计划", + assetname: "资产", + eamlocationname: "功能位置", + content: "内容", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_en_US.ts new file mode 100644 index 0000000..5695bf2 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_en_US.ts @@ -0,0 +1,12 @@ + +export default { + fields: { + eamplanscheduleid: "维护计划时刻设置标识", + eamplanschedulename: "维护计划时刻设置名称", + createman: "建立人", + createdate: "建立时间", + updatedate: "更新时间", + updateman: "更新人", + eamplanid: "维护计划标识", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_zh_CN.ts new file mode 100644 index 0000000..ec18194 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan-schedule/eamplan-schedule_zh_CN.ts @@ -0,0 +1,11 @@ +export default { + fields: { + eamplanscheduleid: "维护计划时刻设置标识", + eamplanschedulename: "维护计划时刻设置名称", + createman: "建立人", + createdate: "建立时间", + updatedate: "更新时间", + updateman: "更新人", + eamplanid: "维护计划标识", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_en_US.ts new file mode 100644 index 0000000..168df49 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_en_US.ts @@ -0,0 +1,317 @@ + +export default { + fields: { + updatedate: "更新时间", + eamplanname: "维护计划名称", + createdate: "建立时间", + createman: "建立人", + updateman: "更新人", + eamplanid: "维护计划标识", + eamlocationid: "功能位置标识", + assetid: "资产标识", + assetname: "资产", + eamlocationname: "功能位置", + plannumber: "计划编号", + eammonitorpointid: "测点标识", + eammonitorpointname: "测点", + description: "描述", + mdate: "制定日期", + content: "内容", + }, + views: { + assetplangridview: { + caption: "维护计划", + title: "维护计划信息", + }, + infoview: { + caption: "维护计划", + title: "维护计划信息", + }, + summaryview: { + caption: "维护计划", + title: "维护计划主信息看板", + }, + editview: { + caption: "维护计划", + title: "维护计划编辑视图", + }, + info_mainview: { + caption: "维护计划", + title: "维护计划主信息", + }, + pickupgridview: { + caption: "维护计划", + title: "维护计划选择表格视图", + }, + quickcreateview: { + caption: "维护计划", + title: "快速新建", + }, + gridview: { + caption: "维护计划", + title: "维护计划信息", + }, + pickupview: { + caption: "维护计划", + title: "维护计划数据选择视图", + }, + }, + ef_001_form: { + details: { + group1: "维护计划基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护计划标识", + srfmajortext: "维护计划名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + plannumber: "计划编号", + eamplanname: "维护计划名称", + assetname: "资产", + eamlocationname: "功能位置", + eamlocationid: "功能位置标识", + eamplanid: "维护计划标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "维护计划基本信息", + grouppanel1: "资产信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护计划标识", + srfmajortext: "维护计划名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + plannumber: "计划编号", + eamplanname: "维护计划名称", + mdate: "制定日期", + content: "内容", + assetname: "资产", + eamlocationname: "功能位置", + eammonitorpointname: "测点", + eamlocationid: "功能位置标识", + eamplanid: "维护计划标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "维护计划基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护计划标识", + srfmajortext: "维护计划名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamplanid: "维护计划标识", + }, + uiactions: { + }, + }, + grid_001_grid: { + columns: { + assetname: "资产", + plannumber: "计划编号", + eamplanname: "维护计划名称", + eamlocationname: "功能位置", + mdate: "制定日期", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + plannumber: "计划编号", + eamplanname: "维护计划名称", + assetname: "资产", + eamlocationname: "功能位置", + mdate: "制定日期", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem10: { + caption: "Save", + tip: "Save", + }, + tbitem12: { + caption: "Save And New", + tip: "Save And New", + }, + tbitem11: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem18: { + caption: "-", + tip: "", + }, + tbitem9: { + caption: "Remove And Close", + tip: "Remove And Close Window", + }, + tbitem19: { + caption: "-", + tip: "", + }, + tbitem5: { + caption: "New", + tip: "New", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem22: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Help", + tip: "Help", + }, + }, + infoviewtoolbar_toolbar: { + tbitem15_openmaineditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + assetplangridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_zh_CN.ts new file mode 100644 index 0000000..f2aec38 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamplan/eamplan_zh_CN.ts @@ -0,0 +1,316 @@ +export default { + fields: { + updatedate: "更新时间", + eamplanname: "维护计划名称", + createdate: "建立时间", + createman: "建立人", + updateman: "更新人", + eamplanid: "维护计划标识", + eamlocationid: "功能位置标识", + assetid: "资产标识", + assetname: "资产", + eamlocationname: "功能位置", + plannumber: "计划编号", + eammonitorpointid: "测点标识", + eammonitorpointname: "测点", + description: "描述", + mdate: "制定日期", + content: "内容", + }, + views: { + assetplangridview: { + caption: "维护计划", + title: "维护计划信息", + }, + infoview: { + caption: "维护计划", + title: "维护计划信息", + }, + summaryview: { + caption: "维护计划", + title: "维护计划主信息看板", + }, + editview: { + caption: "维护计划", + title: "维护计划编辑视图", + }, + info_mainview: { + caption: "维护计划", + title: "维护计划主信息", + }, + pickupgridview: { + caption: "维护计划", + title: "维护计划选择表格视图", + }, + quickcreateview: { + caption: "维护计划", + title: "快速新建", + }, + gridview: { + caption: "维护计划", + title: "维护计划信息", + }, + pickupview: { + caption: "维护计划", + title: "维护计划数据选择视图", + }, + }, + ef_001_form: { + details: { + group1: "维护计划基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护计划标识", + srfmajortext: "维护计划名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + plannumber: "计划编号", + eamplanname: "维护计划名称", + assetname: "资产", + eamlocationname: "功能位置", + eamlocationid: "功能位置标识", + eamplanid: "维护计划标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "维护计划基本信息", + grouppanel1: "资产信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护计划标识", + srfmajortext: "维护计划名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + plannumber: "计划编号", + eamplanname: "维护计划名称", + mdate: "制定日期", + content: "内容", + assetname: "资产", + eamlocationname: "功能位置", + eammonitorpointname: "测点", + eamlocationid: "功能位置标识", + eamplanid: "维护计划标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "维护计划基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "维护计划标识", + srfmajortext: "维护计划名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamplanid: "维护计划标识", + }, + uiactions: { + }, + }, + grid_001_grid: { + columns: { + assetname: "资产", + plannumber: "计划编号", + eamplanname: "维护计划名称", + eamlocationname: "功能位置", + mdate: "制定日期", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + plannumber: "计划编号", + eamplanname: "维护计划名称", + assetname: "资产", + eamlocationname: "功能位置", + mdate: "制定日期", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem10: { + caption: "保存", + tip: "保存", + }, + tbitem12: { + caption: "保存并新建", + tip: "保存并新建", + }, + tbitem11: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem18: { + caption: "-", + tip: "", + }, + tbitem9: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem19: { + caption: "-", + tip: "", + }, + tbitem5: { + caption: "新建", + tip: "新建", + }, + tbitem21: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem22: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "帮助", + tip: "帮助", + }, + }, + infoviewtoolbar_toolbar: { + tbitem15_openmaineditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + assetplangridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_en_US.ts new file mode 100644 index 0000000..762437a --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_en_US.ts @@ -0,0 +1,35 @@ + +export default { + fields: { + productid: "产品标识", + productname: "产品名称", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + updateman: "更新人", + productnumber: "产品编号", + }, + views: { + pickupgridview: { + caption: "产品", + title: "产品选择表格视图", + }, + pickupview: { + caption: "产品", + title: "产品数据选择视图", + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_zh_CN.ts new file mode 100644 index 0000000..865dafb --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamproduct/eamproduct_zh_CN.ts @@ -0,0 +1,34 @@ +export default { + fields: { + productid: "产品标识", + productname: "产品名称", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + updateman: "更新人", + productnumber: "产品编号", + }, + views: { + pickupgridview: { + caption: "产品", + title: "产品选择表格视图", + }, + pickupview: { + caption: "产品", + title: "产品数据选择视图", + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_en_US.ts new file mode 100644 index 0000000..e43930a --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_en_US.ts @@ -0,0 +1,121 @@ + +export default { + fields: { + createman: "建立人", + createdate: "建立时间", + eamservicelevelid: "服务等级标识", + updateman: "更新人", + eamservicelevelname: "服务等级名称", + updatedate: "更新时间", + description: "描述", + }, + views: { + pickupview: { + caption: "服务等级", + title: "服务等级数据选择视图", + }, + pickupgridview: { + caption: "服务等级", + title: "服务等级选择表格视图", + }, + editview: { + caption: "服务等级", + title: "服务等级编辑", + }, + gridview: { + caption: "服务等级", + title: "服务等级信息", + }, + }, + main_form: { + details: { + group1: "服务等级基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "服务等级标识", + srfmajortext: "服务等级名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamservicelevelid: "服务等级标识", + eamservicelevelname: "服务等级名称", + description: "描述", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamservicelevelid: "服务等级标识", + eamservicelevelname: "服务等级名称", + description: "描述", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_zh_CN.ts new file mode 100644 index 0000000..5183bb2 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamservice-level/eamservice-level_zh_CN.ts @@ -0,0 +1,120 @@ +export default { + fields: { + createman: "建立人", + createdate: "建立时间", + eamservicelevelid: "服务等级标识", + updateman: "更新人", + eamservicelevelname: "服务等级名称", + updatedate: "更新时间", + description: "描述", + }, + views: { + pickupview: { + caption: "服务等级", + title: "服务等级数据选择视图", + }, + pickupgridview: { + caption: "服务等级", + title: "服务等级选择表格视图", + }, + editview: { + caption: "服务等级", + title: "服务等级编辑", + }, + gridview: { + caption: "服务等级", + title: "服务等级信息", + }, + }, + main_form: { + details: { + group1: "服务等级基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "服务等级标识", + srfmajortext: "服务等级名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamservicelevelid: "服务等级标识", + eamservicelevelname: "服务等级名称", + description: "描述", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamservicelevelid: "服务等级标识", + eamservicelevelname: "服务等级名称", + description: "描述", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_en_US.ts new file mode 100644 index 0000000..c9df1fc --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_en_US.ts @@ -0,0 +1,151 @@ + +export default { + fields: { + eamsparepartsgroupid: "备件包标识", + eamsparepartsgroupname: "备件包名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + sparepartsgrpnumber: "备件包编号", + }, + views: { + editview: { + caption: "备件包", + title: "备件包编辑视图", + }, + pickupview: { + caption: "备件包", + title: "备件包数据选择视图", + }, + infoview: { + caption: "备件包", + title: "备件包信息", + }, + info_mainview: { + caption: "备件包", + title: "备件包信息", + }, + gridview: { + caption: "备件包", + title: "备件包信息", + }, + dashboardview: { + caption: "备件包", + title: "备件包数据看板视图", + }, + pickupgridview: { + caption: "备件包", + title: "备件包选择表格视图", + }, + }, + main_form: { + details: { + group1: "备件包基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "备件包标识", + srfmajortext: "备件包名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + sparepartsgrpnumber: "备件包编号", + eamsparepartsgroupname: "备件包名称", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "备件包基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "备件包标识", + srfmajortext: "备件包名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + sparepartsgrpnumber: "备件包编号", + eamsparepartsgroupname: "备件包名称", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + sparepartsgrpnumber: "备件包编号", + eamsparepartsgroupname: "备件包名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_zh_CN.ts new file mode 100644 index 0000000..ad1cceb --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-group/eamspare-parts-group_zh_CN.ts @@ -0,0 +1,150 @@ +export default { + fields: { + eamsparepartsgroupid: "备件包标识", + eamsparepartsgroupname: "备件包名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + sparepartsgrpnumber: "备件包编号", + }, + views: { + editview: { + caption: "备件包", + title: "备件包编辑视图", + }, + pickupview: { + caption: "备件包", + title: "备件包数据选择视图", + }, + infoview: { + caption: "备件包", + title: "备件包信息", + }, + info_mainview: { + caption: "备件包", + title: "备件包信息", + }, + gridview: { + caption: "备件包", + title: "备件包信息", + }, + dashboardview: { + caption: "备件包", + title: "备件包数据看板视图", + }, + pickupgridview: { + caption: "备件包", + title: "备件包选择表格视图", + }, + }, + main_form: { + details: { + group1: "备件包基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "备件包标识", + srfmajortext: "备件包名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + sparepartsgrpnumber: "备件包编号", + eamsparepartsgroupname: "备件包名称", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "备件包基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "备件包标识", + srfmajortext: "备件包名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + sparepartsgrpnumber: "备件包编号", + eamsparepartsgroupname: "备件包名称", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + sparepartsgrpnumber: "备件包编号", + eamsparepartsgroupname: "备件包名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_en_US.ts new file mode 100644 index 0000000..c1ea809 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_en_US.ts @@ -0,0 +1,95 @@ + +export default { + fields: { + eamsparepartsgroupid: "备件包标识", + productid: "产品标识", + eamsparepartsproid: "备件包物料标识", + eamsparepartsproname: "备件包物料名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + eamsparepartsgroupname: "备件包", + productname: "产品", + productnumber: "产品编号", + }, + views: { + editview: { + caption: "备件包物料", + title: "备件包物料编辑视图", + }, + partsprogridview: { + caption: "备件包物料", + title: "备件包下物料", + }, + }, + main_form: { + details: { + group1: "备件包物料基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "备件包物料标识", + srfmajortext: "备件包物料名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamsparepartsgroupname: "备件包", + productname: "产品", + productid: "产品标识", + eamsparepartsproid: "备件包物料标识", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamsparepartsgroupname: "备件包", + productname: "产品", + productnumber: "产品编号", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + partsprogridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_zh_CN.ts new file mode 100644 index 0000000..17d120b --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamspare-parts-pro/eamspare-parts-pro_zh_CN.ts @@ -0,0 +1,94 @@ +export default { + fields: { + eamsparepartsgroupid: "备件包标识", + productid: "产品标识", + eamsparepartsproid: "备件包物料标识", + eamsparepartsproname: "备件包物料名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + eamsparepartsgroupname: "备件包", + productname: "产品", + productnumber: "产品编号", + }, + views: { + editview: { + caption: "备件包物料", + title: "备件包物料编辑视图", + }, + partsprogridview: { + caption: "备件包物料", + title: "备件包下物料", + }, + }, + main_form: { + details: { + group1: "备件包物料基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "备件包物料标识", + srfmajortext: "备件包物料名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamsparepartsgroupname: "备件包", + productname: "产品", + productid: "产品标识", + eamsparepartsproid: "备件包物料标识", + eamsparepartsgroupid: "备件包标识", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamsparepartsgroupname: "备件包", + productname: "产品", + productnumber: "产品编号", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + partsprogridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_en_US.ts new file mode 100644 index 0000000..d4895a5 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_en_US.ts @@ -0,0 +1,536 @@ + +export default { + fields: { + workorderid: "工单标识", + workordername: "工单名称", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + updateman: "更新人", + eamwotypeid: "工单类型标识", + assetid: "资产标识", + eamlocationid: "功能位置标识", + pworkorderid: "上级工单标识", + wooriginid: "工单来源标识", + wonumber: "工单编号", + mdate: "制定日期", + wodate: "执行日期", + begintime: "实际开始时间", + endtime: "实际结束时间", + eamservicelevelid: "服务等级标识", + worklength: "工时", + assetname: "资产", + eamlocationname: "功能位置", + eamservicelevelname: "服务等级", + wooriginname: "工单来源", + eamwotypename: "工单类型", + pworkordername: "上级工单", + description: "描述", + orgid: "组织标识", + orgname: "组织", + deptid: "部门标识", + deptname: "部门", + }, + views: { + mastertabinfoview: { + caption: "工单", + title: "工单信息", + }, + quickcreateview: { + caption: "工单", + title: "快速新建", + }, + info_mainview: { + caption: "工单", + title: "工单主信息", + }, + assetwogridview: { + caption: "工单", + title: "工单信息", + }, + gridview: { + caption: "工单", + title: "工单信息", + }, + childwogridview: { + caption: "工单", + title: "子工单表格", + }, + editview: { + caption: "工单", + title: "工单编辑视图", + }, + pickupgridview: { + caption: "工单", + title: "工单选择表格视图", + }, + mastersummaryview: { + caption: "工单", + title: "概览", + }, + masterinfoview: { + caption: "工单", + title: "工单编辑视图", + }, + pickupview: { + caption: "工单", + title: "工单数据选择视图", + }, + datapaneleditview: { + caption: "工单", + title: "工单编辑视图", + }, + applywogridview: { + caption: "工单", + title: "产生的工单", + }, + }, + ef_001_form: { + details: { + group1: "工单基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + assetname: "资产", + eamlocationname: "功能位置", + deptname: "部门", + orgname: "组织", + deptid: "部门标识", + orgid: "组织标识", + eamlocationid: "功能位置标识", + workorderid: "工单标识", + eamwotypeid: "工单类型标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + grouppanel2: "执行信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + pworkordername: "上级工单", + eamservicelevelname: "服务等级", + mdate: "制定日期", + eamwooriginname: "工单来源", + orgname: "组织", + deptname: "部门", + orgid: "组织标识", + deptid: "部门标识", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + begintime: "实际开始时间", + endtime: "实际结束时间", + worklength: "工时", + eamlocationid: "功能位置标识", + workorderid: "工单标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + grouppanel2: "执行信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + pworkordername: "上级工单", + eamservicelevelname: "服务等级", + mdate: "制定日期", + eamwooriginname: "工单来源", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + begintime: "实际开始时间", + endtime: "实际结束时间", + worklength: "工时", + eamlocationid: "功能位置标识", + workorderid: "工单标识", + eamservicelevelid: "服务等级标识", + pworkorderid: "上级工单标识", + eamwotypeid: "工单类型标识", + assetid: "资产标识", + eamwooriginid: "工单来源标识", + }, + uiactions: { + }, + }, + datapanelef_form: { + details: { + group1: "工单基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamwotypename: "工单类型", + eamservicelevelname: "服务等级", + workorderid: "工单标识", + eamservicelevelid: "服务等级标识", + eamwotypeid: "工单类型标识", + }, + uiactions: { + }, + }, + datapanelif_form: { + details: { + button1: "头信息编辑", + grouppanel1: "分组面板", + group1: "工单基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamwotypename: "工单类型", + eamservicelevelname: "服务等级", + workorderid: "工单标识", + }, + uiactions: { + eamworkorder_datapaneledit: "头信息编辑", + }, + }, + masterif_form: { + details: { + group1: "工单基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + workordername: "工单名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + workorderid: "工单标识", + }, + uiactions: { + }, + }, + grid_003_grid: { + columns: { + assetname: "资产", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + eamwooriginname: "工单来源", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + grid_002_grid: { + columns: { + pworkordername: "上级工单", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + eamwooriginname: "工单来源", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + eamwooriginname: "工单来源", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + grid_001_grid: { + columns: { + eamwooriginname: "工单来源", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + childwogridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + mastertabinfoviewtoolbar_toolbar: { + tbitem15_openeditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + assetwogridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + applywogridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_zh_CN.ts new file mode 100644 index 0000000..3b01515 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamwork-order/eamwork-order_zh_CN.ts @@ -0,0 +1,535 @@ +export default { + fields: { + workorderid: "工单标识", + workordername: "工单名称", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + updateman: "更新人", + eamwotypeid: "工单类型标识", + assetid: "资产标识", + eamlocationid: "功能位置标识", + pworkorderid: "上级工单标识", + wooriginid: "工单来源标识", + wonumber: "工单编号", + mdate: "制定日期", + wodate: "执行日期", + begintime: "实际开始时间", + endtime: "实际结束时间", + eamservicelevelid: "服务等级标识", + worklength: "工时", + assetname: "资产", + eamlocationname: "功能位置", + eamservicelevelname: "服务等级", + wooriginname: "工单来源", + eamwotypename: "工单类型", + pworkordername: "上级工单", + description: "描述", + orgid: "组织标识", + orgname: "组织", + deptid: "部门标识", + deptname: "部门", + }, + views: { + mastertabinfoview: { + caption: "工单", + title: "工单信息", + }, + quickcreateview: { + caption: "工单", + title: "快速新建", + }, + info_mainview: { + caption: "工单", + title: "工单主信息", + }, + assetwogridview: { + caption: "工单", + title: "工单信息", + }, + gridview: { + caption: "工单", + title: "工单信息", + }, + childwogridview: { + caption: "工单", + title: "子工单表格", + }, + editview: { + caption: "工单", + title: "工单编辑视图", + }, + pickupgridview: { + caption: "工单", + title: "工单选择表格视图", + }, + mastersummaryview: { + caption: "工单", + title: "概览", + }, + masterinfoview: { + caption: "工单", + title: "工单编辑视图", + }, + pickupview: { + caption: "工单", + title: "工单数据选择视图", + }, + datapaneleditview: { + caption: "工单", + title: "工单编辑视图", + }, + applywogridview: { + caption: "工单", + title: "产生的工单", + }, + }, + ef_001_form: { + details: { + group1: "工单基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + assetname: "资产", + eamlocationname: "功能位置", + deptname: "部门", + orgname: "组织", + deptid: "部门标识", + orgid: "组织标识", + eamlocationid: "功能位置标识", + workorderid: "工单标识", + eamwotypeid: "工单类型标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + if_001_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + grouppanel2: "执行信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + pworkordername: "上级工单", + eamservicelevelname: "服务等级", + mdate: "制定日期", + eamwooriginname: "工单来源", + orgname: "组织", + deptname: "部门", + orgid: "组织标识", + deptid: "部门标识", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + begintime: "实际开始时间", + endtime: "实际结束时间", + worklength: "工时", + eamlocationid: "功能位置标识", + workorderid: "工单标识", + assetid: "资产标识", + }, + uiactions: { + }, + }, + main_form: { + details: { + group1: "基本信息", + grouppanel1: "资产信息", + grouppanel2: "执行信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + pworkordername: "上级工单", + eamservicelevelname: "服务等级", + mdate: "制定日期", + eamwooriginname: "工单来源", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + begintime: "实际开始时间", + endtime: "实际结束时间", + worklength: "工时", + eamlocationid: "功能位置标识", + workorderid: "工单标识", + eamservicelevelid: "服务等级标识", + pworkorderid: "上级工单标识", + eamwotypeid: "工单类型标识", + assetid: "资产标识", + eamwooriginid: "工单来源标识", + }, + uiactions: { + }, + }, + datapanelef_form: { + details: { + group1: "工单基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamwotypename: "工单类型", + eamservicelevelname: "服务等级", + workorderid: "工单标识", + eamservicelevelid: "服务等级标识", + eamwotypeid: "工单类型标识", + }, + uiactions: { + }, + }, + datapanelif_form: { + details: { + button1: "头信息编辑", + grouppanel1: "分组面板", + group1: "工单基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamwotypename: "工单类型", + eamservicelevelname: "服务等级", + workorderid: "工单标识", + }, + uiactions: { + eamworkorder_datapaneledit: "头信息编辑", + }, + }, + masterif_form: { + details: { + group1: "工单基本信息", + formpage1: "基本信息", + group2: "操作信息", + formpage2: "其它", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单标识", + srfmajortext: "工单名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + workordername: "工单名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + workorderid: "工单标识", + }, + uiactions: { + }, + }, + grid_003_grid: { + columns: { + assetname: "资产", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + eamwooriginname: "工单来源", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + grid_002_grid: { + columns: { + pworkordername: "上级工单", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + eamwooriginname: "工单来源", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + eamwooriginname: "工单来源", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + grid_001_grid: { + columns: { + eamwooriginname: "工单来源", + wonumber: "工单编号", + workordername: "工单名称", + eamwotypename: "工单类型", + assetname: "资产", + eamlocationname: "功能位置", + wodate: "执行日期", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + childwogridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + mastertabinfoviewtoolbar_toolbar: { + tbitem15_openeditview: { + caption: "编辑", + tip: "编辑", + }, + tbitem15_remove_sep: { + caption: "", + tip: "", + }, + tbitem15_remove: { + caption: "删除并关闭", + tip: "删除并关闭", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, + assetwogridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + applywogridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + gridviewtoolbar_toolbar: { + tbitem12_openquickcreateview: { + caption: "新建", + tip: "新建", + }, + tbitem14: { + caption: "-", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_en_US.ts new file mode 100644 index 0000000..45f4dfa --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_en_US.ts @@ -0,0 +1,11 @@ + +export default { + fields: { + eamwostatename: "工单状态名称", + eamwostateid: "工单状态标识", + updateman: "更新人", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_zh_CN.ts new file mode 100644 index 0000000..0cb43e0 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamwostate/eamwostate_zh_CN.ts @@ -0,0 +1,10 @@ +export default { + fields: { + eamwostatename: "工单状态名称", + eamwostateid: "工单状态标识", + updateman: "更新人", + createdate: "建立时间", + createman: "建立人", + updatedate: "更新时间", + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_en_US.ts new file mode 100644 index 0000000..acc4799 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_en_US.ts @@ -0,0 +1,119 @@ + +export default { + fields: { + eamwotypename: "工单类型名称", + createdate: "建立时间", + createman: "建立人", + eamwotypeid: "工单类型标识", + updateman: "更新人", + updatedate: "更新时间", + eamwostatemodelid: "工单状态模型标识", + }, + views: { + gridview: { + caption: "工单类型", + title: "工单类型表格视图", + }, + pickupview: { + caption: "工单类型", + title: "工单类型数据选择视图", + }, + pickupgridview: { + caption: "工单类型", + title: "工单类型选择表格视图", + }, + editview: { + caption: "工单类型", + title: "工单类型编辑视图", + }, + }, + main_form: { + details: { + group1: "工单类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单类型标识", + srfmajortext: "工单类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamwotypeid: "工单类型标识", + eamwotypename: "工单类型名称", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamwotypeid: "工单类型标识", + eamwotypename: "工单类型名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "New", + tip: "New", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "Edit", + tip: "Edit {0}", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "Copy", + tip: "Copy {0}", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "Remove", + tip: "Remove {0}", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "Export", + tip: "Export {0} Data To Excel", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "Filter", + tip: "Filter", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "Save And Close", + tip: "Save And Close Window", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_zh_CN.ts new file mode 100644 index 0000000..aacad66 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/eamwotype/eamwotype_zh_CN.ts @@ -0,0 +1,118 @@ +export default { + fields: { + eamwotypename: "工单类型名称", + createdate: "建立时间", + createman: "建立人", + eamwotypeid: "工单类型标识", + updateman: "更新人", + updatedate: "更新时间", + eamwostatemodelid: "工单状态模型标识", + }, + views: { + gridview: { + caption: "工单类型", + title: "工单类型表格视图", + }, + pickupview: { + caption: "工单类型", + title: "工单类型数据选择视图", + }, + pickupgridview: { + caption: "工单类型", + title: "工单类型选择表格视图", + }, + editview: { + caption: "工单类型", + title: "工单类型编辑视图", + }, + }, + main_form: { + details: { + group1: "工单类型基本信息", + formpage1: "基本信息", + srfupdatedate: "更新时间", + srforikey: "", + srfkey: "工单类型标识", + srfmajortext: "工单类型名称", + srftempmode: "", + srfuf: "", + srfdeid: "", + srfsourcekey: "", + eamwotypeid: "工单类型标识", + eamwotypename: "工单类型名称", + }, + uiactions: { + }, + }, + main_grid: { + columns: { + eamwotypeid: "工单类型标识", + eamwotypename: "工单类型名称", + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, + gridviewtoolbar_toolbar: { + tbitem5: { + caption: "新建", + tip: "新建", + }, + seperator1: { + caption: "", + tip: "", + }, + tbitem2: { + caption: "编辑", + tip: "编辑", + }, + seperator2: { + caption: "", + tip: "", + }, + tbitem1: { + caption: "拷贝", + tip: "拷贝", + }, + tbitem15: { + caption: "-", + tip: "", + }, + tbitem8: { + caption: "删除", + tip: "删除", + }, + tbitem16: { + caption: "-", + tip: "", + }, + tbitem3: { + caption: "导出", + tip: "导出", + }, + tbitem17: { + caption: "-", + tip: "", + }, + tbitem10: { + caption: "过滤", + tip: "过滤", + }, + }, + editviewtoolbar_toolbar: { + tbitem2: { + caption: "保存并关闭", + tip: "保存并关闭", + }, + tbitem1: { + caption: "关闭", + tip: "关闭", + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_en_US.ts b/app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_en_US.ts new file mode 100644 index 0000000..5365864 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_en_US.ts @@ -0,0 +1,35 @@ + +export default { + fields: { + wooriginid: "工单来源标识", + wooriginname: "工单来源名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + woorigintype: "工单来源类型", + }, + views: { + pickupview: { + caption: "工单来源", + title: "工单来源数据选择视图", + }, + pickupgridview: { + caption: "工单来源", + title: "工单来源选择表格视图", + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_zh_CN.ts b/app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_zh_CN.ts new file mode 100644 index 0000000..ae1ec61 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/entities/woorigin/woorigin_zh_CN.ts @@ -0,0 +1,34 @@ +export default { + fields: { + wooriginid: "工单来源标识", + wooriginname: "工单来源名称", + createman: "建立人", + createdate: "建立时间", + updateman: "更新人", + updatedate: "更新时间", + woorigintype: "工单来源类型", + }, + views: { + pickupview: { + caption: "工单来源", + title: "工单来源数据选择视图", + }, + pickupgridview: { + caption: "工单来源", + title: "工单来源选择表格视图", + }, + }, + main_grid: { + columns: { + }, + uiactions: { + }, + }, + default_searchform: { + details: { + formpage1: "常规条件", + }, + uiactions: { + }, + }, +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/userCustom/userCustom_en_US.ts b/app_AssetManagement/src/locale/lanres/userCustom/userCustom_en_US.ts new file mode 100644 index 0000000..12184aa --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/userCustom/userCustom_en_US.ts @@ -0,0 +1,5 @@ +// 用户自定义语言资源 英文 +export default { + + +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/lanres/userCustom/userCustom_zh_CN.ts b/app_AssetManagement/src/locale/lanres/userCustom/userCustom_zh_CN.ts new file mode 100644 index 0000000..9e949e9 --- /dev/null +++ b/app_AssetManagement/src/locale/lanres/userCustom/userCustom_zh_CN.ts @@ -0,0 +1,5 @@ +// 用户自定义语言资源 中文 +export default { + + +}; \ No newline at end of file diff --git a/app_AssetManagement/src/locale/local-list.ts b/app_AssetManagement/src/locale/local-list.ts new file mode 100644 index 0000000..af3d17c --- /dev/null +++ b/app_AssetManagement/src/locale/local-list.ts @@ -0,0 +1,6 @@ +export const localList: any[] = [ + { + type: 'zh-CN', + name: '中文简体', + }, +]; \ No newline at end of file diff --git a/app_AssetManagement/src/mock/app/app-index-view-appmenu/app-index-view-appmenu.ts b/app_AssetManagement/src/mock/app/app-index-view-appmenu/app-index-view-appmenu.ts new file mode 100644 index 0000000..ec02b75 --- /dev/null +++ b/app_AssetManagement/src/mock/app/app-index-view-appmenu/app-index-view-appmenu.ts @@ -0,0 +1,480 @@ +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +import Mock from 'mockjs' +const Random = Mock.Random; + +// 获取应用数据 +mock.onGet('v7/app-index-viewappmenu').reply((config: any) => { + let status = MockAdapter.mockStatus(config); + return [status, { + name: 'appmenu', + items: [ + { + id: 'A20112C0-6FC7-48FC-B14C-24C66A924503', + name: 'user_menus', + text: '用户菜单', + type: 'MENUITEM', + counterid: '', + tooltip: '用户菜单', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: '', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', +}, + { + id: '70669C0B-37A4-4121-95D8-DCCB0827F20D', + name: 'top_menus', + text: '顶部菜单', + type: 'MENUITEM', + counterid: '', + tooltip: '顶部菜单', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: '', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: '72EF9A96-DED9-4262-8219-3212E7A332B6', + name: 'menuitem15', + text: '系统设置', + type: 'MENUITEM', + counterid: '', + tooltip: '系统设置', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-cog', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: '2EC2E657-B9FB-4ABF-B936-97222E18BB74', + name: 'menuitem21', + text: '文档类型', + type: 'MENUITEM', + counterid: '', + tooltip: '文档类型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-file', + icon: '', + textcls: '', + appfunctag: '_18', + resourcetag: '', +}, + { + id: '0F6F0CEA-5965-4D70-AD5E-F149819CAA76', + name: 'menuitem16', + text: '服务等级', + type: 'MENUITEM', + counterid: '', + tooltip: '服务等级', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-server', + icon: '', + textcls: '', + appfunctag: '_16', + resourcetag: '', +}, + { + id: '7C4D180A-5AC9-451E-A7BE-969707F6E5E9', + name: 'menuitem17', + text: '维护申请类型', + type: 'MENUITEM', + counterid: '', + tooltip: '维护申请类型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-legal', + icon: '', + textcls: '', + appfunctag: '_5', + resourcetag: '', +}, + { + id: '736DEC4C-072F-49B9-AAD5-C8B13A10B55C', + name: 'menuitem19', + text: '工单类型', + type: 'MENUITEM', + counterid: '', + tooltip: '工单类型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-legal', + icon: '', + textcls: '', + appfunctag: '_7', + resourcetag: '', +}, + ], +}, + ], +}, + { + id: '7428CF1E-09D0-477F-838B-3CB98A776FBA', + name: 'left_exp', + text: '左侧菜单', + type: 'MENUITEM', + counterid: '', + tooltip: '左侧菜单', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: '', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: '8739EFEE-ED1F-40E0-9BDB-438466E895D7', + name: 'menuitem1', + text: '功能位置', + type: 'MENUITEM', + counterid: '', + tooltip: '功能位置', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-navicon', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: '83E50A95-6762-4A67-9052-69DE75A60E3B', + name: 'menuitem6', + text: '功能位置状态', + type: 'MENUITEM', + counterid: '', + tooltip: '功能位置状态', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-life-ring', + icon: '', + textcls: '', + appfunctag: '_10', + resourcetag: '', +}, + { + id: 'E3BFAB38-B5C1-487A-B68B-61F6EF513C58', + name: 'menuitem7', + text: '功能位置状态模型', + type: 'MENUITEM', + counterid: '', + tooltip: '功能位置状态模型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-cube', + icon: '', + textcls: '', + appfunctag: '_9', + resourcetag: '', +}, + { + id: '6B6D828E-5B2A-4DF2-B437-0DDD328DAD7D', + name: 'menuitem8', + text: '功能位置类型', + type: 'MENUITEM', + counterid: '', + tooltip: '功能位置类型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-legal', + icon: '', + textcls: '', + appfunctag: '_12', + resourcetag: '', +}, + { + id: '6E2E7A7B-EDEF-460B-84A7-A2777BDD996E', + name: 'menuitem9', + text: '功能位置', + type: 'MENUITEM', + counterid: '', + tooltip: '功能位置', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-navicon', + icon: '', + textcls: '', + appfunctag: '_15', + resourcetag: '', +}, + ], +}, + { + id: '78652037-98D2-48D1-8600-4DBFCD9243F0', + name: 'menuitem2', + text: '资产管理', + type: 'MENUITEM', + counterid: '', + tooltip: '资产管理', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-rocket', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: 'F78D316F-28EB-49D9-AFD1-B34393D208BD', + name: 'menuitem10', + text: '资产状态', + type: 'MENUITEM', + counterid: '', + tooltip: '资产状态', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-life-ring', + icon: '', + textcls: '', + appfunctag: '_3', + resourcetag: '', +}, + { + id: '209538AE-367C-4976-A2A7-5C40C622BF7F', + name: 'menuitem11', + text: '资产状态模型', + type: 'MENUITEM', + counterid: '', + tooltip: '资产状态模型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-cube', + icon: '', + textcls: '', + appfunctag: '_4', + resourcetag: '', +}, + { + id: '6EC21D36-D7FB-4684-8448-DACEFCE5B0A5', + name: 'menuitem12', + text: '资产类型', + type: 'MENUITEM', + counterid: '', + tooltip: '资产类型', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-legal', + icon: '', + textcls: '', + appfunctag: '_14', + resourcetag: '', +}, + { + id: '4E96FE14-1C7E-4C47-8FDE-444B19EAB2A5', + name: 'menuitem13', + text: '资产管理', + type: 'MENUITEM', + counterid: '', + tooltip: '资产管理', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-rocket', + icon: '', + textcls: '', + appfunctag: '_13', + resourcetag: '', +}, + { + id: '5AF50A95-EA23-4E22-B354-FFA3CBD58356', + name: 'menuitem22', + text: '文档', + type: 'MENUITEM', + counterid: '', + tooltip: '文档', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-files-o', + icon: '', + textcls: '', + appfunctag: '_2', + resourcetag: '', +}, + { + id: 'D457B927-86B5-4607-B8D6-6774ACF2D8E8', + name: 'menuitem14', + text: '备件包', + type: 'MENUITEM', + counterid: '', + tooltip: '备件包', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-instagram', + icon: '', + textcls: '', + appfunctag: '_8', + resourcetag: '', +}, + ], +}, + { + id: '4803F5BD-7CF9-4A67-BCA6-DCB022B56291', + name: 'menuitem4', + text: '工单管理', + type: 'MENUITEM', + counterid: '', + tooltip: '工单管理', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-file-word-o', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: '5FD0497E-7F0C-4AFA-931A-64FECFAD6B0D', + name: 'menuitem3', + text: '维护申请', + type: 'MENUITEM', + counterid: '', + tooltip: '维护申请', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-share-square', + icon: '', + textcls: '', + appfunctag: '_11', + resourcetag: '', +}, + { + id: '885534EC-341F-4B11-A754-A23EDEF10B24', + name: 'menuitem18', + text: '工单', + type: 'MENUITEM', + counterid: '', + tooltip: '工单', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-file-word-o', + icon: '', + textcls: '', + appfunctag: '_6', + resourcetag: '', +}, + ], +}, + { + id: '38802802-F256-487F-B526-7E2A58541A6C', + name: 'menuitem5', + text: '维护计划', + type: 'MENUITEM', + counterid: '', + tooltip: '维护计划', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-calendar', + icon: '', + textcls: '', + appfunctag: '', + resourcetag: '', + items: [ + { + id: '248932F0-F1F3-4B4F-B1B1-21C82C74A217', + name: 'menuitem20', + text: '维护计划', + type: 'MENUITEM', + counterid: '', + tooltip: '维护计划', + expanded: false, + separator: false, + hidden: false, + hidesidebar: false, + opendefault: false, + iconcls: 'fa fa-calendar', + icon: '', + textcls: '', + appfunctag: '_17', + resourcetag: '', +}, + ], +}, + ], +}, + ], + }]; +}); + diff --git a/app_AssetManagement/src/mock/appdata/appdata.ts b/app_AssetManagement/src/mock/appdata/appdata.ts new file mode 100644 index 0000000..fe56cf8 --- /dev/null +++ b/app_AssetManagement/src/mock/appdata/appdata.ts @@ -0,0 +1,40 @@ +import { MockAdapter } from '../mock-adapter'; +const mock = MockAdapter.getInstance(); + +import Mock from 'mockjs'; + +// 获取应用数据 +mock.onGet('/appdata').reply((config: any) => { + let status = MockAdapter.mockStatus(config); + return [status,{ + context:{ + // 用户标识 + srfuserid:'5ffafc68-eccd-a5be-0bce-40215334cee3', + // 用户名称 + srfusername:'xignzi006', + // 用户图像路径 + srfusericonpath:null, + // 当前的用户模式 + srfusermode:'default', + // 登录名称 + srfloginname:'xignzi006', + // 本地化(Spring变量) + srflocale:'zh', + // 当前用户时区标识 + srftimezone:'Asia/Shanghai', + // 当前用户组织标识 + srforgid:"a1494aa93f1d1226f7aae63db6f15aa5", + //当前用户组织名称 + srforgname:"上海公司", + // 当前用户组织部门标识 + srforgsectorid:"5bd1ecf4d3c31e31cb66373df56b852f", + // 当前用户组织部门名称 + srforgsectorname:"项目一部", + // 当前用户条线代码 + srfsectorbc:"" + }, + //当前用户所有组织部门标识 + srforgsections:[{"srforgsectorid":"5bd1ecf4d3c31e31cb66373df56b852f","srforgsectorname":"项目一部"},{"srforgsectorid":"2ad1ecf4d3c31e31cb66373df56b852f","srforgsectorname":"项目二部"}] + }]; +}); + diff --git a/app_AssetManagement/src/mock/codelist/codelist.ts b/app_AssetManagement/src/mock/codelist/codelist.ts new file mode 100644 index 0000000..af69c36 --- /dev/null +++ b/app_AssetManagement/src/mock/codelist/codelist.ts @@ -0,0 +1,47 @@ +import { MockAdapter } from '../mock-adapter'; +const mock = MockAdapter.getInstance(); + +import Mock from 'mockjs' + +// 获取全部数组 +mock.onGet('./assets/json/data-dictionary.json').reply((config: any) => { + let status = MockAdapter.mockStatus(config); + return [status, [ + { + "srfkey": "SysOperator", + "emptytext": "未定义", + "codelisttype":"dynamic", + "appdataentity":"", + "appdedataset":"", + "items": [] + }, + { + srfkey: "YesNo", + emptytext: "未定义", + "codelisttype":"static", + items: [ + { + id: "1", + label: "是", + text: "是", + "data":"", + "codename":"Item_1", + value: "1", + + disabled: false, + }, + { + id: "0", + label: "否", + text: "否", + "data":"", + "codename":"Item_0", + value: "0", + + disabled: false, + }, + ] + } + ]]; +}); + diff --git a/app_AssetManagement/src/mock/entity/eamapply-state-model-lines/eamapply-state-model-lines.ts b/app_AssetManagement/src/mock/entity/eamapply-state-model-lines/eamapply-state-model-lines.ts new file mode 100644 index 0000000..aa986b4 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamapply-state-model-lines/eamapply-state-model-lines.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplystatemodellines\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplystatemodellines\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamapplystatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamapplystatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamapplystatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplystatemodellineid, tempValue.eamapplystatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamapplystatemodellines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamapplystatemodellines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplystatemodellineid, tempValue.eamapplystatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplystatemodellineid'] == tempValue['eamapplystatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamapplystatemodellines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamapplystatemodellines\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplystatemodellineid, tempValue.eamapplystatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplystatemodellineid'] == tempValue['eamapplystatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamapplystatemodellines\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplystatemodellineid, tempValue.eamapplystatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplystatemodellineid'] == tempValue['eamapplystatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplystatemodellines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplystatemodellines\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplystatemodellineid, tempValue.eamapplystatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystatemodelline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystatemodellineid']; + const matchArray:any = new RegExp(/^\/eamapplystatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplystatemodellineid, tempValue.eamapplystatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamapply-states/eamapply-states.ts b/app_AssetManagement/src/mock/entity/eamapply-states/eamapply-states.ts new file mode 100644 index 0000000..65b905e --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamapply-states/eamapply-states.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplystates\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplystates\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamapplystates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamapplystates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamapplystates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplystateid, tempValue.eamapplystateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamapplystates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamapplystates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplystateid, tempValue.eamapplystateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplystateid'] == tempValue['eamapplystateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamapplystates\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamapplystates\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplystateid, tempValue.eamapplystateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplystateid'] == tempValue['eamapplystateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamapplystates\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplystateid, tempValue.eamapplystateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplystateid'] == tempValue['eamapplystateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplystates\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplystates\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplystateid, tempValue.eamapplystateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplystate 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplystateid']; + const matchArray:any = new RegExp(/^\/eamapplystates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplystateid, tempValue.eamapplystateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamapply-types/eamapply-types.ts b/app_AssetManagement/src/mock/entity/eamapply-types/eamapply-types.ts new file mode 100644 index 0000000..80634c6 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamapply-types/eamapply-types.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplytypes\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplytypes\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamapplytypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamapplytypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamapplytypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplytypeid, tempValue.eamapplytypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamapplytypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamapplytypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplytypeid, tempValue.eamapplytypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplytypeid'] == tempValue['eamapplytypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamapplytypes\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamapplytypes\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplytypeid, tempValue.eamapplytypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplytypeid'] == tempValue['eamapplytypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamapplytypes\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplytypeid, tempValue.eamapplytypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplytypeid'] == tempValue['eamapplytypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplytypes\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplytypes\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplytypeid, tempValue.eamapplytypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapplytype 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplytypeid']; + const matchArray:any = new RegExp(/^\/eamapplytypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplytypeid, tempValue.eamapplytypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamapplys/eamapplys.ts b/app_AssetManagement/src/mock/entity/eamapplys/eamapplys.ts new file mode 100644 index 0000000..9f26e2b --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamapplys/eamapplys.ts @@ -0,0 +1,922 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplies\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamapplies\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamapplies\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamapplies\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamapplies\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamapplies\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamapplies\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplyid'] == tempValue['eamapplyid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamapplies\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamapplies\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplyid'] == tempValue['eamapplyid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamapplies\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamapplyid'] == tempValue['eamapplyid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplies\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplies\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamapply 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamapplyid, tempValue.eamapplyid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamasset-parts-groups/eamasset-parts-groups.ts b/app_AssetManagement/src/mock/entity/eamasset-parts-groups/eamasset-parts-groups.ts new file mode 100644 index 0000000..e6de174 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamasset-parts-groups/eamasset-parts-groups.ts @@ -0,0 +1,922 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetpartsgroups\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetpartsgroups\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamassetpartsgroups\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamassetpartsgroups\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamassetpartsgroups\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamassetpartsgroups\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamassetpartsgroups\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetpartsgroupid'] == tempValue['eamassetpartsgroupid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamassetpartsgroups\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamassetpartsgroups\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetpartsgroupid'] == tempValue['eamassetpartsgroupid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamassetpartsgroups\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetpartsgroupid'] == tempValue['eamassetpartsgroupid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetpartsgroups\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetpartsgroups\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetpartsgroup 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetpartsgroupid']; + const matchArray:any = new RegExp(/^\/eamassetpartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetpartsgroupid, tempValue.eamassetpartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamasset-state-model-lines/eamasset-state-model-lines.ts b/app_AssetManagement/src/mock/entity/eamasset-state-model-lines/eamasset-state-model-lines.ts new file mode 100644 index 0000000..4b0e22e --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamasset-state-model-lines/eamasset-state-model-lines.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetstatemodellines\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetstatemodellines\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamassetstatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamassetstatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamassetstatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstatemodellineid, tempValue.eamassetstatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamassetstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamassetstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstatemodellineid, tempValue.eamassetstatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstatemodellineid'] == tempValue['eamassetstatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamassetstatemodellines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamassetstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstatemodellineid, tempValue.eamassetstatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstatemodellineid'] == tempValue['eamassetstatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamassetstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstatemodellineid, tempValue.eamassetstatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstatemodellineid'] == tempValue['eamassetstatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetstatemodellines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetstatemodellines\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstatemodellineid, tempValue.eamassetstatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodelline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstatemodellineid, tempValue.eamassetstatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamasset-state-models/eamasset-state-models.ts b/app_AssetManagement/src/mock/entity/eamasset-state-models/eamasset-state-models.ts new file mode 100644 index 0000000..f54c6b4 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamasset-state-models/eamasset-state-models.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetstatemodels\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetstatemodels\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamassetstatemodels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamassetstatemodels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamassetstatemodels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstatemodelid, tempValue.eamassetstatemodelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamassetstatemodels\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamassetstatemodels\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstatemodelid, tempValue.eamassetstatemodelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstatemodelid'] == tempValue['eamassetstatemodelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamassetstatemodels\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamassetstatemodels\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstatemodelid, tempValue.eamassetstatemodelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstatemodelid'] == tempValue['eamassetstatemodelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamassetstatemodels\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstatemodelid, tempValue.eamassetstatemodelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstatemodelid'] == tempValue['eamassetstatemodelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetstatemodels\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetstatemodels\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstatemodelid, tempValue.eamassetstatemodelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstatemodel 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstatemodelid']; + const matchArray:any = new RegExp(/^\/eamassetstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstatemodelid, tempValue.eamassetstatemodelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamasset-states/eamasset-states.ts b/app_AssetManagement/src/mock/entity/eamasset-states/eamasset-states.ts new file mode 100644 index 0000000..3454e4f --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamasset-states/eamasset-states.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetstates\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassetstates\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamassetstates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamassetstates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamassetstates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstateid, tempValue.eamassetstateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamassetstates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamassetstates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstateid, tempValue.eamassetstateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstateid'] == tempValue['eamassetstateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamassetstates\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamassetstates\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstateid, tempValue.eamassetstateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstateid'] == tempValue['eamassetstateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamassetstates\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassetstateid, tempValue.eamassetstateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassetstateid'] == tempValue['eamassetstateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetstates\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassetstates\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstateid, tempValue.eamassetstateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassetstate 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassetstateid']; + const matchArray:any = new RegExp(/^\/eamassetstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassetstateid, tempValue.eamassetstateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamasset-types/eamasset-types.ts b/app_AssetManagement/src/mock/entity/eamasset-types/eamasset-types.ts new file mode 100644 index 0000000..51d1cab --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamasset-types/eamasset-types.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassettypes\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassettypes\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamassettypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamassettypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamassettypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassettypeid, tempValue.eamassettypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamassettypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamassettypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassettypeid, tempValue.eamassettypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassettypeid'] == tempValue['eamassettypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamassettypes\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamassettypes\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassettypeid, tempValue.eamassettypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassettypeid'] == tempValue['eamassettypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamassettypes\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamassettypeid, tempValue.eamassettypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamassettypeid'] == tempValue['eamassettypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassettypes\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassettypes\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassettypeid, tempValue.eamassettypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamassettype 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamassettypeid, tempValue.eamassettypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamassets/eamassets.ts b/app_AssetManagement/src/mock/entity/eamassets/eamassets.ts new file mode 100644 index 0000000..0b73d94 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamassets/eamassets.ts @@ -0,0 +1,740 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassets\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamassets\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamassets\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamassets\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamassets\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamassets\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamassets\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['assetid'] == tempValue['assetid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['assetid'] == tempValue['assetid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamassets\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['assetid'] == tempValue['assetid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchChildAsset +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/fetchchildasset$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: FetchChildAsset"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/fetchchildasset$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchChildAsset +mock.onGet(new RegExp(/^\/eamassets\/fetchchildasset$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: FetchChildAsset"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchChildAsset +mock.onGet(new RegExp(/^\/eamassets\/fetchchildasset(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: FetchChildAsset"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamasset 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.assetid, tempValue.assetid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamdocument-types/eamdocument-types.ts b/app_AssetManagement/src/mock/entity/eamdocument-types/eamdocument-types.ts new file mode 100644 index 0000000..2581d13 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamdocument-types/eamdocument-types.ts @@ -0,0 +1,424 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamdocumenttypes\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamdocumenttypes\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamdocumenttypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamdocumenttypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamdocumenttypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumenttypeid, tempValue.eamdocumenttypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamdocumenttypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamdocumenttypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamdocumenttypeid, tempValue.eamdocumenttypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamdocumenttypeid'] == tempValue['eamdocumenttypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamdocumenttypes\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamdocumenttypes\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamdocumenttypeid, tempValue.eamdocumenttypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamdocumenttypeid'] == tempValue['eamdocumenttypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamdocumenttypes\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamdocumenttypeid, tempValue.eamdocumenttypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamdocumenttypeid'] == tempValue['eamdocumenttypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamdocumenttypes\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamdocumenttypes\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// FetchTop +mock.onGet(new RegExp(/^\/eamdocumenttypes\/fetchtop$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: FetchTop"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchTop +mock.onGet(new RegExp(/^\/eamdocumenttypes\/fetchtop(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: FetchTop"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumenttypeid, tempValue.eamdocumenttypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocumenttype 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumenttypeid']; + const matchArray:any = new RegExp(/^\/eamdocumenttypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumenttypeid, tempValue.eamdocumenttypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamdocuments/eamdocuments.ts b/app_AssetManagement/src/mock/entity/eamdocuments/eamdocuments.ts new file mode 100644 index 0000000..01be93a --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamdocuments/eamdocuments.ts @@ -0,0 +1,651 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamdocuments\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamdocuments\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamdocuments\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamdocuments\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamdocuments\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamdocuments\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamdocuments\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamdocumentid'] == tempValue['eamdocumentid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamdocuments\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamdocuments\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamdocumentid'] == tempValue['eamdocumentid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamdocuments\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamdocumentid'] == tempValue['eamdocumentid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamdocuments\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamdocuments\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamassettypeid','eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamassettypes\/([a-zA-Z0-9\-\;]{1,35})\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamdocument 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamdocumentid']; + const matchArray:any = new RegExp(/^\/eamdocuments\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamdocumentid, tempValue.eamdocumentid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamlocation-state-model-lines/eamlocation-state-model-lines.ts b/app_AssetManagement/src/mock/entity/eamlocation-state-model-lines/eamlocation-state-model-lines.ts new file mode 100644 index 0000000..d37f3eb --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamlocation-state-model-lines/eamlocation-state-model-lines.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationstatemodellines\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationstatemodellines\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamlocationstatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamlocationstatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamlocationstatemodellines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstatemodellineid, tempValue.eamlocationstatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamlocationstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamlocationstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstatemodellineid, tempValue.eamlocationstatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstatemodellineid'] == tempValue['eamlocationstatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocationstatemodellines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocationstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstatemodellineid, tempValue.eamlocationstatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstatemodellineid'] == tempValue['eamlocationstatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamlocationstatemodellines\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstatemodellineid, tempValue.eamlocationstatemodellineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstatemodellineid'] == tempValue['eamlocationstatemodellineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationstatemodellines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationstatemodellines\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstatemodellineid, tempValue.eamlocationstatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodelline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodellineid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodellines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstatemodellineid, tempValue.eamlocationstatemodellineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamlocation-state-models/eamlocation-state-models.ts b/app_AssetManagement/src/mock/entity/eamlocation-state-models/eamlocation-state-models.ts new file mode 100644 index 0000000..e9a10b0 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamlocation-state-models/eamlocation-state-models.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationstatemodels\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationstatemodels\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamlocationstatemodels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamlocationstatemodels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamlocationstatemodels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstatemodelid, tempValue.eamlocationstatemodelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamlocationstatemodels\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamlocationstatemodels\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstatemodelid, tempValue.eamlocationstatemodelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstatemodelid'] == tempValue['eamlocationstatemodelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocationstatemodels\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocationstatemodels\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstatemodelid, tempValue.eamlocationstatemodelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstatemodelid'] == tempValue['eamlocationstatemodelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamlocationstatemodels\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstatemodelid, tempValue.eamlocationstatemodelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstatemodelid'] == tempValue['eamlocationstatemodelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationstatemodels\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationstatemodels\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstatemodelid, tempValue.eamlocationstatemodelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstatemodel 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstatemodelid']; + const matchArray:any = new RegExp(/^\/eamlocationstatemodels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstatemodelid, tempValue.eamlocationstatemodelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamlocation-states/eamlocation-states.ts b/app_AssetManagement/src/mock/entity/eamlocation-states/eamlocation-states.ts new file mode 100644 index 0000000..630f5c9 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamlocation-states/eamlocation-states.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationstates\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationstates\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamlocationstates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamlocationstates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamlocationstates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstateid, tempValue.eamlocationstateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamlocationstates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamlocationstates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstateid, tempValue.eamlocationstateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstateid'] == tempValue['eamlocationstateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocationstates\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocationstates\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstateid, tempValue.eamlocationstateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstateid'] == tempValue['eamlocationstateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamlocationstates\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationstateid, tempValue.eamlocationstateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationstateid'] == tempValue['eamlocationstateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationstates\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationstates\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstateid, tempValue.eamlocationstateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationstate 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationstateid']; + const matchArray:any = new RegExp(/^\/eamlocationstates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationstateid, tempValue.eamlocationstateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamlocation-types/eamlocation-types.ts b/app_AssetManagement/src/mock/entity/eamlocation-types/eamlocation-types.ts new file mode 100644 index 0000000..8ce9480 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamlocation-types/eamlocation-types.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationtypes\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocationtypes\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamlocationtypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamlocationtypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamlocationtypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationtypeid, tempValue.eamlocationtypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamlocationtypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamlocationtypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationtypeid, tempValue.eamlocationtypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationtypeid'] == tempValue['eamlocationtypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocationtypes\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocationtypes\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationtypeid, tempValue.eamlocationtypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationtypeid'] == tempValue['eamlocationtypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamlocationtypes\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationtypeid, tempValue.eamlocationtypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationtypeid'] == tempValue['eamlocationtypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationtypes\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocationtypes\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationtypeid, tempValue.eamlocationtypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocationtype 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationtypeid']; + const matchArray:any = new RegExp(/^\/eamlocationtypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationtypeid, tempValue.eamlocationtypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamlocations/eamlocations.ts b/app_AssetManagement/src/mock/entity/eamlocations/eamlocations.ts new file mode 100644 index 0000000..6681cc8 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamlocations/eamlocations.ts @@ -0,0 +1,512 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocations\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamlocations\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamlocations\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamlocations\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamlocations\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationid, tempValue.eamlocationid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationid, tempValue.eamlocationid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationid'] == tempValue['eamlocationid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationid, tempValue.eamlocationid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationid'] == tempValue['eamlocationid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamlocationid, tempValue.eamlocationid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamlocationid'] == tempValue['eamlocationid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchChild +mock.onGet(new RegExp(/^\/eamlocations\/fetchchild$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchChild"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchChild +mock.onGet(new RegExp(/^\/eamlocations\/fetchchild(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchChild"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// FetchChildLocation +mock.onGet(new RegExp(/^\/eamlocations\/fetchchildlocation$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchChildLocation"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchChildLocation +mock.onGet(new RegExp(/^\/eamlocations\/fetchchildlocation(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchChildLocation"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// FetchTop +mock.onGet(new RegExp(/^\/eamlocations\/fetchtop$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchTop"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchTop +mock.onGet(new RegExp(/^\/eamlocations\/fetchtop(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: FetchTop"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationid, tempValue.eamlocationid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamlocation 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamlocationid, tempValue.eamlocationid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eammonitor-points/eammonitor-points.ts b/app_AssetManagement/src/mock/entity/eammonitor-points/eammonitor-points.ts new file mode 100644 index 0000000..2e075a4 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eammonitor-points/eammonitor-points.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eammonitorpoints\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eammonitorpoints\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eammonitorpoints\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eammonitorpoints\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eammonitorpoints\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eammonitorpointid, tempValue.eammonitorpointid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eammonitorpoints\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eammonitorpoints\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eammonitorpointid, tempValue.eammonitorpointid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eammonitorpointid'] == tempValue['eammonitorpointid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eammonitorpoints\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eammonitorpoints\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eammonitorpointid, tempValue.eammonitorpointid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eammonitorpointid'] == tempValue['eammonitorpointid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eammonitorpoints\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eammonitorpointid, tempValue.eammonitorpointid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eammonitorpointid'] == tempValue['eammonitorpointid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eammonitorpoints\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eammonitorpoints\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eammonitorpointid, tempValue.eammonitorpointid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eammonitorpoint 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eammonitorpointid']; + const matchArray:any = new RegExp(/^\/eammonitorpoints\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eammonitorpointid, tempValue.eammonitorpointid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamplan-cdts/eamplan-cdts.ts b/app_AssetManagement/src/mock/entity/eamplan-cdts/eamplan-cdts.ts new file mode 100644 index 0000000..495eefe --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamplan-cdts/eamplan-cdts.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplancdts\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplancdts\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamplancdts\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamplancdts\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamplancdts\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplancdtid, tempValue.eamplancdtid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamplancdts\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamplancdts\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplancdtid, tempValue.eamplancdtid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplancdtid'] == tempValue['eamplancdtid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamplancdts\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamplancdts\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplancdtid, tempValue.eamplancdtid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplancdtid'] == tempValue['eamplancdtid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamplancdts\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplancdtid, tempValue.eamplancdtid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplancdtid'] == tempValue['eamplancdtid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplancdts\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplancdts\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplancdtid, tempValue.eamplancdtid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplancdt 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplancdtid']; + const matchArray:any = new RegExp(/^\/eamplancdts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplancdtid, tempValue.eamplancdtid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamplan-lines/eamplan-lines.ts b/app_AssetManagement/src/mock/entity/eamplan-lines/eamplan-lines.ts new file mode 100644 index 0000000..3c5093c --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamplan-lines/eamplan-lines.ts @@ -0,0 +1,1193 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplanlines\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplanlines\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamplanlines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamplanlines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamplanlines\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamplanlines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamplanlines\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanlineid'] == tempValue['eamplanlineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamplanlines\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamplanlines\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanlineid'] == tempValue['eamplanlineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamplanlines\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanlineid'] == tempValue['eamplanlineid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplanlines\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplanlines\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanline 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanlineid']; + const matchArray:any = new RegExp(/^\/eamplanlines\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanlineid, tempValue.eamplanlineid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamplan-schedules/eamplan-schedules.ts b/app_AssetManagement/src/mock/entity/eamplan-schedules/eamplan-schedules.ts new file mode 100644 index 0000000..0fed848 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamplan-schedules/eamplan-schedules.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplanschedules\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplanschedules\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamplanschedules\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamplanschedules\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamplanschedules\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanscheduleid, tempValue.eamplanscheduleid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamplanschedules\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamplanschedules\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanscheduleid, tempValue.eamplanscheduleid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanscheduleid'] == tempValue['eamplanscheduleid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamplanschedules\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamplanschedules\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanscheduleid, tempValue.eamplanscheduleid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanscheduleid'] == tempValue['eamplanscheduleid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamplanschedules\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanscheduleid, tempValue.eamplanscheduleid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanscheduleid'] == tempValue['eamplanscheduleid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplanschedules\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplanschedules\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanscheduleid, tempValue.eamplanscheduleid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplanschedule 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanscheduleid']; + const matchArray:any = new RegExp(/^\/eamplanschedules\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanscheduleid, tempValue.eamplanscheduleid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamplans/eamplans.ts b/app_AssetManagement/src/mock/entity/eamplans/eamplans.ts new file mode 100644 index 0000000..f728a5a --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamplans/eamplans.ts @@ -0,0 +1,922 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplans\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamplans\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamplans\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamplans\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamplans\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamplans\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamplans\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanid'] == tempValue['eamplanid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamplans\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamplans\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanid'] == tempValue['eamplanid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamplans\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamplanid'] == tempValue['eamplanid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplans\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplans\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamplan 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamplanid, tempValue.eamplanid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamproducts/eamproducts.ts b/app_AssetManagement/src/mock/entity/eamproducts/eamproducts.ts new file mode 100644 index 0000000..23c5851 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamproducts/eamproducts.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamproducts\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamproducts\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamproducts\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamproducts\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamproducts\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.productid, tempValue.productid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamproducts\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamproducts\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.productid, tempValue.productid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['productid'] == tempValue['productid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamproducts\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamproducts\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.productid, tempValue.productid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['productid'] == tempValue['productid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamproducts\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.productid, tempValue.productid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['productid'] == tempValue['productid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamproducts\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamproducts\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.productid, tempValue.productid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamproduct 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['productid']; + const matchArray:any = new RegExp(/^\/eamproducts\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.productid, tempValue.productid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamservice-levels/eamservice-levels.ts b/app_AssetManagement/src/mock/entity/eamservice-levels/eamservice-levels.ts new file mode 100644 index 0000000..2e21308 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamservice-levels/eamservice-levels.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamservicelevels\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamservicelevels\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamservicelevels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamservicelevels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamservicelevels\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamservicelevelid, tempValue.eamservicelevelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamservicelevels\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamservicelevels\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamservicelevelid, tempValue.eamservicelevelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamservicelevelid'] == tempValue['eamservicelevelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamservicelevels\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamservicelevels\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamservicelevelid, tempValue.eamservicelevelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamservicelevelid'] == tempValue['eamservicelevelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamservicelevels\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamservicelevelid, tempValue.eamservicelevelid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamservicelevelid'] == tempValue['eamservicelevelid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamservicelevels\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamservicelevels\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamservicelevelid, tempValue.eamservicelevelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamservicelevel 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamservicelevelid']; + const matchArray:any = new RegExp(/^\/eamservicelevels\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamservicelevelid, tempValue.eamservicelevelid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamspare-parts-groups/eamspare-parts-groups.ts b/app_AssetManagement/src/mock/entity/eamspare-parts-groups/eamspare-parts-groups.ts new file mode 100644 index 0000000..8e4abcf --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamspare-parts-groups/eamspare-parts-groups.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamsparepartsgroups\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamsparepartsgroups\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamsparepartsgroups\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamsparepartsgroups\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsgroupid, tempValue.eamsparepartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamsparepartsgroups\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamsparepartsgroupid, tempValue.eamsparepartsgroupid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamsparepartsgroupid'] == tempValue['eamsparepartsgroupid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamsparepartsgroupid, tempValue.eamsparepartsgroupid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamsparepartsgroupid'] == tempValue['eamsparepartsgroupid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamsparepartsgroupid, tempValue.eamsparepartsgroupid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamsparepartsgroupid'] == tempValue['eamsparepartsgroupid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsgroupid, tempValue.eamsparepartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartsgroup 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsgroupid, tempValue.eamsparepartsgroupid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamspare-parts-pros/eamspare-parts-pros.ts b/app_AssetManagement/src/mock/entity/eamspare-parts-pros/eamspare-parts-pros.ts new file mode 100644 index 0000000..328b271 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamspare-parts-pros/eamspare-parts-pros.ts @@ -0,0 +1,651 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamsparepartspros\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamsparepartspros\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamsparepartspros\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamsparepartspros\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamsparepartspros\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamsparepartspros\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamsparepartspros\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamsparepartsproid'] == tempValue['eamsparepartsproid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamsparepartspros\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamsparepartspros\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamsparepartsproid'] == tempValue['eamsparepartsproid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamsparepartspros\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamsparepartsproid'] == tempValue['eamsparepartsproid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamsparepartspros\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamsparepartspros\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsgroupid','eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartsgroups\/([a-zA-Z0-9\-\;]{1,35})\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamsparepartspro 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamsparepartsproid']; + const matchArray:any = new RegExp(/^\/eamsparepartspros\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamsparepartsproid, tempValue.eamsparepartsproid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamwork-orders/eamwork-orders.ts b/app_AssetManagement/src/mock/entity/eamwork-orders/eamwork-orders.ts new file mode 100644 index 0000000..0c56793 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamwork-orders/eamwork-orders.ts @@ -0,0 +1,2952 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamworkorders\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamworkorders\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamworkorders\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamworkorders\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamworkorders\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Select +mock.onGet(new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Create +mock.onPost(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamworkorders\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Update +mock.onPut(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamworkorders\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['workorderid'] == tempValue['workorderid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + + + + + + + + + + + + + + + + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// GetDraft +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamworkorders\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// CheckKey +mock.onPost(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamworkorders\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['workorderid'] == tempValue['workorderid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + + +// Save +mock.onPost(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamworkorders\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['workorderid'] == tempValue['workorderid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchchildwo$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamworkorders\/fetchchildwo$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchChildWO +mock.onGet(new RegExp(/^\/eamworkorders\/fetchchildwo(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchChildWO"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + + +// FetchDefault +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid']; + let tempValue: any = {}; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/fetchdefault$/).exec(config.url); + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + if (items.length > 0 && paramArray.length > 0) { + paramArray.forEach((paramkey: any) => { + if (tempValue[paramkey] && tempValue[paramkey].indexOf(";") > 0) { + let keysGrounp: Array = tempValue[paramkey].split(new RegExp(/[\;]/)); + let tempArray: Array = []; + keysGrounp.forEach((singlekey: any) => { + let _items = items.filter((item: any) => { return item[paramkey] == singlekey }); + if(_items.length >0){ + tempArray.push(..._items); + } + }) + items = tempArray; + } else { + items = items.filter((item: any) => { return item[paramkey] == tempValue[paramkey] }); + } + }) + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(items); + console.groupEnd(); + console.groupEnd(); + return [status, items]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamworkorders\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamworkorders\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 + +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Remove +mock.onDelete(new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamlocationid','assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamlocations\/([a-zA-Z0-9\-\;]{1,35})\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamplanid','workorderid']; + const matchArray:any = new RegExp(/^\/eamplans\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['assetid','workorderid']; + const matchArray:any = new RegExp(/^\/eamassets\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamapplyid','workorderid']; + const matchArray:any = new RegExp(/^\/eamapplies\/([a-zA-Z0-9\-\;]{1,35})\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamworkorder 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['workorderid']; + const matchArray:any = new RegExp(/^\/eamworkorders\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.workorderid, tempValue.workorderid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamwostates/eamwostates.ts b/app_AssetManagement/src/mock/entity/eamwostates/eamwostates.ts new file mode 100644 index 0000000..07f3f39 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamwostates/eamwostates.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamwostates\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamwostates\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamwostates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamwostates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamwostates\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamwostateid, tempValue.eamwostateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamwostates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamwostates\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamwostateid, tempValue.eamwostateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamwostateid'] == tempValue['eamwostateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamwostates\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamwostates\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamwostateid, tempValue.eamwostateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamwostateid'] == tempValue['eamwostateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamwostates\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamwostateid, tempValue.eamwostateid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamwostateid'] == tempValue['eamwostateid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamwostates\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamwostates\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamwostateid, tempValue.eamwostateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwostate 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwostateid']; + const matchArray:any = new RegExp(/^\/eamwostates\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamwostateid, tempValue.eamwostateid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/eamwotypes/eamwotypes.ts b/app_AssetManagement/src/mock/entity/eamwotypes/eamwotypes.ts new file mode 100644 index 0000000..f5f2dd0 --- /dev/null +++ b/app_AssetManagement/src/mock/entity/eamwotypes/eamwotypes.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamwotypes\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/eamwotypes\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/eamwotypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/eamwotypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/eamwotypes\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamwotypeid, tempValue.eamwotypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/eamwotypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/eamwotypes\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamwotypeid, tempValue.eamwotypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamwotypeid'] == tempValue['eamwotypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/eamwotypes\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/eamwotypes\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamwotypeid, tempValue.eamwotypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamwotypeid'] == tempValue['eamwotypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/eamwotypes\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.eamwotypeid, tempValue.eamwotypeid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['eamwotypeid'] == tempValue['eamwotypeid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamwotypes\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/eamwotypes\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamwotypeid, tempValue.eamwotypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:eamwotype 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['eamwotypeid']; + const matchArray:any = new RegExp(/^\/eamwotypes\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.eamwotypeid, tempValue.eamwotypeid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/entity/woorigins/woorigins.ts b/app_AssetManagement/src/mock/entity/woorigins/woorigins.ts new file mode 100644 index 0000000..6c13e6c --- /dev/null +++ b/app_AssetManagement/src/mock/entity/woorigins/woorigins.ts @@ -0,0 +1,380 @@ +import qs from 'qs'; +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); + +// 模拟数据 +const mockDatas: Array = [ +]; + + +//getwflink +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/woorigins\/[a-zA-Z0-9\-\;]+\/usertasks\/[a-zA-Z0-9\-\;]+\/ways$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: getwflink"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status,[ + {"sequenceFlowId":"dfdsfdsfdsfdsfds","sequenceFlowName":"同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddlfldldfldsfds","refViewKey":""}, + {"sequenceFlowId":"ddssdfdfdfdfsfdf","sequenceFlowName":"不同意", + "taskId":"aaaaddddccccddddd","processDefinitionKey":"support-workorders-approve-v1", + "processInstanceId":"ddfdsldlfdlldsf","refViewKey":"workorder_ltform_editview"} + ]]; +}); + +// getwfstep +mock.onGet(new RegExp(/^\/wfcore\/ibizassetmanagement-app-assetmanagement\/woorigins\/process-definitions-nodes$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: getwfstep"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, [ + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-dfdfd", + "userTaskName":"待审", + "cnt":0, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1" + }, + {"userTaskId":"sddfddfd-dfdf-fdfd-fdf-87927", + "userTaskName":"待分配", + "cnt":3, + "processDefinitionKey":"support-workorders-approve-v1", + "processDefinitionName":"工单审批流程v1"} + ]]; +}); + +// createBatch +mock.onPost(new RegExp(/^\/woorigins\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: createBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// updateBatch +mock.onPut(new RegExp(/^\/woorigins\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: updateBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + +// removeBatch +mock.onDelete(new RegExp(/^\/woorigins\/batch$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: removeBatch"); + console.table({url:config.url, method: config.method, data:config.data}); + console.groupEnd(); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, {}]; + } + return [status, {}]; +}); + + +// Select +mock.onGet(new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})\/select$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: Select"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})\/select$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.wooriginid, tempValue.wooriginid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items); + console.groupEnd(); + console.groupEnd(); + return [status, _items]; +}); + +// Create +mock.onPost(new RegExp(/^\/woorigins\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: Create"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas[0]); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas[0]]; +}); + +// Update +mock.onPut(new RegExp(/^\/woorigins\/?([a-zA-Z0-9\-\;]{0,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: Update"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.wooriginid, tempValue.wooriginid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['wooriginid'] == tempValue['wooriginid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// GetDraft +mock.onGet(new RegExp(/^\/woorigins\/getdraft$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: GetDraft"); + console.table({url:config.url, method: config.method, data:config.data}); + // GetDraft + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table({}); + console.groupEnd(); + console.groupEnd(); + return [status, {}]; +}); + +// CheckKey +mock.onPost(new RegExp(/^\/woorigins\/?([a-zA-Z0-9\-\;]{0,35})\/checkkey$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: CheckKey"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})\/checkkey$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.wooriginid, tempValue.wooriginid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['wooriginid'] == tempValue['wooriginid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// Save +mock.onPost(new RegExp(/^\/woorigins\/?([a-zA-Z0-9\-\;]{0,35})\/save$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: Save"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})\/save$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + //let items = mockDatas ? mockDatas : []; + //let _items = items.find((item: any) => Object.is(item.wooriginid, tempValue.wooriginid)); + let data = JSON.parse(config.data); + mockDatas.forEach((item)=>{ + if(item['wooriginid'] == tempValue['wooriginid'] ){ + for(let value in data){ + if(item.hasOwnProperty(value)){ + item[value] = data[value]; + } + } + } + }) + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(data); + console.groupEnd(); + console.groupEnd(); + return [status, data]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/woorigins\/fetchdefault$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(mockDatas); + console.groupEnd(); + console.groupEnd(); + return [status, mockDatas ? mockDatas : []]; +}); + +// FetchDefault +mock.onGet(new RegExp(/^\/woorigins\/fetchdefault(\?[\w-./?%&=,]*)*$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: FetchDefault"); + console.table({url:config.url, method: config.method, data:config.data}); + if(config.url.includes('page')){ + let url = config.url.split('?')[1]; + let params = qs.parse(url); + Object.assign(config, params); + } + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + let total = mockDatas.length; + let records: Array = []; + if(!config.page || !config.size){ + records = mockDatas; + }else{ + if((config.page-1)*config.size < total){ + records = mockDatas.slice(config.page,config.size); + } + } + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(records ? records : []); + console.groupEnd(); + console.groupEnd(); + return [status, records ? records : []]; +}); +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 +// URI参数传递情况未实现 + + +// Remove +mock.onDelete(new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: Remove"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.wooriginid, tempValue.wooriginid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); + +// Get +mock.onGet(new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})$/)).reply((config: any) => { + console.groupCollapsed("实体:woorigin 方法: Get"); + console.table({url:config.url, method: config.method, data:config.data}); + let status = MockAdapter.mockStatus(config); + if (status !== 200) { + return [status, null]; + } + const paramArray:Array = ['wooriginid']; + const matchArray:any = new RegExp(/^\/woorigins\/([a-zA-Z0-9\-\;]{1,35})$/).exec(config.url); + let tempValue: any = {}; + if(matchArray && matchArray.length >1 && paramArray && paramArray.length >0){ + paramArray.forEach((item: any, index: number) => { + Object.defineProperty(tempValue, item, { + enumerable: true, + value: matchArray[index + 1] + }); + }); + } + let items = mockDatas ? mockDatas : []; + let _items = items.find((item: any) => Object.is(item.wooriginid, tempValue.wooriginid)); + console.groupCollapsed("response数据 status: "+status+" data: "); + console.table(_items?_items:{}); + console.groupEnd(); + console.groupEnd(); + return [status, _items?_items:{}]; +}); diff --git a/app_AssetManagement/src/mock/index.ts b/app_AssetManagement/src/mock/index.ts new file mode 100644 index 0000000..d8d6408 --- /dev/null +++ b/app_AssetManagement/src/mock/index.ts @@ -0,0 +1,39 @@ +// 预置 api 接口对象 +import './appdata/appdata'; +import './codelist/codelist'; +import './viewconfig/viewconfig'; +import './portlet/portlet'; +import './login/login'; +import './upload/upload'; + +// 实体级接口对象 +import './entity/eamdocuments/eamdocuments'; +import './entity/eamlocation-state-models/eamlocation-state-models'; +import './entity/eamlocation-types/eamlocation-types'; +import './entity/eamwork-orders/eamwork-orders'; +import './entity/eamlocations/eamlocations'; +import './entity/eammonitor-points/eammonitor-points'; +import './entity/eamasset-states/eamasset-states'; +import './entity/eamlocation-states/eamlocation-states'; +import './entity/eamasset-types/eamasset-types'; +import './entity/eamasset-state-model-lines/eamasset-state-model-lines'; +import './entity/woorigins/woorigins'; +import './entity/eamapply-types/eamapply-types'; +import './entity/eamproducts/eamproducts'; +import './entity/eamservice-levels/eamservice-levels'; +import './entity/eamplan-cdts/eamplan-cdts'; +import './entity/eamplans/eamplans'; +import './entity/eamspare-parts-pros/eamspare-parts-pros'; +import './entity/eamapply-state-model-lines/eamapply-state-model-lines'; +import './entity/eamspare-parts-groups/eamspare-parts-groups'; +import './entity/eamplan-lines/eamplan-lines'; +import './entity/eamlocation-state-model-lines/eamlocation-state-model-lines'; +import './entity/eamplan-schedules/eamplan-schedules'; +import './entity/eamasset-parts-groups/eamasset-parts-groups'; +import './entity/eamassets/eamassets'; +import './entity/eamapply-states/eamapply-states'; +import './entity/eamapplys/eamapplys'; +import './entity/eamwostates/eamwostates'; +import './entity/eamdocument-types/eamdocument-types'; +import './entity/eamasset-state-models/eamasset-state-models'; +import './entity/eamwotypes/eamwotypes'; diff --git a/app_AssetManagement/src/mock/login/login.ts b/app_AssetManagement/src/mock/login/login.ts new file mode 100644 index 0000000..c6ecf4e --- /dev/null +++ b/app_AssetManagement/src/mock/login/login.ts @@ -0,0 +1,28 @@ +import { MockAdapter } from '../mock-adapter'; +const mock = MockAdapter.getInstance(); + +import Mock from 'mockjs' +const Random = Mock.Random; + +// 登录 +mock.onPost('v7/login').reply((config: any) => { + const { data: _data } = config; + const user: any = {}; + let status = 200; + try { + Object.assign(user, JSON.parse(_data)); + } catch (error) { + status = 400; + } + if (!Object.is(user.loginname, 'guest') || !Object.is(user.password, 'guest')) { + status = 400; + } + if (status !== 200) { + return [status, null]; + } + return [status, { + token: Random.string(128), + user: Object.assign({}, user), + }]; +}); + diff --git a/app_AssetManagement/src/mock/mock-adapter.ts b/app_AssetManagement/src/mock/mock-adapter.ts new file mode 100644 index 0000000..e3c1bb1 --- /dev/null +++ b/app_AssetManagement/src/mock/mock-adapter.ts @@ -0,0 +1,59 @@ +import mockAdapter1 from 'axios-mock-adapter'; +import axios from 'axios'; + + +/** + * Http net 对象 + * 调用 getInstance() 获取实例 + * + * @class Http + */ +export class MockAdapter { + + /** + * Creates an instance of MockAdapter. + * + * @memberof MockAdapter + */ + private constructor() { + } + + /** + * 获取 Http 单例对象 + * + * @static + * @returns {Http} + * @memberof Http + */ + public static getInstance(): mockAdapter1 { + if (!MockAdapter.mockAdapter) { + MockAdapter.mockAdapter = new mockAdapter1(axios,{delayResponse:500}); + } + return this.mockAdapter; + } + + /** + * 模拟请求结果状态 + * + * @static + * @param {*} config + * @returns {number} + * @memberof MockAdapter + */ + public static mockStatus(config: any): number { + let status = 200; + const { headers: _headers } = config; + // status = _headers.Authorization && !Object.is(_headers.Authorization, '') ? 200 : 401; + return status; + } + + /** + * 单例变量声明 + * + * @private + * @static + * @type {Http} + * @memberof Http + */ + private static mockAdapter: mockAdapter1; +} \ No newline at end of file diff --git a/app_AssetManagement/src/mock/portlet/portlet.ts b/app_AssetManagement/src/mock/portlet/portlet.ts new file mode 100644 index 0000000..3d59810 --- /dev/null +++ b/app_AssetManagement/src/mock/portlet/portlet.ts @@ -0,0 +1,13 @@ +import { MockAdapter } from '../mock-adapter'; +const mock = MockAdapter.getInstance(); + +import Mock from 'mockjs' +const Random = Mock.Random; + +// 获取全部数组 +mock.onGet('./assets/json/portlet-data.json').reply((config: any) => { + let status = MockAdapter.mockStatus(config); + return [status, + [ + ]]; +}); \ No newline at end of file diff --git a/app_AssetManagement/src/mock/upload/upload.ts b/app_AssetManagement/src/mock/upload/upload.ts new file mode 100644 index 0000000..7fb24cd --- /dev/null +++ b/app_AssetManagement/src/mock/upload/upload.ts @@ -0,0 +1,22 @@ +import Mock from 'mockjs' +import { MockAdapter } from '@/mock/mock-adapter'; +const mock = MockAdapter.getInstance(); +const Random = Mock.Random; + +// ajax上传 +Mock.mock(RegExp(new RegExp(/^\.\.\/ibizutil\/upload.*$/)),"post",(ops:any) => { // 拦截ajax请求,调用函数 + console.log(ops) // 先看一下这个ops是什么 + console.log(ops.body) + return { + "filename": "xxx.png", + "fileid": Random.string("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",32) + }; +}); + +// axios上传 +mock.onPost(new RegExp(/^\.\.\/ibizutil\/upload.*$/)).reply((config: any) => { + return [200, { + "filename": "xxx.png", + "fileid": Random.string("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",32) + }]; +}); \ No newline at end of file diff --git a/app_AssetManagement/src/mock/viewconfig/viewconfig.ts b/app_AssetManagement/src/mock/viewconfig/viewconfig.ts new file mode 100644 index 0000000..9aa57dc --- /dev/null +++ b/app_AssetManagement/src/mock/viewconfig/viewconfig.ts @@ -0,0 +1,1003 @@ +import { MockAdapter } from '../mock-adapter'; +const mock = MockAdapter.getInstance(); + +import Mock from 'mockjs' + +// 获取studio链接数据 +mock.onGet('./assets/json/view-config.json').reply((config: any) => { + let status = MockAdapter.mockStatus(config); + return [status,{ + "eamassetstategridview": { + "title": "资产状态信息", + "caption": "资产状态", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateGridView", + "viewtag": "00fcbd6336b5d40a31a2c3d5c346d16c" + }, + "eamdocumentassettypedocgridview": { + "title": "文档表格视图", + "caption": "文档", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentAssetTypeDocGridView", + "viewtag": "04760f08f434367b552fa8ab8cf191dd" + }, + "wooriginpickupview": { + "title": "工单来源数据选择视图", + "caption": "工单来源", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "WOOriginPickupView", + "viewtag": "06ee1c500b1cb4aa576fb3b62b4ddb35" + }, + "eamassettreeexpview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DETREEEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTreeExpView", + "viewtag": "075e8b706da4cd2328cf2239fd6f4d06" + }, + "eamassettypeinfoview": { + "title": "资产类型信息", + "caption": "资产类型", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeInfoView", + "viewtag": "0a6cec446cd7b36771eccacdf2ce4b54" + }, + "eamlocationstateeditview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateEditView", + "viewtag": "0b6fa9e6ebc1f6d1afaf3c19585840b0" + }, + "eamapplyinfo_mainview": { + "title": "维护申请主信息", + "caption": "维护申请", + "viewtype": "DEEDITVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyInfo_MainView", + "viewtag": "0ef17d615938cdc829d919042267c23a" + }, + "eamassettypeinfo_mainview": { + "title": "资产类型主信息", + "caption": "资产类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeInfo_MainView", + "viewtag": "0f5279839c91bc31fde9eebfa1b00f36" + }, + "eamassetpartsgroupassetpartsgridview": { + "title": "备件包相关资产", + "caption": "资产备件包", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPartsGroupAssetPartsGridView", + "viewtag": "106abbe5884e49ca4506a105bd3d2031" + }, + "eamsparepartsgroupeditview": { + "title": "备件包编辑视图", + "caption": "备件包", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupEditView", + "viewtag": "11699dae0b3815e39fbd72e14830f598" + }, + "eamlocationtreeexpview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DETREEEXPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTreeExpView", + "viewtag": "135343573fd869053d84ecc2f48ffd49" + }, + "eamplanassetplangridview": { + "title": "维护计划信息", + "caption": "维护计划", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanAssetPlanGridView", + "viewtag": "137ce0ca66c0d59f25a3a7c93496b1e6" + }, + "eamassetstatemodellinegridview": { + "title": "资产状态模型明细表格视图", + "caption": "资产状态模型明细", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelLineGridView", + "viewtag": "15caf81deb1f02479030f14d90ce5c3e" + }, + "eamlocationeditview": { + "title": "功能位置编辑", + "caption": "功能位置", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationEditView", + "viewtag": "1769804cd7ab51624ac3c88c2090363b" + }, + "eamapplytypeeditview": { + "title": "维护申请类型编辑", + "caption": "维护申请类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypeEditView", + "viewtag": "1d768bbdaf3091c5d7131992a8ec7412" + }, + "eamlocationtreechildgridview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTreeChildGridView", + "viewtag": "21edc7e27023f06aac51f150f3fb1f10" + }, + "eamassetstateeditview": { + "title": "资产状态信息", + "caption": "资产状态", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateEditView", + "viewtag": "251816f09cb8f040c9309992cf957370" + }, + "eamassetpartsgrouppartsassetgridview": { + "title": "备件包相关资产", + "caption": "资产备件包", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPartsGroupPartsAssetGridView", + "viewtag": "288c1be7c88b3547179327bd2e2d7a5a" + }, + "eamlocationpickupview": { + "title": "功能位置数据选择视图", + "caption": "功能位置", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationPickupView", + "viewtag": "2b28313d0f3925fa44b8683eb5ea54d6" + }, + "eamworkordermastertabinfoview": { + "title": "工单信息", + "caption": "工单", + "viewtype": "DETABEXPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderMasterTabInfoView", + "viewtag": "2fc820c040c33d878fc98791e3ad6d80" + }, + "eamassetstatemodelgridview": { + "title": "资产状态模型信息", + "caption": "资产状态模型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelGridView", + "viewtag": "30027967566375f388f110149cf48b49" + }, + "eamworkorderquickcreateview": { + "title": "快速新建", + "caption": "工单", + "viewtype": "DEOPTVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderQuickCreateView", + "viewtag": "326f3b663c055e3f1ec6fa0d2c3f0223" + }, + "wooriginpickupgridview": { + "title": "工单来源选择表格视图", + "caption": "工单来源", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "WOOriginPickupGridView", + "viewtag": "34cf27e1eddc36c197176c5632b97179" + }, + "eamworkorderinfo_mainview": { + "title": "工单主信息", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderInfo_MainView", + "viewtag": "35d4b9cdba8869e6da734043cbd4f9a8" + }, + "eamapplytypepickupgridview": { + "title": "维护申请类型选择表格视图", + "caption": "维护申请类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypePickupGridView", + "viewtag": "36033e61af0b1c58739674b69f745704" + }, + "eammonitorpointpickupview": { + "title": "测点数据选择视图", + "caption": "测点", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMMonitorPointPickupView", + "viewtag": "3b351d19dc35d9e1f2bc5e4baf98e9b8" + }, + "eamasseteditview": { + "title": "资产信息编辑", + "caption": "资产", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetEditView", + "viewtag": "3bac4846ece1082b8c3799d9a1fc7dde" + }, + "eamlocationstatemodelpickupview": { + "title": "功能位置状态模型数据选择视图", + "caption": "功能位置状态模型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelPickupView", + "viewtag": "3d676a12800fca23bec463d5c5217413" + }, + "eamdocumenttypegridview": { + "title": "文档类型信息", + "caption": "文档类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypeGridView", + "viewtag": "3fefaea52048336382356c9d224d17c1" + }, + "eamwotypegridview": { + "title": "工单类型表格视图", + "caption": "工单类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypeGridView", + "viewtag": "47c5acae861f30987e0ef5e7c4cc0b21" + }, + "eamlocationtypepickupview": { + "title": "功能位置类型数据选择视图", + "caption": "功能位置类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypePickupView", + "viewtag": "4a5dd0204cc256862db03b36fc570e71" + }, + "eamlocationtypegridview": { + "title": "功能位置类型信息", + "caption": "功能位置类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypeGridView", + "viewtag": "4c95ec14aa2de5370d9d81f7d85f4bd5" + }, + "eamassetsummaryview": { + "title": "资产数据看板视图", + "caption": "资产", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetSummaryView", + "viewtag": "4db903dc10459c98d4834775020d8b74" + }, + "eamapplyassetapplygridview": { + "title": "维护申请信息", + "caption": "维护申请", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyAssetApplyGridView", + "viewtag": "54b41ee0f64fc8764a9d3cf1559c09db" + }, + "eamapplytypepickupview": { + "title": "维护申请类型数据选择视图", + "caption": "维护申请类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypePickupView", + "viewtag": "580afbcfa6a1d32b3591d40eaa1b9d5a" + }, + "eamassettypepickupgridview": { + "title": "资产类型选择表格视图", + "caption": "资产类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypePickupGridView", + "viewtag": "58b301299902245cdd7dfd5ae23545b4" + }, + "eamapplygridview": { + "title": "维护申请信息", + "caption": "维护申请", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyGridView", + "viewtag": "5c77b6ea410878aa7297d299eb755563" + }, + "eamplaninfoview": { + "title": "维护计划信息", + "caption": "维护计划", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanInfoView", + "viewtag": "66df4099ca35ed7c25fe15aca40ea3a5" + }, + "eamapplystategridview": { + "title": "维护申请状态表格视图", + "caption": "维护申请状态", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyStateGridView", + "viewtag": "67367b30b36597f2b4f455b9738f4dd8" + }, + "eamworkorderassetwogridview": { + "title": "工单信息", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderAssetWOGridView", + "viewtag": "676593404c77c76b49ada7a06d45a25b" + }, + "eamwotypepickupview": { + "title": "工单类型数据选择视图", + "caption": "工单类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypePickupView", + "viewtag": "687ed577b14b3da7a542f17d0a1a6529" + }, + "eamservicelevelpickupview": { + "title": "服务等级数据选择视图", + "caption": "服务等级", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelPickupView", + "viewtag": "688cebc536955dbea3a807bd19d98fcc" + }, + "eamlocationtypepickupgridview": { + "title": "功能位置类型选择表格视图", + "caption": "功能位置类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypePickupGridView", + "viewtag": "6a395ea52232233416d9c7120518863d" + }, + "eamassetstatemodeleditview": { + "title": "资产状态模型编辑视图", + "caption": "资产状态模型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelEditView", + "viewtag": "6c2c69027dbbe13ab8d2732923487f59" + }, + "eamassetinfoview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetInfoView", + "viewtag": "6c816d46a07d56b2a9afca077d9bbfc3" + }, + "eamplansummaryview": { + "title": "维护计划主信息看板", + "caption": "维护计划", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanSummaryView", + "viewtag": "6e69be88d76554770ec8448800b6881d" + }, + "eamplaneditview": { + "title": "维护计划编辑视图", + "caption": "维护计划", + "viewtype": "DEEDITVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanEditView", + "viewtag": "71e5025e5eabed8ee7dbaff4bf24a189" + }, + "eamsparepartsproeditview": { + "title": "备件包物料编辑视图", + "caption": "备件包物料", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsPROEditView", + "viewtag": "720d2effd5c5d4802fb833e4506e6153" + }, + "eamsparepartspropartsprogridview": { + "title": "备件包下物料", + "caption": "备件包物料", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsPROPartsProGridView", + "viewtag": "7288de876c6d32c0bef31803e540ccbd" + }, + "eamassettypepickupview": { + "title": "资产类型数据选择视图", + "caption": "资产类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypePickupView", + "viewtag": "72c39b4fb4834276ae3933be232a2c90" + }, + "eamplaninfo_mainview": { + "title": "维护计划主信息", + "caption": "维护计划", + "viewtype": "DEEDITVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanInfo_MainView", + "viewtag": "77a4e1c6dd284b75b0db1c44937f3d8b" + }, + "eamworkordergridview": { + "title": "工单信息", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderGridView", + "viewtag": "78b197ae25df6180e6c02c8b1b670a29" + }, + "eamapplysummaryview": { + "title": "维护申请主信息看板", + "caption": "维护申请", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplySummaryView", + "viewtag": "7a8816b602f7aa58d702cb0743841f59" + }, + "eamlocationstatemodeleditview": { + "title": "功能位置状态模型信息", + "caption": "功能位置状态模型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelEditView", + "viewtag": "7bf1327f579d782d5cdb98528999a5e0" + }, + "eamdocumenteditview": { + "title": "文档编辑视图", + "caption": "文档", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentEditView", + "viewtag": "7d7cbe6f35cdf729007b90156298a515" + }, + "eamassetpartsgroupeditview": { + "title": "资产备件包编辑视图", + "caption": "资产备件包", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPartsGroupEditView", + "viewtag": "7d805e7ef99d4689b7b68c2c6247dceb" + }, + "eamplanlinegridview": { + "title": "计划步骤表格视图", + "caption": "计划步骤", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanLineGridView", + "viewtag": "7ecd11c1c5ee3add05dd5915be17cdb7" + }, + "eamsparepartsgrouppickupview": { + "title": "备件包数据选择视图", + "caption": "备件包", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupPickupView", + "viewtag": "81139a9fb0fce24a58db188651ba7155" + }, + "eamplanlineeditview": { + "title": "计划步骤编辑", + "caption": "计划步骤", + "viewtype": "DEEDITVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanLineEditView", + "viewtag": "82e6b21fb5252ac02580ad072b168cef" + }, + "eamworkorderchildwogridview": { + "title": "子工单表格", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderChildWOGridView", + "viewtag": "8a03ef5ec2679c20c8072339004dcaaf" + }, + "eamdocumenttypepickupgridview": { + "title": "文档类型选择表格视图", + "caption": "文档类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypePickupGridView", + "viewtag": "8dad4ab59adf6e7eb152878eb283da71" + }, + "eamworkordereditview": { + "title": "工单编辑视图", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderEditView", + "viewtag": "8e9374f1a99e9f5e7b70b37ea8c6936c" + }, + "eamassetpickupview": { + "title": "资产数据选择视图", + "caption": "资产", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPickupView", + "viewtag": "906130a9861c2b0cff3173c9e171c1d1" + }, + "eammonitorpointpickupgridview": { + "title": "测点选择表格视图", + "caption": "测点", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMMonitorPointPickupGridView", + "viewtag": "91dd54198b1e7777908d564a86bc548d" + }, + "eamapplyinfoview": { + "title": "维护申请信息", + "caption": "维护申请", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyInfoView", + "viewtag": "96e58ee9a57415beb8209aae53b14926" + }, + "eamdocumentgridview": { + "title": "文档信息", + "caption": "文档", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentGridView", + "viewtag": "9930ab7fa32bcb829b706489a25ca808" + }, + "eamworkorderpickupgridview": { + "title": "工单选择表格视图", + "caption": "工单", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderPickupGridView", + "viewtag": "99fce329ae1f308142b5b735a41769eb" + }, + "eamdocumenttypeeditview": { + "title": "文档类型编辑", + "caption": "文档类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypeEditView", + "viewtag": "9cfb79c7e6fd653338c0366c9d304384" + }, + "eamsparepartsgroupinfoview": { + "title": "备件包信息", + "caption": "备件包", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupInfoView", + "viewtag": "9d4bfdacbd01e6a5072e50c5ecb24e70" + }, + "eamsparepartsgroupinfo_mainview": { + "title": "备件包信息", + "caption": "备件包", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupInfo_MainView", + "viewtag": "9e6a4acf7233f5e1643cbbc7509480b6" + }, + "eamlocationstatemodelgridview": { + "title": "功能位置状态模型信息", + "caption": "功能位置状态模型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelGridView", + "viewtag": "9e9b3600ba892d31757bacef1dcc9458" + }, + "eamproductpickupgridview": { + "title": "产品选择表格视图", + "caption": "产品", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMPRODUCTPickupGridView", + "viewtag": "a0c0a1e17b2f207a526c5e4240267b11" + }, + "eamlocationstatelistexpview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DELISTEXPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateListExpView", + "viewtag": "a3d6a9a21765dd59afa2d3d20a99096c" + }, + "eamlocationinfo_mainview": { + "title": "功能位置编辑视图", + "caption": "功能位置", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationInfo_MainView", + "viewtag": "a82c591e524f7289432a30a5ccfa8908" + }, + "eamlocationstatepickupview": { + "title": "功能位置状态数据选择视图", + "caption": "功能位置状态", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStatePickupView", + "viewtag": "a9f7eb2645c6505a232a0a13742c42a7" + }, + "eamassetstatemodelpickupgridview": { + "title": "资产状态模型选择表格视图", + "caption": "资产状态模型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelPickupGridView", + "viewtag": "a9f86b6e01c06082f119369de0ee8f01" + }, + "eamassetstatemodellineeditview": { + "title": "资产状态模型明细编辑视图", + "caption": "资产状态模型明细", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelLineEditView", + "viewtag": "ad2a01fb2fd055e63d60260a18136d61" + }, + "eamassetstatepickupgridview": { + "title": "资产状态选择表格视图", + "caption": "资产状态", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStatePickupGridView", + "viewtag": "aec3c3b9b959ac67bf41fe45cca7808b" + }, + "eamassetinfo_mainview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetInfo_MainView", + "viewtag": "afb13d98ae97ebb876598388432f8c1d" + }, + "eamworkordermastersummaryview": { + "title": "概览", + "caption": "工单", + "viewtype": "DEPORTALVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderMasterSummaryView", + "viewtag": "b1d6c73a4090f7747188a191cbb59000" + }, + "eamlocationchildgridview": { + "title": "功能位置表格视图", + "caption": "功能位置", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationChildGridView", + "viewtag": "b24fce391aeca43222a1017b50ba40e2" + }, + "eamplanpickupgridview": { + "title": "维护计划选择表格视图", + "caption": "维护计划", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanPickupGridView", + "viewtag": "b3cc4865b65edc16f8ad37d87bda4bae" + }, + "eamlocationstatemodellineeditview": { + "title": "功能位置状态模型明细编辑视图", + "caption": "功能位置状态模型明细", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelLineEditView", + "viewtag": "b3d85711a6feb998249451ba167895d2" + }, + "eamassettypegridview": { + "title": "资产类型信息", + "caption": "资产类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeGridView", + "viewtag": "b4c8e0e90e3940abee6c5f4909fd0e00" + }, + "eamlocationstatepickupgridview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStatePickupGridView", + "viewtag": "b56347aaab650c59a8338876600c21e4" + }, + "eamsparepartsgroupgridview": { + "title": "备件包信息", + "caption": "备件包", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupGridView", + "viewtag": "b97ed65fd88f536ebb13419938b19e2d" + }, + "eamwotypepickupgridview": { + "title": "工单类型选择表格视图", + "caption": "工单类型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypePickupGridView", + "viewtag": "ba1263ca3437b411e86c330836d2a64b" + }, + "eamlocationstatemodelpickupgridview": { + "title": "功能位置状态模型选择表格视图", + "caption": "功能位置状态模型", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelPickupGridView", + "viewtag": "bb8b4b03a77ed63b8eb4ef3d62b669a6" + }, + "eamassetquickcreateview": { + "title": "资产快速新建视图", + "caption": "资产", + "viewtype": "DEOPTVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetQuickCreateView", + "viewtag": "bcdc34d8df9323426a402ba7b111fef2" + }, + "eamservicelevelpickupgridview": { + "title": "服务等级选择表格视图", + "caption": "服务等级", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelPickupGridView", + "viewtag": "bea6d22548223244eec14d59f1471c6e" + }, + "eamworkordermasterinfoview": { + "title": "工单编辑视图", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderMasterInfoView", + "viewtag": "c2b1b2ac3d7b7e4916f77023fe667b63" + }, + "eamassetlocationassetgridview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetLocationAssetGridView", + "viewtag": "c6a93309b2a9d12617cdbaf29731d2a4" + }, + "eamassetchildgridview": { + "title": "资产表格视图", + "caption": "资产", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetChildGridView", + "viewtag": "c8bf8b682adc459f7f285328199ba4b4" + }, + "eamplanquickcreateview": { + "title": "快速新建", + "caption": "维护计划", + "viewtype": "DEOPTVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanQuickCreateView", + "viewtag": "c98258106bd8b2d56bbadf7a67179c2e" + }, + "eamserviceleveleditview": { + "title": "服务等级编辑", + "caption": "服务等级", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelEditView", + "viewtag": "ca41431df21901bec3c62db4097e36d4" + }, + "eamapplytypegridview": { + "title": "维护申请类型信息", + "caption": "维护申请类型", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyTypeGridView", + "viewtag": "ca66d81a69c0f084e3f7cf1e99ae9d28" + }, + "eamlocationsummaryview": { + "title": "功能位置数据看板视图", + "caption": "功能位置", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationSummaryView", + "viewtag": "cc29cbcb0398aa069d4b05f3469f0377" + }, + "eamsparepartsgroupdashboardview": { + "title": "备件包数据看板视图", + "caption": "备件包", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupDashboardView", + "viewtag": "d12c50a13617e683c9ee4efee5f46906" + }, + "eamassettypeeditview": { + "title": "资产类型信息", + "caption": "资产类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeEditView", + "viewtag": "d1b8ecb4e8fc6808282289a1ee763fb8" + }, + "eamlocationinfoview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DETABEXPVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationInfoView", + "viewtag": "d3466c5c60a573062d543896976bf68c" + }, + "appindexview": { + "title": "应用首页视图", + "caption": "资产管理", + "viewtype": "APPINDEXVIEW", + "viewmodule": "Base", + "viewname": "AppIndexView", + "viewtag": "D44132B9-5261-4008-A146-6287A80D5D31" + }, + "eamassetstatemodelpickupview": { + "title": "资产状态模型数据选择视图", + "caption": "资产状态模型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStateModelPickupView", + "viewtag": "d69c20799b79d71f84ed52f036b3490c" + }, + "eamproductpickupview": { + "title": "产品数据选择视图", + "caption": "产品", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMPRODUCTPickupView", + "viewtag": "d768b752c0404797713700991cbf95c5" + }, + "eamdocumenttypepickupview": { + "title": "文档类型数据选择视图", + "caption": "文档类型", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMDocumentTypePickupView", + "viewtag": "d7f78755bc3c9a5855de8a2fc67e668e" + }, + "eamplangridview": { + "title": "维护计划信息", + "caption": "维护计划", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanGridView", + "viewtag": "db1413b1b33f83be146b43ecb25dd82e" + }, + "eamlocationtypeeditview": { + "title": "功能位置类型信息", + "caption": "功能位置类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationTypeEditView", + "viewtag": "dd09755644dcf1e57c062b4e08e4ce3a" + }, + "eamassetstatepickupview": { + "title": "资产状态数据选择视图", + "caption": "资产状态", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetStatePickupView", + "viewtag": "ddfe97780b64a25b28b14a283fa27a61" + }, + "eamworkorderpickupview": { + "title": "工单数据选择视图", + "caption": "工单", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderPickupView", + "viewtag": "e2c689498cfbde8c97c67a790b1831b8" + }, + "eamapplystateeditview": { + "title": "维护申请状态编辑视图", + "caption": "维护申请状态", + "viewtype": "DEEDITVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyStateEditView", + "viewtag": "e3f067b2352dbb274918bccb115ebcde" + }, + "eamworkorderdatapaneleditview": { + "title": "工单编辑视图", + "caption": "工单", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderDataPanelEditView", + "viewtag": "e7d505caec71f657e4e7a1db31836416" + }, + "eamassettypesummaryview": { + "title": "资产类型主信息看板", + "caption": "资产类型", + "viewtype": "DEPORTALVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetTypeSummaryView", + "viewtag": "e82ae69965b5b61347246f54ab96dc6f" + }, + "eamsparepartsgrouppickupgridview": { + "title": "备件包选择表格视图", + "caption": "备件包", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMSparePartsGroupPickupGridView", + "viewtag": "ebf6c093d1d6c599cc011b2c54ab6bc2" + }, + "eamlocationstatemodellinegridview": { + "title": "功能位置状态模型明细表格视图", + "caption": "功能位置状态模型明细", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateModelLineGridView", + "viewtag": "ecd1ec6299b5b24e2004fa15c4eef92d" + }, + "eamservicelevelgridview": { + "title": "服务等级信息", + "caption": "服务等级", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMServiceLevelGridView", + "viewtag": "edea4ef4e4810cea28340d5636e6e28d" + }, + "eamlocationgridview": { + "title": "功能位置信息", + "caption": "功能位置", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationGridView", + "viewtag": "eee617336f6dc6e5e97835d6309fd452" + }, + "eamapplyquickcreateview": { + "title": "快速新建", + "caption": "维护申请", + "viewtype": "DEOPTVIEW", + "viewmodule": "Apply", + "viewname": "EAMApplyQuickCreateView", + "viewtag": "ef9454c4b53cd737f1beca7bf2c5ea25" + }, + "eamplanpickupview": { + "title": "维护计划数据选择视图", + "caption": "维护计划", + "viewtype": "DEPICKUPVIEW", + "viewmodule": "Plan", + "viewname": "EAMPlanPickupView", + "viewtag": "f38b93e7294aee1966d727940e0852f4" + }, + "eamworkorderapplywogridview": { + "title": "产生的工单", + "caption": "工单", + "viewtype": "DEGRIDVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWorkOrderApplyWOGridView", + "viewtag": "f51a84e7a2149cb66cb5db8370abb115" + }, + "eamlocationpickupgridview": { + "title": "功能位置选择表格视图", + "caption": "功能位置", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationPickupGridView", + "viewtag": "f572d337efac74735bf54b199e054081" + }, + "eamlocationstategridview": { + "title": "功能位置状态信息", + "caption": "功能位置状态", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationStateGridView", + "viewtag": "f7c04762f2a3e3026c909e6191a0998f" + }, + "eamassetpickupgridview": { + "title": "资产选择表格视图", + "caption": "资产", + "viewtype": "DEPICKUPGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetPickupGridView", + "viewtag": "fc2bbe178f6e4ee12ebeb45875b7f87c" + }, + "eamassetgridview": { + "title": "资产信息", + "caption": "资产", + "viewtype": "DEGRIDVIEW", + "viewmodule": "Asset", + "viewname": "EAMAssetGridView", + "viewtag": "fc4b884f4116e498cafad375e0b6cb7d" + }, + "eamwotypeeditview": { + "title": "工单类型编辑视图", + "caption": "工单类型", + "viewtype": "DEEDITVIEW", + "viewmodule": "WorkOrder", + "viewname": "EAMWOTypeEditView", + "viewtag": "fc86dc7e981c8fcc8533f992bd51ce5c" + }, + "eamlocationquickcreateview": { + "title": "快速新建", + "caption": "功能位置", + "viewtype": "DEOPTVIEW", + "viewmodule": "Location", + "viewname": "EAMLocationQuickCreateView", + "viewtag": "ffe322f0701bebd0de2fd525d20641c3" + } + }]; +}); \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-bar-series.ts b/app_AssetManagement/src/model/chart-detail/chart-bar-series.ts new file mode 100644 index 0000000..dc19e13 --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-bar-series.ts @@ -0,0 +1,137 @@ +import { ChartSeries } from './chart-series'; + +/** + * 柱状图序列模型 + * + * @export + * @class ChartBarSeries + */ +export class ChartBarSeries extends ChartSeries{ + + /** + * 分类属性 + * + * @type {string} + * @memberof ChartBarSeries + */ + public categorField: string = ''; + + /** + * 值属性 + * + * @type {string} + * @memberof ChartBarSeries + */ + public valueField: string = ''; + + /** + * 分类代码表 + * + * @type {string} + * @memberof ChartBarSeries + */ + public categorCodeList: any = null; + + /** + * 维度定义 + * + * @type {string} + * @memberof ChartBarSeries + */ + public dimensions:Array = []; + + /** + * 维度编码 + * + * @type {*} + * @memberof ChartBarSeries + */ + public encode:any = null; + + /** + * 序列模板 + * + * @type {*} + * @memberof ChartBarSeries + */ + public seriesTemp:any = null; + + + /** + * Creates an instance of ChartBarSeries. + * ChartBarSeries 实例 + * + * @param {*} [opts={}] + * @memberof ChartBarSeries + */ + constructor(opts: any = {}) { + super(opts); + this.categorField = !Object.is(opts.categorField, '') ? opts.categorField : ''; + this.categorCodeList = opts.categorCodeList ? opts.categorCodeList : null; + this.valueField = !Object.is(opts.valueField, '') ? opts.valueField : ''; + this.dimensions = opts.dimensions ? opts.dimensions :''; + this.encode = opts.encode ? opts.encode : null; + this.seriesTemp = opts.seriesTemp ? opts.seriesTemp:null; + } + + /** + * 设置分类属性 + * + * @param {string} state + * @memberof ChartBarSeries + */ + public setCategorField(state: string): void { + this.categorField = state; + } + + /** + * 设置序列名称 + * + * @param {string} state + * @memberof ChartBarSeries + */ + public setValueField(state: string): void { + this.valueField = state; + } + + /** + * 分类代码表 + * + * @param {*} state + * @memberof ChartBarSeries + */ + public setCategorCodeList(state: any): void { + this.categorCodeList = state; + } + + /** + * 维度定义 + * + * @param {*} state + * @memberof ChartBarSeries + */ + public setDimensions(state: any): void { + this.dimensions = state; + } + + /** + * 设置编码 + * + * @param {*} state + * @memberof ChartBarSeries + */ + public setEncode(state: any): void { + this.encode = state; + } + + /** + * 设置序列模板 + * + * @param {*} state + * @memberof ChartBarSeries + */ + public setSeriesTemp(state: any): void { + this.seriesTemp = state; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-dataset-field.ts b/app_AssetManagement/src/model/chart-detail/chart-dataset-field.ts new file mode 100644 index 0000000..b180dc6 --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-dataset-field.ts @@ -0,0 +1,94 @@ +/** + * 图表数据集属性模型 + * + * @export + * @class ChartDataSetField + */ +export class ChartDataSetField { + + /** + * 图表属性名称 + * + * @type {string} + * @memberof ChartDataSetField + */ + public name: string = ''; + + /** + * 图表属性代码表 + * + * @type {*} + * @memberof ChartDataSetField + */ + public codelist: any = null; + + /** + * 是否分组属性 + * + * @type {boolean} + * @memberof ChartDataSetField + */ + public isGroupField: boolean = false; + + /** + * 分组模式 + * + * @type {string} + * @memberof ChartDataSetField + */ + public groupMode:string =""; + + /** + * Creates an instance of ChartDataSetField. + * ChartDataSetField 实例 + * + * @param {*} [opts={}] + * @memberof ChartDataSetField + */ + constructor(opts: any = {}) { + this.name = !Object.is(opts.name, '') ? opts.name : ''; + this.codelist = opts.codelist?opts.codelist:null; + this.isGroupField = opts.isGroupField?opts.isGroupField:false; + this.groupMode = !Object.is(opts.groupMode, '') ? opts.groupMode : ''; + } + + /** + * 设置图表属性名称 + * + * @param {string} state + * @memberof ChartDataSetField + */ + public setName(state: string): void { + this.name = state; + } + + /** + * 设置图表属性代码表 + * + * @param {*} state + * @memberof ChartDataSetField + */ + public setCodeList(state: any): void { + this.codelist = state; + } + + /** + * 设置分组属性 + * + * @param {boolean} state + * @memberof ChartDataSetField + */ + public setisGroupField(state: boolean): void { + this.isGroupField = state; + } + + /** + * 设置属性分组模式 + * + * @param {string} state + * @memberof ChartDataSetField + */ + public setGroupMode(state: string): void { + this.groupMode = state; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-funnel-series.ts b/app_AssetManagement/src/model/chart-detail/chart-funnel-series.ts new file mode 100644 index 0000000..affe24f --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-funnel-series.ts @@ -0,0 +1,118 @@ +import { ChartSeries } from './chart-series'; + +/** + * 漏斗图序列模型 + * + * @export + * @class ChartFunnelSeries + */ +export class ChartFunnelSeries extends ChartSeries{ + + /** + * 分类属性 + * + * @type {string} + * @memberof ChartFunnelSeries + */ + public categorField: string = ''; + + /** + * 值属性 + * + * @type {string} + * @memberof ChartFunnelSeries + */ + public valueField: string = ''; + + /** + * 分类代码表 + * + * @type {string} + * @memberof ChartFunnelSeries + */ + public categorCodeList: any = null; + + /** + * 维度定义 + * + * @type {string} + * @memberof ChartFunnelSeries + */ + public dimensions:Array = []; + + /** + * 维度编码 + * + * @type {*} + * @memberof ChartFunnelSeries + */ + public encode:any = null; + + + /** + * Creates an instance of ChartFunnelSeries. + * ChartFunnelSeries 实例 + * + * @param {*} [opts={}] + * @memberof ChartFunnelSeries + */ + constructor(opts: any = {}) { + super(opts); + this.categorField = !Object.is(opts.categorField, '') ? opts.categorField : ''; + this.categorCodeList = opts.categorCodeList ? opts.categorCodeList : null; + this.valueField = !Object.is(opts.valueField, '') ? opts.valueField : ''; + this.dimensions = opts.dimensions ? opts.dimensions :''; + this.encode = opts.encode ? opts.encode : null; + } + + /** + * 设置分类属性 + * + * @param {string} state + * @memberof ChartFunnelSeries + */ + public setCategorField(state: string): void { + this.categorField = state; + } + + /** + * 设置序列名称 + * + * @param {string} state + * @memberof ChartFunnelSeries + */ + public setValueField(state: string): void { + this.valueField = state; + } + + /** + * 分类代码表 + * + * @param {*} state + * @memberof ChartFunnelSeries + */ + public setCategorCodeList(state: any): void { + this.categorCodeList = state; + } + + /** + * 维度定义 + * + * @param {*} state + * @memberof ChartFunnelSeries + */ + public setDimensions(state: any): void { + this.dimensions = state; + } + + /** + * 设置编码 + * + * @param {*} state + * @memberof ChartFunnelSeries + */ + public setEncode(state: any): void { + this.encode = state; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-line-series.ts b/app_AssetManagement/src/model/chart-detail/chart-line-series.ts new file mode 100644 index 0000000..ee2aa05 --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-line-series.ts @@ -0,0 +1,137 @@ +import { ChartSeries } from './chart-series'; + +/** + * 折线图序列模型 + * + * @export + * @class ChartLineSeries + */ +export class ChartLineSeries extends ChartSeries{ + + /** + * 分类属性 + * + * @type {string} + * @memberof ChartLineSeries + */ + public categorField: string = ''; + + /** + * 值属性 + * + * @type {string} + * @memberof ChartLineSeries + */ + public valueField: string = ''; + + /** + * 分类代码表 + * + * @type {string} + * @memberof ChartLineSeries + */ + public categorCodeList: any = null; + + /** + * 维度定义 + * + * @type {string} + * @memberof ChartLineSeries + */ + public dimensions:Array = []; + + /** + * 维度编码 + * + * @type {*} + * @memberof ChartLineSeries + */ + public encode:any = null; + + /** + * 序列模板 + * + * @type {*} + * @memberof ChartLineSeries + */ + public seriesTemp:any = null; + + + /** + * Creates an instance of ChartLineSeries. + * ChartLineSeries 实例 + * + * @param {*} [opts={}] + * @memberof ChartLineSeries + */ + constructor(opts: any = {}) { + super(opts); + this.categorField = !Object.is(opts.categorField, '') ? opts.categorField : ''; + this.categorCodeList = opts.categorCodeList ? opts.categorCodeList : null; + this.valueField = !Object.is(opts.valueField, '') ? opts.valueField : ''; + this.dimensions = opts.dimensions ? opts.dimensions :''; + this.encode = opts.encode ? opts.encode : null; + this.seriesTemp = opts.seriesTemp ? opts.seriesTemp:null; + } + + /** + * 设置分类属性 + * + * @param {string} state + * @memberof ChartLineSeries + */ + public setCategorField(state: string): void { + this.categorField = state; + } + + /** + * 设置序列名称 + * + * @param {string} state + * @memberof ChartLineSeries + */ + public setValueField(state: string): void { + this.valueField = state; + } + + /** + * 分类代码表 + * + * @param {*} state + * @memberof ChartLineSeries + */ + public setCategorCodeList(state: any): void { + this.categorCodeList = state; + } + + /** + * 维度定义 + * + * @param {*} state + * @memberof ChartLineSeries + */ + public setDimensions(state: any): void { + this.dimensions = state; + } + + /** + * 设置编码 + * + * @param {*} state + * @memberof ChartLineSeries + */ + public setEncode(state: any): void { + this.encode = state; + } + + /** + * 设置序列模板 + * + * @param {*} state + * @memberof ChartLineSeries + */ + public setSeriesTemp(state: any): void { + this.seriesTemp = state; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-pie-series.ts b/app_AssetManagement/src/model/chart-detail/chart-pie-series.ts new file mode 100644 index 0000000..ad1f545 --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-pie-series.ts @@ -0,0 +1,118 @@ +import { ChartSeries } from './chart-series'; + +/** + * 饼图序列模型 + * + * @export + * @class ChartPieSeries + */ +export class ChartPieSeries extends ChartSeries{ + + /** + * 分类属性 + * + * @type {string} + * @memberof ChartPieSeries + */ + public categorField: string = ''; + + /** + * 值属性 + * + * @type {string} + * @memberof ChartPieSeries + */ + public valueField: string = ''; + + /** + * 分类代码表 + * + * @type {string} + * @memberof ChartPieSeries + */ + public categorCodeList: any = null; + + /** + * 维度定义 + * + * @type {string} + * @memberof ChartPieSeries + */ + public dimensions:Array = []; + + /** + * 维度编码 + * + * @type {*} + * @memberof ChartPieSeries + */ + public encode:any = null; + + + /** + * Creates an instance of ChartPieSeries. + * ChartPieSeries 实例 + * + * @param {*} [opts={}] + * @memberof ChartPieSeries + */ + constructor(opts: any = {}) { + super(opts); + this.categorField = !Object.is(opts.categorField, '') ? opts.categorField : ''; + this.categorCodeList = opts.categorCodeList ? opts.categorCodeList : null; + this.valueField = !Object.is(opts.valueField, '') ? opts.valueField : ''; + this.dimensions = opts.dimensions ? opts.dimensions :''; + this.encode = opts.encode ? opts.encode : null; + } + + /** + * 设置分类属性 + * + * @param {string} state + * @memberof ChartPieSeries + */ + public setCategorField(state: string): void { + this.categorField = state; + } + + /** + * 设置序列名称 + * + * @param {string} state + * @memberof ChartPieSeries + */ + public setValueField(state: string): void { + this.valueField = state; + } + + /** + * 分类代码表 + * + * @param {*} state + * @memberof ChartPieSeries + */ + public setCategorCodeList(state: any): void { + this.categorCodeList = state; + } + + /** + * 维度定义 + * + * @param {*} state + * @memberof ChartPieSeries + */ + public setDimensions(state: any): void { + this.dimensions = state; + } + + /** + * 设置编码 + * + * @param {*} state + * @memberof ChartPieSeries + */ + public setEncode(state: any): void { + this.encode = state; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-radar-series.ts b/app_AssetManagement/src/model/chart-detail/chart-radar-series.ts new file mode 100644 index 0000000..ed54c7a --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-radar-series.ts @@ -0,0 +1,118 @@ +import { ChartSeries } from './chart-series'; + +/** + * 雷达图序列模型 + * + * @export + * @class ChartRadarSeries + */ +export class ChartRadarSeries extends ChartSeries{ + + /** + * 分类属性 + * + * @type {string} + * @memberof ChartRadarSeries + */ + public categorField: string = ''; + + /** + * 值属性 + * + * @type {string} + * @memberof ChartRadarSeries + */ + public valueField: string = ''; + + /** + * 雷达图指示器 + * + * @type {string} + * @memberof ChartRadarSeries + */ + public indicator: Array = []; + + /** + * 分类代码表 + * + * @type {string} + * @memberof ChartRadarSeries + */ + public categorCodeList: any = null; + + /** + * 维度编码 + * + * @type {*} + * @memberof ChartRadarSeries + */ + public encode:any = null; + + + /** + * Creates an instance of ChartRadarSeries. + * ChartRadarSeries 实例 + * + * @param {*} [opts={}] + * @memberof ChartRadarSeries + */ + constructor(opts: any = {}) { + super(opts); + this.categorField = !Object.is(opts.categorField, '') ? opts.categorField : ''; + this.categorCodeList = opts.categorCodeList ? opts.categorCodeList : null; + this.valueField = !Object.is(opts.valueField, '') ? opts.valueField : ''; + this.encode = opts.encode ? opts.encode : null; + this.indicator = opts.indicator ? opts.indicator:[]; + } + + /** + * 设置分类属性 + * + * @param {string} state + * @memberof ChartRadarSeries + */ + public setCategorField(state: string): void { + this.categorField = state; + } + + /** + * 设置序列名称 + * + * @param {string} state + * @memberof ChartRadarSeries + */ + public setValueField(state: string): void { + this.valueField = state; + } + + /** + * 分类代码表 + * + * @param {*} state + * @memberof ChartRadarSeries + */ + public setCategorCodeList(state: any): void { + this.categorCodeList = state; + } + + /** + * 设置编码 + * + * @param {*} state + * @memberof ChartRadarSeries + */ + public setEncode(state: any): void { + this.encode = state; + } + + /** + * 设置雷达图指示器 + * + * @param {*} state + * @memberof ChartRadarSeries + */ + public setIndicator(state: any): void { + this.indicator = state; + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/chart-series.ts b/app_AssetManagement/src/model/chart-detail/chart-series.ts new file mode 100644 index 0000000..8e2a863 --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/chart-series.ts @@ -0,0 +1,307 @@ +import { ChartDataSetField } from './chart-dataset-field'; + +/** + * 图表序列模型 + * + * @export + * @class ChartSeries + */ +export class ChartSeries { + + /** + * 序列类型 + * + * @type {string} + * @memberof ChartSeries + */ + public type: string = ''; + + /** + * 图表对象 + * + * @type {*} + * @memberof ChartSeries + */ + public chart: any = null; + + /** + * 序列名称 + * + * @type {string} + * @memberof ChartSeries + */ + public name: string = ''; + + /** + * 序列标题 + * + * @type {string} + * @memberof ChartSeries + */ + public caption: string = ''; + + /** + * 序列标识属性 + * + * @type {string} + * @memberof ChartSeries + */ + public seriesIdField: string = ''; + + /** + * 序列名称属性 + * + * @type {string} + * @memberof ChartSeries + */ + public seriesNameField: string = ''; + + /** + * 序列标识名称键值对 + * + * @type {any} + * @memberof ChartSeries + */ + public seriesMap:any = null; + + /** + * 对象索引 + * + * @type {number} + * @memberof ChartSeries + */ + public index: number = 0; + + /** + * 序列映射数据 + * + * @type {*} + * @memberof ChartSeries + */ + public dataSet: any = []; + + /** + * 预置配置 + * + * @type {number} + * @memberof ChartSeries + */ + public ecxObject:any; + + /** + * 用户自定义配置 + * + * @type {number} + * @memberof ChartSeries + */ + public ecObject:any; + + /** + * 序列索引 + * + * @type {number} + * @memberof ChartSeries + */ + public seriesIndex:number = 0; + + /** + * 数据集属性集合 + * + * @type {Array} + * @memberof ChartSeries + */ + public dataSetFields:Array = []; + + /** + * 取值方式 + * 'column':默认,dataset 的列对应于系列,从而 dataset 中每一列是一个维度(dimension) + * 'row':dataset 的行对应于系列,从而 dataset 中每一行是一个维度(dimension + * + * @type {string} + * @memberof ChartSeries + */ + public seriesLayoutBy:string = "column"; + + /** + * 序列代码表 + * + * @type {*} + * @memberof ChartSeries + */ + public seriesCodeList:any; + + /** + * Creates an instance of ChartSeries. + * ChartSeries 实例 + * + * @param {*} [opts={}] + * @memberof ChartSeries + */ + constructor(opts: any = {}) { + this.type = !Object.is(opts.type, '') ? opts.type : ''; + this.name = !Object.is(opts.name, '') ? opts.name : ''; + this.caption = !Object.is(opts.caption, '') ? opts.caption : ''; + this.seriesIdField = (opts.seriesIdField && !Object.is(opts.seriesIdField, '')) ? opts.seriesIdField : (opts.seriesNameField && !Object.is(opts.seriesNameField, '')) ? opts.seriesNameField : ''; + this.seriesNameField = !Object.is(opts.seriesNameField, '') ? opts.seriesNameField : ''; + this.index = this.index ? this.index : 0; + this.chart = opts.chart ? opts.chart : null; + this.dataSet = opts.dataSet ? opts.dataSet : []; + this.ecxObject = opts.ecxObject ? opts.ecxObject : null; + this.ecObject = opts.ecObject ? opts.ecObject : null; + this.seriesLayoutBy = opts.seriesLayoutBy ? opts.seriesLayoutBy:"column"; + this.dataSetFields = opts.dataSetFields ? opts.dataSetFields:[]; + this.seriesMap = opts.seriesMap ? opts.seriesMap:null; + this.seriesIndex = opts.seriesIndex? opts.seriesIndex:0; + this.seriesCodeList = opts.seriesCodeList?opts.seriesCodeList:null; + } + + /** + * 设置序列类型 + * + * @param {string} state + * @memberof ChartSeries + */ + public setType(state: string): void { + this.type = state; + } + + /** + * 设置序列名称 + * + * @param {string} state + * @memberof ChartSeries + */ + public setCaption(state: string): void { + this.caption = state; + } + + /** + * 设置序列标题 + * + * @param {string} state + * @memberof ChartSeries + */ + public setName(state: string): void { + this.name = state; + } + + /** + * 设置数据集 + * + * @param {*} state + * @memberof ChartSeries + */ + public setDataSet(state: any): void { + this.dataSet = state; + } + + /** + * 设置序列标识名称键值对 + * + * @param {*} state + * @memberof ChartSeries + */ + public setSeriesMap(state: any): void { + this.seriesMap = state; + } + + /** + * 设置序列映射的图表 + * + * @param {*} state + * @memberof ChartSeries + */ + public setChart(state: any): void { + this.chart = state; + } + + /** + * 设置序列标识属性 + * + * @param {*} state + * @memberof ChartSeries + */ + public setSeriesIdField(state: any): void { + this.seriesIdField = state; + } + + /** + * 设置序列名称属性 + * + * @param {*} state + * @memberof ChartSeries + */ + public setSeriesNameField(state: any): void { + this.seriesNameField = state; + } + + /** + * 设置对象索引 + * + * @param {number} state + * @memberof ChartSeries + */ + public setIndex(state: number): void { + this.index = state; + } + + /** + * 设置预置配置 + * + * @param {*} state + * @memberof ChartSeries + */ + public setECXObject(state: any): void { + this.ecxObject = state; + } + + /** + * 设置用户自定义参数 + * + * @param {*} state + * @memberof ChartSeries + */ + public setECObject(state: any): void { + this.ecObject = state; + } + + /** + * 设置取值方式 + * + * @param {string} state + * @memberof ChartSeries + */ + public setSeriesLayoutBy(state: string): void { + this.seriesLayoutBy = state; + } + + /** + * 设置数据集属性集合 + * + * @param {Array} state + * @memberof ChartSeries + */ + public setDataSetFields(state: Array): void { + this.dataSetFields = state; + } + + /** + * 设置序列索引 + * + * @param {number} state + * @memberof ChartSeries + */ + public setSeriesIndex(state: number): void { + this.seriesIndex = state; + } + + /** + * 设置序列代码表 + * + * @param {any} state + * @memberof ChartSeries + */ + public setSeriesCodeList(state: any): void { + this.seriesCodeList = state; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/chart-detail/index.ts b/app_AssetManagement/src/model/chart-detail/index.ts new file mode 100644 index 0000000..30deb82 --- /dev/null +++ b/app_AssetManagement/src/model/chart-detail/index.ts @@ -0,0 +1,6 @@ +export { ChartDataSetField } from './chart-dataset-field'; +export { ChartLineSeries } from './chart-line-series'; +export { ChartFunnelSeries } from './chart-funnel-series'; +export { ChartPieSeries } from './chart-pie-series'; +export { ChartBarSeries } from './chart-bar-series'; +export { ChartRadarSeries } from './chart-radar-series'; \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-button.ts b/app_AssetManagement/src/model/form-detail/form-button.ts new file mode 100644 index 0000000..8b2f71b --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-button.ts @@ -0,0 +1,15 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 按钮模型 + * + * @export + * @class FormButtonModel + * @extends {FormDetailModel} + */ +export class FormButtonModel extends FormDetailModel { + + constructor(opts: any = {}) { + super(opts); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-detail.ts b/app_AssetManagement/src/model/form-detail/form-detail.ts new file mode 100644 index 0000000..2dd84ff --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-detail.ts @@ -0,0 +1,156 @@ +/** + * 表单成员模型 + * + * @export + * @class FormDetailModel + */ +export class FormDetailModel { + + /** + * 参数 + * + * @type {*} + * @memberof FormDetailModel + */ + public opts: any = {}; + + /** + * 父 + * + * @type {*} + * @memberof FormDetailModel + */ + public parent: any = null; + + /** + * 成员标题 + * + * @type {string} + * @memberof FormDetailModel + */ + public caption: string = ''; + + /** + * 成员类型 + * + * @type {string} + * @memberof FormDetailModel + */ + public detailType: string = ''; + + /** + * 表单对象 + * + * @type {*} + * @memberof FormDetailModel + */ + public form: any = null; + + /** + * 成员名称 + * + * @type {string} + * @memberof FormDetailModel + */ + public name: string = ''; + + /** + * 成员是否显示 + * + * @type {boolean} + * @memberof FormDetailModel + */ + protected $visible: boolean; + + /** + * 成员是否隐藏 + * + * @readonly + * @type {boolean} + * @memberof FormDetailModel + */ + public get visible(): boolean { + return (this.isShowMore && this.$visible); + } + + /** + * 成员是否显示标题 + * + * @type {boolean} + * @memberof FormDetailModel + */ + public isShowCaption: boolean; + + /** + * 表单项受控模式, + * + * @type {(0 | 1 | 2)} + * @memberof FormDetailModel + */ + public showMoreMode: 0 | 1 | 2 = 0; + + /** + * 受控项是否显示 + * + * @type {boolean} + * @memberof FormGroupPanelModel + */ + public isShowMore: boolean; + + /** + * Creates an instance of FormDetailModel. + * FormDetailModel 实例 + * + * @param {*} [opts={}] + * @memberof FormDetailModel + */ + constructor(opts: any = {}) { + this.opts = opts; + this.caption = !Object.is(opts.caption, '') ? opts.caption : ''; + this.detailType = !Object.is(opts.detailType, '') ? opts.detailType : ''; + this.form = opts.form ? opts.form : {}; + this.name = !Object.is(opts.name, '') ? opts.name : ''; + this.$visible = opts.visible ? true : false; + this.isShowCaption = opts.isShowCaption ? true : false; + this.showMoreMode = opts.showMoreMode; + if (this.showMoreMode === 1) { + this.isShowMore = false; + } else { + this.isShowMore = true; + } + } + + /** + * 设置显示与隐藏 + * + * @param {boolean} state + * @memberof FormDetailModel + */ + public setVisible(state: boolean): void { + this.$visible = state; + } + + /** + * 改变显示更多受控项状态 + * + * @param {boolean} bol + * @memberof FormDetailModel + */ + public setShowMore(bol: boolean): void { + if (isExist(bol)) { + this.isShowMore = bol; + } else { + this.isShowMore = !this.isShowMore; + } + } + + /** + * 设置显示标题栏 + * + * @param {boolean} state + * @memberof FormDetailModel + */ + public setShowCaption(state: boolean): void { + this.isShowCaption = state; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-druipart.ts b/app_AssetManagement/src/model/form-detail/form-druipart.ts new file mode 100644 index 0000000..97e0f65 --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-druipart.ts @@ -0,0 +1,81 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 数据关系界面模型 + * + * @export + * @class FormDRUIPartModel + * @extends {FormDetailModel} + */ +export class FormDRUIPartModel extends FormDetailModel { + + /** + * 关系视图类型 + * + * @type {string} + * @memberof FormDRUIPartModel + */ + public refviewtype: string = ''; + + /** + * 是否正在保存 + * + * @type {boolean} + * @memberof FormDRUIPartModel + */ + public isSaving: boolean = false; + + /** + * 关系页面是否数据变更 + * + * @type {boolean} + * @memberof FormDRUIPartModel + */ + public refViewDirty: boolean = false; + + /** + * 是否保存成功 + * + * @type {boolean} + * @memberof FormDRUIPartModel + */ + public isSaveSuccess: boolean = false; + + /** + * 保存关系视图 + * + * @type {number} + * @memberof FormDRUIPartModel + */ + public saveRefView: number = 0; + + /** + * Creates an instance of FormDRUIPartModel. + * + * @param {*} [opts={}] + * @memberof FormDRUIPartModel + */ + constructor(opts: any = {}) { + super(opts); + this.refviewtype = opts.refviewtype; + } + + /** + * 关系页数据保存结果,判断主表单是否保存 + * + * @param {boolean} $event 保存结果 + * @memberof FormDRUIPartModel + */ + public onDrDataSaved($event: boolean): void { + this.isSaving = false; + if ($event) { + this.refViewDirty = false; + this.isSaveSuccess = true; + } + + // 判断表单的所有关系项是否都保存完成 + if ($event && this.form && this.form.DRUIPartSaveResult()) { + this.form.save(); + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-group-panel.ts b/app_AssetManagement/src/model/form-detail/form-group-panel.ts new file mode 100644 index 0000000..f735c82 --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-group-panel.ts @@ -0,0 +1,76 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 分组面板模型 + * + * @export + * @class FormGroupPanelModel + * @extends {FormDetailModel} + */ +export class FormGroupPanelModel extends FormDetailModel { + + /** + * 实体界面行为组 + * + * @type {*} + * @memberof FormGroupPanelModel + */ + public uiActionGroup: any = {}; + + /** + * 所有锚点项 + * + * @type {any[]} + * @memberof FormGroupPanelModel + */ + public anchorPoints: any = {}; + + /** + * 所有受控项 + * + * @type {*} + * @memberof FormGroupPanelModel + */ + public controlledItems: any = {}; + + /** + * 表单分组控制子是否显示更多 + * + * @type {boolean} + * @memberof FormGroupPanelModel + */ + public showMore: boolean = false; + + /** + * Creates an instance of FormGroupPanelModel. + * 创建 FormGroupPanelModel 实例 + * + * @param {*} [opts={}] + * @memberof FormGroupPanelModel + */ + constructor(opts: any = {}) { + super(opts); + Object.assign(this.uiActionGroup, opts.uiActionGroup); + } + + /** + * 改变显示更多受控项状态 + * + * @param {boolean} bol + * @memberof FormDetailModel + */ + public changeShowMore(bol: boolean): void { + if (isExist(bol)) { + this.isShowMore = bol; + } else { + this.showMore = !this.showMore; + } + for (const key in this.controlledItems) { + if (this.controlledItems.hasOwnProperty(key)) { + const item = this.controlledItems[key]; + item.setShowMore(this.showMore); + } + } + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-iframe.ts b/app_AssetManagement/src/model/form-detail/form-iframe.ts new file mode 100644 index 0000000..693f5c3 --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-iframe.ts @@ -0,0 +1,15 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 嵌入成员模型 + * + * @export + * @class FormIFrameModel + * @extends {FormDetailModel} + */ +export class FormIFrameModel extends FormDetailModel { + + constructor(opts: any = {}) { + super(opts); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-item.ts b/app_AssetManagement/src/model/form-detail/form-item.ts new file mode 100644 index 0000000..2e9d90a --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-item.ts @@ -0,0 +1,100 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 表单项模型 + * + * @export + * @class FormItemModel + * @extends {FormDetailModel} + */ +export class FormItemModel extends FormDetailModel { + + /** + * 是否启用 + * + * @type {boolean} + * @memberof FormItemModel + */ + public disabled: boolean = false; + + /** + * 错误信息 + * + * @type {string} + * @memberof FormItemModel + */ + public error: string = ''; + + /** + * 表单项启用条件 + * + * 0 不启用 + * 1 新建 + * 2 更新 + * 3 全部启用 + * + * @type {(number | 0 | 1 | 2 | 3)} + * @memberof FormItemModel + */ + public enableCond: number | 0 | 1 | 2 | 3 = 3; + + /** + * Creates an instance of FormItemModel. + * FormItemModel 实例 + * + * @param {*} [opts={}] + * @memberof FormItemModel + */ + constructor(opts: any = {}) { + super(opts); + this.disabled = opts.disabled ? true : false; + this.enableCond = opts.enableCond; + } + + /** + * 设置是否启用 + * + * @param {boolean} state + * @memberof FormItemModel + */ + public setDisabled(state: boolean): void { + this.disabled = state; + } + + /** + * 设置信息内容 + * + * @param {string} error + * @memberof FormItemModel + */ + public setError(error: string): void { + this.error = error; + } + + /** + * 设置是否启用 + * + * @param {string} srfuf + * @memberof FormItemModel + */ + public setEnableCond(srfuf: string): void { + // 是否有权限 + const isReadOk: boolean = true; + const _srfuf: number = parseInt(srfuf, 10); + let state: boolean = true; + + if (isReadOk) { + if (_srfuf === 1) { + if ((this.enableCond & 2) === 2) { + state = false; + } + } else { + if ((this.enableCond & 1) === 1) { + state = false; + } + } + } + this.setDisabled(state); + } + +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-page.ts b/app_AssetManagement/src/model/form-detail/form-page.ts new file mode 100644 index 0000000..ff6808f --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-page.ts @@ -0,0 +1,16 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 表单分页模型 + * + * @export + * @class FormPageModel + * @extends {FormDetailModel} + */ +export class FormPageModel extends FormDetailModel { + + + constructor(opts: any = {}) { + super(opts); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-part.ts b/app_AssetManagement/src/model/form-detail/form-part.ts new file mode 100644 index 0000000..749cb9e --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-part.ts @@ -0,0 +1,16 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 表单部件模型 + * + * @export + * @class FormPartModel + * @extends {FormDetailModel} + */ +export class FormPartModel extends FormDetailModel { + + + constructor(opts: any = {}) { + super(opts); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-row-item.ts b/app_AssetManagement/src/model/form-detail/form-row-item.ts new file mode 100644 index 0000000..e72b176 --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-row-item.ts @@ -0,0 +1,16 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 直接内容模型 + * + * @export + * @class FormRowItemModel + * @extends {FormDetailModel} + */ +export class FormRowItemModel extends FormDetailModel { + + + constructor(opts: any = {}) { + super(opts); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-tab-page.ts b/app_AssetManagement/src/model/form-detail/form-tab-page.ts new file mode 100644 index 0000000..c004d9c --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-tab-page.ts @@ -0,0 +1,59 @@ +import { FormDetailModel } from './form-detail'; +import { FormTabPanelModel } from './form-tab-panel'; + +/** + * 分页面板模型 + * + * @export + * @class FormTabPageModel + * @extends {FormDetailModel} + */ +export class FormTabPageModel extends FormDetailModel { + + + /** + * Creates an instance of FormTabPageModel. + * FormTabPageModel 实例 + * + * @param {*} [opts={}] + * @memberof FormTabPageModel + */ + constructor(opts: any = {}) { + super(opts); + } + + /** + * 设置分页是否启用 + * + * @param {boolean} state + * @memberof FormTabPageModel + */ + public setVisible(state: boolean): void { + super.setVisible(state); + const tabPanel = this.getTabPanelModel(); + if (tabPanel) { + tabPanel.setActiviePage(); + } + } + + /** + * 获取分页面板 + * + * @returns {(FormTabPanelModel | null)} + * @memberof FormTabPageModel + */ + public getTabPanelModel(): FormTabPanelModel | null { + if (!this.form) { + return null; + } + const tabPanels: any[] = Object.values(this.form.detailsModel).filter((model: any) => Object.is(model.detailType, 'TABPANEL')); + let index = tabPanels.findIndex((tabPanel: any) => { + return tabPanel.tabPages.some((tabPag: any) => Object.is(tabPag.name, this.name)); + }); + if (index === -1) { + return null; + } + const tabPanel: FormTabPanelModel = tabPanels[index]; + return tabPanel; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-tab-panel.ts b/app_AssetManagement/src/model/form-detail/form-tab-panel.ts new file mode 100644 index 0000000..21251cd --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-tab-panel.ts @@ -0,0 +1,91 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 分页部件模型 + * + * @export + * @class FormTabPanelModel + * @extends {FormDetailModel} + */ +export class FormTabPanelModel extends FormDetailModel { + + /** + * 被激活分页 + * + * @type {string} + * @memberof FormTabPanelModel + */ + public activiedPage: string = ''; + + /** + * 选中激活状态 + * + * @type {string} + * @memberof FormTabPanelModel + */ + public clickActiviePage: string = ''; + + /** + * 分页子成员 + * + * @type {any[]} + * @memberof FormTabPanelModel + */ + public tabPages: any[] = []; + + /** + * Creates an instance of FormTabPanelModel. + * FormTabPanelModel 实例 + * + * @param {*} [opts={}] + * @memberof FormTabPanelModel + */ + constructor(opts: any = {}) { + super(opts); + this.tabPages = [...opts.tabPages]; + if (this.tabPages.length > 0) { + this.activiedPage = this.tabPages[0].name; + } + } + + /** + * 设置激活分页 + * + * @memberof FormTabPanelModel + */ + public setActiviePage(): void { + if (!this.form) { + return; + } + const detailsModel: any = this.form.detailsModel; + + const index = this.tabPages.findIndex((tabpage: any) => Object.is(tabpage.name, this.clickActiviePage) && Object.is(tabpage.name, this.activiedPage) && detailsModel[tabpage.name].visible); + if (index !== - 1) { + return; + } + + this.tabPages.some((tabpage: any) => { + if (detailsModel[tabpage.name].visible) { + this.activiedPage = tabpage.name; + return true; + } + return false; + }); + } + + /** + * 选中页面 + * + * @param {*} $event + * @returns {void} + * @memberof FormTabPanelModel + */ + public clickPage($event: any): void { + if (!$event) { + return; + } + + this.clickActiviePage = $event; + this.activiedPage = $event; + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/form-user-control.ts b/app_AssetManagement/src/model/form-detail/form-user-control.ts new file mode 100644 index 0000000..fb7b61d --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/form-user-control.ts @@ -0,0 +1,16 @@ +import { FormDetailModel } from './form-detail'; + +/** + * 用户控件模型 + * + * @export + * @class FormUserControlModel + * @extends {FormDetailModel} + */ +export class FormUserControlModel extends FormDetailModel { + + + constructor(otps:any = {}) { + super(otps); + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/model/form-detail/index.ts b/app_AssetManagement/src/model/form-detail/index.ts new file mode 100644 index 0000000..3287e9a --- /dev/null +++ b/app_AssetManagement/src/model/form-detail/index.ts @@ -0,0 +1,11 @@ +export { FormButtonModel } from './form-button'; +export { FormPageModel } from './form-page'; +export { FormItemModel } from './form-item'; +export { FormDRUIPartModel } from './form-druipart'; +export { FormPartModel } from './form-part'; +export { FormGroupPanelModel } from './form-group-panel'; +export { FormIFrameModel } from './form-iframe'; +export { FormRowItemModel } from './form-row-item'; +export { FormTabPageModel } from './form-tab-page'; +export { FormTabPanelModel } from './form-tab-panel'; +export { FormUserControlModel } from './form-user-control'; diff --git a/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view-base.tsx b/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view-base.tsx new file mode 100644 index 0000000..a23d952 --- /dev/null +++ b/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view-base.tsx @@ -0,0 +1,703 @@ + +import { Subject } from 'rxjs'; +import { GridViewBase } from '@/studio-core'; +import EAMApplyService from '@/service/eamapply/eamapply-service'; +import EAMApplyAuthService from '@/authservice/eamapply/eamapply-auth-service'; +import GridViewEngine from '@engine/view/grid-view-engine'; +import EAMApplyUIService from '@/uiservice/eamapply/eamapply-ui-service'; +import CodeListService from "@service/app/codelist-service"; + + +/** + * 维护申请信息视图基类 + * + * @export + * @class EAMApplyAssetApplyGridViewBase + * @extends {GridViewBase} + */ +export class EAMApplyAssetApplyGridViewBase extends GridViewBase { + /** + * 视图对应应用实体名称 + * + * @protected + * @type {string} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected appDeName: string = 'eamapply'; + + /** + * 应用实体主键 + * + * @protected + * @type {string} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected appDeKey: string = 'eamapplyid'; + + /** + * 应用实体主信息 + * + * @protected + * @type {string} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected appDeMajor: string = 'eamapplyname'; + + /** + * 实体服务对象 + * + * @type {EAMApplyService} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected appEntityService: EAMApplyService = new EAMApplyService; + + /** + * 实体权限服务对象 + * + * @type EAMApplyUIService + * @memberof EAMApplyAssetApplyGridViewBase + */ + public appUIService: EAMApplyUIService = new EAMApplyUIService(this.$store); + + + /** + * 计数器服务对象集合 + * + * @protected + * @type {Array<*>} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected counterServiceArray: Array = []; + + /** + * 视图模型数据 + * + * @protected + * @type {*} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected model: any = { + srfCaption: 'entities.eamapply.views.assetapplygridview.caption', + srfTitle: 'entities.eamapply.views.assetapplygridview.title', + srfSubTitle: 'entities.eamapply.views.assetapplygridview.subtitle', + dataInfo: '' + } + + /** + * 容器模型 + * + * @protected + * @type {*} + * @memberof EAMApplyAssetApplyGridViewBase + */ + protected containerModel: any = { + view_toolbar: { name: 'toolbar', type: 'TOOLBAR' }, + view_grid: { name: 'grid', type: 'GRID' }, + view_searchform: { name: 'searchform', type: 'SEARCHFORM' }, + }; + + /** + * 工具栏模型 + * + * @type {*} + * @memberof EAMApplyAssetApplyGridView + */ + public toolBarModels: any = { + tbitem12_openquickcreateview: { name: 'tbitem12_openquickcreateview', caption: '新建', 'isShowCaption': true, 'isShowIcon': true, tooltip: '新建', iconcls: 'fa fa-file-text-o', icon: '', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'OpenQuickCreateView', target: 'NONE', class: '' } }, + + tbitem14: { name: 'tbitem14', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, + tbitem2: { name: 'tbitem2', caption: '编辑', 'isShowCaption': true, 'isShowIcon': true, tooltip: '编辑', iconcls: 'fa fa-edit', icon: '', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Edit', target: 'SINGLEKEY', class: '' } }, + + seperator2: { name: 'seperator2', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, + tbitem1: { name: 'tbitem1', caption: '拷贝', 'isShowCaption': true, 'isShowIcon': true, tooltip: '拷贝', iconcls: 'fa fa-copy', icon: '', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Copy', target: 'SINGLEKEY', class: '' } }, + + tbitem15: { name: 'tbitem15', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, + tbitem8: { name: 'tbitem8', caption: '删除', 'isShowCaption': true, 'isShowIcon': true, tooltip: '删除', iconcls: 'fa fa-remove', icon: '', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'Remove', target: 'MULTIKEY', class: '' } }, + + tbitem16: { name: 'tbitem16', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, + tbitem3: { name: 'tbitem3', caption: '导出', 'isShowCaption': true, 'isShowIcon': true, tooltip: '导出', iconcls: 'fa fa-file-excel-o', icon: '', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ExportExcel', target: '' }, MaxRowCount: 1000, class: '' }, + + tbitem17: { name: 'tbitem17', type: 'SEPERATOR', visabled: true, dataaccaction: '', uiaction: { } }, + tbitem10: { name: 'tbitem10', caption: '过滤', 'isShowCaption': true, 'isShowIcon': true, tooltip: '过滤', iconcls: 'fa fa-filter', icon: '', disabled: false, type: 'DEUIACTION', visabled: true,noprivdisplaymode:2,dataaccaction: '', uiaction: { tag: 'ToggleFilter', target: '', class: '' } }, + + }; + + + + /** + * 视图唯一标识 + * + * @protected + * @type {string} + * @memberof ViewBase + */ + protected viewtag: string = '54b41ee0f64fc8764a9d3cf1559c09db'; + + + /** + * 视图引擎 + * + * @public + * @type {Engine} + * @memberof EAMApplyAssetApplyGridViewBase + */ + public engine: GridViewEngine = new GridViewEngine(); + + /** + * 引擎初始化 + * + * @public + * @memberof EAMApplyAssetApplyGridViewBase + */ + public engineInit(): void { + this.engine.init({ + view: this, + opendata: (args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) => { + this.opendata(args,fullargs, params, $event, xData); + }, + newdata: (args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) => { + this.newdata(args,fullargs, params, $event, xData); + }, + grid: this.$refs.grid, + searchform: this.$refs.searchform, + keyPSDEField: 'eamapply', + majorPSDEField: 'eamapplyname', + isLoadDefault: true, + }); + } + + /** + * toolbar 部件 click 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public toolbar_click($event: any, $event2?: any): void { + if (Object.is($event.tag, 'tbitem12_openquickcreateview')) { + this.toolbar_tbitem12_openquickcreateview_click(null, '', $event2); + } + if (Object.is($event.tag, 'tbitem2')) { + this.toolbar_tbitem2_click(null, '', $event2); + } + if (Object.is($event.tag, 'tbitem1')) { + this.toolbar_tbitem1_click(null, '', $event2); + } + if (Object.is($event.tag, 'tbitem8')) { + this.toolbar_tbitem8_click(null, '', $event2); + } + if (Object.is($event.tag, 'tbitem3')) { + this.toolbar_tbitem3_click(null, '', $event2); + } + if (Object.is($event.tag, 'tbitem7')) { + this.toolbar_tbitem7_click(null, '', $event2); + } + if (Object.is($event.tag, 'tbitem10')) { + this.toolbar_tbitem10_click(null, '', $event2); + } + } + + /** + * grid 部件 selectionchange 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public grid_selectionchange($event: any, $event2?: any): void { + this.engine.onCtrlEvent('grid', 'selectionchange', $event); + } + + /** + * grid 部件 beforeload 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public grid_beforeload($event: any, $event2?: any): void { + this.engine.onCtrlEvent('grid', 'beforeload', $event); + } + + /** + * grid 部件 rowdblclick 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public grid_rowdblclick($event: any, $event2?: any): void { + this.engine.onCtrlEvent('grid', 'rowdblclick', $event); + } + + /** + * grid 部件 remove 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public grid_remove($event: any, $event2?: any): void { + this.engine.onCtrlEvent('grid', 'remove', $event); + } + + /** + * grid 部件 load 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public grid_load($event: any, $event2?: any): void { + this.engine.onCtrlEvent('grid', 'load', $event); + } + + /** + * searchform 部件 save 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public searchform_save($event: any, $event2?: any): void { + this.engine.onCtrlEvent('searchform', 'save', $event); + } + + /** + * searchform 部件 search 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public searchform_search($event: any, $event2?: any): void { + this.engine.onCtrlEvent('searchform', 'search', $event); + } + + /** + * searchform 部件 load 事件 + * + * @param {*} [args={}] + * @param {*} $event + * @memberof EAMApplyAssetApplyGridViewBase + */ + public searchform_load($event: any, $event2?: any): void { + this.engine.onCtrlEvent('searchform', 'load', $event); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem12_openquickcreateview_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + const curUIService:EAMApplyUIService = new EAMApplyUIService(); + curUIService.EAMApply_OpenQuickCreateView(datas,contextJO, paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem2_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + this.Edit(datas, contextJO,paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem1_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + this.Copy(datas, contextJO,paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem8_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + this.Remove(datas, contextJO,paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem3_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + this.ExportExcel(datas, contextJO,paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem7_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + this.Print(datas, contextJO,paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 逻辑事件 + * + * @param {*} [params={}] + * @param {*} [tag] + * @param {*} [$event] + * @memberof + */ + public toolbar_tbitem10_click(params: any = {}, tag?: any, $event?: any) { + // 参数 + // 取数 + let datas: any[] = []; + let xData: any = null; + // _this 指向容器对象 + const _this: any = this; + let paramJO:any = {}; + let contextJO:any = {}; + xData = this.$refs.grid; + if (xData.getDatas && xData.getDatas instanceof Function) { + datas = [...xData.getDatas()]; + } + if(params){ + datas = [params]; + } + // 界面行为 + this.ToggleFilter(datas, contextJO,paramJO, $event, xData,this,"EAMApply"); + } + + /** + * 打开新建数据视图 + * + * @param {any[]} args + * @param {*} [params] + * @param {*} [fullargs] + * @param {*} [$event] + * @param {*} [xData] + * @memberof EAMApplyAssetApplyGridView + */ + public newdata(args: any[],fullargs?:any[], params?: any, $event?: any, xData?: any) { + let localContext:any = null; + let localViewParam:any =null; + const data: any = {}; + if(args[0].srfsourcekey){ + data.srfsourcekey = args[0].srfsourcekey; + } + let tempContext = JSON.parse(JSON.stringify(this.context)); + delete tempContext.eamapply; + if(args.length >0){ + Object.assign(tempContext,args[0]); + } + let deResParameters: any[] = []; + if(tempContext.eamasset && true){ + deResParameters = [ + { pathName: 'eamassets', parameterName: 'eamasset' }, + ] + } + const parameters: any[] = [ + { pathName: 'eamapplies', parameterName: 'eamapply' }, + ]; + const _this: any = this; + const openDrawer = (view: any, data: any) => { + let container: Subject = this.$appdrawer.openDrawer(view, tempContext, data); + container.subscribe((result: any) => { + if (!result || !Object.is(result.ret, 'OK')) { + return; + } + if (!xData || !(xData.refresh instanceof Function)) { + return; + } + xData.refresh(result.datas); + }); + } + const view: any = { + viewname: 'eamapply-quick-create-view', + height: 0, + width: 0, + title: this.$t('entities.eamapply.views.quickcreateview.title'), + placement: 'DRAWER_RIGHT', + }; + openDrawer(view, data); + } + + + /** + * 打开编辑数据视图 + * + * @param {any[]} args + * @param {*} [params] + * @param {*} [fullargs] + * @param {*} [$event] + * @param {*} [xData] + * @memberof EAMApplyAssetApplyGridView + */ + public opendata(args: any[],fullargs?:any[],params?: any, $event?: any, xData?: any) { + const localContext: any = null; + const localViewParam: any =null; + const data: any = {}; + let tempContext = JSON.parse(JSON.stringify(this.context)); + if(args.length >0){ + Object.assign(tempContext,args[0]); + } + let deResParameters: any[] = []; + if(tempContext.eamasset && true){ + deResParameters = [ + { pathName: 'eamassets', parameterName: 'eamasset' }, + ] + } + const parameters: any[] = [ + { pathName: 'eamapplies', parameterName: 'eamapply' }, + { pathName: 'infoview', parameterName: 'infoview' }, + ]; + const _this: any = this; + const openIndexViewTab = (data: any) => { + const routePath = this.$viewTool.buildUpRoutePath(this.$route, tempContext, deResParameters, parameters, args, data); + this.$router.push(routePath); + } + openIndexViewTab(data); + } + + + /** + * 编辑 + * + * @param {any[]} args 当前数据 + * @param {any} contextJO 行为附加上下文 + * @param {*} [params] 附加参数 + * @param {*} [$event] 事件源 + * @param {*} [xData] 执行行为所需当前部件 + * @param {*} [actionContext] 执行行为上下文 + * @memberof EAMApplyAssetApplyGridViewBase + */ + public Edit(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { + if (args.length === 0) { + return; + } + const _this: any = this; + if (_this.opendata && _this.opendata instanceof Function) { + const data: any = { }; + if (args.length > 0) { + Object.assign(data, { eamapply: args[0].eamapply }) + } + _this.opendata([{ ...data }], params, $event, xData); + } else { + _this.$Notice.error({ title: '错误', desc: 'opendata 视图处理逻辑不存在,请添加!' }); + } + } + /** + * 拷贝 + * + * @param {any[]} args 当前数据 + * @param {any} contextJO 行为附加上下文 + * @param {*} [params] 附加参数 + * @param {*} [$event] 事件源 + * @param {*} [xData] 执行行为所需当前部件 + * @param {*} [actionContext] 执行行为上下文 + * @memberof EAMApplyAssetApplyGridViewBase + */ + public Copy(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { + if (args.length === 0) { + return; + } + const _this: any = this; + if (_this.opendata && _this.opendata instanceof Function) { + const data: any = { }; + if (args.length > 0) { + Object.assign(data, { eamapply: args[0].eamapply }); + } + if(!params) params = {}; + Object.assign(params,{copymode:true}); + _this.opendata([{ ...data }], params, $event, xData); + } else { + Object.assign(this.viewparams,{copymode:true}); + } + } + /** + * 删除 + * + * @param {any[]} args 当前数据 + * @param {any} contextJO 行为附加上下文 + * @param {*} [params] 附加参数 + * @param {*} [$event] 事件源 + * @param {*} [xData] 执行行为所需当前部件 + * @param {*} [actionContext] 执行行为上下文 + * @memberof EAMApplyAssetApplyGridViewBase + */ + public Remove(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { + const _this: any = this; + if (!xData || !(xData.remove instanceof Function)) { + return ; + } + xData.remove(args); + } + + /** + * 导出 + * + * @param {any[]} args 当前数据 + * @param {any} contextJO 行为附加上下文 + * @param {*} [params] 附加参数 + * @param {*} [$event] 事件源 + * @param {*} [xData] 执行行为所需当前部件 + * @param {*} [actionContext] 执行行为上下文 + * @memberof EAMApplyAssetApplyGridViewBase + */ + public ExportExcel(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { + const _this: any = this; + if (!xData || !(xData.exportExcel instanceof Function) || !$event) { + return ; + } + xData.exportExcel($event.exportparms); + } + /** + * 打印 + * + * @param {any[]} args 当前数据 + * @param {any} contextJO 行为附加上下文 + * @param {*} [params] 附加参数 + * @param {*} [$event] 事件源 + * @param {*} [xData] 执行行为所需当前部件 + * @param {*} [actionContext] 执行行为上下文 + * @memberof EAMApplyAssetApplyGridViewBase + */ + public Print(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { + let _this:any = this; + if (!xData || !(xData.print instanceof Function) || !$event) { + return ; + } + xData.print(); + } + /** + * 过滤 + * + * @param {any[]} args 当前数据 + * @param {any} contextJO 行为附加上下文 + * @param {*} [params] 附加参数 + * @param {*} [$event] 事件源 + * @param {*} [xData] 执行行为所需当前部件 + * @param {*} [actionContext] 执行行为上下文 + * @memberof EAMApplyAssetApplyGridViewBase + */ + public ToggleFilter(args: any[],contextJO?:any, params?: any, $event?: any, xData?: any,actionContext?:any,srfParentDeName?:string) { + const _this: any = this; + if (_this.hasOwnProperty('isExpandSearchForm')) { + _this.isExpandSearchForm = !_this.isExpandSearchForm; + } + } +} \ No newline at end of file diff --git a/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.html b/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.html new file mode 100644 index 0000000..23438f4 --- /dev/null +++ b/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.html @@ -0,0 +1,49 @@ + + + + + + + \ No newline at end of file diff --git a/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.vue b/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.vue new file mode 100644 index 0000000..2e72c7d --- /dev/null +++ b/app_AssetManagement/src/pages/apply/eamapply-asset-apply-grid-view/eamapply-asset-apply-grid-view.vue @@ -0,0 +1,24 @@ +

    X%rS@g_@3#hbI7eUt>dZU2E&LhkTt&6|)L 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 z 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 JFON#+gU^ffU7@#Et@b5o=1{fd7v(G7^R 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�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