From 4dce911ac2a07f3cae070aedc0bbaaac5fadbc79 Mon Sep 17 00:00:00 2001 From: caorui <3165079241@qq.com> Date: Fri, 20 Sep 2024 15:55:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=97=A5=E5=BF=97=E5=A4=84?= =?UTF-8?q?=E7=90=86=20=E9=92=89=E9=92=89=E5=8D=95=E7=82=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 43 + LICENSE | 44 +- README.md | 74 +- api/login.js | 117 + api/system/assembly.js | 19 + api/system/audit.js | 76 + api/system/basePerson.js | 18 + api/system/home.js | 28 + api/system/user.js | 41 + components/SelectPersonnel.vue | 106 + components/baseAssistant/index.vue | 1252 ++++ components/baseAvatar/index.vue | 139 + components/baseAvatar/props.js | 78 + components/baseCustomer/index.vue | 297 + components/baseForm/index.vue | 297 + components/basePeople/index.vue | 325 ++ components/basePerson/index.vue | 291 + components/basePopup/index.vue | 174 + components/baseProject/index.vue | 287 + components/baseRadioPerson/index.vue | 258 + components/baseTarbar/index.vue | 62 + .../qianziyu-select/qianziyu-select.vue | 208 + components/uni-section/uni-section.vue | 167 + config.js | 26 + main.js | 26 + manifest.json | 78 + package-lock.json | 319 + package.json | 11 + pages.json | 148 + pages/homePage/index.vue | 154 + pages/login.vue | 234 + pages/loginAuthen/authenDingDing.vue | 132 + pages/loginAuthen/authenDingDingAudit.vue | 174 + pages/loginAuthen/authenWeChat.vue | 113 + pages/loginAuthen/loginDingDing.vue | 145 + pages/loginAuthen/loginWeChat.vue | 138 + pages/loginAuthen/selectCompany.vue | 150 + pages/logsError/details.vue | 323 ++ pages/logsError/index.vue | 420 ++ pages/logsError/push.png | Bin 0 -> 2861 bytes pages/logsError/show.vue | 310 + permission.js | 41 + plugins/auth.js | 60 + plugins/index.js | 14 + plugins/modal.js | 74 + plugins/tab.js | 30 + static/daishu.png | Bin 0 -> 5370 bytes static/favicon.ico | Bin 0 -> 202814 bytes static/font/demo.css | 539 ++ static/font/demo_index.html | 1614 ++++++ static/font/iconfont.css | 260 + static/font/iconfont.js | 1 + static/font/iconfont.json | 443 ++ static/font/iconfont.ttf | Bin 0 -> 24060 bytes static/font/iconfont.woff | Bin 0 -> 12908 bytes static/font/iconfont.woff2 | Bin 0 -> 10768 bytes static/images/advance.png | Bin 0 -> 25396 bytes static/images/audit/0.png | Bin 0 -> 351 bytes static/images/audit/1.png | Bin 0 -> 316 bytes static/images/audit/2.png | Bin 0 -> 351 bytes static/images/audit/3.png | Bin 0 -> 349 bytes static/images/audit/close.png | Bin 0 -> 182 bytes static/images/audit/person.png | Bin 0 -> 6138 bytes static/images/audit/radio.png | Bin 0 -> 6503 bytes static/images/audit/催办.png | Bin 0 -> 6092 bytes static/images/audit/发起人.png | Bin 0 -> 178 bytes static/images/audit/审批人(加签).png | Bin 0 -> 313 bytes static/images/audit/审核人.png | Bin 0 -> 285 bytes static/images/audit/抄送人.png | Bin 0 -> 313 bytes static/images/audit/抄送人(加签).png | Bin 0 -> 313 bytes static/images/defaultIcon.png | Bin 0 -> 4483 bytes static/images/delay.png | Bin 0 -> 21352 bytes static/images/empty.png | Bin 0 -> 17165 bytes static/images/images/staging.png | Bin 0 -> 90439 bytes static/images/normal.png | Bin 0 -> 24921 bytes static/images/profile.jpg | Bin 0 -> 81131 bytes static/images/tabbar/contacts.png | Bin 0 -> 1661 bytes static/images/tabbar/contacts_.png | Bin 0 -> 1713 bytes static/images/tabbar/handle.png | Bin 0 -> 1959 bytes static/images/tabbar/handle_.png | Bin 0 -> 2043 bytes static/images/tabbar/message.png | Bin 0 -> 1836 bytes static/images/tabbar/message_.png | Bin 0 -> 1944 bytes static/images/tabbar/staging.png | Bin 0 -> 1416 bytes static/images/tabbar/staging_.png | Bin 0 -> 1591 bytes static/index.html | 20 + static/logo.png | Bin 0 -> 15684 bytes static/logo1.png | Bin 0 -> 9023 bytes static/scss/colorui.css | 5142 +++++++++++++++++ static/scss/global.css | 109 + static/scss/global.min.css | 1 + static/scss/global.scss | 110 + static/scss/index.scss | 6 + store/getters.js | 10 + store/index.js | 15 + store/modules/user.js | 111 + uni.scss | 65 + uni_modules/custom-tree-select/changelog.md | 173 + .../custom-tree-select/custom-tree-select.vue | 963 +++ .../custom-tree-select/data-select-item.vue | 302 + .../components/custom-tree-select/utils.js | 17 + uni_modules/custom-tree-select/package.json | 84 + uni_modules/custom-tree-select/readme.md | 187 + uni_modules/mescroll-uni/changelog.md | 8 + .../mescroll-body/mescroll-body.css | 19 + .../mescroll-body/mescroll-body.vue | 400 ++ .../mescroll-empty/mescroll-empty.vue | 116 + .../mescroll-uni/components/mescroll-down.css | 55 + .../mescroll-uni/components/mescroll-down.vue | 47 + .../mescroll-uni/components/mescroll-top.vue | 99 + .../mescroll-uni/components/mescroll-up.css | 47 + .../mescroll-uni/components/mescroll-up.vue | 39 + .../components/mescroll-uni/mescroll-i18n.js | 15 + .../mescroll-uni/mescroll-mixins.js | 46 + .../mescroll-uni/mescroll-uni-option.js | 64 + .../components/mescroll-uni/mescroll-uni.css | 36 + .../components/mescroll-uni/mescroll-uni.js | 799 +++ .../components/mescroll-uni/mescroll-uni.vue | 480 ++ .../mescroll-uni/mixins/mescroll-comp.js | 47 + .../mescroll-uni/mixins/mescroll-more-item.js | 57 + .../mescroll-uni/mixins/mescroll-more.js | 77 + .../components/mescroll-uni/wxs/mixins.js | 109 + .../components/mescroll-uni/wxs/renderjs.js | 92 + .../components/mescroll-uni/wxs/wxs.wxs | 269 + uni_modules/mescroll-uni/hooks/useMescroll.js | 66 + .../mescroll-uni/hooks/useMescrollComp.js | 56 + .../mescroll-uni/hooks/useMescrollMore.js | 69 + uni_modules/mescroll-uni/package.json | 76 + uni_modules/mescroll-uni/readme.md | 45 + uni_modules/uni-badge/changelog.md | 31 + .../components/uni-badge/uni-badge.vue | 268 + uni_modules/uni-badge/package.json | 85 + uni_modules/uni-badge/readme.md | 10 + uni_modules/uni-breadcrumb/changelog.md | 6 + .../uni-breadcrumb-item.vue | 121 + .../uni-breadcrumb/uni-breadcrumb.vue | 41 + uni_modules/uni-breadcrumb/package.json | 88 + uni_modules/uni-breadcrumb/readme.md | 66 + uni_modules/uni-calendar/changelog.md | 20 + .../components/uni-calendar/calendar.js | 546 ++ .../components/uni-calendar/i18n/en.json | 12 + .../components/uni-calendar/i18n/index.js | 8 + .../components/uni-calendar/i18n/zh-Hans.json | 12 + .../components/uni-calendar/i18n/zh-Hant.json | 12 + .../uni-calendar/uni-calendar-item.vue | 188 + .../components/uni-calendar/uni-calendar.vue | 562 ++ .../components/uni-calendar/util.js | 350 ++ uni_modules/uni-calendar/package.json | 85 + uni_modules/uni-calendar/readme.md | 103 + uni_modules/uni-card/changelog.md | 26 + .../uni-card/components/uni-card/uni-card.vue | 270 + uni_modules/uni-card/package.json | 90 + uni_modules/uni-card/readme.md | 12 + uni_modules/uni-collapse/changelog.md | 36 + .../uni-collapse-item/uni-collapse-item.vue | 402 ++ .../components/uni-collapse/uni-collapse.vue | 147 + uni_modules/uni-collapse/package.json | 89 + uni_modules/uni-collapse/readme.md | 12 + uni_modules/uni-combox/changelog.md | 15 + .../components/uni-combox/uni-combox.vue | 275 + uni_modules/uni-combox/package.json | 90 + uni_modules/uni-combox/readme.md | 11 + uni_modules/uni-countdown/changelog.md | 24 + .../components/uni-countdown/i18n/en.json | 6 + .../components/uni-countdown/i18n/index.js | 8 + .../uni-countdown/i18n/zh-Hans.json | 6 + .../uni-countdown/i18n/zh-Hant.json | 6 + .../uni-countdown/uni-countdown.vue | 271 + uni_modules/uni-countdown/package.json | 86 + uni_modules/uni-countdown/readme.md | 10 + uni_modules/uni-data-checkbox/changelog.md | 45 + .../uni-data-checkbox/uni-data-checkbox.vue | 821 +++ uni_modules/uni-data-checkbox/package.json | 84 + uni_modules/uni-data-checkbox/readme.md | 18 + uni_modules/uni-data-picker/changelog.md | 66 + .../components/uni-data-picker/keypress.js | 45 + .../uni-data-picker/uni-data-picker.vue | 547 ++ .../uni-data-pickerview/uni-data-picker.js | 622 ++ .../uni-data-pickerview.vue | 321 + uni_modules/uni-data-picker/package.json | 90 + uni_modules/uni-data-picker/readme.md | 22 + uni_modules/uni-data-select/changelog.md | 22 + .../uni-data-select/uni-data-select.vue | 440 ++ uni_modules/uni-data-select/package.json | 85 + uni_modules/uni-data-select/readme.md | 8 + uni_modules/uni-dateformat/changelog.md | 10 + .../components/uni-dateformat/date-format.js | 200 + .../uni-dateformat/uni-dateformat.vue | 88 + uni_modules/uni-dateformat/package.json | 88 + uni_modules/uni-dateformat/readme.md | 11 + uni_modules/uni-datetime-picker/changelog.md | 103 + .../uni-datetime-picker/calendar-item.vue | 187 + .../uni-datetime-picker/calendar.vue | 924 +++ .../uni-datetime-picker/i18n/en.json | 22 + .../uni-datetime-picker/i18n/index.js | 8 + .../uni-datetime-picker/i18n/zh-Hans.json | 22 + .../uni-datetime-picker/i18n/zh-Hant.json | 22 + .../uni-datetime-picker/keypress.js | 45 + .../uni-datetime-picker/time-picker.vue | 946 +++ .../uni-datetime-picker.vue | 1015 ++++ .../components/uni-datetime-picker/util.js | 410 ++ uni_modules/uni-datetime-picker/package.json | 87 + uni_modules/uni-datetime-picker/readme.md | 21 + uni_modules/uni-drawer/changelog.md | 13 + .../components/uni-drawer/keypress.js | 45 + .../components/uni-drawer/uni-drawer.vue | 183 + uni_modules/uni-drawer/package.json | 87 + uni_modules/uni-drawer/readme.md | 10 + uni_modules/uni-easyinput/changelog.md | 86 + .../components/uni-easyinput/common.js | 56 + .../uni-easyinput/uni-easyinput.vue | 679 +++ uni_modules/uni-easyinput/package.json | 87 + uni_modules/uni-easyinput/readme.md | 11 + uni_modules/uni-fab/changelog.md | 21 + .../uni-fab/components/uni-fab/uni-fab.vue | 490 ++ uni_modules/uni-fab/package.json | 84 + uni_modules/uni-fab/readme.md | 9 + uni_modules/uni-fav/changelog.md | 19 + .../uni-fav/components/uni-fav/i18n/en.json | 4 + .../uni-fav/components/uni-fav/i18n/index.js | 8 + .../components/uni-fav/i18n/zh-Hans.json | 4 + .../components/uni-fav/i18n/zh-Hant.json | 4 + .../uni-fav/components/uni-fav/uni-fav.vue | 161 + uni_modules/uni-fav/package.json | 89 + uni_modules/uni-fav/readme.md | 10 + uni_modules/uni-file-picker/changelog.md | 63 + .../uni-file-picker/choose-and-upload-file.js | 224 + .../uni-file-picker/uni-file-picker.vue | 656 +++ .../uni-file-picker/upload-file.vue | 325 ++ .../uni-file-picker/upload-image.vue | 292 + .../components/uni-file-picker/utils.js | 109 + uni_modules/uni-file-picker/package.json | 86 + uni_modules/uni-file-picker/readme.md | 11 + uni_modules/uni-forms/changelog.md | 90 + .../uni-forms-item/uni-forms-item.vue | 631 ++ .../components/uni-forms/uni-forms.vue | 397 ++ .../uni-forms/components/uni-forms/utils.js | 293 + .../components/uni-forms/validate.js | 486 ++ uni_modules/uni-forms/package.json | 88 + uni_modules/uni-forms/readme.md | 23 + uni_modules/uni-goods-nav/changelog.md | 18 + .../components/uni-goods-nav/i18n/en.json | 6 + .../components/uni-goods-nav/i18n/index.js | 8 + .../uni-goods-nav/i18n/zh-Hans.json | 6 + .../uni-goods-nav/i18n/zh-Hant.json | 6 + .../uni-goods-nav/uni-goods-nav.vue | 229 + uni_modules/uni-goods-nav/package.json | 88 + uni_modules/uni-goods-nav/readme.md | 10 + uni_modules/uni-grid/changelog.md | 13 + .../uni-grid-item/uni-grid-item.vue | 127 + .../uni-grid/components/uni-grid/uni-grid.vue | 142 + uni_modules/uni-grid/package.json | 86 + uni_modules/uni-grid/readme.md | 11 + uni_modules/uni-group/changelog.md | 16 + .../components/uni-group/uni-group.vue | 134 + uni_modules/uni-group/package.json | 87 + uni_modules/uni-group/readme.md | 9 + uni_modules/uni-icons/changelog.md | 22 + .../uni-icons/components/uni-icons/icons.js | 1169 ++++ .../components/uni-icons/uni-icons.vue | 96 + .../components/uni-icons/uniicons.css | 663 +++ .../components/uni-icons/uniicons.ttf | Bin 0 -> 35760 bytes uni_modules/uni-icons/package.json | 86 + uni_modules/uni-icons/readme.md | 8 + uni_modules/uni-indexed-list/changelog.md | 17 + .../uni-indexed-list-item.vue | 144 + .../uni-indexed-list/uni-indexed-list.vue | 367 ++ uni_modules/uni-indexed-list/package.json | 89 + uni_modules/uni-indexed-list/readme.md | 11 + uni_modules/uni-link/changelog.md | 17 + .../uni-link/components/uni-link/uni-link.vue | 128 + uni_modules/uni-link/package.json | 87 + uni_modules/uni-link/readme.md | 11 + uni_modules/uni-list/changelog.md | 20 + .../components/uni-list-ad/uni-list-ad.vue | 107 + .../uni-list-chat/uni-list-chat.scss | 58 + .../uni-list-chat/uni-list-chat.vue | 538 ++ .../uni-list-item/uni-list-item.vue | 454 ++ .../uni-list/components/uni-list/uni-list.vue | 108 + .../components/uni-list/uni-refresh.vue | 65 + .../components/uni-list/uni-refresh.wxs | 87 + uni_modules/uni-list/package.json | 91 + uni_modules/uni-list/readme.md | 346 ++ uni_modules/uni-load-more/changelog.md | 19 + .../components/uni-load-more/i18n/en.json | 5 + .../components/uni-load-more/i18n/index.js | 8 + .../uni-load-more/i18n/zh-Hans.json | 5 + .../uni-load-more/i18n/zh-Hant.json | 5 + .../uni-load-more/uni-load-more.vue | 399 ++ uni_modules/uni-load-more/package.json | 86 + uni_modules/uni-load-more/readme.md | 14 + uni_modules/uni-nav-bar/changelog.md | 47 + .../components/uni-nav-bar/uni-nav-bar.vue | 357 ++ .../components/uni-nav-bar/uni-status-bar.vue | 27 + uni_modules/uni-nav-bar/package.json | 86 + uni_modules/uni-nav-bar/readme.md | 15 + uni_modules/uni-notice-bar/changelog.md | 18 + .../uni-notice-bar/uni-notice-bar.vue | 426 ++ uni_modules/uni-notice-bar/package.json | 87 + uni_modules/uni-notice-bar/readme.md | 13 + uni_modules/uni-number-box/changelog.md | 25 + .../uni-number-box/uni-number-box.vue | 221 + uni_modules/uni-number-box/package.json | 85 + uni_modules/uni-number-box/readme.md | 13 + uni_modules/uni-pagination/changelog.md | 27 + .../components/uni-pagination/i18n/en.json | 5 + .../components/uni-pagination/i18n/es.json | 5 + .../components/uni-pagination/i18n/fr.json | 5 + .../components/uni-pagination/i18n/index.js | 12 + .../uni-pagination/i18n/zh-Hans.json | 5 + .../uni-pagination/i18n/zh-Hant.json | 5 + .../uni-pagination/uni-pagination.vue | 465 ++ uni_modules/uni-pagination/package.json | 83 + uni_modules/uni-pagination/readme.md | 11 + uni_modules/uni-popup/changelog.md | 60 + .../components/uni-popup-dialog/keypress.js | 45 + .../uni-popup-dialog/uni-popup-dialog.vue | 271 + .../uni-popup-message/uni-popup-message.vue | 143 + .../uni-popup-share/uni-popup-share.vue | 187 + .../components/uni-popup/i18n/en.json | 7 + .../components/uni-popup/i18n/index.js | 8 + .../components/uni-popup/i18n/zh-Hans.json | 7 + .../components/uni-popup/i18n/zh-Hant.json | 7 + .../components/uni-popup/keypress.js | 45 + .../uni-popup/components/uni-popup/popup.js | 26 + .../components/uni-popup/uni-popup.vue | 479 ++ uni_modules/uni-popup/package.json | 90 + uni_modules/uni-popup/readme.md | 17 + uni_modules/uni-rate/changelog.md | 25 + .../uni-rate/components/uni-rate/uni-rate.vue | 361 ++ uni_modules/uni-rate/package.json | 88 + uni_modules/uni-rate/readme.md | 12 + uni_modules/uni-row/changelog.md | 10 + .../uni-row/components/uni-col/uni-col.vue | 317 + .../uni-row/components/uni-row/uni-row.vue | 190 + uni_modules/uni-row/package.json | 87 + uni_modules/uni-row/readme.md | 10 + uni_modules/uni-scss/changelog.md | 8 + uni_modules/uni-scss/index.scss | 1 + uni_modules/uni-scss/package.json | 82 + uni_modules/uni-scss/readme.md | 4 + uni_modules/uni-scss/styles/index.scss | 7 + .../uni-scss/styles/setting/_border.scss | 3 + .../uni-scss/styles/setting/_color.scss | 66 + .../uni-scss/styles/setting/_radius.scss | 55 + .../uni-scss/styles/setting/_space.scss | 56 + .../uni-scss/styles/setting/_styles.scss | 167 + .../uni-scss/styles/setting/_text.scss | 24 + .../uni-scss/styles/setting/_variables.scss | 146 + .../uni-scss/styles/tools/functions.scss | 19 + uni_modules/uni-scss/theme.scss | 31 + uni_modules/uni-scss/variables.scss | 62 + uni_modules/uni-search-bar/changelog.md | 33 + .../components/uni-search-bar/i18n/en.json | 4 + .../components/uni-search-bar/i18n/index.js | 8 + .../uni-search-bar/i18n/zh-Hans.json | 4 + .../uni-search-bar/i18n/zh-Hant.json | 4 + .../uni-search-bar/uni-search-bar.vue | 298 + uni_modules/uni-search-bar/package.json | 89 + uni_modules/uni-search-bar/readme.md | 14 + .../uni-segmented-control/changelog.md | 9 + .../uni-segmented-control.vue | 145 + .../uni-segmented-control/package.json | 87 + uni_modules/uni-segmented-control/readme.md | 13 + uni_modules/uni-steps/changelog.md | 16 + .../components/uni-steps/uni-steps.vue | 269 + uni_modules/uni-steps/package.json | 89 + uni_modules/uni-steps/readme.md | 13 + uni_modules/uni-swipe-action/changelog.md | 41 + .../uni-swipe-action-item/bindingx.js | 302 + .../components/uni-swipe-action-item/isPC.js | 12 + .../uni-swipe-action-item/mpalipay.js | 193 + .../uni-swipe-action-item/mpother.js | 259 + .../components/uni-swipe-action-item/mpwxs.js | 83 + .../uni-swipe-action-item/render.js | 270 + .../uni-swipe-action-item.vue | 347 ++ .../components/uni-swipe-action-item/wx.wxs | 341 ++ .../uni-swipe-action/uni-swipe-action.vue | 60 + uni_modules/uni-swipe-action/package.json | 87 + uni_modules/uni-swipe-action/readme.md | 11 + uni_modules/uni-swiper-dot/changelog.md | 12 + .../uni-swiper-dot/uni-swiper-dot.vue | 218 + uni_modules/uni-swiper-dot/package.json | 87 + uni_modules/uni-swiper-dot/readme.md | 11 + uni_modules/uni-table/changelog.md | 23 + .../components/uni-table/uni-table.vue | 455 ++ .../components/uni-tbody/uni-tbody.vue | 29 + .../uni-table/components/uni-td/uni-td.vue | 90 + .../components/uni-th/filter-dropdown.vue | 503 ++ .../uni-table/components/uni-th/uni-th.vue | 278 + .../components/uni-thead/uni-thead.vue | 129 + .../components/uni-tr/table-checkbox.vue | 179 + .../uni-table/components/uni-tr/uni-tr.vue | 171 + uni_modules/uni-table/i18n/en.json | 9 + uni_modules/uni-table/i18n/es.json | 9 + uni_modules/uni-table/i18n/fr.json | 9 + uni_modules/uni-table/i18n/index.js | 12 + uni_modules/uni-table/i18n/zh-Hans.json | 9 + uni_modules/uni-table/i18n/zh-Hant.json | 9 + uni_modules/uni-table/package.json | 86 + uni_modules/uni-table/readme.md | 13 + uni_modules/uni-tag/changelog.md | 21 + .../uni-tag/components/uni-tag/uni-tag.vue | 252 + uni_modules/uni-tag/package.json | 87 + uni_modules/uni-tag/readme.md | 13 + uni_modules/uni-title/changelog.md | 10 + .../components/uni-title/uni-title.vue | 171 + uni_modules/uni-title/package.json | 88 + uni_modules/uni-title/readme.md | 14 + uni_modules/uni-tooltip/changelog.md | 10 + .../components/uni-tooltip/uni-tooltip.vue | 68 + uni_modules/uni-tooltip/package.json | 88 + uni_modules/uni-tooltip/readme.md | 8 + uni_modules/uni-transition/changelog.md | 20 + .../uni-transition/createAnimation.js | 128 + .../uni-transition/uni-transition.vue | 281 + uni_modules/uni-transition/package.json | 87 + uni_modules/uni-transition/readme.md | 11 + uni_modules/uview-ui/LICENSE | 21 + uni_modules/uview-ui/README.md | 66 + uni_modules/uview-ui/changelog.md | 362 ++ .../uview-ui/components/u--form/u--form.vue | 78 + .../uview-ui/components/u--image/u--image.vue | 47 + .../uview-ui/components/u--input/u--input.vue | 73 + .../uview-ui/components/u--text/u--text.vue | 44 + .../components/u--textarea/u--textarea.vue | 48 + .../components/u-action-sheet/props.js | 54 + .../u-action-sheet/u-action-sheet.vue | 278 + .../uview-ui/components/u-album/props.js | 59 + .../uview-ui/components/u-album/u-album.vue | 259 + .../uview-ui/components/u-alert/props.js | 44 + .../uview-ui/components/u-alert/u-alert.vue | 243 + .../components/u-avatar-group/props.js | 52 + .../u-avatar-group/u-avatar-group.vue | 103 + .../uview-ui/components/u-avatar/props.js | 78 + .../uview-ui/components/u-avatar/u-avatar.vue | 172 + .../uview-ui/components/u-back-top/props.js | 54 + .../components/u-back-top/u-back-top.vue | 129 + .../uview-ui/components/u-badge/props.js | 72 + .../uview-ui/components/u-badge/u-badge.vue | 171 + .../uview-ui/components/u-button/nvue.scss | 46 + .../uview-ui/components/u-button/props.js | 161 + .../uview-ui/components/u-button/u-button.vue | 490 ++ .../uview-ui/components/u-button/vue.scss | 80 + .../uview-ui/components/u-calendar/header.vue | 99 + .../uview-ui/components/u-calendar/month.vue | 579 ++ .../uview-ui/components/u-calendar/props.js | 144 + .../components/u-calendar/u-calendar.vue | 384 ++ .../uview-ui/components/u-calendar/util.js | 85 + .../components/u-car-keyboard/props.js | 14 + .../u-car-keyboard/u-car-keyboard.vue | 311 + .../uview-ui/components/u-cell-group/props.js | 14 + .../components/u-cell-group/u-cell-group.vue | 61 + .../uview-ui/components/u-cell/props.js | 110 + .../uview-ui/components/u-cell/u-cell.vue | 229 + .../components/u-checkbox-group/props.js | 82 + .../u-checkbox-group/u-checkbox-group.vue | 103 + .../uview-ui/components/u-checkbox/props.js | 69 + .../components/u-checkbox/u-checkbox.vue | 344 ++ .../components/u-circle-progress/props.js | 8 + .../u-circle-progress/u-circle-progress.vue | 198 + .../uview-ui/components/u-code-input/props.js | 79 + .../components/u-code-input/u-code-input.vue | 252 + .../uview-ui/components/u-code/props.js | 34 + .../uview-ui/components/u-code/u-code.vue | 129 + .../uview-ui/components/u-col/props.js | 29 + .../uview-ui/components/u-col/u-col.vue | 162 + .../components/u-collapse-item/props.js | 59 + .../u-collapse-item/u-collapse-item.vue | 225 + .../uview-ui/components/u-collapse/props.js | 19 + .../components/u-collapse/u-collapse.vue | 90 + .../components/u-column-notice/props.js | 55 + .../u-column-notice/u-column-notice.vue | 160 + .../uview-ui/components/u-count-down/props.js | 24 + .../components/u-count-down/u-count-down.vue | 163 + .../uview-ui/components/u-count-down/utils.js | 62 + .../uview-ui/components/u-count-to/props.js | 59 + .../components/u-count-to/u-count-to.vue | 184 + .../components/u-datetime-picker/props.js | 116 + .../u-datetime-picker/u-datetime-picker.vue | 360 ++ .../uview-ui/components/u-divider/props.js | 44 + .../components/u-divider/u-divider.vue | 116 + .../components/u-dropdown-item/props.js | 36 + .../u-dropdown-item/u-dropdown-item.vue | 127 + .../uview-ui/components/u-dropdown/props.js | 65 + .../components/u-dropdown/u-dropdown.vue | 127 + .../uview-ui/components/u-empty/props.js | 59 + .../uview-ui/components/u-empty/u-empty.vue | 128 + .../uview-ui/components/u-form-item/props.js | 48 + .../components/u-form-item/u-form-item.vue | 257 + .../uview-ui/components/u-form/props.js | 45 + .../uview-ui/components/u-form/u-form.vue | 214 + .../uview-ui/components/u-gap/props.js | 24 + .../uview-ui/components/u-gap/u-gap.vue | 38 + .../uview-ui/components/u-grid-item/props.js | 14 + .../components/u-grid-item/u-grid-item.vue | 209 + .../uview-ui/components/u-grid/props.js | 19 + .../uview-ui/components/u-grid/u-grid.vue | 97 + .../uview-ui/components/u-icon/icons.js | 214 + .../uview-ui/components/u-icon/props.js | 89 + .../uview-ui/components/u-icon/u-icon.vue | 234 + .../uview-ui/components/u-image/props.js | 84 + .../uview-ui/components/u-image/u-image.vue | 232 + .../components/u-index-anchor/props.js | 29 + .../u-index-anchor/u-index-anchor.vue | 91 + .../uview-ui/components/u-index-item/props.js | 5 + .../components/u-index-item/u-index-item.vue | 87 + .../uview-ui/components/u-index-list/props.js | 29 + .../components/u-index-list/u-index-list.vue | 440 ++ .../uview-ui/components/u-input/props.js | 187 + .../uview-ui/components/u-input/u-input.vue | 354 ++ .../uview-ui/components/u-keyboard/props.js | 84 + .../components/u-keyboard/u-keyboard.vue | 164 + .../components/u-line-progress/props.js | 28 + .../u-line-progress/u-line-progress.vue | 144 + .../uview-ui/components/u-line/props.js | 33 + .../uview-ui/components/u-line/u-line.vue | 62 + .../uview-ui/components/u-link/props.js | 39 + .../uview-ui/components/u-link/u-link.vue | 83 + .../uview-ui/components/u-list-item/props.js | 9 + .../components/u-list-item/u-list-item.vue | 116 + .../uview-ui/components/u-list/props.js | 76 + .../uview-ui/components/u-list/u-list.vue | 157 + .../components/u-loading-icon/props.js | 59 + .../u-loading-icon/u-loading-icon.vue | 343 ++ .../components/u-loading-page/props.js | 49 + .../u-loading-page/u-loading-page.vue | 116 + .../uview-ui/components/u-loadmore/props.js | 94 + .../components/u-loadmore/u-loadmore.vue | 150 + .../uview-ui/components/u-modal/props.js | 84 + .../uview-ui/components/u-modal/u-modal.vue | 227 + .../uview-ui/components/u-navbar/props.js | 84 + .../uview-ui/components/u-navbar/u-navbar.vue | 186 + .../uview-ui/components/u-no-network/props.js | 19 + .../components/u-no-network/u-no-network.vue | 220 + .../uview-ui/components/u-notice-bar/props.js | 70 + .../components/u-notice-bar/u-notice-bar.vue | 101 + .../uview-ui/components/u-notify/props.js | 49 + .../uview-ui/components/u-notify/u-notify.vue | 211 + .../uview-ui/components/u-number-box/props.js | 109 + .../components/u-number-box/u-number-box.vue | 416 ++ .../components/u-number-keyboard/props.js | 19 + .../u-number-keyboard/u-number-keyboard.vue | 196 + .../uview-ui/components/u-overlay/props.js | 24 + .../components/u-overlay/u-overlay.vue | 68 + .../uview-ui/components/u-parse/node/node.vue | 499 ++ .../uview-ui/components/u-parse/parser.js | 1075 ++++ .../uview-ui/components/u-parse/props.js | 45 + .../uview-ui/components/u-parse/u-parse.vue | 366 ++ .../components/u-picker-column/props.js | 5 + .../u-picker-column/u-picker-column.vue | 27 + .../uview-ui/components/u-picker/props.js | 79 + .../uview-ui/components/u-picker/u-picker.vue | 283 + .../uview-ui/components/u-popup/props.js | 79 + .../uview-ui/components/u-popup/u-popup.vue | 304 + .../components/u-radio-group/props.js | 85 + .../u-radio-group/u-radio-group.vue | 108 + .../uview-ui/components/u-radio/props.js | 64 + .../uview-ui/components/u-radio/u-radio.vue | 339 ++ .../uview-ui/components/u-rate/props.js | 69 + .../uview-ui/components/u-rate/u-rate.vue | 306 + .../uview-ui/components/u-read-more/props.js | 61 + .../components/u-read-more/u-read-more.vue | 157 + .../uview-ui/components/u-row-notice/props.js | 39 + .../components/u-row-notice/u-row-notice.vue | 330 ++ .../uview-ui/components/u-row/props.js | 19 + .../uview-ui/components/u-row/u-row.vue | 93 + .../components/u-safe-bottom/props.js | 5 + .../u-safe-bottom/u-safe-bottom.vue | 56 + .../uview-ui/components/u-scroll-list/nvue.js | 28 + .../components/u-scroll-list/other.js | 0 .../components/u-scroll-list/props.js | 34 + .../components/u-scroll-list/scrollWxs.wxs | 50 + .../u-scroll-list/u-scroll-list.vue | 224 + .../uview-ui/components/u-search/props.js | 118 + .../uview-ui/components/u-search/u-search.vue | 303 + .../uview-ui/components/u-skeleton/props.js | 59 + .../components/u-skeleton/u-skeleton.vue | 244 + .../uview-ui/components/u-slider/mpother.js | 113 + .../uview-ui/components/u-slider/mpwxs.js | 42 + .../uview-ui/components/u-slider/mpwxs.wxs | 121 + .../components/u-slider/nvue - 副本.js | 180 + .../uview-ui/components/u-slider/nvue.js | 193 + .../uview-ui/components/u-slider/props.js | 54 + .../uview-ui/components/u-slider/u-slider.vue | 55 + .../uview-ui/components/u-status-bar/props.js | 8 + .../components/u-status-bar/u-status-bar.vue | 46 + .../uview-ui/components/u-steps-item/props.js | 24 + .../components/u-steps-item/u-steps-item.vue | 316 + .../uview-ui/components/u-steps/props.js | 39 + .../uview-ui/components/u-steps/u-steps.vue | 80 + .../uview-ui/components/u-sticky/props.js | 40 + .../uview-ui/components/u-sticky/u-sticky.vue | 212 + .../uview-ui/components/u-subsection/props.js | 49 + .../components/u-subsection/u-subsection.vue | 299 + .../u-swipe-action-item/index - backup.wxs | 256 + .../components/u-swipe-action-item/index.wxs | 225 + .../u-swipe-action-item/nvue - backup.js | 270 + .../components/u-swipe-action-item/nvue.js | 174 + .../components/u-swipe-action-item/props.js | 41 + .../u-swipe-action-item.vue | 190 + .../components/u-swipe-action-item/wxs.js | 15 + .../components/u-swipe-action/props.js | 9 + .../u-swipe-action/u-swipe-action.vue | 67 + .../components/u-swiper-indicator/props.js | 29 + .../u-swiper-indicator/u-swiper-indicator.vue | 110 + .../uview-ui/components/u-swiper/props.js | 125 + .../uview-ui/components/u-swiper/u-swiper.vue | 255 + .../uview-ui/components/u-switch/props.js | 54 + .../uview-ui/components/u-switch/u-switch.vue | 177 + .../components/u-tabbar-item/props.js | 35 + .../u-tabbar-item/u-tabbar-item.vue | 142 + .../uview-ui/components/u-tabbar/props.js | 44 + .../uview-ui/components/u-tabbar/u-tabbar.vue | 141 + .../uview-ui/components/u-table/props.js | 5 + .../uview-ui/components/u-table/u-table.vue | 29 + .../uview-ui/components/u-tabs-item/props.js | 5 + .../components/u-tabs-item/u-tabs-item.vue | 29 + .../uview-ui/components/u-tabs/props.js | 64 + .../uview-ui/components/u-tabs/u-tabs.vue | 354 ++ .../uview-ui/components/u-tag/props.js | 84 + .../uview-ui/components/u-tag/u-tag.vue | 358 ++ uni_modules/uview-ui/components/u-td/props.js | 5 + uni_modules/uview-ui/components/u-td/u-td.vue | 31 + .../uview-ui/components/u-text/props.js | 110 + .../uview-ui/components/u-text/u-text.vue | 223 + .../uview-ui/components/u-text/value.js | 85 + .../uview-ui/components/u-textarea/props.js | 119 + .../components/u-textarea/u-textarea.vue | 239 + .../uview-ui/components/u-toast/u-toast.vue | 291 + .../uview-ui/components/u-toolbar/props.js | 34 + .../components/u-toolbar/u-toolbar.vue | 102 + .../components/u-tooltip/clipboard.min.js | 58 + .../uview-ui/components/u-tooltip/props.js | 59 + .../components/u-tooltip/u-tooltip.vue | 365 ++ uni_modules/uview-ui/components/u-tr/props.js | 5 + uni_modules/uview-ui/components/u-tr/u-tr.vue | 31 + .../components/u-transition/nvue.ani-map.js | 68 + .../uview-ui/components/u-transition/props.js | 24 + .../components/u-transition/transition.js | 157 + .../components/u-transition/u-transition.vue | 92 + .../u-transition/vue.ani-style.scss | 113 + .../uview-ui/components/u-upload/mixin.js | 21 + .../uview-ui/components/u-upload/props.js | 124 + .../uview-ui/components/u-upload/u-upload.vue | 558 ++ .../uview-ui/components/u-upload/utils.js | 151 + .../uview-ui/components/uview-ui/uview-ui.vue | 15 + uni_modules/uview-ui/index.js | 79 + uni_modules/uview-ui/index.scss | 23 + uni_modules/uview-ui/libs/config/color.js | 17 + uni_modules/uview-ui/libs/config/config.js | 34 + uni_modules/uview-ui/libs/config/props.js | 190 + .../uview-ui/libs/config/props/actionSheet.js | 25 + .../uview-ui/libs/config/props/album.js | 25 + .../uview-ui/libs/config/props/alert.js | 22 + .../uview-ui/libs/config/props/avatar.js | 28 + .../uview-ui/libs/config/props/avatarGroup.js | 23 + .../uview-ui/libs/config/props/backtop.js | 27 + .../uview-ui/libs/config/props/badge.js | 27 + .../uview-ui/libs/config/props/button.js | 42 + .../uview-ui/libs/config/props/calendar.js | 42 + .../uview-ui/libs/config/props/carKeyboard.js | 15 + .../uview-ui/libs/config/props/cell.js | 35 + .../uview-ui/libs/config/props/cellGroup.js | 17 + .../uview-ui/libs/config/props/checkbox.js | 27 + .../libs/config/props/checkboxGroup.js | 29 + .../libs/config/props/circleProgress.js | 15 + .../uview-ui/libs/config/props/code.js | 21 + .../uview-ui/libs/config/props/codeInput.js | 29 + uni_modules/uview-ui/libs/config/props/col.js | 19 + .../uview-ui/libs/config/props/collapse.js | 17 + .../libs/config/props/collapseItem.js | 25 + .../libs/config/props/columnNotice.js | 24 + .../uview-ui/libs/config/props/countDown.js | 18 + .../uview-ui/libs/config/props/countTo.js | 25 + .../libs/config/props/datetimePicker.js | 36 + .../uview-ui/libs/config/props/divider.js | 23 + .../uview-ui/libs/config/props/empty.js | 26 + .../uview-ui/libs/config/props/form.js | 22 + .../uview-ui/libs/config/props/formItem.js | 23 + uni_modules/uview-ui/libs/config/props/gap.js | 19 + .../uview-ui/libs/config/props/grid.js | 17 + .../uview-ui/libs/config/props/gridItem.js | 16 + .../uview-ui/libs/config/props/icon.js | 36 + .../uview-ui/libs/config/props/image.js | 30 + .../uview-ui/libs/config/props/indexAnchor.js | 19 + .../uview-ui/libs/config/props/indexList.js | 19 + .../uview-ui/libs/config/props/input.js | 48 + .../uview-ui/libs/config/props/keyboard.js | 30 + .../uview-ui/libs/config/props/line.js | 20 + .../libs/config/props/lineProgress.js | 19 + .../uview-ui/libs/config/props/link.js | 26 + .../uview-ui/libs/config/props/list.js | 28 + .../uview-ui/libs/config/props/listItem.js | 15 + .../uview-ui/libs/config/props/loadingIcon.js | 30 + .../uview-ui/libs/config/props/loadingPage.js | 23 + .../uview-ui/libs/config/props/loadmore.js | 32 + .../uview-ui/libs/config/props/modal.js | 30 + .../uview-ui/libs/config/props/navbar.js | 32 + .../uview-ui/libs/config/props/noNetwork.js | 18 + .../uview-ui/libs/config/props/noticeBar.js | 27 + .../uview-ui/libs/config/props/notify.js | 22 + .../uview-ui/libs/config/props/numberBox.js | 35 + .../libs/config/props/numberKeyboard.js | 17 + .../uview-ui/libs/config/props/overlay.js | 18 + .../uview-ui/libs/config/props/parse.js | 22 + .../uview-ui/libs/config/props/picker.js | 29 + .../uview-ui/libs/config/props/popup.js | 29 + .../uview-ui/libs/config/props/radio.js | 27 + .../uview-ui/libs/config/props/radioGroup.js | 30 + .../uview-ui/libs/config/props/rate.js | 26 + .../uview-ui/libs/config/props/readMore.js | 22 + uni_modules/uview-ui/libs/config/props/row.js | 17 + .../uview-ui/libs/config/props/rowNotice.js | 21 + .../uview-ui/libs/config/props/scrollList.js | 20 + .../uview-ui/libs/config/props/search.js | 37 + .../uview-ui/libs/config/props/section.js | 24 + .../uview-ui/libs/config/props/skeleton.js | 25 + .../uview-ui/libs/config/props/slider.js | 25 + .../uview-ui/libs/config/props/statusBar.js | 15 + .../uview-ui/libs/config/props/steps.js | 21 + .../uview-ui/libs/config/props/stepsItem.js | 18 + .../uview-ui/libs/config/props/sticky.js | 20 + .../uview-ui/libs/config/props/subsection.js | 23 + .../uview-ui/libs/config/props/swipeAction.js | 15 + .../libs/config/props/swipeActionItem.js | 21 + .../uview-ui/libs/config/props/swiper.js | 39 + .../libs/config/props/swipterIndicator.js | 19 + .../uview-ui/libs/config/props/switch.js | 24 + .../uview-ui/libs/config/props/tabbar.js | 22 + .../uview-ui/libs/config/props/tabbarItem.js | 20 + .../uview-ui/libs/config/props/tabs.js | 32 + uni_modules/uview-ui/libs/config/props/tag.js | 29 + .../uview-ui/libs/config/props/text.js | 38 + .../uview-ui/libs/config/props/textarea.js | 36 + .../uview-ui/libs/config/props/toast.js | 30 + .../uview-ui/libs/config/props/toolbar.js | 21 + .../uview-ui/libs/config/props/tooltip.js | 25 + .../uview-ui/libs/config/props/transition.js | 18 + .../uview-ui/libs/config/props/upload.js | 36 + uni_modules/uview-ui/libs/config/zIndex.js | 20 + uni_modules/uview-ui/libs/css/color.scss | 155 + uni_modules/uview-ui/libs/css/common.scss | 97 + uni_modules/uview-ui/libs/css/components.scss | 15 + uni_modules/uview-ui/libs/css/flex.scss | 257 + uni_modules/uview-ui/libs/css/h5.scss | 0 uni_modules/uview-ui/libs/css/mixin.scss | 8 + uni_modules/uview-ui/libs/css/mp.scss | 0 uni_modules/uview-ui/libs/css/nvue.scss | 0 uni_modules/uview-ui/libs/css/vue.scss | 27 + .../uview-ui/libs/function/colorGradient.js | 134 + .../uview-ui/libs/function/debounce.js | 29 + uni_modules/uview-ui/libs/function/digit.js | 167 + uni_modules/uview-ui/libs/function/index.js | 731 +++ .../uview-ui/libs/function/platform.js | 75 + uni_modules/uview-ui/libs/function/test.js | 288 + .../uview-ui/libs/function/throttle.js | 30 + .../libs/luch-request/adapters/index.js | 97 + .../luch-request/core/InterceptorManager.js | 50 + .../libs/luch-request/core/Request.js | 198 + .../libs/luch-request/core/buildFullPath.js | 20 + .../libs/luch-request/core/defaults.js | 29 + .../libs/luch-request/core/dispatchRequest.js | 3 + .../libs/luch-request/core/mergeConfig.js | 103 + .../uview-ui/libs/luch-request/core/settle.js | 16 + .../libs/luch-request/helpers/buildURL.js | 69 + .../libs/luch-request/helpers/combineURLs.js | 14 + .../luch-request/helpers/isAbsoluteURL.js | 14 + .../uview-ui/libs/luch-request/index.d.ts | 116 + .../uview-ui/libs/luch-request/index.js | 3 + .../uview-ui/libs/luch-request/utils.js | 131 + .../uview-ui/libs/luch-request/utils/clone.js | 264 + uni_modules/uview-ui/libs/mixin/button.js | 13 + uni_modules/uview-ui/libs/mixin/mixin.js | 160 + uni_modules/uview-ui/libs/mixin/mpMixin.js | 8 + uni_modules/uview-ui/libs/mixin/mpShare.js | 13 + uni_modules/uview-ui/libs/mixin/openType.js | 25 + uni_modules/uview-ui/libs/mixin/style.js | 228 + uni_modules/uview-ui/libs/mixin/touch.js | 59 + .../uview-ui/libs/util/async-validator.js | 1343 +++++ uni_modules/uview-ui/libs/util/calendar.js | 546 ++ uni_modules/uview-ui/libs/util/dayjs.js | 308 + uni_modules/uview-ui/libs/util/emitter.js | 51 + uni_modules/uview-ui/libs/util/route.js | 124 + uni_modules/uview-ui/package.json | 84 + uni_modules/uview-ui/theme.scss | 44 + utils/auth.js | 38 + utils/common.js | 68 + utils/constant.js | 8 + utils/dd.js | 85 + utils/errorCode.js | 6 + utils/localStorage.js | 26 + utils/permission.js | 51 + utils/request.js | 88 + utils/storage.js | 33 + utils/upload.js | 76 + vue.config.js | 8 + yarn.lock | 115 + 797 files changed, 96297 insertions(+), 26 deletions(-) create mode 100644 App.vue create mode 100644 api/login.js create mode 100644 api/system/assembly.js create mode 100644 api/system/audit.js create mode 100644 api/system/basePerson.js create mode 100644 api/system/home.js create mode 100644 api/system/user.js create mode 100644 components/SelectPersonnel.vue create mode 100644 components/baseAssistant/index.vue create mode 100644 components/baseAvatar/index.vue create mode 100644 components/baseAvatar/props.js create mode 100644 components/baseCustomer/index.vue create mode 100644 components/baseForm/index.vue create mode 100644 components/basePeople/index.vue create mode 100644 components/basePerson/index.vue create mode 100644 components/basePopup/index.vue create mode 100644 components/baseProject/index.vue create mode 100644 components/baseRadioPerson/index.vue create mode 100644 components/baseTarbar/index.vue create mode 100644 components/qianziyu-select/qianziyu-select.vue create mode 100644 components/uni-section/uni-section.vue create mode 100644 config.js create mode 100644 main.js create mode 100644 manifest.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages.json create mode 100644 pages/homePage/index.vue create mode 100644 pages/login.vue create mode 100644 pages/loginAuthen/authenDingDing.vue create mode 100644 pages/loginAuthen/authenDingDingAudit.vue create mode 100644 pages/loginAuthen/authenWeChat.vue create mode 100644 pages/loginAuthen/loginDingDing.vue create mode 100644 pages/loginAuthen/loginWeChat.vue create mode 100644 pages/loginAuthen/selectCompany.vue create mode 100644 pages/logsError/details.vue create mode 100644 pages/logsError/index.vue create mode 100644 pages/logsError/push.png create mode 100644 pages/logsError/show.vue create mode 100644 permission.js create mode 100644 plugins/auth.js create mode 100644 plugins/index.js create mode 100644 plugins/modal.js create mode 100644 plugins/tab.js create mode 100644 static/daishu.png create mode 100644 static/favicon.ico create mode 100644 static/font/demo.css create mode 100644 static/font/demo_index.html create mode 100644 static/font/iconfont.css create mode 100644 static/font/iconfont.js create mode 100644 static/font/iconfont.json create mode 100644 static/font/iconfont.ttf create mode 100644 static/font/iconfont.woff create mode 100644 static/font/iconfont.woff2 create mode 100644 static/images/advance.png create mode 100644 static/images/audit/0.png create mode 100644 static/images/audit/1.png create mode 100644 static/images/audit/2.png create mode 100644 static/images/audit/3.png create mode 100644 static/images/audit/close.png create mode 100644 static/images/audit/person.png create mode 100644 static/images/audit/radio.png create mode 100644 static/images/audit/催办.png create mode 100644 static/images/audit/发起人.png create mode 100644 static/images/audit/审批人(加签).png create mode 100644 static/images/audit/审核人.png create mode 100644 static/images/audit/抄送人.png create mode 100644 static/images/audit/抄送人(加签).png create mode 100644 static/images/defaultIcon.png create mode 100644 static/images/delay.png create mode 100644 static/images/empty.png create mode 100644 static/images/images/staging.png create mode 100644 static/images/normal.png create mode 100644 static/images/profile.jpg create mode 100644 static/images/tabbar/contacts.png create mode 100644 static/images/tabbar/contacts_.png create mode 100644 static/images/tabbar/handle.png create mode 100644 static/images/tabbar/handle_.png create mode 100644 static/images/tabbar/message.png create mode 100644 static/images/tabbar/message_.png create mode 100644 static/images/tabbar/staging.png create mode 100644 static/images/tabbar/staging_.png create mode 100644 static/index.html create mode 100644 static/logo.png create mode 100644 static/logo1.png create mode 100644 static/scss/colorui.css create mode 100644 static/scss/global.css create mode 100644 static/scss/global.min.css create mode 100644 static/scss/global.scss create mode 100644 static/scss/index.scss create mode 100644 store/getters.js create mode 100644 store/index.js create mode 100644 store/modules/user.js create mode 100644 uni.scss create mode 100644 uni_modules/custom-tree-select/changelog.md create mode 100644 uni_modules/custom-tree-select/components/custom-tree-select/custom-tree-select.vue create mode 100644 uni_modules/custom-tree-select/components/custom-tree-select/data-select-item.vue create mode 100644 uni_modules/custom-tree-select/components/custom-tree-select/utils.js create mode 100644 uni_modules/custom-tree-select/package.json create mode 100644 uni_modules/custom-tree-select/readme.md create mode 100644 uni_modules/mescroll-uni/changelog.md create mode 100644 uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.css create mode 100644 uni_modules/mescroll-uni/components/mescroll-body/mescroll-body.vue create mode 100644 uni_modules/mescroll-uni/components/mescroll-empty/mescroll-empty.vue create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.css create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-down.vue create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-top.vue create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.css create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/components/mescroll-up.vue create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mescroll-i18n.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni-option.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.css create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mescroll-uni.vue create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-comp.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more-item.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/mixins/mescroll-more.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/wxs/mixins.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/wxs/renderjs.js create mode 100644 uni_modules/mescroll-uni/components/mescroll-uni/wxs/wxs.wxs create mode 100644 uni_modules/mescroll-uni/hooks/useMescroll.js create mode 100644 uni_modules/mescroll-uni/hooks/useMescrollComp.js create mode 100644 uni_modules/mescroll-uni/hooks/useMescrollMore.js create mode 100644 uni_modules/mescroll-uni/package.json create mode 100644 uni_modules/mescroll-uni/readme.md create mode 100644 uni_modules/uni-badge/changelog.md create mode 100644 uni_modules/uni-badge/components/uni-badge/uni-badge.vue create mode 100644 uni_modules/uni-badge/package.json create mode 100644 uni_modules/uni-badge/readme.md create mode 100644 uni_modules/uni-breadcrumb/changelog.md create mode 100644 uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue create mode 100644 uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue create mode 100644 uni_modules/uni-breadcrumb/package.json create mode 100644 uni_modules/uni-breadcrumb/readme.md create mode 100644 uni_modules/uni-calendar/changelog.md create mode 100644 uni_modules/uni-calendar/components/uni-calendar/calendar.js create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/en.json create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/index.js create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json create mode 100644 uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue create mode 100644 uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue create mode 100644 uni_modules/uni-calendar/components/uni-calendar/util.js create mode 100644 uni_modules/uni-calendar/package.json create mode 100644 uni_modules/uni-calendar/readme.md create mode 100644 uni_modules/uni-card/changelog.md create mode 100644 uni_modules/uni-card/components/uni-card/uni-card.vue create mode 100644 uni_modules/uni-card/package.json create mode 100644 uni_modules/uni-card/readme.md create mode 100644 uni_modules/uni-collapse/changelog.md create mode 100644 uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue create mode 100644 uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue create mode 100644 uni_modules/uni-collapse/package.json create mode 100644 uni_modules/uni-collapse/readme.md create mode 100644 uni_modules/uni-combox/changelog.md create mode 100644 uni_modules/uni-combox/components/uni-combox/uni-combox.vue create mode 100644 uni_modules/uni-combox/package.json create mode 100644 uni_modules/uni-combox/readme.md create mode 100644 uni_modules/uni-countdown/changelog.md create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/en.json create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/index.js create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json create mode 100644 uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json create mode 100644 uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue create mode 100644 uni_modules/uni-countdown/package.json create mode 100644 uni_modules/uni-countdown/readme.md create mode 100644 uni_modules/uni-data-checkbox/changelog.md create mode 100644 uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue create mode 100644 uni_modules/uni-data-checkbox/package.json create mode 100644 uni_modules/uni-data-checkbox/readme.md create mode 100644 uni_modules/uni-data-picker/changelog.md create mode 100644 uni_modules/uni-data-picker/components/uni-data-picker/keypress.js create mode 100644 uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js create mode 100644 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue create mode 100644 uni_modules/uni-data-picker/package.json create mode 100644 uni_modules/uni-data-picker/readme.md create mode 100644 uni_modules/uni-data-select/changelog.md create mode 100644 uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue create mode 100644 uni_modules/uni-data-select/package.json create mode 100644 uni_modules/uni-data-select/readme.md create mode 100644 uni_modules/uni-dateformat/changelog.md create mode 100644 uni_modules/uni-dateformat/components/uni-dateformat/date-format.js create mode 100644 uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue create mode 100644 uni_modules/uni-dateformat/package.json create mode 100644 uni_modules/uni-dateformat/readme.md create mode 100644 uni_modules/uni-datetime-picker/changelog.md create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue create mode 100644 uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js create mode 100644 uni_modules/uni-datetime-picker/package.json create mode 100644 uni_modules/uni-datetime-picker/readme.md create mode 100644 uni_modules/uni-drawer/changelog.md create mode 100644 uni_modules/uni-drawer/components/uni-drawer/keypress.js create mode 100644 uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue create mode 100644 uni_modules/uni-drawer/package.json create mode 100644 uni_modules/uni-drawer/readme.md create mode 100644 uni_modules/uni-easyinput/changelog.md create mode 100644 uni_modules/uni-easyinput/components/uni-easyinput/common.js create mode 100644 uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue create mode 100644 uni_modules/uni-easyinput/package.json create mode 100644 uni_modules/uni-easyinput/readme.md create mode 100644 uni_modules/uni-fab/changelog.md create mode 100644 uni_modules/uni-fab/components/uni-fab/uni-fab.vue create mode 100644 uni_modules/uni-fab/package.json create mode 100644 uni_modules/uni-fab/readme.md create mode 100644 uni_modules/uni-fav/changelog.md create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/en.json create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/index.js create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json create mode 100644 uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json create mode 100644 uni_modules/uni-fav/components/uni-fav/uni-fav.vue create mode 100644 uni_modules/uni-fav/package.json create mode 100644 uni_modules/uni-fav/readme.md create mode 100644 uni_modules/uni-file-picker/changelog.md create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue create mode 100644 uni_modules/uni-file-picker/components/uni-file-picker/utils.js create mode 100644 uni_modules/uni-file-picker/package.json create mode 100644 uni_modules/uni-file-picker/readme.md create mode 100644 uni_modules/uni-forms/changelog.md create mode 100644 uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue create mode 100644 uni_modules/uni-forms/components/uni-forms/uni-forms.vue create mode 100644 uni_modules/uni-forms/components/uni-forms/utils.js create mode 100644 uni_modules/uni-forms/components/uni-forms/validate.js create mode 100644 uni_modules/uni-forms/package.json create mode 100644 uni_modules/uni-forms/readme.md create mode 100644 uni_modules/uni-goods-nav/changelog.md create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json create mode 100644 uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue create mode 100644 uni_modules/uni-goods-nav/package.json create mode 100644 uni_modules/uni-goods-nav/readme.md create mode 100644 uni_modules/uni-grid/changelog.md create mode 100644 uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue create mode 100644 uni_modules/uni-grid/components/uni-grid/uni-grid.vue create mode 100644 uni_modules/uni-grid/package.json create mode 100644 uni_modules/uni-grid/readme.md create mode 100644 uni_modules/uni-group/changelog.md create mode 100644 uni_modules/uni-group/components/uni-group/uni-group.vue create mode 100644 uni_modules/uni-group/package.json create mode 100644 uni_modules/uni-group/readme.md create mode 100644 uni_modules/uni-icons/changelog.md create mode 100644 uni_modules/uni-icons/components/uni-icons/icons.js create mode 100644 uni_modules/uni-icons/components/uni-icons/uni-icons.vue create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.css create mode 100644 uni_modules/uni-icons/components/uni-icons/uniicons.ttf create mode 100644 uni_modules/uni-icons/package.json create mode 100644 uni_modules/uni-icons/readme.md create mode 100644 uni_modules/uni-indexed-list/changelog.md create mode 100644 uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue create mode 100644 uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue create mode 100644 uni_modules/uni-indexed-list/package.json create mode 100644 uni_modules/uni-indexed-list/readme.md create mode 100644 uni_modules/uni-link/changelog.md create mode 100644 uni_modules/uni-link/components/uni-link/uni-link.vue create mode 100644 uni_modules/uni-link/package.json create mode 100644 uni_modules/uni-link/readme.md create mode 100644 uni_modules/uni-list/changelog.md create mode 100644 uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue create mode 100644 uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss create mode 100644 uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue create mode 100644 uni_modules/uni-list/components/uni-list-item/uni-list-item.vue create mode 100644 uni_modules/uni-list/components/uni-list/uni-list.vue create mode 100644 uni_modules/uni-list/components/uni-list/uni-refresh.vue create mode 100644 uni_modules/uni-list/components/uni-list/uni-refresh.wxs create mode 100644 uni_modules/uni-list/package.json create mode 100644 uni_modules/uni-list/readme.md create mode 100644 uni_modules/uni-load-more/changelog.md create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/en.json create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/index.js create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json create mode 100644 uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json create mode 100644 uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue create mode 100644 uni_modules/uni-load-more/package.json create mode 100644 uni_modules/uni-load-more/readme.md create mode 100644 uni_modules/uni-nav-bar/changelog.md create mode 100644 uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue create mode 100644 uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue create mode 100644 uni_modules/uni-nav-bar/package.json create mode 100644 uni_modules/uni-nav-bar/readme.md create mode 100644 uni_modules/uni-notice-bar/changelog.md create mode 100644 uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue create mode 100644 uni_modules/uni-notice-bar/package.json create mode 100644 uni_modules/uni-notice-bar/readme.md create mode 100644 uni_modules/uni-number-box/changelog.md create mode 100644 uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue create mode 100644 uni_modules/uni-number-box/package.json create mode 100644 uni_modules/uni-number-box/readme.md create mode 100644 uni_modules/uni-pagination/changelog.md create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/en.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/es.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/index.js create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json create mode 100644 uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue create mode 100644 uni_modules/uni-pagination/package.json create mode 100644 uni_modules/uni-pagination/readme.md create mode 100644 uni_modules/uni-popup/changelog.md create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue create mode 100644 uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/en.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/index.js create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json create mode 100644 uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json create mode 100644 uni_modules/uni-popup/components/uni-popup/keypress.js create mode 100644 uni_modules/uni-popup/components/uni-popup/popup.js create mode 100644 uni_modules/uni-popup/components/uni-popup/uni-popup.vue create mode 100644 uni_modules/uni-popup/package.json create mode 100644 uni_modules/uni-popup/readme.md create mode 100644 uni_modules/uni-rate/changelog.md create mode 100644 uni_modules/uni-rate/components/uni-rate/uni-rate.vue create mode 100644 uni_modules/uni-rate/package.json create mode 100644 uni_modules/uni-rate/readme.md create mode 100644 uni_modules/uni-row/changelog.md create mode 100644 uni_modules/uni-row/components/uni-col/uni-col.vue create mode 100644 uni_modules/uni-row/components/uni-row/uni-row.vue create mode 100644 uni_modules/uni-row/package.json create mode 100644 uni_modules/uni-row/readme.md create mode 100644 uni_modules/uni-scss/changelog.md create mode 100644 uni_modules/uni-scss/index.scss create mode 100644 uni_modules/uni-scss/package.json create mode 100644 uni_modules/uni-scss/readme.md create mode 100644 uni_modules/uni-scss/styles/index.scss create mode 100644 uni_modules/uni-scss/styles/setting/_border.scss create mode 100644 uni_modules/uni-scss/styles/setting/_color.scss create mode 100644 uni_modules/uni-scss/styles/setting/_radius.scss create mode 100644 uni_modules/uni-scss/styles/setting/_space.scss create mode 100644 uni_modules/uni-scss/styles/setting/_styles.scss create mode 100644 uni_modules/uni-scss/styles/setting/_text.scss create mode 100644 uni_modules/uni-scss/styles/setting/_variables.scss create mode 100644 uni_modules/uni-scss/styles/tools/functions.scss create mode 100644 uni_modules/uni-scss/theme.scss create mode 100644 uni_modules/uni-scss/variables.scss create mode 100644 uni_modules/uni-search-bar/changelog.md create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json create mode 100644 uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue create mode 100644 uni_modules/uni-search-bar/package.json create mode 100644 uni_modules/uni-search-bar/readme.md create mode 100644 uni_modules/uni-segmented-control/changelog.md create mode 100644 uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue create mode 100644 uni_modules/uni-segmented-control/package.json create mode 100644 uni_modules/uni-segmented-control/readme.md create mode 100644 uni_modules/uni-steps/changelog.md create mode 100644 uni_modules/uni-steps/components/uni-steps/uni-steps.vue create mode 100644 uni_modules/uni-steps/package.json create mode 100644 uni_modules/uni-steps/readme.md create mode 100644 uni_modules/uni-swipe-action/changelog.md create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs create mode 100644 uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue create mode 100644 uni_modules/uni-swipe-action/package.json create mode 100644 uni_modules/uni-swipe-action/readme.md create mode 100644 uni_modules/uni-swiper-dot/changelog.md create mode 100644 uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue create mode 100644 uni_modules/uni-swiper-dot/package.json create mode 100644 uni_modules/uni-swiper-dot/readme.md create mode 100644 uni_modules/uni-table/changelog.md create mode 100644 uni_modules/uni-table/components/uni-table/uni-table.vue create mode 100644 uni_modules/uni-table/components/uni-tbody/uni-tbody.vue create mode 100644 uni_modules/uni-table/components/uni-td/uni-td.vue create mode 100644 uni_modules/uni-table/components/uni-th/filter-dropdown.vue create mode 100644 uni_modules/uni-table/components/uni-th/uni-th.vue create mode 100644 uni_modules/uni-table/components/uni-thead/uni-thead.vue create mode 100644 uni_modules/uni-table/components/uni-tr/table-checkbox.vue create mode 100644 uni_modules/uni-table/components/uni-tr/uni-tr.vue create mode 100644 uni_modules/uni-table/i18n/en.json create mode 100644 uni_modules/uni-table/i18n/es.json create mode 100644 uni_modules/uni-table/i18n/fr.json create mode 100644 uni_modules/uni-table/i18n/index.js create mode 100644 uni_modules/uni-table/i18n/zh-Hans.json create mode 100644 uni_modules/uni-table/i18n/zh-Hant.json create mode 100644 uni_modules/uni-table/package.json create mode 100644 uni_modules/uni-table/readme.md create mode 100644 uni_modules/uni-tag/changelog.md create mode 100644 uni_modules/uni-tag/components/uni-tag/uni-tag.vue create mode 100644 uni_modules/uni-tag/package.json create mode 100644 uni_modules/uni-tag/readme.md create mode 100644 uni_modules/uni-title/changelog.md create mode 100644 uni_modules/uni-title/components/uni-title/uni-title.vue create mode 100644 uni_modules/uni-title/package.json create mode 100644 uni_modules/uni-title/readme.md create mode 100644 uni_modules/uni-tooltip/changelog.md create mode 100644 uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue create mode 100644 uni_modules/uni-tooltip/package.json create mode 100644 uni_modules/uni-tooltip/readme.md create mode 100644 uni_modules/uni-transition/changelog.md create mode 100644 uni_modules/uni-transition/components/uni-transition/createAnimation.js create mode 100644 uni_modules/uni-transition/components/uni-transition/uni-transition.vue create mode 100644 uni_modules/uni-transition/package.json create mode 100644 uni_modules/uni-transition/readme.md create mode 100644 uni_modules/uview-ui/LICENSE create mode 100644 uni_modules/uview-ui/README.md create mode 100644 uni_modules/uview-ui/changelog.md create mode 100644 uni_modules/uview-ui/components/u--form/u--form.vue create mode 100644 uni_modules/uview-ui/components/u--image/u--image.vue create mode 100644 uni_modules/uview-ui/components/u--input/u--input.vue create mode 100644 uni_modules/uview-ui/components/u--text/u--text.vue create mode 100644 uni_modules/uview-ui/components/u--textarea/u--textarea.vue create mode 100644 uni_modules/uview-ui/components/u-action-sheet/props.js create mode 100644 uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue create mode 100644 uni_modules/uview-ui/components/u-album/props.js create mode 100644 uni_modules/uview-ui/components/u-album/u-album.vue create mode 100644 uni_modules/uview-ui/components/u-alert/props.js create mode 100644 uni_modules/uview-ui/components/u-alert/u-alert.vue create mode 100644 uni_modules/uview-ui/components/u-avatar-group/props.js create mode 100644 uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue create mode 100644 uni_modules/uview-ui/components/u-avatar/props.js create mode 100644 uni_modules/uview-ui/components/u-avatar/u-avatar.vue create mode 100644 uni_modules/uview-ui/components/u-back-top/props.js create mode 100644 uni_modules/uview-ui/components/u-back-top/u-back-top.vue create mode 100644 uni_modules/uview-ui/components/u-badge/props.js create mode 100644 uni_modules/uview-ui/components/u-badge/u-badge.vue create mode 100644 uni_modules/uview-ui/components/u-button/nvue.scss create mode 100644 uni_modules/uview-ui/components/u-button/props.js create mode 100644 uni_modules/uview-ui/components/u-button/u-button.vue create mode 100644 uni_modules/uview-ui/components/u-button/vue.scss create mode 100644 uni_modules/uview-ui/components/u-calendar/header.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/month.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/props.js create mode 100644 uni_modules/uview-ui/components/u-calendar/u-calendar.vue create mode 100644 uni_modules/uview-ui/components/u-calendar/util.js create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-cell-group/props.js create mode 100644 uni_modules/uview-ui/components/u-cell-group/u-cell-group.vue create mode 100644 uni_modules/uview-ui/components/u-cell/props.js create mode 100644 uni_modules/uview-ui/components/u-cell/u-cell.vue create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/props.js create mode 100644 uni_modules/uview-ui/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 uni_modules/uview-ui/components/u-checkbox/props.js create mode 100644 uni_modules/uview-ui/components/u-checkbox/u-checkbox.vue create mode 100644 uni_modules/uview-ui/components/u-circle-progress/props.js create mode 100644 uni_modules/uview-ui/components/u-circle-progress/u-circle-progress.vue create mode 100644 uni_modules/uview-ui/components/u-code-input/props.js create mode 100644 uni_modules/uview-ui/components/u-code-input/u-code-input.vue create mode 100644 uni_modules/uview-ui/components/u-code/props.js create mode 100644 uni_modules/uview-ui/components/u-code/u-code.vue create mode 100644 uni_modules/uview-ui/components/u-col/props.js create mode 100644 uni_modules/uview-ui/components/u-col/u-col.vue create mode 100644 uni_modules/uview-ui/components/u-collapse-item/props.js create mode 100644 uni_modules/uview-ui/components/u-collapse-item/u-collapse-item.vue create mode 100644 uni_modules/uview-ui/components/u-collapse/props.js create mode 100644 uni_modules/uview-ui/components/u-collapse/u-collapse.vue create mode 100644 uni_modules/uview-ui/components/u-column-notice/props.js create mode 100644 uni_modules/uview-ui/components/u-column-notice/u-column-notice.vue create mode 100644 uni_modules/uview-ui/components/u-count-down/props.js create mode 100644 uni_modules/uview-ui/components/u-count-down/u-count-down.vue create mode 100644 uni_modules/uview-ui/components/u-count-down/utils.js create mode 100644 uni_modules/uview-ui/components/u-count-to/props.js create mode 100644 uni_modules/uview-ui/components/u-count-to/u-count-to.vue create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/props.js create mode 100644 uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue create mode 100644 uni_modules/uview-ui/components/u-divider/props.js create mode 100644 uni_modules/uview-ui/components/u-divider/u-divider.vue create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/props.js create mode 100644 uni_modules/uview-ui/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 uni_modules/uview-ui/components/u-dropdown/props.js create mode 100644 uni_modules/uview-ui/components/u-dropdown/u-dropdown.vue create mode 100644 uni_modules/uview-ui/components/u-empty/props.js create mode 100644 uni_modules/uview-ui/components/u-empty/u-empty.vue create mode 100644 uni_modules/uview-ui/components/u-form-item/props.js create mode 100644 uni_modules/uview-ui/components/u-form-item/u-form-item.vue create mode 100644 uni_modules/uview-ui/components/u-form/props.js create mode 100644 uni_modules/uview-ui/components/u-form/u-form.vue create mode 100644 uni_modules/uview-ui/components/u-gap/props.js create mode 100644 uni_modules/uview-ui/components/u-gap/u-gap.vue create mode 100644 uni_modules/uview-ui/components/u-grid-item/props.js create mode 100644 uni_modules/uview-ui/components/u-grid-item/u-grid-item.vue create mode 100644 uni_modules/uview-ui/components/u-grid/props.js create mode 100644 uni_modules/uview-ui/components/u-grid/u-grid.vue create mode 100644 uni_modules/uview-ui/components/u-icon/icons.js create mode 100644 uni_modules/uview-ui/components/u-icon/props.js create mode 100644 uni_modules/uview-ui/components/u-icon/u-icon.vue create mode 100644 uni_modules/uview-ui/components/u-image/props.js create mode 100644 uni_modules/uview-ui/components/u-image/u-image.vue create mode 100644 uni_modules/uview-ui/components/u-index-anchor/props.js create mode 100644 uni_modules/uview-ui/components/u-index-anchor/u-index-anchor.vue create mode 100644 uni_modules/uview-ui/components/u-index-item/props.js create mode 100644 uni_modules/uview-ui/components/u-index-item/u-index-item.vue create mode 100644 uni_modules/uview-ui/components/u-index-list/props.js create mode 100644 uni_modules/uview-ui/components/u-index-list/u-index-list.vue create mode 100644 uni_modules/uview-ui/components/u-input/props.js create mode 100644 uni_modules/uview-ui/components/u-input/u-input.vue create mode 100644 uni_modules/uview-ui/components/u-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-keyboard/u-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-line-progress/props.js create mode 100644 uni_modules/uview-ui/components/u-line-progress/u-line-progress.vue create mode 100644 uni_modules/uview-ui/components/u-line/props.js create mode 100644 uni_modules/uview-ui/components/u-line/u-line.vue create mode 100644 uni_modules/uview-ui/components/u-link/props.js create mode 100644 uni_modules/uview-ui/components/u-link/u-link.vue create mode 100644 uni_modules/uview-ui/components/u-list-item/props.js create mode 100644 uni_modules/uview-ui/components/u-list-item/u-list-item.vue create mode 100644 uni_modules/uview-ui/components/u-list/props.js create mode 100644 uni_modules/uview-ui/components/u-list/u-list.vue create mode 100644 uni_modules/uview-ui/components/u-loading-icon/props.js create mode 100644 uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.vue create mode 100644 uni_modules/uview-ui/components/u-loading-page/props.js create mode 100644 uni_modules/uview-ui/components/u-loading-page/u-loading-page.vue create mode 100644 uni_modules/uview-ui/components/u-loadmore/props.js create mode 100644 uni_modules/uview-ui/components/u-loadmore/u-loadmore.vue create mode 100644 uni_modules/uview-ui/components/u-modal/props.js create mode 100644 uni_modules/uview-ui/components/u-modal/u-modal.vue create mode 100644 uni_modules/uview-ui/components/u-navbar/props.js create mode 100644 uni_modules/uview-ui/components/u-navbar/u-navbar.vue create mode 100644 uni_modules/uview-ui/components/u-no-network/props.js create mode 100644 uni_modules/uview-ui/components/u-no-network/u-no-network.vue create mode 100644 uni_modules/uview-ui/components/u-notice-bar/props.js create mode 100644 uni_modules/uview-ui/components/u-notice-bar/u-notice-bar.vue create mode 100644 uni_modules/uview-ui/components/u-notify/props.js create mode 100644 uni_modules/uview-ui/components/u-notify/u-notify.vue create mode 100644 uni_modules/uview-ui/components/u-number-box/props.js create mode 100644 uni_modules/uview-ui/components/u-number-box/u-number-box.vue create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/props.js create mode 100644 uni_modules/uview-ui/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 uni_modules/uview-ui/components/u-overlay/props.js create mode 100644 uni_modules/uview-ui/components/u-overlay/u-overlay.vue create mode 100644 uni_modules/uview-ui/components/u-parse/node/node.vue create mode 100644 uni_modules/uview-ui/components/u-parse/parser.js create mode 100644 uni_modules/uview-ui/components/u-parse/props.js create mode 100644 uni_modules/uview-ui/components/u-parse/u-parse.vue create mode 100644 uni_modules/uview-ui/components/u-picker-column/props.js create mode 100644 uni_modules/uview-ui/components/u-picker-column/u-picker-column.vue create mode 100644 uni_modules/uview-ui/components/u-picker/props.js create mode 100644 uni_modules/uview-ui/components/u-picker/u-picker.vue create mode 100644 uni_modules/uview-ui/components/u-popup/props.js create mode 100644 uni_modules/uview-ui/components/u-popup/u-popup.vue create mode 100644 uni_modules/uview-ui/components/u-radio-group/props.js create mode 100644 uni_modules/uview-ui/components/u-radio-group/u-radio-group.vue create mode 100644 uni_modules/uview-ui/components/u-radio/props.js create mode 100644 uni_modules/uview-ui/components/u-radio/u-radio.vue create mode 100644 uni_modules/uview-ui/components/u-rate/props.js create mode 100644 uni_modules/uview-ui/components/u-rate/u-rate.vue create mode 100644 uni_modules/uview-ui/components/u-read-more/props.js create mode 100644 uni_modules/uview-ui/components/u-read-more/u-read-more.vue create mode 100644 uni_modules/uview-ui/components/u-row-notice/props.js create mode 100644 uni_modules/uview-ui/components/u-row-notice/u-row-notice.vue create mode 100644 uni_modules/uview-ui/components/u-row/props.js create mode 100644 uni_modules/uview-ui/components/u-row/u-row.vue create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/props.js create mode 100644 uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.vue create mode 100644 uni_modules/uview-ui/components/u-scroll-list/nvue.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/other.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/props.js create mode 100644 uni_modules/uview-ui/components/u-scroll-list/scrollWxs.wxs create mode 100644 uni_modules/uview-ui/components/u-scroll-list/u-scroll-list.vue create mode 100644 uni_modules/uview-ui/components/u-search/props.js create mode 100644 uni_modules/uview-ui/components/u-search/u-search.vue create mode 100644 uni_modules/uview-ui/components/u-skeleton/props.js create mode 100644 uni_modules/uview-ui/components/u-skeleton/u-skeleton.vue create mode 100644 uni_modules/uview-ui/components/u-slider/mpother.js create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.js create mode 100644 uni_modules/uview-ui/components/u-slider/mpwxs.wxs create mode 100644 uni_modules/uview-ui/components/u-slider/nvue - 副本.js create mode 100644 uni_modules/uview-ui/components/u-slider/nvue.js create mode 100644 uni_modules/uview-ui/components/u-slider/props.js create mode 100644 uni_modules/uview-ui/components/u-slider/u-slider.vue create mode 100644 uni_modules/uview-ui/components/u-status-bar/props.js create mode 100644 uni_modules/uview-ui/components/u-status-bar/u-status-bar.vue create mode 100644 uni_modules/uview-ui/components/u-steps-item/props.js create mode 100644 uni_modules/uview-ui/components/u-steps-item/u-steps-item.vue create mode 100644 uni_modules/uview-ui/components/u-steps/props.js create mode 100644 uni_modules/uview-ui/components/u-steps/u-steps.vue create mode 100644 uni_modules/uview-ui/components/u-sticky/props.js create mode 100644 uni_modules/uview-ui/components/u-sticky/u-sticky.vue create mode 100644 uni_modules/uview-ui/components/u-subsection/props.js create mode 100644 uni_modules/uview-ui/components/u-subsection/u-subsection.vue create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index - backup.wxs create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/index.wxs create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue - backup.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/nvue.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/props.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/u-swipe-action-item.vue create mode 100644 uni_modules/uview-ui/components/u-swipe-action-item/wxs.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action/props.js create mode 100644 uni_modules/uview-ui/components/u-swipe-action/u-swipe-action.vue create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/props.js create mode 100644 uni_modules/uview-ui/components/u-swiper-indicator/u-swiper-indicator.vue create mode 100644 uni_modules/uview-ui/components/u-swiper/props.js create mode 100644 uni_modules/uview-ui/components/u-swiper/u-swiper.vue create mode 100644 uni_modules/uview-ui/components/u-switch/props.js create mode 100644 uni_modules/uview-ui/components/u-switch/u-switch.vue create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/props.js create mode 100644 uni_modules/uview-ui/components/u-tabbar-item/u-tabbar-item.vue create mode 100644 uni_modules/uview-ui/components/u-tabbar/props.js create mode 100644 uni_modules/uview-ui/components/u-tabbar/u-tabbar.vue create mode 100644 uni_modules/uview-ui/components/u-table/props.js create mode 100644 uni_modules/uview-ui/components/u-table/u-table.vue create mode 100644 uni_modules/uview-ui/components/u-tabs-item/props.js create mode 100644 uni_modules/uview-ui/components/u-tabs-item/u-tabs-item.vue create mode 100644 uni_modules/uview-ui/components/u-tabs/props.js create mode 100644 uni_modules/uview-ui/components/u-tabs/u-tabs.vue create mode 100644 uni_modules/uview-ui/components/u-tag/props.js create mode 100644 uni_modules/uview-ui/components/u-tag/u-tag.vue create mode 100644 uni_modules/uview-ui/components/u-td/props.js create mode 100644 uni_modules/uview-ui/components/u-td/u-td.vue create mode 100644 uni_modules/uview-ui/components/u-text/props.js create mode 100644 uni_modules/uview-ui/components/u-text/u-text.vue create mode 100644 uni_modules/uview-ui/components/u-text/value.js create mode 100644 uni_modules/uview-ui/components/u-textarea/props.js create mode 100644 uni_modules/uview-ui/components/u-textarea/u-textarea.vue create mode 100644 uni_modules/uview-ui/components/u-toast/u-toast.vue create mode 100644 uni_modules/uview-ui/components/u-toolbar/props.js create mode 100644 uni_modules/uview-ui/components/u-toolbar/u-toolbar.vue create mode 100644 uni_modules/uview-ui/components/u-tooltip/clipboard.min.js create mode 100644 uni_modules/uview-ui/components/u-tooltip/props.js create mode 100644 uni_modules/uview-ui/components/u-tooltip/u-tooltip.vue create mode 100644 uni_modules/uview-ui/components/u-tr/props.js create mode 100644 uni_modules/uview-ui/components/u-tr/u-tr.vue create mode 100644 uni_modules/uview-ui/components/u-transition/nvue.ani-map.js create mode 100644 uni_modules/uview-ui/components/u-transition/props.js create mode 100644 uni_modules/uview-ui/components/u-transition/transition.js create mode 100644 uni_modules/uview-ui/components/u-transition/u-transition.vue create mode 100644 uni_modules/uview-ui/components/u-transition/vue.ani-style.scss create mode 100644 uni_modules/uview-ui/components/u-upload/mixin.js create mode 100644 uni_modules/uview-ui/components/u-upload/props.js create mode 100644 uni_modules/uview-ui/components/u-upload/u-upload.vue create mode 100644 uni_modules/uview-ui/components/u-upload/utils.js create mode 100644 uni_modules/uview-ui/components/uview-ui/uview-ui.vue create mode 100644 uni_modules/uview-ui/index.js create mode 100644 uni_modules/uview-ui/index.scss create mode 100644 uni_modules/uview-ui/libs/config/color.js create mode 100644 uni_modules/uview-ui/libs/config/config.js create mode 100644 uni_modules/uview-ui/libs/config/props.js create mode 100644 uni_modules/uview-ui/libs/config/props/actionSheet.js create mode 100644 uni_modules/uview-ui/libs/config/props/album.js create mode 100644 uni_modules/uview-ui/libs/config/props/alert.js create mode 100644 uni_modules/uview-ui/libs/config/props/avatar.js create mode 100644 uni_modules/uview-ui/libs/config/props/avatarGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/backtop.js create mode 100644 uni_modules/uview-ui/libs/config/props/badge.js create mode 100644 uni_modules/uview-ui/libs/config/props/button.js create mode 100644 uni_modules/uview-ui/libs/config/props/calendar.js create mode 100644 uni_modules/uview-ui/libs/config/props/carKeyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/cell.js create mode 100644 uni_modules/uview-ui/libs/config/props/cellGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/checkbox.js create mode 100644 uni_modules/uview-ui/libs/config/props/checkboxGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/circleProgress.js create mode 100644 uni_modules/uview-ui/libs/config/props/code.js create mode 100644 uni_modules/uview-ui/libs/config/props/codeInput.js create mode 100644 uni_modules/uview-ui/libs/config/props/col.js create mode 100644 uni_modules/uview-ui/libs/config/props/collapse.js create mode 100644 uni_modules/uview-ui/libs/config/props/collapseItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/columnNotice.js create mode 100644 uni_modules/uview-ui/libs/config/props/countDown.js create mode 100644 uni_modules/uview-ui/libs/config/props/countTo.js create mode 100644 uni_modules/uview-ui/libs/config/props/datetimePicker.js create mode 100644 uni_modules/uview-ui/libs/config/props/divider.js create mode 100644 uni_modules/uview-ui/libs/config/props/empty.js create mode 100644 uni_modules/uview-ui/libs/config/props/form.js create mode 100644 uni_modules/uview-ui/libs/config/props/formItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/gap.js create mode 100644 uni_modules/uview-ui/libs/config/props/grid.js create mode 100644 uni_modules/uview-ui/libs/config/props/gridItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/icon.js create mode 100644 uni_modules/uview-ui/libs/config/props/image.js create mode 100644 uni_modules/uview-ui/libs/config/props/indexAnchor.js create mode 100644 uni_modules/uview-ui/libs/config/props/indexList.js create mode 100644 uni_modules/uview-ui/libs/config/props/input.js create mode 100644 uni_modules/uview-ui/libs/config/props/keyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/line.js create mode 100644 uni_modules/uview-ui/libs/config/props/lineProgress.js create mode 100644 uni_modules/uview-ui/libs/config/props/link.js create mode 100644 uni_modules/uview-ui/libs/config/props/list.js create mode 100644 uni_modules/uview-ui/libs/config/props/listItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadingIcon.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadingPage.js create mode 100644 uni_modules/uview-ui/libs/config/props/loadmore.js create mode 100644 uni_modules/uview-ui/libs/config/props/modal.js create mode 100644 uni_modules/uview-ui/libs/config/props/navbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/noNetwork.js create mode 100644 uni_modules/uview-ui/libs/config/props/noticeBar.js create mode 100644 uni_modules/uview-ui/libs/config/props/notify.js create mode 100644 uni_modules/uview-ui/libs/config/props/numberBox.js create mode 100644 uni_modules/uview-ui/libs/config/props/numberKeyboard.js create mode 100644 uni_modules/uview-ui/libs/config/props/overlay.js create mode 100644 uni_modules/uview-ui/libs/config/props/parse.js create mode 100644 uni_modules/uview-ui/libs/config/props/picker.js create mode 100644 uni_modules/uview-ui/libs/config/props/popup.js create mode 100644 uni_modules/uview-ui/libs/config/props/radio.js create mode 100644 uni_modules/uview-ui/libs/config/props/radioGroup.js create mode 100644 uni_modules/uview-ui/libs/config/props/rate.js create mode 100644 uni_modules/uview-ui/libs/config/props/readMore.js create mode 100644 uni_modules/uview-ui/libs/config/props/row.js create mode 100644 uni_modules/uview-ui/libs/config/props/rowNotice.js create mode 100644 uni_modules/uview-ui/libs/config/props/scrollList.js create mode 100644 uni_modules/uview-ui/libs/config/props/search.js create mode 100644 uni_modules/uview-ui/libs/config/props/section.js create mode 100644 uni_modules/uview-ui/libs/config/props/skeleton.js create mode 100644 uni_modules/uview-ui/libs/config/props/slider.js create mode 100644 uni_modules/uview-ui/libs/config/props/statusBar.js create mode 100644 uni_modules/uview-ui/libs/config/props/steps.js create mode 100644 uni_modules/uview-ui/libs/config/props/stepsItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/sticky.js create mode 100644 uni_modules/uview-ui/libs/config/props/subsection.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipeAction.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipeActionItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/swiper.js create mode 100644 uni_modules/uview-ui/libs/config/props/swipterIndicator.js create mode 100644 uni_modules/uview-ui/libs/config/props/switch.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabbarItem.js create mode 100644 uni_modules/uview-ui/libs/config/props/tabs.js create mode 100644 uni_modules/uview-ui/libs/config/props/tag.js create mode 100644 uni_modules/uview-ui/libs/config/props/text.js create mode 100644 uni_modules/uview-ui/libs/config/props/textarea.js create mode 100644 uni_modules/uview-ui/libs/config/props/toast.js create mode 100644 uni_modules/uview-ui/libs/config/props/toolbar.js create mode 100644 uni_modules/uview-ui/libs/config/props/tooltip.js create mode 100644 uni_modules/uview-ui/libs/config/props/transition.js create mode 100644 uni_modules/uview-ui/libs/config/props/upload.js create mode 100644 uni_modules/uview-ui/libs/config/zIndex.js create mode 100644 uni_modules/uview-ui/libs/css/color.scss create mode 100644 uni_modules/uview-ui/libs/css/common.scss create mode 100644 uni_modules/uview-ui/libs/css/components.scss create mode 100644 uni_modules/uview-ui/libs/css/flex.scss create mode 100644 uni_modules/uview-ui/libs/css/h5.scss create mode 100644 uni_modules/uview-ui/libs/css/mixin.scss create mode 100644 uni_modules/uview-ui/libs/css/mp.scss create mode 100644 uni_modules/uview-ui/libs/css/nvue.scss create mode 100644 uni_modules/uview-ui/libs/css/vue.scss create mode 100644 uni_modules/uview-ui/libs/function/colorGradient.js create mode 100644 uni_modules/uview-ui/libs/function/debounce.js create mode 100644 uni_modules/uview-ui/libs/function/digit.js create mode 100644 uni_modules/uview-ui/libs/function/index.js create mode 100644 uni_modules/uview-ui/libs/function/platform.js create mode 100644 uni_modules/uview-ui/libs/function/test.js create mode 100644 uni_modules/uview-ui/libs/function/throttle.js create mode 100644 uni_modules/uview-ui/libs/luch-request/adapters/index.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/InterceptorManager.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/Request.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/buildFullPath.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/defaults.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/dispatchRequest.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/mergeConfig.js create mode 100644 uni_modules/uview-ui/libs/luch-request/core/settle.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/buildURL.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/combineURLs.js create mode 100644 uni_modules/uview-ui/libs/luch-request/helpers/isAbsoluteURL.js create mode 100644 uni_modules/uview-ui/libs/luch-request/index.d.ts create mode 100644 uni_modules/uview-ui/libs/luch-request/index.js create mode 100644 uni_modules/uview-ui/libs/luch-request/utils.js create mode 100644 uni_modules/uview-ui/libs/luch-request/utils/clone.js create mode 100644 uni_modules/uview-ui/libs/mixin/button.js create mode 100644 uni_modules/uview-ui/libs/mixin/mixin.js create mode 100644 uni_modules/uview-ui/libs/mixin/mpMixin.js create mode 100644 uni_modules/uview-ui/libs/mixin/mpShare.js create mode 100644 uni_modules/uview-ui/libs/mixin/openType.js create mode 100644 uni_modules/uview-ui/libs/mixin/style.js create mode 100644 uni_modules/uview-ui/libs/mixin/touch.js create mode 100644 uni_modules/uview-ui/libs/util/async-validator.js create mode 100644 uni_modules/uview-ui/libs/util/calendar.js create mode 100644 uni_modules/uview-ui/libs/util/dayjs.js create mode 100644 uni_modules/uview-ui/libs/util/emitter.js create mode 100644 uni_modules/uview-ui/libs/util/route.js create mode 100644 uni_modules/uview-ui/package.json create mode 100644 uni_modules/uview-ui/theme.scss create mode 100644 utils/auth.js create mode 100644 utils/common.js create mode 100644 utils/constant.js create mode 100644 utils/dd.js create mode 100644 utils/errorCode.js create mode 100644 utils/localStorage.js create mode 100644 utils/permission.js create mode 100644 utils/request.js create mode 100644 utils/storage.js create mode 100644 utils/upload.js create mode 100644 vue.config.js create mode 100644 yarn.lock diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..3f9a5a3 --- /dev/null +++ b/App.vue @@ -0,0 +1,43 @@ + + + diff --git a/LICENSE b/LICENSE index 11ee9d9..a557342 100644 --- a/LICENSE +++ b/LICENSE @@ -1,23 +1,21 @@ -Attribution Assurance License - -Copyright (c) 2002 by AUTHOR PROFESSIONAL IDENTIFICATION * URL "PROMOTIONAL SLOGAN FOR AUTHOR'S PROFESSIONAL PRACTICE" - -All Rights Reserved - -ATTRIBUTION ASSURANCE LICENSE (adapted from the original BSD license) - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the conditions below are met. These conditions require a modest attribution to (the "Author"), who hopes that its promotional value may help justify the thousands of dollars in otherwise billable time invested in writing this and other freely available, open-source software. - -1. Redistributions of source code, in whole or part and with or without modification (the "Code"), must prominently display this GPG-signed text in verifiable form. - -2. Redistributions of the Code in binary form must be accompanied by this GPG-signed text in any documentation and, each time the resulting executable program or a program dependent thereon is launched, a prominent display (e.g., splash screen or banner text) of the Author's attribution information, which includes: - - (a) Name ("AUTHOR"), - (b) Professional identification ("PROFESSIONAL IDENTIFICATION"), and - (c) URL ("URL"). - -3. Neither the name nor any trademark of the Author may be used to endorse or promote products derived from this software without specific prior written permission. - -4. Users are entirely responsible, to the exclusion of the Author and any other persons, for compliance with (1) regulations set by owners or administrators of employed equipment, (2) licensing terms of any other software, and (3) local regulations regarding use, including those regarding import, export, and use of encryption software. - -THIS FREE SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR ANY CONTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, EFFECTS OF UNAUTHORIZED OR MALICIOUS NETWORK ACCESS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +MIT License + +Copyright (c) 2022 若依 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 4b2173d..0a850f4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,71 @@ -# middleground_H5 - -中台移动端 \ No newline at end of file +项目安装依赖报错时,切换node到16.20.2版本,使用npm安装依赖,不要使用yarn + + + + + + + + + + + + + + + + + + +

+ logo +

+

RuoYi v1.1.0

+

基于UniApp开发的轻量级移动端框架

+

+ + + +

+ +## 平台简介 + +RuoYi App 移动解决方案,采用uniapp框架,一份代码多终端适配,同时支持APP、小程序、H5!实现了与[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)、[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)完美对接的移动解决方案!目前已经实现登录、我的、工作台、编辑资料、头像修改、密码修改、常见问题、关于我们等基础功能。 + +* 配套后端代码仓库地址[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 或 [RuoYi-Cloud](https://github.com/yangzongzhuan/RuoYi-Cloud) 版本。 +* 应用框架基于[uniapp](https://uniapp.dcloud.net.cn/),支持小程序、H5、Android和IOS。 +* 前端组件采用[uni-ui](https://github.com/dcloudio/uni-ui),全端兼容的高性能UI框架。 +* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)   +* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)   + + +## 技术文档 + +- 官网网站:[http://ruoyi.vip](http://ruoyi.vip) +- 文档地址:[http://doc.ruoyi.vip](http://doc.ruoyi.vip) +- H5页体验:[http://h5.ruoyi.vip](http://h5.ruoyi.vip) +- QQ交流群: ①133713780 +- 小程序体验 + +小程序演示 + + +## 演示图 + + + + + + + + + + + + + + + + + +
diff --git a/api/login.js b/api/login.js new file mode 100644 index 0000000..a405fff --- /dev/null +++ b/api/login.js @@ -0,0 +1,117 @@ +import request from '@/utils/request' + +// 登录方法 +export function login(username, password) { + const data = { + loginCode: username, + password: password, + } + return request({ + 'url': 'kangarooDataCenterV3/entranceController/option', + header: { + isToken: false, + tl: 'loginService', + as: 'sysTestjdbc', + dj: 'doLogin' + }, + 'method': 'post', + 'data': data + }) +} +export function authApi(tl, as, dj, url = '', data) { + return request({ + url: 'kangarooDataCenterV3/entranceController/option' + url, + header: { + tl: tl, + as: as, + dj: dj, + }, + method: 'post', + data: data + }) +} +// 获取用户详细信息 +export function getInfo() { + return request({ + 'url': '/getInfo', + 'method': 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + 'url': '/logout', + 'method': 'post' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + 'url': '/captchaImage', + header: { + isToken: false + }, + method: 'get', + timeout: 20000 + }) +} + +// 钉钉单点登录 +export function DDSSO(data) { + return request({ + url: "Api/SSO/DDSSO", + method: "post", + data, + }); +} +// 钉钉认证 +export function DDAuthen(data) { + return request({ + url: "Api/SSO/DDAuthen", + method: "post", + data, + }); +} +// wx认证 +export function WeChatSSO(data) { + return request({ + url: "Api/SSO/WeChatSSO", + method: "post", + data, + }); +} +// wx认证 +export function WeChatAuthen(data) { + return request({ + url: "Api/SSO/WeChatAuthen", + method: "post", + data, + }); +} +// wx认证 +export function GetAPPMenu(data) { + return request({ + url: "/api/Menu/GetAPPMenu", + method: "post", + data, + }); +} + +// 用户所属公司列表 +export function OrganGetUserCompany(data) { + return request({ + url: "/api/Organ/GetUserCompany", + method: "post", + data, + }); +} +//切换公司 +export function ChangeCompany(data) { + return request({ + url: "/api/Organ/ChangeCompany", + method: "post", + data, + }); +} \ No newline at end of file diff --git a/api/system/assembly.js b/api/system/assembly.js new file mode 100644 index 0000000..dedcbdb --- /dev/null +++ b/api/system/assembly.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +export function GetOrganTree(data) { + return request({ + url: '/Api/Organ/GetOrganTree', + method: 'post', + data: data + }) +} + +export function GetBillList(data) { + return request({ + url: '/Api/Person/GetBillList', + method: 'post', + data: data + }) +} + + diff --git a/api/system/audit.js b/api/system/audit.js new file mode 100644 index 0000000..9abd56f --- /dev/null +++ b/api/system/audit.js @@ -0,0 +1,76 @@ +import request from '@/utils/request' + +//审批流-提交审核 +export function submitAudit(data) { + return request({ + url: "/Api/Workflow/SubmitAudit", + method: "post", + data, + }); +} + +//获取单据审批流程 +export function getAuditList(data) { + return request({ + url: "/Api/Workflow/SowBillWork", + method: "post", + data, + }); +} + +//获取单据审批记录 +export function getAuditNote(data) { + return request({ + url: "/Api/Workflow/GetAuditNoteList", + method: "post", + data, + }); +} +//催办 +export function auditUrging(data) { + return request({ + url: "/Api/Workflow/Urging", + method: "post", + data, + }); +} +//审批流-审核 +export function audit(data) { + return request({ + url: "/Api/Workflow/Audit", + method: "post", + data, + }); +} +//加签 +export function auditAddFlow(data) { + return request({ + url: "/Api/Workflow/AddBillWorkFlowNote", + method: "post", + data, + }); +} +//获取单据审批按钮权限 +export function getAuditBtn(data) { + return request({ + url: "/Api/Workflow/GetBillOperateBtn", + method: "post", + data, + }); +} +//审批流-已读 +export function read(data) { + return request({ + url: "/Api/Workflow/Read", + method: "post", + data, + }); +} +//审批流-撤销审核 +export function removeAudit(data) { + return request({ + url: "/Api/Workflow/Revocation", + method: "post", + data, + }); +} \ No newline at end of file diff --git a/api/system/basePerson.js b/api/system/basePerson.js new file mode 100644 index 0000000..cc7fe5c --- /dev/null +++ b/api/system/basePerson.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 人员列表接口 +export function PersonList(data) { + return request({ + url: "/Api/Person/GetBillList", + method: "post", + data, + }); +} +// 部门树形数据 +export function GetOrganTree(data) { + return request({ + url: "/Api/Organ/GetOrganTree", + method: "post", + data, + }); +} \ No newline at end of file diff --git a/api/system/home.js b/api/system/home.js new file mode 100644 index 0000000..91a06fb --- /dev/null +++ b/api/system/home.js @@ -0,0 +1,28 @@ +import request from '@/utils/request' + +// 获取消息列表 +export function GetMessageData(data) { + return request({ + url: '/api/Message/GetMessageData', + method: 'post', + data: data + }) +} + +// 全部已读 +export function ReadMessage(data) { + return request({ + url: '/api/Message/ReadMessage', + method: 'post', + data: data + }) +} + +// 全部已读 +export function GetAllWfToDo(data) { + return request({ + url: '/Api/Workflow/GetWfToDo', + method: 'post', + data: data + }) +} \ No newline at end of file diff --git a/api/system/user.js b/api/system/user.js new file mode 100644 index 0000000..46aec05 --- /dev/null +++ b/api/system/user.js @@ -0,0 +1,41 @@ +import upload from '@/utils/upload' +import request from '@/utils/request' + +// 用户密码重置 +export function updateUserPwd(oldPassword, newPassword) { + const data = { + oldPassword, + newPassword + } + return request({ + url: '/system/user/profile/updatePwd', + method: 'put', + params: data + }) +} + +// 查询用户个人信息 +export function getUserProfile() { + return request({ + url: '/system/user/profile', + method: 'get' + }) +} + +// 修改用户个人信息 +export function updateUserProfile(data) { + return request({ + url: '/system/user/profile', + method: 'put', + data: data + }) +} + +// 用户头像上传 +export function uploadAvatar(data) { + return upload({ + url: '/system/user/profile/avatar', + name: data.name, + filePath: data.filePath + }) +} diff --git a/components/SelectPersonnel.vue b/components/SelectPersonnel.vue new file mode 100644 index 0000000..c6d2a2b --- /dev/null +++ b/components/SelectPersonnel.vue @@ -0,0 +1,106 @@ +/** * 单选人员 */ + + + + diff --git a/components/baseAssistant/index.vue b/components/baseAssistant/index.vue new file mode 100644 index 0000000..00fc09d --- /dev/null +++ b/components/baseAssistant/index.vue @@ -0,0 +1,1252 @@ + + + + \ No newline at end of file diff --git a/components/baseAvatar/index.vue b/components/baseAvatar/index.vue new file mode 100644 index 0000000..c32a6e3 --- /dev/null +++ b/components/baseAvatar/index.vue @@ -0,0 +1,139 @@ + + + + + \ No newline at end of file diff --git a/components/baseAvatar/props.js b/components/baseAvatar/props.js new file mode 100644 index 0000000..34ca0f2 --- /dev/null +++ b/components/baseAvatar/props.js @@ -0,0 +1,78 @@ +export default { + props: { + // 头像图片路径(不能为相对路径) + src: { + type: String, + default: uni.$u.props.avatar.src + }, + // 头像形状,circle-圆形,square-方形 + shape: { + type: String, + default: uni.$u.props.avatar.shape + }, + // 头像尺寸 + size: { + type: [String, Number], + default: uni.$u.props.avatar.size + }, + // 裁剪模式 + mode: { + type: String, + default: uni.$u.props.avatar.mode + }, + // 显示的文字 + text: { + type: String, + default: uni.$u.props.avatar.text + }, + // 背景色 + bgColor: { + type: String, + default: uni.$u.props.avatar.bgColor + }, + // 文字颜色 + color: { + type: String, + default: uni.$u.props.avatar.color + }, + // 文字大小 + fontSize: { + type: [String, Number], + default: uni.$u.props.avatar.fontSize + }, + // 显示的图标 + icon: { + type: String, + default: uni.$u.props.avatar.icon + }, + // 显示小程序头像,只对百度,微信,QQ小程序有效 + mpAvatar: { + type: Boolean, + default: uni.$u.props.avatar.mpAvatar + }, + // 是否使用随机背景色 + randomBgColor: { + type: Boolean, + default: uni.$u.props.avatar.randomBgColor + }, + // 加载失败的默认头像(组件有内置默认图片) + defaultUrl: { + type: String, + default: uni.$u.props.avatar.defaultUrl + }, + // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间 + colorIndex: { + type: [String, Number], + // 校验参数规则,索引在0-19之间 + validator(n) { + return uni.$u.test.range(n, [0, 19]) || n === '' + }, + default: uni.$u.props.avatar.colorIndex + }, + // 组件标识符 + name: { + type: String, + default: uni.$u.props.avatar.name + } + } +} diff --git a/components/baseCustomer/index.vue b/components/baseCustomer/index.vue new file mode 100644 index 0000000..7d96e84 --- /dev/null +++ b/components/baseCustomer/index.vue @@ -0,0 +1,297 @@ + + + + + \ No newline at end of file diff --git a/components/baseForm/index.vue b/components/baseForm/index.vue new file mode 100644 index 0000000..4a39ffe --- /dev/null +++ b/components/baseForm/index.vue @@ -0,0 +1,297 @@ + + + + + + + \ No newline at end of file diff --git a/components/basePeople/index.vue b/components/basePeople/index.vue new file mode 100644 index 0000000..be68142 --- /dev/null +++ b/components/basePeople/index.vue @@ -0,0 +1,325 @@ + + + + + + + \ No newline at end of file diff --git a/components/basePerson/index.vue b/components/basePerson/index.vue new file mode 100644 index 0000000..594fe35 --- /dev/null +++ b/components/basePerson/index.vue @@ -0,0 +1,291 @@ + + + + + + \ No newline at end of file diff --git a/components/basePopup/index.vue b/components/basePopup/index.vue new file mode 100644 index 0000000..2d8a4e1 --- /dev/null +++ b/components/basePopup/index.vue @@ -0,0 +1,174 @@ + + + + + + \ No newline at end of file diff --git a/components/baseProject/index.vue b/components/baseProject/index.vue new file mode 100644 index 0000000..882424b --- /dev/null +++ b/components/baseProject/index.vue @@ -0,0 +1,287 @@ + + + + + \ No newline at end of file diff --git a/components/baseRadioPerson/index.vue b/components/baseRadioPerson/index.vue new file mode 100644 index 0000000..bd988cb --- /dev/null +++ b/components/baseRadioPerson/index.vue @@ -0,0 +1,258 @@ + + + + + + \ No newline at end of file diff --git a/components/baseTarbar/index.vue b/components/baseTarbar/index.vue new file mode 100644 index 0000000..d4ad641 --- /dev/null +++ b/components/baseTarbar/index.vue @@ -0,0 +1,62 @@ + + + + + \ No newline at end of file diff --git a/components/qianziyu-select/qianziyu-select.vue b/components/qianziyu-select/qianziyu-select.vue new file mode 100644 index 0000000..5293954 --- /dev/null +++ b/components/qianziyu-select/qianziyu-select.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/components/uni-section/uni-section.vue b/components/uni-section/uni-section.vue new file mode 100644 index 0000000..3c0b7a3 --- /dev/null +++ b/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/config.js b/config.js new file mode 100644 index 0000000..0cdf8b0 --- /dev/null +++ b/config.js @@ -0,0 +1,26 @@ +// 应用全局配置 +module.exports = { + baseUrl: `http://ufidahz.com.cn:9067/`,//正式环境 + // baseUrl: `http://192.168.2.78:10086/`,//刚子 + // 应用信息 + appInfo: { + // 应用名称 + name: "用安数智中台", + // 应用版本 + version: "1.1.0", + // 应用logo + logo: "/static/logo1.png", + // 官方网站 + site_url: "http://ruoyi.vip", + // 政策协议 + agreements: [{ + title: "隐私政策", + url: "https://ruoyi.vip/protocol.html" + }, + { + title: "用户服务协议", + url: "https://ruoyi.vip/protocol.html" + } + ] + } +} \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..f3c38ac --- /dev/null +++ b/main.js @@ -0,0 +1,26 @@ +import Vue from 'vue' +import App from './App' +import store from './store' // store +import plugins from './plugins' // plugins +import './permission' // permission +Vue.use(plugins) + +import uView from '@/uni_modules/uview-ui' +Vue.use(uView) + +import * as whole from '@/utils/common.js' +Vue.prototype.$whole = whole + +import * as utilDD from '@/utils/dd.js' +Vue.prototype.$ddFunction = utilDD + +Vue.config.productionTip = false +Vue.prototype.$store = store + +App.mpType = 'app' + +const app = new Vue({ + ...App +}) + +app.$mount() \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..832d964 --- /dev/null +++ b/manifest.json @@ -0,0 +1,78 @@ +{ + "name" : "用安数智中台移动端", + "appid" : "__UNI__A6D00FF", + "description" : "", + "versionName" : "1.1.0", + "versionCode" : "100", + "transformPx" : false, + "app-plus" : { + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "modules" : { + "OAuth" : {} + }, + "distribute" : { + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios" : {}, + "sdkConfigs" : { + "oauth" : { + "weixin" : { + "appid" : "wwb46c3f5e6ffe3e2b", + "UniversalLinks" : "" + } + } + } + } + }, + "quickapp" : {}, + "mp-weixin" : { + "appid" : "wx7dff96a8822ea082", + "setting" : { + "urlCheck" : false, + "es6" : false, + "minified" : true, + "postcss" : true + }, + "optimization" : { + "subPackages" : true + }, + "usingComponents" : true + }, + "vueVersion" : "2", + "h5" : { + "template" : "static/index.html", + "devServer" : { + "port" : 9090, + "https" : false + }, + "title" : "用安数智中台", + "router" : { + "mode" : "hash", + "base" : "./" + } + } +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f8edf8a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,319 @@ +{ + "name": "middleground_H5", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@fullcalendar/daygrid": "^6.1.8", + "@fullcalendar/interaction": "^6.1.8", + "@fullcalendar/list": "^6.1.8", + "@fullcalendar/timegrid": "^6.1.8", + "@fullcalendar/vue": "^6.1.8", + "dingtalk-jsapi": "^3.0.25", + "eruda": "^3.0.1" + } + }, + "node_modules/@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "peer": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@fullcalendar/core": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.8.tgz", + "integrity": "sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==", + "peer": true, + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.8.tgz", + "integrity": "sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/interaction/-/interaction-6.1.8.tgz", + "integrity": "sha512-r6W4E9ohaA87M2uPSlmpE2WT7Fzu7LN0u2pE6D/tThruCEaAPbN8Pw5+sqclsuyTIL09mg0eSJm/ggJekTabSA==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8" + } + }, + "node_modules/@fullcalendar/list": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/list/-/list-6.1.8.tgz", + "integrity": "sha512-10N0T/vCtId1cE3JGLpnbAivWVnaWCCkVO7wmbsyr5Y+I939kr/zq4BUNwBoP/xSFVVxx59FETh3iyA+MkV8Fw==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/timegrid/-/timegrid-6.1.8.tgz", + "integrity": "sha512-3+3KHHCoNcaLs/gQt004hAqICbY5+WAffrZ0ePv+80HFB1OVh8BQ5XXLHSOUbTvXdgtUTcfBHuw9fhO31kt5gA==", + "dependencies": { + "@fullcalendar/daygrid": "~6.1.8" + }, + "peerDependencies": { + "@fullcalendar/core": "~6.1.8" + } + }, + "node_modules/@fullcalendar/vue": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/vue/-/vue-6.1.8.tgz", + "integrity": "sha512-rCfmpwsNkMQhhNiSGt2ZVW0yNmFyXC6O5dto+Rsj3MsJDVXAjI9pR2KRtg1vBh/6hgp8vHcMFcSCJZxIqfui+A==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8", + "vue": "^2.6.12" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "peer": true + }, + "node_modules/dingtalk-jsapi": { + "version": "3.0.25", + "resolved": "https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-3.0.25.tgz", + "integrity": "sha512-l+q2lRzTCH/00DM2EZ+GKFiP/3TZHOupCM7rpG/hgrNpYkexGvF/O6yDI0XNqSMs8iFqWv9haCLOPf1nvCqB/w==", + "dependencies": { + "promise-polyfill": "^7.1.0" + } + }, + "node_modules/eruda": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/eruda/-/eruda-3.0.1.tgz", + "integrity": "sha512-6q1Xdwga4JTr1mKSW4mzuWSSbmXgqpm/8Wa1QGFGfCWRjC0bCQjbS4u06M1te1moucIS3hBLlbSTPWYH2W0qbQ==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "peer": true + }, + "node_modules/postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "peer": true + }, + "node_modules/promise-polyfill": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-7.1.2.tgz", + "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue": { + "version": "2.7.14", + "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "peer": true, + "dependencies": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + } + }, + "dependencies": { + "@babel/parser": { + "version": "7.22.16", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "peer": true + }, + "@fullcalendar/core": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.8.tgz", + "integrity": "sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==", + "peer": true, + "requires": { + "preact": "~10.12.1" + } + }, + "@fullcalendar/daygrid": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.8.tgz", + "integrity": "sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==", + "requires": {} + }, + "@fullcalendar/interaction": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/interaction/-/interaction-6.1.8.tgz", + "integrity": "sha512-r6W4E9ohaA87M2uPSlmpE2WT7Fzu7LN0u2pE6D/tThruCEaAPbN8Pw5+sqclsuyTIL09mg0eSJm/ggJekTabSA==", + "requires": {} + }, + "@fullcalendar/list": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/list/-/list-6.1.8.tgz", + "integrity": "sha512-10N0T/vCtId1cE3JGLpnbAivWVnaWCCkVO7wmbsyr5Y+I939kr/zq4BUNwBoP/xSFVVxx59FETh3iyA+MkV8Fw==", + "requires": {} + }, + "@fullcalendar/timegrid": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/timegrid/-/timegrid-6.1.8.tgz", + "integrity": "sha512-3+3KHHCoNcaLs/gQt004hAqICbY5+WAffrZ0ePv+80HFB1OVh8BQ5XXLHSOUbTvXdgtUTcfBHuw9fhO31kt5gA==", + "requires": { + "@fullcalendar/daygrid": "~6.1.8" + } + }, + "@fullcalendar/vue": { + "version": "6.1.8", + "resolved": "https://registry.npmmirror.com/@fullcalendar/vue/-/vue-6.1.8.tgz", + "integrity": "sha512-rCfmpwsNkMQhhNiSGt2ZVW0yNmFyXC6O5dto+Rsj3MsJDVXAjI9pR2KRtg1vBh/6hgp8vHcMFcSCJZxIqfui+A==", + "requires": {} + }, + "@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "peer": true, + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "peer": true + }, + "dingtalk-jsapi": { + "version": "3.0.25", + "resolved": "https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-3.0.25.tgz", + "integrity": "sha512-l+q2lRzTCH/00DM2EZ+GKFiP/3TZHOupCM7rpG/hgrNpYkexGvF/O6yDI0XNqSMs8iFqWv9haCLOPf1nvCqB/w==", + "requires": { + "promise-polyfill": "^7.1.0" + } + }, + "eruda": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/eruda/-/eruda-3.0.1.tgz", + "integrity": "sha512-6q1Xdwga4JTr1mKSW4mzuWSSbmXgqpm/8Wa1QGFGfCWRjC0bCQjbS4u06M1te1moucIS3hBLlbSTPWYH2W0qbQ==" + }, + "nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "peer": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "peer": true + }, + "postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "peer": true, + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "preact": { + "version": "10.12.1", + "resolved": "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "peer": true + }, + "promise-polyfill": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-7.1.2.tgz", + "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "peer": true + }, + "vue": { + "version": "2.7.14", + "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "peer": true, + "requires": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c6fc504 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "dependencies": { + "@fullcalendar/daygrid": "^6.1.8", + "@fullcalendar/interaction": "^6.1.8", + "@fullcalendar/list": "^6.1.8", + "@fullcalendar/timegrid": "^6.1.8", + "@fullcalendar/vue": "^6.1.8", + "dingtalk-jsapi": "^3.0.25", + "eruda": "^3.0.1" + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..0a4d7ff --- /dev/null +++ b/pages.json @@ -0,0 +1,148 @@ +{ + "pages": [ + { + "path": "pages/login", + "style": { + "navigationBarTitleText": "登录", + "navigationStyle": "custom" + } + }, + { + "path": "pages/homePage/index", + "style": { + "navigationBarTitleText": "工作台", + "navigationStyle": "custom" + } + }, + { + "path": "components/basePeople/index", + "style": { + "navigationBarTitleText": "选择人员", + "onReachBottomDistance": 50, + // "enablePullDownRefresh": true, + "navigationStyle": "custom" + } + }, + { + "path": "pages/logsError/index", + "style": { + "navigationBarTitleText": "异常日志", + "onReachBottomDistance": 50, + "enablePullDownRefresh": true, + "navigationStyle": "custom" + } + }, + { + "path": "pages/logsError/details", + "style": { + "navigationBarTitleText": "处理异常日志", + "onReachBottomDistance": 50, + // "enablePullDownRefresh": true, + "navigationStyle": "custom", + "app-plus":{ + "bounce":"none" + } + } + }, + { + "path": "pages/logsError/show", + "style": { + "navigationBarTitleText": "查看异常日志", + "onReachBottomDistance": 50, + // "enablePullDownRefresh": true, + "navigationStyle": "custom", + "app-plus":{ + "bounce":"none" + } + } + }, + { + "path": "pages/loginAuthen/authenDingDing", + "style": { + "navigationBarTitleText": "钉钉免登录认证", + "onReachBottomDistance": 50, + "enablePullDownRefresh": true, + "navigationStyle": "custom" + } + }, + { + "path": "pages/loginAuthen/loginDingDing", + "style": { + "navigationBarTitleText": "钉钉免登录认证", + "navigationStyle": "custom" + } + }, + { + "path": "pages/loginAuthen/selectCompany", + "style": { + "navigationBarTitleText": "钉钉免登录认证", + "navigationStyle": "custom" + } + }, + { + "path": "pages/loginAuthen/authenWeChat", + "style": { + "navigationBarTitleText": "微信免登录认证", + "navigationStyle": "custom" + } + }, + { + "path": "pages/loginAuthen/authenDingDingAudit", + "style": { + "navigationBarTitleText": "钉钉免登录认证", + "navigationStyle": "custom" + } + }, + { + "path": "pages/loginAuthen/loginWeChat", + "style": { + "navigationBarTitleText": "微信免登录认证", + "navigationStyle": "custom" + } + } + ], + "tabBar": { + "color": "#000000", + "selectedColor": "#000000", + "borderStyle": "white", + "backgroundColor": "#ffffff", + "list": [ + { + "pagePath": "pages/homePage/index", + "iconPath": "static/images/tabbar/staging.png", + "selectedIconPath": "static/images/tabbar/staging_.png", + "text": "工作台" + } + ] + }, + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "RuoYi", + "navigationBarBackgroundColor": "#FFFFFF", + "usingComponents": { + // "van-button": "/wxcomponents/vant/button/index", + // "van-checkbox": "/wxcomponents/vant/checkbox/index", + // "van-checkbox-group": "/wxcomponents/vant/checkbox-group/index", + // "van-nav-bar": "/wxcomponents/vant/nav-bar/index" + // "van-action-sheet": "/wxcomponents/vant/action-sheet/index", + // "van-overlay": "/wxcomponents/vant/overlay/index", + // "van-popup": "/wxcomponents/vant/popup/index" + } + }, + "easycom": { + "autoscan": true, + "custom": { + "^u-(.*)": "@/uni_modules/uview-ui/components/u-$1/u-$1.vue" + } + }, + "condition" : { //模式配置,仅开发期间生效 + "current": 0, //当前激活的模式(list 的索引项) + "list": [ + { + "name": "", //模式名称 + "path": "", //启动页面,必选 + "query": "" //启动参数,在页面的onLoad函数里面得到 + } + ] + } +} \ No newline at end of file diff --git a/pages/homePage/index.vue b/pages/homePage/index.vue new file mode 100644 index 0000000..8fe0043 --- /dev/null +++ b/pages/homePage/index.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/pages/login.vue b/pages/login.vue new file mode 100644 index 0000000..2ca9cf9 --- /dev/null +++ b/pages/login.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/pages/loginAuthen/authenDingDing.vue b/pages/loginAuthen/authenDingDing.vue new file mode 100644 index 0000000..86556d2 --- /dev/null +++ b/pages/loginAuthen/authenDingDing.vue @@ -0,0 +1,132 @@ + + + + + + \ No newline at end of file diff --git a/pages/loginAuthen/authenDingDingAudit.vue b/pages/loginAuthen/authenDingDingAudit.vue new file mode 100644 index 0000000..45f7093 --- /dev/null +++ b/pages/loginAuthen/authenDingDingAudit.vue @@ -0,0 +1,174 @@ + + + + + + \ No newline at end of file diff --git a/pages/loginAuthen/authenWeChat.vue b/pages/loginAuthen/authenWeChat.vue new file mode 100644 index 0000000..53da946 --- /dev/null +++ b/pages/loginAuthen/authenWeChat.vue @@ -0,0 +1,113 @@ + + + + + + \ No newline at end of file diff --git a/pages/loginAuthen/loginDingDing.vue b/pages/loginAuthen/loginDingDing.vue new file mode 100644 index 0000000..b9623c9 --- /dev/null +++ b/pages/loginAuthen/loginDingDing.vue @@ -0,0 +1,145 @@ + + + + + + \ No newline at end of file diff --git a/pages/loginAuthen/loginWeChat.vue b/pages/loginAuthen/loginWeChat.vue new file mode 100644 index 0000000..c2aba5c --- /dev/null +++ b/pages/loginAuthen/loginWeChat.vue @@ -0,0 +1,138 @@ + + + + + + \ No newline at end of file diff --git a/pages/loginAuthen/selectCompany.vue b/pages/loginAuthen/selectCompany.vue new file mode 100644 index 0000000..4b71334 --- /dev/null +++ b/pages/loginAuthen/selectCompany.vue @@ -0,0 +1,150 @@ + + + + + + \ No newline at end of file diff --git a/pages/logsError/details.vue b/pages/logsError/details.vue new file mode 100644 index 0000000..444acd6 --- /dev/null +++ b/pages/logsError/details.vue @@ -0,0 +1,323 @@ + + + + + \ No newline at end of file diff --git a/pages/logsError/index.vue b/pages/logsError/index.vue new file mode 100644 index 0000000..42d7f00 --- /dev/null +++ b/pages/logsError/index.vue @@ -0,0 +1,420 @@ + + + + + \ No newline at end of file diff --git a/pages/logsError/push.png b/pages/logsError/push.png new file mode 100644 index 0000000000000000000000000000000000000000..4f292f737fb9740c7df2b66bba13655bddea764d GIT binary patch literal 2861 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 literal 0 HcmV?d00001 diff --git a/pages/logsError/show.vue b/pages/logsError/show.vue new file mode 100644 index 0000000..5f0bc7a --- /dev/null +++ b/pages/logsError/show.vue @@ -0,0 +1,310 @@ + + + + + \ No newline at end of file diff --git a/permission.js b/permission.js new file mode 100644 index 0000000..533d400 --- /dev/null +++ b/permission.js @@ -0,0 +1,41 @@ +import { getToken } from '@/utils/auth' + +// 登录页面 +const loginPageH5 = "/pages/login" +const loginPageDingDing = "/pages/loginAuthen/authenDingDing" +const loginPageWeChat = "/pages/loginAuthen/authenWeChat" + +// 页面白名单 //页面进行跳转时,会判断是否是白名单页面,如何不是,不运行跳转 +const whiteList = [ + '/pages/login', '/pages/loginAuthen/authenDingDing', '/pages/loginAuthen/authenWeChat', '/pages/common/webview/index','/pages/loginAuthen/loginDingDing','/pages/loginAuthen/loginWeChat','/pages/loginAuthen/authenDingDingAudit','/pages/loginAuthen/selectCompany' +] + +// 检查地址白名单 +function checkWhite(url) { + const path = url.split('?')[0] + return whiteList.indexOf(path) !== -1 +} + +// 页面跳转验证拦截器 +let list = ["navigateTo", "redirectTo", "reLaunch", "switchTab"] +list.forEach(item => { + uni.addInterceptor(item, { + invoke(to) { + if (getToken()) { + if (to.url === loginPageH5 || to.url === loginPageDingDing || to.url === loginPageWeChat) { + uni.reLaunch({ url: "/" }) + } + return true + } else { + if (checkWhite(to.url)) { + return true + } + // uni.reLaunch({ url: loginPage }) + return false + } + }, + fail(err) { + console.log(err) + } + }) +}) diff --git a/plugins/auth.js b/plugins/auth.js new file mode 100644 index 0000000..6bcce3f --- /dev/null +++ b/plugins/auth.js @@ -0,0 +1,60 @@ +import store from '@/store' + +function authPermission(permission) { + const all_permission = "*:*:*" + const permissions = store.getters && store.getters.permissions + if (permission && permission.length > 0) { + return permissions.some(v => { + return all_permission === v || v === permission + }) + } else { + return false + } +} + +function authRole(role) { + const super_admin = "admin" + const roles = store.getters && store.getters.roles + if (role && role.length > 0) { + return roles.some(v => { + return super_admin === v || v === role + }) + } else { + return false + } +} + +export default { + // 验证用户是否具备某权限 + hasPermi(permission) { + return authPermission(permission) + }, + // 验证用户是否含有指定权限,只需包含其中一个 + hasPermiOr(permissions) { + return permissions.some(item => { + return authPermission(item) + }) + }, + // 验证用户是否含有指定权限,必须全部拥有 + hasPermiAnd(permissions) { + return permissions.every(item => { + return authPermission(item) + }) + }, + // 验证用户是否具备某角色 + hasRole(role) { + return authRole(role) + }, + // 验证用户是否含有指定角色,只需包含其中一个 + hasRoleOr(roles) { + return roles.some(item => { + return authRole(item) + }) + }, + // 验证用户是否含有指定角色,必须全部拥有 + hasRoleAnd(roles) { + return roles.every(item => { + return authRole(item) + }) + } +} diff --git a/plugins/index.js b/plugins/index.js new file mode 100644 index 0000000..22bb75c --- /dev/null +++ b/plugins/index.js @@ -0,0 +1,14 @@ +import tab from './tab' +import auth from './auth' +import modal from './modal' + +export default { + install(Vue) { + // 页签操作 + Vue.prototype.$tab = tab + // 认证对象 + Vue.prototype.$auth = auth + // 模态框对象 + Vue.prototype.$modal = modal + } +} diff --git a/plugins/modal.js b/plugins/modal.js new file mode 100644 index 0000000..41f5a26 --- /dev/null +++ b/plugins/modal.js @@ -0,0 +1,74 @@ +export default { + // 消息提示 + msg(content) { + uni.showToast({ + title: content, + icon: 'none' + }) + }, + // 错误消息 + msgError(content) { + uni.showToast({ + title: content, + icon: 'error' + }) + }, + // 成功消息 + msgSuccess(content) { + uni.showToast({ + title: content, + icon: 'success' + }) + }, + // 隐藏消息 + hideMsg(content) { + uni.hideToast() + }, + // 弹出提示 + alert(content) { + uni.showModal({ + title: '提示', + content: content, + showCancel: false + }) + }, + // 确认窗体 + confirm(content) { + return new Promise((resolve, reject) => { + uni.showModal({ + title: '系统提示', + content: content, + cancelText: '取消', + confirmText: '确定', + success: function(res) { + if (res.confirm) { + resolve(res.confirm) + } + } + }) + }) + }, + // 提示信息 + showToast(option) { + if (typeof option === "object") { + uni.showToast(option) + } else { + uni.showToast({ + title: option, + icon: "none", + duration: 2500 + }) + } + }, + // 打开遮罩层 + loading(content) { + uni.showLoading({ + title: content, + icon: 'none' + }) + }, + // 关闭遮罩层 + closeLoading() { + uni.hideLoading() + } +} diff --git a/plugins/tab.js b/plugins/tab.js new file mode 100644 index 0000000..e3e0209 --- /dev/null +++ b/plugins/tab.js @@ -0,0 +1,30 @@ +export default { + // 关闭所有页面,打开到应用内的某个页面 + reLaunch(url) { + return uni.reLaunch({ + url: url + }) + }, + // 跳转到tabBar页面,并关闭其他所有非tabBar页面 + switchTab(url) { + return uni.switchTab({ + url: url + }) + }, + // 关闭当前页面,跳转到应用内的某个页面 + redirectTo(url) { + return uni.redirectTo({ + url: url + }) + }, + // 保留当前页面,跳转到应用内的某个页面 + navigateTo(url) { + return uni.navigateTo({ + url: url + }) + }, + // 关闭当前页面,返回上一页面或多级页面 + navigateBack() { + return uni.navigateBack() + } +} diff --git a/static/daishu.png b/static/daishu.png new file mode 100644 index 0000000000000000000000000000000000000000..95be27b2e80bfbac35298bf8a3b8ff9f4ae78978 GIT binary patch literal 5370 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
H)~G|q>;(6! zj&CRDZMwbm;pzE@{Vr^Hu&>kUO=UeZ4(_Xst^C;5V&VHs$@DneAJ?5F|C<$kP5)&P z3kZ+pe1HS&3)IKvO?bD@!L#kHvD52SS+B(A?B%?s)2~xmmoYjsn_kLzoqX4GugQ0o z`Li)}yhGlLe>3ageGbMpWz5@NOsB3^P_b42x9KlF>l?Vm3}9dIMXz#Nu!Z$`&5x(( z_l}si)9;NwJfYv~^m-}hHT_<(<@NI2q2FFF>mBI#diKG)9D;iT|4VllQ*hKXPs{t4 z*O4Xv;TsM_>GueZr~d*03W)o6CSnLRIUc>Phzc>Ph8_cNJw z3@PVvl$`7Bc~jPP%+F=HFUNeA{fB-jqnrZIEBvXRY>WRIUG>(J-mBFt5+Mv$NxE{(33bwWD62SMNi%YqH*fZm+R!@ZW)by_|+)DlzN^g7QvG)t?*{g(aqob6a4*NAUGVu=QgNxr+Wqpvrh`A1Q9>H){hpWaV?4(e|Hc`y{$1-CsNno~)X3X}&-WKF`@4>oQV7TU+@b$!txtsOFSPh~ zeXgu$x-bJ(&;F*sh$`B5td!<&S99&vn7q{O?c_Z8SLM52-kZsInUhm1-gT@CS;_654aTj4pE>|J1A(Eyc(0>{MI)JDVNrZw)d7khdkgpEfq-IbHI3N(WdL zuVdR_3Hu5m=SAEey1kxv{ry+4FMNFJ^Ox=^ri~nr{PJ`ed2ud3xPRJm{QIvue-{6* znj!1&4K@Q<2g)k`rnKxA^pN9jh!^bpp^UbCSwgE06w_i}4`3(AcpbQYm8^$9Z}n#- zwB@T3+RL*3m&@fs-^k|LW$;C`U|rwrJX-vl&5HF{qt5_pYdz!odPVFfh+%)>{g5g; z&o%dcx>!Nq{8>()pDd$&ydP&b=jZJBu9Oh3!+oq5pYtBwZ}~aD@cMDlr;_dmR|%gU zYF3o_&zf03(J;|B@kDLLE ze~&z^){nAgz@-_m_;+cVtS4DB;E^+6@$ZqR)%sD^47fA{7XL0yll3HP20U^GEdD+6 zv|2yPngN$)z~bMfX|kSV&45SFfW^N@o>uEeSu^0$3|RcTG)>l%tQqjg8L;^G$kS^5 zC~F2>ngNS{m!`>jk~IS!IRh5|9(h`=A7#yeOEX~c@6t3`PqJpfBWJ+k-y=_}^`opA zaA^iC{#}|T>q*uOc;pON{CnhSwSJT}11`;g#lK6_WIf560gs#ki+_(it=5mSX27Kx zu=sarnye>TGvJXkAozdHx>++|&44un)(luPV9kIv1J(>!GhoetH3QZRSTkVFfHecw X3|KQ@&44un)(luPV9kKX&A|T;6YD`n literal 0 HcmV?d00001 diff --git a/static/font/demo.css b/static/font/demo.css new file mode 100644 index 0000000..a67054a --- /dev/null +++ b/static/font/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/static/font/demo_index.html b/static/font/demo_index.html new file mode 100644 index 0000000..6ff5bc3 --- /dev/null +++ b/static/font/demo_index.html @@ -0,0 +1,1614 @@ + + + + + iconfont Demo + + + + + + + + + + + + + +
+

+ + +

+ +
+
+
    + +
  • + +
    标签
    +
    &#xe606;
    +
  • + +
  • + +
    approval-opinion2
    +
    &#xe60f;
    +
  • + +
  • + +
    文件夹设置
    +
    &#xe87a;
    +
  • + +
  • + +
    班型设置
    +
    &#xe601;
    +
  • + +
  • + +
    设置-界面设置
    +
    &#xe602;
    +
  • + +
  • + +
    列表空空
    +
    &#xe6ad;
    +
  • + +
  • + +
    刷子
    +
    &#xe619;
    +
  • + +
  • + +
    25单据
    +
    &#xe89b;
    +
  • + +
  • + +
    211铃铛
    +
    &#xe8c0;
    +
  • + +
  • + +
    喇叭
    +
    &#xe628;
    +
  • + +
  • + +
    +
    &#xe610;
    +
  • + +
  • + +
    交接情况
    +
    &#xe600;
    +
  • + +
  • + +
    编辑
    +
    &#xe621;
    +
  • + +
  • + +
    审核
    +
    &#xe65d;
    +
  • + +
  • + +
    更新日志
    +
    &#xe66b;
    +
  • + +
  • + +
    菜单管理
    +
    &#xe66c;
    +
  • + +
  • + +
    按钮管理
    +
    &#xe66d;
    +
  • + +
  • + +
    计划看板
    +
    &#xe66e;
    +
  • + +
  • + +
    合同阶段档案
    +
    &#xe66f;
    +
  • + +
  • + +
    存货档案
    +
    &#xe670;
    +
  • + +
  • + +
    客户档案
    +
    &#xe671;
    +
  • + +
  • + +
    拦截日志
    +
    &#xe672;
    +
  • + +
  • + +
    权限管理
    +
    &#xe674;
    +
  • + +
  • + +
    发票管理
    +
    &#xe675;
    +
  • + +
  • + +
    考勤管理
    +
    &#xe676;
    +
  • + +
  • + +
    流程管理
    +
    &#xe677;
    +
  • + +
  • + +
    供应商档案
    +
    &#xe678;
    +
  • + +
  • + +
    任务审核
    +
    &#xe679;
    +
  • + +
  • + +
    图标库
    +
    &#xe67a;
    +
  • + +
  • + +
    三方系统
    +
    &#xe67b;
    +
  • + +
  • + +
    数据字典
    +
    &#xe67c;
    +
  • + +
  • + +
    我的计划
    +
    &#xe67d;
    +
  • + +
  • + +
    收款管理
    +
    &#xe67e;
    +
  • + +
  • + +
    商机
    +
    &#xe67f;
    +
  • + +
  • + +
    日志审核
    +
    &#xe680;
    +
  • + +
  • + +
    任务下发
    +
    &#xe681;
    +
  • + +
  • + +
    我的日志
    +
    &#xe682;
    +
  • + +
  • + +
    线索
    +
    &#xe683;
    +
  • + +
  • + +
    我的任务
    +
    &#xe684;
    +
  • + +
  • + +
    业务员指标设置
    +
    &#xe685;
    +
  • + +
  • + +
    项目新增
    +
    &#xe686;
    +
  • + +
  • + +
    销售合同
    +
    &#xe687;
    +
  • + +
  • + +
    用户反馈
    +
    &#xe688;
    +
  • + +
  • + +
    用车管理
    +
    &#xe689;
    +
  • + +
  • + +
    项目阶段计划
    +
    &#xe68a;
    +
  • + +
  • + +
    消息记录
    +
    &#xe68b;
    +
  • + +
  • + +
    用户管理
    +
    &#xe68c;
    +
  • + +
  • + +
    项目问题
    +
    &#xe68d;
    +
  • + +
  • + +
    项目清单
    +
    &#xe68e;
    +
  • + +
  • + +
    项目查看
    +
    &#xe68f;
    +
  • + +
  • + +
    收藏网址
    +
    &#xe690;
    +
  • + +
  • + +
    员工关怀
    +
    &#xe691;
    +
  • + +
  • + +
    组织机构
    +
    &#xe692;
    +
  • + +
  • + +
    在线人数
    +
    &#xe693;
    +
  • + +
  • + +
    组织架构
    +
    &#xe694;
    +
  • + +
  • + +
    bug管理
    +
    &#xe695;
    +
  • + +
  • + +
    定时任务
    +
    &#xe666;
    +
  • + +
  • + +
    单据管理
    +
    &#xe667;
    +
  • + +
  • + +
    操作日志
    +
    &#xe668;
    +
  • + +
  • + +
    初始化设置
    +
    &#xe669;
    +
  • + +
  • + +
    登录日志
    +
    &#xe66a;
    +
  • + +
  • + +
    镂空
    +
    &#xe673;
    +
  • + +
+
+

Unicode 引用

+
+ +

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

+
    +
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • +
  • 默认情况下不支持多色,直接添加多色图标会自动去色。
  • +
+
+

注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)

+
+

Unicode 使用步骤如下:

+

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

+
@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1695173268309') format('woff2'),
+       url('iconfont.woff?t=1695173268309') format('woff'),
+       url('iconfont.ttf?t=1695173268309') format('truetype');
+}
+
+

第二步:定义使用 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"。

+
+
+
+
+
    + +
  • + +
    + 标签 +
    +
    .icon-biaoqian +
    +
  • + +
  • + +
    + approval-opinion2 +
    +
    .icon-approval-opinion2 +
    +
  • + +
  • + +
    + 文件夹设置 +
    +
    .icon-wenjianjiashezhi +
    +
  • + +
  • + +
    + 班型设置 +
    +
    .icon-banxingshezhi +
    +
  • + +
  • + +
    + 设置-界面设置 +
    +
    .icon-shezhi-jiemianshezhi +
    +
  • + +
  • + +
    + 列表空空 +
    +
    .icon-shiliangzhinengduixiang- +
    +
  • + +
  • + +
    + 刷子 +
    +
    .icon-fl-shuazi +
    +
  • + +
  • + +
    + 25单据 +
    +
    .icon-danju +
    +
  • + +
  • + +
    + 211铃铛 +
    +
    .icon-lingdang +
    +
  • + +
  • + +
    + 喇叭 +
    +
    .icon-laba +
    +
  • + +
  • + +
    + 章 +
    +
    .icon-zhang +
    +
  • + +
  • + +
    + 交接情况 +
    +
    .icon-jiaojieqingkuang +
    +
  • + +
  • + +
    + 编辑 +
    +
    .icon-bianji +
    +
  • + +
  • + +
    + 审核 +
    +
    .icon-shenhe1 +
    +
  • + +
  • + +
    + 更新日志 +
    +
    .icon-gengxinrizhi +
    +
  • + +
  • + +
    + 菜单管理 +
    +
    .icon-caidanguanli +
    +
  • + +
  • + +
    + 按钮管理 +
    +
    .icon-anniuguanli +
    +
  • + +
  • + +
    + 计划看板 +
    +
    .icon-jihuakanban +
    +
  • + +
  • + +
    + 合同阶段档案 +
    +
    .icon-hetongjieduandangan +
    +
  • + +
  • + +
    + 存货档案 +
    +
    .icon-cunhuodangan +
    +
  • + +
  • + +
    + 客户档案 +
    +
    .icon-kehudangan +
    +
  • + +
  • + +
    + 拦截日志 +
    +
    .icon-lanjierizhi +
    +
  • + +
  • + +
    + 权限管理 +
    +
    .icon-quanxianguanli +
    +
  • + +
  • + +
    + 发票管理 +
    +
    .icon-fapiaoguanli +
    +
  • + +
  • + +
    + 考勤管理 +
    +
    .icon-kaoqinguanli +
    +
  • + +
  • + +
    + 流程管理 +
    +
    .icon-liuchengguanli +
    +
  • + +
  • + +
    + 供应商档案 +
    +
    .icon-gongyingshangdangan +
    +
  • + +
  • + +
    + 任务审核 +
    +
    .icon-renwushenhe +
    +
  • + +
  • + +
    + 图标库 +
    +
    .icon-tubiaoku +
    +
  • + +
  • + +
    + 三方系统 +
    +
    .icon-sanfangxitong +
    +
  • + +
  • + +
    + 数据字典 +
    +
    .icon-shujuzidian +
    +
  • + +
  • + +
    + 我的计划 +
    +
    .icon-wodejihua +
    +
  • + +
  • + +
    + 收款管理 +
    +
    .icon-shoukuanguanli +
    +
  • + +
  • + +
    + 商机 +
    +
    .icon-shangji +
    +
  • + +
  • + +
    + 日志审核 +
    +
    .icon-rizhishenhe +
    +
  • + +
  • + +
    + 任务下发 +
    +
    .icon-renwuxiafa +
    +
  • + +
  • + +
    + 我的日志 +
    +
    .icon-woderizhi +
    +
  • + +
  • + +
    + 线索 +
    +
    .icon-xiansuo +
    +
  • + +
  • + +
    + 我的任务 +
    +
    .icon-woderenwu +
    +
  • + +
  • + +
    + 业务员指标设置 +
    +
    .icon-yewuyuanzhibiaoshezhi +
    +
  • + +
  • + +
    + 项目新增 +
    +
    .icon-xiangmuxinzeng +
    +
  • + +
  • + +
    + 销售合同 +
    +
    .icon-xiaoshouhetong +
    +
  • + +
  • + +
    + 用户反馈 +
    +
    .icon-yonghufankui +
    +
  • + +
  • + +
    + 用车管理 +
    +
    .icon-yongcheguanli +
    +
  • + +
  • + +
    + 项目阶段计划 +
    +
    .icon-xiangmujieduanjihua +
    +
  • + +
  • + +
    + 消息记录 +
    +
    .icon-xiaoxijilu +
    +
  • + +
  • + +
    + 用户管理 +
    +
    .icon-yonghuguanli +
    +
  • + +
  • + +
    + 项目问题 +
    +
    .icon-xiangmuwenti +
    +
  • + +
  • + +
    + 项目清单 +
    +
    .icon-xiangmuqingdan +
    +
  • + +
  • + +
    + 项目查看 +
    +
    .icon-xiangmuchakan +
    +
  • + +
  • + +
    + 收藏网址 +
    +
    .icon-shoucangwangzhi +
    +
  • + +
  • + +
    + 员工关怀 +
    +
    .icon-yuangongguanhuai +
    +
  • + +
  • + +
    + 组织机构 +
    +
    .icon-zuzhijigou +
    +
  • + +
  • + +
    + 在线人数 +
    +
    .icon-zaixianrenshu +
    +
  • + +
  • + +
    + 组织架构 +
    +
    .icon-zuzhijiagou +
    +
  • + +
  • + +
    + bug管理 +
    +
    .icon-bugguanli +
    +
  • + +
  • + +
    + 定时任务 +
    +
    .icon-dingshirenwu +
    +
  • + +
  • + +
    + 单据管理 +
    +
    .icon-danjuguanli +
    +
  • + +
  • + +
    + 操作日志 +
    +
    .icon-caozuorizhi +
    +
  • + +
  • + +
    + 初始化设置 +
    +
    .icon-chushihuashezhi +
    +
  • + +
  • + +
    + 登录日志 +
    +
    .icon-denglurizhi +
    +
  • + +
  • + +
    + 镂空 +
    +
    .icon-loukong +
    +
  • + +
+
+

font-class 引用

+
+ +

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

+

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

+
    +
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • +
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • +
+

使用步骤如下:

+

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

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

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

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

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

+
+
+
+
+
    + +
  • + +
    标签
    +
    #icon-biaoqian
    +
  • + +
  • + +
    approval-opinion2
    +
    #icon-approval-opinion2
    +
  • + +
  • + +
    文件夹设置
    +
    #icon-wenjianjiashezhi
    +
  • + +
  • + +
    班型设置
    +
    #icon-banxingshezhi
    +
  • + +
  • + +
    设置-界面设置
    +
    #icon-shezhi-jiemianshezhi
    +
  • + +
  • + +
    列表空空
    +
    #icon-shiliangzhinengduixiang-
    +
  • + +
  • + +
    刷子
    +
    #icon-fl-shuazi
    +
  • + +
  • + +
    25单据
    +
    #icon-danju
    +
  • + +
  • + +
    211铃铛
    +
    #icon-lingdang
    +
  • + +
  • + +
    喇叭
    +
    #icon-laba
    +
  • + +
  • + +
    +
    #icon-zhang
    +
  • + +
  • + +
    交接情况
    +
    #icon-jiaojieqingkuang
    +
  • + +
  • + +
    编辑
    +
    #icon-bianji
    +
  • + +
  • + +
    审核
    +
    #icon-shenhe1
    +
  • + +
  • + +
    更新日志
    +
    #icon-gengxinrizhi
    +
  • + +
  • + +
    菜单管理
    +
    #icon-caidanguanli
    +
  • + +
  • + +
    按钮管理
    +
    #icon-anniuguanli
    +
  • + +
  • + +
    计划看板
    +
    #icon-jihuakanban
    +
  • + +
  • + +
    合同阶段档案
    +
    #icon-hetongjieduandangan
    +
  • + +
  • + +
    存货档案
    +
    #icon-cunhuodangan
    +
  • + +
  • + +
    客户档案
    +
    #icon-kehudangan
    +
  • + +
  • + +
    拦截日志
    +
    #icon-lanjierizhi
    +
  • + +
  • + +
    权限管理
    +
    #icon-quanxianguanli
    +
  • + +
  • + +
    发票管理
    +
    #icon-fapiaoguanli
    +
  • + +
  • + +
    考勤管理
    +
    #icon-kaoqinguanli
    +
  • + +
  • + +
    流程管理
    +
    #icon-liuchengguanli
    +
  • + +
  • + +
    供应商档案
    +
    #icon-gongyingshangdangan
    +
  • + +
  • + +
    任务审核
    +
    #icon-renwushenhe
    +
  • + +
  • + +
    图标库
    +
    #icon-tubiaoku
    +
  • + +
  • + +
    三方系统
    +
    #icon-sanfangxitong
    +
  • + +
  • + +
    数据字典
    +
    #icon-shujuzidian
    +
  • + +
  • + +
    我的计划
    +
    #icon-wodejihua
    +
  • + +
  • + +
    收款管理
    +
    #icon-shoukuanguanli
    +
  • + +
  • + +
    商机
    +
    #icon-shangji
    +
  • + +
  • + +
    日志审核
    +
    #icon-rizhishenhe
    +
  • + +
  • + +
    任务下发
    +
    #icon-renwuxiafa
    +
  • + +
  • + +
    我的日志
    +
    #icon-woderizhi
    +
  • + +
  • + +
    线索
    +
    #icon-xiansuo
    +
  • + +
  • + +
    我的任务
    +
    #icon-woderenwu
    +
  • + +
  • + +
    业务员指标设置
    +
    #icon-yewuyuanzhibiaoshezhi
    +
  • + +
  • + +
    项目新增
    +
    #icon-xiangmuxinzeng
    +
  • + +
  • + +
    销售合同
    +
    #icon-xiaoshouhetong
    +
  • + +
  • + +
    用户反馈
    +
    #icon-yonghufankui
    +
  • + +
  • + +
    用车管理
    +
    #icon-yongcheguanli
    +
  • + +
  • + +
    项目阶段计划
    +
    #icon-xiangmujieduanjihua
    +
  • + +
  • + +
    消息记录
    +
    #icon-xiaoxijilu
    +
  • + +
  • + +
    用户管理
    +
    #icon-yonghuguanli
    +
  • + +
  • + +
    项目问题
    +
    #icon-xiangmuwenti
    +
  • + +
  • + +
    项目清单
    +
    #icon-xiangmuqingdan
    +
  • + +
  • + +
    项目查看
    +
    #icon-xiangmuchakan
    +
  • + +
  • + +
    收藏网址
    +
    #icon-shoucangwangzhi
    +
  • + +
  • + +
    员工关怀
    +
    #icon-yuangongguanhuai
    +
  • + +
  • + +
    组织机构
    +
    #icon-zuzhijigou
    +
  • + +
  • + +
    在线人数
    +
    #icon-zaixianrenshu
    +
  • + +
  • + +
    组织架构
    +
    #icon-zuzhijiagou
    +
  • + +
  • + +
    bug管理
    +
    #icon-bugguanli
    +
  • + +
  • + +
    定时任务
    +
    #icon-dingshirenwu
    +
  • + +
  • + +
    单据管理
    +
    #icon-danjuguanli
    +
  • + +
  • + +
    操作日志
    +
    #icon-caozuorizhi
    +
  • + +
  • + +
    初始化设置
    +
    #icon-chushihuashezhi
    +
  • + +
  • + +
    登录日志
    +
    #icon-denglurizhi
    +
  • + +
  • + +
    镂空
    +
    #icon-loukong
    +
  • + +
+
+

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/static/font/iconfont.css b/static/font/iconfont.css new file mode 100644 index 0000000..1731d4e --- /dev/null +++ b/static/font/iconfont.css @@ -0,0 +1,260 @@ +@font-face { + font-family: "iconfont"; /* Project id 4141561 */ + src: url('@/static/font/iconfont.ttf') format('truetype'); +} +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-biaoqian:before { + content: "\e606"; +} + +.icon-approval-opinion2:before { + content: "\e60f"; +} + +.icon-wenjianjiashezhi:before { + content: "\e87a"; +} + +.icon-banxingshezhi:before { + content: "\e601"; +} + +.icon-shezhi-jiemianshezhi:before { + content: "\e602"; +} + +.icon-shiliangzhinengduixiang-:before { + content: "\e6ad"; +} + +.icon-fl-shuazi:before { + content: "\e619"; +} + +.icon-danju:before { + content: "\e89b"; +} + +.icon-lingdang:before { + content: "\e8c0"; +} + +.icon-laba:before { + content: "\e628"; +} + +.icon-zhang:before { + content: "\e610"; +} + +.icon-jiaojieqingkuang:before { + content: "\e600"; +} + +.icon-bianji:before { + content: "\e621"; +} + +.icon-shenhe1:before { + content: "\e65d"; +} + +.icon-gengxinrizhi:before { + content: "\e66b"; +} + +.icon-caidanguanli:before { + content: "\e66c"; +} + +.icon-anniuguanli:before { + content: "\e66d"; +} + +.icon-jihuakanban:before { + content: "\e66e"; +} + +.icon-hetongjieduandangan:before { + content: "\e66f"; +} + +.icon-cunhuodangan:before { + content: "\e670"; +} + +.icon-kehudangan:before { + content: "\e671"; +} + +.icon-lanjierizhi:before { + content: "\e672"; +} + +.icon-quanxianguanli:before { + content: "\e674"; +} + +.icon-fapiaoguanli:before { + content: "\e675"; +} + +.icon-kaoqinguanli:before { + content: "\e676"; +} + +.icon-liuchengguanli:before { + content: "\e677"; +} + +.icon-gongyingshangdangan:before { + content: "\e678"; +} + +.icon-renwushenhe:before { + content: "\e679"; +} + +.icon-tubiaoku:before { + content: "\e67a"; +} + +.icon-sanfangxitong:before { + content: "\e67b"; +} + +.icon-shujuzidian:before { + content: "\e67c"; +} + +.icon-wodejihua:before { + content: "\e67d"; +} + +.icon-shoukuanguanli:before { + content: "\e67e"; +} + +.icon-shangji:before { + content: "\e67f"; +} + +.icon-rizhishenhe:before { + content: "\e680"; +} + +.icon-renwuxiafa:before { + content: "\e681"; +} + +.icon-woderizhi:before { + content: "\e682"; +} + +.icon-xiansuo:before { + content: "\e683"; +} + +.icon-woderenwu:before { + content: "\e684"; +} + +.icon-yewuyuanzhibiaoshezhi:before { + content: "\e685"; +} + +.icon-xiangmuxinzeng:before { + content: "\e686"; +} + +.icon-xiaoshouhetong:before { + content: "\e687"; +} + +.icon-yonghufankui:before { + content: "\e688"; +} + +.icon-yongcheguanli:before { + content: "\e689"; +} + +.icon-xiangmujieduanjihua:before { + content: "\e68a"; +} + +.icon-xiaoxijilu:before { + content: "\e68b"; +} + +.icon-yonghuguanli:before { + content: "\e68c"; +} + +.icon-xiangmuwenti:before { + content: "\e68d"; +} + +.icon-xiangmuqingdan:before { + content: "\e68e"; +} + +.icon-xiangmuchakan:before { + content: "\e68f"; +} + +.icon-shoucangwangzhi:before { + content: "\e690"; +} + +.icon-yuangongguanhuai:before { + content: "\e691"; +} + +.icon-zuzhijigou:before { + content: "\e692"; +} + +.icon-zaixianrenshu:before { + content: "\e693"; +} + +.icon-zuzhijiagou:before { + content: "\e694"; +} + +.icon-bugguanli:before { + content: "\e695"; +} + +.icon-dingshirenwu:before { + content: "\e666"; +} + +.icon-danjuguanli:before { + content: "\e667"; +} + +.icon-caozuorizhi:before { + content: "\e668"; +} + +.icon-chushihuashezhi:before { + content: "\e669"; +} + +.icon-denglurizhi:before { + content: "\e66a"; +} + +.icon-loukong:before { + content: "\e673"; +} + diff --git a/static/font/iconfont.js b/static/font/iconfont.js new file mode 100644 index 0000000..636b0a6 --- /dev/null +++ b/static/font/iconfont.js @@ -0,0 +1 @@ +window._iconfont_svg_string_4141561='',function(h){var l=(l=document.getElementsByTagName("script"))[l.length-1],a=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var c,v,z,m,i,o=function(l,a){a.parentNode.insertBefore(l,a)};if(a&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}c=function(){var l,a=document.createElement("div");a.innerHTML=h._iconfont_svg_string_4141561,(a=a.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",a=a,(l=document.body).firstChild?o(a,l.firstChild):l.appendChild(a))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),c()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(z=c,m=h.document,i=!1,n(),m.onreadystatechange=function(){"complete"==m.readyState&&(m.onreadystatechange=null,t())})}function t(){i||(i=!0,z())}function n(){try{m.documentElement.doScroll("left")}catch(l){return void setTimeout(n,50)}t()}}(window); \ No newline at end of file diff --git a/static/font/iconfont.json b/static/font/iconfont.json new file mode 100644 index 0000000..2fdd194 --- /dev/null +++ b/static/font/iconfont.json @@ -0,0 +1,443 @@ +{ + "id": "4141561", + "name": "移动端——公司用安数智中台", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "17930629", + "name": "标签", + "font_class": "biaoqian", + "unicode": "e606", + "unicode_decimal": 58886 + }, + { + "icon_id": "28174575", + "name": "approval-opinion2", + "font_class": "approval-opinion2", + "unicode": "e60f", + "unicode_decimal": 58895 + }, + { + "icon_id": "34220364", + "name": "文件夹设置", + "font_class": "wenjianjiashezhi", + "unicode": "e87a", + "unicode_decimal": 59514 + }, + { + "icon_id": "34586059", + "name": "班型设置", + "font_class": "banxingshezhi", + "unicode": "e601", + "unicode_decimal": 58881 + }, + { + "icon_id": "35472944", + "name": "设置-界面设置", + "font_class": "shezhi-jiemianshezhi", + "unicode": "e602", + "unicode_decimal": 58882 + }, + { + "icon_id": "3629124", + "name": "列表空空", + "font_class": "shiliangzhinengduixiang-", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "2406018", + "name": "刷子", + "font_class": "fl-shuazi", + "unicode": "e619", + "unicode_decimal": 58905 + }, + { + "icon_id": "1727362", + "name": "25单据", + "font_class": "danju", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "1727435", + "name": "211铃铛", + "font_class": "lingdang", + "unicode": "e8c0", + "unicode_decimal": 59584 + }, + { + "icon_id": "1929807", + "name": "喇叭", + "font_class": "laba", + "unicode": "e628", + "unicode_decimal": 58920 + }, + { + "icon_id": "7933562", + "name": "章", + "font_class": "zhang", + "unicode": "e610", + "unicode_decimal": 58896 + }, + { + "icon_id": "4360975", + "name": "交接情况", + "font_class": "jiaojieqingkuang", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "33987167", + "name": "编辑", + "font_class": "bianji", + "unicode": "e621", + "unicode_decimal": 58913 + }, + { + "icon_id": "31716702", + "name": "审核", + "font_class": "shenhe1", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "36301611", + "name": "更新日志", + "font_class": "gengxinrizhi", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "36301612", + "name": "菜单管理", + "font_class": "caidanguanli", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "36301613", + "name": "按钮管理", + "font_class": "anniuguanli", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "36301614", + "name": "计划看板", + "font_class": "jihuakanban", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "36301615", + "name": "合同阶段档案", + "font_class": "hetongjieduandangan", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "36301616", + "name": "存货档案", + "font_class": "cunhuodangan", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "36301617", + "name": "客户档案", + "font_class": "kehudangan", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "36301618", + "name": "拦截日志", + "font_class": "lanjierizhi", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "36301619", + "name": "权限管理", + "font_class": "quanxianguanli", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "36301620", + "name": "发票管理", + "font_class": "fapiaoguanli", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "36301621", + "name": "考勤管理", + "font_class": "kaoqinguanli", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "36301622", + "name": "流程管理", + "font_class": "liuchengguanli", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "36301623", + "name": "供应商档案", + "font_class": "gongyingshangdangan", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "36301624", + "name": "任务审核", + "font_class": "renwushenhe", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "36301625", + "name": "图标库", + "font_class": "tubiaoku", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "36301626", + "name": "三方系统", + "font_class": "sanfangxitong", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "36301627", + "name": "数据字典", + "font_class": "shujuzidian", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "36301628", + "name": "我的计划", + "font_class": "wodejihua", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "36301629", + "name": "收款管理", + "font_class": "shoukuanguanli", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "36301630", + "name": "商机", + "font_class": "shangji", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "36301631", + "name": "日志审核", + "font_class": "rizhishenhe", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "36301632", + "name": "任务下发", + "font_class": "renwuxiafa", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "36301633", + "name": "我的日志", + "font_class": "woderizhi", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "36301634", + "name": "线索", + "font_class": "xiansuo", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "36301635", + "name": "我的任务", + "font_class": "woderenwu", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "36301636", + "name": "业务员指标设置", + "font_class": "yewuyuanzhibiaoshezhi", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "36301637", + "name": "项目新增", + "font_class": "xiangmuxinzeng", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "36301638", + "name": "销售合同", + "font_class": "xiaoshouhetong", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "36301639", + "name": "用户反馈", + "font_class": "yonghufankui", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "36301640", + "name": "用车管理", + "font_class": "yongcheguanli", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "36301641", + "name": "项目阶段计划", + "font_class": "xiangmujieduanjihua", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "36301642", + "name": "消息记录", + "font_class": "xiaoxijilu", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "36301643", + "name": "用户管理", + "font_class": "yonghuguanli", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "36301644", + "name": "项目问题", + "font_class": "xiangmuwenti", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "36301645", + "name": "项目清单", + "font_class": "xiangmuqingdan", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "36301646", + "name": "项目查看", + "font_class": "xiangmuchakan", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "36301647", + "name": "收藏网址", + "font_class": "shoucangwangzhi", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "36301648", + "name": "员工关怀", + "font_class": "yuangongguanhuai", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "36301649", + "name": "组织机构", + "font_class": "zuzhijigou", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "36301650", + "name": "在线人数", + "font_class": "zaixianrenshu", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "36301651", + "name": "组织架构", + "font_class": "zuzhijiagou", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "36301652", + "name": "bug管理", + "font_class": "bugguanli", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "36301606", + "name": "定时任务", + "font_class": "dingshirenwu", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "36301607", + "name": "单据管理", + "font_class": "danjuguanli", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "36301608", + "name": "操作日志", + "font_class": "caozuorizhi", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "36301609", + "name": "初始化设置", + "font_class": "chushihuashezhi", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "36301610", + "name": "登录日志", + "font_class": "denglurizhi", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "36293495", + "name": "镂空", + "font_class": "loukong", + "unicode": "e673", + "unicode_decimal": 58995 + } + ] +} diff --git a/static/font/iconfont.ttf b/static/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..da000aa213580639dcbea9f8a1dc47787bf53d59 GIT binary patch literal 24060 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 literal 0 HcmV?d00001 diff --git a/static/font/iconfont.woff b/static/font/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..0eccccf931a6a72e7218566cafac8d9b3099392b GIT binary patch literal 12908 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 F{{wwHtlR(q literal 0 HcmV?d00001 diff --git a/static/font/iconfont.woff2 b/static/font/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..454706decab116f640fdb54f2311cc3da6db0e28 GIT binary patch literal 10768 zcmV+rD(}^IPew8T0RR9104fjw3jhEB0A2h504crz0RR9100000000000000000000 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 Os5Hc}?kj}-9smG>f3aZz literal 0 HcmV?d00001 diff --git a/static/images/advance.png b/static/images/advance.png new file mode 100644 index 0000000000000000000000000000000000000000..83a43766b1689ae58dc1d29d8ac15e3e148f8e0d GIT binary patch literal 25396 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 literal 0 HcmV?d00001 diff --git a/static/images/audit/0.png b/static/images/audit/0.png new file mode 100644 index 0000000000000000000000000000000000000000..7db660fd97db93329a351d4b33ac902cfb82c8db GIT binary patch literal 351 zcmV-l0igbgP)Px$8A(JzR47wpWPpMzT3T$(QVePT8JMCO{{Pno3o|laWn}ob^zSoLe6T xgFV8;!0_)M#8hTxB*joqlN_uhM;xh10|1Kqdr_2HOY8su002ovPDHLkV1i~nn7;r3 literal 0 HcmV?d00001 diff --git a/static/images/audit/1.png b/static/images/audit/1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe6087b805f232d604eedb17db0e0ae9ca2e2b0e GIT binary patch literal 316 zcmV-C0mJ@@P)Px#_DMuRR47xGQq67wVH7?0^H-vqN^H~?8Ir+@8Hg>pQe| z2qWyfsVG6yM#pz$rYvR}lDV6koO{o?zl4J+L&Xc%#f@MtGGx+#31TFPTG;(GwUoB~ z!vMr4YQ(dn7Xay_fX(-QU0j&P`|o5Zlkj%WBp6hYjEE4cfpVI#lHFoE7Esi`Y~E)Bp>euUgtnCqXok5 zJ=bQU&N?0!Pv|V4ZH0OLucd@9j&wjpd(i=dEd;YA$3r__tK-8teT_X4U3T9<;2}5w O0000Px$8A(JzR47wpWPpMzT3T$(QVePT8JMCO{{Pno3o|laWn}ob^zSoLe6T xgFV8;!0_)M#8hTxB*joqlN_uhM;xh10|1Kqdr_2HOY8su002ovPDHLkV1i~nn7;r3 literal 0 HcmV?d00001 diff --git a/static/images/audit/3.png b/static/images/audit/3.png new file mode 100644 index 0000000000000000000000000000000000000000..b880257a1ff464fadda64cf3481907885046d025 GIT binary patch literal 349 zcmV-j0iyniP)Px$7fD1xR47xGl07d&VHC%Ir}tLcK@-wVNpB1i1}_P{yOG2P=%AB{PoR=6Vl;?G zOcL=83>HHtY!((P7InEAy^ZQU@+7^uUWT6KN&e^g{d3-gZfIq^@2L~4s8UpzFtWgv z2uA}}dS5EnZ(R-Q>$xG34^Q)4T|i&G2x`QE+$5ROAwjK*ou9?Zj^ghvp@IJe{4B{HnIYwt&{l(>woB;W v$4mONX|n7K`GY00000NkvXXu0mjfLQ9$t literal 0 HcmV?d00001 diff --git a/static/images/audit/close.png b/static/images/audit/close.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e1dfa4c47e97473c0833d924508c0f25ff942b GIT binary patch literal 182 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