From 5706d00d5d74b3ec3050fb03275cd91b2340abb6 Mon Sep 17 00:00:00 2001 From: zhang_li <2235006734@qqq.com> Date: Wed, 27 Mar 2024 17:27:36 +0800 Subject: [PATCH] first commit --- App.vue | 70 + api/http.ts | 114 + api/login.js | 41 + api/request2.js | 2330 +++ common/appUpdate.js | 116 + common/array.js | 320 + common/balance.js | 477 + common/basic.js | 1014 ++ common/calc.js | 17 + common/detail.js | 83 + common/directory.js | 516 + common/label.js | 194 + common/record.js | 91 + common/style/PDA_style-delete.css | 221 + common/style/new_style.css | 2749 ++++ common/style/pdabasic.css | 762 + common/style/uni.css | 3405 +++++ common/utils/auth.js | 21 + common/utils/common.js | 54 + common/utils/constant.js | 9 + common/utils/errorCode.js | 6 + common/utils/permission.js | 51 + common/utils/ruoyi.js | 47 + common/utils/storage.js | 37 + components/amap-wx/js/util.js | 181 + components/amap-wx/lib/amap-wx.js | 1 + components/custom-nomore/custom-nomore.vue | 39 + .../custom-refresher/custom-refresher.vue | 58 + components/marked/index.js | 1 + components/marked/lib/marked.js | 1573 ++ components/mpvue-citypicker/city-data/area.js | 12542 ++++++++++++++++ components/mpvue-citypicker/city-data/city.js | 1503 ++ .../mpvue-citypicker/city-data/province.js | 139 + .../mpvue-citypicker/mpvueCityPicker.vue | 230 + components/mpvue-echarts/src/echarts.vue | 123 + components/mpvue-echarts/src/wx-canvas.js | 73 + components/mpvue-picker/mpvuePicker.vue | 484 + components/mpvueGestureLock/gestureLock.js | 175 + components/mpvueGestureLock/index.vue | 138 + components/my-paging/my-paging.vue | 157 + components/page-foot/page-foot.vue | 38 + components/page-head/page-head.vue | 16 + components/pullDown/pullDown.vue | 663 + components/search/index.vue | 85 + components/show-modal/show-modal.vue | 456 + components/tab-nvue/mediaList.vue | 175 + components/u-charts/u-charts.js | 5046 +++++++ components/verifition/Verify.vue | 469 + components/verifition/utils/ase.js | 14 + components/verifition/utils/request.js | 17 + .../verifition/verifyPoint/verifyPoint.vue | 555 + .../verifition/verifySlider/verifySlider.vue | 661 + env.d.ts | 13 + main.ts | 41 + manifest.json | 82 + pages.json | 1739 +++ pages/common/textview/index.vue | 43 + pages/common/webview/index.vue | 34 + pages/config/config.vue | 120 + pages/container/coms/comContainerBindCard.vue | 180 + pages/container/coms/comPalletRecord.vue | 172 + .../container/record/containerBindRecord.vue | 422 + .../record/containerUnBindRecord.vue | 384 + pages/count/coms/comCountDetailCard.vue | 158 + pages/count/coms/comCountJobCard.vue | 63 + pages/count/coms/detailInfoPopup.vue | 53 + pages/count/coms/jobInfoPopup.vue | 76 + pages/count/coms/jobListPopup.vue | 47 + pages/count/job/countDetail.vue | 843 ++ pages/count/job/countJob.vue | 290 + pages/count/record/countRecord.vue | 552 + .../customerReturn/coms/comReturnJobCard.vue | 44 + pages/customerReturn/coms/comReturnRecord.vue | 172 + .../coms/comReturnRequestCard.vue | 39 + pages/customerReturn/coms/detailInfoPopup.vue | 57 + pages/customerReturn/coms/jobInfoPopup.vue | 78 + pages/customerReturn/coms/jobListPopup.vue | 47 + .../coms/requestDetailInfoPopup.vue | 87 + .../customerReturn/coms/requestInfoPopup.vue | 105 + pages/customerReturn/job/returnDetail.vue | 538 + pages/customerReturn/job/returnJob.vue | 284 + pages/customerReturn/record/returnRecord.vue | 466 + .../request/customerReturnRequest.vue | 394 + .../request/customerReturnRequestCreate.vue | 486 + .../request/customerReturnRequestDetail.vue | 125 + pages/deliver/coms/comDeliverDetailCard.vue | 170 + pages/deliver/coms/comDeliverJobCard.vue | 50 + pages/deliver/coms/comDeliverRequestCard.vue | 36 + .../deliver/coms/comDeliverRequestCreator.vue | 59 + pages/deliver/coms/comDeliverRequestPopup.vue | 297 + pages/deliver/coms/comScanDeliverPack.vue | 531 + pages/deliver/coms/detailInfoPopup.vue | 57 + pages/deliver/coms/jobInfoPopup.vue | 76 + pages/deliver/coms/jobListPopup.vue | 47 + pages/deliver/coms/requestDetailInfoPopup.vue | 87 + pages/deliver/coms/requestInfoPopup.vue | 99 + pages/deliver/job/deliverDetail.vue | 462 + pages/deliver/job/deliverJob.vue | 286 + pages/deliver/record/deliverRecord.vue | 502 + pages/deliver/request/deliverRequest.vue | 390 + .../deliver/request/deliverRequestCreate.vue | 198 + .../deliver/request/deliverRequestDetail.vue | 137 + pages/demo/demo.vue | 703 + pages/demo/page.vue | 128 + pages/error/404.vue | 34 + pages/index/index.vue | 494 + pages/inspect/coms/comInspectDetailCard.vue | 154 + pages/inspect/coms/comInspectJobCard.vue | 49 + pages/inspect/coms/comInspectJobList.vue | 43 + pages/inspect/coms/comInspectRequestCard.vue | 45 + pages/inspect/coms/inspectComDetailCard.vue | 235 + pages/inspect/coms/inspectEdit.vue | 291 + pages/inspect/coms/inspectInfoPopup.vue | 121 + pages/inspect/coms/requestDetailInfoPopup.vue | 85 + pages/inspect/coms/requestInfoPopup.vue | 116 + pages/inspect/coms/uploadCamera.vue | 122 + pages/inspect/job/inspectDetail.vue | 533 + pages/inspect/job/inspectFullDetail.vue | 553 + pages/inspect/job/inspectJob.vue | 295 + pages/inspect/job/inspectResult.vue | 585 + pages/inspect/request/inspectRequest.vue | 380 + .../inspect/request/inspectRequestDetail.vue | 130 + .../coms/comInventoryDetailCard.vue | 142 + .../coms/comInventoryJobCard.vue | 38 + pages/inventoryMove/coms/comMove.vue | 409 + pages/inventoryMove/coms/comMoveJob.vue | 321 + pages/inventoryMove/coms/comMoveRecord.vue | 440 + .../inventoryMove/coms/comMoveRecordCard.vue | 193 + pages/inventoryMove/coms/comMovebalance.vue | 106 + pages/inventoryMove/coms/detailInfoPopup.vue | 57 + pages/inventoryMove/coms/jobInfoPopup.vue | 53 + pages/inventoryMove/coms/jobListPopup.vue | 47 + pages/inventoryMove/job/holdToOkMoveJob.vue | 39 + .../inventoryMove/job/holdToScrapMoveJob.vue | 39 + .../inventoryMove/job/inventoryMoveDetail.vue | 567 + pages/inventoryMove/job/inventoryMoveJob.vue | 275 + pages/inventoryMove/job/moveJob.vue | 37 + pages/inventoryMove/job/okToHoldMoveJob.vue | 36 + pages/inventoryMove/job/okToScrapMoveJob.vue | 39 + .../inventoryMove/job/scrapToHoldMoveJob.vue | 39 + pages/inventoryMove/record/holdToOkRecord.vue | 25 + .../record/holdToScrapRecord.vue | 29 + pages/inventoryMove/record/moveFreeRecord.vue | 29 + pages/inventoryMove/record/okToHoldRecord.vue | 26 + .../inventoryMove/record/okToScrapRecord.vue | 26 + .../record/scrapToHoldRecord.vue | 29 + .../coms/comIssueDetailCard.vue | 214 + .../coms/comIssueJobCard.vue | 56 + .../coms/comIssueRecommend.vue | 120 + .../coms/comScanIssueList.vue | 54 + .../coms/comScanIssuePack.vue | 336 + .../issue-按批次推荐/job/issueDetail.vue | 693 + pages/issue-按批次推荐/job/issueJob.vue | 356 + pages/issue/coms/comIssueDetailCard.vue | 188 + pages/issue/coms/comIssueJobCard.vue | 39 + pages/issue/coms/comIssueRecommend.vue | 120 + pages/issue/coms/comIssueRequestCard.vue | 36 + pages/issue/coms/comIssueRequestCreator.vue | 151 + .../issue/coms/comIssueRequestDetailCard.vue | 151 + pages/issue/coms/comIssueRequestInfo.vue | 56 + pages/issue/coms/comIssueRequestPopup.vue | 406 + pages/issue/coms/comScanIssueList.vue | 54 + pages/issue/coms/comScanIssuePack.vue | 531 + pages/issue/coms/detailInfoPopup.vue | 57 + pages/issue/coms/jobInfoPopup.vue | 55 + pages/issue/coms/jobListPopup.vue | 46 + pages/issue/coms/requestDetailInfoPopup.vue | 85 + pages/issue/coms/requestInfoPopup.vue | 77 + pages/issue/job/issueDetail.vue | 520 + pages/issue/job/issueJob.vue | 313 + pages/issue/job/issueReceiptJob.vue | 303 + pages/issue/js/issue.js | 110 + pages/issue/record/issueRecord.vue | 434 + pages/issue/request/issueRequest.vue | 396 + pages/issue/request/issueRequestCreate.vue | 216 + pages/issue/request/issueRequestDetail.vue | 135 + pages/login/index.vue | 401 + pages/message/details.vue | 96 + pages/message/index.vue | 323 + pages/package/coms/comOverRecord.vue | 170 + pages/package/coms/comPackageRecord.vue | 171 + pages/package/record/mergePackageRecord.vue | 393 + pages/package/record/overPackageRecord.vue | 366 + pages/package/record/splitPackageRecord.vue | 385 + .../coms/comProductDetailCard.vue | 121 + .../coms/comProductJobCard.vue | 50 + .../coms/comProductRecord.vue | 196 + .../coms/comScanProductList.vue | 54 + .../productDismantle/coms/detailInfoPopup.vue | 57 + pages/productDismantle/coms/jobInfoPopup.vue | 53 + pages/productDismantle/coms/jobListPopup.vue | 47 + .../coms/requestDetailInfoPopup.vue | 85 + .../coms/requestInfoPopup.vue | 97 + .../job/productDismantleDetail.vue | 550 + .../job/productDismantleJob.vue | 287 + .../record/productDismantleRecord.vue | 375 + .../coms/comProductDetailCard.vue | 121 + .../productPutaway/coms/comProductJobCard.vue | 44 + .../coms/comPutawayRequestCard.vue | 36 + .../coms/comScanProductList.vue | 54 + pages/productPutaway/coms/detailInfoPopup.vue | 57 + pages/productPutaway/coms/jobInfoPopup.vue | 53 + pages/productPutaway/coms/jobListPopup.vue | 47 + .../coms/requestDetailInfoPopup.vue | 73 + .../productPutaway/coms/requestInfoPopup.vue | 73 + .../job/productPutawayDetail.vue | 501 + .../productPutaway/job/productPutawayJob.vue | 287 + .../record/productPutawayRecord.vue | 450 + .../productPutaway/request/putawayRequest.vue | 399 + .../request/putawayRequestCreate.vue | 428 + .../request/putawayRequestDetail.vue | 123 + .../coms/comProductDetailCard.vue | 158 + .../productReceipt/coms/comProductJobCard.vue | 50 + .../productReceipt/coms/comProductRecord.vue | 169 + pages/productReceipt/coms/detailInfoPopup.vue | 89 + pages/productReceipt/coms/jobInfoPopup.vue | 66 + pages/productReceipt/coms/jobListPopup.vue | 46 + .../coms/productDetailInfoPopup.vue | 98 + .../job/productReceiptDetail.vue | 417 + .../productReceipt/job/productReceiptJob.vue | 287 + .../record/productReceiptRecord.vue | 494 + .../coms/comProductionDetailCard.vue | 121 + .../coms/comProductionJobCard.vue | 43 + .../coms/comProductionRecord.vue | 194 + .../coms/detailInfoPopup.vue | 61 + pages/productionReceipt/coms/jobInfoPopup.vue | 62 + pages/productionReceipt/coms/jobListPopup.vue | 47 + .../job/productionReceiptDetail.vue | 544 + .../job/productionReceiptJob.vue | 288 + .../record/productionReceiptRecord.vue | 370 + pages/productionReturn/coms/comReturn.vue | 512 + .../coms/comReturnCommonRequest.vue | 426 + .../coms/comReturnDetailCard.vue | 158 + .../coms/comReturnJobCard.vue | 54 + .../productionReturn/coms/comReturnRecord.vue | 177 + .../coms/comReturnRecordTitle.vue | 59 + .../coms/comReturnRequestCard.vue | 36 + .../coms/comReturnRequestCreator.vue | 159 + .../coms/comReturnRequestInfo.vue | 57 + .../coms/comReturnRequestPopup.vue | 377 + .../coms/comScanReturnPack.vue | 513 + .../productionReturn/coms/detailInfoPopup.vue | 57 + pages/productionReturn/coms/jobInfoPopup.vue | 53 + pages/productionReturn/coms/jobListPopup.vue | 47 + .../coms/requestDetailInfoPopup.vue | 86 + .../coms/requestInfoPopup.vue | 73 + .../coms/returnDetailInfoPopup.vue | 70 + pages/productionReturn/job/returnDetail.vue | 515 + pages/productionReturn/job/returnJob.vue | 287 + .../productionReturn/record/returnToHold.vue | 559 + .../productionReturn/record/returnToStore.vue | 600 + .../request/requestDetail.vue | 141 + .../request/returnRequestCreate.vue | 228 + .../request/returnToHoldRequest.vue | 59 + .../request/returnToStoreRequest.vue | 59 + .../coms/comReceiptDetailCard.vue | 146 + .../coms/comReceiptJobCard.vue | 49 + .../coms/receiptDetailInfoPopup.vue | 110 + .../purchaseReceipt/coms/receiptInfoPopup.vue | 80 + .../coms/receiptJobListPopup.vue | 46 + pages/purchaseReceipt/job/receiptDetail.vue | 518 + pages/purchaseReceipt/job/receiptJob.vue | 302 + .../purchaseReturn/coms/comReturnJobCard.vue | 47 + .../coms/comReturnRequestCard.vue | 39 + .../coms/requestDetailInfoPopup.vue | 105 + .../purchaseReturn/coms/requestInfoPopup.vue | 102 + .../coms/returnDetailInfoPopup.vue | 57 + pages/purchaseReturn/coms/returnInfoPopup.vue | 79 + .../coms/returnJobListPopup.vue | 52 + pages/purchaseReturn/job/returnDetail.vue | 471 + pages/purchaseReturn/job/returnJob.vue | 305 + pages/purchaseReturn/record/returnRecord.vue | 398 + .../purchaseReturn/request/returnRequest.vue | 396 + .../request/returnRequestCreate.vue | 358 + .../request/returnRequestDetail.vue | 128 + pages/putaway/coms/comPutawayJobCard.vue | 48 + pages/putaway/coms/comPutawayRequestCard.vue | 36 + pages/putaway/coms/putawayDetailInfoPopup.vue | 57 + pages/putaway/coms/putawayInfoPopup.vue | 53 + pages/putaway/coms/putawayJobListPopup.vue | 47 + pages/putaway/coms/requestDetailInfoPopup.vue | 86 + pages/putaway/coms/requestInfoPopup.vue | 73 + pages/putaway/job/putawayDetail.vue | 515 + pages/putaway/job/putawayJob.vue | 289 + pages/putaway/record/putawayRecord.vue | 507 + pages/putaway/request/putawayRequest.vue | 397 + .../putaway/request/putawayRequestCreate.vue | 431 + .../putaway/request/putawayRequestDetail.vue | 126 + pages/query/coms/comItemBalance.vue | 87 + pages/query/coms/comItemDetailCard.vue | 78 + pages/query/coms/comLocationDetailCard.vue | 77 + pages/query/container.vue | 280 + pages/query/item.vue | 302 + pages/query/item_copy.vue | 313 + pages/query/location.vue | 257 + pages/query/location_copy.vue | 279 + pages/repleinsh/coms/comRepleinshJobCard.vue | 40 + .../coms/comRepleinshRequestCard.vue | 36 + .../coms/comRepleinshRequestPopup.vue | 320 + .../repleinsh/coms/comRepleishDetailCard.vue | 170 + pages/repleinsh/coms/comScanReplishPack.vue | 531 + .../coms/repleinshDetailInfoPopup.vue | 57 + pages/repleinsh/coms/repleinshInfoPopup.vue | 80 + .../repleinsh/coms/repleinshJobListPopup.vue | 47 + .../repleinsh/coms/requestDetailInfoPopup.vue | 86 + pages/repleinsh/coms/requestInfoPopup.vue | 97 + pages/repleinsh/job/repleinshDetail.vue | 499 + pages/repleinsh/job/repleinshJob.vue | 286 + pages/repleinsh/record/repleinshRecord.vue | 566 + pages/repleinsh/request/repleinshRequest.vue | 224 + .../request/repleinshRequestDetail.vue | 113 + pages/scrap/coms/comScrapDetailCard.vue | 127 + pages/scrap/coms/comScrapJobCard.vue | 38 + pages/scrap/coms/comScrapRequestCard.vue | 36 + pages/scrap/coms/requestDetailInfoPopup.vue | 78 + pages/scrap/coms/requestInfoPopup.vue | 60 + pages/scrap/coms/scrapDetailInfoPopup.vue | 99 + pages/scrap/coms/scrapInfoPopup.vue | 74 + pages/scrap/coms/scrapJobListPopup.vue | 46 + pages/scrap/job/scrapJob.vue | 283 + pages/scrap/job/scrapJobDetail.vue | 449 + pages/scrap/record/scrapRecord.vue | 396 + pages/scrap/request/scrapRequestCreate.vue | 390 + pages/scrap/request/scrapRequestDetail.vue | 123 + pages/scrap/request/scrapRrequest.vue | 390 + pages/setter/index.vue | 166 + pages/setter/passwordpage.vue | 108 + pages/setter/setterDetail.vue | 58 + pages/supplierDeliver/coms/comRecordCard.vue | 43 + .../coms/comRecordDetailCard.vue | 98 + .../coms/recordDetailInfoPopup.vue | 163 + .../supplierDeliver/coms/recordInfoPopup.vue | 116 + .../coms/recordListDetailPop.vue | 95 + .../supplierDeliver/coms/recordListPopup.vue | 46 + .../coms/recordtDetailInfoPopup.vue | 99 + .../record/supplierDeliverRecord.vue | 248 + .../record/supplierDeliverRecordDetail.vue | 247 + pages/transfer/coms/comReceiptDetailCard.vue | 146 + pages/transfer/coms/comTransferJobCard.vue | 38 + pages/transfer/coms/comTransferRecord.vue | 487 + pages/transfer/coms/detailInfoPopup.vue | 57 + pages/transfer/coms/jobInfoPopup.vue | 62 + pages/transfer/coms/jobListPopup.vue | 47 + pages/transfer/job/issueDetail.vue | 525 + pages/transfer/job/issueJob.vue | 287 + pages/transfer/job/receiptDetail.vue | 563 + pages/transfer/job/receiptJob.vue | 286 + pages/transfer/job/transferDetail.vue | 584 + pages/transfer/job/transferJob.vue | 315 + pages/transfer/record/deliverRecord.vue | 460 + pages/transfer/record/receiptRecord.vue | 438 + pages/unPlanned/coms/comBalance.vue | 103 + pages/unPlanned/coms/comIssueDetailCard.vue | 136 + pages/unPlanned/coms/comIssueJobCard.vue | 38 + pages/unPlanned/coms/comIssueRequestCard.vue | 34 + pages/unPlanned/coms/comReceiptDetailCard.vue | 147 + pages/unPlanned/coms/comReceiptJobCard.vue | 38 + pages/unPlanned/coms/comReceiptRecord.vue | 172 + .../unPlanned/coms/comReceiptRequestCard.vue | 36 + .../unPlanned/coms/comReceiptRequestPopup.vue | 260 + pages/unPlanned/coms/detailInfoPopup.vue | 53 + pages/unPlanned/coms/jobInfoPopup.vue | 45 + pages/unPlanned/coms/jobListPopup.vue | 51 + .../coms/requestIssDetailInfoPopup.vue | 78 + pages/unPlanned/coms/requestIssInfoPopup.vue | 60 + .../coms/requestRecDetailInfoPopup.vue | 95 + pages/unPlanned/coms/requestRecInfoPopup.vue | 60 + pages/unPlanned/job/issueJob.vue | 292 + pages/unPlanned/job/issueJobDetail.vue | 425 + pages/unPlanned/job/receiptJob.vue | 277 + pages/unPlanned/job/receiptJobDetail.vue | 412 + pages/unPlanned/record/issueRecord.vue | 296 + pages/unPlanned/record/receiptRecord.vue | 395 + pages/unPlanned/request/issueRequest.vue | 399 + .../unPlanned/request/issueRequestCreate.vue | 294 + .../unPlanned/request/issueRequestDetail.vue | 123 + pages/unPlanned/request/receiptRequest.vue | 395 + .../request/receiptRequestCreate.vue | 240 + .../request/receiptRequestDetail.vue | 126 + plugins/auth.js | 60 + plugins/index.js | 17 + plugins/modal.js | 73 + plugins/tab.js | 32 + plugins/time.js | 19 + static/avatar.png | Bin 0 -> 5403 bytes static/customicons.ttf | Bin 0 -> 2416 bytes static/icon/black_count.svg | 1 + static/icon/checkmark-circle.svg | 1 + static/icon/close-circle.svg | 1 + static/icon/close-circle2.svg | 1 + static/icon/close.svg | 1 + static/icon/data-checkbox.png | Bin 0 -> 1888 bytes static/icon/error-circle.svg | 1 + static/icon/icon_customer.svg | 1 + static/icon/icon_date.svg | 1 + static/icon/icon_eye-fill.svg | 1 + static/icon/icon_eye-off-outline.svg | 1 + static/icon/icon_filter.svg | 1 + static/icon/iconfont.ttf | Bin 0 -> 1616 bytes static/icon/icons_camera.svg | 1 + static/icon/icons_close-circle.svg | 1 + static/icon/icons_close.svg | 1 + static/icon/icons_edit.svg | 1 + static/icon/icons_scan_close.svg | 1 + static/icon/light_count.svg | 1 + static/icon/plus.svg | 1 + static/icon/question-circle.svg | 1 + static/icon/screen.png | Bin 0 -> 5214 bytes static/icon/search.svg | 1 + static/icon/warning.svg | 1 + static/icon_personal_name.png | Bin 0 -> 13394 bytes static/icon_personal_password.png | Bin 0 -> 12185 bytes static/icon_personal_setting.png | Bin 0 -> 14302 bytes static/icons_ui/default_blank.png | Bin 0 -> 34952 bytes static/icons_ui/default_data.png | Bin 0 -> 15053 bytes static/icons_ui/default_notpassed.png | Bin 0 -> 12915 bytes static/icons_ui/icon_add.svg | 4 + static/icons_ui/icon_apply_num.svg | 13 + static/icons_ui/icon_asn.svg | 12 + static/icons_ui/icon_avn.svg | 12 + static/icons_ui/icon_buy_num.svg | 13 + static/icons_ui/icon_camera_black.svg | 8 + static/icons_ui/icon_camera_white.svg | 8 + static/icons_ui/icon_close.svg | 1 + static/icons_ui/icon_customer.svg | 4 + static/icons_ui/icon_date.svg | 4 + static/icons_ui/icon_down.svg | 1 + static/icons_ui/icon_erp.svg | 11 + static/icons_ui/icon_form.svg | 5 + static/icons_ui/icon_kw.svg | 10 + static/icons_ui/icon_kw_blue.svg | 5 + static/icons_ui/icon_kw_use.svg | 10 + static/icons_ui/icon_login_password.svg | 5 + static/icons_ui/icon_login_user.svg | 4 + static/icons_ui/icon_notpass.svg | 5 + static/icons_ui/icon_num.svg | 4 + static/icons_ui/icon_passed.svg | 5 + static/icons_ui/icon_pc.svg | 10 + static/icons_ui/icon_ponumber.svg | 5 + static/icons_ui/icon_prod_line.svg | 12 + static/icons_ui/icon_qiju_end.svg | 5 + static/icons_ui/icon_qiju_num.svg | 4 + static/icons_ui/icon_qiju_start.svg | 5 + static/icons_ui/icon_return_num.svg | 12 + static/icons_ui/icon_scan_white.svg | 4 + static/icons_ui/icon_send_request.svg | 12 + static/icons_ui/icon_senditem.svg | 4 + static/icons_ui/icon_supplier.svg | 11 + static/icons_ui/icon_take_photo.svg | 8 + static/icons_ui/icon_tasknum.svg | 4 + static/icons_ui/icon_tenant.svg | 1 + static/icons_ui/icon_time.svg | 5 + static/icons_ui/icon_tm.svg | 5 + static/icons_ui/icon_xm.svg | 4 + static/icons_ui/icon_xm_blue.svg | 4 + static/icons_ui/icons_common_recceipt.svg | 8 + static/icons_ui/icons_common_sjadd.svg | 9 + static/icons_ui/label_scx.svg | 4 + static/icons_ui/login_bg.png | Bin 0 -> 102876 bytes static/icons_ui/popup_bot_bg.png | Bin 0 -> 115163 bytes static/images/banner/banner01.jpg | Bin 0 -> 44454 bytes static/images/banner/banner02.jpg | Bin 0 -> 37061 bytes static/images/banner/banner03.jpg | Bin 0 -> 38123 bytes static/images/banner/icon1.png | Bin 0 -> 22030 bytes static/images/banner/icon2.png | Bin 0 -> 28281 bytes static/images/banner/icon3.png | Bin 0 -> 25684 bytes static/images/banner/icon4.png | Bin 0 -> 29202 bytes static/images/banner/icon5.png | Bin 0 -> 24936 bytes static/images/banner/icon6.png | Bin 0 -> 24807 bytes static/images/banner/icon7.png | Bin 0 -> 24795 bytes static/images/banner/login_banner.svg | 12 + static/images/banner/logo-banner.png | Bin 0 -> 108504 bytes static/images/banner/u2335.svg | 6 + static/images/banner/u2450.svg | 6 + static/images/banner/u253_selected.svg | 6 + static/images/bg.jpg | Bin 0 -> 176594 bytes static/images/default.jpg | Bin 0 -> 20200 bytes static/images/icon1.png | Bin 0 -> 22900 bytes static/images/icon1.svg | 1 + static/images/icon2.png | Bin 0 -> 22761 bytes static/images/icon2.svg | 1 + static/images/icon3.png | Bin 0 -> 22431 bytes static/images/icon3.svg | 1 + static/images/icon4.svg | 1 + static/images/icon5.svg | 1 + static/images/icon6.png | Bin 0 -> 22827 bytes static/images/icon7.png | Bin 0 -> 22004 bytes static/images/icon8.png | Bin 0 -> 22958 bytes static/images/mobile_bg.png | Bin 0 -> 200313 bytes static/images/photo.png | Bin 0 -> 9386 bytes static/images/profile.jpg | Bin 0 -> 81131 bytes static/images/tabbar/tab_act_icon1.png | Bin 0 -> 16851 bytes static/images/tabbar/tab_act_icon2.png | Bin 0 -> 16360 bytes static/images/tabbar/tab_act_icon3.png | Bin 0 -> 18315 bytes static/images/tabbar/tab_act_icon4.png | Bin 0 -> 17271 bytes static/images/tabbar/tab_act_icon5.png | Bin 0 -> 16587 bytes static/images/tabbar/tab_icon1.png | Bin 0 -> 16875 bytes static/images/tabbar/tab_icon2.png | Bin 0 -> 16171 bytes static/images/tabbar/tab_icon3.png | Bin 0 -> 18330 bytes static/images/tabbar/tab_icon4.png | Bin 0 -> 17287 bytes static/images/tabbar/tab_icon5.png | Bin 0 -> 16597 bytes static/login.png | Bin 0 -> 55166 bytes static/logo.png | Bin 0 -> 4023 bytes static/menus/bind_pallet.svg | 1 + static/menus/count.svg | 1 + static/menus/customer_return.svg | 1 + static/menus/deliver.svg | 1 + static/menus/hold_to_ok.svg | 1 + static/menus/hold_to_scrap.svg | 1 + static/menus/inspect.svg | 1 + static/menus/inventory_move.svg | 1 + static/menus/issue.svg | 1 + static/menus/menu_search_lj.svg | 6 + static/menus/merge_package.svg | 1 + static/menus/ok_to_hold.svg | 1 + static/menus/ok_to_scrap.svg | 1 + static/menus/over_package.svg | 1 + static/menus/product_dismantle.svg | 1 + static/menus/product_putaway.svg | 1 + static/menus/product_receipt.svg | 5 + static/menus/production_receipt.svg | 5 + static/menus/production_return.svg | 1 + static/menus/purchase_receipt.svg | 1 + static/menus/purchase_return.svg | 1 + static/menus/putaway.svg | 1 + static/menus/query_container.svg | 1 + static/menus/query_inspect.svg | 1 + static/menus/query_issue_request.svg | 1 + static/menus/query_item.svg | 1 + static/menus/query_location.svg | 1 + static/menus/query_supplier_deliver.svg | 1 + static/menus/repleinsh.svg | 1 + static/menus/return_to_hold.svg | 1 + static/menus/return_to_store.svg | 1 + static/menus/scrap.svg | 1 + static/menus/scrap_to_hold.svg | 1 + static/menus/split_package.svg | 1 + static/menus/transfer_deliver.svg | 1 + static/menus/transfer_receipt.svg | 1 + static/menus/unbind_pallet.svg | 1 + static/menus/unplanned_issue.svg | 1 + static/menus/unplanned_receipt.svg | 1 + static/no_more.png | Bin 0 -> 79568 bytes static/refresher_loading.gif | Bin 0 -> 99597 bytes static/search.svg | 1 + static/uni.ttf | Bin 0 -> 26164 bytes store/index.ts | 1 + store/modules/countStore.ts | 121 + styles/vars/_base.less | 2 + styles/vars/_base.scss | 2 + uni.scss | 77 + uni_modules/uni-badge/changelog.md | 29 + .../components/uni-badge/uni-badge.vue | 268 + uni_modules/uni-badge/package.json | 88 + 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 | 85 + uni_modules/uni-breadcrumb/readme.md | 66 + uni_modules/uni-calendar/changelog.md | 16 + .../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 | 181 + .../components/uni-calendar/uni-calendar.vue | 554 + .../components/uni-calendar/util.js | 354 + uni_modules/uni-calendar/package.json | 88 + 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 | 404 + .../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 | 297 + 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 | 43 + .../uni-data-checkbox/uni-data-checkbox.vue | 817 + uni_modules/uni-data-checkbox/package.json | 87 + uni_modules/uni-data-checkbox/readme.md | 18 + uni_modules/uni-data-picker/changelog.md | 64 + .../components/uni-data-picker/keypress.js | 45 + .../uni-data-picker/uni-data-picker.vue | 554 + .../uni-data-pickerview/uni-data-picker.js | 563 + .../uni-data-pickerview.vue | 333 + uni_modules/uni-data-picker/package.json | 93 + uni_modules/uni-data-picker/readme.md | 22 + uni_modules/uni-data-select/changelog.md | 16 + .../uni-data-select/uni-data-select.vue | 426 + uni_modules/uni-data-select/package.json | 88 + 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 | 93 + .../uni-datetime-picker/calendar-item.vue | 185 + .../uni-datetime-picker/calendar.js | 546 + .../uni-datetime-picker/calendar.vue | 907 ++ .../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 | 927 ++ .../uni-datetime-picker.vue | 1012 ++ .../components/uni-datetime-picker/util.js | 410 + uni_modules/uni-datetime-picker/package.json | 90 + 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 | 47 + .../components/uni-easyinput/common.js | 56 + .../uni-easyinput/uni-easyinput.vue | 593 + uni_modules/uni-easyinput/package.json | 90 + uni_modules/uni-easyinput/readme.md | 11 + uni_modules/uni-fab/changelog.md | 17 + .../uni-fab/components/uni-fab/uni-fab.vue | 475 + .../components/uni-fab/uni-fab.vue.bak | 379 + uni_modules/uni-fab/package.json | 87 + 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 | 86 + .../uni-forms-item/uni-forms-item.vue | 627 + .../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 | 91 + 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 + .../uni-icons/components/uni-icons/uni.ttf | Bin 0 -> 26164 bytes .../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 + .../components/uni-list/uni-list - 副本.vue | 106 + .../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 | 41 + .../components/uni-nav-bar/uni-nav-bar.vue | 348 + .../components/uni-nav-bar/uni-status-bar.vue | 27 + uni_modules/uni-nav-bar/package.json | 89 + uni_modules/uni-nav-bar/readme.md | 15 + uni_modules/uni-notice-bar/changelog.md | 16 + .../uni-notice-bar/uni-notice-bar.vue | 395 + uni_modules/uni-notice-bar/package.json | 90 + uni_modules/uni-notice-bar/readme.md | 13 + uni_modules/uni-number-box/changelog.md | 25 + .../uni-number-box/uni-number-box.vue | 258 + uni_modules/uni-number-box/package.json | 85 + uni_modules/uni-number-box/readme.md | 13 + uni_modules/uni-pagination/changelog.md | 22 + .../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 | 463 + uni_modules/uni-pagination/package.json | 86 + 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 | 474 + 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_modules/uni-section/changelog.md | 2 + .../components/uni-section/uni-section.vue | 167 + uni_modules/uni-section/package.json | 87 + uni_modules/uni-section/readme.md | 8 + .../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 + .../uni-swipe-action-item/index.wxs | 323 + .../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 | 83 + uni_modules/uni-tooltip/readme.md | 8 + uni_modules/uni-transition/changelog.md | 20 + .../uni-transition/createAnimation.js | 128 + .../uni-transition/uni-transition.vue | 277 + uni_modules/uni-transition/package.json | 87 + uni_modules/uni-transition/readme.md | 11 + uni_modules/vk-uview-ui/changelog.md | 135 + .../u-action-sheet/u-action-sheet.vue | 246 + .../components/u-alert-tips/u-alert-tips.vue | 257 + .../u-avatar-cropper/u-avatar-cropper.vue | 290 + .../components/u-avatar-cropper/weCropper.js | 1256 ++ .../components/u-avatar/u-avatar.vue | 263 + .../components/u-back-top/u-back-top.vue | 153 + .../components/u-badge/u-badge.vue | 216 + .../components/u-button/u-button.vue | 602 + .../components/u-calendar/u-calendar.vue | 666 + .../u-car-keyboard/u-car-keyboard.vue | 267 + .../vk-uview-ui/components/u-card/u-card.vue | 300 + .../components/u-cell-group/u-cell-group.vue | 70 + .../components/u-cell-item/u-cell-item.vue | 317 + .../u-checkbox-group/u-checkbox-group.vue | 178 + .../components/u-checkbox/u-checkbox.vue | 322 + .../u-circle-progress/u-circle-progress.vue | 220 + .../vk-uview-ui/components/u-col/u-col.vue | 157 + .../u-collapse-item/u-collapse-item.vue | 206 + .../components/u-collapse/u-collapse.vue | 100 + .../u-column-notice/u-column-notice.vue | 238 + .../components/u-count-down/u-count-down.vue | 175 + .../components/u-count-down/utils.js | 62 + .../components/u-count-to/u-count-to.vue | 266 + .../components/u-divider/u-divider.vue | 153 + .../u-dropdown-item/u-dropdown-item.vue | 148 + .../components/u-dropdown/u-dropdown.vue | 299 + .../components/u-empty/u-empty.vue | 193 + .../components/u-field/u-field.vue | 402 + .../components/u-form-item/u-form-item.vue | 509 + .../vk-uview-ui/components/u-form/u-form.vue | 148 + .../u-full-screen/u-full-screen.vue | 52 + .../vk-uview-ui/components/u-gap/u-gap.vue | 54 + .../components/u-grid-item/u-grid-item.vue | 127 + .../vk-uview-ui/components/u-grid/u-grid.vue | 109 + .../vk-uview-ui/components/u-icon/u-icon.vue | 369 + .../components/u-image/u-image.vue | 269 + .../u-index-anchor/u-index-anchor.vue | 89 + .../components/u-index-list/u-index-list.vue | 315 + .../components/u-input/u-input.vue | 460 + .../components/u-keyboard/u-keyboard.vue | 285 + .../components/u-lazy-load/u-lazy-load.vue | 254 + .../u-line-progress/u-line-progress.vue | 147 + .../vk-uview-ui/components/u-line/u-line.vue | 84 + .../vk-uview-ui/components/u-link/u-link.vue | 89 + .../u-loading-page/u-loading-page.vue | 25 + .../components/u-loading/u-loading.vue | 106 + .../components/u-loadmore/u-loadmore.vue | 204 + .../vk-uview-ui/components/u-mask/u-mask.vue | 137 + .../u-message-input/u-message-input.vue | 327 + .../components/u-modal/u-modal.vue | 339 + .../components/u-navbar/u-navbar.vue | 315 + .../components/u-no-network/u-no-network.vue | 233 + .../components/u-notice-bar/u-notice-bar.vue | 273 + .../components/u-number-box/u-number-box.vue | 476 + .../u-number-keyboard/u-number-keyboard.vue | 170 + .../components/u-parse/libs/CssHandler.js | 100 + .../components/u-parse/libs/MpHtmlParser.js | 581 + .../components/u-parse/libs/config.js | 80 + .../components/u-parse/libs/trees.vue | 537 + .../components/u-parse/u-parse.vue | 676 + .../components/u-picker/u-picker.vue | 895 ++ .../components/u-popup/u-popup.vue | 480 + .../u-radio-group/u-radio-group.vue | 176 + .../components/u-radio/u-radio.vue | 276 + .../vk-uview-ui/components/u-rate/u-rate.vue | 293 + .../components/u-read-more/u-read-more.vue | 180 + .../components/u-row-notice/u-row-notice.vue | 270 + .../vk-uview-ui/components/u-row/u-row.vue | 85 + .../components/u-search/u-search.vue | 357 + .../components/u-section/u-section.vue | 155 + .../components/u-select/u-select.vue | 437 + .../components/u-skeleton/u-skeleton.vue | 199 + .../components/u-slider/u-slider.vue | 290 + .../components/u-steps/u-steps.vue | 200 + .../components/u-sticky/u-sticky.vue | 166 + .../components/u-subsection/u-subsection.vue | 406 + .../u-swipe-action/u-swipe-action.vue | 256 + .../components/u-swiper/u-swiper.vue | 341 + .../components/u-switch/u-switch.vue | 191 + .../components/u-tabbar/u-tabbar.vue | 373 + .../components/u-table/u-table.vue | 85 + .../u-tabs-swiper/u-tabs-swiper.vue | 489 + .../vk-uview-ui/components/u-tabs/u-tabs.vue | 399 + .../vk-uview-ui/components/u-tag/u-tag.vue | 295 + .../vk-uview-ui/components/u-td/u-td.vue | 66 + .../vk-uview-ui/components/u-th/u-th.vue | 62 + .../u-time-line-item/u-time-line-item.vue | 83 + .../components/u-time-line/u-time-line.vue | 43 + .../components/u-toast/u-toast.vue | 220 + .../components/u-top-tips/u-top-tips.vue | 121 + .../vk-uview-ui/components/u-tr/u-tr.vue | 25 + .../components/u-upload/u-upload.vue | 728 + .../u-verification-code.vue | 175 + .../components/u-waterfall/u-waterfall.vue | 199 + .../components/vk-uview-ui/vk-uview-ui.vue | 15 + uni_modules/vk-uview-ui/iconfont.css | 910 ++ uni_modules/vk-uview-ui/index.js | 146 + uni_modules/vk-uview-ui/index.scss | 23 + .../vk-uview-ui/libs/address/areas.json | 1 + .../vk-uview-ui/libs/address/citys.json | 1 + .../vk-uview-ui/libs/address/provinces.json | 1 + uni_modules/vk-uview-ui/libs/config/config.js | 15 + uni_modules/vk-uview-ui/libs/config/zIndex.js | 20 + uni_modules/vk-uview-ui/libs/css/color.scss | 155 + uni_modules/vk-uview-ui/libs/css/common.scss | 176 + .../libs/css/style.components.scss | 7 + .../vk-uview-ui/libs/css/style.h5.scss | 8 + .../vk-uview-ui/libs/css/style.mp.scss | 72 + .../vk-uview-ui/libs/css/style.nvue.scss | 3 + .../vk-uview-ui/libs/css/style.vue.scss | 175 + .../vk-uview-ui/libs/function/$parent.js | 18 + .../vk-uview-ui/libs/function/addUnit.js | 8 + uni_modules/vk-uview-ui/libs/function/bem.js | 4 + .../vk-uview-ui/libs/function/color.js | 37 + .../libs/function/colorGradient.js | 134 + .../vk-uview-ui/libs/function/debounce.js | 29 + .../vk-uview-ui/libs/function/deepClone.js | 23 + .../vk-uview-ui/libs/function/deepMerge.js | 30 + .../vk-uview-ui/libs/function/getParent.js | 47 + uni_modules/vk-uview-ui/libs/function/guid.js | 41 + uni_modules/vk-uview-ui/libs/function/md5.js | 385 + .../vk-uview-ui/libs/function/queryParams.js | 58 + .../vk-uview-ui/libs/function/random.js | 10 + .../vk-uview-ui/libs/function/randomArray.js | 7 + .../vk-uview-ui/libs/function/route.js | 122 + uni_modules/vk-uview-ui/libs/function/sys.js | 9 + uni_modules/vk-uview-ui/libs/function/test.js | 232 + .../vk-uview-ui/libs/function/throttle.js | 34 + .../vk-uview-ui/libs/function/timeFormat.js | 51 + .../vk-uview-ui/libs/function/timeFrom.js | 47 + .../vk-uview-ui/libs/function/toast.js | 9 + uni_modules/vk-uview-ui/libs/function/trim.js | 15 + .../vk-uview-ui/libs/function/type2icon.js | 35 + uni_modules/vk-uview-ui/libs/mixin/mixin.js | 86 + uni_modules/vk-uview-ui/libs/mixin/mpShare.js | 18 + uni_modules/vk-uview-ui/libs/request/index.js | 169 + uni_modules/vk-uview-ui/libs/store/index.js | 19 + .../vk-uview-ui/libs/util/async-validator.js | 1356 ++ uni_modules/vk-uview-ui/libs/util/emitter.js | 64 + uni_modules/vk-uview-ui/package.json | 82 + uni_modules/vk-uview-ui/readme.md | 125 + uni_modules/vk-uview-ui/theme.scss | 38 + uni_modules/z-paging/changelog.md | 6 + .../z-paging-cell/z-paging-cell.vue | 34 + .../z-paging-empty-view.vue | 162 + .../z-paging-swiper-item.vue | 143 + .../z-paging-swiper/z-paging-swiper.vue | 170 + .../components/z-paging-load-more.vue | 141 + .../z-paging/components/z-paging-refresh.vue | 182 + .../components/z-paging/config/index.js | 3 + .../components/z-paging/css/z-paging-main.css | 228 + .../z-paging/css/z-paging-static.css | 35 + .../z-paging/components/z-paging/i18n/en.json | 22 + .../components/z-paging/i18n/index.js | 8 + .../components/z-paging/i18n/zh-Hans.json | 22 + .../components/z-paging/i18n/zh-Hant.json | 22 + .../z-paging/js/hooks/useZPaging.js | 25 + .../z-paging/js/hooks/useZPagingComp.js | 26 + .../z-paging/js/modules/back-to-top.js | 100 + .../z-paging/js/modules/common-layout.js | 116 + .../z-paging/js/modules/data-handle.js | 741 + .../components/z-paging/js/modules/empty.js | 147 + .../components/z-paging/js/modules/i18n.js | 101 + .../z-paging/js/modules/load-more.js | 315 + .../components/z-paging/js/modules/loading.js | 93 + .../components/z-paging/js/modules/nvue.js | 249 + .../z-paging/js/modules/refresher.js | 677 + .../z-paging/js/modules/scroller.js | 464 + .../z-paging/js/modules/virtual-list.js | 461 + .../components/z-paging/js/z-paging-config.js | 21 + .../z-paging/js/z-paging-constant.js | 12 + .../components/z-paging/js/z-paging-enum.js | 44 + .../z-paging/js/z-paging-interceptor.js | 48 + .../components/z-paging/js/z-paging-main.js | 446 + .../components/z-paging/js/z-paging-mixin.js | 22 + .../components/z-paging/js/z-paging-static.js | 13 + .../components/z-paging/js/z-paging-utils.js | 228 + .../z-paging/wxs/z-paging-renderjs.js | 58 + .../components/z-paging/wxs/z-paging-wxs.wxs | 340 + .../z-paging/components/z-paging/z-paging.vue | 307 + uni_modules/z-paging/package.json | 86 + uni_modules/z-paging/readme.md | 53 + uni_modules/z-tabs/changelog.md | 2 + .../z-tabs/components/z-tabs/config/index.js | 4 + .../z-tabs/components/z-tabs/z-tabs.vue | 736 + uni_modules/z-tabs/package.json | 82 + uni_modules/z-tabs/readme.md | 175 + utils/auth.js | 22 + utils/common.ts | 138 + utils/dateTime.ts | 50 + utils/http.ts | 19 + utils/utils.ts | 31 + utils/validator.ts | 783 + 1043 files changed, 182257 insertions(+) create mode 100644 App.vue create mode 100644 api/http.ts create mode 100644 api/login.js create mode 100644 api/request2.js create mode 100644 common/appUpdate.js create mode 100644 common/array.js create mode 100644 common/balance.js create mode 100644 common/basic.js create mode 100644 common/calc.js create mode 100644 common/detail.js create mode 100644 common/directory.js create mode 100644 common/label.js create mode 100644 common/record.js create mode 100644 common/style/PDA_style-delete.css create mode 100644 common/style/new_style.css create mode 100644 common/style/pdabasic.css create mode 100644 common/style/uni.css create mode 100644 common/utils/auth.js create mode 100644 common/utils/common.js create mode 100644 common/utils/constant.js create mode 100644 common/utils/errorCode.js create mode 100644 common/utils/permission.js create mode 100644 common/utils/ruoyi.js create mode 100644 common/utils/storage.js create mode 100644 components/amap-wx/js/util.js create mode 100644 components/amap-wx/lib/amap-wx.js create mode 100644 components/custom-nomore/custom-nomore.vue create mode 100644 components/custom-refresher/custom-refresher.vue create mode 100644 components/marked/index.js create mode 100644 components/marked/lib/marked.js create mode 100644 components/mpvue-citypicker/city-data/area.js create mode 100644 components/mpvue-citypicker/city-data/city.js create mode 100644 components/mpvue-citypicker/city-data/province.js create mode 100644 components/mpvue-citypicker/mpvueCityPicker.vue create mode 100644 components/mpvue-echarts/src/echarts.vue create mode 100644 components/mpvue-echarts/src/wx-canvas.js create mode 100644 components/mpvue-picker/mpvuePicker.vue create mode 100644 components/mpvueGestureLock/gestureLock.js create mode 100644 components/mpvueGestureLock/index.vue create mode 100644 components/my-paging/my-paging.vue create mode 100644 components/page-foot/page-foot.vue create mode 100644 components/page-head/page-head.vue create mode 100644 components/pullDown/pullDown.vue create mode 100644 components/search/index.vue create mode 100644 components/show-modal/show-modal.vue create mode 100644 components/tab-nvue/mediaList.vue create mode 100644 components/u-charts/u-charts.js create mode 100644 components/verifition/Verify.vue create mode 100644 components/verifition/utils/ase.js create mode 100644 components/verifition/utils/request.js create mode 100644 components/verifition/verifyPoint/verifyPoint.vue create mode 100644 components/verifition/verifySlider/verifySlider.vue create mode 100644 env.d.ts create mode 100644 main.ts create mode 100644 manifest.json create mode 100644 pages.json create mode 100644 pages/common/textview/index.vue create mode 100644 pages/common/webview/index.vue create mode 100644 pages/config/config.vue create mode 100644 pages/container/coms/comContainerBindCard.vue create mode 100644 pages/container/coms/comPalletRecord.vue create mode 100644 pages/container/record/containerBindRecord.vue create mode 100644 pages/container/record/containerUnBindRecord.vue create mode 100644 pages/count/coms/comCountDetailCard.vue create mode 100644 pages/count/coms/comCountJobCard.vue create mode 100644 pages/count/coms/detailInfoPopup.vue create mode 100644 pages/count/coms/jobInfoPopup.vue create mode 100644 pages/count/coms/jobListPopup.vue create mode 100644 pages/count/job/countDetail.vue create mode 100644 pages/count/job/countJob.vue create mode 100644 pages/count/record/countRecord.vue create mode 100644 pages/customerReturn/coms/comReturnJobCard.vue create mode 100644 pages/customerReturn/coms/comReturnRecord.vue create mode 100644 pages/customerReturn/coms/comReturnRequestCard.vue create mode 100644 pages/customerReturn/coms/detailInfoPopup.vue create mode 100644 pages/customerReturn/coms/jobInfoPopup.vue create mode 100644 pages/customerReturn/coms/jobListPopup.vue create mode 100644 pages/customerReturn/coms/requestDetailInfoPopup.vue create mode 100644 pages/customerReturn/coms/requestInfoPopup.vue create mode 100644 pages/customerReturn/job/returnDetail.vue create mode 100644 pages/customerReturn/job/returnJob.vue create mode 100644 pages/customerReturn/record/returnRecord.vue create mode 100644 pages/customerReturn/request/customerReturnRequest.vue create mode 100644 pages/customerReturn/request/customerReturnRequestCreate.vue create mode 100644 pages/customerReturn/request/customerReturnRequestDetail.vue create mode 100644 pages/deliver/coms/comDeliverDetailCard.vue create mode 100644 pages/deliver/coms/comDeliverJobCard.vue create mode 100644 pages/deliver/coms/comDeliverRequestCard.vue create mode 100644 pages/deliver/coms/comDeliverRequestCreator.vue create mode 100644 pages/deliver/coms/comDeliverRequestPopup.vue create mode 100644 pages/deliver/coms/comScanDeliverPack.vue create mode 100644 pages/deliver/coms/detailInfoPopup.vue create mode 100644 pages/deliver/coms/jobInfoPopup.vue create mode 100644 pages/deliver/coms/jobListPopup.vue create mode 100644 pages/deliver/coms/requestDetailInfoPopup.vue create mode 100644 pages/deliver/coms/requestInfoPopup.vue create mode 100644 pages/deliver/job/deliverDetail.vue create mode 100644 pages/deliver/job/deliverJob.vue create mode 100644 pages/deliver/record/deliverRecord.vue create mode 100644 pages/deliver/request/deliverRequest.vue create mode 100644 pages/deliver/request/deliverRequestCreate.vue create mode 100644 pages/deliver/request/deliverRequestDetail.vue create mode 100644 pages/demo/demo.vue create mode 100644 pages/demo/page.vue create mode 100644 pages/error/404.vue create mode 100644 pages/index/index.vue create mode 100644 pages/inspect/coms/comInspectDetailCard.vue create mode 100644 pages/inspect/coms/comInspectJobCard.vue create mode 100644 pages/inspect/coms/comInspectJobList.vue create mode 100644 pages/inspect/coms/comInspectRequestCard.vue create mode 100644 pages/inspect/coms/inspectComDetailCard.vue create mode 100644 pages/inspect/coms/inspectEdit.vue create mode 100644 pages/inspect/coms/inspectInfoPopup.vue create mode 100644 pages/inspect/coms/requestDetailInfoPopup.vue create mode 100644 pages/inspect/coms/requestInfoPopup.vue create mode 100644 pages/inspect/coms/uploadCamera.vue create mode 100644 pages/inspect/job/inspectDetail.vue create mode 100644 pages/inspect/job/inspectFullDetail.vue create mode 100644 pages/inspect/job/inspectJob.vue create mode 100644 pages/inspect/job/inspectResult.vue create mode 100644 pages/inspect/request/inspectRequest.vue create mode 100644 pages/inspect/request/inspectRequestDetail.vue create mode 100644 pages/inventoryMove/coms/comInventoryDetailCard.vue create mode 100644 pages/inventoryMove/coms/comInventoryJobCard.vue create mode 100644 pages/inventoryMove/coms/comMove.vue create mode 100644 pages/inventoryMove/coms/comMoveJob.vue create mode 100644 pages/inventoryMove/coms/comMoveRecord.vue create mode 100644 pages/inventoryMove/coms/comMoveRecordCard.vue create mode 100644 pages/inventoryMove/coms/comMovebalance.vue create mode 100644 pages/inventoryMove/coms/detailInfoPopup.vue create mode 100644 pages/inventoryMove/coms/jobInfoPopup.vue create mode 100644 pages/inventoryMove/coms/jobListPopup.vue create mode 100644 pages/inventoryMove/job/holdToOkMoveJob.vue create mode 100644 pages/inventoryMove/job/holdToScrapMoveJob.vue create mode 100644 pages/inventoryMove/job/inventoryMoveDetail.vue create mode 100644 pages/inventoryMove/job/inventoryMoveJob.vue create mode 100644 pages/inventoryMove/job/moveJob.vue create mode 100644 pages/inventoryMove/job/okToHoldMoveJob.vue create mode 100644 pages/inventoryMove/job/okToScrapMoveJob.vue create mode 100644 pages/inventoryMove/job/scrapToHoldMoveJob.vue create mode 100644 pages/inventoryMove/record/holdToOkRecord.vue create mode 100644 pages/inventoryMove/record/holdToScrapRecord.vue create mode 100644 pages/inventoryMove/record/moveFreeRecord.vue create mode 100644 pages/inventoryMove/record/okToHoldRecord.vue create mode 100644 pages/inventoryMove/record/okToScrapRecord.vue create mode 100644 pages/inventoryMove/record/scrapToHoldRecord.vue create mode 100644 pages/issue-按批次推荐/coms/comIssueDetailCard.vue create mode 100644 pages/issue-按批次推荐/coms/comIssueJobCard.vue create mode 100644 pages/issue-按批次推荐/coms/comIssueRecommend.vue create mode 100644 pages/issue-按批次推荐/coms/comScanIssueList.vue create mode 100644 pages/issue-按批次推荐/coms/comScanIssuePack.vue create mode 100644 pages/issue-按批次推荐/job/issueDetail.vue create mode 100644 pages/issue-按批次推荐/job/issueJob.vue create mode 100644 pages/issue/coms/comIssueDetailCard.vue create mode 100644 pages/issue/coms/comIssueJobCard.vue create mode 100644 pages/issue/coms/comIssueRecommend.vue create mode 100644 pages/issue/coms/comIssueRequestCard.vue create mode 100644 pages/issue/coms/comIssueRequestCreator.vue create mode 100644 pages/issue/coms/comIssueRequestDetailCard.vue create mode 100644 pages/issue/coms/comIssueRequestInfo.vue create mode 100644 pages/issue/coms/comIssueRequestPopup.vue create mode 100644 pages/issue/coms/comScanIssueList.vue create mode 100644 pages/issue/coms/comScanIssuePack.vue create mode 100644 pages/issue/coms/detailInfoPopup.vue create mode 100644 pages/issue/coms/jobInfoPopup.vue create mode 100644 pages/issue/coms/jobListPopup.vue create mode 100644 pages/issue/coms/requestDetailInfoPopup.vue create mode 100644 pages/issue/coms/requestInfoPopup.vue create mode 100644 pages/issue/job/issueDetail.vue create mode 100644 pages/issue/job/issueJob.vue create mode 100644 pages/issue/job/issueReceiptJob.vue create mode 100644 pages/issue/js/issue.js create mode 100644 pages/issue/record/issueRecord.vue create mode 100644 pages/issue/request/issueRequest.vue create mode 100644 pages/issue/request/issueRequestCreate.vue create mode 100644 pages/issue/request/issueRequestDetail.vue create mode 100644 pages/login/index.vue create mode 100644 pages/message/details.vue create mode 100644 pages/message/index.vue create mode 100644 pages/package/coms/comOverRecord.vue create mode 100644 pages/package/coms/comPackageRecord.vue create mode 100644 pages/package/record/mergePackageRecord.vue create mode 100644 pages/package/record/overPackageRecord.vue create mode 100644 pages/package/record/splitPackageRecord.vue create mode 100644 pages/productDismantle/coms/comProductDetailCard.vue create mode 100644 pages/productDismantle/coms/comProductJobCard.vue create mode 100644 pages/productDismantle/coms/comProductRecord.vue create mode 100644 pages/productDismantle/coms/comScanProductList.vue create mode 100644 pages/productDismantle/coms/detailInfoPopup.vue create mode 100644 pages/productDismantle/coms/jobInfoPopup.vue create mode 100644 pages/productDismantle/coms/jobListPopup.vue create mode 100644 pages/productDismantle/coms/requestDetailInfoPopup.vue create mode 100644 pages/productDismantle/coms/requestInfoPopup.vue create mode 100644 pages/productDismantle/job/productDismantleDetail.vue create mode 100644 pages/productDismantle/job/productDismantleJob.vue create mode 100644 pages/productDismantle/record/productDismantleRecord.vue create mode 100644 pages/productPutaway/coms/comProductDetailCard.vue create mode 100644 pages/productPutaway/coms/comProductJobCard.vue create mode 100644 pages/productPutaway/coms/comPutawayRequestCard.vue create mode 100644 pages/productPutaway/coms/comScanProductList.vue create mode 100644 pages/productPutaway/coms/detailInfoPopup.vue create mode 100644 pages/productPutaway/coms/jobInfoPopup.vue create mode 100644 pages/productPutaway/coms/jobListPopup.vue create mode 100644 pages/productPutaway/coms/requestDetailInfoPopup.vue create mode 100644 pages/productPutaway/coms/requestInfoPopup.vue create mode 100644 pages/productPutaway/job/productPutawayDetail.vue create mode 100644 pages/productPutaway/job/productPutawayJob.vue create mode 100644 pages/productPutaway/record/productPutawayRecord.vue create mode 100644 pages/productPutaway/request/putawayRequest.vue create mode 100644 pages/productPutaway/request/putawayRequestCreate.vue create mode 100644 pages/productPutaway/request/putawayRequestDetail.vue create mode 100644 pages/productReceipt/coms/comProductDetailCard.vue create mode 100644 pages/productReceipt/coms/comProductJobCard.vue create mode 100644 pages/productReceipt/coms/comProductRecord.vue create mode 100644 pages/productReceipt/coms/detailInfoPopup.vue create mode 100644 pages/productReceipt/coms/jobInfoPopup.vue create mode 100644 pages/productReceipt/coms/jobListPopup.vue create mode 100644 pages/productReceipt/coms/productDetailInfoPopup.vue create mode 100644 pages/productReceipt/job/productReceiptDetail.vue create mode 100644 pages/productReceipt/job/productReceiptJob.vue create mode 100644 pages/productReceipt/record/productReceiptRecord.vue create mode 100644 pages/productionReceipt/coms/comProductionDetailCard.vue create mode 100644 pages/productionReceipt/coms/comProductionJobCard.vue create mode 100644 pages/productionReceipt/coms/comProductionRecord.vue create mode 100644 pages/productionReceipt/coms/detailInfoPopup.vue create mode 100644 pages/productionReceipt/coms/jobInfoPopup.vue create mode 100644 pages/productionReceipt/coms/jobListPopup.vue create mode 100644 pages/productionReceipt/job/productionReceiptDetail.vue create mode 100644 pages/productionReceipt/job/productionReceiptJob.vue create mode 100644 pages/productionReceipt/record/productionReceiptRecord.vue create mode 100644 pages/productionReturn/coms/comReturn.vue create mode 100644 pages/productionReturn/coms/comReturnCommonRequest.vue create mode 100644 pages/productionReturn/coms/comReturnDetailCard.vue create mode 100644 pages/productionReturn/coms/comReturnJobCard.vue create mode 100644 pages/productionReturn/coms/comReturnRecord.vue create mode 100644 pages/productionReturn/coms/comReturnRecordTitle.vue create mode 100644 pages/productionReturn/coms/comReturnRequestCard.vue create mode 100644 pages/productionReturn/coms/comReturnRequestCreator.vue create mode 100644 pages/productionReturn/coms/comReturnRequestInfo.vue create mode 100644 pages/productionReturn/coms/comReturnRequestPopup.vue create mode 100644 pages/productionReturn/coms/comScanReturnPack.vue create mode 100644 pages/productionReturn/coms/detailInfoPopup.vue create mode 100644 pages/productionReturn/coms/jobInfoPopup.vue create mode 100644 pages/productionReturn/coms/jobListPopup.vue create mode 100644 pages/productionReturn/coms/requestDetailInfoPopup.vue create mode 100644 pages/productionReturn/coms/requestInfoPopup.vue create mode 100644 pages/productionReturn/coms/returnDetailInfoPopup.vue create mode 100644 pages/productionReturn/job/returnDetail.vue create mode 100644 pages/productionReturn/job/returnJob.vue create mode 100644 pages/productionReturn/record/returnToHold.vue create mode 100644 pages/productionReturn/record/returnToStore.vue create mode 100644 pages/productionReturn/request/requestDetail.vue create mode 100644 pages/productionReturn/request/returnRequestCreate.vue create mode 100644 pages/productionReturn/request/returnToHoldRequest.vue create mode 100644 pages/productionReturn/request/returnToStoreRequest.vue create mode 100644 pages/purchaseReceipt/coms/comReceiptDetailCard.vue create mode 100644 pages/purchaseReceipt/coms/comReceiptJobCard.vue create mode 100644 pages/purchaseReceipt/coms/receiptDetailInfoPopup.vue create mode 100644 pages/purchaseReceipt/coms/receiptInfoPopup.vue create mode 100644 pages/purchaseReceipt/coms/receiptJobListPopup.vue create mode 100644 pages/purchaseReceipt/job/receiptDetail.vue create mode 100644 pages/purchaseReceipt/job/receiptJob.vue create mode 100644 pages/purchaseReturn/coms/comReturnJobCard.vue create mode 100644 pages/purchaseReturn/coms/comReturnRequestCard.vue create mode 100644 pages/purchaseReturn/coms/requestDetailInfoPopup.vue create mode 100644 pages/purchaseReturn/coms/requestInfoPopup.vue create mode 100644 pages/purchaseReturn/coms/returnDetailInfoPopup.vue create mode 100644 pages/purchaseReturn/coms/returnInfoPopup.vue create mode 100644 pages/purchaseReturn/coms/returnJobListPopup.vue create mode 100644 pages/purchaseReturn/job/returnDetail.vue create mode 100644 pages/purchaseReturn/job/returnJob.vue create mode 100644 pages/purchaseReturn/record/returnRecord.vue create mode 100644 pages/purchaseReturn/request/returnRequest.vue create mode 100644 pages/purchaseReturn/request/returnRequestCreate.vue create mode 100644 pages/purchaseReturn/request/returnRequestDetail.vue create mode 100644 pages/putaway/coms/comPutawayJobCard.vue create mode 100644 pages/putaway/coms/comPutawayRequestCard.vue create mode 100644 pages/putaway/coms/putawayDetailInfoPopup.vue create mode 100644 pages/putaway/coms/putawayInfoPopup.vue create mode 100644 pages/putaway/coms/putawayJobListPopup.vue create mode 100644 pages/putaway/coms/requestDetailInfoPopup.vue create mode 100644 pages/putaway/coms/requestInfoPopup.vue create mode 100644 pages/putaway/job/putawayDetail.vue create mode 100644 pages/putaway/job/putawayJob.vue create mode 100644 pages/putaway/record/putawayRecord.vue create mode 100644 pages/putaway/request/putawayRequest.vue create mode 100644 pages/putaway/request/putawayRequestCreate.vue create mode 100644 pages/putaway/request/putawayRequestDetail.vue create mode 100644 pages/query/coms/comItemBalance.vue create mode 100644 pages/query/coms/comItemDetailCard.vue create mode 100644 pages/query/coms/comLocationDetailCard.vue create mode 100644 pages/query/container.vue create mode 100644 pages/query/item.vue create mode 100644 pages/query/item_copy.vue create mode 100644 pages/query/location.vue create mode 100644 pages/query/location_copy.vue create mode 100644 pages/repleinsh/coms/comRepleinshJobCard.vue create mode 100644 pages/repleinsh/coms/comRepleinshRequestCard.vue create mode 100644 pages/repleinsh/coms/comRepleinshRequestPopup.vue create mode 100644 pages/repleinsh/coms/comRepleishDetailCard.vue create mode 100644 pages/repleinsh/coms/comScanReplishPack.vue create mode 100644 pages/repleinsh/coms/repleinshDetailInfoPopup.vue create mode 100644 pages/repleinsh/coms/repleinshInfoPopup.vue create mode 100644 pages/repleinsh/coms/repleinshJobListPopup.vue create mode 100644 pages/repleinsh/coms/requestDetailInfoPopup.vue create mode 100644 pages/repleinsh/coms/requestInfoPopup.vue create mode 100644 pages/repleinsh/job/repleinshDetail.vue create mode 100644 pages/repleinsh/job/repleinshJob.vue create mode 100644 pages/repleinsh/record/repleinshRecord.vue create mode 100644 pages/repleinsh/request/repleinshRequest.vue create mode 100644 pages/repleinsh/request/repleinshRequestDetail.vue create mode 100644 pages/scrap/coms/comScrapDetailCard.vue create mode 100644 pages/scrap/coms/comScrapJobCard.vue create mode 100644 pages/scrap/coms/comScrapRequestCard.vue create mode 100644 pages/scrap/coms/requestDetailInfoPopup.vue create mode 100644 pages/scrap/coms/requestInfoPopup.vue create mode 100644 pages/scrap/coms/scrapDetailInfoPopup.vue create mode 100644 pages/scrap/coms/scrapInfoPopup.vue create mode 100644 pages/scrap/coms/scrapJobListPopup.vue create mode 100644 pages/scrap/job/scrapJob.vue create mode 100644 pages/scrap/job/scrapJobDetail.vue create mode 100644 pages/scrap/record/scrapRecord.vue create mode 100644 pages/scrap/request/scrapRequestCreate.vue create mode 100644 pages/scrap/request/scrapRequestDetail.vue create mode 100644 pages/scrap/request/scrapRrequest.vue create mode 100644 pages/setter/index.vue create mode 100644 pages/setter/passwordpage.vue create mode 100644 pages/setter/setterDetail.vue create mode 100644 pages/supplierDeliver/coms/comRecordCard.vue create mode 100644 pages/supplierDeliver/coms/comRecordDetailCard.vue create mode 100644 pages/supplierDeliver/coms/recordDetailInfoPopup.vue create mode 100644 pages/supplierDeliver/coms/recordInfoPopup.vue create mode 100644 pages/supplierDeliver/coms/recordListDetailPop.vue create mode 100644 pages/supplierDeliver/coms/recordListPopup.vue create mode 100644 pages/supplierDeliver/coms/recordtDetailInfoPopup.vue create mode 100644 pages/supplierDeliver/record/supplierDeliverRecord.vue create mode 100644 pages/supplierDeliver/record/supplierDeliverRecordDetail.vue create mode 100644 pages/transfer/coms/comReceiptDetailCard.vue create mode 100644 pages/transfer/coms/comTransferJobCard.vue create mode 100644 pages/transfer/coms/comTransferRecord.vue create mode 100644 pages/transfer/coms/detailInfoPopup.vue create mode 100644 pages/transfer/coms/jobInfoPopup.vue create mode 100644 pages/transfer/coms/jobListPopup.vue create mode 100644 pages/transfer/job/issueDetail.vue create mode 100644 pages/transfer/job/issueJob.vue create mode 100644 pages/transfer/job/receiptDetail.vue create mode 100644 pages/transfer/job/receiptJob.vue create mode 100644 pages/transfer/job/transferDetail.vue create mode 100644 pages/transfer/job/transferJob.vue create mode 100644 pages/transfer/record/deliverRecord.vue create mode 100644 pages/transfer/record/receiptRecord.vue create mode 100644 pages/unPlanned/coms/comBalance.vue create mode 100644 pages/unPlanned/coms/comIssueDetailCard.vue create mode 100644 pages/unPlanned/coms/comIssueJobCard.vue create mode 100644 pages/unPlanned/coms/comIssueRequestCard.vue create mode 100644 pages/unPlanned/coms/comReceiptDetailCard.vue create mode 100644 pages/unPlanned/coms/comReceiptJobCard.vue create mode 100644 pages/unPlanned/coms/comReceiptRecord.vue create mode 100644 pages/unPlanned/coms/comReceiptRequestCard.vue create mode 100644 pages/unPlanned/coms/comReceiptRequestPopup.vue create mode 100644 pages/unPlanned/coms/detailInfoPopup.vue create mode 100644 pages/unPlanned/coms/jobInfoPopup.vue create mode 100644 pages/unPlanned/coms/jobListPopup.vue create mode 100644 pages/unPlanned/coms/requestIssDetailInfoPopup.vue create mode 100644 pages/unPlanned/coms/requestIssInfoPopup.vue create mode 100644 pages/unPlanned/coms/requestRecDetailInfoPopup.vue create mode 100644 pages/unPlanned/coms/requestRecInfoPopup.vue create mode 100644 pages/unPlanned/job/issueJob.vue create mode 100644 pages/unPlanned/job/issueJobDetail.vue create mode 100644 pages/unPlanned/job/receiptJob.vue create mode 100644 pages/unPlanned/job/receiptJobDetail.vue create mode 100644 pages/unPlanned/record/issueRecord.vue create mode 100644 pages/unPlanned/record/receiptRecord.vue create mode 100644 pages/unPlanned/request/issueRequest.vue create mode 100644 pages/unPlanned/request/issueRequestCreate.vue create mode 100644 pages/unPlanned/request/issueRequestDetail.vue create mode 100644 pages/unPlanned/request/receiptRequest.vue create mode 100644 pages/unPlanned/request/receiptRequestCreate.vue create mode 100644 pages/unPlanned/request/receiptRequestDetail.vue 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 plugins/time.js create mode 100644 static/avatar.png create mode 100644 static/customicons.ttf create mode 100644 static/icon/black_count.svg create mode 100644 static/icon/checkmark-circle.svg create mode 100644 static/icon/close-circle.svg create mode 100644 static/icon/close-circle2.svg create mode 100644 static/icon/close.svg create mode 100644 static/icon/data-checkbox.png create mode 100644 static/icon/error-circle.svg create mode 100644 static/icon/icon_customer.svg create mode 100644 static/icon/icon_date.svg create mode 100644 static/icon/icon_eye-fill.svg create mode 100644 static/icon/icon_eye-off-outline.svg create mode 100644 static/icon/icon_filter.svg create mode 100644 static/icon/iconfont.ttf create mode 100644 static/icon/icons_camera.svg create mode 100644 static/icon/icons_close-circle.svg create mode 100644 static/icon/icons_close.svg create mode 100644 static/icon/icons_edit.svg create mode 100644 static/icon/icons_scan_close.svg create mode 100644 static/icon/light_count.svg create mode 100644 static/icon/plus.svg create mode 100644 static/icon/question-circle.svg create mode 100644 static/icon/screen.png create mode 100644 static/icon/search.svg create mode 100644 static/icon/warning.svg create mode 100644 static/icon_personal_name.png create mode 100644 static/icon_personal_password.png create mode 100644 static/icon_personal_setting.png create mode 100644 static/icons_ui/default_blank.png create mode 100644 static/icons_ui/default_data.png create mode 100644 static/icons_ui/default_notpassed.png create mode 100644 static/icons_ui/icon_add.svg create mode 100644 static/icons_ui/icon_apply_num.svg create mode 100644 static/icons_ui/icon_asn.svg create mode 100644 static/icons_ui/icon_avn.svg create mode 100644 static/icons_ui/icon_buy_num.svg create mode 100644 static/icons_ui/icon_camera_black.svg create mode 100644 static/icons_ui/icon_camera_white.svg create mode 100644 static/icons_ui/icon_close.svg create mode 100644 static/icons_ui/icon_customer.svg create mode 100644 static/icons_ui/icon_date.svg create mode 100644 static/icons_ui/icon_down.svg create mode 100644 static/icons_ui/icon_erp.svg create mode 100644 static/icons_ui/icon_form.svg create mode 100644 static/icons_ui/icon_kw.svg create mode 100644 static/icons_ui/icon_kw_blue.svg create mode 100644 static/icons_ui/icon_kw_use.svg create mode 100644 static/icons_ui/icon_login_password.svg create mode 100644 static/icons_ui/icon_login_user.svg create mode 100644 static/icons_ui/icon_notpass.svg create mode 100644 static/icons_ui/icon_num.svg create mode 100644 static/icons_ui/icon_passed.svg create mode 100644 static/icons_ui/icon_pc.svg create mode 100644 static/icons_ui/icon_ponumber.svg create mode 100644 static/icons_ui/icon_prod_line.svg create mode 100644 static/icons_ui/icon_qiju_end.svg create mode 100644 static/icons_ui/icon_qiju_num.svg create mode 100644 static/icons_ui/icon_qiju_start.svg create mode 100644 static/icons_ui/icon_return_num.svg create mode 100644 static/icons_ui/icon_scan_white.svg create mode 100644 static/icons_ui/icon_send_request.svg create mode 100644 static/icons_ui/icon_senditem.svg create mode 100644 static/icons_ui/icon_supplier.svg create mode 100644 static/icons_ui/icon_take_photo.svg create mode 100644 static/icons_ui/icon_tasknum.svg create mode 100644 static/icons_ui/icon_tenant.svg create mode 100644 static/icons_ui/icon_time.svg create mode 100644 static/icons_ui/icon_tm.svg create mode 100644 static/icons_ui/icon_xm.svg create mode 100644 static/icons_ui/icon_xm_blue.svg create mode 100644 static/icons_ui/icons_common_recceipt.svg create mode 100644 static/icons_ui/icons_common_sjadd.svg create mode 100644 static/icons_ui/label_scx.svg create mode 100644 static/icons_ui/login_bg.png create mode 100644 static/icons_ui/popup_bot_bg.png create mode 100644 static/images/banner/banner01.jpg create mode 100644 static/images/banner/banner02.jpg create mode 100644 static/images/banner/banner03.jpg create mode 100644 static/images/banner/icon1.png create mode 100644 static/images/banner/icon2.png create mode 100644 static/images/banner/icon3.png create mode 100644 static/images/banner/icon4.png create mode 100644 static/images/banner/icon5.png create mode 100644 static/images/banner/icon6.png create mode 100644 static/images/banner/icon7.png create mode 100644 static/images/banner/login_banner.svg create mode 100644 static/images/banner/logo-banner.png create mode 100644 static/images/banner/u2335.svg create mode 100644 static/images/banner/u2450.svg create mode 100644 static/images/banner/u253_selected.svg create mode 100644 static/images/bg.jpg create mode 100644 static/images/default.jpg create mode 100644 static/images/icon1.png create mode 100644 static/images/icon1.svg create mode 100644 static/images/icon2.png create mode 100644 static/images/icon2.svg create mode 100644 static/images/icon3.png create mode 100644 static/images/icon3.svg create mode 100644 static/images/icon4.svg create mode 100644 static/images/icon5.svg create mode 100644 static/images/icon6.png create mode 100644 static/images/icon7.png create mode 100644 static/images/icon8.png create mode 100644 static/images/mobile_bg.png create mode 100644 static/images/photo.png create mode 100644 static/images/profile.jpg create mode 100644 static/images/tabbar/tab_act_icon1.png create mode 100644 static/images/tabbar/tab_act_icon2.png create mode 100644 static/images/tabbar/tab_act_icon3.png create mode 100644 static/images/tabbar/tab_act_icon4.png create mode 100644 static/images/tabbar/tab_act_icon5.png create mode 100644 static/images/tabbar/tab_icon1.png create mode 100644 static/images/tabbar/tab_icon2.png create mode 100644 static/images/tabbar/tab_icon3.png create mode 100644 static/images/tabbar/tab_icon4.png create mode 100644 static/images/tabbar/tab_icon5.png create mode 100644 static/login.png create mode 100644 static/logo.png create mode 100644 static/menus/bind_pallet.svg create mode 100644 static/menus/count.svg create mode 100644 static/menus/customer_return.svg create mode 100644 static/menus/deliver.svg create mode 100644 static/menus/hold_to_ok.svg create mode 100644 static/menus/hold_to_scrap.svg create mode 100644 static/menus/inspect.svg create mode 100644 static/menus/inventory_move.svg create mode 100644 static/menus/issue.svg create mode 100644 static/menus/menu_search_lj.svg create mode 100644 static/menus/merge_package.svg create mode 100644 static/menus/ok_to_hold.svg create mode 100644 static/menus/ok_to_scrap.svg create mode 100644 static/menus/over_package.svg create mode 100644 static/menus/product_dismantle.svg create mode 100644 static/menus/product_putaway.svg create mode 100644 static/menus/product_receipt.svg create mode 100644 static/menus/production_receipt.svg create mode 100644 static/menus/production_return.svg create mode 100644 static/menus/purchase_receipt.svg create mode 100644 static/menus/purchase_return.svg create mode 100644 static/menus/putaway.svg create mode 100644 static/menus/query_container.svg create mode 100644 static/menus/query_inspect.svg create mode 100644 static/menus/query_issue_request.svg create mode 100644 static/menus/query_item.svg create mode 100644 static/menus/query_location.svg create mode 100644 static/menus/query_supplier_deliver.svg create mode 100644 static/menus/repleinsh.svg create mode 100644 static/menus/return_to_hold.svg create mode 100644 static/menus/return_to_store.svg create mode 100644 static/menus/scrap.svg create mode 100644 static/menus/scrap_to_hold.svg create mode 100644 static/menus/split_package.svg create mode 100644 static/menus/transfer_deliver.svg create mode 100644 static/menus/transfer_receipt.svg create mode 100644 static/menus/unbind_pallet.svg create mode 100644 static/menus/unplanned_issue.svg create mode 100644 static/menus/unplanned_receipt.svg create mode 100644 static/no_more.png create mode 100644 static/refresher_loading.gif create mode 100644 static/search.svg create mode 100644 static/uni.ttf create mode 100644 store/index.ts create mode 100644 store/modules/countStore.ts create mode 100644 styles/vars/_base.less create mode 100644 styles/vars/_base.scss create mode 100644 uni.scss 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.js 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/components/uni-fab/uni-fab.vue.bak 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/uni.ttf 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-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-section/changelog.md create mode 100644 uni_modules/uni-section/components/uni-section/uni-section.vue create mode 100644 uni_modules/uni-section/package.json create mode 100644 uni_modules/uni-section/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/index.wxs 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/vk-uview-ui/changelog.md create mode 100644 uni_modules/vk-uview-ui/components/u-action-sheet/u-action-sheet.vue create mode 100644 uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.vue create mode 100644 uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue create mode 100644 uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js create mode 100644 uni_modules/vk-uview-ui/components/u-avatar/u-avatar.vue create mode 100644 uni_modules/vk-uview-ui/components/u-back-top/u-back-top.vue create mode 100644 uni_modules/vk-uview-ui/components/u-badge/u-badge.vue create mode 100644 uni_modules/vk-uview-ui/components/u-button/u-button.vue create mode 100644 uni_modules/vk-uview-ui/components/u-calendar/u-calendar.vue create mode 100644 uni_modules/vk-uview-ui/components/u-car-keyboard/u-car-keyboard.vue create mode 100644 uni_modules/vk-uview-ui/components/u-card/u-card.vue create mode 100644 uni_modules/vk-uview-ui/components/u-cell-group/u-cell-group.vue create mode 100644 uni_modules/vk-uview-ui/components/u-cell-item/u-cell-item.vue create mode 100644 uni_modules/vk-uview-ui/components/u-checkbox-group/u-checkbox-group.vue create mode 100644 uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue create mode 100644 uni_modules/vk-uview-ui/components/u-circle-progress/u-circle-progress.vue create mode 100644 uni_modules/vk-uview-ui/components/u-col/u-col.vue create mode 100644 uni_modules/vk-uview-ui/components/u-collapse-item/u-collapse-item.vue create mode 100644 uni_modules/vk-uview-ui/components/u-collapse/u-collapse.vue create mode 100644 uni_modules/vk-uview-ui/components/u-column-notice/u-column-notice.vue create mode 100644 uni_modules/vk-uview-ui/components/u-count-down/u-count-down.vue create mode 100644 uni_modules/vk-uview-ui/components/u-count-down/utils.js create mode 100644 uni_modules/vk-uview-ui/components/u-count-to/u-count-to.vue create mode 100644 uni_modules/vk-uview-ui/components/u-divider/u-divider.vue create mode 100644 uni_modules/vk-uview-ui/components/u-dropdown-item/u-dropdown-item.vue create mode 100644 uni_modules/vk-uview-ui/components/u-dropdown/u-dropdown.vue create mode 100644 uni_modules/vk-uview-ui/components/u-empty/u-empty.vue create mode 100644 uni_modules/vk-uview-ui/components/u-field/u-field.vue create mode 100644 uni_modules/vk-uview-ui/components/u-form-item/u-form-item.vue create mode 100644 uni_modules/vk-uview-ui/components/u-form/u-form.vue create mode 100644 uni_modules/vk-uview-ui/components/u-full-screen/u-full-screen.vue create mode 100644 uni_modules/vk-uview-ui/components/u-gap/u-gap.vue create mode 100644 uni_modules/vk-uview-ui/components/u-grid-item/u-grid-item.vue create mode 100644 uni_modules/vk-uview-ui/components/u-grid/u-grid.vue create mode 100644 uni_modules/vk-uview-ui/components/u-icon/u-icon.vue create mode 100644 uni_modules/vk-uview-ui/components/u-image/u-image.vue create mode 100644 uni_modules/vk-uview-ui/components/u-index-anchor/u-index-anchor.vue create mode 100644 uni_modules/vk-uview-ui/components/u-index-list/u-index-list.vue create mode 100644 uni_modules/vk-uview-ui/components/u-input/u-input.vue create mode 100644 uni_modules/vk-uview-ui/components/u-keyboard/u-keyboard.vue create mode 100644 uni_modules/vk-uview-ui/components/u-lazy-load/u-lazy-load.vue create mode 100644 uni_modules/vk-uview-ui/components/u-line-progress/u-line-progress.vue create mode 100644 uni_modules/vk-uview-ui/components/u-line/u-line.vue create mode 100644 uni_modules/vk-uview-ui/components/u-link/u-link.vue create mode 100644 uni_modules/vk-uview-ui/components/u-loading-page/u-loading-page.vue create mode 100644 uni_modules/vk-uview-ui/components/u-loading/u-loading.vue create mode 100644 uni_modules/vk-uview-ui/components/u-loadmore/u-loadmore.vue create mode 100644 uni_modules/vk-uview-ui/components/u-mask/u-mask.vue create mode 100644 uni_modules/vk-uview-ui/components/u-message-input/u-message-input.vue create mode 100644 uni_modules/vk-uview-ui/components/u-modal/u-modal.vue create mode 100644 uni_modules/vk-uview-ui/components/u-navbar/u-navbar.vue create mode 100644 uni_modules/vk-uview-ui/components/u-no-network/u-no-network.vue create mode 100644 uni_modules/vk-uview-ui/components/u-notice-bar/u-notice-bar.vue create mode 100644 uni_modules/vk-uview-ui/components/u-number-box/u-number-box.vue create mode 100644 uni_modules/vk-uview-ui/components/u-number-keyboard/u-number-keyboard.vue create mode 100644 uni_modules/vk-uview-ui/components/u-parse/libs/CssHandler.js create mode 100644 uni_modules/vk-uview-ui/components/u-parse/libs/MpHtmlParser.js create mode 100644 uni_modules/vk-uview-ui/components/u-parse/libs/config.js create mode 100644 uni_modules/vk-uview-ui/components/u-parse/libs/trees.vue create mode 100644 uni_modules/vk-uview-ui/components/u-parse/u-parse.vue create mode 100644 uni_modules/vk-uview-ui/components/u-picker/u-picker.vue create mode 100644 uni_modules/vk-uview-ui/components/u-popup/u-popup.vue create mode 100644 uni_modules/vk-uview-ui/components/u-radio-group/u-radio-group.vue create mode 100644 uni_modules/vk-uview-ui/components/u-radio/u-radio.vue create mode 100644 uni_modules/vk-uview-ui/components/u-rate/u-rate.vue create mode 100644 uni_modules/vk-uview-ui/components/u-read-more/u-read-more.vue create mode 100644 uni_modules/vk-uview-ui/components/u-row-notice/u-row-notice.vue create mode 100644 uni_modules/vk-uview-ui/components/u-row/u-row.vue create mode 100644 uni_modules/vk-uview-ui/components/u-search/u-search.vue create mode 100644 uni_modules/vk-uview-ui/components/u-section/u-section.vue create mode 100644 uni_modules/vk-uview-ui/components/u-select/u-select.vue create mode 100644 uni_modules/vk-uview-ui/components/u-skeleton/u-skeleton.vue create mode 100644 uni_modules/vk-uview-ui/components/u-slider/u-slider.vue create mode 100644 uni_modules/vk-uview-ui/components/u-steps/u-steps.vue create mode 100644 uni_modules/vk-uview-ui/components/u-sticky/u-sticky.vue create mode 100644 uni_modules/vk-uview-ui/components/u-subsection/u-subsection.vue create mode 100644 uni_modules/vk-uview-ui/components/u-swipe-action/u-swipe-action.vue create mode 100644 uni_modules/vk-uview-ui/components/u-swiper/u-swiper.vue create mode 100644 uni_modules/vk-uview-ui/components/u-switch/u-switch.vue create mode 100644 uni_modules/vk-uview-ui/components/u-tabbar/u-tabbar.vue create mode 100644 uni_modules/vk-uview-ui/components/u-table/u-table.vue create mode 100644 uni_modules/vk-uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue create mode 100644 uni_modules/vk-uview-ui/components/u-tabs/u-tabs.vue create mode 100644 uni_modules/vk-uview-ui/components/u-tag/u-tag.vue create mode 100644 uni_modules/vk-uview-ui/components/u-td/u-td.vue create mode 100644 uni_modules/vk-uview-ui/components/u-th/u-th.vue create mode 100644 uni_modules/vk-uview-ui/components/u-time-line-item/u-time-line-item.vue create mode 100644 uni_modules/vk-uview-ui/components/u-time-line/u-time-line.vue create mode 100644 uni_modules/vk-uview-ui/components/u-toast/u-toast.vue create mode 100644 uni_modules/vk-uview-ui/components/u-top-tips/u-top-tips.vue create mode 100644 uni_modules/vk-uview-ui/components/u-tr/u-tr.vue create mode 100644 uni_modules/vk-uview-ui/components/u-upload/u-upload.vue create mode 100644 uni_modules/vk-uview-ui/components/u-verification-code/u-verification-code.vue create mode 100644 uni_modules/vk-uview-ui/components/u-waterfall/u-waterfall.vue create mode 100644 uni_modules/vk-uview-ui/components/vk-uview-ui/vk-uview-ui.vue create mode 100644 uni_modules/vk-uview-ui/iconfont.css create mode 100644 uni_modules/vk-uview-ui/index.js create mode 100644 uni_modules/vk-uview-ui/index.scss create mode 100644 uni_modules/vk-uview-ui/libs/address/areas.json create mode 100644 uni_modules/vk-uview-ui/libs/address/citys.json create mode 100644 uni_modules/vk-uview-ui/libs/address/provinces.json create mode 100644 uni_modules/vk-uview-ui/libs/config/config.js create mode 100644 uni_modules/vk-uview-ui/libs/config/zIndex.js create mode 100644 uni_modules/vk-uview-ui/libs/css/color.scss create mode 100644 uni_modules/vk-uview-ui/libs/css/common.scss create mode 100644 uni_modules/vk-uview-ui/libs/css/style.components.scss create mode 100644 uni_modules/vk-uview-ui/libs/css/style.h5.scss create mode 100644 uni_modules/vk-uview-ui/libs/css/style.mp.scss create mode 100644 uni_modules/vk-uview-ui/libs/css/style.nvue.scss create mode 100644 uni_modules/vk-uview-ui/libs/css/style.vue.scss create mode 100644 uni_modules/vk-uview-ui/libs/function/$parent.js create mode 100644 uni_modules/vk-uview-ui/libs/function/addUnit.js create mode 100644 uni_modules/vk-uview-ui/libs/function/bem.js create mode 100644 uni_modules/vk-uview-ui/libs/function/color.js create mode 100644 uni_modules/vk-uview-ui/libs/function/colorGradient.js create mode 100644 uni_modules/vk-uview-ui/libs/function/debounce.js create mode 100644 uni_modules/vk-uview-ui/libs/function/deepClone.js create mode 100644 uni_modules/vk-uview-ui/libs/function/deepMerge.js create mode 100644 uni_modules/vk-uview-ui/libs/function/getParent.js create mode 100644 uni_modules/vk-uview-ui/libs/function/guid.js create mode 100644 uni_modules/vk-uview-ui/libs/function/md5.js create mode 100644 uni_modules/vk-uview-ui/libs/function/queryParams.js create mode 100644 uni_modules/vk-uview-ui/libs/function/random.js create mode 100644 uni_modules/vk-uview-ui/libs/function/randomArray.js create mode 100644 uni_modules/vk-uview-ui/libs/function/route.js create mode 100644 uni_modules/vk-uview-ui/libs/function/sys.js create mode 100644 uni_modules/vk-uview-ui/libs/function/test.js create mode 100644 uni_modules/vk-uview-ui/libs/function/throttle.js create mode 100644 uni_modules/vk-uview-ui/libs/function/timeFormat.js create mode 100644 uni_modules/vk-uview-ui/libs/function/timeFrom.js create mode 100644 uni_modules/vk-uview-ui/libs/function/toast.js create mode 100644 uni_modules/vk-uview-ui/libs/function/trim.js create mode 100644 uni_modules/vk-uview-ui/libs/function/type2icon.js create mode 100644 uni_modules/vk-uview-ui/libs/mixin/mixin.js create mode 100644 uni_modules/vk-uview-ui/libs/mixin/mpShare.js create mode 100644 uni_modules/vk-uview-ui/libs/request/index.js create mode 100644 uni_modules/vk-uview-ui/libs/store/index.js create mode 100644 uni_modules/vk-uview-ui/libs/util/async-validator.js create mode 100644 uni_modules/vk-uview-ui/libs/util/emitter.js create mode 100644 uni_modules/vk-uview-ui/package.json create mode 100644 uni_modules/vk-uview-ui/readme.md create mode 100644 uni_modules/vk-uview-ui/theme.scss create mode 100644 uni_modules/z-paging/changelog.md create mode 100644 uni_modules/z-paging/components/z-paging-cell/z-paging-cell.vue create mode 100644 uni_modules/z-paging/components/z-paging-empty-view/z-paging-empty-view.vue create mode 100644 uni_modules/z-paging/components/z-paging-swiper-item/z-paging-swiper-item.vue create mode 100644 uni_modules/z-paging/components/z-paging-swiper/z-paging-swiper.vue create mode 100644 uni_modules/z-paging/components/z-paging/components/z-paging-load-more.vue create mode 100644 uni_modules/z-paging/components/z-paging/components/z-paging-refresh.vue create mode 100644 uni_modules/z-paging/components/z-paging/config/index.js create mode 100644 uni_modules/z-paging/components/z-paging/css/z-paging-main.css create mode 100644 uni_modules/z-paging/components/z-paging/css/z-paging-static.css create mode 100644 uni_modules/z-paging/components/z-paging/i18n/en.json create mode 100644 uni_modules/z-paging/components/z-paging/i18n/index.js create mode 100644 uni_modules/z-paging/components/z-paging/i18n/zh-Hans.json create mode 100644 uni_modules/z-paging/components/z-paging/i18n/zh-Hant.json create mode 100644 uni_modules/z-paging/components/z-paging/js/hooks/useZPaging.js create mode 100644 uni_modules/z-paging/components/z-paging/js/hooks/useZPagingComp.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/back-to-top.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/common-layout.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/data-handle.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/empty.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/i18n.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/load-more.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/loading.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/nvue.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/refresher.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/scroller.js create mode 100644 uni_modules/z-paging/components/z-paging/js/modules/virtual-list.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-config.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-constant.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-enum.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-interceptor.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-main.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-mixin.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-static.js create mode 100644 uni_modules/z-paging/components/z-paging/js/z-paging-utils.js create mode 100644 uni_modules/z-paging/components/z-paging/wxs/z-paging-renderjs.js create mode 100644 uni_modules/z-paging/components/z-paging/wxs/z-paging-wxs.wxs create mode 100644 uni_modules/z-paging/components/z-paging/z-paging.vue create mode 100644 uni_modules/z-paging/package.json create mode 100644 uni_modules/z-paging/readme.md create mode 100644 uni_modules/z-tabs/changelog.md create mode 100644 uni_modules/z-tabs/components/z-tabs/config/index.js create mode 100644 uni_modules/z-tabs/components/z-tabs/z-tabs.vue create mode 100644 uni_modules/z-tabs/package.json create mode 100644 uni_modules/z-tabs/readme.md create mode 100644 utils/auth.js create mode 100644 utils/common.ts create mode 100644 utils/dateTime.ts create mode 100644 utils/http.ts create mode 100644 utils/utils.ts create mode 100644 utils/validator.ts diff --git a/App.vue b/App.vue new file mode 100644 index 0000000..01203cc --- /dev/null +++ b/App.vue @@ -0,0 +1,70 @@ + + \ No newline at end of file diff --git a/api/http.ts b/api/http.ts new file mode 100644 index 0000000..a3f62b7 --- /dev/null +++ b/api/http.ts @@ -0,0 +1,114 @@ +import axios from 'axios' + +import { getFullURL } from '@/utils/http' +import { getAccessToken, removeToken } from '@/utils/auth' + +const instance = axios.create({ + baseURL: import.meta.env.VITE_BASE_URL, + adapter(config) { + const { url, method, data, params, headers, baseURL, paramsSerializer } = + config + return new Promise((resolve, reject) => { + uni.request({ + method: method!.toUpperCase() as any, + url: getFullURL(baseURL || '', url!, params, paramsSerializer), + header: headers, + data, + dataType: 'json', + responseType: config.responseType, + success: (res : any) => { + resolve(res) + }, + fail: (error : any) => { + reject(error) + } + }) + }) + } +}) + + +/** + * 请求拦截 + */ +instance.interceptors.request.use((config) => { + const { method, params, url } = config + // 附带鉴权的token + const tenantId = 1 + const headers : any = { + token: getAccessToken(), + "tenant-id":tenantId, + 'Authorization': 'Bearer ' + getAccessToken() + } + if (uni.getStorageSync('openId')) { + headers['openId'] = uni.getStorageSync('openId') + } + // 不缓存get请求 + if (method === 'get') { + headers['Cache-Control'] = 'no-cache' + } + // delete请求参数放入body中 + if (method === 'delete') { + headers['Content-type'] = 'application/json;' + Object.assign(config, { + data: params, + params: {} + }) + } + + return { + ...config, + headers + } +}) + +/** + * 响应拦截 + */ +instance.interceptors.response.use((v) => { + const code = v.data?.code || 200 + if (code === 401) { + // alert('即将跳转登录页。。。', '登录过期') + // setTimeout(redirectHome, 1500) + removeToken() + uni.showModal({ + title: '系统提示', + content: '登录状态已过期,您可以继续留在该页面,或者重新登录', + cancelText: '关闭', + confirmText: '重新登录', + success: function (res) { + if (res.confirm) { + uni.reLaunch({ url: '/pages/login' }) + } + } + }) + return v.data + } else if (code === 500) { + uni.showToast({ + title: v.data.msg, + icon: 'none' + }) + return v.data + } else if (code !== 200) { + uni.showToast({ + title: v.data.msg, + icon: 'none' + }) + return v.data + } + + // @ts-ignore + if ((v.status || v.statusCode) === 200) { + return v.data + }else{ + + } + return Promise.reject(v) +},error=>{ + console.log(error) + uni.showToast({ + title: '网络错误', + icon: 'none' + }) +}) +export default instance \ No newline at end of file diff --git a/api/login.js b/api/login.js new file mode 100644 index 0000000..cdae309 --- /dev/null +++ b/api/login.js @@ -0,0 +1,41 @@ +import http from './http' + +// 登录方法 +export function login(username, password, captchaVerification, tenantName, rememberMe, code, uuid) { + const data = { + username, + password, + captchaVerification, + tenantName, + rememberMe, + code, + uuid, + } + return http.post('/system/auth/login', data) +} + +// 获取用户详细信息 +export function getInfo() { + return http.get('/system/user/profile/get') +} +// 获取权限 +export function getPermissionInfo() { + return http.get('/system/auth/get-permission-info') +} +// 退出方法 +export function logout() { + return http.post('/system/auth/logout') +} + + + + + + + + + + + + + diff --git a/api/request2.js b/api/request2.js new file mode 100644 index 0000000..aaf6fb8 --- /dev/null +++ b/api/request2.js @@ -0,0 +1,2330 @@ + +import http from './http' +/** + * 获取验证码 + * @param {*} + */ +export function getCaptchaImage(params) { + return http.get('/system/captcha/captchaImage',{params}) +} +/** + * 登录方法 + */ +export function login(username, password, code, uuid) { + const data = { + username, + password, + code, + uuid, + } + return http.post('/system/auth/login', data) +} + + +/** + * 退出 + */ +export function logout(data) { + return http.post('/system/auth/logout',data) +} +/** + * 获取登录用户的权限信息 + */ +export function getPermissionInfo() { + return http.get('/system/auth/get-permission-info') +} +/** + * 获取租户信息 + */ +export function getTenantInfo(name) { + const params = { + name: name, + pageNo: 1, + pageSize: 100, + } + return http.get('/system/tenant/page',params) +} + + +/** + * 获取登录用户信息 + */ +export function getUserProfile() { + return http.get('/system/user/profile/get') +} +/** + * 修改个人用户密码 + */ +export function updateUserPwd(oldPassword, newPassword) { + const data = { + oldPassword, + newPassword + } + return http.put('/system/user/profile/update-password',data) +} +/** + * 获取仓库代码 + * @param {*} + * + */ +export function getWarehouseCodeList(pageNo, pageSize) { + return http.get("/wms/warehouse/page?pageNo=" + pageNo + "&pageSize=" + pageSize) +} +//获取产品标签信息inventorylabel +export function getInventoryLabel(code) { + return http.get("/api/pda/label/inventorylabel/by-code?code=" + code) +} +/** + * 获取消息列表 + * @param {*} + * + */ +export function getMessageList(pageNo, pageSize) { + return http.get("/system/notify-message/my-page?pageNo=" + pageNo + "&pageSize=" + pageSize) +} +/** + * 标记站内信为已读 + * @param {*} + * + */ +export function setMessageUpdateRead(ids) { + return http.put("/system/notify-message/update-read?ids=" + ids) +} +/** + * 标记所有站内信为已读 + * @param {*} + * + */ +export function setAllMessageUpdateRead() { + return http.put("/system/notify-message/update-all-read") +} +/** + * 获取当前用户的未读站内信数量 + * @param {*} + * + */ +export function getMessageUnreadCount() { + return http.get("/system/notify-message/get-unread-count") +} + + +/** + * 获取配置字典 + * @param {*} + * + */ +export function getDictionaryItem(data) { + return http.post("/system/dict-type/getDictByTypes",data) +} + +/** + * 查询 客户信息 + * @param {*} 物品代码 + * + */ +export function getBasicCustomerList() { + return http.get("/wms/customer/list") +} +/** + * 根据业务代码查询业务类型 + * @param {*} Code + * + */ +export function getBusinesstypeByCode(code) { + var params = { + code: code, + pageNo: 1, + pageSize: 100 + } + return http.get("/wms/customer/list",{params}) +} +/** + * 按物料代码查询库存明细 + * @param {*} itemCode + * + */ +export function getBalanceByItemCode(params) { + return http.get("/wms/balance/page",{params}) +} +/** + * 按物品查询预计入 + * @param {*} itemCode + * + */ + +export function getExpectinByItemcode(params) { + return http.get("/wms/expectin/page",{params}) +} +/** + * 按物品查询预计出 + * @param {*} itemCode + * + */ + +export function getExpectoutByItemcode(params) { + return http.get("/wms/expectout/page",{params}) +} +/** + * 按库位查询库存汇总 + * @param {*} + * + */ +export function getBalanceByLocationcodeGroup(params) { + return http.get("/wms/balance/page",{params}) +} +/** + * 按库位查询库存明细 + * @param {*} + */ +export function getBalanceByLocationcode(params) { + return http.get("/wms/balance/page",{params}) +} +/** + * 查询器具信息接口 + * @param {*} number 器具代码 + */ +export function getContainerByNumber(number) { + var params = { + number: number, + pageNo: 1, + pageSize: 100 + } + return http.get("/wms/container-main/page",{params}) +} + +/** + * 查询器具信息接口 + * @param {*} number 器具代码 + */ +export function getContainerDetailByNumber(number) { + return http.get("/wms/container-main/getContainerByNumber?number=" + number) +} + +/** + * 按器具查询库存明细 + * @param {*器具代码} + * + */ +export function getBalanceByContainerNumberGroup(number) { + return http.get("/wms/balance/page") +} +/** + * 按器具查询库存明细(无器具) + * @param {*器具代码} + * + */ +export function getBalanceByContainerNumber(params) { + return http.get("/wms/balance/page",{params}) +} +/**标签 + * + * @param {*} header version + * 获取标签设置信息 + */ +export function getLabelByHeader(header, version) { + var params = { + header: header, + version: version, + } + return http.get("/wms/labeltype/getDetailsByHeader",{params}) +} +/**包装 + * 获取包装信息 + * @param {*} + * + */ +export function getPackageByNumber(number) { + var params = { + number: number, + pageNo: 1, + pageSize: 100 + } + return http.get("/wms/package/page",{params}) +} + + +/** + * 查询库位信息接口 + * @param {*} code 库位代码 + * + */ +export function getBasicLocationByCode(code) { + var parmas = { + code: code, + pageNo: 1, + pageSize: 100 + } + return http.get("/wms/location/page",{params}) +} + +/** + * 校验库位物料关系 + * @param {*} + * + */ +export function validateItemAndLocation(data) { + return http.post("/wms/location/validate",data) +} + +/** + * 查询上架推荐库位 + * @param {*} + * supplierCode + * itemCode + * batch + * inventoryStatus + */ + + +export function getPutawayRecommendLocation(data) { + return http.post("/wms/location/recommendLocation",data) +} + +/** + * 查询物品信息接口 + * @param {*} code 物品代码 + * + */ +export function getBasicItemByCode(itemCode) { + var params = { + code: itemCode, + pageNo: 1, + pageSize: 100 + } + return http.get("/wms/itembasic/page",{params}) +} +/** + * 按物品查询库存汇总 + * @param {*} itemCode + * /wms/balance/summary + */ +export function getBalanceSummary(params) { + return http.get("/wms/balance/summary",{params}) +} +/** + * 查询包装信息接口 + * @param {*} itemCode 物品代码 + * + */ +export function getItempackagingByItemcode(itemCode) { + return http.get("/wms/itempackaging/page?itemCode=" + itemCode) +} +/** + * 查询生产线物料关系 + * @param {*} productionLineCode 生产线code + * + */ +export function getProductionlineItem(params) { + return http.get("/wms/productionlineitem/page" , {params}) +} +/** + * 查询生产线-车间-工位 + * @param {*} + * + */ +export function getWorkShopLineStation() { + return http.get("/wms/issue-request-main/get-workshop-productionline-workstation" ) +} +/** + * 查询客户物品 + */ + +export function getCustomerItemList(params) { + return http.post("/wms/customeritem/senior",params) +} + +/** + * 供应商发货 + * + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getSupplierDeliverRecordList(params) { + return http.post("/wms/supplierdeliver-record-main/senior",params) +} +/** + * 供应商发货 详情 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getSupplierDeliverRecordDetail(id) { + return http.get("/wms/supplierdeliver-record-main/getSupplierdeliverRecordById?id=" + id) +} + +/** + * 报检单查询 = request_inspect + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getInspectRequestList(params) { + return http.post("/wms/inspect-request-main/senior",params) +} +/** + * 检验单查询 详情 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getInspectRequestDetail(id) { + return http.get("/wms/inspect-request-main/getInspectRequestById?id=" + id) +} +/** + * 检验单申请 关闭任务 + * @param {*} params + */ +export function inspectRequestClose(id) { + return http.put("/wms/inspect-request-main/close?id=" + id) +} +/** + * 检验单申请 提交审批 + * @param {*} params + */ +export function inspectRequestApprove(id) { + return http.put("/wms/inspect-request-main/submit?id=" + id) +} +/** + * 检验单申请 提交审批通过 + * @param {*} params + */ + +export function inspectRequestApproveAgree(id) { + return http.put("/wms/inspect-request-main/agree?id=" + id) +} +/** + * 检验单申请 审批驳回 + * @param {*} params + */ +export function inspectRequestApproveRefused(id) { + return http.put("/wms/inspect-request-main/refused?id=" + id) +} +/** + * 检验单申请 处理 + * @param {*} params + */ +export function inspectRequestHandle(id) { + return http.put("/wms/inspect-request-main/handle?id=" + id) +} +/** + * 检验单申请 重新添加 + * @param {*} params + */ +export function inspectRequestAddAgain(id) { + return http.put("/wms/inspect-request-main/reAdd?id=" + id) +} +/** + * 采购收货 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getPurchaseReceiptJobList(params) { + return http.post("/wms/purchasereceipt-job-main/senior" ,params) +} +/** + * 采购收货 任务承接 + * @param {*} id + * + */ +export function takePurchaseReceiptJob(id) { + return http.put("/wms/purchasereceipt-job-main/accept?id=" + id) +} +/** + * 采购收货 放弃承接 + * @param {*} id + * + */ +export function cancleTakePurchaseReceiptJob(id) { + return http.put("/wms/purchasereceipt-job-main/abandon?id=" + id) +} +/** + * 采购收货 获取任务明细 + * @param {*} id 任务id + * + */ +export function getPurchaseReceiptJobDetail(id) { + return http.get("/wms/purchasereceipt-job-main/getPurchasereceiptJobyId?id=" + id) +} +/** + * 采购收货 任务提交 + * @param {*} 任务id + * + */ +export function purchaseReceiptJobSubmit(params) { + return http.put("/wms/purchasereceipt-job-main/execute" ,params) +} + +/** + * 采购退货 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * 获取任务明细 + */ +export function getPurchaseReturnJobList(params) { + return http.post("/wms/purchasereturn-job-main/senior" ,params) +} +/** + * 采购退货 获取任务明细 + * @param {*} id 任务id + * + */ + +export function getPurchasereturnJobDetail(id) { + return http.get("/wms/purchasereturn-job-main/getReturnJobById?id=" + id) +} +/** + * 采购退货 承接任务 + * @param {*} id + * + */ +export function takePurchasereturnJob(id) { + return http.put("/wms/purchasereturn-job-main/accept?id=" + id) +} +/** + * 采购退货 放弃承接 + * @param {*} id + * + */ +export function cancleTakePurchasereturnJob(id) { + return http.put("/wms/purchasereturn-job-main/abandon?id=" + id) +} +/** + * 采购退货 任务提交 + * @param {*} params + */ +export function purchaseReturnJobsubmit(params) { + return http.put("/wms/purchasereturn-job-main/execute" ,params) +} +/** + * 采购退货 申请列表 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getPurchaseReturnRequestList(params) { + return http.post("/wms/purchasereturn-request-main/senior" ,params) +} +/** + * 采购退货 获取申请任务明细 + * @param {*} id 任务id + * + */ +export function getPurchaseReturnRequestDetail(id) { + return http.get("/wms/purchasereturn-request-main/getPurchasereturnRequestById?id=" + id) +} +/** + * 采购退货申请 关闭任务 + * @param {*} params + */ +export function purchaseReturnRequestClose(id) { + return http.put("/wms/purchasereturn-request-main/close?id=" + id) +} +/** + * 采购退货申请 提交审批 + * @param {*} params + */ +export function purchaseReturnRequestApprove(id) { + return http.put("/wms/purchasereturn-request-main/submit?id=" + id) +} +/** + * 采购退货申请 提交审批通过 + * @param {*} params + */ +export function purchaseReturnRequestApproveAgree(id) { + return http.put("/wms/purchasereturn-request-main/agree?id=" + id) +} +/** + * 采购退货申请 审批驳回 + * @param {*} params + */ +export function purchaseReturnRequestApproveRefused(id) { + return http.put("/wms/purchasereturn-request-main/refused?id=" + id) +} +/** + * 采购退货申请 处理 + * @param {*} params + */ +export function purchaseReturnRequestHandle(id) { + return http.put("/wms/purchasereturn-request-main/handle?id=" + id) +} +/** + * 采购退货申请 重新添加 + * @param {*} params + */ +export function purchaseReturnRequestAddAgain(id) { + return http.put("/wms/purchasereturn-request-main/reAdd?id=" + id) +} + + +/** + * 采购退货申请 提交 + * @param {*} params + */ +export function purchaseReturnRequestCreate(params) { + return http.post("/wms/purchasereturn-request-main/create" ,params) +} + +/** + * 采购退货 记录提交 + * @param {*} params + */ +export function purchaseReturnRecordSubmit(params) { + return http.post("/wms/purchasereturn-record-main/create" ,params) +} + + +/** + * 到货检验 任务 + * + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getInspectJobList(params) { + return http.post("/wms/inspect-job-main/senior" ,params) +} +/** + * 到货检验 获取任务明细 + * @param {*} id 任务id + * + */ +export function getInspectJobDetail(id) { + return http.get("/wms/inspect-job-main/getInspectJobById?id=" + id) +} +/** + * 到货检验 任务承接 + * @param {*} id + * + */ +export function takeInspectJob(id) { + return http.put("/wms/inspect-job-main/accept?id=" + id) +} +/** + * 到货检验 放弃承接 + * @param {*} id + * + */ + +export function cancleTakeInspectJob(id) { + return http.put("/wms/inspect-job-main/abandon?id=" + id) +} +/** + * 到货检验 任务提交 + * @param {*} 任务id + * + */ +export function inspectJobSubmit(params) { + return http.put("/wms/inspect-job-main/execute",params) +} +//根据检验记录单号创建上架申请 +export function createPutAwayRequest(number) { + return http.post("/wms/inspect-record-main/createPutAwayRequest?number=" + number) +} + +/** + * 采购上架 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getPutawayJobList(params) { + return http.post("/wms/putaway-job-main/senior" ,params) +} +/** + * 采购上架 获取任务明细 + * @param {*} id 任务id + * + */ +export function getPutawayJobDetail(id) { + return http.get("/wms/putaway-job-main/getPutawayJobById?id=" + id) +} +/** + * 采购上架 承接任务 + * @param {*} id + * + */ +export function takePutawayJob(id) { + return http.put("/wms/putaway-job-main/accept?id=" + id) +} +/** + * 采购上架 放弃承接 + * @param {*} id + * + */ +export function cancleTakePutawayJob(id) { + return http.put("/wms/putaway-job-main/abandon?id=" + id) +} +/** + * 采购上架 任务提交 + * @param {*} params + */ +export function putawayJobSubmit(params) { + return http.put("/wms/putaway-job-main/execute" + params) +} +/** + * 采购上架申请 获取任务列表 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getPutawayRequestList(params) { + return http.post("/wms/putaway-request-main/senior" + params) +} +/** + * 采购上架申请 获取任务明细 + * @param {*} id 任务id + * + */ +export function getPutawayRequestDetail(id) { + return http.get("/wms/putaway-request-main/getPutawayRequestById?id=" + id) +} +/** + * 采购上架申请 提交 + * @param {*} params + */ +export function putawayRequestSubmit(params) { + return http.post("/wms/putaway-request-main/create",params) +} +/** + * 采购上架申请 关闭任务 + * @param {*} params + */ +export function putawayRequestClose(id) { + return http.put("/wms/putaway-request-main/close?id=" + id) +} +/** + * 采购上架申请 提交审批 + * @param {*} params + */ +export function putawayRequestApprove(id) { + return http.put("/wms/putaway-request-main/submit?id=" + id) +} +/** + * 采购上架申请 提交审批通过 + * @param {*} params + */ +export function putawayRequestApproveAgree(id) { + return http.put("/wms/putaway-request-main/agree?id=" + id) +} +/** + * 采购上架申请 审批驳回 + * @param {*} params + */ +export function putawayRequestApproveRefused(id) { + return http.put("/wms/putaway-request-main/refused?id=" + id) +} +/** + * 采购上架申请 处理 + * @param {*} params + */ +export function putawayRequestHandle(id) { + return http.put("/wms/putaway-request-main/handle?id=" + id) +} +/** + * 采购上架申请 重新添加 + * @param {*} params + */ +export function putawayRequestAddAgain(id) { + return http.put("/wms/putaway-request-main/reAdd?id=" + id) +} + + +/** + * 采购上架记录 提交 + * @param {*} params + */ +export function putawayRecordSubmit(params) { + return http.post("/wms/putaway-record-main/create",params) +} +/** + * 发料任务 列表 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getIssueJobList(params) { + return http.post("/wms/issue-job-main/senior",params) +} +/** + * 发料任务明细 + * @param {*} 任务id + * + */ +export function getIssueJobDetail(id) { + return http.get( "/wms/issue-job-main/getIssueJobById?id=" + id) +} + +/** + * 获取推荐明细接口 + * @param {*} 任务id + * /wms/issue-request-main + */ +export function getBalanceByBatchOffShelf(itemCode, qty) { + return http.get("/wms/issue-request-main/getBalanceByBatchOffShelf?itemCode=" + itemCode + "&&qty=" + qty) +} + +/** + * 发料 任务承接 + * @param {*} id + * + */ +export function takeIssueJob(id) { + return http.put("/wms/issue-job-main/accept?id=" + id) +} + +/** + * 发料 放弃承接 + * @param {*} id + * + */ +export function cancleTakeIssueJob(id) { + return http.put("/wms/issue-job-main/abandon?id=" + id) +} +/** + * 发料任务 提交 + * @param {*} params + */ +export function issueJobSubmit(params) { + return http.put("/wms/issue-job-main/execute",params) +} + +/** + * 生产收料 任务列表 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getProductionReceiptJobList(params) { + return http.post("/wms/productionreceipt-job-main/senior",params) +} +/** + * 生产收料 获取任务明细 + * @param {*} id 任务id + * + */ +export function getProductionReceiptJobDetail(id) { + return http.get( "/wms/productionreceipt-job-main/getProductionreceiptJobById?id=" + id) +} +/** + * 生产收料 任务承接 + * @param {*} id + * + */ +export function takeProductionReceiptJob(id) { + return http.put( "/wms/productionreceipt-job-main/accept?id=" + id) +} +/** + * 生产收料 放弃承接 + * @param {*} id + * + */ +export function cancleTakeProductionReceiptJob(id) { + return http.put( "/wms/productionreceipt-job-main/abandon?id=" + id) +} + +/** + * 生产收料任务 提交 + * @param {*} params + */ +export function productionReceiptJobSubmit(params) { + return http.put( "/wms/productionreceipt-job-main/execute",params) +} +/** + * 生产收料记录 提交 + * @param {*} params + */ +export function productionReceiptRecordSubmit(params) { + return http.post( "/wms/productreceipt-record-main/create",params) +} + + +/** + * 库存转移 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getInventoryMoveJobList(params) { + return http.post( "/wms/inventorymove-job-main/senior",params) +} +/** + * 库存转移 获取任务明细 + * @param {*} id 任务id + * + */ + +export function getInventoryMoveJobDetail(id) { + return http.get("/wms/inventorymove-job-main/getInventorymoveJobById?id=" + id) +} +/** + * 库存转移任务 任务承接 + * @param {*} id + * + */ +export function takeInventoryMoveJob(id) { + return http.put("/wms/inventorymove-job-main/accept?id=" + id) +} +/** + * 库存转移任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeInventoryMoveJob(id) { + return http.put("/wms/inventorymove-job-main/abandon?id=" + id) +} + +/** + * 库存转移 任务提交 + * @param {*} 任务id + * + */ +export function inventoryMoveSubmit(params) { + return http.put("/wms/inventorymove-job-main/execute" ,params) +} +/** + * 库存转移记录 提交 + * @param {*} 任务id + * + */ +export function inventoryMoveRecordSubmit(params) { + return http.post("/wms/inventorymove-record-main/create" ,params) +} +/** + * 盘点 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getCountJobList(params) { + return http.post("/wms/count-job-main/senior" ,params) +} +/** + * 盘点 获取任务明细 + * @param {*} id 任务id + * + */ +export function getCountJobDetail(id) { + return http.get("/wms/count-job-main/getCountJobById?id=" + id) +} +/** + * 盘点任务 任务承接 + * @param {*} id + * + */ +export function takeCountJob(id) { + return http.put( "/wms/count-job-main/accept?id=" + id) +} +/** + * 盘点任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeCountJob(id) { + return http.put("/wms/count-job-main/abandon?id=" + id) +} +/** + * 盘点任务 提交 + * @param {*} 任务id + * + */ +export function countJobSubmit(params) { + return http.put("/wms/count-job-main/execute", params) +} +/** + * 计划外入库 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取任务列表 + * @param {*} + */ +export function getUnPlannedReceiptJobList(params) { + return http.post("/wms/unplannedreceipt-job-main/senior", params) +} +/** + * 计划外入库 获取任务明细 + * @param {*} id 任务id + * + */ +export function getUnPlannedReceiptJobDetail(id) { + return http.get("/wms/unplannedreceipt-job-main/getUnplannedreceiptJobById?id=" + id) +} + +/** + * 计划外入库任务 任务承接 + * @param {*} id + * + */ +export function takeUnPlannedReceiptJob(id) { + return http.put("/wms/unplannedreceipt-job-main/accept?id=" + id) +} +/** + * 计划外入库 放弃承接 + * @param {*} id + * + */ +export function cancleTakeUnPlannedReceiptJob(id) { + return http.put("/wms/unplannedreceipt-job-main/abandon?id=" + id) +} +/** + * 计划外入库任务 提交 + * @param {*} params + */ +export function unPlannedReceiptJobSubmit(params) { + return http.put("/wms/unplannedreceipt-job-main/execute",params) +} +/** + * 计划外入库申请 创建 + * @param {*} params + */ +export function unPlannedReceiptRequestCreate(params) { + return http.post("/wms/unplannedreceipt-request-main/create",params) +} +/** + * 计划外入库申请 提交审批 + * @param {*} params + */ +export function unPlannedReceiptRequestApprove(id) { + return http.put("/wms/unplannedreceipt-request-main/submit?id=" + id) +} +/** + * 计划外入库申请 关闭 + * @param {*} params + */ +export function unPlannedReceiptRequestClose(id) { + return http.put("/wms/unplannedreceipt-request-main/close?id=" + id) +} +/** + * 计划外入库申请 审批通过 + * @param {*} params + */ +export function unPlannedReceiptRequestApproveAgree(id) { + return http.put("/wms/unplannedreceipt-request-main/agree?id=" + id) +} +/** + * 计划外入库申请 审批驳回 + * @param {*} params + */ +export function unPlannedReceiptRequestApproveRefused(id) { + return http.put("/wms/unplannedreceipt-request-main/refused?id=" + id) +} +/** + * 计划外入库申请 处理 + * @param {*} params + */ +export function unPlannedReceiptRequestHandle(id) { + return http.put("/wms/unplannedreceipt-request-main/handle?id=" + id) +} +/** + * 计划外入库申请 重新添加 + * @param {*} params + */ +export function unPlannedReceiptRequestAddAgain(id) { + return http.put("/wms/unplannedreceipt-request-main/reAdd?id=" + id) +} +/** + * 计划外入库记录 提交 + * @param {*} params + */ +export function unPlannedReceiptRecordbSubmit(params) { + return http.post("/wms/unplannedreceipt-record-main/create",params) +} +/** + * 计划外出库 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取任务列表 + * @param {*} + */ +export function getUnPlannedIssueJobList(params) { + return http.post("/wms/unplannedissue-job-main/senior",params) +} +/** + * 计划外出库 获取任务明细 + * @param {*} id 任务id + * + */ + +export function getUnPlannedIssueJobDetail(id) { + return http.get("/wms/unplannedissue-job-main/getUnplannedissueJobById?id=" + id) +} +/** + * 计划外出库任务 承接 + * @param {*} id + * + */ +export function takeUnPlannedIssueJob(id) { + return http.put("/wms/unplannedissue-job-main/accept?id=" + id) +} +/** + * 计划外出库任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeUnPlannedIssueJob(id) { + return http.put("/wms/unplannedissue-job-main/abandon?id=" + id) +} +/** + * 计划外出库任务 提交 + * @param {*} params + */ + +export function unPlannedIssueJobSubmit(params) { + return http.put("/wms/unplannedissue-job-main/execute",params) +} + +/** + * 计划外出库申请 提交 + * @param {*} params + */ +export function unPlannedIssueRequestCreate(params) { + return http.post("/wms/unplannedissue-request-main/create",params) +} +/** + * 计划外出库申请 提交审批 + * @param {*} params + */ +export function unPlannedIssueRequestApprove(id) { + return http.put( "/wms/unplannedissue-request-main/submit?id=" + id) +} +/** + * 计划外出库申请 关闭 + * @param {*} params + */ +export function unPlannedIssueRequestClose(id) { + return http.put( "/wms/unplannedissue-request-main/close?id=" + id) +} +/** + * 计划外出库申请 审批通过 + * @param {*} params + */ +export function unPlannedIssueRequestApproveAgree(id) { + return http.put( "/wms/unplannedissue-request-main/agree?id=" + id) +} +/** + * 计划外出库申请 审批驳回 + * @param {*} params + */ +export function unPlannedIssueRequestApproveRefused(id) { + return http.put( "/wms/unplannedissue-request-main/refused?id=" + id) +} +/** + * 计划外出库申请 处理 + * @param {*} params + */ +export function unPlannedIssueRequestHandle(id) { + return http.put("/wms/unplannedissue-request-main/handle?id=" + id) +} +/** + * 计划外出库申请 重新添加 + * @param {*} params + */ + +export function unPlannedIssueRequestAddAgain(id) { + return http.put("/wms/unplannedissue-request-main/reAdd?id=" + id) +} + +/** + * 计划外出库记录 提交 + * @param {*} params + */ +export function unPlannedIssueRecordSubmit(params) { + return http.post("/wms/unplannedissue-record-main/create",{params}) +} +/** + * 制品收货 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getProductReceiptJobList(params) { + return http.post("/wms/productreceipt-job-main/senior",params) +} +/** + * 制品收货 获取任务明细 + * @param {*} id 任务id + * + */ +export function getProductReceiptJobDetail(id) { + return http.get("/wms/productreceipt-job-main/getProductreceiptJobById?id=" + id) +} +/** + * 制品收货任务 承接 + * @param {*} id + * + */ +export function takeProductReceiptJob(id) { + return http.put("/wms/productreceipt-job-main/accept?id=" + id) +} +/** + * 制品收货任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeProductReceiptJob(id) { + return http.put("/wms/productreceipt-job-main/abandon?id=" + id) +} +/** + * 制品收货任务 提交 + * @param {*} params + */ +export function productReceiptJobsubmit(params) { + return http.put("/wms/productreceipt-job-main/execute",params) +} +/** + * 制品收货记录 提交 + * @param {*} params + */ + +export function productReceiptRecordsubmit(params) { + return http.post("/wms/productreceipt-record-main/create",params) +} + + +/** + * 制品上架 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getProductPutawayJobList(params) { + return http.post("/wms/productputaway-job-main/senior",params) +} + +/** + * 制品上架 获取任务明细 + * @param {*} id 任务id + * + */ +export function getProductPutawayJobDetail(id) { + return http.get("/wms/productputaway-job-main/getProductputawayJobById?id=" + id) +} +/** + * 制品上架任务 承接 + * @param {*} id + * + */ + +export function takeProductPutawayJob(id) { + return http.put("/wms/productputaway-job-main/accept?id=" + id) +} +/** + * 制品上架任务 放弃承接 + * @param {*} id + * + */ + +export function cancleTakeProductPutawayJob(id) { + return http.put("/wms/productputaway-job-main/abandon?id=" + id) +} + +/** + * 制品上架任务 提交 + * @param {*} 任务id + * + */ +export function productPutawayJobSubmit(params) { + return http.put("/wms/productputaway-job-main/execute",params) +} + +/** + * 制品上架记录 提交 + * @param {*} 任务id + * + */ + +export function productPutawayRecordSubmit(params) { + return http.put("/wms/productputaway-record-main/create",params) +} + +/** + * 制品拆解 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ + +export function getProductDismantleJobList(params) { + return http.post("/wms/productdismantle-job-main/senior",params) +} +/** + * 制品拆解 获取任务明细 + * @param {*} id 任务id + * + */ +export function getProductDismantleJobDetail(id) { + return http.get("/wms/productdismantle-job-main/getProductdismantleJobById?id=" + id) +} +/** + * 制品拆解 任务承接 + * @param {*} id + * + */ +export function takeProductDismantleJob(id) { + return http.put("/wms/purchasereceipt-job-main/accept?id=" + id) +} +/** + * 制品拆解 放弃承接 + * @param {*} id + * + */ +export function cancleTakeProductDismantleJob(id) { + return http.put("/wms/purchasereceipt-job-main/abandon?id=" + id) +} +/** + * 制品拆解 任务提交 + * @param {*} 任务id + * + */ +export function productDismantleJobSubmit() { + return http.put("/wms/purchasereceipt-job-main/abandon",{}) +} +/** + * 制品拆解 任务提交 + * @param {*} 任务id + * + */ +export function productDismantleRecordSubmit(params) { + return http.put("/wms/purchasereceipt-job-main/abandon",params) +} +/** + * 制品发货 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getDeliverJobList(params) { + return http.post("/wms/deliver-job-main/senior",params) +} +/** +/** + * 制品发货 获取任务明细 + * @param {*} id 任务id + * + */ +export function getDeliverDetail(id) { + return http.get("/wms/deliver-job-main/getDeliverJobById?id=" + id) +} +/** + * 制品发货任务 承接 + * @param {*} id + * + */ +export function takeDeliverJob(id) { + return http.put("/wms/deliver-job-main/accept?id=" + id) +} +/** + * 制品发货任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeDeliverJob(id) { + return http.put("/wms/deliver-job-main/abandon?id=" + id) +} + +/** + * 制品发货 任务提交 + * @param {*} 任务id + * + */ + +export function deliverJobSubmit(params) { + return http.put("/wms/deliver-job-main/execute" ,params) +} + +/** + * 制品发货申请 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getDeliverRequestList(params) { + return http.post("/wms/deliver-request-main/senior" ,params) +} +/** + * 制品发货申请 获取任务明细 + * @param {*} id 任务id + * + */ +export function getDeliverRequestDetail(id) { + return http.get("/wms/deliver-request-main/getDeliverRequestById?id=" + id) +} +/** + * 制品发货申请 提交 + * @param {*} params + */ +export function deliverRequestSubmit(params) { + return http.post("/wms/deliver-request-main/create",params) +} +/** + * 制品发货申请 关闭任务 + * @param {*} params + */ +export function deliverRequestClose(id) { + return http.put("/wms/deliver-request-main/close?id=" + id) +} +/** + * 制品发货申请 提交审批 + * @param {*} params + */ +export function deliverRequestApprove(id) { + return http.put("/wms/deliver-request-main/submit?id=" + id) +} +/** + * 制品发货申请 提交审批通过 + * @param {*} params + */ +export function deliverRequestApproveAgree(id) { + return http.put("/wms/deliver-request-main/agree?id=" + id) +} +/** +/** + * 制品发货申请 审批驳回 + * @param {*} params + */ +export function deliverRequestApproveRefused(id) { + return http.put("/wms/deliver-request-main/refused?id=" + id) +} +/** + * 制品发货申请 处理 + * @param {*} params + */ + +export function deliverRequestHandle(id) { + return http.put("/wms/deliver-request-main/handle?id=" + id) +} +/** + * 制品发货申请 重新添加 + * @param {*} params + */ +export function deliverRequestAddAgain(id) { + return http.put("/wms/deliver-request-main/reAdd/reAdd?id=" + id) +} +/** + * 制品发货记录 提交 + * @param {*} params + */ +export function deliverRecordSubmit(params) { + return http.post("/wms/deliver-record-main/create",params) +} +/** + * 客户退货 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getCustomerReturnJobList(params) { + return http.post("/wms/customerreturn-job-main/senior",params) +} +/** + * 客户退货 获取任务明细 + * @param {*} id 任务id + * + */ +export function getCustomerReturnJobDetail(id) { + return http.get("/wms/customerreturn-job-main/getCustomerreturnJobById?id="+id) +} + +/** + * 客户退货任务 承接 + * @param {*} id + * + */ +export function takeCustomerReturnJob(id) { + return http.put("/wms/customerreturn-job-main/accept?id="+id) +} +/** + * 客户退货任务 放弃承接 + * @param {*} id + * + */ + +export function cancleTakeCustomerReturnJob(id) { + return http.put("/wms/customerreturn-job-main/abandon?id="+id) +} +/** + * 客户退货任务 提交 + * @param {*} 任务id + * + */ +export function customerReturnJobSubmit(params) { + return http.put("/wms/customerreturn-job-main/execute",params) +} +/** + * 客户退货申请 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getCustomerReturnRequestList(params) { + return http.post("/wms/customerreturn-request-main/senior",params) +} + +/** + * 客户退货申请 任务明细 + * @param {*} id 任务id + * + */ + +export function getCustomerReturnRequestDetail(id) { + return http.get("/wms/customerreturn-request-main/getCustomerreturnRequestById?id=" + id) +} + +/** + * 客户退货申请 提交 + * @param {*} params + */ +export function customerReturnRequestSubmit(params) { + return http.post("/wms/customerreturn-request-main/create",params) +} +/** + * 客户退货申请 关闭任务 + * @param {*} params + */ +export function customerReturnRequestClose(id) { + return http.put("/wms/customerreturn-request-main/close?id=" + id) +} +/** + * 客户退货申请 提交审批 + * @param {*} params + */ + +export function customerReturnRequestApprove(id) { + return http.put("/wms/customerreturn-request-main/submit?id=" + id) +} +/** + * 客户退货申请 提交审批通过 + * @param {*} params + */ +export function customerReturnRequestApproveAgree(id) { + return http.put("/wms/customerreturn-request-main/agree?id=" + id) +} +/** + * 客户退货申请 审批驳回 + * @param {*} params + */ + +export function customerReturnRequestApproveRefused(id) { + return http.put("/wms/customerreturn-request-main/refused?id=" + id) +} +/** + * 客户退货申请 处理 + * @param {*} params + */ +export function customerReturnRequestHandle(id) { + return http.put("/wms/customerreturn-request-main/handle?id=" + id) +} +/** + * 客户退货申请 重新添加 + * @param {*} params + */ +export function customerReturnRequestAddAgain(id) { + return http.put("/wms/customerreturn-request-main/reAdd?id=" + id) +} +/** + * 客户退货 记录提交 + * @param {*} params + */ + +export function customerReturnRecordSubmit(params) { + return http.put("/wms/customerreturn-record-main/create",params) +} +/** + * 调拨入库 任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getTransferReceiptJobList(params) { + return http.post("/wms/transferreceipt-job-main/senior",params) +} + +/** + * 调拨入库 获取任务明细 + * @param {*} id 任务id + * + */ +export function getTransferReceiptJobDetail(id) { + return http.get("/wms/transferreceipt-job-main/getTransferreceiptJobById?id=" + id) +} + +/** + * 调拨入库任务 承接 + * @param {*} id + * + */ +export function takeTransferReceiptJob(id) { + return http.put("/wms/transferreceipt-job-main/accept?id=" + id) +} +/** + * 调拨入库 放弃承接 + * @param {*} id + * + */ + +export function cancleTakeTransferReceiptJob(id) { + return http.put("/wms/transferreceipt-job-main/abandon?id=" + id) +} + +/** + * 调拨入库任务 提交 + * @param {*} 任务id + * + */ +export function transferReceiptJobSubmit(params) { + return http.put("/wms/transferreceipt-job-main/execute",params) +} +/** + * 调拨入库记录 提交 + * @param {*} id + * + */ + +export function transferReceiptRecordSubmit(params) { + return http.post("/wms/transferreceipt-record-main/create",params) +} +/** + * 调拨出库 任务列表 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getTransferIssueJobList(params) { + return http.post("/wms/transferissue-job-main/senior",params) +} +/** + * 调拨出库 获取任务明细 + * @param {*} id 任务id + * + */ +export function getTransferIssueJobDetail(id) { + return http.get("/wms/transferissue-job-main/getTransferissueJobById?id=" + id) +} +/** + * 调拨出库任务 承接 + * @param {*} id + * + */ +export function takeTransferIssueJob(id) { + return http.put("/wms/transferissue-job-main/accept?id=" + id) +} +/** + * 调拨出库任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeTransferIssueJob(id) { + return http.put("/wms/transferissue-job-main/abandon?id=" + id) +} +/** + * 调拨出库任务 提交 + * @param {*} 任务id + * + */ +export function transferIssueJobSubmit(params) { + return http.put("/wms/transferissue-job-main/execute",params) +} +/** + * 调拨出库记录 提交 + * @param {*} + * + */ +export function transferIssueRecordSubmit(params) { + return http.post("/wms/transferissue-record-main/create",params) +} + +/** + * 制品上架申请 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ + +export function getProductPutawayRequestList(params) { + return http.post("/wms/productputaway-request-main/senior",params) +} +/** + * 制品上架申请 获取任务明细 + * @param {*} id 任务id + * + */ + +export function getProductPutawayRequestDetail(id) { + return http.get("/wms/productputaway-request-main/getProductputawayRequestById?id=" + id) +} +/** + * 制品上架申请 提交 + * @param {*} params + */ +export function productPutawayRequestSubmit(params) { + return http.post("/wms/productputaway-request-main/create" ,params) +} +/** + * 制品上架申请 处理 + * @param {*} params + */ +export function productPutawayRequestHandle(id) { + return http.put("/wms/productputaway-request-main/handle?id=" + id) +} +/** + * 制品上架申请 重新添加 + * @param {*} params + */ +export function productPutawayRequestAddAgain(id) { + return http.put("/wms/productputaway-request-main/reAdd?id=" + id) +} +/** + * 制品上架申请 提交审批 + * @param {*} params + */ +export function productPutawayRequestApprove(id) { + return http.put("/wms/productputaway-request-main/submit?id=" + id) +} +/** + * 制品上架申请 提交审批通过 + * @param {*} params + */ +export function productPutawayRequestApproveAgree(id) { + return http.put("/wms/productputaway-request-main/agree?id=" + id) +} +/** + * 制品上架申请 审批驳回 + * @param {*} params + */ +export function productPutawayRequestApproveRefused(id) { + return http.put("/wms/productputaway-request-main/refused?id=" + id) +} +/** + * 制品上架申请 关闭任务 + * @param {*} params + */ +export function productPutawayRequestClose(id) { + return http.put("/wms/productputaway-request-main/close?id=" + id) +} +/** + * 发料申请列表 + * @param {*} params + */ +export function getIssueRequestList(params) { + return http.post("/wms/issue-request-main/senior",params) +} +/** + * 发料申请明细 + * @param {*} id + */ +export function getIssueRequestDetail(id) { + return http.get( "/wms/issue-request-main/getIssueRequestById?id=" + id) +} +/** + * 发料申请 提交 + * @param {*} params + */ +export function issueRequestSubmit(params) { + return http.post( "/wms/issue-request-main/create" ,params) +} +/** + * 发料申请 处理 + * @param {*} params + */ +export function issueRequestHandle(id) { + return http.put("/wms/issue-request-main/handle?id=" + id) +} + +/** + * 发料申请 提交审批 + * @param {*} params + */ +export function issueRequestSubmitApprove(id) { + return http.put("/wms/issue-request-main/submit?id=" + id) +} +/** + * 发料申请 审批通过 + * @param {*} params + */ +export function issueRequestSubmitApproveAgree(id) { + return http.put("/wms/issue-request-main/agree?id=" + id) +} +/** + * 发料申请 审批驳回 + * @param {*} params + */ +export function issueRequestSubmitApproveRefused(id) { + return http.put("/wms/issue-request-main/refused?id=" + id) +} +/** + * 发料申请 申请关闭 + * @param {*} params + */ +export function issueRequestClose(id) { + return http.put("/wms/issue-request-main/close?id=" + id) +} +/** + * 发料申请 重新添加 + * @param {*} params + */ +export function issueRequestAddAgain(id) { + return http.put("/wms/issue-request-main/reAdd?id=" + id) +} +/** + * 发料记录 提交 + * @param {*} params + */ + +export function issueRecordSubmit(params) { + return http.post("/wms/issue-record-main/create",params) +} + + +/** + * 生产退料 任务获取任务列表 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getProductionreturnJobList(params) { + return http.post("/wms/productionreturn-job-main/senior",params) +} +/** + * 生产退料任务 获取任务明细 + * @param {*} id 任务id + * + */ +export function getProductionReturnJobDetail(id) { + return http.get("/wms/productionreturn-job-main/getProductionreturnJobById?id=" + id) +} + +/** + * 生产退料 承接任务 + * @param {*} id + * + */ +export function takeProductionReturnJob(id) { + return http.put("/wms/productionreturn-job-main/accept?id=" + id) +} +/** + * 生产退料 放弃承接 + * @param {*} id + * + */ +export function cancleTakeProductionReturnJob(id) { + return http.put("/wms/productionreturn-job-main/abandon?id=" + id) +} +/** + * 生产退料 任务提交 + * @param {*} 任务id + * + */ +export function productionReturnJobSubmit(params) { + return http.put("/wms/productionreturn-job-main/execute",params) +} +/** + * 生产退料申请 获取任务列表 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getProductionReturnRequestList(params) { + return http.post("/wms/productionreturn-request-main/senior",params) +} +/** + * 生产退料申请 获取申请明细 + * @param {*} id + * + */ +export function getProductionReturnRequestDetail(id) { + return http.get("/wms/productionreturn-request-main/getProductionreturnRequestById?id=" + id) +} +/** + * 生产退料申请 处理 + * @param {*} id + * + */ +export function productionReturnRequestHandle(id) { + return http.put("/wms/productionreturn-request-main/handle?id=" + id) +} +/** + * 生产退料申请 提交审批 + * @param {*} id + * + */ +export function productionReturnRequestSubmitApprove(id) { + return http.put("/wms/productionreturn-request-main/submit?id=" + id) +} +/** + * 生产退料申请 审批通过 + * @param {*} id + * + */ +export function productionReturnRequestSubmitApproveAgree(id) { + return http.put("/wms/productionreturn-request-main/agree?id=" + id) +} +/** + * 生产退料申请 审批驳回 + * @param {*} id + * + */ +export function productionReturnRequestSubmitApproveRefused(id) { + return http.put("/wms/productionreturn-request-main/refused?id=" + id) +} +/** + * 生产退料申请 关闭 + * @param {*} id + * + */ + +export function productionReturnRequestClose(id) { + return http.put("/wms/productionreturn-request-main/close?id=" + id) +} +/** + * 生产退料申请 重新添加 + * @param {*} id + * + */ + +export function productionReturnRequestAddAgain(id) { + return http.put("/wms/productionreturn-request-main/reAdd?id=" + id) +} + +/** + * 生产退料申请 创建 + * @param {*} params + */ + + +export function productionReturnRequestCreate(params) { + return http.put("/wms/productionreturn-request-main/create",params) +} +/** + * 生产退料记录 提交 + * @param {*} params + */ +export function productionReturnRecordSubmit(params) { + return http.post("/wms/productionreturn-record-main/create",params) +} + +/** + * 计划外出库申请 + * 任务状态 + * 开始日期 + * 结束日期 + * 获取任务列表 + * @param {*} + */ +export function getUnPlannedIssueRequestList(params) { + return request({ + url: baseApi + "/wms/unplannedissue-request-main/senior", + method: "post", + data: params, + }); +} + +/** + * 计划外出库申请 获取明细 + * @param {*} id 任务id + * + */ +export function getUnPlannedIssueRequestDetail(id) { + return http.get("/wms/unplannedissue-request-main/getUnplannedissueRequestById?id=" + id) +} +/** + * 计划外入库 申请 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取任务列表 + * @param {*} + */ +export function getUnPlannedReceiptRequestList(params) { + return http.post("/wms/unplannedreceipt-request-main/senior",params) +} +/** + * 计划外入库申请 获取任务明细 + * @param {*} id 任务id + * + */ +export function getUnPlannedReceiptRequestDetail(id) { + return http.get("/wms/unplannedreceipt-request-main/getUnplannedreceiptRequestById?id=" + id) +} +/** + * 计划外入库 申请提交 + * @param {*} params + */ +export function unPlannedReceiptRequestSubmit(params) { + return http.put("/wms/purchasereturn-request-main/submit",params) +} + + +/** + * 报废出库任务 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getScrapJobList(params) { + return http.post("/wms/scrap-job-main/senior",params) +} + +/** 报废出库 获取任务明细 + * @param {*} id 任务id + */ +export function getScrapJobDetail(id) { + return http.get("/wms/scrap-job-main/getScrapJobById?id=" + id) +} +/** + * 报废出库 任务承接 + * @param {*} id + * + */ +export function takeScrapJob(id) { + return http.put("/wms/scrap-job-main/accept?id=" + id) +} +/** + * 报废出库 放弃承接 + * @param {*} id + * + */ +export function cancleTakeScrapJob(id) { + return http.put("/wms/scrap-job-main/abandon?id=" + id) +} +/** + * 报废出库 任务提交 + * @param {*} 任务id + * + */ +export function scrapJobSubmit(params) { + return http.put("/wms/scrap-job-main/execute" ,params) +} +/** + * 报废出库 申请 + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取任务列表 + * @param {*} + */ +export function getScrapRequestList(params) { + return http.post("/wms/scrap-request-main/senior" ,params) +} +/** + * 报废出库申请 获取申请明细 + * @param {*} id 任务id + * + */ +export function getScrapRequestDetail(id) { + return http.get("/wms/scrap-request-main/getScrapRequestById?id=" + id) +} +/** + * 报废出库申请 创建 + * @param {*} params + */ +export function scrapRequestCreate(params) { + return http.post("/wms/scrap-request-main/create",params) +} +/** + * 报废出库申请 提交审批 + * @param {*} params + */ +export function scrapRequestApprove(id) { + return http.put("/wms/scrap-request-main/submit?id=" + id) +} +/** + * 报废出库申请 关闭 + * @param {*} params + */ +export function scrapRequestClose(id) { + return http.put("/wms/scrap-request-main/close?id=" + id) +} +/** + * 报废出库申请 审批通过 + * @param {*} params + */ +export function scrapRequestApproveAgree(id) { + return http.put("/wms/scrap-request-main/agree?id=" + id) +} +/** + * 报废出库申请 审批驳回 + * @param {*} params + */ + +export function scrapRequestApproveRefused(id) { + return http.put("/wms/scrap-request-main/refused?id=" + id) +} +/** + * 报废出库申请 审批驳回 + * @param {*} params + */ +export function scrapRequestHandle(id) { + return http.put("/wms/scrap-request-main/handle?id=" + id) +} +/** + * 报废出库申请 重新添加 + * @param {*} params + */ + +export function scrapRequestAddAgain(id) { + return http.put("/wms/scrap-request-main/reAdd?id=" + id) +} +/** + * 报废出库记录 提交 + * @param {*} params + */ +export function scrapRecordSubmit(params) { + return http.post("/wms/scrap-record-main/create",params) +} + + +/** + * 补料任务 列表 + * + * status 任务状态 + * 开始日期 + * 结束日期 + * 获取日期任务列表 + * @param {*} + */ +export function getRepleinshJobList(params) { + return http.post("/wms/repleinsh-job-main/senior",params) +} + +/** + * 补料任务 获取任务明细 + * @param {*} id 任务id + * + */ + +export function getRepleinshJobDetail(id) { + return http.get("/wms/repleinsh-job-main/getRepleinshJobById?id=" + id) +} + +/** + * 补料 任务承接 + * @param {*} id + * + */ + +export function takeRepleinshJob(id) { + return http.put("/wms/repleinsh-job-main/accept?id=" + id) +} +/** + * 补料任务 放弃承接 + * @param {*} id + * + */ +export function cancleTakeRepleinshJob(id) { + return http.put("/wms/repleinsh-job-main/abandon?id=" + id) +} +/** + * 补料任务 提交 + * @param {*} params + */ + +export function repleinshJobSubmit(params) { + return http.put("/wms/repleinsh-job-main/execute" ,params) +} +/** + * 补料申请 提交 + * @param {*} params + */ + +export function repleinshRequestSubmit(params) { + return http.put("/magic-api/pda/job/putaway/jobSubmit" ,params) +} +/** + * 补料记录 提交 + * @param {*} params + */ +export function repleinshRecordSubmit(params) { + return http.post("/wms/repleinsh-record-main/create" ,params) +} +/** + * 器具绑定 提交 + * @param {*} params + */ +export function containerBindRecordSubmit(params) { + return http.post("/wms/container-main/containerBind" ,params) +} +/** + * 器具解绑 提交 + * @param {*} params + */ +export function containerUnBindRecordSubmit(params) { + return http.post("/wms/container-main/containerUnBind" ,params) +} +/** + * 拆包 提交 + * @param {*} params + */ +export function splitPackageRecordSubmit(params) { + return http.post("/wms/packagesplit-main/create" ,params) +} +/** + * 合包 提交 + * @param {*} params + */ +export function mergePackageRecordSubmit(params) { + return http.post("/wms/packagemerge-main/create" ,params) +} +/** + * 翻包 提交 + * @param {*} params + */ + +export function overPackageRecordSubmit(params) { + return http.post("/wms/packageover-main/createe" ,params) +} + +/** + * "itemCodes": [], + "locationCode":"INSPECT" + 管理精度策略 + * @param {*} + * + */ +export function getManagementPrecision(params) { + return http.post("/wms/rule/getPrecisionStrategyByItemCodes" ,params) +} + +/** + * 查询库存通过多种条件 高级筛选 + * @param {*} + * + */ + +export function getBalanceByFilter(params) { + return http.post("/wms/balance/senior" ,params) +} +/** + * 查询管理精度,多个物料,多个库位 + * @param {*} + * + */ + +export function getPrecisionStrategy(params) { + return http.post("/wms/rule/getPrecisionStrategy" ,params) +} +/** + * 删除文件 + * @param {*} + * + */ +export function deleteFileById(id) { + return http.delete("/infra/file/delete?id=" + id) +} +/** + * 删除文件(多个文件) + * @param {*} + * + */ + +export function deleteFileByTable(tableName, tableId) { + return http.delete("/infra/file/deleteByTable?tableName=" + tableName + "&tableId=" + tableId) +} + +/** + * 获取文件列表 + * @param {*} + * + */ +export function getFileList(tableName, tableId) { + return http.get("/infra/file/list?tableName=" + tableName + "&tableId=" + tableId) +} + +/** + * 图片上传 + * @param {*} + * + */ + +export function uploadFile(tableName, tableId, filePath, callBack) { + var token = storage.getStorage(storage.constant.token) + var url = config.request_url + baseApi + uni.uploadFile({ + url: url + "/infra/file/upload?tableName=" + tableName + "&tableId=" + tableId, + filePath: filePath, + name: 'file', + header: { + "Authorization": "Bearer " + token, + "tenant-id": 1 + }, + success: (uploadFileRes) => { + callBack(uploadFileRes.data) + console.log(uploadFileRes.data); + }, + fail: (error) => { + callBack(undefined) + }, + }); +} +/** + * 获取文件列表 + * @param {*} + * + */ +export function getMainMessage() { + return http.get("/wms/index/indexPda") +} +/** + * app检查更新 + * @param {*} + * + */ +export function appCheckUpdate() { + return http.get("http://192.168.0.119:9527/appUpdate.json") +} diff --git a/common/appUpdate.js b/common/appUpdate.js new file mode 100644 index 0000000..03af4c3 --- /dev/null +++ b/common/appUpdate.js @@ -0,0 +1,116 @@ +import { + appCheckUpdate +} from '../api/request2.js'; +export function appUpdate() { + let curversion = 0; + plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) { + const data = { + action: 'checkVersion', + appid: plus.runtime.appid, + appVersion: plus.runtime.version, + wgtVersion: widgetInfo.version, + versionCode: widgetInfo.versionCode + } + curversion=data.versionCode + appCheckUpdate().then(res => { + console.log("当前版本提示",curversion) + if (res.data) { + if (res.data.versionCode > Number(curversion)) { + var downUrl = res.data.downUrl; + var content = res.data.content; + var version =res.data.version + console.log("新版本提示") + uni.showModal({ + title: "发现新版本:("+version+")", + content: content, + confirmText: "更新", + cancelText: "取消", + success: (res) => { + if (res.confirm) { + confirm(downUrl); + console.log('comfirm') //点击确定之后执行的代码 + } else { + console.log('cancel') //点击取消之后执行的代码 + } + } + }) + } else { + uni.showToast({ + title:"当前是最新版本" + }) + console.log("没有新版本") + } + } + }).catch(error => { + console.log("版本错误", error) + }) + + }) + + + +} + +export function confirm(downUrl) { + var downloadApkUrl = downUrl + var dtask = plus.downloader.createDownload(downloadApkUrl, {}, + function(d, status) { + + // 下载完成 + if (status == 200) { + + plus.runtime.install(plus.io.convertLocalFileSystemURL( + d.filename), {}, {}, function(error) { + uni.showToast({ + title: '安装失败', + duration: 1500 + }); + }) + } else { + uni.showToast({ + title: '更新失败', + duration: 1500 + }); + } + }); + try { + dtask.start(); // 开启下载的任务 + var prg = 0; + var showLoading = plus.nativeUI.showWaiting( + "正在下载"); //创建一个showWaiting对象 + dtask.addEventListener('statechanged', function( + task, + status + ) { + // 给下载任务设置一个监听 并根据状态 做操作 + switch (task.state) { + case 1: + showLoading.setTitle("正在下载"); + break; + case 2: + showLoading.setTitle("已连接到服务器"); + break; + case 3: + prg = parseInt( + (parseFloat(task.downloadedSize) / + parseFloat(task.totalSize)) * + 100 + ); + showLoading.setTitle(" 正在下载" + prg + "% "); + break; + case 4: + plus.nativeUI.closeWaiting(); + //下载完成 + break; + } + }); + } catch (err) { + plus.nativeUI.closeWaiting(); + uni.showToast({ + title: '更新失败-03', + mask: false, + duration: 1500 + }); + } + +} \ No newline at end of file diff --git a/common/array.js b/common/array.js new file mode 100644 index 0000000..e87d780 --- /dev/null +++ b/common/array.js @@ -0,0 +1,320 @@ +// 详情和审批 +export function getDetailAndApproveOption() { + let option_detail = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '提交\n审批', + style: { + backgroundColor: '#00CC33' + } + }, + { + text: '关闭', + style: { + backgroundColor: '#ff0000' + } + } + ]; + return option_detail; +} +//详情、审批通过、审批驳回 +export function getDetailAndApprovePassAndApproveNoOption() { + let option_detail = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '审批\n通过', + style: { + backgroundColor: '#00CC33' + } + }, + { + text: '审批\n驳回', + style: { + backgroundColor: '#F56C6C' + } + }, + { + text: '关闭', + style: { + backgroundColor: '#ff0000' + } + } + ]; + return option_detail; +} +//详情、处理、审批不通过 +export function getDetailAndHandleOption() { + let option_detail = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '处理', + style: { + backgroundColor: '#00CC33' + } + }, + { + text: '关闭', + style: { + backgroundColor: '#ff0000' + } + } + ]; + return option_detail; +} +//详情、重新添加、关闭 +export function getDetailAndAddAndCloseOption() { + let option_detail = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '重新\n添加', + style: { + backgroundColor: '#E6A23C' + } + }, + { + text: '关闭', + style: { + backgroundColor: '#F56C6C' + } + } + ]; + return option_detail; +} +// 采购退货返回侧滑按钮 详情 、编辑、库位、移除 +export function getPurchaseReceiptOption(allowModifyQty, allowModifyLocation) { + var option = [] + option.push(...getDetailOption()) + if (allowModifyQty == "TRUE") { + option.push(...getEditOption()) + } + if (allowModifyLocation == "TRUE") { + option.push(...getLocationOption()) + } + option.push(...getRemoveOption()) + return option; +} + +//详情 +export function getDetailOption() { + let option_detail = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }]; + return option_detail; +} + +//详情移除(扫描后不允许修改数量) +export function getDetailRemoveOption() { + let option_detail_edit_remove = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '移除', + style: { + backgroundColor: '#F56C6C' + } + } + ]; + return option_detail_edit_remove; +} + +export function getRemoveOption() { + let option_detail_remove = [{ + text: '移除', + style: { + backgroundColor: '#F56C6C' + } + }]; + return option_detail_remove; +} + +export function getAddAgainOption() { + let option_detail_remove = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, { + text: '重新\n添加', + style: { + backgroundColor: '#E6A23C' + } + }]; + return option_detail_remove; +} + + + +export function getEditOption() { + let option_detail_edit = [{ + text: '编辑', + style: { + backgroundColor: '#F1A532' + } + }]; + return option_detail_edit; +} +export function getLocationOption() { + let option_detail_location = [{ + text: '库位', + style: { + backgroundColor: '#00A3FF' + } + }]; + return option_detail_location; +} + + +//清空 +export function getClearOption() { + let option_detail_edit_remove = [{ + text: '清空', + style: { + backgroundColor: '#F56C6C' + } + }]; + return option_detail_edit_remove; +} + + +//详情编辑移除 +export function getDetailEditRemoveOption() { + let option_detail_edit_remove = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '编辑', + style: { + backgroundColor: '#F1A532' + } + }, + { + text: '移除', + style: { + backgroundColor: '#F56C6C' + } + } + ]; + return option_detail_edit_remove; +} + + +//详情编辑放弃 +export function getDetailGiveupOption() { + let option_detail_giveup = [{ + text: '详情', + style: { + backgroundColor: '#3C9CFF' + } + }, + { + text: '放弃', + style: { + backgroundColor: '#F56C6C' + } + } + ]; + return option_detail_giveup; +} + + + +//详情编辑移除 +export function getEditRemoveOption() { + let option_edit_remove = [{ + text: '编辑', + style: { + backgroundColor: '#F1A532' + } + }, + { + text: '移除', + style: { + backgroundColor: '#F56C6C' + } + } + ]; + return option_edit_remove; +} + + +// 库存状态字典项 +export function getInventoryStatusArray() { + let array = [{ + text: '待检', + value: "INSP" + }, { + text: '合格', + value: "OK" + }, { + text: '不合格', + value: "NOK" + }, { + text: '隔离', + value: "HOLD" + }, { + text: '报废', + value: "SCRAP" + }] + return array; +} + +// 业务类型字典项 +export function getBusinessTypeArray() { + let array = [{ + text: '供应商发货', + value: "SupplierDeliver" + }, { + text: '采购收货', + value: "PurchaseReceipt" + }, { + text: '采购退货', + value: "PurchaseReturn" + }, { + text: '采购上架', + value: "PurchasePutaway" + }] + return array; +} + +export function getLocationTypeArray(data) { + var list = [] + if (data == undefined || data == null || data == "") { + return list + } + + if (data.indexOf(',') < 0) { + list.push(data) + } else { + var arrayItems = data.split(',') + arrayItems.forEach(res => { + list.push(res) + }) + } + + return list +} diff --git a/common/balance.js b/common/balance.js new file mode 100644 index 0000000..1a53c9f --- /dev/null +++ b/common/balance.js @@ -0,0 +1,477 @@ +import { + getManagementPrecision, + getPrecisionStrategy, + getBalanceByFilter +} from '@/api/request2.js'; + +/** + * + 获取管理精度查询策略参数 + * @param {*} + * + */ +export function getPrecisionStrategyParams(detailSource) { + var itemList = [] + detailSource.forEach(item => { + item.subList.forEach(detail => { + if (detail.scaned) { + var filterResult = itemList.filter(res => { + if (res.itemCode == item.itemCode && + res.locationCode == detail.toLocationCode) { + return res + } + }) + //去掉重复元素 + if (filterResult.length == 0) { + var result = { + itemCode: item.itemCode, + locationCode: detail.toLocationCode + } + itemList.push(result) + } + + } + }) + }) + return itemList; +} +/** + * + 获取管理精度查询策略参数 + * @param {*} + * + */ +export function getPrecisionStrategyParamsByLocation(detailSource, toLocationCode) { + var itemList = [] + detailSource.forEach(item => { + item.subList.forEach(detail => { + if (detail.scaned) { + detail.toLocationCode = toLocationCode; + var filterResult = itemList.filter(res => { + if (res.itemCode == item.itemCode && + res.locationCode == detail.toLocationCode) { + return res + } + }) + //去掉重复元素 + if (filterResult.length == 0) { + var result = { + itemCode: item.itemCode, + locationCode: detail.toLocationCode + } + itemList.push(result) + } + + } + }) + }) + return itemList; +} + +/** + * "itemCode": [], + "locationCode":"INSPECT" + 管理精度策略 + * @param {*} + * + */ +export function getPrecisionStrategyList(itemList, callback) { + // let jsonParem = JSON.stringify(param) + let result = { + list: [], + success: true, + message: '' + }; + + getPrecisionStrategy(itemList).then(res => { + if (res.data == null) { + result.success = false + result.message = '未查询到管理精度信息' + } else { + result.list = res.data; + } + callback(result); + }).catch(error => { + result.success = false; + result.message = error; + callback(result); + }) +} + +/** + * "itemCode": [], + "locationCode":"INSPECT" + 管理精度策略 + * @param {*} + * + */ +export function getManagementPrecisions(itemCodes, locationCode, callback) { + // let jsonParem = JSON.stringify(param) + let result = { + list: [], + success: true, + message: '' + }; + + var params = { + itemCodes: itemCodes, + locationCode: locationCode + } + getManagementPrecision(params).then(res => { + if (res.data == null) { + result.success = false + result.message = '未查询到管理精度信息' + } else { + result.list = res.data; + } + callback(result); + }).catch(error => { + result.success = false; + result.message = error; + callback(result); + }) +} + +export function getBalanceByManagementPrecision(label, locationCode, fromInventoryStatuses, callback) { + let result = { + list: [], + success: true, + message: '' + }; + let params = { + itemCodes: [label.itemCode], + locationCode: locationCode + }; + // let jsonParem = JSON.stringify(param) + getManagementPrecision(params).then(res => { + let managementPrecision = res.data[0].ManagementPrecision; + switch (managementPrecision) { + case 'BY_PACKAGING': + byPacking(label, locationCode, fromInventoryStatuses, res => { + res.managementPrecision = managementPrecision; + callback(res); + }); + break; + case 'BY_BATCH': + byBatch(label, locationCode, fromInventoryStatuses, res => { + res.managementPrecision = managementPrecision; + callback(res); + }); + break; + case 'BY_QUANTITY': + byQuantity(label, locationCode, fromInventoryStatuses, res => { + res.managementPrecision = managementPrecision; + callback(res); + }); + break; + case 'BY_UNIQUEID': + byUniqueId(label, fromInventoryStatuses, res => { + res.managementPrecision = managementPrecision; + callback(res); + }); + break; + } + }).catch(error => { + let result = { + success: false, + message: error + }; + callback(result); + }) +} +/** 按包装管理查询库存 + * @param {Object} label + * @param {Object} locationCode + * @param {Object} callback + */ +export function byPacking(label, locationCode, fromInventoryStatuses, callback) { + let result = { + success: true, + message: '', + data: {} + }; + var filters = [] + filters.push({ + column: "packingNumber", + action: "==", + value: label.packingNumber + }) + filters.push({ + column: "itemCode", + action: "==", + value: label.itemCode + }) + filters.push({ + column: "batch", + action: "==", + value: label.batch + }) + filters.push({ + column: "locationCode", + action: "==", + value: locationCode + }) + if (fromInventoryStatuses != null && fromInventoryStatuses != "") { + filters.push({ + column: "inventoryStatus", + action: "in", + value: fromInventoryStatuses + }) + } + + + var params = { + filters: filters, + pageNo: 1, + pageSize: 100, + } + getBalanceByFilter(params).then(res => { + if (res.data == null) { + result.success = false; + result.message = + "按包装管理查询、未查询到物料号[" + label.itemCode + "]" + + "到箱码[" + label.packingNumber + "]" + + "批次[" + label.batch + "]" + + "库位[" + label.locationCode + "]的信息" + } else { + result.success = true; + result.data = res.data; + } + + callback(result) + }).catch(err => { + result.success = false; + result.data = null; + result.message = err; + callback(result) + }) +} +/** 按批次管理查询库存 + * @param {Object} label + * @param {Object} locationCode + * @param {Object} callback + */ +export function byBatch(label, locationCode, fromInventoryStatuses, callback) { + var filters = [] + filters.push({ + column: "itemCode", + action: "==", + value: label.itemCode + }) + filters.push({ + column: "batch", + action: "==", + value: label.batch + }) + filters.push({ + column: "packingNumber", + action: "==", + value: null + }) + filters.push({ + column: "locationCode", + action: "==", + value: locationCode + }) + + if (fromInventoryStatuses != null && fromInventoryStatuses != "") { + filters.push({ + column: "inventoryStatus", + action: "in", + value: fromInventoryStatuses + }) + } + + var params = { + filters: filters, + pageNo: 1, + pageSize: 100, + } + + let result = { + success: true, + message: '', + data: {} + }; + getBalanceByFilter(params).then(res => { + if (res.data == null) { + result.success = false; + result.message = + "按批次管理查询、未查询到物料号[" + label.itemCode + "]" + + "批次[" + label.batch + "]" + + "库位[" + label.locationCode + "]的信息" + } else { + result.success = true; + result.data = res.data; + } + callback(result) + }).catch(err => { + result.success = false; + result.data = null; + result.message = err.message; + callback(result) + }) +} +/** 按数量管理查询库存 + * @param {Object} label + * @param {Object} locationCode + * @param {Object} callback + */ +export function byQuantity(label, locationCode, fromInventoryStatuses, callback) { + let result = { + success: true, + message: '', + data: {} + }; + + var filters = [] + filters.push({ + column: "itemCode", + action: "==", + value: label.itemCode + }) + filters.push({ + column: "packingNumber", + action: "==", + value: null + }) + filters.push({ + column: "batch", + action: "==", + value: null + }) + filters.push({ + column: "locationCode", + action: "==", + value: locationCode + }) + + if (fromInventoryStatuses != null && fromInventoryStatuses != "") { + filters.push({ + column: "inventoryStatus", + action: "in", + value: fromInventoryStatuses + }) + } + + var params = { + filters: filters, + pageNo: 1, + pageSize: 100, + } + + getBalanceByFilter(params).then(res => { + if (res.data == null) { + result.success = false; + result.message = + "按数量管理查询、未查询到物料号[" + label.itemCode + "]" + + "库位[" + label.locationCode + "]的信息" + } else { + result.success = true; + result.data = res.data; + } + callback(result) + }).catch(err => { + result.success = false; + result.data = null; + result.message = err.message; + callback(result) + }) +} +/** 按唯一码管理查询库存 + * @param {Object} label + * @param {Object} locationCode + * @param {Object} callback + */ +export function byUniqueId(label, locationCode, fromInventoryStatuses, callback) { + let param = { + packingNumber: label.packingNumber + }; + let result = { + success: true, + message: '', + data: {} + }; + + var filters = [] + filters.push({ + column: "packingNumber", + action: "==", + value: label.packingNumber + }) + + if (fromInventoryStatuses != null && fromInventoryStatuses != "") { + filters.push({ + column: "inventoryStatus", + action: "in", + value: fromInventoryStatuses + }) + } + + var params = { + filters: filters, + pageNo: 1, + pageSize: 100, + } + + getBalanceByFilter(params).then(res => { + if (res.data == null) { + result.success = false; + result.message = + "按唯一码管理查询、未查询到箱码[" + label.packingNumber + "]" + + "的信息" + } else { + result.success = true; + result.data = res.data; + } + callback(result) + }).catch(err => { + result.success = false; + result.data = null; + result.message = err.message; + callback(result) + }) +} +/** + * 查询指定库位下的库存 + * @param {*} param + * @param {*} callback + */ +export function balanceByLocation(locationCode, callback) { + let result = { + success: true, + message: '', + data: {} + }; + + var filters = [] + filters.push({ + column: "locationCode", + action: "==", + value: locationCode + }) + + var params = { + filters: filters, + pageNo: 1, + pageSize: 100, + } + + getBalanceByFilter(params).then(res => { + if (res.data == null) { + result.success = false; + result.message = + "按唯一码管理查询、未查询到库位[" + label.locationCode + "]" + + "的信息" + } else { + result.success = true; + result.data = res.data; + } + callback(result) + }).catch(err => { + result.success = false; + result.data = null; + result.message = err.message; + callback(result) + }) +} diff --git a/common/basic.js b/common/basic.js new file mode 100644 index 0000000..b725be3 --- /dev/null +++ b/common/basic.js @@ -0,0 +1,1014 @@ +let maxPageSize = 1000; +export { + maxPageSize +} + +import { calc } from '@/common/calc' + +let jobStatusList = []; +let itemStatusList = []; +let locationTypeList = []; +let uomList = []; +let inventoryStatusList = []; +let containerTypeList = []; +let packUnitList = []; +let requestStatusList = []; +let unplannedReceiptReasonList = []; +let unplannedIissueReason = []; +let scrapReasonList = []; +let inspectFailedReasonList = []; + + + +//获取字典信息 +export function clearCacheData() { + jobStatusList = []; + itemStatusList = []; + locationTypeList = []; + uomList = []; + inventoryStatusList = []; + containerTypeList = []; + packUnitList = []; + requestStatusList = []; + unplannedReceiptReasonList = []; + unplannedIissueReason = []; + scrapReasonList = []; + inspectFailedReasonList = []; + +} + +//获取字典信息 +export function getDirectoryInfo(type) { + var result = []; + var list = uni.getStorageSync("dictionary") + if (list != undefined && list.length > 0) { + for (let item of list) { + if (item.type == type) { + result = item.subList + break; + } + } + } + + return result +} + + + +//将字典项转为数组 +export function getDirectoryItemArray(data) { + var array = [] + if (data == undefined || data == null || data == "") { + return array + } + + if (data.indexOf(',') < 0) { + array.push(data) + } else { + var arrayItems = data.split(',') + arrayItems.forEach(res => { + array.push(res) + }) + } + return array +} + +//查询字典项是否在列表中 +export function checkDirectoryItemExist(list, type) { + let exist = false; + if (list == null || list.length == 0) { + exist = true; + } else { + var temp = list.filter(res => { + if (res == type) { + return res + } + }) + if (temp != undefined && temp.length > 0) { + exist = true + } + } + return exist +} + +//获取任务状态 +export function getJobStateInfo(value) { + var resultInfo = ""; + if (jobStatusList.length == 0) { + jobStatusList = getDirectoryInfo("job_status") + } + if (jobStatusList.length > 0) { + for (let item of jobStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取任务状态样式 +export function getJobStateStyle(value) { + let item = getJobStateInfo(value); + if (item == null || item == '') { + return 'other' + } else { + if (item.remark == '') { + return 'other' + } else { + return item.remark; + } + } +} + +//获取库位描述 +export function getListLocationTypeDesc(lst) { + let desc = ''; + lst.forEach(res => { + desc += getLocationTypeInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + +//获取物品状态 +export function getItemStateInfo(value) { + var resultInfo = ""; + if (itemStatusList.length == 0) { + itemStatusList = getDirectoryInfo("item_status") + } + if (itemStatusList.length > 0) { + for (let item of itemStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库位类型 +export function getLocationTypeInfo(value) { + var resultInfo = ""; + if (locationTypeList.length == 0) { + locationTypeList = getDirectoryInfo("location_type") + } + if (locationTypeList.length > 0) { + for (let item of locationTypeList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库位类型名称 +export function getLocationTypeName(value) { + let location = getLocationTypeInfo(value); + + return location == '' ? value : location.label; +} + +//获取计量单位 +export function getUnitInfo(value) { + var resultInfo = ""; + if (uomList.length == 0) { + uomList = getDirectoryInfo("uom") + } + if (uomList.length > 0) { + for (let item of uomList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取包装单位 +export function getStdPackUnitInfo(value) { + var resultInfo = ""; + if (packUnitList.length == 0) { + packUnitList = getDirectoryInfo("pack_unit") + } + if (packUnitList.length > 0) { + for (let item of packUnitList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取申请状态 +export function getRequestStateInfo(value) { + var resultInfo = ""; + if (requestStatusList.length == 0) { + requestStatusList = getDirectoryInfo("request_status") + } + if (requestStatusList.length > 0) { + for (let item of requestStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库存状态 +export function getInventoryStatusInfo(value) { + var resultInfo = ""; + if (inventoryStatusList.length == 0) { + inventoryStatusList = getDirectoryInfo("inventory_status") + } + if (inventoryStatusList.length > 0) { + for (let item of inventoryStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库存样式 +export function getInventoryStatusStyle(value) { + let item = getInventoryStatusInfo(value); + if (item == null || item == '') { + return 'other' + } else { + if (item.remark == '') { + return 'other' + } else { + return item.remark; + } + } +} + +//获取库存状态 +export function getInventoryStatusName(value) { + let item = getInventoryStatusInfo(value); + if (item == null || item == '') { + return value + } else { + if (item.label == '') { + return value + } else { + return item.label; + } + } +} + + +//获取状态描述 +export function getInventoryStatusDesc(lst) { + let desc = ''; + lst.forEach(res => { + desc += getInventoryStatusInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + + +//获取器具状态 +export function getContainerStatusInfo(value) { + var resultInfo = ""; + if (containerTypeList.length == 0) { + containerTypeList = getDirectoryInfo("container_type") + } + if (containerTypeList.length > 0) { + for (let item of containerTypeList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取计划外入库原因 +export function getUnPlannedReceiptReasonList(value) { + if (unplannedReceiptReasonList.length == 0) { + unplannedReceiptReasonList = getDirectoryInfo("unplanned_receipt_reason") + } + unplannedReceiptReasonList.forEach(res => { + res.text = res.label; + res.value = res.code + }) + return unplannedReceiptReasonList +} + +//获取计划外出库原因 +export function getUnPlannedIssuseReasonList(value) { + if (unplannedIissueReason.length == 0) { + unplannedIissueReason = getDirectoryInfo("unplanned_issue_reason") + } + unplannedIissueReason.forEach(res => { + res.text = res.label; + res.value = res.code + }) + return unplannedIissueReason +} + + +//获取检验不合格原因 +export function getInspectReasonList(value) { + if (inspectFailedReasonList.length == 0) { + inspectFailedReasonList = getDirectoryInfo("inspect_failed_reason") + } + inspectFailedReasonList.forEach(res => { + res.text = res.label; + res.value = res.code + }) + return inspectFailedReasonList +} + + +// //数量状态 +// export function getCoutJobStatuStyle(val) { +// if (val == 1) return 'state_inspect' +// else if (val == 2) return 'state_ok' +// else if (val == 3) return 'state_nook' +// else return 'other' +// } + +// export function getCountJobStatuDesc(val) { +// if (val == 1) return '待检' +// else if (val == 2) return '合格' +// else if (val == 3) return '不合格' +// else return "未知" +// } + +// export function getPartCodeState(val) { +// if (val == 0) return '可用' +// else if (val == 1) return '新增' +// else if (val == 2) return '隔离' +// else if (val == 3) return '未知' +// else return '未知' +// } + +// export function getLocationState(val) { +// if (val == 'kwlxINSP') return '待检库' +// else if (val == 'kwlxRAW') return '原料库' +// else if (val == 'kwlxSEMI') return '半成品库' +// else if (val == 'kwlxFG') return '成品库' +// else if (val == 'kwlxWIP') return '线边库' +// else if (val == 'kwlxHOLD') return '隔离库' +// else if (val == 'kwlxSCRAP') return '报废库' +// else if (val == 'kwlxNOK') return '不合格品库' +// else if (val == 'kwxOVERFLOW') return '溢出库' +// else if (val == 'kwlxCUsT') return '客户寄售库' +// else if (val == 'kwlxOUTSIDE') return '外库' +// else if (val == 'kwlxDIFF') return '盘点差异库' +// else if (val == 'kwxTRANSPORT') return '在途库' +// else return '未知' + +// } + +// export function getLocationStyle(val) { +// if (val == 'kwlxRAW') return 'state_raw' +// else if (val == 'kwlxFG') return 'state_fg' +// else if (val == 'kwlxSEMI') return 'state_semi' +// else if (val == 'kwlxHOLD') return 'state_hold' +// else if (val == 4) return 'state_unk' +// } + +// //任务状态 +// export function getJobStatuStyle(val) { +// if (val == 'JOB_PENDING') return 'job_state_un-doing' +// else if (val == '1') return 'job_state_doing' +// else if (val == 'reztDONE') return 'job_state_completed' +// else if (val == 'rwztCLOSED') return 'job_state_close' +// else if (val == 'rwztCANCELLED') return 'job_state_cancelled' +// else return 'unk' +// } +// //任务状态 +// //open pending completed close +// export function getJobStatuDesc(val) { +// if (val == 'JOB_PENDING') return '待处理' +// else if (val == '1') return '执行中' +// else if (val == 'reztDONE') return '完成' +// else if (val == 'rwztCLOSED') return '关闭' +// else if (val == 'rwztCANCELLED') return '作废' +// else return '其他' +// } + +// //检验任务状态 +// export function getInspectTypeStyle(val) { +// if (val == 0) return 'unk' +// else if (val == 1) return 'exempt' +// else if (val == 2) return 'full' +// else if (val == 3) return 'sampling' +// else if (val == 4) return 'pick' +// else return 'other' +// } +// //open pending completed close +// export function getInspectTypeDesc(val) { +// if (val == 0) return '未知' +// else if (val == 1) return '免检' +// else if (val == 2) return '全检' +// else if (val == 3) return '抽检' +// else if (val == 4) return '挑选' +// else return '其他' +// } + + +// //库存状态 +// export function getInventoryStatusStyle(val) { +// if (val == 'kcztUNK') return 'unk' +// else if (val == 'kcztINSP') return 'inventory_status_insp' +// else if (val == 'kcztOK') return 'inventory_status_ok' +// else if (val == 'kcztNOK') return 'inventory_status_nok' +// else if (val == 'kcztHOLD') return 'inventory_status_hold' +// else if (val == 'kcztSCRAP') return 'inventory_status_scarp' +// else return 'other' +// } + + +// //库存状态 +// export function getInventoryStatusDesc(val) { +// if (val == 'kcztUNK') return '未知' +// else if (val == 'kcztINSP') return '待检' +// else if (val == 'kcztOK') return '合格' +// else if (val == 'kcztNOK') return '不合格' +// else if (val == 'kcztHOLD') return '隔离' +// else if (val == 'kcztSCRAP') return '报废' +// else return '其他' +// } + +// //库存状态 +// export function getInventoryStatusStyle(val) { +// if (val == 0) return 'unk' +// else if (val == 1) return 'insp' +// else if (val == 2) return 'ok' +// else if (val == 3) return 'nok' +// else if (val == 4) return 'hold' +// else if (val == 5) return 'scarp' +// else if (val == 6) return 'frozen' +// else if (val == 31) return 'nok' +// else return 'other' +// } + + +// //库存状态kcztINSP +// export function getInventoryStatusDesc(val) { +// if (val == 0) return '未知' +// else if (val == 1) return '待检' +// else if (val == 2) return '合格' +// else if (val == 3) return '不合格' +// else if (val == 4) return '隔离' +// else if (val == 5) return '报废' +// else if (val == 6) return '冻结' +// else if (val == 31) return '不合格' +// // else if (val == 31) return '目检不合格' +// else return '其他' +// } + +// //物料状态 +// export function getItemStatusStyle(val) { +// if (val == "wpztUNK") return 'item_unk' +// else if (val == "wpztENABLE") return 'item_active' +// else if (val == "wpztHOLD") return 'item_hold' +// else if (val == "wpztNEW") return 'item_new' +// else if (val == "wpztPLAN") return 'item_plan' +// else if (val == "wpztDISABLE") return 'item_disable' +// else return 'other' +// } + +// export function getItemStatusStyle(val) { +// if (val == 0) return 'unk_item' +// else if (val == 1) return 'active_item' +// else if (val == 2) return 'hold_item' +// else if (val == 3) return 'new_item' +// else if (val == 4) return 'plan_item' +// else if (val == 5) return 'disable_item' +// else return 'other' +// } + + +// //物料状态描述 +// export function getItemStatusDesc(val) { +// if (val == "wpztUNK") return '未知' +// else if (val == "wpztENABLE") return '可用' +// else if (val == "wpztHOLD") return '隔离' +// else if (val == "wpztNEW") return '新增' +// else if (val == "wpztPLAN") return '规划' +// else if (val == "wpztDISABLE") return '禁用' +// else return '其他' +// } + +// //盘点状态 +// export function getCountStageTypeStyle(val) { +// if (val == 0) return 'unk' +// else if (val == 1) return 'initial' +// else if (val == 2) return 'afresh' +// else if (val == 3) return 'supervision' +// else return 'other' +// } + + +// //盘点状态 +// export function getCountStageDesc(val) { +// if (val == 0) return '未知' +// else if (val == 1) return '初盘' +// else if (val == 2) return '重盘' +// else if (val == 3) return '监盘' +// else return '其他' +// } + +// //盘点计划类型 +// export function getCheckTypeDesc(val) { +// if (val == 0) return '未知' +// else if (val == 1) return '周期盘点' +// else if (val == 2) return '物理盘点' +// else return '其他' +// } + +// //盘点方式 +// export function getCountMethodDesc(val) { +// if (val == 0) return '未知' +// else if (val == 1) return '库位盘点' +// else if (val == 2) return '物品盘点' +// else if (val == 3) return '库位物料盘点' +// else return '其他' +// } + +// //获取库位类型 +// export function getLocationType(val) { +// if (val == 'kwlxINSP') return 'location_inspect' +// else if (val == 'kwlxRAW') return 'location_raw' +// else if (val == 'kwlxSEMI') return 'location_semi' +// else if (val == 'kwlxFG') return 'location_fg' +// else if (val == 'kwlxWIP') return 'location_wip' +// else if (val == 'kwlxHOLD') return 'location_hold' +// else if (val == 'kwlxSCRAP') return 'location_scrap' +// else if (val == 'kwlxNOK') return 'location_nok' +// else if (val == 'kwxOVERFLOW') return 'location_overflow' +// else if (val == 'kwlxCUsT') return 'location_cust' +// else if (val == 'kwlxOUTSIDE') return 'location_outside' +// else if (val == 'kwlxDIFF') return 'location_diff' +// else if (val == 'kwxTRANSPORT') return 'location_transport' +// else return 'location_other' +// } + +// //获取库位类型描述 +// export function getLocationTypeDesc(val) { +// if (val == 'kwlxINSP') return '待检库' +// else if (val == 'kwlxRAW') return '原料库' +// else if (val == 'kwlxSEMI') return '半成品库' +// else if (val == 'kwlxFG') return '成品库' +// else if (val == 'kwlxWIP') return '线边库' +// else if (val == 'kwlxHOLD') return '隔离库' +// else if (val == 'kwlxSCRAP') return '报废库' +// else if (val == 'kwlxNOK') return '不合格品库' +// else if (val == 'kwxOVERFLOW') return '溢出库' +// else if (val == 'kwlxCUsT') return '客户寄售库' +// else if (val == 'kwlxOUTSIDE') return '外库' +// else if (val == 'kwlxDIFF') return '盘点差异库' +// else if (val == 'kwxTRANSPORT') return '在途库' +// else return '其他' + +// } + +// //获取任务类型描述 +// export function getJobType(val) { +// if (val == 0) return 'uno' +// else if (val == 1) return 'PurchaseReceiptJob' //采购收货 +// else if (val == 2) return 'PurchaseReturnJob' //采购退货任务 +// else if (val == 3) return 'InspectJob' //检验任务 +// else if (val == 4) return 'PutawayJob' //上架任务 +// else if (val == 5) return 'ProductReceiveJob' //完工收货任务 +// else if (val == 6) return 'IssueJob' //发料任务 +// else if (val == 7) return 'DeliverJob' //发货任务 +// else if (val == 8) return 'CheckJob' //校验任务 +// else if (val == 9) return 'CountJob' //盘点任务 +// else return 'Other' +// } + +export function getPackingNumberAndBatchByList(managementList, itemCode, packingNumber, locationCode, batch) { + var itemInfo = { + packingNumber: "", + batch: "" + } + var manageType = queryManageModelByList(managementList, itemCode, locationCode) + if (manageType == "BY_QUANTITY") { + itemInfo.packingNumber = "" + itemInfo.batch = "" + } else if (manageType == "BY_BATCH") { + itemInfo.packingNumber = "" + itemInfo.batch = batch + } else if (manageType == "BY_PACKAGING") { + itemInfo.packingNumber = packingNumber + itemInfo.batch = batch + } else if (manageType == "BY_UNIQUE_ID") { + itemInfo.packingNumber = packingNumber + itemInfo.batch = batch + } else if (manageType == "") { + itemInfo.packingNumber = packingNumber + itemInfo.batch = batch + } + return itemInfo; +} + +export function queryManageModelByList(managementList, itemCode, locationCode) { + var result = managementList.find(res => { + if (res.itemCode == itemCode && res.locationCode == locationCode) { + return res.ManagementPrecision + } + }) + + if (result != undefined) { + return result.ManagementPrecision + } else { + return "" + } +} + + +// 获取业务类型字典项 +export function getBusinessTypeDesc(type) { + if (type == "SupplierDeliver") { + return "供应商发货" + } else if (type = "PurchaseReceipt") { + return "采购收货"; + } else if (type = "PurchaseReturn") { + return "采购退货"; + } else if (type = "PurchasePutaway") { + return "采购上架"; + } +} + + +export function queryManageModel(managementList, itemCode) { + var result = managementList.filter(res => { + if (res.itemCode == itemCode) { + return res.ManagementPrecision + } + }) + + if (result != undefined) { + return result[0].ManagementPrecision + } else { + return "" + } +} + +export function getPackingNumberAndBatch(managementList, itemCode, packingNumber, batch) { + var itemInfo = { + packingNumber: "", + batch: "" + } + + var manageType = queryManageModel(managementList, itemCode) + if (manageType == "BY_QUANTITY") { + itemInfo.packingNumber = "" + itemInfo.batch = "" + } else if (manageType == "BY_BATCH") { + itemInfo.packingNumber = "" + itemInfo.batch = batch + } else if (manageType == "BY_PACKAGING") { + itemInfo.packingNumber = packingNumber + itemInfo.batch = batch + } else if (manageType == "BY_UNIQUE_ID") { + itemInfo.packingNumber = packingNumber + itemInfo.batch = batch + } + return itemInfo; +} + +// //提示是否消息 +// export function showConfirmMsg(content, callback) { +// uni.showModal({ +// title: '提示', +// cancelText: '否', +// confirmText: '是', +// content: content, +// success: function(res) { +// if (res.confirm) { +// callback(true); +// } else { +// callback(false); +// } +// }, +// }) +// scanErrorAudio(); +// } + +export function compareTime() { + return function(a, b) { + // 按照时间降序 + return Date.parse(a.time) - Date.parse(a.time) + } +} +//升序 +export function compareAsc(key) { + return function(a, b) { + var val1 = a[key]; + var val2 = b[key]; + return val1 - val2; + } +} +//倒序 +export function compareDesc(key) { + return function(a, b) { + var val1 = a[key]; + var val2 = b[key]; + return val2 - val1; + } +} + +export function goHome() { + uni.reLaunch({ + url: '/pages/index/index' + }).catch((e) => {}); + +} +/** + * 获取当天时间2023-11-07 00:00:00-->2023-11-07 23:59:59 + */ +export function getTodayDate() { + var startTime = new Date(new Date().toLocaleDateString()).getTime(); + var endTime = startTime + 24 * 60 * 60 * 1000 - 1 + console.log("获取时间", startTime + "," + endTime) + return startTime + "," + endTime; +} + +export function getCurrDateOneMonthsTimes() { + var end = Date.now() + // var end = new Date('2019/12/31 15:18').getTime() + var day = 31 + var enda = new Date(end); + var endm = enda.getMonth() + 1; + var d = enda.getDate(); + if (endm == 4 || endm == 6 || endm == 9 || endm == 11) { + day = 30 + } else { + if (d == 31) { + day = 30 + } + if (endm == 7 || endm == 12) { + day = 31 + } + } + if (endm == 1) { + var endy = enda.getFullYear(); + day = 31 + if (d == 31) { + day = 28 + } + if (d == 30) { + day = 29 + } + if (d == 29) { + day = 30 + } + if (endy % 4 == 0) { + day = 31 + if (d == 31) { + day = 29 + } + if (d == 30) { + day = 30 + } + if (d == 29) { + day = 31 + } + } + } + if (endm == 2) { + var endy = enda.getFullYear(); + day = 28 + if (endy % 4 == 0) { + day = 29 + } + } + var start = 1000 * 60 * 60 * 24 * day + var interval = end + start; + return interval; +} + + +export function getCurrDateTimes() { + var time = (new Date()).getTime(); + return time; +} + +export function getBatch() { + var date = new Date(); + var year = date.getFullYear(); //年 + var month = date.getMonth() + 1; //月 + var day = date.getDate(); //日 + var batch = year.toString() + month.toString() + day.toString() + return batch; +} + +export function getCurrDate() { + var date = new Date(); + return getDate(date); +} + +export function getCurrDateTime() { + var date = new Date(); + return getDate(date) + " " + getTime(date); +} + +export function getISODateTime() { + var date = new Date(); + return getDate(date) + "T" + getTime(date) + "Z"; +} + +//格式化处理 +export function dateFormat(time) { + var result = "" + if (time != null) { + let date = new Date(time); + result = getDate(date) + " " + getTime(date); + } + + return result; +} + +//获取日期部分 +export function getDate(date) { + var year = date.getFullYear(); //年 + var month = date.getMonth() + 1; //月 + var day = date.getDate(); //日 + + month = month < 10 ? "0" + month : month; + day = day < 10 ? "0" + day : day; + return year + "-" + month + "-" + day; +} + +//获取时间部分 +export function getTime(date) { + let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours(); + let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes(); + let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds(); + // 拼接 + return hours + ":" + minutes + ":" + seconds; +} + +//将20220713转成2022-07-13 +export function toYYYY_MM_DD(value) { + return value.substring(0, 4) + "-" + value.substring(4, 6) + "-" + value.substring(6, 8) +} + +export function getRootFontSize() { + const self = this; + var fontSize = getApp().globalData.rootFontSize; + if (fontSize) { + return fontSize; + } else { + fontSize = uni.getStorageSync('root_font_size'); + if (fontSize) { + getApp().globalData.rootFontSize = fontSize; + } else { + fontSize = '20px'; //默认字体大小 + self.setRootFontSize(fontSize); + } + return fontSize; + + } +} + +export function getRemoveOption() { + let options = [{ + text: '移除', + style: { + backgroundColor: '#F56C6C' + } + }] + return options; +} + +export function setRootFontSize(fontSize) { + uni.setStorageSync('root_font_size', fontSize); + getApp().globalData.rootFontSize = fontSize; +} + + +export function scanErrorAudio() { + var music = null; + music = uni.createInnerAudioContext(); //创建播放器对象 + music.src = "../../static/video/error.wav"; + music.volume = 1; + music.play(); //执行播放 + music.onEnded(() => { + //播放结束 + music = null; + }); +} + + +export function newMessageAudio() { + var music = null; + music = uni.createInnerAudioContext(); //创建播放器对象 + music.src = "../../static/video/error.wav"; + music.volume = 1; + music.play(); //执行播放 + music.onEnded(() => { + //播放结束 + music = null; + }); +} + + +export function vibrate() { + uni.vibrateLong({ + success: function() { + + } + }) +} + + +export function getDataSource(subList) { + let items = []; + subList.forEach(detail => { + var item = items.find(r => + r.itemCode == detail.itemCode) + if (item == undefined) { + item = createItemInfo(detail); + let newDetail = createDetailInfo(detail); // + item.subList.push(newDetail); + items.push(item) + } else { + item.qty = calc.add(item.qty,detail.qty) + let newDetail = createDetailInfo(detail); // + item.subList.push(newDetail); + } + }) + return items; +} + +export function createItemInfo(res) { + let item = { + itemCode: res.itemCode, + itemName: res.itemName, + stdPackQty: Number(res.stdPackQty), + stdPackUnit: res.stdPackUnit, + qty: Number(res.qty), + handleQty: 0, + uom: res.uom, + subList: [] + } + return item; +} + +export function createDetailInfo(data) { + data.scaned = false; + // data.record = {}; + let detail = data; + return detail; +} + +export function updateTitle(title) { + uni.setNavigationBarTitle({ + title: title + }) +} + +export function clearTirmAndWrap(content) { + return content.replace(/<\/?.+?\/?>|\r|\n|\s*/g, '') +} + +export function navigateBack(backIndex) { + let canNavBack = getCurrentPages() + if (canNavBack && canNavBack.length - 1 > backIndex) { + uni.navigateBack({ + delta: backIndex + }) + } else { + history.back(); + } +} +/** + * 深度克隆对象 + * @param {*} target + */ +export function deepCopyData(target) { + // 克隆原始类型和null + if (!(target !== null && (typeof target === 'object' || typeof target === 'function'))) { + return target; + } + + let cloneTarget = Array.isArray(target) ? [] : {}; + // 克隆对象和数组 + for (const key in target) { + cloneTarget[key] = deepCopyData(target[key]); + } + + return cloneTarget; +} diff --git a/common/calc.js b/common/calc.js new file mode 100644 index 0000000..2b48e48 --- /dev/null +++ b/common/calc.js @@ -0,0 +1,17 @@ +/* 解决js计算精度问题 */ +import { Decimal } from 'decimal.js';//引入 +class Calc { + add(num1,num2) { + return new Decimal(num1).add(new Decimal(num2)).toNumber() + } + sub(num1,num2) { + return new Decimal(num1).sub(new Decimal(num2)).toNumber() + } + mul(num1,num2) { + return new Decimal(num1).mul(new Decimal(num2)).toNumber() + } + div(num1,num2) { + return new Decimal(num1).div(new Decimal(num2)).toNumber() + } +} +export const calc = new Calc(); \ No newline at end of file diff --git a/common/detail.js b/common/detail.js new file mode 100644 index 0000000..1ba7aa9 --- /dev/null +++ b/common/detail.js @@ -0,0 +1,83 @@ +import { + calc + } from '@/common/calc' + +import { Decimal } from 'decimal.js';//引入 + export function getDataSource(subList) { + let items = []; + subList.forEach(detail => { + var item = items.find(r => + r.itemCode == detail.itemCode) + if (item == undefined) { + item = createItemInfo(detail); + let newDetail = createDetailInfo(detail); // + item.subList.push(newDetail); + items.push(item) + } else { + item.qty = calc.add(item.qty, detail.qty) + let newDetail = createDetailInfo(detail); // + item.subList.push(newDetail); + } + }) + return items; + } + + export function createItemInfo(detail) { + let item = { + itemCode: detail.itemCode, + itemName: detail.itemName, + stdPackQty: Number(detail.stdPackQty) || undefined, + stdPackUnit: detail.stdPackUnit, + qty: Number(detail.qty), + handleQty: 0, + uom: detail.uom, + subList: [] + } + return item; + } + + export function createDetailInfo(data) { + data.scaned = false; + // data.record = {}; + let detail = data; + return detail; + } + + //根据明细创建记录 + export function createRecordInfo(detail, balance) { + var record = {} + // let record = JSON.parse(JSON.stringify(detail)); + //克隆对象,深度克隆,防止双向绑定同一个变量 + Object.assign(record, detail) + detail.scaned = true; + detail.balance = balance; + detail.recommendInventoryStatus = detail.inventoryStatus; + detail.inventoryStatus = balance.inventoryStatus; + record.qty = Number(balance.qty); + return record; + } + + //计算实际数量 + export function calcHandleQty(detailSource) { + for (let item of detailSource) { + item.handleQty = new Decimal(0).toNumber(); + // item.qty = new Decimal(0).toNumber(); + for (let detail of item.subList) { + if (detail != undefined && detail.scaned) { + item.handleQty = calc.add(item.handleQty,detail.handleQty); + // item.qty = calc.add(item.qty,detail.qty); + } + } + } + } + + + export function getScanCount(subList) { + let items = subList.filter(r => { + if (r.scaned) { + return r; + } + }) + let scanCount = items != null ? items.length : 0; + return scanCount; + } diff --git a/common/directory.js b/common/directory.js new file mode 100644 index 0000000..934b432 --- /dev/null +++ b/common/directory.js @@ -0,0 +1,516 @@ +let jobStatusList = []; +let itemStatusList = []; +let itemTypeList =[]; +let locationTypeList = []; +let uomList = []; +let inventoryStatusList = []; +let containerTypeList = []; +let packUnitList = []; +let requestStatusList = []; +let unplannedReceiptReasonList = []; +let unplannedIssueReasonList = []; +let unplannedIissueReason = []; +let scrapReasonList = []; +let inspectFailedReasonList = []; +let inspectResultList = []; +let nextActionList = []; +let inspectTypeList = []; +let sampleMethodList = []; +let transferModeList = []; +let countStageList = []; + + + + + +// 获取业务类型字典项 +export function getBusinessTypeDesc(type) { + if (type == "SupplierDeliver") { + return "供应商发货" + } else if (type = "PurchaseReceipt") { + return "采购收货"; + } else if (type = "PurchaseReturn") { + return "采购退货"; + } else if (type = "PurchasePutaway") { + return "采购上架"; + } +} + +//获取字典信息 +export function clearCacheData() { + jobStatusList = []; + itemStatusList = []; + itemTypeList =[]; + locationTypeList = []; + uomList = []; + inventoryStatusList = []; + containerTypeList = []; + packUnitList = []; + requestStatusList = []; + unplannedReceiptReasonList = []; + unplannedIssueReasonList = []; + unplannedIissueReason = []; + scrapReasonList = []; + inspectFailedReasonList = []; + inspectResultList = []; + nextActionList = []; + inspectTypeList = []; + sampleMethodList = []; + transferModeList = []; + countStageList = []; +} + +//获取字典信息 +export function getDirectoryInfo(type) { + + var result = []; + var list = uni.getStorageSync("dictionary") + if (list != undefined && list.length > 0) { + for (let item of list) { + if (item.type == type) { + result = item.subList + break; + } + } + } + + return result +} + +//将字典项转为数组 +export function getDirectoryItemArray(data) { + var array = [] + if (data == undefined || data == null || data == "") { + return array + } + + if (data.indexOf(',') < 0) { + array.push(data) + } else { + var arrayItems = data.split(',') + arrayItems.forEach(res => { + array.push(res) + }) + } + return array +} + +//查询字典项是否在列表中 +export function checkDirectoryItemExist(list, type) { + let exist = false; + if (list == null || list.length == 0) { + exist = true; + } else { + var temp = list.filter(res => { + if (res == type) { + return res + } + }) + if (temp != undefined && temp.length > 0) { + exist = true + } + } + return exist +} + + +//获取任务状态 +export function getJobStateInfo(value) { + var resultInfo = ""; + if (jobStatusList.length == 0) { + jobStatusList = getDirectoryInfo("job_status") + } + if (jobStatusList.length > 0) { + for (let item of jobStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取任务状态样式 +export function getJobStateStyle(value) { + let item = getJobStateInfo(value); + if (item == null || item == '') { + return 'other' + } else { + if (item.remark == '') { + return 'other' + } else { + return item.remark; + } + } +} + +//获取库位描述(多个库位) +export function getListLocationTypeDesc(list) { + let desc = ''; + list.forEach(res => { + desc += getLocationTypeInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + + +//获取物品状态(多个状态) +export function getListItemStateDesc(list) { + let desc = ''; + list.forEach(res => { + desc += getItemStateInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + +//获取物品类型(多个) +export function getListItemTypeDesc(list) { + let desc = ''; + list.forEach(res => { + desc += getItemTypeInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + +//获取物品类型 +export function getItemTypeInfo(value) { + var resultInfo = ""; + if (itemTypeList.length == 0) { + itemTypeList = getDirectoryInfo("item_type") + } + if (itemTypeList.length > 0) { + for (let item of itemTypeList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + + + + +//获取物品状态 +export function getItemStateInfo(value) { + var resultInfo = ""; + if (itemStatusList.length == 0) { + itemStatusList = getDirectoryInfo("item_status") + } + if (itemStatusList.length > 0) { + for (let item of itemStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库位类型 +export function getLocationTypeInfo(value) { + var resultInfo = ""; + if (locationTypeList.length == 0) { + locationTypeList = getDirectoryInfo("location_type") + } + if (locationTypeList.length > 0) { + for (let item of locationTypeList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库位类型名称 +export function getLocationTypeName(value) { + let location = getLocationTypeInfo(value); + + return location == '' ? value : location.label; +} + + +//获取库位类型名称 +export function getLocationTypeNameList(lst) { + let desc = ''; + lst.forEach(res => { + desc += getLocationTypeInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + +//获取计量单位 +export function getUnitInfo(value) { + var resultInfo = ""; + if (uomList.length == 0) { + uomList = getDirectoryInfo("uom") + } + if (uomList.length > 0) { + for (let item of uomList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取包装单位 +export function getStdPackUnitInfo(value) { + var resultInfo = ""; + if (packUnitList.length == 0) { + packUnitList = getDirectoryInfo("pack_unit") + } + if (packUnitList.length > 0) { + for (let item of packUnitList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取申请状态 +export function getRequestStateInfo(value) { + var resultInfo = ""; + if (requestStatusList.length == 0) { + requestStatusList = getDirectoryInfo("request_status") + } + if (requestStatusList.length > 0) { + for (let item of requestStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + + +//获取库存状态 +export function getInventoryStatusInfo(value) { + var resultInfo = ""; + if (inventoryStatusList.length == 0) { + inventoryStatusList = getDirectoryInfo("inventory_status") + } + if (inventoryStatusList.length > 0) { + for (let item of inventoryStatusList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取库存样式 +export function getInventoryStatusStyle(value) { + let item = getInventoryStatusInfo(value); + if (item == null || item == '') { + return 'other' + } else { + if (item.remark == '') { + return 'other' + } else { + return item.remark; + } + } +} + +//获取库存样式 +export function getInventoryStatusName(value) { + let item = getInventoryStatusInfo(value); + if (item == null || item == '') { + return value + } else { + if (item.label == '') { + return value + } else { + return item.label; + } + } +} + +//获取状态描述 list +export function getInventoryStatusDesc(lst) { + let desc = ''; + lst.forEach(res => { + desc += getInventoryStatusInfo(res).label + "," + }) + desc = desc.slice(0, -1); + return desc; +} + +//获取器具状态 +export function getContainerStatusInfo(value) { + var resultInfo = ""; + if (containerTypeList.length == 0) { + containerTypeList = getDirectoryInfo("container_type") + } + if (containerTypeList.length > 0) { + for (let item of containerTypeList) { + if (item.value == value) { + resultInfo = item + break; + } + } + } + return resultInfo +} + +//获取计划外入库原因 +export function getUnPlannedReceiptReasonList(value) { + if (unplannedReceiptReasonList.length == 0) { + unplannedReceiptReasonList = getDirectoryInfo("unplanned_receipt_reason") + } + unplannedReceiptReasonList.forEach(res => { + res.text = res.label; + res.value = res.value + }) + return unplannedReceiptReasonList +} + +//获取计划外出库原因 +export function getUnPlannedIssuseReasonList(value) { + if (unplannedIssueReasonList.length == 0) { + unplannedIssueReasonList = getDirectoryInfo("unplanned_issue_reason") + } + unplannedIssueReasonList.forEach(res => { + res.text = res.label; + res.value = res.value + }) + return unplannedIssueReasonList +} + +//获取报废出库原因 +export function getScarpReasonList(value) { + if (scrapReasonList.length == 0) { + scrapReasonList = getDirectoryInfo("scrap_reason") + } + scrapReasonList.forEach(res => { + res.text = res.label; + res.value = res.value + }) + return scrapReasonList +} + +//获取检验失败原因 +export function getInspectFailedReasonList(value) { + if (inspectFailedReasonList.length == 0) { + inspectFailedReasonList = getDirectoryInfo("inspect_failed_reason") + } + inspectFailedReasonList.forEach(res => { + res.text = res.label; + res.value = res.value + }) + return inspectFailedReasonList +} + +//获取检验结果 +export function getInspectResultList(value) { + if (inspectResultList.length == 0) { + inspectResultList = getDirectoryInfo("inspect_result") + } + inspectResultList.forEach(res => { + res.text = res.label; + res.value = res.value + }) + return inspectResultList +} + + + +//获取下一步动作 +export function getNextActionList(value) { + if (nextActionList.length == 0) { + nextActionList = getDirectoryInfo("next_action") + } + nextActionList.forEach(res => { + res.text = res.label; + res.value = res.value + }) + return nextActionList +} + + + +//获取检验类型 +export function getInspectType(value) { + var resultInfo = ""; + if (inspectTypeList.length == 0) { + inspectTypeList = getDirectoryInfo("inspect_type") + } + if (inspectTypeList.length > 0) { + for (let item of inspectTypeList) { + if (item.value == value) { + resultInfo = item.label + break; + } + } + } + return resultInfo +} +//获取抽检方式 +export function getSampleMethod(value) { + var resultInfo = ""; + if (sampleMethodList.length == 0) { + sampleMethodList = getDirectoryInfo("sample_method") + } + if (sampleMethodList.length > 0) { + for (let item of sampleMethodList) { + if (item.value == value) { + resultInfo = item.label + break; + } + } + } + return resultInfo +} + +//获取运输方式 +export function getTransferModeName(value) { + var resultInfo = ""; + if (transferModeList.length == 0) { + transferModeList = getDirectoryInfo("transfer_mode") + } + if (transferModeList.length > 0) { + for (let item of transferModeList) { + if (item.value == value) { + resultInfo = item.label + break; + } + } + } + return resultInfo +} + +//获取盘点阶段名称 +export function getCountStageName(value) { + var resultInfo = ""; + if (countStageList.length == 0) { + countStageList = getDirectoryInfo("count_stage") + } + if (countStageList.length > 0) { + for (let item of countStageList) { + if (item.value == value) { + resultInfo = item.label + break; + } + } + } + return resultInfo +} diff --git a/common/label.js b/common/label.js new file mode 100644 index 0000000..7ffefd7 --- /dev/null +++ b/common/label.js @@ -0,0 +1,194 @@ +let labelDic = []; + +import { + getLabelByHeader, + getPackageByNumber +} from '../api/request2.js'; + +import { + checkDirectoryItemExist, + getDirectoryItemArray +} from '../common/directory.js'; + + + +export function getLabelInfo(scanMsg,headerType, callBack) { + console.log('扫描信息:', scanMsg); + if (scanMsg.length == 0) { + return null + } + let items = scanMsg.split(';'); + let header = items[0]; + let version = items[1]; + if ((header != undefined) && (version!=undefined)) { + var hearList =getDirectoryItemArray(headerType) + if(!checkDirectoryItemExist(hearList,header)){ + let labelResult = { + label: { + labelType: "", + barType: '', + code:"" + }, + package: null, + success: false, + message: '请输入'+headerType+"开始的标签", + } + callBack(labelResult); + return; + } + + //解析扫描的是一维码还是二维码 + let type = header.substring(header.length - 1, header.length); + if (type == 'Q') //qrcode + { + getQRCodeInfo(header, version, scanMsg, callBack); + } else if (type == 'B') //barcode + { + getBarCodeInfo(header, version, items[2], callBack); + } else { //直接输入文本 + getBarCodeInfo('text', 'V1.0', scanMsg, callBack); + } + }else { + let labelResult = { + label: { + labelType: "", + barType: '', + code:"" + }, + package: null, + success: false, + message: '标签格式不正确', + } + callBack(labelResult); + } +} + +export function getQRCodeInfo(header, version, scanMsg, callBack) { + //获取包装信息 + let labelItem = labelDic.find(r => r.header == header && r.version == version); + if (labelItem == undefined) { + let labelResult = { + label: { + barType: 'QRCode', + }, + package: {}, + success: true, + message: '' + } + getLabelByHeader(header, version).then(res => { + if (res.data==null) { + labelResult.success = false; + labelResult.message = '未查找到标签头为[' + header + ']的标签类型'; + callBack(labelResult); + } else { + let newItem = { + header: header, + version: version, + label: res.data, + }; + + labelDic.push(newItem); + getLabelItems(newItem, scanMsg, callBack); + } + }).catch(err => { + labelResult.success = false; + labelResult.message = err; + callBack(err); + }) + } else { + getLabelItems(labelItem, scanMsg, callBack); + } +} + +export function getLabelItems(labelItem, scanMsg, callBack) { + let labelResult = analysisQRCodeLabel(labelItem, scanMsg); + if (labelResult.label.labelType == 'PurchaseLabel' || labelResult.label.labelType == 'MakeLabel') { + //查询包装信息 + let packingNumber = labelResult.label.packingNumber + if (packingNumber != undefined) { + getPackageByNumber(packingNumber).then(pack => { + if (pack.data.list.length == 0) { + labelResult.success = false; + labelResult.message = '包装号[' + packingNumber + ']没有包装信息'; + } else { + labelResult.package = pack.data.list[0]; + console.log('包装信息', JSON.stringify(labelResult.package)) + } + callBack(labelResult); + }).catch(err => { + labelResult.success = false; + labelResult.message = err; + callBack(labelResult); + }) + } else { + labelResult.success = false; + labelResult.message = '在条码中未解析到箱码'; + callBack(labelResult); + } + } else { + callBack(labelResult); + } +} + +export function analysisQRCodeLabel(labelItem, scanMsg) { + let labelResult = { + label: { + labelType: labelItem.label.labelType, + barType: 'QRCode', + }, + package: {}, + success: true, + message: '' + } + + let separators = labelItem.label.separators; + if (separators == undefined || separators == null) { + labelResult.message = "未读取到分隔符"; + } else { + if (scanMsg.indexOf(separators) < 0) { + labelResult.success = false; + labelResult.message = "标签格式不正确"; + } else { + try { + let scanItems = scanMsg.split(separators); + if (scanItems.length > 0) { + scanItems.forEach((item, index) => { + let type = item.substring(0, 1); + let value = item.substring(1, item.length); + if (type == 'H') { + labelResult.label.header = item; + } else if (type == 'V') { + labelResult.label.version = item; + } else { + let barcode = labelItem.label.subList.find(code => code.prefixChar.toUpperCase() == + type + .toUpperCase()); + if (barcode != undefined) { + labelResult.label[barcode.code] = value; + } + } + }) + } + } catch (e) { + labelResult.message = e.message; + } + + } + } + // console.log('标签', labelResult.label) + return labelResult; +} + +export function getBarCodeInfo(header, version, value, callBack) { + let labelResult = { + label: { + labelType: header, + barType: 'BarCode', + code:value + }, + package: null, + success: true, + message: '', + } + callBack(labelResult); +} diff --git a/common/record.js b/common/record.js new file mode 100644 index 0000000..f4a988c --- /dev/null +++ b/common/record.js @@ -0,0 +1,91 @@ +import { + getBusinesstypeByCode +} from '@/api/request2.js'; + +import { + getDirectoryItemArray, +} from '@/common/directory.js'; +import { calc } from '@/common/calc' +import { Decimal } from 'decimal.js';//引入 + import { + deepCopyData + } from '@/common/basic.js'; + +export function createItemInfo(balance, pack) { + let item = { + itemCode: pack.itemCode, + itemName: pack.itemName, + stdPackQty: pack.stdPackQty, + stdPackUnit: pack.stdPackUnit, + qty: new Decimal(balance.qty).toNumber(), + handleQty:new Decimal(0).toNumber(), + uom: pack.uom, + subList: [] + } + return item; +} + +export function createDetailInfo(balance, pack) { + balance.scaned = true; + // data.toInventoryStatus = this.toInventoryStatus == "" ? data.inventoryStatus : this.toInventoryStatus; + // data.inventoryStatus = data.inventoryStatus; + let detail = deepCopyData(balance); + detail.balanceQty = new Decimal(detail.qty).toNumber() + detail.qty = new Decimal(detail.qty).toNumber(); + detail.stdPackQty = new Decimal(pack.stdPackQty).toNumber() + detail.stdPackUnit = pack.stdPackUnit + detail.handleQty = new Decimal(detail.qty).toNumber() ; + detail.package = pack; + + return detail; +} + +//计算实际数量 +export function calcHandleQty(detailSource) { + for (let item of detailSource) { + item.handleQty = new Decimal(0).toNumber(); + item.qty = new Decimal(0).toNumber(); + for (let detail of item.subList) { + if(detail!=undefined){ + if(detail.scaned){ + item.handleQty = calc.add(item.handleQty,detail.handleQty); + } + item.qty = calc.add(item.qty,detail.qty); + } + } + } +} + +export function getBusinessType(typeCode, callback) { + let result = { + success: true, + businessType: '', + fromlocationTypeList: '', + tolocationTypeList: '', + itemCodeTypeList:"", + useOnTheWay:"FALSE", + fromInventoryStatuses: '', + toInventoryStatuses: '', + message: '' + }; + getBusinesstypeByCode(typeCode).then(res => { + if (res.data.total > 0) { + result.businessType = res.data.list[0]; + result.fromlocationTypeList = getDirectoryItemArray(res.data.list[0].outLocationTypes) + result.tolocationTypeList = getDirectoryItemArray(res.data.list[0].inLocationTypes) + result.itemCodeTypeList = getDirectoryItemArray(res.data.list[0].itemTypes) + result.fromInventoryStatuses = res.data.list[0].outInventoryStatuses; + result.toInventoryStatuses = res.data.list[0].inInventoryStatuses; + result.useOnTheWay =res.data.list[0].useOnTheWay + callback(result) + } else { + result.success = false; + result.message = '业务类型[' + typeCode + ']获取失败'; + callback(result) + } + }).catch(error => { + result.success = false; + result.message = error; + callback(result) + }) +} diff --git a/common/style/PDA_style-delete.css b/common/style/PDA_style-delete.css new file mode 100644 index 0000000..47edd46 --- /dev/null +++ b/common/style/PDA_style-delete.css @@ -0,0 +1,221 @@ + +@media screen and (min-width:400px) { + uni-app, uni-page-head{ + height: 60px; + } + uni-page-head .uni-page-head{ + height: 60px !important; + } + uni-page-head[uni-page-head-type=default]~uni-page-wrapper{ + height: calc(100% - 70px) !important; + } + uni-page-head .uni-page-head__title{ + font-size: 1.125rem !important; + line-height: 40px !important; + font-weight: normal !important; + } + uni-page-head .uni-btn-icon{ + font-size: 1.725rem !important; + } + .font_xs{ + font-size: 0.825rem !important; + } + .font_xl{ + font-size: 1.325rem !important; + } + .mini-type-style{ + font-size: 0.8rem !important; + } + .cen_card .label_box .label_info uni-text{ + line-height: 1.725 !important; + /* font-size: 1rem !important; */ + color: #333; + } + .cen_card .label_box .label_info{ + background-color: #eee !important; + } + .popup_box .detail-list{ + box-shadow: none !important; + } + .detail-list,.device-detail{ + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15) !important; + } + .list_form .uni-table-tr{ + background-color: #f0f0f0 !important; + } + .list_form .uni-table-th{ + border-bottom: 1px solid #cfcfcf !important; + } + /* yuanswitch + .require_wrap{ + padding-top: 0 !important; + } + .require_wrap .require_cell{ + line-height: 1.75 !important; + } + .ljh_box .tit_ljh{ + font-size: 1.25rem !important; + } + .cen_card .label_box .label_info { + background-color: #eee !important; + } + .cen_card .label_box .label_info uni-image{ + width: 48rpx !important; + height: 48rpx !important; + } + + .cen_card .label_box .label_info uni-text{ + line-height: 1.5 !important; + font-size: 1rem !important; + color: #333; + } + .ljh_box .tit_ljh .state-style, .top_card .state-style{ + font-size: 0.8rem !important; + } + .card_task .ljh_box{ + margin-bottom: 0 !important; + } + .task_num uni-image{ + width: 56rpx !important; + height: 56rpx !important; + } + .task_num uni-text{ + font-size: 1rem !important; + } + .pda_receipt_label .label_order uni-text{ + font-size: 1rem; + color: #434556; + } + .pda_receipt_label .icon_normal{ + width: 56rpx; + height: 56rpx; + } + .pda_receipt_bot .icon_normal{ + width: 56rpx; + height: 56rpx; + float: left; + } + .pda_receipt_bot .text_darkblue{ + float: left; + font-size: 1rem; + margin-top: 8rpx; + display: inline-block; + }*/ + .top_card .text_lightblue{ + font-size: 1rem !important; + } + .top_card .cell_box .cell_info{ + margin-bottom: 0; + } + .uni-tab-item-title{ + font-size: 1.125rem !important; + } + .cell_box .cell_info uni-view{ + font-size: 1rem !important; + color: #101010 !important; + } + .cell_box .cell_info .text_lightblue{ + font-size: 0.875rem !important; + color: #6A6E7A !important; + } + .cell_box .cell_info .text_black{ + font-size: 1.125rem !important; + + } + .scan_float uni-image{ + margin-top: 18rpx !important; + } + .scan_float uni-view{ + font-size: 0.875rem !important; + letter-spacing: 1px; + } + .new_btn_bot .new_save_btn,.popup_box .pop_title uni-text{ + font-size: 1rem !important; + } + .bot_card{ + background-color: #eee !important; + } + .bot_card_item uni-text{ + font-size: 0.8rem !important; + font-weight: 600; + } + .summary_state .state_point{ + font-size: 1rem !important; + } + .summary_item label{ + float: left; + } + .summary_item uni-text{ + font-size: 1.125rem !important; + font-weight: normal !important; + float: left; + } + /* popup */ + .popup_box{ + box-sizing: border-box; + } + .popup_box .uni-steps{ + width:100%; + overflow-x: hidden; + } + .popup_box .uni-steps__row-line-item{ + height: 60rpx !important; + } + .popup_box .uni-steps__row-text-container{ + margin-top: 0 !important; + } + .popup_box,.uni-popup .uni-scroll-view-content{ + border-top-left-radius:30rpx !important; + border-top-right-radius:30rpx !important; + } + .popup_box .pop_title{ + font-size: 1.125rem !important; + letter-spacing: 1px; + } + .popup_box .pop_tab .tab_tit{ + font-size: 0.875rem !important; + } + .popup_box .pop_tab .tab_tit_active{ + font-size: 1rem !important; + } + .popup_box .pop_tab .tab_info{ + min-height: 200rpx !important; + } + .popup_box .pop_tab .tab_info uni-textarea{ + height: 200rpx; + } + .popup_box .pop_tab .tab_info uni-button{ + font-size: 0.875rem !important; + letter-spacing: 1px; + } + /*底部按钮*/ + .new_btn_bot .new_save_btn{ + background-color: #E4EAFF !important; + height: 50px; + line-height: 50px; + } + .new_btn_bot .new_clear_btn{ + font-size: 1rem !important; + line-height: 50px; + } + .scroll-detail{ + padding-bottom: 70px !important; + } + .count_shadow,.device-detail{ + box-shadow: 0 0 20rpx rgba(0,0,0,0.2); + } + .list_info { + padding: 0 20rpx 20rpx; + margin-top: 0; + } + .uni-scroll-view-content .creattp_list{ + width: 100% !important; + } + .creattp_list .uni-list .list_cell uni-text{ + font-weight: bold; + } + .popup_box .scan_scroll{ + max-height: 44vh !important; + + } +} diff --git a/common/style/new_style.css b/common/style/new_style.css new file mode 100644 index 0000000..83a2cd4 --- /dev/null +++ b/common/style/new_style.css @@ -0,0 +1,2749 @@ +/*WMY 20220818 cssv1.0*/ +/*公共*/ +uni-page-head .uni-page-head { + z-index: 98 !important; + background-color: #fff !important; +} + +uni-page-head .uni-page-head__title { + font-weight: normal; +} + +.whole { + width: 100%; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.tc { + text-align: center; +} + +.text_bold { + font-weight: bold; +} + +.text_black { + color: #101010; +} + +.text_packingCode { + color: #101010; + word-break: break-all; +} + +.text_lightblue { + color: #6A6E7A; +} + +.text_darkblue { + color: #434556; +} + +.text_blue { + color: #5A7CF3; +} + +.font_xs { + font-size: 0.775rem; +} + +.font_sm { + font-size: 0.825rem; +} + +.font_xl { + font-size: 1.125rem; +} + +.margin_top { + margin-top: 20rpx; +} + +.margin_bottom { + margin-bottom: 20rpx; +} + +.margin_xs_top { + margin-top: 10rpx; +} + +.margin_xs_bottom { + margin-bottom: 10rpx; +} + +.margin_right { + margin-right: 20rpx; +} + +.margin { + margin: 20rpx; +} + +.padding_10 { + padding: 10rpx; +} + +.padding_15 { + padding: 15rpx; +} + +.padding_20 { + padding: 20rpx; +} + +.padding { + padding: 20rpx; +} + +.padding_bottom { + padding-bottom: 20rpx; +} + +.nopad { + padding: 0 !important; +} + +.nopad_bot { + padding-bottom: 0 !important; +} + +/* +物料状态 +未知,可用,隔离,新增,规划,禁用 +*/ + +.item_active { + background-color: #5FCB94; + color: #FFFFFF; +} + +.item_hold { + background-color: #FF4206; + color: #FFFFFF; +} + +.item_new { + background-color: #E6A23C; + color: #FFFFFF; +} + +.item_plan { + background-color: #2677F9; + color: #FFFFFF; +} + +.item_disable { + background-color: #666; + color: #FFFFFF; +} + +/* 器具状态 */ +.container_empty { + background-color: #FF4206; + color: #FFFFFF; +} + +.container_useing { + background-color: #5FCB94; + color: #FFFFFF; +} + + +.container_repair { + background-color: #666; + color: #FFFFFF; +} + +.container_scrap { + background-color: #E6A23C; + color: #FFFFFF; +} + + + +.scan_float { + position: fixed; + z-index: 10; + right: 20rpx; + bottom: 20%; + width: 110rpx; + height: 110rpx; + background-color: #5A7CF3; + border-radius: 50%; + text-align: center; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.2); + opacity: 0.8; +} + +.scan_float image { + width: 40rpx; + height: 40rpx; + margin-top: 10rpx; +} + +.scan_float view { + color: #fff; + font-size: .725rem; + margin-top: -8rpx; +} + +.top_card { + background-color: #5A7CF3; + overflow: hidden; + /* padding: 20rpx 0; */ +} + +.top_card .device-detail { + /* margin-top: 0 !important; */ +} + +.top_card .mini-type-style { + color: #fff !important; + font-weight: normal; + height: 46rpx; +} + +.cen_card { + padding: 0 0rpx; + width: 100%; + box-sizing: border-box; + float: left; +} + +.cell_box { + width: 100%; +} + +.cell_box .cell_info { + position: relative; + /* width: 25%; */ + padding: 0 20rpx; + /* margin: 0 0 20rpx; */ + text-align: center; +} + +.cell_box .cell_long { + /* width: 33%; */ +} + +.cell_box .cell_info view { + font-size: 0.9375rem; + margin-bottom: 10rpx; + color: #7B8195; +} + +.cell_box .cell_info .text_black { + font-size: 0.875rem; + color: #101010; +} + +.cell_box .cell_info .text_lightblue { + color: #949CB6; + font-size: 0.8rem; +} + +.cell_box .cell_info::after { + position: absolute; + content: ""; + right: 0; + top: 50%; + transform: translateY(-50%); + width: 1px; + height: 20px; + background-color: #ddd; +} + +.cell_box .cell_info:last-child::after { + width: 0; +} + +.cen_card .label_box { + margin-bottom: 20rpx; +} + +.cen_card .label_box .label_info { + background-color: #eee; + color: #434556; + font-size: 0.875rem; + padding: 8rpx; + border-radius: 8rpx; + margin-right: 10rpx; + vertical-align: middle; +} + +.cen_card .label_box .label_info image { + /* float: left; */ + vertical-align: middle; +} + +.cen_card .label_box .label_info text { + /* line-height: 1.25; */ + /* float: left; */ + vertical-align: middle; +} + +.photo_btn { + background-color: #ececec; + color: #5A7CF3; + font-size: 0.875rem; + padding: 8rpx 10rpx; + border-radius: 8rpx; +} + +.photo_btn text { + line-height: 1.5; +} + +.cen_card .cell_box .text_black { + font-size: 0.875rem; +} + +.cen_card .cell_box .cell_info .text_lightblue { + font-size: 0.925rem; +} + +.bot_card { + background-color: #f8f8f8; + padding: 16rpx; + overflow: hidden; +} + +.bot_card_item { + width: 50%; + text-align: left; + height: 60rpx; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +/* .item_long{ + width: 32% !important; +} +*/ +.item_short { + width: 20%; +} + +.bot_card_item uni-text { + font-size: .725rem; + margin-left: 4rpx; + color: #333333; + background-color: transparent; +} + +.bot_card_item .icon_state { + float: left; + margin-top: 22rpx; +} + +.summary_wrap { + padding: 20rpx; + padding-top: 0; +} + +.summary_state .state_point { + font-size: 0.825rem; +} + +.summary_item uni-text { + font-size: 0.825rem; +} + +.bot_card_item uni-text.state_point { + background-color: transparent; +} + +.bot_card_item label { + vertical-align: middle; +} + +.icon_normal { + width: 58rpx; + height: 58rpx; + vertical-align: middle +} + +.bot_card_item .icon_normal { + float: left; + width: 46rpx; + height: 46rpx; +} + +.icon_bg { + display: inline-block; + width: 46rpx; + height: 46rpx; + border-radius: 4rpx; +} + +.icon_bg_xm { + background-color: #45B5F3; +} + +.icon_bg_kw { + background-color: #5A7CF3; +} + +.icon_bg_pc { + background-color: #BF94EB; +} + +.icon_state { + display: inline-block; + width: 20rpx; + height: 20rpx; + border-radius: 50%; +} + +.state_point { + background: none; +} + +.title_tab { + display: flex; + justify-content: center; + height: 100rpx; +} + +.bottom { + padding: 0 !important; +} + +.uni-popup .uni-scroll-view { + overflow: visible !important; +} + +.uni-popup .uni-scroll-view-content { + overflow-y: scroll; + max-height: 94vh; + background-color: #fff; + border-top-left-radius: 20rpx; + border-top-right-radius: 20rpx; +} + +.uni-popup .scroll-Y { + padding-bottom: 0; +} + +.popup_box { + position: relative; + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; + background: #fff url(@/static/icons_ui/popup_bot_bg.png) no-repeat left top; + background-size: 100%; + max-height: 93vh; +} + +.popup_box .pop_title { + font-size: 0.9rem; + font-weight: bold; + color: #fff; + padding: 20rpx 20rpx; + font-size: 35rpx; +} + +.popup_box .pop_title text { + font-size: 0.9rem; + font-weight: normal; +} + +.popup_box .uni-steps { + width: 98%; +} + +.popup_box .top_bg { + width: 100%; + height: inherit; +} + +.popup_box .pop_tab { + padding: 20rpx; + box-sizing: border-box; + width: 100%; +} + +.popup_box .pop_tab .tab_tit { + font-size: .825rem; + text-align: center; + color: #333; + background-color: #fff; + /* width: 30%; */ + box-sizing: border-box; + padding: 10rpx 16rpx; + border-top-left-radius: 8rpx; + border-top-right-radius: 8rpx; + margin-right: 6rpx; +} + +.popup_box .pop_tab .tab_tit_active { + color: #5A7CF3; + font-weight: bold; + /* font-size: 0.875rem; */ +} + +.popup_box .pop_tab .tab_info { + position: relative; + background-color: #fff; + border-radius: 8rpx; + box-shadow: 0 6rpx 20rpx rgba(90, 124, 143, 0.1); + min-height: 100rpx; +} + +.popup_box .pop_tab .tab_info textarea { + height: 320rpx; +} + +.popup_box .pop_tab .tab_info .uni-textarea-placeholder { + font-size: 0.825rem; +} + +.popup_box .scan_scroll { + max-height: 41vh; + width: 100%; + overflow-x: hidden; + overflow-y: scroll; +} + +.popup_box .scan_scroll .uni-scroll-view-content { + /* width: 104%; */ + overflow-x: hidden; + background-color: transparent; +} + +.popup_box .pop_tab .next_info { + box-shadow: 0 0 20rpx rgba(90, 124, 143, 0.1); +} + +.popup_box .pop_tab .tab_notitle { + border-radius: 8rpx; +} + +.popup_box .pop_tab .tab_info button { + position: absolute; + bottom: 10rpx; + right: 20rpx; + background: #3C9CFF; + color: #fff; + border: 0; + border-radius: 8rpx; + width: 130rpx; + float: right; + font-size: .725rem; +} + +.popup_box .pop_tab .tab_info textarea { + padding-top: 20rpx; +} + +.list_wrap { + margin: 20rpx; +} + +.ljh_box { + padding: 20rpx; + z-index: 10; + width: 100%; + float: left; + box-sizing: border-box; +} + +.ljh_left { + margin-top: 10rpx; +} + +/* .ljh_right{ + float: right; +} */ +.ljh_right uni-text { + line-height: 1.5; +} + +.ljh_right .tnum .num_edit { + background-color: #FFF9DB; + width: 150rpx; +} + +.ljh_right .tnum { + font-size: 1.25rem; + color: #EC5B28; + font-weight: bold; + margin-right: 4rpx; +} + +.ljh_right .tunit { + font-size: 0.875rem; + color: #F5AB91; +} + +.ljh_box .tit_ljh { + line-height: 1.5; + font-size: 0.875rem; + color: #101010; + font-weight: bold; + word-break: break-all; +} + +.ljh_box .tit_ljh .mini-type-style { + float: left; + margin-top: 10rpx; + padding: 0 8rpx; + font-size: 0.725rem; +} + +.ljh_box .tit_ljh .state-style, +.top_card .state-style { + font-size: .625rem; + padding: 4rpx 6rpx; + margin-right: 8rpx; + vertical-align: middle; + font-weight: normal; + border-radius: 4rpx; + color: #fff; +} + +.ljh_box .tit_ljh .state-style { + /* padding: 6rpx; */ +} + +.ljh_box .tit_ljh text { + float: left; +} + +.ljh_box .desc_ljh { + line-height: 1.5; +} + +.label_normal { + margin-top: 20rpx; +} + +.label_normal .label_col image { + float: left; + vertical-align: middle; +} + +.label_normal .label_col text { + font-size: 0.825rem; + line-height: 1.25; + float: left; + color: #434556; +} + +.lo_cellbox { + margin-top: 20rpx; +} + +.lo_cellbox .cell_info { + margin-bottom: 0; +} + +/*提交按钮*/ +.new_btn_bot { + position: fixed; + bottom: 0; + left: 0; + box-sizing: border-box; + width: 100%; + background-color: #fff; + padding: 20rpx; + z-index: 10; + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2); +} + +.bot_pos { + position: initial; +} + +.new_btn_bot .new_save_btn { + background-color: #E7ECFF; + color: #5A7CF3; + font-size: .875rem; +} + +.new_btn_bot .new_clear_btn { + background-color: #FFDADD; + color: #f00; + font-size: .875rem; + margin-right: 20rpx; +} + +.new_btn_bot .new_cancel_btn { + background-color: #eee; + color: #333; + font-size: .875rem; + margin-right: 20rpx; +} + +.new_btn_bot .btn_double { + width: 50%; +} + +.new_btn_bot uni-button:after { + border: 0; +} + +.choose_main { + position: relative; + z-index: 2; +} + +.choose_layout { + position: relative; + width: 100%; + height: 130rpx; + background-color: #fff; + +} + +.choose_icon_layout { + position: absolute; + right: 160rpx; + top: 10rpx; + bottom: 0rpx; + /* width: 100rpx; + height:100rpx; */ +} + +.choose_icon { + margin-top: 5rpx; + margin-bottom: 10rpx; + width: 100rpx; + height: 100rpx; +} + +.choose_marked { + position: absolute; + width: 100%; + /* height: 100%; */ + top: 0; + left: 0; + bottom: 0; + right: 0; + border-top: 6rpx solid #5FCB94; + background-image: linear-gradient(rgba(95, 203, 148, 0.5), rgba(95, 203, 148, 0)); + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; +} + +.choose_marked_faild { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + border-top: 6rpx solid #FF0000; + background-image: linear-gradient(rgba(255, 100, 97, 0.3), rgba(255, 100, 97, 0)); + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; +} + +.nodeliver_tag { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; + border-top: 6rpx solid #F54D4D; + background-image: linear-gradient(rgba(245, 77, 77, 0.1), rgba(245, 77, 77, 0)); + +} + +.choose_marked image { + float: right; + margin-right: 28%; + margin-top: 20rpx; + width: 120rpx; + height: 120rpx; +} + +.choose_marked_faild image { + float: right; + margin-right: 28%; + margin-top: 20rpx; + width: 120rpx; + height: 120rpx; +} + +.pop_list { + background-color: #fff; + /* padding: 20rpx; */ + padding-top: 0; + margin-top: 20rpx; +} + +.uni-scroll-view-content .creattp_list { + padding: 6rpx 20rpx 0; + box-sizing: border-box; + width: 96%; +} + +.list_info .uni-scroll-view-content { + max-height: 10vh; +} + +.pop_list .detail-content { + margin-bottom: 20rpx; + border-radius: 16rpx; + overflow: hidden; + box-shadow: 0 0 14rpx rgba(0, 0, 0, 0.1); +} + +.pop_btn { + padding: 20rpx; + padding-top: 0; +} + +.pop_btn button { + width: 49%; + height: 90rpx; + line-height: 90rpx; + font-size: 0.875rem; + margin: 0; + color: #333; +} + +.pop_btn button::after { + border: 0; +} + +.pop_btn .cancel { + background-color: #eee; +} + +.pop_btn .save { + background-color: #5A7CF3; + color: #fff; +} + +.popinpop { + margin: 10px 1%; + border-radius: 8px; + background-color: #fff; + color: #666666; + line-height: 1.5; + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); + width: 98%; + +} + +.scan_btn:after { + border: 8rpx; +} + +.popup_box .pop_tab .tab_info .clean_scan_btn { + background-color: #eee; + color: #333; + margin-right: 140rpx; + border-radius: 8rpx; +} + +.popup_box .pop_tab .tab_info .clean_scan_btn::after { + border: 0; +} + +/*检验任务-topline*/ +.card_task { + padding: 20rpx; + padding-bottom: 0; +} + +.task_num { + border-bottom: 1px solid #eee; + padding-bottom: 10rpx; + margin-bottom: 10rpx; + overflow: hidden; +} + +.top_card .task_num { + border: 0; +} + +.task_num image { + vertical-align: middle; + margin-right: 10rpx; +} + +.task_num text { + color: #333; + vertical-align: middle; +} + +.label_order image { + /* vertical-align: text-bottom; */ + vertical-align: middle; +} + +.label_order text { + font-size: .825rem; + vertical-align: middle; +} + +.tit_jxs { + font-size: 1rem !important; + margin-bottom: 10rpx; +} + +.tit_jxs .state-style { + vertical-align: middle; + margin-top: 6rpx; +} + +/* 为按序发货添加 */ +/* .state-style{ + background-color: #ececec; +} */ +.receipt_bot { + justify-content: space-between; + border-top: 1px solid #eee; + padding-top: 10rpx; +} + +/*收货列表*/ +.require_wrap { + background-color: #fff; + padding: 20rpx; +} + +.require_wrap uni-button:after { + border: 0; +} + +.require_wrap .require_cell { + background: #f5f5f5; + font-size: .825rem; + padding: 10rpx 20rpx; + margin-right: 20rpx; + border-radius: 50rpx; + line-height: 1.5; + margin-left: 0; + border: 1px solid #f5f5f5; +} + +.require_wrap .require_active { + border: 1px solid #5A7CF3; + background-color: #EFF6FF; + color: #5A7CF3; +} + +.require_wrap .require_active text { + display: inline-block; + width: 20rpx; + height: 20rpx; + background-color: #5A7CF3; + border-radius: 50%; + float: left; + margin: 12rpx 10rpx 12rpx 0; +} + +.list_inspect .uni-input-input { + color: #f00; +} + +.list_form { + padding: 20rpx; + padding-top: 0; +} + +.list_form .uni-table-tr { + background-color: #f8f8f8; + color: red; +} + +.list_form .uni-table-th { + padding: 10rpx !important; + border-bottom: 1px solid #ececec; + font-weight: normal !important; + font-size: 0.775rem; + color: red; +} + +.list_form .uni-easyinput { + background-color: #FFF9DB; +} + +.list_form .uni-easyinput__content { + min-height: 50rpx !important; + text-align: center; +} + +.count_shadow { + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); +} + +.count_list { + font-size: 0.8rem; + color: #0F5EFF; + padding: 10rpx 0; +} + +.count_list text:first-child { + margin-left: 0; +} + +.count_list text { + margin: 10rpx; +} + +.popuni_list::after { + height: 0 !important; +} + +.uni-list .list_cell { + margin-bottom: 20rpx; + height: 100rpx; + align-items: center; + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); +} + +.uni-list .list_cell:last-child { + margin-bottom: 0; +} + +.uni-list .list_cell .is-input-border { + border: 0; +} + +.uni-list .list_cell .title { + padding-left: 20rpx; + font-size: 0.875rem; +} + +.uni-list .list_cell .info { + padding-right: 20rpx; + color: #333; + font-size: 0.875rem; +} + +.popuni_list .list_cell { + background-color: #fff; + border-radius: 8rpx; + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); +} + +.popuni_list .list_cell .uni-data-tree-input { + padding-left: 0; +} + +.popuni_list .list_cell .input-value-border { + border: 0; + padding: 0; +} + +.popuni_list .list_cell .selected-list { + padding-left: 0; +} + +/* .uni-list .list_cell .necessary_tag{ + padding-right: 0; + color: #f00; +} */ +.uni-list .list_cell .uni-easyinput { + padding-right: 20rpx; + text-align: right; + box-sizing: border-box; + border: 0; +} + +.uni-list .list_cell .uni-input-input { + font-size: 0.875rem; +} + +.list_card { + margin-top: 20rpx; + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); +} + +.list_card:first-child { + margin-top: 10rpx; +} + +.inspect_form .uni-label { + font-size: 0.875rem; +} + +.pda-list-cell-db .is-input-border, +.pda-list-cell-db .input-value-border { + border: 0 !important; +} + +.list_locode { + padding: 20rpx; + padding-top: 0; +} + +.inspect_card { + background-color: #fff; + margin: 20rpx; + border-radius: 16rpx; +} + +.inspect_card .ljh_box text { + line-height: 1.75; +} + +.inspect_list_locode { + border-bottom: 1px solid #eee; + padding-bottom: 20rpx; +} + +.inspect_list_locode image { + vertical-align: middle; +} + +.default_nodata { + position: relative; + left: 50%; + transform: translateX(-50%); + margin-top: 100rpx; + width: 390rpx; + height: 300rpx; + +} + + +.default_goscan { + width: 100%; +} + +.default_goscan .img_goscan { + position: relative; + width: 500rpx; + height: 500rpx; + left: 50%; + transform: translateX(-50%); +} + +.default_goscan button { + width: 60%; + height: 100rpx; + background-color: #5A7CF3; + color: #fff; + border-radius: 50rpx; + text-align: center; + line-height: 100rpx; +} + +.default_goscan button image { + width: 30rpx; + height: 30rpx; + margin-right: 20rpx; + vertical-align: middle; + margin-top: -8rpx; + +} + +.new_bot_box { + position: fixed; + width: 100%; + left: 0; + bottom: 0; + background-color: transparent; + z-index: 10; +} + +.new_bot_box .uni-collapse { + background-color: transparent !important; +} + +.new_bot_box .uni-collapse-item__title.uni-collapse-item-border { + width: 96%; + margin: 0 2%; + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; + overflow: hidden; + text-align: center; +} + +.new_bot_box .uni-collapse-item__title-text { + padding-left: 40rpx; +} + +.new_bot_box .uni-collapse-item__title.uni-collapse-item-border, +.new_bot_box .uni-collapse-item__title-box { + background-color: #7B8195 !important; + color: #fff !important; +} + +.new_bot_box .uni-collapse-item__title-box { + height: 80rpx !important; + line-height: 80rpx !important; +} + +.new_bot_box .content { + background-color: #fff !important; +} + +.new_bot_box .content .uni-easyinput { + box-sizing: border-box; +} + +.new_bot_box .content .uni-data-picker, +.new_bot_box .input-value, +.new_bot_box .uni-input-input, +.new_bot_box .selected-item, +.new_bot_box .placeholder, +.new_bot_box .uni-easyinput__content-input { + font-size: 0.875rem !important; +} + +.new_bot_box .content .tit_bot_box { + padding: 20rpx 20rpx 10rpx; + font-size: 0.875rem; +} + +.new_bot_box .uni-collapse-item__wrap-content.uni-collapse-item--border { + border: 0; +} + +.new_bot_box .border .uni-easyinput { + border: 1px solid #e5e5e5; + border-radius: 10rpx; +} + +.hold_form .uni-table-th-content { + font-weight: normal; + font-size: 0.775rem; +} + +.top_wrap { + padding: 20rpx; + background-color: #fff; +} + +.top_wrap .top_card { + border-radius: 8px; + color: #fff; + line-height: 100rpx; +} + +.top_wrap .top_card .top_lines_info { + padding: 0 20rpx; +} + +.top_wrap .top_card .top_lines_info text { + font-size: 0.9rem; + margin-left: 10rpx; +} + +/* 按序收货 */ +.recept_form { + padding: 20rpx; +} + +.recept_form .form_title { + padding: 20rpx 20rpx 0; +} + +.recept_form .form_title image { + float: left; + margin-top: 10rpx; + margin-right: 10rpx; +} + +.recept_form .form_title text { + font-size: 1rem; + vertical-align: middle; +} + +.recept_form .table--border { + border: 0 !important; +} + +.recept_form th { + background-color: #F3F6FF; + color: #434556 !important; +} + +.recept_form th.table--border, +.recept_form td.table--border { + border: 0; +} + +.recept_form .recept_form_info { + background-color: #fff; + border-radius: 16rpx; + padding-bottom: 16rpx; +} + +.recept_form .uni-table-td { + font-size: 0.8rem; +} + +/* 天津发货详情 */ +.deliver_card { + flex: 1; + line-height: 30px; + margin: 20rpx 20rpx 0; + border-radius: 16rpx; + overflow: hidden; + background-color: transparent; + position: relative; + border-bottom-color: #f5f5f5; + border-bottom-width: 1px; + border-bottom-style: solid; +} + +.deliver_card .card_info { + background-color: #fff; +} + +.deliver_card .deliverState { + background-color: #fff; + padding: 20rpx 10rpx; + background-color: transparent; + border-left: 10rpx solid transparent; +} + +.deliver_card .deliverState .content-text image { + vertical-align: text-bottom; + margin-right: 6rpx; +} + +.deliver_card .deliverState .content-text text { + margin-right: 10rpx; +} + +.deliver_card .deliverState1 { + background-color: #fff; + border-left: 10rpx solid #F6CB61; +} + +.deliver_card .deliverState3 { + background-color: #fff; + border-left: 10rpx solid #5FCB94; +} + +.deliver_card .deliverState4 { + background-color: #fff; + border-left: 10rpx solid #EC5B28; +} + +.deliver_card .card_state { + border: 1px solid transparent; + padding: 0 20rpx; + font-size: 0.8rem; + position: absolute; + right: 20rpx; + top: 50%; + transform: translateY(-50%); + border-radius: 80rpx; +} + +.deliver_card .tjpending { + border-color: #F6CB61; + color: #F6CB61; +} + +.deliver_card .tjsent { + border-color: #5FCB94; + color: #5FCB94; +} + +.deliver_card .tjnosend { + border-color: #EC5B28; + color: #EC5B28; +} + +.login_wrap { + width: 100%; + position: relative; + top: -20rpx; + background-color: #fff; + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; +} + +.login_title { + position: absolute; + top: 120rpx; + left: 30rpx; + color: #fff; + font-size: 1.125rem; + font-weight: bold; + letter-spacing: 4rpx; + line-height: 1.5; +} + +.login_title text { + font-size: 1.125rem; + letter-spacing: 0; +} + +/* 登录 */ +.mybox .is-input-border { + border: 0 !important; +} + +/* 消息列表 */ +.msg_body { + background-color: #fff; +} + +.msg_list { + padding-top: 20rpx; +} + +.msg_list .uni-list-chat__header { + width: 60rpx !important; + height: 60rpx !important; + background-color: #3d7eff; + border-color: transparent !important; + border-radius: 6rpx !important; +} + +.msg_list .uni-list--border-top, +.msg_list .uni-list--border-bottom, +.msg_list .uni-list--border:after, +.msg_body .uni-list:after { + height: 0 !important; +} + +.msg_list .uni-list-chat__header-image { + width: 50rpx !important; + height: 50rpx !important; +} + +.msg_list .uni-badge--dot { + left: inherit !important; + right: 20rpx; + top: 40rpx !important; +} + +.msg_list .uni-list-chat__content-title { + font-size: .9rem !important; +} + +.msg_list .hasread .uni-list-chat__header { + background-color: #ccc; +} + +/* index */ +.index_top { + background-color: #5A7CF3; + width: 100%; +} + +.index_top .uni-searchbar { + padding-right: 0 !important; +} + +.index_top .index_btn { + background-color: transparent; + font-size: 0.825rem; + padding: 0 0.9rem; + +} + +.index_top uni-button:after { + border: 0 !important; +} + +.index_top .uni-searchbar__box { + background-color: rgba(255, 255, 255, 0.3) !important; + border-color: transparent !important; + justify-content: inherit !important; +} + +.index_top .uni-searchbar__text-input, +.uni-searchbar__box-icon-search, +.index_top .uniui-search { + color: #fff !important; +} + +.index_top .uni-searchbar__text-placeholder, +.index_top .uni-input-placeholder { + color: #eee !important; +} + +.index_top .uni-input-input { + color: #fff; +} + +.common_title { + font-size: .825rem; + font-weight: bold; +} + +.common_icons { + width: 100%; + padding: 20rpx; + box-sizing: border-box; +} + +.common_icons .common_info { + position: relative; + top: -120rpx; + background-color: #fff; + width: 100%; + box-sizing: border-box; + padding: 20rpx; + border-radius: 16rpx; + + /* box-shadow: 0 0 10rpx rgba(0,0,0,0.1); */ +} + +.common_icons .common_info .common_cell { + margin-right: 20rpx; + text-align: center; +} + +.common_icons .common_info .common_cell .cell_icon { + background-color: #EEF2FE; + border-radius: 50%; + width: 110rpx; + height: 110rpx; + margin: 20rpx 20rpx 0; +} + +.common_icons .common_info .common_cell .cell_icon image { + float: left; + width: 50rpx; + height: 50rpx; + margin: 35rpx; +} + +.common_icons .common_info .cell_last { + margin-right: 0; +} + +uni-tabbar .uni-tabbar-border { + height: 0; +} + +.index_menu { + width: 100%; + float: left; + margin-top: -100rpx; + /* height: calc(100% - 200px); */ +} + +.index_menu .menu_content { + width: 26%; + text-align: center; + float: left; + height: 100%; + overflow-y: scroll; +} + +.index_menu .index_title .title_left { + width: 100%; + border-left: 2px solid transparent; + line-height: 80rpx; + font-size: 0.825rem; + text-align: center; +} + +.index_menu .menu_content .index_title { + width: 100%; + float: left; + line-height: 100rpx; + font-size: 0.825rem; +} + +.index_menu .menu_content .tit_active { + box-sizing: border-box; + background-color: #fff; + border-left: 2px solid #5A7CF3; + font-weight: bold; + float: left; +} + +.index_menuinfo { + width: 74%; + float: left; + box-sizing: border-box; + padding: 20rpx; + position: relative; + overflow-y: scroll; + background-color: #fff; + /* height: 100%; */ + +} + +.menu_ab { + position: absolute; + top: 420rpx; + left: 0; + width: 100%; + z-index: 10; + /* height: calc(100% - 185px); */ + +} + +.index_menuinfo .icon_block { + position: relative; + text-align: center; + width: 33%; + float: left; + /* margin-top: -10rpx; */ +} + +.index_menuinfo .icon_block image { + float: left; + width: 80%; + height: 80rpx; + margin: 3% 10% 0; +} + +.index_menuinfo .icon_block text { + float: left; + width: 100%; + font-size: .8rem; + height: 80rpx; + color: #101010; +} + +.index_menuinfo .icon_block .index_badge { + width: 42rpx; + height: 42rpx; + font-size: 0.6rem; + background-color: #c00; + position: absolute; + right: 0; + color: #fff; + text-align: center; + line-height: 42rpx; + border-radius: 50%; +} + +uni-tabbar.uni-tabbar-bottom .uni-tabbar { + box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.1); +} + +uni-modal .uni-modal__bd { + font-size: 1rem !important; + color: #000 !important; +} + +.passwordpage .uni-forms-item__label .label-text { + font-size: 0.8rem !important; +} + +.passwordpage .is-input-border { + border: 0 !important; +} + +.passwordpage .is-direction-left { + padding: 10rpx 20rpx; + background-color: #fff; + /* margin: 20rpx 0; */ +} + +.passwordpage .uni-forms-item__inner { + padding-bottom: 10rpx !important; +} + +.passwordpage .new_save_btn { + font-size: 1rem; +} + +.personal uni-button:after { + border: 0 !important; +} + +.personal .uni-list:after { + height: 0 !important; +} + +.personal .uni-list-item__icon { + margin-right: 0 !important; +} + +.personal .uni-list-item__extra-text { + font-size: 1rem !important; + color: #101010 !important; + font-weight: bold; +} + +.personal .uni-list--border-top, +.uni-list--border-bottom, +.uni-list--border::after { + background-color: transparent !important; +} + +uni-modal .uni-modal__ft { + font-size: 0.875rem; +} + +uni-modal .uni-modal__title { + color: #333; +} + +uni-modal .uni-modal__bd { + padding: 1.3em 1.6em 1.3em; + min-height: 40px; + /* font-size: 15px; */ + line-height: 1.4; + /* color: #999; */ + max-height: 400px; + overflow-x: hidden; + overflow-y: auto; +} + +uni-modal .uni-modal__hd { + padding: 1em 1.6em .3em; + height: 30px; +} + +/*dy_add*/ +.btn_unusual button { + margin-right: 10rpx; +} + +.btn_unusual button:last-child { + margin-right: 0; +} + +/* .tit_ljh .text_white{ + color: #fff !important; + font-size: 0.725rem; + font-weight: normal; + padding: 4rpx; +} */ +.bot_card .pending { + color: #5FCB94; +} + +.camera_pop { + border-top-left-radius: 16rpx; + border-top-right-radius: 16rpx; +} + +.camera_list { + padding: 20rpx; + box-sizing: border-box; + max-height: 75vh; + overflow-y: scroll; +} + +.camera_list .list_cell { + border-bottom: 1px solid #eee; + box-shadow: none; + margin-bottom: 0; +} + +.camera_list .list_cell .uni-easyinput { + padding-right: 0; +} + +.camera_list .list_cell .title { + color: #666; +} + +.camera_list .selected-item { + font-size: 0.875rem; +} + +.camera_list .input-value span { + padding: 0; + font-size: 0.875rem; +} + +.camera_pop .pop_btn { + background-color: #fff; +} + +.cell_box .result_card .text_black { + font-size: 1rem; +} + +.cell_box .result_card .red { + color: #c00; +} + +.new_btn_bot .btn_triple { + margin-right: 10rpx; +} + +.cell_box .scan_btn_fr { + float: right; + background-color: #ececec; + color: #5A7CF3; + font-size: 0.725rem; + padding: 10rpx 20rpx; + border-radius: 16rpx; + line-height: 2; + margin: 0 20rpx 20rpx 0; + height: 60rpx; +} + +.cell_box .scan_btn_fr image { + /* margin-top: 4rpx; */ + /* float: left; */ +} + +.cell_box .scan_btn_fr text {} + +.login_wrap .content-clear-icon { + display: none; +} + +.login_wrap .conone .uni-easyinput { + padding-left: 10rpx !important; +} + +.quality_cell { + height: auto !important; +} + +.quality_cell .title { + line-height: 80rpx; + color: #666; +} + +.check_textarea { + font-size: 0.875rem; + color: #333; +} + +.check_textarea uni-textarea { + padding: 10rpx 20rpx; + height: 40px; +} + +.check_textarea .uni-textarea-placeholder { + font-size: 0.875rem; + color: #ccc; +} + +.common_card .ljh_box, +.pop_card .ljh { + width: 100%; + box-sizing: border-box; +} + +.common_card .ljh_box .tit_ljh, +.pop_card .ljh_box .tit_ljh { + float: left; + width: 50%; +} + +.common_card .ljh_info, +.pop_card .ljh_info { + width: 100%; + box-sizing: border-box; +} + +.common_card .desc_card, +.pop_card .desc_card { + width: 100%; + box-sizing: border-box; + padding: 0; +} + +.common_card .label_xm, +.pop_card .label_xm { + background-color: #45B5F3; + line-height: 2.0; + padding: 0 10rpx; + color: #fff; + border-radius: 8rpx; + max-width: 300rpx; + font-size: 0.7rem; + overflow: visble; + word-break: break-all; + /* overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 0.7rem;*/ +} + +.result_nodata text { + display: inline-block; + width: 100%; + text-align: center; + color: #999; + font-size: 1.125rem; + margin-top: -20rpx; +} + +.passwordpage .uni-forms-item__label { + width: 180rpx !important; +} + +/* 20221114add */ +.semi_col { + margin-top: 0; +} + +.semi_col .uni-collapse-item__title-text span { + font-size: 1rem; + /* font-weight: bold; */ +} + +.semi_col .common_card .ljh_box .tit_ljh { + font-size: 1rem; + width: 56%; + /* font-weight: normal; */ +} + +.semi_col .num_color { + color: #EC5B28; +} + +.issuelist { + position: relative; +} + +.issuelist .notuse, +.issuelist .use { + float: right; + color: #333; + font-size: 0.825rem; +} + +.issuelist .notuse image, +.issuelist .use image { + vertical-align: middle; +} + +.issuecard .task_num { + border: 0; + margin-bottom: 0; + padding: 0; + + border-bottom: 1px solid #eee; + padding-bottom: 10rpx; + margin-bottom: 10rpx; + overflow: hidden; +} + +.issuelist .tag_icon { + width: 94rpx; + height: 94rpx; + position: absolute; + right: 0; + top: -6rpx; +} + +button::after { + border: none; + border-radius: 0; +} + +.btn_confirm { + width: 50%; + border: none; + background: #009EFF; + border-radius: 0; + color: #FFFFFF; +} + +.btn_cancle { + width: 50%; + border: none; + background: #FFFFFF; + border-radius: 0; + color: #000000; +} + +.line_color { + /* color: #E7E6E4; */ + color: #F5EBF4; + /* padding-top: 10rpx; + padding-bottom: 10rpx; */ +} + + + +.filter_button { + font-size: 28rpx; + padding-left: 20rpx; + padding-right: 20rpx; + /* width: 240rpx; */ + color: #fff; + background-color: #3C9CFF; +} + +.filter_button_after { + opacity: 0.7; +} + +.btn_edit_big_confirm { + font-size: 35rpx; + width: 50%; + color: #fff; + background-color: #3C9CFF; + border: none; + border-radius: 0; +} + +.btn_edit_big_cancle { + font-size: 35rpx; + width: 50%; + color: #303133; + border: none; + border-radius: 0; + box-shadow: none; + background-color: #fff; + +} + +.btn_edit_big_after { + opacity: 0.7; +} + +.btn_add_big { + background-color: #D8D8D8; + color: #fff; + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +.icons_close { + width: 70rpx; + height: 70rpx; + margin: 10rpx; +} + +.paizhao { + padding-bottom: 10rpx; + padding-top: 20rpx; + padding-left: 20rpx; +} + +.paizhao image { + width: 50rpx; + height: 50rpx; +} + +.card_partCode { + font-size: 36rpx; + font-weight: 500; + padding: 10rpx; + +} + +.card_itemCode { + font-size: 36rpx; + /* font-weight: 500; */ + padding: 5rpx 10rpx; +} + +.card_itemName { + color: #909399; + font-size: 30rpx; + padding: 5rpx 20rpx; +} + +.card_ProdLine { + color: #909399; + font-size: 30rpx; + padding: 5rpx 30rpx; +} + + +/* .std_pack { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 0px; + color: #909399; + font-size: 30rpx; +} + */ + + +.card_content { + font-size: 32rpx; + padding: 5px; +} + +.card_icon_normal { + width: 45rpx; + height: 45rpx; + vertical-align: middle +} + +.card_packing_code { + color: #3315EB; + padding: 5px; +} + +.card_packing_code_content { + font-size: 32rpx; + padding: 5px; +} + +.card_batch { + color: #9747FF; + padding: 5px; +} + + +.card_batch_content { + font-size: 32rpx; + padding: 5px; +} + +.card_container { + color: #0076F6; + padding: 5px; +} + + +.card_container_content { + font-size: 32rpx; + padding: 5px; +} + +.card_business { + color: #F1A532; + padding: 5px; +} + +.card_business_content { + font-size: 32rpx; + padding: 5px; +} + +.card_location { + color: #DA8910; + padding: 5px; +} + +.card_to_location { + color: #329362; + padding: 5px; +} + +.card_location_content { + font-size: 32rpx; + padding: 5px; +} + +.card_supportCode { + color: #DA8910; +} + +.card_supportCode_content { + font-size: 32rpx; +} + +.scan_view { + /* #0CC2B6 20% */ + background: linear-gradient(90deg, rgba(12, 194, 182, 0.2) 0%, rgba(12, 194, 182, 0) 100%) +} + +.card_view { + font-size: 32rpx; + padding: 5rpx; +} + +/* +.pack_view { + font-size: 32rpx; + padding: 5rpx; +} + +.location_view { + font-size: 32rpx; + padding: 5rpx; +} + +.batch_view { + font-size: 32rpx; + padding: 5rpx; +} + */ +.business_view { + font-size: 32rpx; + padding: 5rpx; +} + +.pop_customer { + border-radius: 8rpx; + background-color: #fff; +} + +.nodata { + width: 390rpx; + height: 300rpx; +} + +.text_ellipsis { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.task_top { + margin: 0rpx 10rpx; + background-color: #fff; +} + +.task_item { + margin: 0rpx 10rpx; + background-color: #fff; +} + +.task_card { + padding: 12rpx; + background-color: #fff; + border-radius: 10rpx; + margin: 12rpx; +} + +.task_number { + font-size: 35rpx; + font-weight: 600; + /* bold */ +} + +.task_text { + font-size: 30rpx; + margin: 5rpx 0rpx; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.request_state_un-doing { + font-size: 28rpx; + background: rgba(95, 203, 148, 0.2); + color: #22AF68; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +.job_state_doing { + font-size: 28rpx; + background: rgba(236, 156, 0, 0.2); + color: #EC9C00; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +.job_state_un-doing { + font-size: 28rpx; + background: rgba(95, 203, 148, 0.2); + color: #22AF68; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +.job_state_completed { + font-size: 28rpx; + background: rgba(95, 203, 148, 0.2); + color: #22AF68; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +.job_state_close { + font-size: 28rpx; + background: rgba(95, 203, 148, 0.2); + color: #22AF68; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + + +.job_state_cancelled { + font-size: 28rpx; + background: rgba(95, 203, 148, 0.2); + color: #ff0000; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +.pop_detail { + background-color: #fff; + width: 100%; + border-radius: 8rpx 8rpx 0rpx 0rpx; + padding: 15rpx; +} + +.pop_detail .item { + padding-top: 5rpx; + padding-bottom: 5rpx; + + margin-left: 10rpx; + margin-right: 10rpx; + + display: flex; + flex-direction: row; + + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.pop_detail .item_title { + padding-top: 5rpx; + padding-bottom: 5rpx; +} + +.pop_detail .text_wrap { + color: #909399; + word-break: break-all; + text-align: right; +} + +.pop_detail .item_big_title { + /* color: #2196F3; */ + /* font-size: 35rpx; */ + margin-left: 10rpx; + margin-right: 10rpx; + margin-top: 10rpx; + margin-bottom: 10rpx; +} + + + + +/deep/.uni-popup .uni-popup__wrapper { + width: 100% !important; + padding: 15rpx 20rpx 15rpx 20rpx; +} + +.btn_bottom { + position: fixed; + bottom: 10rpx; + right: 0; +} + +.btn_add_small { + + background-color: #3C9CFF; + width: 200rpx; + font-size: 30rpx; + color: #fff; + border-radius: 5rpx; +} + +.btn_add_small_after { + opacity: 0.7; +} + +.btn_commit_after { + opacity: 0.7; +} + +/* 禁用时样式 */ +button[disabled] { + background-color: #fff; + color: #666; +} + +.btn_commit { + background-color: #3C9CFF; + font-size: 30rpx; + color: #fff; + text-align: center; + padding-left: 80rpx; + padding-right: 80rpx; + margin-right: 20rpx; + margin-left: 10rpx; +} + +.btn_add { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + position: absolute; + width: 97%; + height: 35px; + border-radius: 3px; + opacity: 1; + padding: 5px; + margin-left: 5px; + margin-right: 5px; + + box-sizing: border-box; + border: 1px dashed #AAAAAA; + background: #D8D8D8; + + color: #FFFFFF; + font-size: 16px; + font-weight: normal; + line-height: 26px; + letter-spacing: 0em; +} + +.btn_clear_after { + opacity: 0.7; +} + + +.btn_clear { + background-color: #fff; + font-size: 30rpx; + color: #000; + text-align: center; + padding-left: 80rpx; + padding-right: 80rpx; + margin-right: 10rpx; + margin-left: 20rpx; +} + +.icons_scan_close { + width: 35rpx; + height: 35rpx; +} + +.count_image { + width: 45rpx; + height: 45rpx; +} + +.count_type_light { + color: #0CC2B6; + font-size: 30rpx; + margin-left: 10rpx; + margin-right: 10rpx; +} + +.count_type_black { + color: #FA5151; + font-size: 30rpx; + margin-left: 10rpx; + margin-right: 10rpx; +} + +.btn_bot { + position: fixed; + bottom: 0; + right: 0; + padding-bottom: 20rpx; + padding-right: 20rpx; + z-index: 10; +} + +.btn_single_commit { + background-color: #3C9CFF; + font-size: 30rpx; + color: #fff; + text-align: center; + width: 180rpx; +} + +.center { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +.space_between { + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.text_recommend { + color: #0A84FF; + font-size: 38rpx; +} + +.text_balance { + font-size: 36rpx; +} + +.text_default { + color: #000000; + font-size: 36rpx; +} + +.text_greater { + color: #F56C6C; + font-size: 36rpx; +} + +.text_less { + color: #FF9500; + font-size: 36rpx; +} + +.text_equal { + color: #34C759; + font-size: 38rpx; +} + +.std_pack { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 0px; + color: #909399; + font-size: 30rpx; +} + +.std_uom { + color: #909399; + font-size: 30rpx; + margin-left: 5rpx; + margin-right: 5rpx; +} + +.uom { + color: #909399; + font-size: 30rpx; + margin-left: 5rpx; + margin-right: 5rpx; + display: flex; + flex-direction: row; + align-items: center; +} + + +.std_split { + color: #909399; + font-size: 36rpx; + margin-left: 5rpx; + margin-right: 5rpx; +} + +.inspect_job { + color: #F1A532; + font-size: 36rpx; + margin-right: 10rpx; +} + +.ok_job { + color: #53C21D; + font-size: 36rpx; + margin-right: 2rpx; +} + +.nook_job { + color: #E45656; + font-size: 36rpx; + margin-right: 10rpx; +} + +.raw_location { + padding-top: 5rpx; + padding-bottom: 5rpx; + padding-left: 15rpx; + padding-right: 15rpx; + background-color: #34C759; + color: #fff; + font-size: 35rpx; +} + +.fg_location { + padding-top: 5rpx; + padding-bottom: 5rpx; + padding-left: 15rpx; + padding-right: 15rpx; + background-color: #5A7CF3; + color: #fff; + font-size: 35rpx; +} + +.semi_location { + padding-top: 5rpx; + padding-bottom: 5rpx; + padding-left: 15rpx; + padding-right: 15rpx; + background-color: #FF9500; + color: #fff; + font-size: 35rpx; +} + +.hold_location { + padding-top: 5rpx; + padding-bottom: 5rpx; + padding-left: 15rpx; + padding-right: 15rpx; + background-color: #F56C6C; + color: #fff; + font-size: 35rpx; +} + +.unk_location { + padding-top: 5rpx; + padding-bottom: 5rpx; + padding-left: 15rpx; + padding-right: 15rpx; + background-color: #999999; + color: #fff; + font-size: 35rpx; +} + +.qty_input { + width: 150rpx; + height: 60rpx; + line-height: 10rpx; + font-size: 10rpx; + color: #000000; + text-align: right; + border: 1px solid rgb(220, 211, 211); + padding: 5rpx; +} + +.qty_inspect_input { + width: 150rpx; + height: 60rpx; + line-height: 10rpx; + font-size: 10rpx; + color: #000000; + text-align: center; + border: 1px solid rgb(220, 211, 211); + padding: 5rpx; +} + +.icon_close { + width: 100rpx; + height: 100rpx; + opacity: 1; + +} + +.icon_edit { + width: 30rpx; + height: 40%; + opacity: 1; + margin-left: 10rpx; +} + +.title_popup { + margin-top: 16px; + margin-bottom: 16px; + margin-left: 8px; + margin-right: 8px; + font-size: 35rpx; + text-align: center; +} + +.close_button { + /* 自动布局子元素 */ + position: static; + left: 20px; + /* top: 1109.01px; */ + width: 100%; + height: 40px; + border-radius: 40px; + opacity: 1; + + /* 自动布局 */ + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: 9px 12px; + gap: 10px; + align-self: stretch; + + /* 颜色/白色 */ + background: #FFFFFF; + box-sizing: border-box; + /* 颜色/边框 */ + border: 1px solid #E7E6E4; + z-index: 3; +} + +/** + * 申请状态 新增 + */ +.request_status_new { + font-size: 28rpx; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; + background: rgba(34, 175, 104, 0.2); + color: rgba(34, 175, 104, 1); +} + +/** + * 申请状态 审批中 + */ +.request_status_reviewing { + font-size: 28rpx; + background: rgba(236, 156, 0, 0.2); + color: rgba(236, 156, 0, 1); + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 审批通过 + */ +.request_status_agreed { + font-size: 28rpx; + background: rgba(103, 194, 57, 0.2); + color: rgba(103, 194, 57, 1); + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 审批驳回 + */ +.request_status_refused { + font-size: 28rpx; + background: rgba(245, 108, 108, 0.2); + color: rgba(245, 108, 108, 1); + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 处理中 + */ +.request_status_handling { + font-size: 28rpx; + background: rgba(60, 156, 255, 0.2); + color: rgba(60, 156, 255, 1); + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 部分完成 + */ +.request_status_partial { + font-size: 28rpx; + background: #D3FF3C; + color: #ffffff; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 已完成 + */ +.request_status_completed { + font-size: 28rpx; + background: #D3FF3C; + color: #ffffff; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 中止 + */ +.request_status_abort { + font-size: 28rpx; + background: #F33140; + color: #ffffff; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/** + * 申请状态 已关闭 + */ +.request_status_cancelled { + font-size: 28rpx; + background: #F33140; + color: #ffffff; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} diff --git a/common/style/pdabasic.css b/common/style/pdabasic.css new file mode 100644 index 0000000..d3b92ce --- /dev/null +++ b/common/style/pdabasic.css @@ -0,0 +1,762 @@ +/* +.pda-list { + padding: 10rpx 10rpx; + box-sizing: border-box; + display: flex; + width: 100%; + flex-direction: row; +} + */ + +/* 列表 */ +.pda-list { + padding: 0 20rpx; + box-sizing: border-box; + background-color: #FFFFFF; + position: relative; + width: 100%; + display: flex; + flex-direction: column; + border-radius: 16rpx; + margin-bottom: 10rpx; +} + +.pda-list:after { + position: absolute; + z-index: 10; + /* right: 0; */ + bottom: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.pda-list-cell { + position: relative; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #eee; + padding: 10rpx 0; +} + +.pda-list-cell:last-child { + border-bottom: 0; +} + +.pda-list-cell-left { + white-space: nowrap; + /* padding: 0 10rpx; */ +} + +.pda-list-cell-db, +.pda-list-cell-right { + flex: 1; +} + +.pda-list-cell .pda-list-cell-db .uni-input-input { + font-size: .875rem; +} + +.pda-list-cell .uni-easyinput__content-input, +.pda-list-cell .uni-input-placeholder { + height: 2rem; + line-height: 2rem; +} + +.pda-list-cell .placeholder { + color: #999 !important; + font-size: 0.875rem; + padding-left: 10rpx; +} + +.pda-list-cell .uni-label { + color: #434556; +} + +.list_locode .uni-collapse-item__title-box { + font-weight: bold !important; +} + +.display-flex { + display: flex; + justify-content: space-between; + align-items: center; +} + +.list-body { + /* height: 84rpx; */ + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + overflow: hidden; +} + +.list-text-top { + width: 100%; + color: #000; + font-weight: bolder; + /* line-height: 36rpx; */ + /* font-size: 30rpx; */ +} + +.list-text-bottom { + /* line-height: 30rpx; */ + /* font-size: 26rpx; */ + color: #8f8f94; +} + + +/* 改为detail-content */ +/* margin-bottom: 20rpx; */ +.device-detail { + padding: 10rpx !important; + margin: 10rpx; + border-radius: 16rpx; + background-color: #fff; + color: #666666; + line-height: 1.5; + overflow: hidden; +} + +.list-style { + margin-bottom: 0rpx; + border-radius: 16rpx; + background-color: #FFFFFF; + color: #666666; + line-height: 1.5; +} + +.border-font { + color: #000; + font-weight: bolder; +} + +.space-between { + -webkit-justify-content: space-between; + justify-content: space-between; +} + +.accept-button { + width: 30%; + font-size: 16px; + background-color: #7ac756; + color: #ffffff; +} + +.bigsave-button { + width: 80%; + font-size: 16px; + background-color: #007AFF; + color: #ffffff; +} + +.save-button { + width: 30%; + font-size: 16px; + background-color: #007AFF; + color: #ffffff; +} + +.scroll-detail { + overflow: hidden; + padding-bottom: 60px; + height: 480px; + /* 没有高度不可以回到顶部 */ + /* background-color: #ffffff; */ +} + +.scrollView { + overflow: hidden; + padding-bottom: 50px +} + +.scroll-Y { + /* height: 70ux; */ + padding-bottom: 50px +} + +.bottom1 { + position: fixed; + width: 100%; + /* padding: 10rpx 10rpx; */ + left: 0; + /* right: 0; */ + bottom: 0; + background-color: #ffffff; +} + +.bottom { + position: fixed; + display: flex; + width: 100%; + padding: 10rpx 10rpx; + left: 0; + /* right: 0; */ + bottom: 0; + background-color: #ffffff; +} + + +.pars-num { + /* font-size: 26rpx; */ +} + +.right-width { + text-align: center; + width: 100rpx; +} + +.state-style { + float: left; + margin-top: 10rpx; + /* border-radius: 16rpx; + padding: 0rpx 10rpx; */ + /* line-height: 50rpx; + height: 50rpx; */ + /* width: 120rpx; + display: flex; + flex-direction: column; + align-items: center; */ + /* 垂直居中 */ +} + +.uni-popup-view { + background-color: #fff; + border-radius: 10px; +} + +.uni-popup-button-box { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + padding: 10px 15px; +} + +.uni-popup-button { + flex: 1; + /* // border-radius: 50px; + // color: #666; */ + /* font-size: 16px; */ +} + +/* 任务状态 */ +/* 打开 */ +.open { + font-size: 28rpx; + background: rgba(95, 203, 148, 0.2); + color: #22AF68; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/* 进行中 */ +.pending { + font-size: 28rpx; + background: rgba(236, 156, 0, 0.2); + color: #EC9C00; + padding: 10rpx 20rpx 10rpx 20rpx; + border-radius: 10rpx; +} + +/* 完成 */ +.completed { + background-color: #E6A23C; + color: #FFFFFF; + border-radius: 10rpx; +} + +/* 关闭 */ +.close { + background-color: #F56C6C; + color: #FFFFFF; +} + + +/* 关闭 */ +.other { + background-color: #808080; + color: #FFFFFF; + border-radius: 10rpx; +} + +/* 其他 */ +.unk { + background-color: #ececec; + color: #666; + border-radius: 10rpx; +} + +/* 检验任务状态 */ +/* 免检 */ +.exempt { + background-color: #409EFF; + color: #FFFFFF; +} + +/* 全检 */ +.full { + background-color: #67C23A; + color: #FFFFFF; +} + +/* 抽检 */ +.sampling { + background-color: #E6A23C; + color: #FFFFFF; +} + +/* 挑检 */ +.pick { + background-color: #F56C6C; + color: #FFFFFF; +} + +/* 库存状态 */ + +.uni-link { + background-color: #BD2C00; + color: #BD2C00 !important; +} + +.inventory_status_insp { + color: #F9AE3D; + margin-right: 10rpx; +} + +.inventory_status_ok { + color: #67C23A; + margin-right: 10rpx; +} + +.inventory_status_nok { + color: #FF2424; + margin-right: 10rpx; +} + +.inventory_status_hold { + color: #EC9C00; + margin-right: 10rpx; +} + +.inventory_status_scarp { + color: #999; + margin-right: 10rpx; +} + +.frozen { + color: #FF581D; + margin-right: 10rpx; +} + +.pass { + color: #67C23A !important; +} + +.unPass { + color: #FF2424 !important; +} + +.location_inspect { + background-color: #F6CB61; + color: #FFFFFF; +} + +.location_raw { + background-color: #2DA8D8; + color: #FFFFFF; +} + +.location_semi { + background-color: #EDAE50; + color: #FFFFFF; +} + +.location_fg { + background-color: #078343; + color: #FFFFFF; +} + +.location_wip { + background-color: #FC85FE; + color: #FFFFFF; +} + +.location_scrap { + background-color: #E30016; + color: #FFFFFF; +} + +.location_noc { + background-color: #C31223; + color: #FFFFFF; +} + +.location_overflow { + background-color: #7D1EDC; + color: #FFFFFF; +} + +.location_customer { + background-color: #5A7CF3; + color: #FFFFFF; +} + +.location_hold { + background-color: #FF8C00; + color: #FFFFFF; +} + + + + +/* //物料状态 +export function getItemTypeStyle(val) { + if (val == 0) return 'active' + else if (val == 1) return 'hold' + else if (val == 2) return 'new' + else if (val == 3) return 'plan' + else if (val == 4) return 'disable' + else return 'other' +} + */ + +/* 物料状态 */ +.active { + background-color: #5FCB94; + color: #FFFFFF; +} + +.hold_item { + background-color: #FF4206; + color: #FFFFFF; +} + +.new { + background-color: #E6A23C; + color: #FFFFFF; +} + +.plan { + background-color: #2677F9; + color: #FFFFFF; +} + +.disable { + background-color: #666; + color: #FFFFFF; +} + +/* 任务编号字体 */ +.text-number { + color: #000; + font-weight: bolder; +} + +/* 物料编号字体 */ +.text-itemcode { + /* font-size: 26rpx; */ + color: #000; + font-weight: bolder; +} + +.text-desc { + color: #8f8f91; + /* font-size: 22rpx; */ +} + +/* 物料编号字体 */ +.text-bolder { + color: #000; + font-weight: bolder; +} + +.detail-list { + background-color: #fff; + padding:5rpx 10rpx; + /* margin: 20rpx; */ + /* border-radius: 16rpx; */ + /* overflow: hidden; */ +} + +.detail-content { + position: relative; + flex: 1; + /* font-size: 26rpx; */ + color: #101010; +} + +.example-body { + background-color: #FFFFFF; +} + +.result-box { + text-align: center; + padding: 20px 0px; + /* font-size: 16px; */ +} + +.toptext { + padding-left: 20upx; + line-height: 80upx; +} + +.numberstyle { + display: flex; + /* flex-direction: row-reverse; */ + border-bottom: 10upx solid #EEEEEE; + width: 200upx; + padding-bottom: 20upx; +} + +.input { + height: 20rpx; + padding: 0rpx 8rpx; + line-height: 50rpx; + /* font-size: 25rpx; */ + background: #FFF; + border-radius: 4rpx; + flex: 1; +} + +.mini-type-style { + vertical-align: middle; + font-size: 0.725rem; + margin-right: 6rpx; + border-radius: 4rpx; + padding: 4rpx 8rpx; + /* width: 80rpx; */ + /* height: 46rpx; + min-width: 80rpx; + display: flex; + flex-direction: column; */ + +} + +.text-color { + color: #000; + font-weight: bolder; +} + +.tabs { + flex: 1; + flex-direction: column; + overflow: hidden; + /* background-color: #ffffff; */ +} + +/* .scroll-h { + touch-action: none; + width: 100%; + height: 100rpx; + flex-direction: row; + white-space: nowrap; + justify-content: center; +} */ + +.line-h { + height: 1rpx; + background-color: #cccccc; +} + +.uni-tab-item { + /* #ifndef APP-PLUS */ + display: inline-block; + /* #endif */ + flex-wrap: nowrap; + padding: 0 30rpx; +} + +.uni-tab-item-title { + position: relative; + color: #555; + /* font-size: 24rpx; */ + height: 100rpx; + line-height: 100rpx; + flex-wrap: nowrap; + /* #ifndef APP-PLUS */ + white-space: nowrap; + /* #endif */ +} + +.uni-tab-item-title-active { + color: #101010; + font-weight: bold; +} + +.uni-tab-item-title-active:after { + left: 50%; + transform: translateX(-50%); + position: absolute; + bottom: -20rpx; + display: inline-block; + content: ""; + width: 40rpx; + height: 8rpx; + background-color: #5a7cf3; + border-radius: 5px; +} + +/* .blece { + padding: 10upx; + color: #111111; + border-bottom: 2px solid #f5f5f5; + display: flex; + flex-wrap: wrap; +} */ + +.conbox { + /* padding: 10rpx 0; */ + padding-left: 10rpx; +} + +.myinput { + display: flex; + box-sizing: border-box; + overflow: hidden; + position: relative; + flex: 1; + justify-content: center; + flex-direction: row; + align-items: center; + height: 88rpx; + padding: 20rpx 0; + /* border-width: 0.5px; + border-style: solid; + border-color: #e5e5e5; + border-radius: 5px; + background-color: rgb(248, 248, 248); + font-size: 18px;*/ + font-size: .825rem; +} + +.qtyinput { + height: 50px; + padding: 10px 0px; + font-size: 20px; +} + + +.count-input { + padding: 5rpx 3rpx; + width: 95%; + font-size: 18px; +} + +.pda-data-picker { + padding: 5rpx 3rpx; + width: 95%; + font-size: 18px; +} + +.inputPlaceholderStyle { + font-size: 16px; +} + +.inputfocus { + border-color: #007AFF; +} + + +.txt-16 { + font-size: 16px; +} + +.txt-18 { + font-size: 18px; +} + +.txt-20 { + font-size: 20px; +} + +.pda-label { + width: 210rpx; + word-wrap: break-word; + word-break: break-all; + text-indent: 20rpx; + font-size: 16px; +} + +.fontsize-16 { + font-size: 16px; +} + +.fontsize-18 { + font-size: 18px; +} + +.fontsize-20 { + font-size: 20px; +} + +/deep/ .uni-collapse-item__title-text { + font-size: 16px; +} + + +/deep/ .input-value { + font-size: 16px; +} + +/deep/ .uni-input-input { + font-size: 18px; +} + +page { + width: 100%; + height: 100%; + /* background-color: #fff; */ +} + +.page-wraper { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + /* background-color: #fff; */ +} + +.page-header { + background-color: #fff; + font-size: 35rpx; + padding: 10rpx 20rpx; +} + +.page-header .header_item { + /* padding-left: 10rpx; */ + padding: 5rpx 10rpx; + font-size:32rpx ; +} + +.page-header .header_job_top { + padding:5rpx 0rpx; +} +.page-main { + flex: 1; + position: relative; + background: #fff; +} + +.page-main-scroll { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +.page-main-list { + /* height: 80rpx; + line-height: 80rpx; */ + text-align: center; + background: #e0e0e0; + +} diff --git a/common/style/uni.css b/common/style/uni.css new file mode 100644 index 0000000..6b1ded6 --- /dev/null +++ b/common/style/uni.css @@ -0,0 +1,3405 @@ +@font-face { + font-family: uniicons; + font-weight: normal; + font-style: normal; + src: url('~@/static/uni.ttf') format('truetype'); +} + +/* #ifdef H5 */ +.fix-left-window { + padding-left: var(--window-left); +} + +.pc-hide { + display: none !important; +} + +/* #endif */ + +/*通用 */ + +/* view{ + font-size:28rpx; + line-height:1.8; +} */ +progress, +checkbox-group { + width: 100%; +} + +form { + width: 100%; +} + +.uni-flex { + display: flex; + flex-direction: row; +} + +.uni-flex-item { + flex: 1; +} + +.uni-row { + flex-direction: row; +} + +.uni-column { + flex-direction: column; +} + +.uni-link { + color: #576B95; + font-size: 26rpx; +} + +.uni-center { + text-align: center; +} + +.uni-inline-item { + display: flex; + flex-direction: row; + align-items: center; + /* justify-content: center; */ + /* background-color: #888888; */ +} + +/* .uni-inline-item text { + margin-right: 20rpx; +} + */ +/* .uni-inline-item text:last-child { + margin-right: 0rpx; + margin-left: 20rpx; +} */ + +/* page */ +.common-page-head { + padding: 35rpx; + text-align: center; +} + +.common-page-head-title { + display: inline-block; + padding: 0 40rpx; + font-size: 30rpx; + height: 88rpx; + line-height: 88rpx; + color: #BEBEBE; + box-sizing: border-box; + border-bottom: 2rpx solid #D8D8D8; +} + +.uni-padding-wrap { + /* width:690rpx; */ + padding: 0 30rpx; +} + +.uni-word { + text-align: center; + padding: 200rpx 100rpx; +} + +.uni-title { + font-size: 30rpx; + font-weight: 500; + padding: 20rpx 0; + line-height: 1.5; +} + +.uni-text { + font-size: 28rpx; +} + +.uni-title text { + font-size: 24rpx; + color: #888; +} + +.uni-text-gray { + color: #ccc; +} + +.uni-text-small { + font-size: 24rpx; +} + +.uni-common-mb { + margin-bottom: 30rpx; +} + +.uni-common-pb { + padding-bottom: 30rpx; +} + +.uni-common-pl { + padding-left: 30rpx; +} + +.uni-common-mt { + margin-top: 30rpx; +} + +/* 背景色 */ +.uni-bg-red { + background: #F76260; + color: #FFF; +} + +.uni-bg-green { + background: #09BB07; + color: #FFF; +} + +.uni-bg-blue { + background: #007AFF; + color: #FFF; +} + +.uni-bg-white { + background: #FFFFFF; +} + +/* 标题 */ +.uni-h1 { + font-size: 80rpx; + font-weight: 700; +} + +.uni-h2 { + font-size: 60rpx; + font-weight: 700; +} + +.uni-h3 { + font-size: 48rpx; + font-weight: 700; +} + +.uni-h4 { + font-size: 36rpx; + font-weight: 700; +} + +.uni-h5 { + font-size: 28rpx; + color: #8f8f94; +} + +.uni-h6 { + font-size: 24rpx; + color: #8f8f94; +} + +.uni-bold { + font-weight: bold; +} + +/* 文本溢出隐藏 */ +.uni-ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +/* 竖向百分百按钮 */ +.uni-btn-v { + padding: 10rpx 0; +} + +.uni-btn-v button { + margin: 20rpx 0; +} + +/* 表单 */ +.uni-form-item { + display: flex; + width: 100%; + padding: 10rpx 0; +} + +.uni-form-item .title { + padding: 10rpx 25rpx; +} + +.uni-label { + width: 210rpx; + word-wrap: break-word; + word-break: break-all; + text-indent: 20rpx; +} + +.uni-input { + height: 80rpx; + padding: 15rpx 25rpx; + line-height: 80rpx; + font-size: 28rpx; + background: #FFF; + flex: 1; +} + +radio-group, +checkbox-group { + width: 100%; +} + +radio-group label, +checkbox-group label { + padding-right: 20rpx; +} + +.uni-form-item .with-fun { + display: flex; + flex-wrap: nowrap; + background: #FFFFFF; +} + +.uni-form-item .with-fun .uni-icon { + width: 40px; + height: 80rpx; + line-height: 80rpx; + flex-shrink: 0; +} + +/* loadmore */ +.uni-loadmore { + height: 80rpx; + line-height: 80rpx; + text-align: center; + padding-bottom: 30rpx; +} + +/*数字角标*/ +/* .uni-badge, +.uni-badge-default { + font-family: 'Helvetica Neue', Helvetica, sans-serif; + font-size: 12px; + line-height: 1; + display: inline-block; + padding: 3px 6px; + color: #333; + border-radius: 100px; + background-color: rgba(0, 0, 0, .15); +} */ +.uni-badge.uni-badge-inverted { + padding: 0 5px 0 0; + color: #929292; + background-color: transparent +} + +.uni-badge-primary { + color: #fff; + background-color: #007aff +} + +.uni-badge-blue.uni-badge-inverted, +.uni-badge-primary.uni-badge-inverted { + color: #007aff; + background-color: transparent +} + +.uni-badge-green, +.uni-badge-success { + color: #fff; + background-color: #4cd964; +} + +.uni-badge-green.uni-badge-inverted, +.uni-badge-success.uni-badge-inverted { + color: #4cd964; + background-color: transparent +} + +.uni-badge-warning, +.uni-badge-yellow { + color: #fff; + background-color: #f0ad4e +} + +.uni-badge-warning.uni-badge-inverted, +.uni-badge-yellow.uni-badge-inverted { + color: #f0ad4e; + background-color: transparent +} + +.uni-badge-danger, +.uni-badge-red { + color: #fff; + background-color: #dd524d +} + +.uni-badge-danger.uni-badge-inverted, +.uni-badge-red.uni-badge-inverted { + color: #dd524d; + background-color: transparent +} + +.uni-badge-purple, +.uni-badge-royal { + color: #fff; + background-color: #8a6de9 +} + +.uni-badge-purple.uni-badge-inverted, +.uni-badge-royal.uni-badge-inverted { + color: #8a6de9; + background-color: transparent +} + +/*折叠面板 */ +.uni-collapse-content { + height: 0; + width: 100%; + overflow: hidden; +} + +.uni-collapse-content.uni-active { + height: auto; +} + +/*卡片视图 */ +.uni-card { + background: #fff; + border-radius: 8rpx; + margin: 20rpx 0; + position: relative; + /* box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, .3); */ +} + +.uni-card-content { + font-size: 30rpx; +} + +.uni-card-content.image-view { + width: 100%; + margin: 0; +} + +.uni-card-content-inner { + position: relative; + padding: 30rpx; +} + +.uni-card-footer, +.uni-card-header { + position: relative; + display: flex; + min-height: 50rpx; + padding: 20rpx 30rpx; + justify-content: space-between; + align-items: center; +} + +.uni-card-header { + font-size: 36rpx; +} + +.uni-card-footer { + color: #6d6d72; +} + +.uni-card-footer:before, +.uni-card-header:after { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2rpx; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-card-header:after { + top: auto; + bottom: 0; +} + +.uni-card-media { + justify-content: flex-start; +} + +.uni-card-media-logo { + height: 84rpx; + width: 84rpx; + margin-right: 20rpx; +} + +.uni-card-media-body { + height: 84rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; +} + +.uni-card-media-text-top { + line-height: 36rpx; + font-size: 34rpx; +} + +.uni-card-media-text-bottom { + line-height: 30rpx; + font-size: 28rpx; + color: #8f8f94; +} + +.uni-card-link { + color: #007AFF; +} + +/* 列表 */ +.uni-list { + background-color: #FFFFFF; + position: relative; + width: 100%; + display: flex; + flex-direction: column; +} + +.uni-list:after { + position: absolute; + z-index: 10; + right: 0; + bottom: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +/* .uni-list::before { + position: absolute; + z-index: 10; + right: 0; + top: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} */ +.uni-list-cell { + position: relative; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} + +.uni-list-cell-hover { + background-color: #eee; +} + +.uni-list-cell-pd { + padding: 22rpx 30rpx; +} + +.uni-list-cell-left { + white-space: nowrap; + font-size: 28rpx; + padding: 0 30rpx; +} + +.uni-list-cell-db, +.uni-list-cell-right { + flex: 1; +} + +.uni-list-cell::after { + position: absolute; + z-index: 3; + right: 0; + bottom: 0; + left: 30rpx; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-list .uni-list-cell:last-child::after { + height: 0rpx; +} + +.uni-list-cell-last.uni-list-cell::after { + height: 0rpx; +} + +.uni-list-cell-divider { + position: relative; + display: flex; + color: #999; + background-color: #f7f7f7; + padding: 15rpx 20rpx; +} + +.uni-list-cell-divider::before { + position: absolute; + right: 0; + top: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-list-cell-divider::after { + position: absolute; + right: 0; + bottom: 0; + left: 0rpx; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-list-cell-navigate { + font-size: 30rpx; + padding: 22rpx 30rpx; + line-height: 48rpx; + position: relative; + display: flex; + box-sizing: border-box; + width: 100%; + flex: 1; + justify-content: space-between; + align-items: center; +} + +.uni-list-cell-navigate { + padding-right: 36rpx; +} + +.uni-navigate-badge { + padding-right: 50rpx; +} + +.uni-list-cell-navigate.uni-navigate-right:after { + font-family: uniicons; + content: '\e583'; + position: absolute; + right: 24rpx; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.uni-list-cell-navigate.uni-navigate-bottom:after { + font-family: uniicons; + content: '\e581'; + position: absolute; + right: 24rpx; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.uni-list-cell-navigate.uni-navigate-bottom.uni-active::after { + font-family: uniicons; + content: '\e580'; + position: absolute; + right: 24rpx; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.uni-collapse.uni-list-cell { + flex-direction: column; +} + +.uni-list-cell-navigate.uni-active { + background: #eee; +} + +.uni-list.uni-collapse { + box-sizing: border-box; + height: 0; + overflow: hidden; +} + +.uni-collapse .uni-list-cell { + padding-left: 20rpx; +} + +.uni-collapse .uni-list-cell::after { + left: 52rpx; +} + +.uni-list.uni-active { + height: auto; +} + +/* 三行列表 */ +.uni-triplex-row { + display: flex; + flex: 1; + width: 100%; + box-sizing: border-box; + flex-direction: row; + padding: 22rpx 30rpx; +} + +.uni-triplex-right, +.uni-triplex-left { + display: flex; + flex-direction: column; +} + +.uni-triplex-left { + width: 84%; +} + +.uni-triplex-left .uni-title { + padding: 8rpx 0; +} + +.uni-triplex-left .uni-text, +.uni-triplex-left .uni-text-small { + color: #999999; +} + +.uni-triplex-right { + width: 16%; + text-align: right; +} + +/* 图文列表 */ +.uni-media-list { + padding: 22rpx 30rpx; + box-sizing: border-box; + display: flex; + width: 100%; + flex-direction: row; +} + +.uni-navigate-right.uni-media-list { + padding-right: 74rpx; +} + +.uni-pull-right { + flex-direction: row-reverse; +} + +.uni-pull-right>.uni-media-list-logo { + margin-right: 0rpx; + margin-left: 20rpx; +} + +.uni-media-list-logo { + height: 84rpx; + width: 84rpx; + margin-right: 20rpx; +} + +.uni-media-list-logo image { + height: 100%; + width: 100%; +} + +.uni-media-list-body { + height: 84rpx; + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + overflow: hidden; +} + +.uni-media-list-text-top { + width: 100%; + line-height: 36rpx; + font-size: 30rpx; +} + +.uni-media-list-text-bottom { + width: 100%; + line-height: 30rpx; + font-size: 26rpx; + color: #8f8f94; +} + +/* 九宫格 */ +.uni-grid-9 { + background: #f2f2f2; + width: 750rpx; + display: flex; + flex-direction: row; + flex-wrap: wrap; + border-top: 2rpx solid #eee; +} + +.uni-grid-9-item { + width: 250rpx; + height: 200rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + border-bottom: 2rpx solid; + border-right: 2rpx solid; + border-color: #eee; + box-sizing: border-box; +} + +.no-border-right { + border-right: none; +} + +.uni-grid-9-image { + width: 100rpx; + height: 100rpx; +} + +.uni-grid-9-text { + width: 250rpx; + line-height: 4rpx; + height: 40rpx; + text-align: center; + font-size: 30rpx; +} + +.uni-grid-9-item-hover { + background: rgba(0, 0, 0, 0.1); +} + +/* 上传 */ +.uni-uploader { + flex: 1; + flex-direction: column; +} + +.uni-uploader-head { + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.uni-uploader-info { + color: #B2B2B2; +} + +.uni-uploader-body { + margin-top: 16rpx; +} + +.uni-uploader__files { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.uni-uploader__file { + margin: 10rpx; + width: 210rpx; + height: 210rpx; +} + +.uni-uploader__img { + display: block; + width: 210rpx; + height: 210rpx; +} + +.uni-uploader__input-box { + position: relative; + margin: 10rpx; + width: 208rpx; + height: 208rpx; + border: 2rpx solid #D9D9D9; +} + +.uni-uploader__input-box:before, +.uni-uploader__input-box:after { + content: " "; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + background-color: #D9D9D9; +} + +.uni-uploader__input-box:before { + width: 4rpx; + height: 79rpx; +} + +.uni-uploader__input-box:after { + width: 79rpx; + height: 4rpx; +} + +.uni-uploader__input-box:active { + border-color: #999999; +} + +.uni-uploader__input-box:active:before, +.uni-uploader__input-box:active:after { + background-color: #999999; +} + +.uni-uploader__input { + position: absolute; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; +} + +/*问题反馈*/ +.feedback-title { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 20rpx; + color: #8f8f94; + font-size: 28rpx; +} + +.feedback-star-view.feedback-title { + justify-content: flex-start; + margin: 0; +} + +.feedback-quick { + position: relative; + padding-right: 40rpx; +} + +.feedback-quick:after { + font-family: uniicons; + font-size: 40rpx; + content: '\e581'; + position: absolute; + right: 0; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.feedback-body { + background: #fff; +} + +.feedback-textare { + height: 200rpx; + font-size: 34rpx; + line-height: 50rpx; + width: 100%; + box-sizing: border-box; + padding: 20rpx 30rpx 0; +} + +.feedback-input { + font-size: 34rpx; + height: 50rpx; + min-height: 50rpx; + padding: 15rpx 20rpx; + line-height: 50rpx; +} + +.feedback-uploader { + padding: 22rpx 20rpx; +} + +.feedback-star { + font-family: uniicons; + font-size: 40rpx; + margin-left: 6rpx; +} + +.feedback-star-view { + margin-left: 20rpx; +} + +.feedback-star:after { + content: '\e408'; +} + +.feedback-star.active { + color: #FFB400; +} + +.feedback-star.active:after { + content: '\e438'; +} + +.feedback-submit { + background: #007AFF; + color: #FFFFFF; + margin: 20rpx; +} + +/* input group */ +.uni-input-group { + position: relative; + padding: 0; + border: 0; + background-color: #fff; +} + +.uni-input-group:before { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2rpx; + content: ''; + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-input-group:after { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 2rpx; + content: ''; + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-input-row { + position: relative; + display: flex; + flex-direction: row; + font-size: 28rpx; + padding: 22rpx 30rpx; + justify-content: space-between; +} + +.uni-input-group .uni-input-row:after { + position: absolute; + right: 0; + bottom: 0; + left: 30rpx; + height: 2rpx; + content: ''; + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-input-row label { + line-height: 70rpx; +} + +/* textarea */ +.uni-textarea { + width: 100%; + background: #FFF; +} + +.uni-textarea textarea { + width: 96%; + padding: 18rpx 2%; + line-height: 1.6; + font-size: 28rpx; + height: 150rpx; +} + +/* tab bar */ +.uni-tab-bar { + display: flex; + flex: 1; + flex-direction: column; + overflow: hidden; + height: 100%; +} + +.uni-tab-bar .list { + width: 750rpx; + height: 100%; +} + +.uni-swiper-tab { + width: 100%; + white-space: nowrap; + line-height: 100rpx; + height: 100rpx; + border-bottom: 1px solid #c8c7cc; +} + +.swiper-tab-list { + font-size: 30rpx; + width: 150rpx; + display: inline-block; + text-align: center; + color: #555; +} + +.uni-tab-bar .active { + color: #007AFF; +} + +.uni-tab-bar .swiper-box { + flex: 1; + width: 100%; + height: calc(100% - 100rpx); +} + +.uni-tab-bar-loading { + padding: 20rpx 0; +} + +/* comment */ +.uni-comment { + padding: 5rpx 0; + display: flex; + flex-grow: 1; + flex-direction: column; +} + +.uni-comment-list { + flex-wrap: nowrap; + padding: 10rpx 0; + margin: 10rpx 0; + width: 100%; + display: flex; +} + +.uni-comment-face { + width: 70rpx; + height: 70rpx; + border-radius: 100%; + margin-right: 20rpx; + flex-shrink: 0; + overflow: hidden; +} + +.uni-comment-face image { + width: 100%; + border-radius: 100%; +} + +.uni-comment-body { + width: 100%; +} + +.uni-comment-top { + line-height: 1.5em; + justify-content: space-between; +} + +.uni-comment-top text { + color: #0A98D5; + font-size: 24rpx; +} + +.uni-comment-date { + line-height: 38rpx; + flex-direction: row; + justify-content: space-between; + display: flex !important; + flex-grow: 1; +} + +.uni-comment-date view { + color: #666666; + font-size: 24rpx; + line-height: 38rpx; +} + +.uni-comment-content { + line-height: 1.6em; + font-size: 28rpx; + padding: 8rpx 0; +} + +.uni-comment-replay-btn { + background: #FFF; + font-size: 24rpx; + line-height: 28rpx; + padding: 5rpx 20rpx; + border-radius: 30rpx; + color: #333 !important; + margin: 0 10rpx; +} + +/* swiper msg */ +.uni-swiper-msg { + width: 100%; + padding: 12rpx 0; + flex-wrap: nowrap; + display: flex; +} + +.uni-swiper-msg-icon { + width: 50rpx; + margin-right: 20rpx; +} + +.uni-swiper-msg-icon image { + width: 100%; + flex-shrink: 0; +} + +.uni-swiper-msg swiper { + width: 100%; + height: 50rpx; +} + +.uni-swiper-msg swiper-item { + line-height: 50rpx; +} + +/* product */ +.uni-product-list { + display: flex; + width: 100%; + flex-wrap: wrap; + flex-direction: row; +} + +.uni-product { + padding: 20rpx; + display: flex; + flex-direction: column; +} + +.image-view { + height: 330rpx; + width: 330rpx; + margin: 12rpx 0; +} + +.uni-product-image { + height: 330rpx; + width: 330rpx; +} + +.uni-product-title { + width: 300rpx; + word-break: break-all; + display: -webkit-box; + overflow: hidden; + line-height: 1.5; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.uni-product-price { + margin-top: 10rpx; + font-size: 28rpx; + line-height: 1.5; + position: relative; +} + +.uni-product-price-original { + color: #e80080; +} + +.uni-product-price-favour { + color: #888888; + text-decoration: line-through; + margin-left: 10rpx; +} + +.uni-product-tip { + position: absolute; + right: 10rpx; + background-color: #ff3333; + color: #ffffff; + padding: 0 10rpx; + border-radius: 5rpx; +} + +/* timeline */ +.uni-timeline { + margin: 35rpx 0; + display: flex; + flex-direction: column; + position: relative; +} + + +.uni-timeline-item { + display: flex; + flex-direction: row; + position: relative; + padding-bottom: 20rpx; + box-sizing: border-box; + overflow: hidden; + +} + +.uni-timeline-item .uni-timeline-item-keynode { + width: 160rpx; + flex-shrink: 0; + box-sizing: border-box; + padding-right: 20rpx; + text-align: right; + line-height: 65rpx; +} + +.uni-timeline-item .uni-timeline-item-divider { + flex-shrink: 0; + position: relative; + width: 30rpx; + height: 30rpx; + top: 15rpx; + border-radius: 50%; + background-color: #bbb; +} + + + +.uni-timeline-item-divider::before, +.uni-timeline-item-divider::after { + position: absolute; + left: 15rpx; + width: 1rpx; + height: 100vh; + content: ''; + background: inherit; +} + +.uni-timeline-item-divider::before { + bottom: 100%; +} + +.uni-timeline-item-divider::after { + top: 100%; +} + + +.uni-timeline-last-item .uni-timeline-item-divider:after { + display: none; +} + +.uni-timeline-first-item .uni-timeline-item-divider:before { + display: none; +} + +.uni-timeline-item .uni-timeline-item-content { + padding-left: 20rpx; +} + +.uni-timeline-last-item .bottom-border::after { + display: none; +} + +.uni-timeline-item-content .datetime { + color: #CCCCCC; +} + +/* 自定义节点颜色 */ +.uni-timeline-last-item .uni-timeline-item-divider { + background-color: #1AAD19; +} + + +/* uni-icon */ + +.uni-icon { + font-family: uniicons; + font-size: 24px; + font-weight: normal; + font-style: normal; + line-height: 1; + display: inline-block; + text-decoration: none; + -webkit-font-smoothing: antialiased; +} + +.uni-icon.uni-active { + color: #007aff; +} + +.uni-icon-contact:before { + content: '\e100'; +} + +.uni-icon-person:before { + content: '\e101'; +} + +.uni-icon-personadd:before { + content: '\e102'; +} + +.uni-icon-contact-filled:before { + content: '\e130'; +} + +.uni-icon-person-filled:before { + content: '\e131'; +} + +.uni-icon-personadd-filled:before { + content: '\e132'; +} + +.uni-icon-phone:before { + content: '\e200'; +} + +.uni-icon-email:before { + content: '\e201'; +} + +.uni-icon-chatbubble:before { + content: '\e202'; +} + +.uni-icon-chatboxes:before { + content: '\e203'; +} + +.uni-icon-phone-filled:before { + content: '\e230'; +} + +.uni-icon-email-filled:before { + content: '\e231'; +} + +.uni-icon-chatbubble-filled:before { + content: '\e232'; +} + +.uni-icon-chatboxes-filled:before { + content: '\e233'; +} + +.uni-icon-weibo:before { + content: '\e260'; +} + +.uni-icon-weixin:before { + content: '\e261'; +} + +.uni-icon-pengyouquan:before { + content: '\e262'; +} + +.uni-icon-chat:before { + content: '\e263'; +} + +.uni-icon-qq:before { + content: '\e264'; +} + +.uni-icon-videocam:before { + content: '\e300'; +} + +.uni-icon-camera:before { + content: '\e301'; +} + +.uni-icon-mic:before { + content: '\e302'; +} + +.uni-icon-location:before { + content: '\e303'; +} + +.uni-icon-mic-filled:before, +.uni-icon-speech:before { + content: '\e332'; +} + +.uni-icon-location-filled:before { + content: '\e333'; +} + +.uni-icon-micoff:before { + content: '\e360'; +} + +.uni-icon-image:before { + content: '\e363'; +} + +.uni-icon-map:before { + content: '\e364'; +} + +.uni-icon-compose:before { + content: '\e400'; +} + +.uni-icon-trash:before { + content: '\e401'; +} + +.uni-icon-upload:before { + content: '\e402'; +} + +.uni-icon-download:before { + content: '\e403'; +} + +.uni-icon-close:before { + content: '\e404'; +} + +.uni-icon-redo:before { + content: '\e405'; +} + +.uni-icon-undo:before { + content: '\e406'; +} + +.uni-icon-refresh:before { + content: '\e407'; +} + +.uni-icon-star:before { + content: '\e408'; +} + +.uni-icon-plus:before { + content: '\e409'; +} + +.uni-icon-minus:before { + content: '\e410'; +} + +.uni-icon-circle:before, +.uni-icon-checkbox:before { + content: '\e411'; +} + +.uni-icon-close-filled:before, +.uni-icon-clear:before { + content: '\e434'; +} + +.uni-icon-refresh-filled:before { + content: '\e437'; +} + +.uni-icon-star-filled:before { + content: '\e438'; +} + +.uni-icon-plus-filled:before { + content: '\e439'; +} + +.uni-icon-minus-filled:before { + content: '\e440'; +} + +.uni-icon-circle-filled:before { + content: '\e441'; +} + +.uni-icon-checkbox-filled:before { + content: '\e442'; +} + +.uni-icon-closeempty:before { + content: '\e460'; +} + +.uni-icon-refreshempty:before { + content: '\e461'; +} + +.uni-icon-reload:before { + content: '\e462'; +} + +.uni-icon-starhalf:before { + content: '\e463'; +} + +.uni-icon-spinner:before { + content: '\e464'; +} + +.uni-icon-spinner-cycle:before { + content: '\e465'; +} + +.uni-icon-search:before { + content: '\e466'; +} + +.uni-icon-plusempty:before { + content: '\e468'; +} + +.uni-icon-forward:before { + content: '\e470'; +} + +.uni-icon-back:before, +.uni-icon-left-nav:before { + content: '\e471'; +} + +.uni-icon-checkmarkempty:before { + content: '\e472'; +} + +.uni-icon-home:before { + content: '\e500'; +} + +.uni-icon-navigate:before { + content: '\e501'; +} + +.uni-icon-gear:before { + content: '\e502'; +} + +.uni-icon-paperplane:before { + content: '\e503'; +} + +.uni-icon-info:before { + content: '\e504'; +} + +.uni-icon-help:before { + content: '\e505'; +} + +.uni-icon-locked:before { + content: '\e506'; +} + +.uni-icon-more:before { + content: '\e507'; +} + +.uni-icon-flag:before { + content: '\e508'; +} + +.uni-icon-home-filled:before { + content: '\e530'; +} + +.uni-icon-gear-filled:before { + content: '\e532'; +} + +.uni-icon-info-filled:before { + content: '\e534'; +} + +.uni-icon-help-filled:before { + content: '\e535'; +} + +.uni-icon-more-filled:before { + content: '\e537'; +} + +.uni-icon-settings:before { + content: '\e560'; +} + +.uni-icon-list:before { + content: '\e562'; +} + +.uni-icon-bars:before { + content: '\e563'; +} + +.uni-icon-loop:before { + content: '\e565'; +} + +.uni-icon-paperclip:before { + content: '\e567'; +} + +.uni-icon-eye:before { + content: '\e568'; +} + +.uni-icon-arrowup:before { + content: '\e580'; +} + +.uni-icon-arrowdown:before { + content: '\e581'; +} + +.uni-icon-arrowleft:before { + content: '\e582'; +} + +.uni-icon-arrowright:before { + content: '\e583'; +} + +.uni-icon-arrowthinup:before { + content: '\e584'; +} + +.uni-icon-arrowthindown:before { + content: '\e585'; +} + +.uni-icon-arrowthinleft:before { + content: '\e586'; +} + +.uni-icon-arrowthinright:before { + content: '\e587'; +} + +.uni-icon-pulldown:before { + content: '\e588'; +} + +.uni-icon-scan:before { + content: "\e612"; +} + +/* 分界线 */ +.uni-divider { + height: 110rpx; + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.uni-divider__content { + font-size: 28rpx; + color: #999; + padding: 0 20rpx; + position: relative; + z-index: 101; + background: #F4F5F6; +} + +.uni-divider__line { + background-color: #CCCCCC; + height: 1px; + width: 100%; + position: absolute; + z-index: 100; + top: 50%; + left: 0; + transform: translateY(50%); +} + +/* view{ + font-size:28rpx; + line-height:1.8; +} */ +progress, +checkbox-group { + width: 100%; +} + +form { + width: 100%; +} + +.uni-flex { + display: flex; + flex-direction: row; +} + +.uni-flex-item { + flex: 1; +} + +.uni-row { + flex-direction: row; +} + +.uni-column { + flex-direction: column; +} + +.uni-link { + color: #576B95; + font-size: 26rpx; +} + +.uni-center { + text-align: center; +} + +.uni-inline-item { + display: flex; + flex-direction: row; + align-items: center; +} + +.uni-inline-item text { + margin-right: 20rpx; +} + +.uni-inline-item text:last-child { + margin-right: 0rpx; + margin-left: 20rpx; +} + +/* page */ +.common-page-head { + padding: 35rpx; + text-align: center; +} + +.common-page-head-title { + display: inline-block; + padding: 0 40rpx; + font-size: 30rpx; + height: 88rpx; + line-height: 88rpx; + color: #BEBEBE; + box-sizing: border-box; + border-bottom: 2rpx solid #D8D8D8; +} + +.uni-padding-wrap { + /* width:690rpx; */ + padding: 0 30rpx; +} + +.uni-word { + text-align: center; + padding: 200rpx 100rpx; +} + +.uni-title { + font-size: 30rpx; + font-weight: 500; + padding: 20rpx 0; + line-height: 1.5; +} + +.uni-text { + font-size: 28rpx; +} + +.uni-title text { + font-size: 24rpx; + color: #888; +} + +.uni-text-gray { + color: #ccc; +} + +.uni-text-small { + font-size: 24rpx; +} + +.uni-common-mb { + margin-bottom: 30rpx; +} + +.uni-common-pb { + padding-bottom: 30rpx; +} + +.uni-common-pl { + padding-left: 30rpx; +} + +.uni-common-mt { + margin-top: 30rpx; +} + +/* 背景色 */ +.uni-bg-red { + background: #F76260; + color: #FFF; +} + +.uni-bg-green { + background: #09BB07; + color: #FFF; +} + +.uni-bg-blue { + background: #007AFF; + color: #FFF; +} + +/* 标题 */ +.uni-h1 { + font-size: 80rpx; + font-weight: 700; +} + +.uni-h2 { + font-size: 60rpx; + font-weight: 700; +} + +.uni-h3 { + font-size: 48rpx; + font-weight: 700; +} + +.uni-h4 { + font-size: 36rpx; + font-weight: 700; +} + +.uni-h5 { + font-size: 28rpx; + color: #8f8f94; +} + +.uni-h6 { + font-size: 24rpx; + color: #8f8f94; +} + +.uni-bold { + font-weight: bold; +} + +/* 文本溢出隐藏 */ +.uni-ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +/* 竖向百分百按钮 */ +.uni-btn-v { + padding: 10rpx 0; +} + +.uni-btn-v button { + margin: 20rpx 0; +} + +/* 表单 */ +.uni-form-item { + display: flex; + width: 100%; + padding: 10rpx 0; +} + +.uni-form-item .title { + padding: 10rpx 25rpx; +} + +.uni-label { + width: 210rpx; + word-wrap: break-word; + word-break: break-all; + text-indent: 20rpx; +} + +.uni-input { + height: 50rpx; + padding: 15rpx 25rpx; + line-height: 50rpx; + font-size: 28rpx; + background: #FFF; + flex: 1; +} + +radio-group, +checkbox-group { + width: 100%; +} + +radio-group label, +checkbox-group label { + padding-right: 20rpx; +} + +.uni-form-item .with-fun { + display: flex; + flex-wrap: nowrap; + background: #FFFFFF; +} + +.uni-form-item .with-fun .uni-icon { + width: 40px; + height: 80rpx; + line-height: 80rpx; + flex-shrink: 0; +} + +/* loadmore */ +.uni-loadmore { + height: 80rpx; + line-height: 80rpx; + text-align: center; + padding-bottom: 30rpx; +} + +/*数字角标*/ +/* .uni-badge, +.uni-badge-default { + font-family: 'Helvetica Neue', Helvetica, sans-serif; + font-size: 12px; + line-height: 1; + display: inline-block; + padding: 3px 6px; + color: #333; + border-radius: 100px; + background-color: rgba(0, 0, 0, .15); +} */ +.uni-badge.uni-badge-inverted { + padding: 0 5px 0 0; + color: #929292; + background-color: transparent +} + +.uni-badge-primary { + color: #fff; + background-color: #007aff +} + +.uni-badge-blue.uni-badge-inverted, +.uni-badge-primary.uni-badge-inverted { + color: #007aff; + background-color: transparent +} + +.uni-badge-green, +.uni-badge-success { + color: #fff; + background-color: #4cd964; +} + +.uni-badge-green.uni-badge-inverted, +.uni-badge-success.uni-badge-inverted { + color: #4cd964; + background-color: transparent +} + +.uni-badge-warning, +.uni-badge-yellow { + color: #fff; + background-color: #f0ad4e +} + +.uni-badge-warning.uni-badge-inverted, +.uni-badge-yellow.uni-badge-inverted { + color: #f0ad4e; + background-color: transparent +} + +.uni-badge-danger, +.uni-badge-red { + color: #fff; + background-color: #dd524d +} + +.uni-badge-danger.uni-badge-inverted, +.uni-badge-red.uni-badge-inverted { + color: #dd524d; + background-color: transparent +} + +.uni-badge-purple, +.uni-badge-royal { + color: #fff; + background-color: #8a6de9 +} + +.uni-badge-purple.uni-badge-inverted, +.uni-badge-royal.uni-badge-inverted { + color: #8a6de9; + background-color: transparent +} + +/*折叠面板 */ +.uni-collapse-content { + height: 0; + width: 100%; + overflow: hidden; +} + +.uni-collapse-content.uni-active { + height: auto; +} + +/*卡片视图 */ +.uni-card { + background: #fff; + border-radius: 8rpx; + margin: 20rpx 0; + position: relative; + /* box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, .3); */ +} + +.uni-card-content { + font-size: 30rpx; +} + +.uni-card-content.image-view { + width: 100%; + margin: 0; +} + +.uni-card-content-inner { + position: relative; + padding: 30rpx; +} + +.uni-card-footer, +.uni-card-header { + position: relative; + display: flex; + min-height: 50rpx; + padding: 20rpx 30rpx; + justify-content: space-between; + align-items: center; +} + +.uni-card-header { + font-size: 36rpx; +} + +.uni-card-footer { + color: #6d6d72; +} + +.uni-card-footer:before, +.uni-card-header:after { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2rpx; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-card-header:after { + top: auto; + bottom: 0; +} + +.uni-card-media { + justify-content: flex-start; +} + +.uni-card-media-logo { + height: 84rpx; + width: 84rpx; + margin-right: 20rpx; +} + +.uni-card-media-body { + height: 84rpx; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; +} + +.uni-card-media-text-top { + line-height: 36rpx; + font-size: 34rpx; +} + +.uni-card-media-text-bottom { + line-height: 30rpx; + font-size: 28rpx; + color: #8f8f94; +} + +.uni-card-link { + color: #007AFF; +} + +/* 列表 */ +.uni-list { + background-color: #FFFFFF; + position: relative; + width: 100%; + display: flex; + flex-direction: column; +} + +.uni-list:after { + position: absolute; + z-index: 10; + right: 0; + bottom: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +/* .uni-list::before { + position: absolute; + z-index: 10; + right: 0; + top: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} */ +.uni-list-cell { + position: relative; + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; +} + +.uni-list-cell-hover { + background-color: #eee; +} + +.uni-list-cell-pd { + padding: 22rpx 30rpx; +} + +.uni-list-cell-left { + white-space: nowrap; + font-size: 28rpx; + padding: 0 30rpx; +} + +.uni-list-cell-db, +.uni-list-cell-right { + flex: 1; +} + +.uni-list-cell::after { + position: absolute; + z-index: 3; + right: 0; + bottom: 0; + left: 30rpx; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-list .uni-list-cell:last-child::after { + height: 0rpx; +} + +.uni-list-cell-last.uni-list-cell::after { + height: 0rpx; +} + +.uni-list-cell-divider { + position: relative; + display: flex; + color: #999; + background-color: #f7f7f7; + padding: 15rpx 20rpx; +} + +.uni-list-cell-divider::before { + position: absolute; + right: 0; + top: 0; + left: 0; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-list-cell-divider::after { + position: absolute; + right: 0; + bottom: 0; + left: 0rpx; + height: 1px; + content: ''; + -webkit-transform: scaleY(.5); + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-list-cell-navigate { + font-size: 30rpx; + padding: 22rpx 30rpx; + line-height: 48rpx; + position: relative; + display: flex; + box-sizing: border-box; + width: 100%; + flex: 1; + justify-content: space-between; + align-items: center; +} + +.uni-list-cell-navigate { + padding-right: 36rpx; +} + +.uni-navigate-badge { + padding-right: 50rpx; +} + +.uni-list-cell-navigate.uni-navigate-right:after { + font-family: uniicons; + content: '\e583'; + position: absolute; + right: 24rpx; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.uni-list-cell-navigate.uni-navigate-bottom:after { + font-family: uniicons; + content: '\e581'; + position: absolute; + right: 24rpx; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.uni-list-cell-navigate.uni-navigate-bottom.uni-active::after { + font-family: uniicons; + content: '\e580'; + position: absolute; + right: 24rpx; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.uni-collapse.uni-list-cell { + flex-direction: column; +} + +.uni-list-cell-navigate.uni-active { + background: #eee; +} + +.uni-list.uni-collapse { + box-sizing: border-box; + height: 0; + overflow: hidden; +} + +.uni-collapse .uni-list-cell { + padding-left: 20rpx; +} + +.uni-collapse .uni-list-cell::after { + left: 52rpx; +} + +.uni-list.uni-active { + height: auto; +} + +/* 三行列表 */ +.uni-triplex-row { + display: flex; + flex: 1; + width: 100%; + box-sizing: border-box; + flex-direction: row; + padding: 22rpx 30rpx; +} + +.uni-triplex-right, +.uni-triplex-left { + display: flex; + flex-direction: column; +} + +.uni-triplex-left { + width: 84%; +} + +.uni-triplex-left .uni-title { + padding: 8rpx 0; +} + +.uni-triplex-left .uni-text, +.uni-triplex-left .uni-text-small { + color: #999999; +} + +.uni-triplex-right { + width: 16%; + text-align: right; +} + +/* 图文列表 */ +.uni-media-list { + padding: 22rpx 30rpx; + box-sizing: border-box; + display: flex; + width: 100%; + flex-direction: row; +} + +.uni-navigate-right.uni-media-list { + padding-right: 74rpx; +} + +.uni-pull-right { + flex-direction: row-reverse; +} + +.uni-pull-right>.uni-media-list-logo { + margin-right: 0rpx; + margin-left: 20rpx; +} + +.uni-media-list-logo { + height: 84rpx; + width: 84rpx; + margin-right: 20rpx; +} + +.uni-media-list-logo image { + height: 100%; + width: 100%; +} + +.uni-media-list-body { + height: 84rpx; + display: flex; + flex: 1; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + overflow: hidden; +} + +.uni-media-list-text-top { + width: 100%; + line-height: 36rpx; + font-size: 30rpx; +} + +.uni-media-list-text-bottom { + width: 100%; + line-height: 30rpx; + font-size: 26rpx; + color: #8f8f94; +} + +/* 九宫格 */ +.uni-grid-9 { + background: #f2f2f2; + width: 750rpx; + display: flex; + flex-direction: row; + flex-wrap: wrap; + border-top: 2rpx solid #eee; +} + +.uni-grid-9-item { + width: 250rpx; + height: 200rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + border-bottom: 2rpx solid; + border-right: 2rpx solid; + border-color: #eee; + box-sizing: border-box; +} + +.no-border-right { + border-right: none; +} + +.uni-grid-9-image { + width: 100rpx; + height: 100rpx; +} + +.uni-grid-9-text { + width: 250rpx; + line-height: 4rpx; + height: 40rpx; + text-align: center; + font-size: 30rpx; +} + +.uni-grid-9-item-hover { + background: rgba(0, 0, 0, 0.1); +} + +/* 上传 */ +.uni-uploader { + flex: 1; + flex-direction: column; +} + +.uni-uploader-head { + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.uni-uploader-info { + color: #B2B2B2; +} + +.uni-uploader-body { + margin-top: 16rpx; +} + +.uni-uploader__files { + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.uni-uploader__file { + margin: 10rpx; + width: 210rpx; + height: 210rpx; +} + +.uni-uploader__img { + display: block; + width: 210rpx; + height: 210rpx; +} + +.uni-uploader__input-box { + position: relative; + margin: 10rpx; + width: 208rpx; + height: 208rpx; + border: 2rpx solid #D9D9D9; +} + +.uni-uploader__input-box:before, +.uni-uploader__input-box:after { + content: " "; + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + background-color: #D9D9D9; +} + +.uni-uploader__input-box:before { + width: 4rpx; + height: 79rpx; +} + +.uni-uploader__input-box:after { + width: 79rpx; + height: 4rpx; +} + +.uni-uploader__input-box:active { + border-color: #999999; +} + +.uni-uploader__input-box:active:before, +.uni-uploader__input-box:active:after { + background-color: #999999; +} + +.uni-uploader__input { + position: absolute; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; +} + +/*问题反馈*/ +.feedback-title { + display: flex; + flex-direction: row; + justify-content: space-between; + align-items: center; + padding: 20rpx; + color: #8f8f94; + font-size: 28rpx; +} + +.feedback-star-view.feedback-title { + justify-content: flex-start; + margin: 0; +} + +.feedback-quick { + position: relative; + padding-right: 40rpx; +} + +.feedback-quick:after { + font-family: uniicons; + font-size: 40rpx; + content: '\e581'; + position: absolute; + right: 0; + top: 50%; + color: #bbb; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); +} + +.feedback-body { + background: #fff; +} + +.feedback-textare { + height: 200rpx; + font-size: 34rpx; + line-height: 50rpx; + width: 100%; + box-sizing: border-box; + padding: 20rpx 30rpx 0; +} + +.feedback-input { + font-size: 34rpx; + height: 50rpx; + min-height: 50rpx; + padding: 15rpx 20rpx; + line-height: 50rpx; +} + +.feedback-uploader { + padding: 22rpx 20rpx; +} + +.feedback-star { + font-family: uniicons; + font-size: 40rpx; + margin-left: 6rpx; +} + +.feedback-star-view { + margin-left: 20rpx; +} + +.feedback-star:after { + content: '\e408'; +} + +.feedback-star.active { + color: #FFB400; +} + +.feedback-star.active:after { + content: '\e438'; +} + +.feedback-submit { + background: #007AFF; + color: #FFFFFF; + margin: 20rpx; +} + +/* input group */ +.uni-input-group { + position: relative; + padding: 0; + border: 0; + background-color: #fff; +} + +.uni-input-group:before { + position: absolute; + top: 0; + right: 0; + left: 0; + height: 2rpx; + content: ''; + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-input-group:after { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 2rpx; + content: ''; + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-input-row { + position: relative; + display: flex; + flex-direction: row; + font-size: 28rpx; + padding: 22rpx 30rpx; + justify-content: space-between; +} + +.uni-input-group .uni-input-row:after { + position: absolute; + right: 0; + bottom: 0; + left: 30rpx; + height: 2rpx; + content: ''; + transform: scaleY(.5); + background-color: #c8c7cc; +} + +.uni-input-row label { + line-height: 70rpx; +} + +/* textarea */ +.uni-textarea { + width: 100%; + background: #FFF; +} + +.uni-textarea textarea { + width: 96%; + padding: 18rpx 2%; + line-height: 1.6; + font-size: 28rpx; + height: 150rpx; +} + +/* tab bar */ +.uni-tab-bar { + display: flex; + flex: 1; + flex-direction: column; + overflow: hidden; + height: 100%; +} + +.uni-tab-bar .list { + width: 750rpx; + height: 100%; +} + +.uni-swiper-tab { + width: 100%; + white-space: nowrap; + line-height: 100rpx; + height: 100rpx; + border-bottom: 1px solid #c8c7cc; +} + +.swiper-tab-list { + font-size: 30rpx; + width: 150rpx; + display: inline-block; + text-align: center; + color: #555; +} + +.uni-tab-bar .active { + color: #007AFF; +} + +.uni-tab-bar .swiper-box { + flex: 1; + width: 100%; + height: calc(100% - 100rpx); +} + +.uni-tab-bar-loading { + padding: 20rpx 0; +} + +/* comment */ +.uni-comment { + padding: 5rpx 0; + display: flex; + flex-grow: 1; + flex-direction: column; +} + +.uni-comment-list { + flex-wrap: nowrap; + padding: 10rpx 0; + margin: 10rpx 0; + width: 100%; + display: flex; +} + +.uni-comment-face { + width: 70rpx; + height: 70rpx; + border-radius: 100%; + margin-right: 20rpx; + flex-shrink: 0; + overflow: hidden; +} + +.uni-comment-face image { + width: 100%; + border-radius: 100%; +} + +.uni-comment-body { + width: 100%; +} + +.uni-comment-top { + line-height: 1.5em; + justify-content: space-between; +} + +.uni-comment-top text { + color: #0A98D5; + font-size: 24rpx; +} + +.uni-comment-date { + line-height: 38rpx; + flex-direction: row; + justify-content: space-between; + display: flex !important; + flex-grow: 1; +} + +.uni-comment-date view { + color: #666666; + font-size: 24rpx; + line-height: 38rpx; +} + +.uni-comment-content { + line-height: 1.6em; + font-size: 28rpx; + padding: 8rpx 0; +} + +.uni-comment-replay-btn { + background: #FFF; + font-size: 24rpx; + line-height: 28rpx; + padding: 5rpx 20rpx; + border-radius: 30rpx; + color: #333 !important; + margin: 0 10rpx; +} + +/* swiper msg */ +.uni-swiper-msg { + width: 100%; + padding: 12rpx 0; + flex-wrap: nowrap; + display: flex; +} + +.uni-swiper-msg-icon { + width: 50rpx; + margin-right: 20rpx; +} + +.uni-swiper-msg-icon image { + width: 100%; + flex-shrink: 0; +} + +.uni-swiper-msg swiper { + width: 100%; + height: 50rpx; +} + +.uni-swiper-msg swiper-item { + line-height: 50rpx; +} + +/* product */ +.uni-product-list { + display: flex; + width: 100%; + flex-wrap: wrap; + flex-direction: row; +} + +.uni-product { + padding: 20rpx; + display: flex; + flex-direction: column; +} + +.image-view { + height: 330rpx; + width: 330rpx; + margin: 12rpx 0; +} + +.uni-product-image { + height: 330rpx; + width: 330rpx; +} + +.uni-product-title { + width: 300rpx; + word-break: break-all; + display: -webkit-box; + overflow: hidden; + line-height: 1.5; + text-overflow: ellipsis; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.uni-product-price { + margin-top: 10rpx; + font-size: 28rpx; + line-height: 1.5; + position: relative; +} + +.uni-product-price-original { + color: #e80080; +} + +.uni-product-price-favour { + color: #888888; + text-decoration: line-through; + margin-left: 10rpx; +} + +.uni-product-tip { + position: absolute; + right: 10rpx; + background-color: #ff3333; + color: #ffffff; + padding: 0 10rpx; + border-radius: 5rpx; +} + +/* timeline */ +.uni-timeline { + margin: 35rpx 0; + display: flex; + flex-direction: column; + position: relative; +} + + +.uni-timeline-item { + display: flex; + flex-direction: row; + position: relative; + padding-bottom: 20rpx; + box-sizing: border-box; + overflow: hidden; + +} + +.uni-timeline-item .uni-timeline-item-keynode { + width: 160rpx; + flex-shrink: 0; + box-sizing: border-box; + padding-right: 20rpx; + text-align: right; + line-height: 65rpx; +} + +.uni-timeline-item .uni-timeline-item-divider { + flex-shrink: 0; + position: relative; + width: 30rpx; + height: 30rpx; + top: 15rpx; + border-radius: 50%; + background-color: #bbb; +} + + + +.uni-timeline-item-divider::before, +.uni-timeline-item-divider::after { + position: absolute; + left: 15rpx; + width: 1rpx; + height: 100vh; + content: ''; + background: inherit; +} + +.uni-timeline-item-divider::before { + bottom: 100%; +} + +.uni-timeline-item-divider::after { + top: 100%; +} + + +.uni-timeline-last-item .uni-timeline-item-divider:after { + display: none; +} + +.uni-timeline-first-item .uni-timeline-item-divider:before { + display: none; +} + +.uni-timeline-item .uni-timeline-item-content { + padding-left: 20rpx; +} + +.uni-timeline-last-item .bottom-border::after { + display: none; +} + +.uni-timeline-item-content .datetime { + color: #CCCCCC; +} + +/* 自定义节点颜色 */ +.uni-timeline-last-item .uni-timeline-item-divider { + background-color: #1AAD19; +} + + +/* uni-icon */ + +.uni-icon { + font-family: uniicons; + font-size: 24px; + font-weight: normal; + font-style: normal; + line-height: 1; + display: inline-block; + text-decoration: none; + -webkit-font-smoothing: antialiased; +} + +.uni-icon.uni-active { + color: #007aff; +} + +.uni-icon-contact:before { + content: '\e100'; +} + +.uni-icon-person:before { + content: '\e101'; +} + +.uni-icon-personadd:before { + content: '\e102'; +} + +.uni-icon-contact-filled:before { + content: '\e130'; +} + +.uni-icon-person-filled:before { + content: '\e131'; +} + +.uni-icon-personadd-filled:before { + content: '\e132'; +} + +.uni-icon-phone:before { + content: '\e200'; +} + +.uni-icon-email:before { + content: '\e201'; +} + +.uni-icon-chatbubble:before { + content: '\e202'; +} + +.uni-icon-chatboxes:before { + content: '\e203'; +} + +.uni-icon-phone-filled:before { + content: '\e230'; +} + +.uni-icon-email-filled:before { + content: '\e231'; +} + +.uni-icon-chatbubble-filled:before { + content: '\e232'; +} + +.uni-icon-chatboxes-filled:before { + content: '\e233'; +} + +.uni-icon-weibo:before { + content: '\e260'; +} + +.uni-icon-weixin:before { + content: '\e261'; +} + +.uni-icon-pengyouquan:before { + content: '\e262'; +} + +.uni-icon-chat:before { + content: '\e263'; +} + +.uni-icon-qq:before { + content: '\e264'; +} + +.uni-icon-videocam:before { + content: '\e300'; +} + +.uni-icon-camera:before { + content: '\e301'; +} + +.uni-icon-mic:before { + content: '\e302'; +} + +.uni-icon-location:before { + content: '\e303'; +} + +.uni-icon-mic-filled:before, +.uni-icon-speech:before { + content: '\e332'; +} + +.uni-icon-location-filled:before { + content: '\e333'; +} + +.uni-icon-micoff:before { + content: '\e360'; +} + +.uni-icon-image:before { + content: '\e363'; +} + +.uni-icon-map:before { + content: '\e364'; +} + +.uni-icon-compose:before { + content: '\e400'; +} + +.uni-icon-trash:before { + content: '\e401'; +} + +.uni-icon-upload:before { + content: '\e402'; +} + +.uni-icon-download:before { + content: '\e403'; +} + +.uni-icon-close:before { + content: '\e404'; +} + +.uni-icon-redo:before { + content: '\e405'; +} + +.uni-icon-undo:before { + content: '\e406'; +} + +.uni-icon-refresh:before { + content: '\e407'; +} + +.uni-icon-star:before { + content: '\e408'; +} + +.uni-icon-plus:before { + content: '\e409'; +} + +.uni-icon-minus:before { + content: '\e410'; +} + +.uni-icon-circle:before, +.uni-icon-checkbox:before { + content: '\e411'; +} + +.uni-icon-close-filled:before, +.uni-icon-clear:before { + content: '\e434'; +} + +.uni-icon-refresh-filled:before { + content: '\e437'; +} + +.uni-icon-star-filled:before { + content: '\e438'; +} + +.uni-icon-plus-filled:before { + content: '\e439'; +} + +.uni-icon-minus-filled:before { + content: '\e440'; +} + +.uni-icon-circle-filled:before { + content: '\e441'; +} + +.uni-icon-checkbox-filled:before { + content: '\e442'; +} + +.uni-icon-closeempty:before { + content: '\e460'; +} + +.uni-icon-refreshempty:before { + content: '\e461'; +} + +.uni-icon-reload:before { + content: '\e462'; +} + +.uni-icon-starhalf:before { + content: '\e463'; +} + +.uni-icon-spinner:before { + content: '\e464'; +} + +.uni-icon-spinner-cycle:before { + content: '\e465'; +} + +.uni-icon-search:before { + content: '\e466'; +} + +.uni-icon-plusempty:before { + content: '\e468'; +} + +.uni-icon-forward:before { + content: '\e470'; +} + +.uni-icon-back:before, +.uni-icon-left-nav:before { + content: '\e471'; +} + +.uni-icon-checkmarkempty:before { + content: '\e472'; +} + +.uni-icon-home:before { + content: '\e500'; +} + +.uni-icon-navigate:before { + content: '\e501'; +} + +.uni-icon-gear:before { + content: '\e502'; +} + +.uni-icon-paperplane:before { + content: '\e503'; +} + +.uni-icon-info:before { + content: '\e504'; +} + +.uni-icon-help:before { + content: '\e505'; +} + +.uni-icon-locked:before { + content: '\e506'; +} + +.uni-icon-more:before { + content: '\e507'; +} + +.uni-icon-flag:before { + content: '\e508'; +} + +.uni-icon-home-filled:before { + content: '\e530'; +} + +.uni-icon-gear-filled:before { + content: '\e532'; +} + +.uni-icon-info-filled:before { + content: '\e534'; +} + +.uni-icon-help-filled:before { + content: '\e535'; +} + +.uni-icon-more-filled:before { + content: '\e537'; +} + +.uni-icon-settings:before { + content: '\e560'; +} + +.uni-icon-list:before { + content: '\e562'; +} + +.uni-icon-bars:before { + content: '\e563'; +} + +.uni-icon-loop:before { + content: '\e565'; +} + +.uni-icon-paperclip:before { + content: '\e567'; +} + +.uni-icon-eye:before { + content: '\e568'; +} + +.uni-icon-arrowup:before { + content: '\e580'; +} + +.uni-icon-arrowdown:before { + content: '\e581'; +} + +.uni-icon-arrowleft:before { + content: '\e582'; +} + +.uni-icon-arrowright:before { + content: '\e583'; +} + +.uni-icon-arrowthinup:before { + content: '\e584'; +} + +.uni-icon-arrowthindown:before { + content: '\e585'; +} + +.uni-icon-arrowthinleft:before { + content: '\e586'; +} + +.uni-icon-arrowthinright:before { + content: '\e587'; +} + +.uni-icon-pulldown:before { + content: '\e588'; +} + +.uni-icon-scan:before { + content: "\e612"; +} + +/* 分界线 */ +.uni-divider { + height: 110rpx; + display: flex; + align-items: center; + justify-content: center; + position: relative; +} + +.uni-divider__content { + font-size: 28rpx; + color: #999; + padding: 0 20rpx; + position: relative; + z-index: 101; + background: #F4F5F6; +} + +.uni-divider__line { + background-color: #CCCCCC; + height: 1px; + width: 100%; + position: absolute; + z-index: 100; + top: 50%; + left: 0; + transform: translateY(50%); +} + +.left-win-active text { + color: #007AFF !important; +} diff --git a/common/utils/auth.js b/common/utils/auth.js new file mode 100644 index 0000000..57eeb28 --- /dev/null +++ b/common/utils/auth.js @@ -0,0 +1,21 @@ +const AccessTokenKey = 'ACCESS_TOKEN' +const RefreshTokenKey = 'REFRESH_TOKEN' + +// ========== Token 相关 ========== +export function getAccessToken() { + return uni.getStorageSync(AccessTokenKey) +} + +export function getRefreshToken() { + return uni.getStorageSync(RefreshTokenKey) +} + +export function setToken(token) { + uni.setStorageSync(AccessTokenKey, token.accessToken) + uni.setStorageSync(RefreshTokenKey, token.refreshToken) +} + +export function removeToken() { + uni.removeStorageSync(AccessTokenKey) + uni.removeStorageSync(RefreshTokenKey) +} diff --git a/common/utils/common.js b/common/utils/common.js new file mode 100644 index 0000000..00d4137 --- /dev/null +++ b/common/utils/common.js @@ -0,0 +1,54 @@ +/** +* 显示消息提示框 +* @param content 提示的标题 +*/ +export function toast(content) { + uni.showToast({ + icon: 'none', + title: content + }) +} + +/** +* 显示模态弹窗 +* @param content 提示的标题 +*/ +export function showConfirm(content) { + return new Promise((resolve, reject) => { + uni.showModal({ + title: '提示', + content: content, + cancelText: '取消', + confirmText: '确定', + success: function(res) { + resolve(res) + } + }) + }) +} + +/** +* 参数处理 +* @param params 参数 +*/ +export function tansParams(params) { + let result = '' + for (const propName of Object.keys(params)) { + const value = params[propName] + var part = encodeURIComponent(propName) + "=" + if (value !== null && value !== "" && typeof (value) !== "undefined") { + if (typeof value === 'object') { + for (const key of Object.keys(value)) { + if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { + let params = propName + '[' + key + ']' + var subPart = encodeURIComponent(params) + "=" + result += subPart + encodeURIComponent(value[key]) + "&" + } + } + } else { + result += part + encodeURIComponent(value) + "&" + } + } + } + return result +} \ No newline at end of file diff --git a/common/utils/constant.js b/common/utils/constant.js new file mode 100644 index 0000000..89e54ca --- /dev/null +++ b/common/utils/constant.js @@ -0,0 +1,9 @@ +const constant = { + avatar: 'vuex_avatar', + name: 'vuex_name', + roles: 'vuex_roles', + permissions: 'vuex_permissions', + tenantId:'vuex_tenantId' + } + + export default constant diff --git a/common/utils/errorCode.js b/common/utils/errorCode.js new file mode 100644 index 0000000..d2111ee --- /dev/null +++ b/common/utils/errorCode.js @@ -0,0 +1,6 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + 'default': '系统未知错误,请反馈给管理员' +} diff --git a/common/utils/permission.js b/common/utils/permission.js new file mode 100644 index 0000000..17969f2 --- /dev/null +++ b/common/utils/permission.js @@ -0,0 +1,51 @@ +import store from '@/store' + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(value) { + if (value && value instanceof Array && value.length > 0) { + const permissions = store.getters && store.getters.permissions + const permissionDatas = value + const all_permission = "*:*:*" + + const hasPermission = permissions.some(permission => { + return all_permission === permission || permissionDatas.includes(permission) + }) + + if (!hasPermission) { + return false + } + return true + } else { + console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) + return false + } +} + +/** + * 角色权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value) { + if (value && value instanceof Array && value.length > 0) { + const roles = store.getters && store.getters.roles + const permissionRoles = value + const super_admin = "admin" + + const hasRole = roles.some(role => { + return super_admin === role || permissionRoles.includes(role) + }) + + if (!hasRole) { + return false + } + return true + } else { + console.error(`need roles! Like checkRole="['admin','editor']"`) + return false + } +} \ No newline at end of file diff --git a/common/utils/ruoyi.js b/common/utils/ruoyi.js new file mode 100644 index 0000000..fb60217 --- /dev/null +++ b/common/utils/ruoyi.js @@ -0,0 +1,47 @@ +/** + * 通用js方法封装处理 + * Copyright (c) 2019 ruoyi + */ + +// 日期格式化 +export function parseTime(time, pattern) { + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm),''); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { + return ['日', '一', '二', '三', '四', '五', '六'][value] + } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str +} diff --git a/common/utils/storage.js b/common/utils/storage.js new file mode 100644 index 0000000..515d413 --- /dev/null +++ b/common/utils/storage.js @@ -0,0 +1,37 @@ +// 获取本地存储对应key +const getStorage = (key)=>{ + return uni.getStorageSync( key ); +} + +// 设置本地存储对应key +const setStorage = (key,value)=>{ + return uni.setStorageSync( key,value ); +} + +// 清除全部本地存储 +const clearStorage = ()=>{ + uni.clearStorageSync(); +} + +// 清除指定key本地存储 +const removeStorage = ( key )=>{ + uni.removeStorageSync( key ); +} + +const constant = { + id:"id", + token:"token", + avatar: 'avatar', + name: 'name', + roles: 'roles', + permissions: 'permissions' + } + + +export default { + getStorage, + setStorage, + clearStorage, + removeStorage, + constant +} \ No newline at end of file diff --git a/components/amap-wx/js/util.js b/components/amap-wx/js/util.js new file mode 100644 index 0000000..65779df --- /dev/null +++ b/components/amap-wx/js/util.js @@ -0,0 +1,181 @@ +import amap from '@/components/amap-wx/lib/amap-wx.js'; +// 地铁颜色图 +const line = { + '1号线': '#C43B33', + '2号线': '#016299', + '4号线/大兴线': '#008E9C', + '5号线': '#A42380', + '6号线': '#D09900', + '7号线': '#F2C172', + '8号线': '#009D6A', + '9号线': '#8FC41E', + '10号线': '#009DBE', + '13号线': '#F9E701', + '14号线东段': '#D4A7A2', + '14号线西段': '#D4A7A2', + '15号线': '#5D2D69', + '八通线': '#C33A32', + '昌平线': '#DE82B1', + '亦庄线': '#E40177', + '房山线': '#E66021', + '机场线': '#A29BBC', +} + +// 150500:地铁站 ,150700:公交站 , 190700:地名地址 +const typecode = [{ + id: '150500', + icon: 'icon-ditie' +}, { + id: '150700', + icon: 'icon-gongjiao' +}, { + id: '190700', + icon: 'icon-gonglu' +}]; + +const util = { + key:'b526b09b86cd2996e7732be8ab8c4430', + /** + * 初始化高德地图api + */ + mapInit() { + return new amap.AMapWX({ + key: this.key + }); + }, + // 服务状态吗 + typecode, + /** + * 获取地图颜色 + */ + lineColor(name) { + if (line[name]) { + return line[name]; + } else { + return '#ccc'; + } + }, + /** + * 关键字颜色变化 + */ + serachNmme(val, name) { + let namestr = new RegExp(val); + let nameresult = + `
+ ${name.replace(namestr, "" + val + '')} +
` + .trim(); + + return nameresult; + }, + /** + * 地址转地铁线路 + */ + addressToLine(address, type) { + let addr = address.split(';'); + let dt = ''; + addr.forEach(elm => { + let color = '#cccccc'; + if (type === typecode[0].id) { + color = this.lineColor(elm) + } else if (type === typecode[1].id) { + color = '#4075cb' + } + let style = 'margin:5px 0;margin-right:5px;padding:0 5px;background:' + color + + ';font-size:12px;color:#fff;border-radius:3px;'; + dt += `
${elm}
`; + + }); + return `
${dt}
`; + }, + /** + * 数据处理 + */ + dataHandle(item, val) { + // 改变字体颜色 + if (val) { + item.nameNodes = util.serachNmme(val, item.name); + } else { + item.nameNodes = `
${item.name}
`; + + } + // 地址解析 地铁 + if ( + item.typecode === util.typecode[0].id || + item.typecode === util.typecode[1].id + ) { + item.addressNodes = util.addressToLine(item.address, item.typecode); + if (item.typecode === util.typecode[0].id) { + item.icon = util.typecode[0].icon; + } else if (item.typecode === util.typecode[1].id) { + item.icon = util.typecode[1].icon; + } + } else { + item.addressNodes = `${item.district}${ + item.address.length > 0 ? '·' + item.address : '' + }`.trim(); + item.icon = 'icon-weizhi'; + } + + if (item.location && item.location.length === 0) { + item.icon = 'icon-sousuo'; + } + + return item; + }, + /** + * 存储历史数据 + * val [string | object]需要存储的内容 + */ + setHistory(val) { + let searchHistory = uni.getStorageSync('search:history'); + if (!searchHistory) searchHistory = []; + let serachData = {}; + if (typeof(val) === 'string') { + serachData = { + adcode: [], + address: [], + city: [], + district: [], + id: [], + location: [], + name: val, + typecode: [] + }; + } else { + serachData = val + } + + // 判断数组是否存在,如果存在,那么将放到最前面 + for (var i = 0; i < searchHistory.length; i++) { + if (searchHistory[i].name === serachData.name) { + searchHistory.splice(i, 1); + break; + } + } + + searchHistory.unshift(util.dataHandle(serachData)); + uni.setStorage({ + key: 'search:history', + data: searchHistory, + success: function() { + // console.log('success'); + } + }); + }, + getHistory() { + + }, + removeHistory() { + uni.removeStorage({ + key: 'search:history', + success: function(res) { + console.log('success'); + } + }); + return [] + } + +} + +export default util; diff --git a/components/amap-wx/lib/amap-wx.js b/components/amap-wx/lib/amap-wx.js new file mode 100644 index 0000000..e1ef2b2 --- /dev/null +++ b/components/amap-wx/lib/amap-wx.js @@ -0,0 +1 @@ +function AMapWX(a){this.key=a.key,this.requestConfig={key:a.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"}}AMapWX.prototype.getWxLocation=function(a,b){wx.getLocation({type:"gcj02",success:function(a){var c=a.longitude+","+a.latitude;wx.setStorage({key:"userLocation",data:c}),b(c)},fail:function(c){wx.getStorage({key:"userLocation",success:function(a){a.data&&b(a.data)}}),a.fail({errCode:"0",errMsg:c.errMsg||""})}})},AMapWX.prototype.getRegeo=function(a){function c(c){var d=b.requestConfig;wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:c,extensions:"all",s:d.s,platform:d.platform,appname:b.key,sdkversion:d.sdkversion,logversion:d.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var d,e,f,g,h,i,j,k,l;b.data.status&&"1"==b.data.status?(d=b.data.regeocode,e=d.addressComponent,f=[],g="",d&&d.roads[0]&&d.roads[0].name&&(g=d.roads[0].name+"附近"),h=c.split(",")[0],i=c.split(",")[1],d.pois&&d.pois[0]&&(g=d.pois[0].name+"附近",j=d.pois[0].location,j&&(h=parseFloat(j.split(",")[0]),i=parseFloat(j.split(",")[1]))),e.provice&&f.push(e.provice),e.city&&f.push(e.city),e.district&&f.push(e.district),e.streetNumber&&e.streetNumber.street&&e.streetNumber.number?(f.push(e.streetNumber.street),f.push(e.streetNumber.number)):(k="",d&&d.roads[0]&&d.roads[0].name&&(k=d.roads[0].name),f.push(k)),f=f.join(""),l=[{iconPath:a.iconPath,width:a.iconWidth,height:a.iconHeight,name:f,desc:g,longitude:h,latitude:i,id:0,regeocodeData:d}],a.success(l)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this;a.location?c(a.location):b.getWxLocation(a,function(a){c(a)})},AMapWX.prototype.getWeather=function(a){function d(d){var e="base";a.type&&"forecast"==a.type&&(e="all"),wx.request({url:"https://restapi.amap.com/v3/weather/weatherInfo",data:{key:b.key,city:d,extensions:e,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){function c(a){var b={city:{text:"城市",data:a.city},weather:{text:"天气",data:a.weather},temperature:{text:"温度",data:a.temperature},winddirection:{text:"风向",data:a.winddirection+"风"},windpower:{text:"风力",data:a.windpower+"级"},humidity:{text:"湿度",data:a.humidity+"%"}};return b}var d,e;b.data.status&&"1"==b.data.status?b.data.lives?(d=b.data.lives,d&&d.length>0&&(d=d[0],e=c(d),e["liveData"]=d,a.success(e))):b.data.forecasts&&b.data.forecasts[0]&&a.success({forecast:b.data.forecasts[0]}):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}function e(e){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:e,extensions:"all",s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var c,e;b.data.status&&"1"==b.data.status?(e=b.data.regeocode,e.addressComponent?c=e.addressComponent.adcode:e.aois&&e.aois.length>0&&(c=e.aois[0].adcode),d(c)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this,c=b.requestConfig;a.city?d(a.city):b.getWxLocation(a,function(a){e(a)})},AMapWX.prototype.getPoiAround=function(a){function d(d){var e={key:b.key,location:d,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.querytypes&&(e["types"]=a.querytypes),a.querykeywords&&(e["keywords"]=a.querykeywords),wx.request({url:"https://restapi.amap.com/v3/place/around",data:e,method:"GET",header:{"content-type":"application/json"},success:function(b){var c,d,e,f;if(b.data.status&&"1"==b.data.status){if(b=b.data,b&&b.pois){for(c=[],d=0;d + + + + + diff --git a/components/custom-refresher/custom-refresher.vue b/components/custom-refresher/custom-refresher.vue new file mode 100644 index 0000000..1a7f6f1 --- /dev/null +++ b/components/custom-refresher/custom-refresher.vue @@ -0,0 +1,58 @@ + + + + + + diff --git a/components/marked/index.js b/components/marked/index.js new file mode 100644 index 0000000..33e56c3 --- /dev/null +++ b/components/marked/index.js @@ -0,0 +1 @@ +export default './lib/marked' diff --git a/components/marked/lib/marked.js b/components/marked/lib/marked.js new file mode 100644 index 0000000..6a71e92 --- /dev/null +++ b/components/marked/lib/marked.js @@ -0,0 +1,1573 @@ +/** + * marked - a markdown parser + * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) + * https://github.com/markedjs/marked + */ + +;(function(root) { +'use strict'; + +/** + * Block-Level Grammar + */ + +var block = { + newline: /^\n+/, + code: /^( {4}[^\n]+\n*)+/, + fences: noop, + hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/, + heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/, + nptable: noop, + blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/, + list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, + html: '^ {0,3}(?:' // optional indentation + + '<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)' // (1) + + '|comment[^\\n]*(\\n+|$)' // (2) + + '|<\\?[\\s\\S]*?\\?>\\n*' // (3) + + '|\\n*' // (4) + + '|\\n*' // (5) + + '|)[\\s\\S]*?(?:\\n{2,}|$)' // (6) + + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag + + '|(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag + + ')', + def: /^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/, + table: noop, + lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/, + paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/, + text: /^[^\n]+/ +}; + +block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/; +block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/; +block.def = edit(block.def) + .replace('label', block._label) + .replace('title', block._title) + .getRegex(); + +block.bullet = /(?:[*+-]|\d+\.)/; +block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/; +block.item = edit(block.item, 'gm') + .replace(/bull/g, block.bullet) + .getRegex(); + +block.list = edit(block.list) + .replace(/bull/g, block.bullet) + .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))') + .replace('def', '\\n+(?=' + block.def.source + ')') + .getRegex(); + +block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + + '|track|ul'; +block._comment = //; +block.html = edit(block.html, 'i') + .replace('comment', block._comment) + .replace('tag', block._tag) + .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/) + .getRegex(); + +block.paragraph = edit(block.paragraph) + .replace('hr', block.hr) + .replace('heading', block.heading) + .replace('lheading', block.lheading) + .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks + .getRegex(); + +block.blockquote = edit(block.blockquote) + .replace('paragraph', block.paragraph) + .getRegex(); + +/** + * Normal Block Grammar + */ + +block.normal = merge({}, block); + +/** + * GFM Block Grammar + */ + +block.gfm = merge({}, block.normal, { + fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/, + paragraph: /^/, + heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ +}); + +block.gfm.paragraph = edit(block.paragraph) + .replace('(?!', '(?!' + + block.gfm.fences.source.replace('\\1', '\\2') + '|' + + block.list.source.replace('\\1', '\\3') + '|') + .getRegex(); + +/** + * GFM + Tables Block Grammar + */ + +block.tables = merge({}, block.gfm, { + nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/, + table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/ +}); + +/** + * Pedantic grammar + */ + +block.pedantic = merge({}, block.normal, { + html: edit( + '^ *(?:comment *(?:\\n|\\s*$)' + + '|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)' // closed tag + + '|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))') + .replace('comment', block._comment) + .replace(/tag/g, '(?!(?:' + + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b') + .getRegex(), + def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/ +}); + +/** + * Block Lexer + */ + +function Lexer(options) { + this.tokens = []; + this.tokens.links = Object.create(null); + this.options = options || marked.defaults; + this.rules = block.normal; + + if (this.options.pedantic) { + this.rules = block.pedantic; + } else if (this.options.gfm) { + if (this.options.tables) { + this.rules = block.tables; + } else { + this.rules = block.gfm; + } + } +} + +/** + * Expose Block Rules + */ + +Lexer.rules = block; + +/** + * Static Lex Method + */ + +Lexer.lex = function(src, options) { + var lexer = new Lexer(options); + return lexer.lex(src); +}; + +/** + * Preprocessing + */ + +Lexer.prototype.lex = function(src) { + src = src + .replace(/\r\n|\r/g, '\n') + .replace(/\t/g, ' ') + .replace(/\u00a0/g, ' ') + .replace(/\u2424/g, '\n'); + + return this.token(src, true); +}; + +/** + * Lexing + */ + +Lexer.prototype.token = function(src, top) { + src = src.replace(/^ +$/gm, ''); + var next, + loose, + cap, + bull, + b, + item, + listStart, + listItems, + t, + space, + i, + tag, + l, + isordered, + istask, + ischecked; + + while (src) { + // newline + if (cap = this.rules.newline.exec(src)) { + src = src.substring(cap[0].length); + if (cap[0].length > 1) { + this.tokens.push({ + type: 'space' + }); + } + } + + // code + if (cap = this.rules.code.exec(src)) { + src = src.substring(cap[0].length); + cap = cap[0].replace(/^ {4}/gm, ''); + this.tokens.push({ + type: 'code', + text: !this.options.pedantic + ? rtrim(cap, '\n') + : cap + }); + continue; + } + + // fences (gfm) + if (cap = this.rules.fences.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'code', + lang: cap[2], + text: cap[3] || '' + }); + continue; + } + + // heading + if (cap = this.rules.heading.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'heading', + depth: cap[1].length, + text: cap[2] + }); + continue; + } + + // table no leading pipe (gfm) + if (top && (cap = this.rules.nptable.exec(src))) { + item = { + type: 'table', + header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')), + align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : [] + }; + + if (item.header.length === item.align.length) { + src = src.substring(cap[0].length); + + for (i = 0; i < item.align.length; i++) { + if (/^ *-+: *$/.test(item.align[i])) { + item.align[i] = 'right'; + } else if (/^ *:-+: *$/.test(item.align[i])) { + item.align[i] = 'center'; + } else if (/^ *:-+ *$/.test(item.align[i])) { + item.align[i] = 'left'; + } else { + item.align[i] = null; + } + } + + for (i = 0; i < item.cells.length; i++) { + item.cells[i] = splitCells(item.cells[i], item.header.length); + } + + this.tokens.push(item); + + continue; + } + } + + // hr + if (cap = this.rules.hr.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'hr' + }); + continue; + } + + // blockquote + if (cap = this.rules.blockquote.exec(src)) { + src = src.substring(cap[0].length); + + this.tokens.push({ + type: 'blockquote_start' + }); + + cap = cap[0].replace(/^ *> ?/gm, ''); + + // Pass `top` to keep the current + // "toplevel" state. This is exactly + // how markdown.pl works. + this.token(cap, top); + + this.tokens.push({ + type: 'blockquote_end' + }); + + continue; + } + + // list + if (cap = this.rules.list.exec(src)) { + src = src.substring(cap[0].length); + bull = cap[2]; + isordered = bull.length > 1; + + listStart = { + type: 'list_start', + ordered: isordered, + start: isordered ? +bull : '', + loose: false + }; + + this.tokens.push(listStart); + + // Get each top-level item. + cap = cap[0].match(this.rules.item); + + listItems = []; + next = false; + l = cap.length; + i = 0; + + for (; i < l; i++) { + item = cap[i]; + + // Remove the list item's bullet + // so it is seen as the next token. + space = item.length; + item = item.replace(/^ *([*+-]|\d+\.) +/, ''); + + // Outdent whatever the + // list item contains. Hacky. + if (~item.indexOf('\n ')) { + space -= item.length; + item = !this.options.pedantic + ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') + : item.replace(/^ {1,4}/gm, ''); + } + + // Determine whether the next list item belongs here. + // Backpedal if it does not belong in this list. + if (this.options.smartLists && i !== l - 1) { + b = block.bullet.exec(cap[i + 1])[0]; + if (bull !== b && !(bull.length > 1 && b.length > 1)) { + src = cap.slice(i + 1).join('\n') + src; + i = l - 1; + } + } + + // Determine whether item is loose or not. + // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/ + // for discount behavior. + loose = next || /\n\n(?!\s*$)/.test(item); + if (i !== l - 1) { + next = item.charAt(item.length - 1) === '\n'; + if (!loose) loose = next; + } + + if (loose) { + listStart.loose = true; + } + + // Check for task list items + istask = /^\[[ xX]\] /.test(item); + ischecked = undefined; + if (istask) { + ischecked = item[1] !== ' '; + item = item.replace(/^\[[ xX]\] +/, ''); + } + + t = { + type: 'list_item_start', + task: istask, + checked: ischecked, + loose: loose + }; + + listItems.push(t); + this.tokens.push(t); + + // Recurse. + this.token(item, false); + + this.tokens.push({ + type: 'list_item_end' + }); + } + + if (listStart.loose) { + l = listItems.length; + i = 0; + for (; i < l; i++) { + listItems[i].loose = true; + } + } + + this.tokens.push({ + type: 'list_end' + }); + + continue; + } + + // html + if (cap = this.rules.html.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: this.options.sanitize + ? 'paragraph' + : 'html', + pre: !this.options.sanitizer + && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'), + text: cap[0] + }); + continue; + } + + // def + if (top && (cap = this.rules.def.exec(src))) { + src = src.substring(cap[0].length); + if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1); + tag = cap[1].toLowerCase().replace(/\s+/g, ' '); + if (!this.tokens.links[tag]) { + this.tokens.links[tag] = { + href: cap[2], + title: cap[3] + }; + } + continue; + } + + // table (gfm) + if (top && (cap = this.rules.table.exec(src))) { + item = { + type: 'table', + header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')), + align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), + cells: cap[3] ? cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') : [] + }; + + if (item.header.length === item.align.length) { + src = src.substring(cap[0].length); + + for (i = 0; i < item.align.length; i++) { + if (/^ *-+: *$/.test(item.align[i])) { + item.align[i] = 'right'; + } else if (/^ *:-+: *$/.test(item.align[i])) { + item.align[i] = 'center'; + } else if (/^ *:-+ *$/.test(item.align[i])) { + item.align[i] = 'left'; + } else { + item.align[i] = null; + } + } + + for (i = 0; i < item.cells.length; i++) { + item.cells[i] = splitCells( + item.cells[i].replace(/^ *\| *| *\| *$/g, ''), + item.header.length); + } + + this.tokens.push(item); + + continue; + } + } + + // lheading + if (cap = this.rules.lheading.exec(src)) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'heading', + depth: cap[2] === '=' ? 1 : 2, + text: cap[1] + }); + continue; + } + + // top-level paragraph + if (top && (cap = this.rules.paragraph.exec(src))) { + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'paragraph', + text: cap[1].charAt(cap[1].length - 1) === '\n' + ? cap[1].slice(0, -1) + : cap[1] + }); + continue; + } + + // text + if (cap = this.rules.text.exec(src)) { + // Top-level should never reach here. + src = src.substring(cap[0].length); + this.tokens.push({ + type: 'text', + text: cap[0] + }); + continue; + } + + if (src) { + throw new Error('Infinite loop on byte: ' + src.charCodeAt(0)); + } + } + + return this.tokens; +}; + +/** + * Inline-Level Grammar + */ + +var inline = { + escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, + autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/, + url: noop, + tag: '^comment' + + '|^' // self-closing tag + + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag + + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. + + '|^' // declaration, e.g. + + '|^', // CDATA section + link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/, + reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/, + nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/, + strong: /^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/, + em: /^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/, + code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/, + br: /^( {2,}|\\)\n(?!\s*$)/, + del: noop, + text: /^[\s\S]+?(?=[\\?@\[\]\\^_`{|}~])/g; + +inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/; +inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/; +inline.autolink = edit(inline.autolink) + .replace('scheme', inline._scheme) + .replace('email', inline._email) + .getRegex(); + +inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/; + +inline.tag = edit(inline.tag) + .replace('comment', block._comment) + .replace('attribute', inline._attribute) + .getRegex(); + +inline._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/; +inline._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f\\]*\)|[^\s\x00-\x1f()\\])*?)/; +inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/; + +inline.link = edit(inline.link) + .replace('label', inline._label) + .replace('href', inline._href) + .replace('title', inline._title) + .getRegex(); + +inline.reflink = edit(inline.reflink) + .replace('label', inline._label) + .getRegex(); + +/** + * Normal Inline Grammar + */ + +inline.normal = merge({}, inline); + +/** + * Pedantic Inline Grammar + */ + +inline.pedantic = merge({}, inline.normal, { + strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, + em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/, + link: edit(/^!?\[(label)\]\((.*?)\)/) + .replace('label', inline._label) + .getRegex(), + reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/) + .replace('label', inline._label) + .getRegex() +}); + +/** + * GFM Inline Grammar + */ + +inline.gfm = merge({}, inline.normal, { + escape: edit(inline.escape).replace('])', '~|])').getRegex(), + url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/) + .replace('email', inline._email) + .getRegex(), + _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/, + del: /^~+(?=\S)([\s\S]*?\S)~+/, + text: edit(inline.text) + .replace(']|', '~]|') + .replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|') + .getRegex() +}); + +/** + * GFM + Line Breaks Inline Grammar + */ + +inline.breaks = merge({}, inline.gfm, { + br: edit(inline.br).replace('{2,}', '*').getRegex(), + text: edit(inline.gfm.text).replace('{2,}', '*').getRegex() +}); + +/** + * Inline Lexer & Compiler + */ + +function InlineLexer(links, options) { + this.options = options || marked.defaults; + this.links = links; + this.rules = inline.normal; + this.renderer = this.options.renderer || new Renderer(); + this.renderer.options = this.options; + + if (!this.links) { + throw new Error('Tokens array requires a `links` property.'); + } + + if (this.options.pedantic) { + this.rules = inline.pedantic; + } else if (this.options.gfm) { + if (this.options.breaks) { + this.rules = inline.breaks; + } else { + this.rules = inline.gfm; + } + } +} + +/** + * Expose Inline Rules + */ + +InlineLexer.rules = inline; + +/** + * Static Lexing/Compiling Method + */ + +InlineLexer.output = function(src, links, options) { + var inline = new InlineLexer(links, options); + return inline.output(src); +}; + +/** + * Lexing/Compiling + */ + +InlineLexer.prototype.output = function(src) { + var out = '', + link, + text, + href, + title, + cap, + prevCapZero; + + while (src) { + // escape + if (cap = this.rules.escape.exec(src)) { + src = src.substring(cap[0].length); + out += cap[1]; + continue; + } + + // autolink + if (cap = this.rules.autolink.exec(src)) { + src = src.substring(cap[0].length); + if (cap[2] === '@') { + text = escape(this.mangle(cap[1])); + href = 'mailto:' + text; + } else { + text = escape(cap[1]); + href = text; + } + out += this.renderer.link(href, null, text); + continue; + } + + // url (gfm) + if (!this.inLink && (cap = this.rules.url.exec(src))) { + do { + prevCapZero = cap[0]; + cap[0] = this.rules._backpedal.exec(cap[0])[0]; + } while (prevCapZero !== cap[0]); + src = src.substring(cap[0].length); + if (cap[2] === '@') { + text = escape(cap[0]); + href = 'mailto:' + text; + } else { + text = escape(cap[0]); + if (cap[1] === 'www.') { + href = 'http://' + text; + } else { + href = text; + } + } + out += this.renderer.link(href, null, text); + continue; + } + + // tag + if (cap = this.rules.tag.exec(src)) { + if (!this.inLink && /^/i.test(cap[0])) { + this.inLink = false; + } + src = src.substring(cap[0].length); + out += this.options.sanitize + ? this.options.sanitizer + ? this.options.sanitizer(cap[0]) + : escape(cap[0]) + : cap[0] + continue; + } + + // link + if (cap = this.rules.link.exec(src)) { + src = src.substring(cap[0].length); + this.inLink = true; + href = cap[2]; + if (this.options.pedantic) { + link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href); + + if (link) { + href = link[1]; + title = link[3]; + } else { + title = ''; + } + } else { + title = cap[3] ? cap[3].slice(1, -1) : ''; + } + href = href.trim().replace(/^<([\s\S]*)>$/, '$1'); + out += this.outputLink(cap, { + href: InlineLexer.escapes(href), + title: InlineLexer.escapes(title) + }); + this.inLink = false; + continue; + } + + // reflink, nolink + if ((cap = this.rules.reflink.exec(src)) + || (cap = this.rules.nolink.exec(src))) { + src = src.substring(cap[0].length); + link = (cap[2] || cap[1]).replace(/\s+/g, ' '); + link = this.links[link.toLowerCase()]; + if (!link || !link.href) { + out += cap[0].charAt(0); + src = cap[0].substring(1) + src; + continue; + } + this.inLink = true; + out += this.outputLink(cap, link); + this.inLink = false; + continue; + } + + // strong + if (cap = this.rules.strong.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1])); + continue; + } + + // em + if (cap = this.rules.em.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1])); + continue; + } + + // code + if (cap = this.rules.code.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.codespan(escape(cap[2].trim(), true)); + continue; + } + + // br + if (cap = this.rules.br.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.br(); + continue; + } + + // del (gfm) + if (cap = this.rules.del.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.del(this.output(cap[1])); + continue; + } + + // text + if (cap = this.rules.text.exec(src)) { + src = src.substring(cap[0].length); + out += this.renderer.text(escape(this.smartypants(cap[0]))); + continue; + } + + if (src) { + throw new Error('Infinite loop on byte: ' + src.charCodeAt(0)); + } + } + + return out; +}; + +InlineLexer.escapes = function(text) { + return text ? text.replace(InlineLexer.rules._escapes, '$1') : text; +} + +/** + * Compile Link + */ + +InlineLexer.prototype.outputLink = function(cap, link) { + var href = link.href, + title = link.title ? escape(link.title) : null; + + return cap[0].charAt(0) !== '!' + ? this.renderer.link(href, title, this.output(cap[1])) + : this.renderer.image(href, title, escape(cap[1])); +}; + +/** + * Smartypants Transformations + */ + +InlineLexer.prototype.smartypants = function(text) { + if (!this.options.smartypants) return text; + return text + // em-dashes + .replace(/---/g, '\u2014') + // en-dashes + .replace(/--/g, '\u2013') + // opening singles + .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018') + // closing singles & apostrophes + .replace(/'/g, '\u2019') + // opening doubles + .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c') + // closing doubles + .replace(/"/g, '\u201d') + // ellipses + .replace(/\.{3}/g, '\u2026'); +}; + +/** + * Mangle Links + */ + +InlineLexer.prototype.mangle = function(text) { + if (!this.options.mangle) return text; + var out = '', + l = text.length, + i = 0, + ch; + + for (; i < l; i++) { + ch = text.charCodeAt(i); + if (Math.random() > 0.5) { + ch = 'x' + ch.toString(16); + } + out += '&#' + ch + ';'; + } + + return out; +}; + +/** + * Renderer + */ + +function Renderer(options) { + this.options = options || marked.defaults; +} + +Renderer.prototype.code = function(code, lang, escaped) { + if (this.options.highlight) { + var out = this.options.highlight(code, lang); + if (out != null && out !== code) { + escaped = true; + code = out; + } + } + + if (!lang) { + return '
'
+      + (escaped ? code : escape(code, true))
+      + '
'; + } + + return '
'
+    + (escaped ? code : escape(code, true))
+    + '
\n'; +}; + +Renderer.prototype.blockquote = function(quote) { + return '
\n' + quote + '
\n'; +}; + +Renderer.prototype.html = function(html) { + return html; +}; + +Renderer.prototype.heading = function(text, level, raw) { + if (this.options.headerIds) { + return '' + + text + + '\n'; + } + // ignore IDs + return '' + text + '\n'; +}; + +Renderer.prototype.hr = function() { + return this.options.xhtml ? '
\n' : '
\n'; +}; + +Renderer.prototype.list = function(body, ordered, start) { + var type = ordered ? 'ol' : 'ul', + startatt = (ordered && start !== 1) ? (' start="' + start + '"') : ''; + return '<' + type + startatt + '>\n' + body + '\n'; +}; + +Renderer.prototype.listitem = function(text) { + return '
  • ' + text + '
  • \n'; +}; + +Renderer.prototype.checkbox = function(checked) { + return ' '; +} + +Renderer.prototype.paragraph = function(text) { + return '

    ' + text + '

    \n'; +}; + +Renderer.prototype.table = function(header, body) { + if (body) body = '' + body + ''; + + return '\n' + + '\n' + + header + + '\n' + + body + + '
    \n'; +}; + +Renderer.prototype.tablerow = function(content) { + return '\n' + content + '\n'; +}; + +Renderer.prototype.tablecell = function(content, flags) { + var type = flags.header ? 'th' : 'td'; + var tag = flags.align + ? '<' + type + ' align="' + flags.align + '">' + : '<' + type + '>'; + return tag + content + '\n'; +}; + +// span level renderer +Renderer.prototype.strong = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.em = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.codespan = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.br = function() { + return this.options.xhtml ? '
    ' : '
    '; +}; + +Renderer.prototype.del = function(text) { + return '' + text + ''; +}; + +Renderer.prototype.link = function(href, title, text) { + if (this.options.sanitize) { + try { + var prot = decodeURIComponent(unescape(href)) + .replace(/[^\w:]/g, '') + .toLowerCase(); + } catch (e) { + return text; + } + if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) { + return text; + } + } + if (this.options.baseUrl && !originIndependentUrl.test(href)) { + href = resolveUrl(this.options.baseUrl, href); + } + try { + href = encodeURI(href).replace(/%25/g, '%'); + } catch (e) { + return text; + } + var out = '
    '; + return out; +}; + +Renderer.prototype.image = function(href, title, text) { + if (this.options.baseUrl && !originIndependentUrl.test(href)) { + href = resolveUrl(this.options.baseUrl, href); + } + var out = '' + text + '' : '>'; + return out; +}; + +Renderer.prototype.text = function(text) { + return text; +}; + +/** + * TextRenderer + * returns only the textual part of the token + */ + +function TextRenderer() {} + +// no need for block level renderers + +TextRenderer.prototype.strong = +TextRenderer.prototype.em = +TextRenderer.prototype.codespan = +TextRenderer.prototype.del = +TextRenderer.prototype.text = function (text) { + return text; +} + +TextRenderer.prototype.link = +TextRenderer.prototype.image = function(href, title, text) { + return '' + text; +} + +TextRenderer.prototype.br = function() { + return ''; +} + +/** + * Parsing & Compiling + */ + +function Parser(options) { + this.tokens = []; + this.token = null; + this.options = options || marked.defaults; + this.options.renderer = this.options.renderer || new Renderer(); + this.renderer = this.options.renderer; + this.renderer.options = this.options; +} + +/** + * Static Parse Method + */ + +Parser.parse = function(src, options) { + var parser = new Parser(options); + return parser.parse(src); +}; + +/** + * Parse Loop + */ + +Parser.prototype.parse = function(src) { + this.inline = new InlineLexer(src.links, this.options); + // use an InlineLexer with a TextRenderer to extract pure text + this.inlineText = new InlineLexer( + src.links, + merge({}, this.options, {renderer: new TextRenderer()}) + ); + this.tokens = src.reverse(); + + var out = ''; + while (this.next()) { + out += this.tok(); + } + + return out; +}; + +/** + * Next Token + */ + +Parser.prototype.next = function() { + return this.token = this.tokens.pop(); +}; + +/** + * Preview Next Token + */ + +Parser.prototype.peek = function() { + return this.tokens[this.tokens.length - 1] || 0; +}; + +/** + * Parse Text Tokens + */ + +Parser.prototype.parseText = function() { + var body = this.token.text; + + while (this.peek().type === 'text') { + body += '\n' + this.next().text; + } + + return this.inline.output(body); +}; + +/** + * Parse Current Token + */ + +Parser.prototype.tok = function() { + switch (this.token.type) { + case 'space': { + return ''; + } + case 'hr': { + return this.renderer.hr(); + } + case 'heading': { + return this.renderer.heading( + this.inline.output(this.token.text), + this.token.depth, + unescape(this.inlineText.output(this.token.text))); + } + case 'code': { + return this.renderer.code(this.token.text, + this.token.lang, + this.token.escaped); + } + case 'table': { + var header = '', + body = '', + i, + row, + cell, + j; + + // header + cell = ''; + for (i = 0; i < this.token.header.length; i++) { + cell += this.renderer.tablecell( + this.inline.output(this.token.header[i]), + { header: true, align: this.token.align[i] } + ); + } + header += this.renderer.tablerow(cell); + + for (i = 0; i < this.token.cells.length; i++) { + row = this.token.cells[i]; + + cell = ''; + for (j = 0; j < row.length; j++) { + cell += this.renderer.tablecell( + this.inline.output(row[j]), + { header: false, align: this.token.align[j] } + ); + } + + body += this.renderer.tablerow(cell); + } + return this.renderer.table(header, body); + } + case 'blockquote_start': { + body = ''; + + while (this.next().type !== 'blockquote_end') { + body += this.tok(); + } + + return this.renderer.blockquote(body); + } + case 'list_start': { + body = ''; + var ordered = this.token.ordered, + start = this.token.start; + + while (this.next().type !== 'list_end') { + body += this.tok(); + } + + return this.renderer.list(body, ordered, start); + } + case 'list_item_start': { + body = ''; + var loose = this.token.loose; + + if (this.token.task) { + body += this.renderer.checkbox(this.token.checked); + } + + while (this.next().type !== 'list_item_end') { + body += !loose && this.token.type === 'text' + ? this.parseText() + : this.tok(); + } + + return this.renderer.listitem(body); + } + case 'html': { + // TODO parse inline content if parameter markdown=1 + return this.renderer.html(this.token.text); + } + case 'paragraph': { + return this.renderer.paragraph(this.inline.output(this.token.text)); + } + case 'text': { + return this.renderer.paragraph(this.parseText()); + } + } +}; + +/** + * Helpers + */ + +function escape(html, encode) { + return html + .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +function unescape(html) { + // explicitly match decimal, hex, and named HTML entities + return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function(_, n) { + n = n.toLowerCase(); + if (n === 'colon') return ':'; + if (n.charAt(0) === '#') { + return n.charAt(1) === 'x' + ? String.fromCharCode(parseInt(n.substring(2), 16)) + : String.fromCharCode(+n.substring(1)); + } + return ''; + }); +} + +function edit(regex, opt) { + regex = regex.source || regex; + opt = opt || ''; + return { + replace: function(name, val) { + val = val.source || val; + val = val.replace(/(^|[^\[])\^/g, '$1'); + regex = regex.replace(name, val); + return this; + }, + getRegex: function() { + return new RegExp(regex, opt); + } + }; +} + +function resolveUrl(base, href) { + if (!baseUrls[' ' + base]) { + // we can ignore everything in base after the last slash of its path component, + // but we might need to add _that_ + // https://tools.ietf.org/html/rfc3986#section-3 + if (/^[^:]+:\/*[^/]*$/.test(base)) { + baseUrls[' ' + base] = base + '/'; + } else { + baseUrls[' ' + base] = rtrim(base, '/', true); + } + } + base = baseUrls[' ' + base]; + + if (href.slice(0, 2) === '//') { + return base.replace(/:[\s\S]*/, ':') + href; + } else if (href.charAt(0) === '/') { + return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href; + } else { + return base + href; + } +} +var baseUrls = {}; +var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i; + +function noop() {} +noop.exec = noop; + +function merge(obj) { + var i = 1, + target, + key; + + for (; i < arguments.length; i++) { + target = arguments[i]; + for (key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + obj[key] = target[key]; + } + } + } + + return obj; +} + +function splitCells(tableRow, count) { + // ensure that every cell-delimiting pipe has a space + // before it to distinguish it from an escaped pipe + var row = tableRow.replace(/\|/g, function (match, offset, str) { + var escaped = false, + curr = offset; + while (--curr >= 0 && str[curr] === '\\') escaped = !escaped; + if (escaped) { + // odd number of slashes means | is escaped + // so we leave it alone + return '|'; + } else { + // add space before unescaped | + return ' |'; + } + }), + cells = row.split(/ \|/), + i = 0; + + if (cells.length > count) { + cells.splice(count); + } else { + while (cells.length < count) cells.push(''); + } + + for (; i < cells.length; i++) { + // leading or trailing whitespace is ignored per the gfm spec + cells[i] = cells[i].trim().replace(/\\\|/g, '|'); + } + return cells; +} + +// Remove trailing 'c's. Equivalent to str.replace(/c*$/, ''). +// /c*$/ is vulnerable to REDOS. +// invert: Remove suffix of non-c chars instead. Default falsey. +function rtrim(str, c, invert) { + if (str.length === 0) { + return ''; + } + + // Length of suffix matching the invert condition. + var suffLen = 0; + + // Step left until we fail to match the invert condition. + while (suffLen < str.length) { + var currChar = str.charAt(str.length - suffLen - 1); + if (currChar === c && !invert) { + suffLen++; + } else if (currChar !== c && invert) { + suffLen++; + } else { + break; + } + } + + return str.substr(0, str.length - suffLen); +} + +/** + * Marked + */ + +function marked(src, opt, callback) { + // throw error in case of non string input + if (typeof src === 'undefined' || src === null) { + throw new Error('marked(): input parameter is undefined or null'); + } + if (typeof src !== 'string') { + throw new Error('marked(): input parameter is of type ' + + Object.prototype.toString.call(src) + ', string expected'); + } + + if (callback || typeof opt === 'function') { + if (!callback) { + callback = opt; + opt = null; + } + + opt = merge({}, marked.defaults, opt || {}); + + var highlight = opt.highlight, + tokens, + pending, + i = 0; + + try { + tokens = Lexer.lex(src, opt) + } catch (e) { + return callback(e); + } + + pending = tokens.length; + + var done = function(err) { + if (err) { + opt.highlight = highlight; + return callback(err); + } + + var out; + + try { + out = Parser.parse(tokens, opt); + } catch (e) { + err = e; + } + + opt.highlight = highlight; + + return err + ? callback(err) + : callback(null, out); + }; + + if (!highlight || highlight.length < 3) { + return done(); + } + + delete opt.highlight; + + if (!pending) return done(); + + for (; i < tokens.length; i++) { + (function(token) { + if (token.type !== 'code') { + return --pending || done(); + } + return highlight(token.text, token.lang, function(err, code) { + if (err) return done(err); + if (code == null || code === token.text) { + return --pending || done(); + } + token.text = code; + token.escaped = true; + --pending || done(); + }); + })(tokens[i]); + } + + return; + } + try { + if (opt) opt = merge({}, marked.defaults, opt); + return Parser.parse(Lexer.lex(src, opt), opt); + } catch (e) { + e.message += '\nPlease report this to https://github.com/markedjs/marked.'; + if ((opt || marked.defaults).silent) { + return '

    An error occurred:

    '
    +        + escape(e.message + '', true)
    +        + '
    '; + } + throw e; + } +} + +/** + * Options + */ + +marked.options = +marked.setOptions = function(opt) { + merge(marked.defaults, opt); + return marked; +}; + +marked.getDefaults = function () { + return { + baseUrl: null, + breaks: false, + gfm: true, + headerIds: true, + headerPrefix: '', + highlight: null, + langPrefix: 'language-', + mangle: true, + pedantic: false, + renderer: new Renderer(), + sanitize: false, + sanitizer: null, + silent: false, + smartLists: false, + smartypants: false, + tables: true, + xhtml: false + }; +} + +marked.defaults = marked.getDefaults(); + +/** + * Expose + */ + +marked.Parser = Parser; +marked.parser = Parser.parse; + +marked.Renderer = Renderer; +marked.TextRenderer = TextRenderer; + +marked.Lexer = Lexer; +marked.lexer = Lexer.lex; + +marked.InlineLexer = InlineLexer; +marked.inlineLexer = InlineLexer.output; + +marked.parse = marked; + +if (typeof module !== 'undefined' && typeof exports === 'object') { + module.exports = marked; +} else if (typeof define === 'function' && define.amd) { + define(function() { return marked; }); +} else { + root.marked = marked; +} +})(this || (typeof window !== 'undefined' ? window : global)); diff --git a/components/mpvue-citypicker/city-data/area.js b/components/mpvue-citypicker/city-data/area.js new file mode 100644 index 0000000..92dfc30 --- /dev/null +++ b/components/mpvue-citypicker/city-data/area.js @@ -0,0 +1,12542 @@ +/* eslint-disable */ +var areaData = [ + [ + [{ + "label": "东城区", + "value": "110101" + }, + { + "label": "西城区", + "value": "110102" + }, + { + "label": "朝阳区", + "value": "110105" + }, + { + "label": "丰台区", + "value": "110106" + }, + { + "label": "石景山区", + "value": "110107" + }, + { + "label": "海淀区", + "value": "110108" + }, + { + "label": "门头沟区", + "value": "110109" + }, + { + "label": "房山区", + "value": "110111" + }, + { + "label": "通州区", + "value": "110112" + }, + { + "label": "顺义区", + "value": "110113" + }, + { + "label": "昌平区", + "value": "110114" + }, + { + "label": "大兴区", + "value": "110115" + }, + { + "label": "怀柔区", + "value": "110116" + }, + { + "label": "平谷区", + "value": "110117" + }, + { + "label": "密云区", + "value": "110118" + }, + { + "label": "延庆区", + "value": "110119" + } + ] + ], + [ + [{ + "label": "和平区", + "value": "120101" + }, + { + "label": "河东区", + "value": "120102" + }, + { + "label": "河西区", + "value": "120103" + }, + { + "label": "南开区", + "value": "120104" + }, + { + "label": "河北区", + "value": "120105" + }, + { + "label": "红桥区", + "value": "120106" + }, + { + "label": "东丽区", + "value": "120110" + }, + { + "label": "西青区", + "value": "120111" + }, + { + "label": "津南区", + "value": "120112" + }, + { + "label": "北辰区", + "value": "120113" + }, + { + "label": "武清区", + "value": "120114" + }, + { + "label": "宝坻区", + "value": "120115" + }, + { + "label": "滨海新区", + "value": "120116" + }, + { + "label": "宁河区", + "value": "120117" + }, + { + "label": "静海区", + "value": "120118" + }, + { + "label": "蓟州区", + "value": "120119" + } + ] + ], + [ + [{ + "label": "长安区", + "value": "130102" + }, + { + "label": "桥西区", + "value": "130104" + }, + { + "label": "新华区", + "value": "130105" + }, + { + "label": "井陉矿区", + "value": "130107" + }, + { + "label": "裕华区", + "value": "130108" + }, + { + "label": "藁城区", + "value": "130109" + }, + { + "label": "鹿泉区", + "value": "130110" + }, + { + "label": "栾城区", + "value": "130111" + }, + { + "label": "井陉县", + "value": "130121" + }, + { + "label": "正定县", + "value": "130123" + }, + { + "label": "行唐县", + "value": "130125" + }, + { + "label": "灵寿县", + "value": "130126" + }, + { + "label": "高邑县", + "value": "130127" + }, + { + "label": "深泽县", + "value": "130128" + }, + { + "label": "赞皇县", + "value": "130129" + }, + { + "label": "无极县", + "value": "130130" + }, + { + "label": "平山县", + "value": "130131" + }, + { + "label": "元氏县", + "value": "130132" + }, + { + "label": "赵县", + "value": "130133" + }, + { + "label": "石家庄高新技术产业开发区", + "value": "130171" + }, + { + "label": "石家庄循环化工园区", + "value": "130172" + }, + { + "label": "辛集市", + "value": "130181" + }, + { + "label": "晋州市", + "value": "130183" + }, + { + "label": "新乐市", + "value": "130184" + } + ], + [{ + "label": "路南区", + "value": "130202" + }, + { + "label": "路北区", + "value": "130203" + }, + { + "label": "古冶区", + "value": "130204" + }, + { + "label": "开平区", + "value": "130205" + }, + { + "label": "丰南区", + "value": "130207" + }, + { + "label": "丰润区", + "value": "130208" + }, + { + "label": "曹妃甸区", + "value": "130209" + }, + { + "label": "滦县", + "value": "130223" + }, + { + "label": "滦南县", + "value": "130224" + }, + { + "label": "乐亭县", + "value": "130225" + }, + { + "label": "迁西县", + "value": "130227" + }, + { + "label": "玉田县", + "value": "130229" + }, + { + "label": "唐山市芦台经济技术开发区", + "value": "130271" + }, + { + "label": "唐山市汉沽管理区", + "value": "130272" + }, + { + "label": "唐山高新技术产业开发区", + "value": "130273" + }, + { + "label": "河北唐山海港经济开发区", + "value": "130274" + }, + { + "label": "遵化市", + "value": "130281" + }, + { + "label": "迁安市", + "value": "130283" + } + ], + [{ + "label": "海港区", + "value": "130302" + }, + { + "label": "山海关区", + "value": "130303" + }, + { + "label": "北戴河区", + "value": "130304" + }, + { + "label": "抚宁区", + "value": "130306" + }, + { + "label": "青龙满族自治县", + "value": "130321" + }, + { + "label": "昌黎县", + "value": "130322" + }, + { + "label": "卢龙县", + "value": "130324" + }, + { + "label": "秦皇岛市经济技术开发区", + "value": "130371" + }, + { + "label": "北戴河新区", + "value": "130372" + } + ], + [{ + "label": "邯山区", + "value": "130402" + }, + { + "label": "丛台区", + "value": "130403" + }, + { + "label": "复兴区", + "value": "130404" + }, + { + "label": "峰峰矿区", + "value": "130406" + }, + { + "label": "肥乡区", + "value": "130407" + }, + { + "label": "永年区", + "value": "130408" + }, + { + "label": "临漳县", + "value": "130423" + }, + { + "label": "成安县", + "value": "130424" + }, + { + "label": "大名县", + "value": "130425" + }, + { + "label": "涉县", + "value": "130426" + }, + { + "label": "磁县", + "value": "130427" + }, + { + "label": "邱县", + "value": "130430" + }, + { + "label": "鸡泽县", + "value": "130431" + }, + { + "label": "广平县", + "value": "130432" + }, + { + "label": "馆陶县", + "value": "130433" + }, + { + "label": "魏县", + "value": "130434" + }, + { + "label": "曲周县", + "value": "130435" + }, + { + "label": "邯郸经济技术开发区", + "value": "130471" + }, + { + "label": "邯郸冀南新区", + "value": "130473" + }, + { + "label": "武安市", + "value": "130481" + } + ], + [{ + "label": "桥东区", + "value": "130502" + }, + { + "label": "桥西区", + "value": "130503" + }, + { + "label": "邢台县", + "value": "130521" + }, + { + "label": "临城县", + "value": "130522" + }, + { + "label": "内丘县", + "value": "130523" + }, + { + "label": "柏乡县", + "value": "130524" + }, + { + "label": "隆尧县", + "value": "130525" + }, + { + "label": "任县", + "value": "130526" + }, + { + "label": "南和县", + "value": "130527" + }, + { + "label": "宁晋县", + "value": "130528" + }, + { + "label": "巨鹿县", + "value": "130529" + }, + { + "label": "新河县", + "value": "130530" + }, + { + "label": "广宗县", + "value": "130531" + }, + { + "label": "平乡县", + "value": "130532" + }, + { + "label": "威县", + "value": "130533" + }, + { + "label": "清河县", + "value": "130534" + }, + { + "label": "临西县", + "value": "130535" + }, + { + "label": "河北邢台经济开发区", + "value": "130571" + }, + { + "label": "南宫市", + "value": "130581" + }, + { + "label": "沙河市", + "value": "130582" + } + ], + [{ + "label": "竞秀区", + "value": "130602" + }, + { + "label": "莲池区", + "value": "130606" + }, + { + "label": "满城区", + "value": "130607" + }, + { + "label": "清苑区", + "value": "130608" + }, + { + "label": "徐水区", + "value": "130609" + }, + { + "label": "涞水县", + "value": "130623" + }, + { + "label": "阜平县", + "value": "130624" + }, + { + "label": "定兴县", + "value": "130626" + }, + { + "label": "唐县", + "value": "130627" + }, + { + "label": "高阳县", + "value": "130628" + }, + { + "label": "容城县", + "value": "130629" + }, + { + "label": "涞源县", + "value": "130630" + }, + { + "label": "望都县", + "value": "130631" + }, + { + "label": "安新县", + "value": "130632" + }, + { + "label": "易县", + "value": "130633" + }, + { + "label": "曲阳县", + "value": "130634" + }, + { + "label": "蠡县", + "value": "130635" + }, + { + "label": "顺平县", + "value": "130636" + }, + { + "label": "博野县", + "value": "130637" + }, + { + "label": "雄县", + "value": "130638" + }, + { + "label": "保定高新技术产业开发区", + "value": "130671" + }, + { + "label": "保定白沟新城", + "value": "130672" + }, + { + "label": "涿州市", + "value": "130681" + }, + { + "label": "定州市", + "value": "130682" + }, + { + "label": "安国市", + "value": "130683" + }, + { + "label": "高碑店市", + "value": "130684" + } + ], + [{ + "label": "桥东区", + "value": "130702" + }, + { + "label": "桥西区", + "value": "130703" + }, + { + "label": "宣化区", + "value": "130705" + }, + { + "label": "下花园区", + "value": "130706" + }, + { + "label": "万全区", + "value": "130708" + }, + { + "label": "崇礼区", + "value": "130709" + }, + { + "label": "张北县", + "value": "130722" + }, + { + "label": "康保县", + "value": "130723" + }, + { + "label": "沽源县", + "value": "130724" + }, + { + "label": "尚义县", + "value": "130725" + }, + { + "label": "蔚县", + "value": "130726" + }, + { + "label": "阳原县", + "value": "130727" + }, + { + "label": "怀安县", + "value": "130728" + }, + { + "label": "怀来县", + "value": "130730" + }, + { + "label": "涿鹿县", + "value": "130731" + }, + { + "label": "赤城县", + "value": "130732" + }, + { + "label": "张家口市高新技术产业开发区", + "value": "130771" + }, + { + "label": "张家口市察北管理区", + "value": "130772" + }, + { + "label": "张家口市塞北管理区", + "value": "130773" + } + ], + [{ + "label": "双桥区", + "value": "130802" + }, + { + "label": "双滦区", + "value": "130803" + }, + { + "label": "鹰手营子矿区", + "value": "130804" + }, + { + "label": "承德县", + "value": "130821" + }, + { + "label": "兴隆县", + "value": "130822" + }, + { + "label": "滦平县", + "value": "130824" + }, + { + "label": "隆化县", + "value": "130825" + }, + { + "label": "丰宁满族自治县", + "value": "130826" + }, + { + "label": "宽城满族自治县", + "value": "130827" + }, + { + "label": "围场满族蒙古族自治县", + "value": "130828" + }, + { + "label": "承德高新技术产业开发区", + "value": "130871" + }, + { + "label": "平泉市", + "value": "130881" + } + ], + [{ + "label": "新华区", + "value": "130902" + }, + { + "label": "运河区", + "value": "130903" + }, + { + "label": "沧县", + "value": "130921" + }, + { + "label": "青县", + "value": "130922" + }, + { + "label": "东光县", + "value": "130923" + }, + { + "label": "海兴县", + "value": "130924" + }, + { + "label": "盐山县", + "value": "130925" + }, + { + "label": "肃宁县", + "value": "130926" + }, + { + "label": "南皮县", + "value": "130927" + }, + { + "label": "吴桥县", + "value": "130928" + }, + { + "label": "献县", + "value": "130929" + }, + { + "label": "孟村回族自治县", + "value": "130930" + }, + { + "label": "河北沧州经济开发区", + "value": "130971" + }, + { + "label": "沧州高新技术产业开发区", + "value": "130972" + }, + { + "label": "沧州渤海新区", + "value": "130973" + }, + { + "label": "泊头市", + "value": "130981" + }, + { + "label": "任丘市", + "value": "130982" + }, + { + "label": "黄骅市", + "value": "130983" + }, + { + "label": "河间市", + "value": "130984" + } + ], + [{ + "label": "安次区", + "value": "131002" + }, + { + "label": "广阳区", + "value": "131003" + }, + { + "label": "固安县", + "value": "131022" + }, + { + "label": "永清县", + "value": "131023" + }, + { + "label": "香河县", + "value": "131024" + }, + { + "label": "大城县", + "value": "131025" + }, + { + "label": "文安县", + "value": "131026" + }, + { + "label": "大厂回族自治县", + "value": "131028" + }, + { + "label": "廊坊经济技术开发区", + "value": "131071" + }, + { + "label": "霸州市", + "value": "131081" + }, + { + "label": "三河市", + "value": "131082" + } + ], + [{ + "label": "桃城区", + "value": "131102" + }, + { + "label": "冀州区", + "value": "131103" + }, + { + "label": "枣强县", + "value": "131121" + }, + { + "label": "武邑县", + "value": "131122" + }, + { + "label": "武强县", + "value": "131123" + }, + { + "label": "饶阳县", + "value": "131124" + }, + { + "label": "安平县", + "value": "131125" + }, + { + "label": "故城县", + "value": "131126" + }, + { + "label": "景县", + "value": "131127" + }, + { + "label": "阜城县", + "value": "131128" + }, + { + "label": "河北衡水经济开发区", + "value": "131171" + }, + { + "label": "衡水滨湖新区", + "value": "131172" + }, + { + "label": "深州市", + "value": "131182" + } + ] + ], + [ + [{ + "label": "小店区", + "value": "140105" + }, + { + "label": "迎泽区", + "value": "140106" + }, + { + "label": "杏花岭区", + "value": "140107" + }, + { + "label": "尖草坪区", + "value": "140108" + }, + { + "label": "万柏林区", + "value": "140109" + }, + { + "label": "晋源区", + "value": "140110" + }, + { + "label": "清徐县", + "value": "140121" + }, + { + "label": "阳曲县", + "value": "140122" + }, + { + "label": "娄烦县", + "value": "140123" + }, + { + "label": "山西转型综合改革示范区", + "value": "140171" + }, + { + "label": "古交市", + "value": "140181" + } + ], + [{ + "label": "城区", + "value": "140202" + }, + { + "label": "矿区", + "value": "140203" + }, + { + "label": "南郊区", + "value": "140211" + }, + { + "label": "新荣区", + "value": "140212" + }, + { + "label": "阳高县", + "value": "140221" + }, + { + "label": "天镇县", + "value": "140222" + }, + { + "label": "广灵县", + "value": "140223" + }, + { + "label": "灵丘县", + "value": "140224" + }, + { + "label": "浑源县", + "value": "140225" + }, + { + "label": "左云县", + "value": "140226" + }, + { + "label": "大同县", + "value": "140227" + }, + { + "label": "山西大同经济开发区", + "value": "140271" + } + ], + [{ + "label": "城区", + "value": "140302" + }, + { + "label": "矿区", + "value": "140303" + }, + { + "label": "郊区", + "value": "140311" + }, + { + "label": "平定县", + "value": "140321" + }, + { + "label": "盂县", + "value": "140322" + }, + { + "label": "山西阳泉经济开发区", + "value": "140371" + } + ], + [{ + "label": "城区", + "value": "140402" + }, + { + "label": "郊区", + "value": "140411" + }, + { + "label": "长治县", + "value": "140421" + }, + { + "label": "襄垣县", + "value": "140423" + }, + { + "label": "屯留县", + "value": "140424" + }, + { + "label": "平顺县", + "value": "140425" + }, + { + "label": "黎城县", + "value": "140426" + }, + { + "label": "壶关县", + "value": "140427" + }, + { + "label": "长子县", + "value": "140428" + }, + { + "label": "武乡县", + "value": "140429" + }, + { + "label": "沁县", + "value": "140430" + }, + { + "label": "沁源县", + "value": "140431" + }, + { + "label": "山西长治高新技术产业园区", + "value": "140471" + }, + { + "label": "潞城市", + "value": "140481" + } + ], + [{ + "label": "城区", + "value": "140502" + }, + { + "label": "沁水县", + "value": "140521" + }, + { + "label": "阳城县", + "value": "140522" + }, + { + "label": "陵川县", + "value": "140524" + }, + { + "label": "泽州县", + "value": "140525" + }, + { + "label": "高平市", + "value": "140581" + } + ], + [{ + "label": "朔城区", + "value": "140602" + }, + { + "label": "平鲁区", + "value": "140603" + }, + { + "label": "山阴县", + "value": "140621" + }, + { + "label": "应县", + "value": "140622" + }, + { + "label": "右玉县", + "value": "140623" + }, + { + "label": "怀仁县", + "value": "140624" + }, + { + "label": "山西朔州经济开发区", + "value": "140671" + } + ], + [{ + "label": "榆次区", + "value": "140702" + }, + { + "label": "榆社县", + "value": "140721" + }, + { + "label": "左权县", + "value": "140722" + }, + { + "label": "和顺县", + "value": "140723" + }, + { + "label": "昔阳县", + "value": "140724" + }, + { + "label": "寿阳县", + "value": "140725" + }, + { + "label": "太谷县", + "value": "140726" + }, + { + "label": "祁县", + "value": "140727" + }, + { + "label": "平遥县", + "value": "140728" + }, + { + "label": "灵石县", + "value": "140729" + }, + { + "label": "介休市", + "value": "140781" + } + ], + [{ + "label": "盐湖区", + "value": "140802" + }, + { + "label": "临猗县", + "value": "140821" + }, + { + "label": "万荣县", + "value": "140822" + }, + { + "label": "闻喜县", + "value": "140823" + }, + { + "label": "稷山县", + "value": "140824" + }, + { + "label": "新绛县", + "value": "140825" + }, + { + "label": "绛县", + "value": "140826" + }, + { + "label": "垣曲县", + "value": "140827" + }, + { + "label": "夏县", + "value": "140828" + }, + { + "label": "平陆县", + "value": "140829" + }, + { + "label": "芮城县", + "value": "140830" + }, + { + "label": "永济市", + "value": "140881" + }, + { + "label": "河津市", + "value": "140882" + } + ], + [{ + "label": "忻府区", + "value": "140902" + }, + { + "label": "定襄县", + "value": "140921" + }, + { + "label": "五台县", + "value": "140922" + }, + { + "label": "代县", + "value": "140923" + }, + { + "label": "繁峙县", + "value": "140924" + }, + { + "label": "宁武县", + "value": "140925" + }, + { + "label": "静乐县", + "value": "140926" + }, + { + "label": "神池县", + "value": "140927" + }, + { + "label": "五寨县", + "value": "140928" + }, + { + "label": "岢岚县", + "value": "140929" + }, + { + "label": "河曲县", + "value": "140930" + }, + { + "label": "保德县", + "value": "140931" + }, + { + "label": "偏关县", + "value": "140932" + }, + { + "label": "五台山风景名胜区", + "value": "140971" + }, + { + "label": "原平市", + "value": "140981" + } + ], + [{ + "label": "尧都区", + "value": "141002" + }, + { + "label": "曲沃县", + "value": "141021" + }, + { + "label": "翼城县", + "value": "141022" + }, + { + "label": "襄汾县", + "value": "141023" + }, + { + "label": "洪洞县", + "value": "141024" + }, + { + "label": "古县", + "value": "141025" + }, + { + "label": "安泽县", + "value": "141026" + }, + { + "label": "浮山县", + "value": "141027" + }, + { + "label": "吉县", + "value": "141028" + }, + { + "label": "乡宁县", + "value": "141029" + }, + { + "label": "大宁县", + "value": "141030" + }, + { + "label": "隰县", + "value": "141031" + }, + { + "label": "永和县", + "value": "141032" + }, + { + "label": "蒲县", + "value": "141033" + }, + { + "label": "汾西县", + "value": "141034" + }, + { + "label": "侯马市", + "value": "141081" + }, + { + "label": "霍州市", + "value": "141082" + } + ], + [{ + "label": "离石区", + "value": "141102" + }, + { + "label": "文水县", + "value": "141121" + }, + { + "label": "交城县", + "value": "141122" + }, + { + "label": "兴县", + "value": "141123" + }, + { + "label": "临县", + "value": "141124" + }, + { + "label": "柳林县", + "value": "141125" + }, + { + "label": "石楼县", + "value": "141126" + }, + { + "label": "岚县", + "value": "141127" + }, + { + "label": "方山县", + "value": "141128" + }, + { + "label": "中阳县", + "value": "141129" + }, + { + "label": "交口县", + "value": "141130" + }, + { + "label": "孝义市", + "value": "141181" + }, + { + "label": "汾阳市", + "value": "141182" + } + ] + ], + [ + [{ + "label": "新城区", + "value": "150102" + }, + { + "label": "回民区", + "value": "150103" + }, + { + "label": "玉泉区", + "value": "150104" + }, + { + "label": "赛罕区", + "value": "150105" + }, + { + "label": "土默特左旗", + "value": "150121" + }, + { + "label": "托克托县", + "value": "150122" + }, + { + "label": "和林格尔县", + "value": "150123" + }, + { + "label": "清水河县", + "value": "150124" + }, + { + "label": "武川县", + "value": "150125" + }, + { + "label": "呼和浩特金海工业园区", + "value": "150171" + }, + { + "label": "呼和浩特经济技术开发区", + "value": "150172" + } + ], + [{ + "label": "东河区", + "value": "150202" + }, + { + "label": "昆都仑区", + "value": "150203" + }, + { + "label": "青山区", + "value": "150204" + }, + { + "label": "石拐区", + "value": "150205" + }, + { + "label": "白云鄂博矿区", + "value": "150206" + }, + { + "label": "九原区", + "value": "150207" + }, + { + "label": "土默特右旗", + "value": "150221" + }, + { + "label": "固阳县", + "value": "150222" + }, + { + "label": "达尔罕茂明安联合旗", + "value": "150223" + }, + { + "label": "包头稀土高新技术产业开发区", + "value": "150271" + } + ], + [{ + "label": "海勃湾区", + "value": "150302" + }, + { + "label": "海南区", + "value": "150303" + }, + { + "label": "乌达区", + "value": "150304" + } + ], + [{ + "label": "红山区", + "value": "150402" + }, + { + "label": "元宝山区", + "value": "150403" + }, + { + "label": "松山区", + "value": "150404" + }, + { + "label": "阿鲁科尔沁旗", + "value": "150421" + }, + { + "label": "巴林左旗", + "value": "150422" + }, + { + "label": "巴林右旗", + "value": "150423" + }, + { + "label": "林西县", + "value": "150424" + }, + { + "label": "克什克腾旗", + "value": "150425" + }, + { + "label": "翁牛特旗", + "value": "150426" + }, + { + "label": "喀喇沁旗", + "value": "150428" + }, + { + "label": "宁城县", + "value": "150429" + }, + { + "label": "敖汉旗", + "value": "150430" + } + ], + [{ + "label": "科尔沁区", + "value": "150502" + }, + { + "label": "科尔沁左翼中旗", + "value": "150521" + }, + { + "label": "科尔沁左翼后旗", + "value": "150522" + }, + { + "label": "开鲁县", + "value": "150523" + }, + { + "label": "库伦旗", + "value": "150524" + }, + { + "label": "奈曼旗", + "value": "150525" + }, + { + "label": "扎鲁特旗", + "value": "150526" + }, + { + "label": "通辽经济技术开发区", + "value": "150571" + }, + { + "label": "霍林郭勒市", + "value": "150581" + } + ], + [{ + "label": "东胜区", + "value": "150602" + }, + { + "label": "康巴什区", + "value": "150603" + }, + { + "label": "达拉特旗", + "value": "150621" + }, + { + "label": "准格尔旗", + "value": "150622" + }, + { + "label": "鄂托克前旗", + "value": "150623" + }, + { + "label": "鄂托克旗", + "value": "150624" + }, + { + "label": "杭锦旗", + "value": "150625" + }, + { + "label": "乌审旗", + "value": "150626" + }, + { + "label": "伊金霍洛旗", + "value": "150627" + } + ], + [{ + "label": "海拉尔区", + "value": "150702" + }, + { + "label": "扎赉诺尔区", + "value": "150703" + }, + { + "label": "阿荣旗", + "value": "150721" + }, + { + "label": "莫力达瓦达斡尔族自治旗", + "value": "150722" + }, + { + "label": "鄂伦春自治旗", + "value": "150723" + }, + { + "label": "鄂温克族自治旗", + "value": "150724" + }, + { + "label": "陈巴尔虎旗", + "value": "150725" + }, + { + "label": "新巴尔虎左旗", + "value": "150726" + }, + { + "label": "新巴尔虎右旗", + "value": "150727" + }, + { + "label": "满洲里市", + "value": "150781" + }, + { + "label": "牙克石市", + "value": "150782" + }, + { + "label": "扎兰屯市", + "value": "150783" + }, + { + "label": "额尔古纳市", + "value": "150784" + }, + { + "label": "根河市", + "value": "150785" + } + ], + [{ + "label": "临河区", + "value": "150802" + }, + { + "label": "五原县", + "value": "150821" + }, + { + "label": "磴口县", + "value": "150822" + }, + { + "label": "乌拉特前旗", + "value": "150823" + }, + { + "label": "乌拉特中旗", + "value": "150824" + }, + { + "label": "乌拉特后旗", + "value": "150825" + }, + { + "label": "杭锦后旗", + "value": "150826" + } + ], + [{ + "label": "集宁区", + "value": "150902" + }, + { + "label": "卓资县", + "value": "150921" + }, + { + "label": "化德县", + "value": "150922" + }, + { + "label": "商都县", + "value": "150923" + }, + { + "label": "兴和县", + "value": "150924" + }, + { + "label": "凉城县", + "value": "150925" + }, + { + "label": "察哈尔右翼前旗", + "value": "150926" + }, + { + "label": "察哈尔右翼中旗", + "value": "150927" + }, + { + "label": "察哈尔右翼后旗", + "value": "150928" + }, + { + "label": "四子王旗", + "value": "150929" + }, + { + "label": "丰镇市", + "value": "150981" + } + ], + [{ + "label": "乌兰浩特市", + "value": "152201" + }, + { + "label": "阿尔山市", + "value": "152202" + }, + { + "label": "科尔沁右翼前旗", + "value": "152221" + }, + { + "label": "科尔沁右翼中旗", + "value": "152222" + }, + { + "label": "扎赉特旗", + "value": "152223" + }, + { + "label": "突泉县", + "value": "152224" + } + ], + [{ + "label": "二连浩特市", + "value": "152501" + }, + { + "label": "锡林浩特市", + "value": "152502" + }, + { + "label": "阿巴嘎旗", + "value": "152522" + }, + { + "label": "苏尼特左旗", + "value": "152523" + }, + { + "label": "苏尼特右旗", + "value": "152524" + }, + { + "label": "东乌珠穆沁旗", + "value": "152525" + }, + { + "label": "西乌珠穆沁旗", + "value": "152526" + }, + { + "label": "太仆寺旗", + "value": "152527" + }, + { + "label": "镶黄旗", + "value": "152528" + }, + { + "label": "正镶白旗", + "value": "152529" + }, + { + "label": "正蓝旗", + "value": "152530" + }, + { + "label": "多伦县", + "value": "152531" + }, + { + "label": "乌拉盖管委会", + "value": "152571" + } + ], + [{ + "label": "阿拉善左旗", + "value": "152921" + }, + { + "label": "阿拉善右旗", + "value": "152922" + }, + { + "label": "额济纳旗", + "value": "152923" + }, + { + "label": "内蒙古阿拉善经济开发区", + "value": "152971" + } + ] + ], + [ + [{ + "label": "和平区", + "value": "210102" + }, + { + "label": "沈河区", + "value": "210103" + }, + { + "label": "大东区", + "value": "210104" + }, + { + "label": "皇姑区", + "value": "210105" + }, + { + "label": "铁西区", + "value": "210106" + }, + { + "label": "苏家屯区", + "value": "210111" + }, + { + "label": "浑南区", + "value": "210112" + }, + { + "label": "沈北新区", + "value": "210113" + }, + { + "label": "于洪区", + "value": "210114" + }, + { + "label": "辽中区", + "value": "210115" + }, + { + "label": "康平县", + "value": "210123" + }, + { + "label": "法库县", + "value": "210124" + }, + { + "label": "新民市", + "value": "210181" + } + ], + [{ + "label": "中山区", + "value": "210202" + }, + { + "label": "西岗区", + "value": "210203" + }, + { + "label": "沙河口区", + "value": "210204" + }, + { + "label": "甘井子区", + "value": "210211" + }, + { + "label": "旅顺口区", + "value": "210212" + }, + { + "label": "金州区", + "value": "210213" + }, + { + "label": "普兰店区", + "value": "210214" + }, + { + "label": "长海县", + "value": "210224" + }, + { + "label": "瓦房店市", + "value": "210281" + }, + { + "label": "庄河市", + "value": "210283" + } + ], + [{ + "label": "铁东区", + "value": "210302" + }, + { + "label": "铁西区", + "value": "210303" + }, + { + "label": "立山区", + "value": "210304" + }, + { + "label": "千山区", + "value": "210311" + }, + { + "label": "台安县", + "value": "210321" + }, + { + "label": "岫岩满族自治县", + "value": "210323" + }, + { + "label": "海城市", + "value": "210381" + } + ], + [{ + "label": "新抚区", + "value": "210402" + }, + { + "label": "东洲区", + "value": "210403" + }, + { + "label": "望花区", + "value": "210404" + }, + { + "label": "顺城区", + "value": "210411" + }, + { + "label": "抚顺县", + "value": "210421" + }, + { + "label": "新宾满族自治县", + "value": "210422" + }, + { + "label": "清原满族自治县", + "value": "210423" + } + ], + [{ + "label": "平山区", + "value": "210502" + }, + { + "label": "溪湖区", + "value": "210503" + }, + { + "label": "明山区", + "value": "210504" + }, + { + "label": "南芬区", + "value": "210505" + }, + { + "label": "本溪满族自治县", + "value": "210521" + }, + { + "label": "桓仁满族自治县", + "value": "210522" + } + ], + [{ + "label": "元宝区", + "value": "210602" + }, + { + "label": "振兴区", + "value": "210603" + }, + { + "label": "振安区", + "value": "210604" + }, + { + "label": "宽甸满族自治县", + "value": "210624" + }, + { + "label": "东港市", + "value": "210681" + }, + { + "label": "凤城市", + "value": "210682" + } + ], + [{ + "label": "古塔区", + "value": "210702" + }, + { + "label": "凌河区", + "value": "210703" + }, + { + "label": "太和区", + "value": "210711" + }, + { + "label": "黑山县", + "value": "210726" + }, + { + "label": "义县", + "value": "210727" + }, + { + "label": "凌海市", + "value": "210781" + }, + { + "label": "北镇市", + "value": "210782" + } + ], + [{ + "label": "站前区", + "value": "210802" + }, + { + "label": "西市区", + "value": "210803" + }, + { + "label": "鲅鱼圈区", + "value": "210804" + }, + { + "label": "老边区", + "value": "210811" + }, + { + "label": "盖州市", + "value": "210881" + }, + { + "label": "大石桥市", + "value": "210882" + } + ], + [{ + "label": "海州区", + "value": "210902" + }, + { + "label": "新邱区", + "value": "210903" + }, + { + "label": "太平区", + "value": "210904" + }, + { + "label": "清河门区", + "value": "210905" + }, + { + "label": "细河区", + "value": "210911" + }, + { + "label": "阜新蒙古族自治县", + "value": "210921" + }, + { + "label": "彰武县", + "value": "210922" + } + ], + [{ + "label": "白塔区", + "value": "211002" + }, + { + "label": "文圣区", + "value": "211003" + }, + { + "label": "宏伟区", + "value": "211004" + }, + { + "label": "弓长岭区", + "value": "211005" + }, + { + "label": "太子河区", + "value": "211011" + }, + { + "label": "辽阳县", + "value": "211021" + }, + { + "label": "灯塔市", + "value": "211081" + } + ], + [{ + "label": "双台子区", + "value": "211102" + }, + { + "label": "兴隆台区", + "value": "211103" + }, + { + "label": "大洼区", + "value": "211104" + }, + { + "label": "盘山县", + "value": "211122" + } + ], + [{ + "label": "银州区", + "value": "211202" + }, + { + "label": "清河区", + "value": "211204" + }, + { + "label": "铁岭县", + "value": "211221" + }, + { + "label": "西丰县", + "value": "211223" + }, + { + "label": "昌图县", + "value": "211224" + }, + { + "label": "调兵山市", + "value": "211281" + }, + { + "label": "开原市", + "value": "211282" + } + ], + [{ + "label": "双塔区", + "value": "211302" + }, + { + "label": "龙城区", + "value": "211303" + }, + { + "label": "朝阳县", + "value": "211321" + }, + { + "label": "建平县", + "value": "211322" + }, + { + "label": "喀喇沁左翼蒙古族自治县", + "value": "211324" + }, + { + "label": "北票市", + "value": "211381" + }, + { + "label": "凌源市", + "value": "211382" + } + ], + [{ + "label": "连山区", + "value": "211402" + }, + { + "label": "龙港区", + "value": "211403" + }, + { + "label": "南票区", + "value": "211404" + }, + { + "label": "绥中县", + "value": "211421" + }, + { + "label": "建昌县", + "value": "211422" + }, + { + "label": "兴城市", + "value": "211481" + } + ] + ], + [ + [{ + "label": "南关区", + "value": "220102" + }, + { + "label": "宽城区", + "value": "220103" + }, + { + "label": "朝阳区", + "value": "220104" + }, + { + "label": "二道区", + "value": "220105" + }, + { + "label": "绿园区", + "value": "220106" + }, + { + "label": "双阳区", + "value": "220112" + }, + { + "label": "九台区", + "value": "220113" + }, + { + "label": "农安县", + "value": "220122" + }, + { + "label": "长春经济技术开发区", + "value": "220171" + }, + { + "label": "长春净月高新技术产业开发区", + "value": "220172" + }, + { + "label": "长春高新技术产业开发区", + "value": "220173" + }, + { + "label": "长春汽车经济技术开发区", + "value": "220174" + }, + { + "label": "榆树市", + "value": "220182" + }, + { + "label": "德惠市", + "value": "220183" + } + ], + [{ + "label": "昌邑区", + "value": "220202" + }, + { + "label": "龙潭区", + "value": "220203" + }, + { + "label": "船营区", + "value": "220204" + }, + { + "label": "丰满区", + "value": "220211" + }, + { + "label": "永吉县", + "value": "220221" + }, + { + "label": "吉林经济开发区", + "value": "220271" + }, + { + "label": "吉林高新技术产业开发区", + "value": "220272" + }, + { + "label": "吉林中国新加坡食品区", + "value": "220273" + }, + { + "label": "蛟河市", + "value": "220281" + }, + { + "label": "桦甸市", + "value": "220282" + }, + { + "label": "舒兰市", + "value": "220283" + }, + { + "label": "磐石市", + "value": "220284" + } + ], + [{ + "label": "铁西区", + "value": "220302" + }, + { + "label": "铁东区", + "value": "220303" + }, + { + "label": "梨树县", + "value": "220322" + }, + { + "label": "伊通满族自治县", + "value": "220323" + }, + { + "label": "公主岭市", + "value": "220381" + }, + { + "label": "双辽市", + "value": "220382" + } + ], + [{ + "label": "龙山区", + "value": "220402" + }, + { + "label": "西安区", + "value": "220403" + }, + { + "label": "东丰县", + "value": "220421" + }, + { + "label": "东辽县", + "value": "220422" + } + ], + [{ + "label": "东昌区", + "value": "220502" + }, + { + "label": "二道江区", + "value": "220503" + }, + { + "label": "通化县", + "value": "220521" + }, + { + "label": "辉南县", + "value": "220523" + }, + { + "label": "柳河县", + "value": "220524" + }, + { + "label": "梅河口市", + "value": "220581" + }, + { + "label": "集安市", + "value": "220582" + } + ], + [{ + "label": "浑江区", + "value": "220602" + }, + { + "label": "江源区", + "value": "220605" + }, + { + "label": "抚松县", + "value": "220621" + }, + { + "label": "靖宇县", + "value": "220622" + }, + { + "label": "长白朝鲜族自治县", + "value": "220623" + }, + { + "label": "临江市", + "value": "220681" + } + ], + [{ + "label": "宁江区", + "value": "220702" + }, + { + "label": "前郭尔罗斯蒙古族自治县", + "value": "220721" + }, + { + "label": "长岭县", + "value": "220722" + }, + { + "label": "乾安县", + "value": "220723" + }, + { + "label": "吉林松原经济开发区", + "value": "220771" + }, + { + "label": "扶余市", + "value": "220781" + } + ], + [{ + "label": "洮北区", + "value": "220802" + }, + { + "label": "镇赉县", + "value": "220821" + }, + { + "label": "通榆县", + "value": "220822" + }, + { + "label": "吉林白城经济开发区", + "value": "220871" + }, + { + "label": "洮南市", + "value": "220881" + }, + { + "label": "大安市", + "value": "220882" + } + ], + [{ + "label": "延吉市", + "value": "222401" + }, + { + "label": "图们市", + "value": "222402" + }, + { + "label": "敦化市", + "value": "222403" + }, + { + "label": "珲春市", + "value": "222404" + }, + { + "label": "龙井市", + "value": "222405" + }, + { + "label": "和龙市", + "value": "222406" + }, + { + "label": "汪清县", + "value": "222424" + }, + { + "label": "安图县", + "value": "222426" + } + ] + ], + [ + [{ + "label": "道里区", + "value": "230102" + }, + { + "label": "南岗区", + "value": "230103" + }, + { + "label": "道外区", + "value": "230104" + }, + { + "label": "平房区", + "value": "230108" + }, + { + "label": "松北区", + "value": "230109" + }, + { + "label": "香坊区", + "value": "230110" + }, + { + "label": "呼兰区", + "value": "230111" + }, + { + "label": "阿城区", + "value": "230112" + }, + { + "label": "双城区", + "value": "230113" + }, + { + "label": "依兰县", + "value": "230123" + }, + { + "label": "方正县", + "value": "230124" + }, + { + "label": "宾县", + "value": "230125" + }, + { + "label": "巴彦县", + "value": "230126" + }, + { + "label": "木兰县", + "value": "230127" + }, + { + "label": "通河县", + "value": "230128" + }, + { + "label": "延寿县", + "value": "230129" + }, + { + "label": "尚志市", + "value": "230183" + }, + { + "label": "五常市", + "value": "230184" + } + ], + [{ + "label": "龙沙区", + "value": "230202" + }, + { + "label": "建华区", + "value": "230203" + }, + { + "label": "铁锋区", + "value": "230204" + }, + { + "label": "昂昂溪区", + "value": "230205" + }, + { + "label": "富拉尔基区", + "value": "230206" + }, + { + "label": "碾子山区", + "value": "230207" + }, + { + "label": "梅里斯达斡尔族区", + "value": "230208" + }, + { + "label": "龙江县", + "value": "230221" + }, + { + "label": "依安县", + "value": "230223" + }, + { + "label": "泰来县", + "value": "230224" + }, + { + "label": "甘南县", + "value": "230225" + }, + { + "label": "富裕县", + "value": "230227" + }, + { + "label": "克山县", + "value": "230229" + }, + { + "label": "克东县", + "value": "230230" + }, + { + "label": "拜泉县", + "value": "230231" + }, + { + "label": "讷河市", + "value": "230281" + } + ], + [{ + "label": "鸡冠区", + "value": "230302" + }, + { + "label": "恒山区", + "value": "230303" + }, + { + "label": "滴道区", + "value": "230304" + }, + { + "label": "梨树区", + "value": "230305" + }, + { + "label": "城子河区", + "value": "230306" + }, + { + "label": "麻山区", + "value": "230307" + }, + { + "label": "鸡东县", + "value": "230321" + }, + { + "label": "虎林市", + "value": "230381" + }, + { + "label": "密山市", + "value": "230382" + } + ], + [{ + "label": "向阳区", + "value": "230402" + }, + { + "label": "工农区", + "value": "230403" + }, + { + "label": "南山区", + "value": "230404" + }, + { + "label": "兴安区", + "value": "230405" + }, + { + "label": "东山区", + "value": "230406" + }, + { + "label": "兴山区", + "value": "230407" + }, + { + "label": "萝北县", + "value": "230421" + }, + { + "label": "绥滨县", + "value": "230422" + } + ], + [{ + "label": "尖山区", + "value": "230502" + }, + { + "label": "岭东区", + "value": "230503" + }, + { + "label": "四方台区", + "value": "230505" + }, + { + "label": "宝山区", + "value": "230506" + }, + { + "label": "集贤县", + "value": "230521" + }, + { + "label": "友谊县", + "value": "230522" + }, + { + "label": "宝清县", + "value": "230523" + }, + { + "label": "饶河县", + "value": "230524" + } + ], + [{ + "label": "萨尔图区", + "value": "230602" + }, + { + "label": "龙凤区", + "value": "230603" + }, + { + "label": "让胡路区", + "value": "230604" + }, + { + "label": "红岗区", + "value": "230605" + }, + { + "label": "大同区", + "value": "230606" + }, + { + "label": "肇州县", + "value": "230621" + }, + { + "label": "肇源县", + "value": "230622" + }, + { + "label": "林甸县", + "value": "230623" + }, + { + "label": "杜尔伯特蒙古族自治县", + "value": "230624" + }, + { + "label": "大庆高新技术产业开发区", + "value": "230671" + } + ], + [{ + "label": "伊春区", + "value": "230702" + }, + { + "label": "南岔区", + "value": "230703" + }, + { + "label": "友好区", + "value": "230704" + }, + { + "label": "西林区", + "value": "230705" + }, + { + "label": "翠峦区", + "value": "230706" + }, + { + "label": "新青区", + "value": "230707" + }, + { + "label": "美溪区", + "value": "230708" + }, + { + "label": "金山屯区", + "value": "230709" + }, + { + "label": "五营区", + "value": "230710" + }, + { + "label": "乌马河区", + "value": "230711" + }, + { + "label": "汤旺河区", + "value": "230712" + }, + { + "label": "带岭区", + "value": "230713" + }, + { + "label": "乌伊岭区", + "value": "230714" + }, + { + "label": "红星区", + "value": "230715" + }, + { + "label": "上甘岭区", + "value": "230716" + }, + { + "label": "嘉荫县", + "value": "230722" + }, + { + "label": "铁力市", + "value": "230781" + } + ], + [{ + "label": "向阳区", + "value": "230803" + }, + { + "label": "前进区", + "value": "230804" + }, + { + "label": "东风区", + "value": "230805" + }, + { + "label": "郊区", + "value": "230811" + }, + { + "label": "桦南县", + "value": "230822" + }, + { + "label": "桦川县", + "value": "230826" + }, + { + "label": "汤原县", + "value": "230828" + }, + { + "label": "同江市", + "value": "230881" + }, + { + "label": "富锦市", + "value": "230882" + }, + { + "label": "抚远市", + "value": "230883" + } + ], + [{ + "label": "新兴区", + "value": "230902" + }, + { + "label": "桃山区", + "value": "230903" + }, + { + "label": "茄子河区", + "value": "230904" + }, + { + "label": "勃利县", + "value": "230921" + } + ], + [{ + "label": "东安区", + "value": "231002" + }, + { + "label": "阳明区", + "value": "231003" + }, + { + "label": "爱民区", + "value": "231004" + }, + { + "label": "西安区", + "value": "231005" + }, + { + "label": "林口县", + "value": "231025" + }, + { + "label": "牡丹江经济技术开发区", + "value": "231071" + }, + { + "label": "绥芬河市", + "value": "231081" + }, + { + "label": "海林市", + "value": "231083" + }, + { + "label": "宁安市", + "value": "231084" + }, + { + "label": "穆棱市", + "value": "231085" + }, + { + "label": "东宁市", + "value": "231086" + } + ], + [{ + "label": "爱辉区", + "value": "231102" + }, + { + "label": "嫩江县", + "value": "231121" + }, + { + "label": "逊克县", + "value": "231123" + }, + { + "label": "孙吴县", + "value": "231124" + }, + { + "label": "北安市", + "value": "231181" + }, + { + "label": "五大连池市", + "value": "231182" + } + ], + [{ + "label": "北林区", + "value": "231202" + }, + { + "label": "望奎县", + "value": "231221" + }, + { + "label": "兰西县", + "value": "231222" + }, + { + "label": "青冈县", + "value": "231223" + }, + { + "label": "庆安县", + "value": "231224" + }, + { + "label": "明水县", + "value": "231225" + }, + { + "label": "绥棱县", + "value": "231226" + }, + { + "label": "安达市", + "value": "231281" + }, + { + "label": "肇东市", + "value": "231282" + }, + { + "label": "海伦市", + "value": "231283" + } + ], + [{ + "label": "加格达奇区", + "value": "232701" + }, + { + "label": "松岭区", + "value": "232702" + }, + { + "label": "新林区", + "value": "232703" + }, + { + "label": "呼中区", + "value": "232704" + }, + { + "label": "呼玛县", + "value": "232721" + }, + { + "label": "塔河县", + "value": "232722" + }, + { + "label": "漠河县", + "value": "232723" + } + ] + ], + [ + [{ + "label": "黄浦区", + "value": "310101" + }, + { + "label": "徐汇区", + "value": "310104" + }, + { + "label": "长宁区", + "value": "310105" + }, + { + "label": "静安区", + "value": "310106" + }, + { + "label": "普陀区", + "value": "310107" + }, + { + "label": "虹口区", + "value": "310109" + }, + { + "label": "杨浦区", + "value": "310110" + }, + { + "label": "闵行区", + "value": "310112" + }, + { + "label": "宝山区", + "value": "310113" + }, + { + "label": "嘉定区", + "value": "310114" + }, + { + "label": "浦东新区", + "value": "310115" + }, + { + "label": "金山区", + "value": "310116" + }, + { + "label": "松江区", + "value": "310117" + }, + { + "label": "青浦区", + "value": "310118" + }, + { + "label": "奉贤区", + "value": "310120" + }, + { + "label": "崇明区", + "value": "310151" + } + ] + ], + [ + [{ + "label": "玄武区", + "value": "320102" + }, + { + "label": "秦淮区", + "value": "320104" + }, + { + "label": "建邺区", + "value": "320105" + }, + { + "label": "鼓楼区", + "value": "320106" + }, + { + "label": "浦口区", + "value": "320111" + }, + { + "label": "栖霞区", + "value": "320113" + }, + { + "label": "雨花台区", + "value": "320114" + }, + { + "label": "江宁区", + "value": "320115" + }, + { + "label": "六合区", + "value": "320116" + }, + { + "label": "溧水区", + "value": "320117" + }, + { + "label": "高淳区", + "value": "320118" + } + ], + [{ + "label": "锡山区", + "value": "320205" + }, + { + "label": "惠山区", + "value": "320206" + }, + { + "label": "滨湖区", + "value": "320211" + }, + { + "label": "梁溪区", + "value": "320213" + }, + { + "label": "新吴区", + "value": "320214" + }, + { + "label": "江阴市", + "value": "320281" + }, + { + "label": "宜兴市", + "value": "320282" + } + ], + [{ + "label": "鼓楼区", + "value": "320302" + }, + { + "label": "云龙区", + "value": "320303" + }, + { + "label": "贾汪区", + "value": "320305" + }, + { + "label": "泉山区", + "value": "320311" + }, + { + "label": "铜山区", + "value": "320312" + }, + { + "label": "丰县", + "value": "320321" + }, + { + "label": "沛县", + "value": "320322" + }, + { + "label": "睢宁县", + "value": "320324" + }, + { + "label": "徐州经济技术开发区", + "value": "320371" + }, + { + "label": "新沂市", + "value": "320381" + }, + { + "label": "邳州市", + "value": "320382" + } + ], + [{ + "label": "天宁区", + "value": "320402" + }, + { + "label": "钟楼区", + "value": "320404" + }, + { + "label": "新北区", + "value": "320411" + }, + { + "label": "武进区", + "value": "320412" + }, + { + "label": "金坛区", + "value": "320413" + }, + { + "label": "溧阳市", + "value": "320481" + } + ], + [{ + "label": "虎丘区", + "value": "320505" + }, + { + "label": "吴中区", + "value": "320506" + }, + { + "label": "相城区", + "value": "320507" + }, + { + "label": "姑苏区", + "value": "320508" + }, + { + "label": "吴江区", + "value": "320509" + }, + { + "label": "苏州工业园区", + "value": "320571" + }, + { + "label": "常熟市", + "value": "320581" + }, + { + "label": "张家港市", + "value": "320582" + }, + { + "label": "昆山市", + "value": "320583" + }, + { + "label": "太仓市", + "value": "320585" + } + ], + [{ + "label": "崇川区", + "value": "320602" + }, + { + "label": "港闸区", + "value": "320611" + }, + { + "label": "通州区", + "value": "320612" + }, + { + "label": "海安县", + "value": "320621" + }, + { + "label": "如东县", + "value": "320623" + }, + { + "label": "南通经济技术开发区", + "value": "320671" + }, + { + "label": "启东市", + "value": "320681" + }, + { + "label": "如皋市", + "value": "320682" + }, + { + "label": "海门市", + "value": "320684" + } + ], + [{ + "label": "连云区", + "value": "320703" + }, + { + "label": "海州区", + "value": "320706" + }, + { + "label": "赣榆区", + "value": "320707" + }, + { + "label": "东海县", + "value": "320722" + }, + { + "label": "灌云县", + "value": "320723" + }, + { + "label": "灌南县", + "value": "320724" + }, + { + "label": "连云港经济技术开发区", + "value": "320771" + }, + { + "label": "连云港高新技术产业开发区", + "value": "320772" + } + ], + [{ + "label": "淮安区", + "value": "320803" + }, + { + "label": "淮阴区", + "value": "320804" + }, + { + "label": "清江浦区", + "value": "320812" + }, + { + "label": "洪泽区", + "value": "320813" + }, + { + "label": "涟水县", + "value": "320826" + }, + { + "label": "盱眙县", + "value": "320830" + }, + { + "label": "金湖县", + "value": "320831" + }, + { + "label": "淮安经济技术开发区", + "value": "320871" + } + ], + [{ + "label": "亭湖区", + "value": "320902" + }, + { + "label": "盐都区", + "value": "320903" + }, + { + "label": "大丰区", + "value": "320904" + }, + { + "label": "响水县", + "value": "320921" + }, + { + "label": "滨海县", + "value": "320922" + }, + { + "label": "阜宁县", + "value": "320923" + }, + { + "label": "射阳县", + "value": "320924" + }, + { + "label": "建湖县", + "value": "320925" + }, + { + "label": "盐城经济技术开发区", + "value": "320971" + }, + { + "label": "东台市", + "value": "320981" + } + ], + [{ + "label": "广陵区", + "value": "321002" + }, + { + "label": "邗江区", + "value": "321003" + }, + { + "label": "江都区", + "value": "321012" + }, + { + "label": "宝应县", + "value": "321023" + }, + { + "label": "扬州经济技术开发区", + "value": "321071" + }, + { + "label": "仪征市", + "value": "321081" + }, + { + "label": "高邮市", + "value": "321084" + } + ], + [{ + "label": "京口区", + "value": "321102" + }, + { + "label": "润州区", + "value": "321111" + }, + { + "label": "丹徒区", + "value": "321112" + }, + { + "label": "镇江新区", + "value": "321171" + }, + { + "label": "丹阳市", + "value": "321181" + }, + { + "label": "扬中市", + "value": "321182" + }, + { + "label": "句容市", + "value": "321183" + } + ], + [{ + "label": "海陵区", + "value": "321202" + }, + { + "label": "高港区", + "value": "321203" + }, + { + "label": "姜堰区", + "value": "321204" + }, + { + "label": "泰州医药高新技术产业开发区", + "value": "321271" + }, + { + "label": "兴化市", + "value": "321281" + }, + { + "label": "靖江市", + "value": "321282" + }, + { + "label": "泰兴市", + "value": "321283" + } + ], + [{ + "label": "宿城区", + "value": "321302" + }, + { + "label": "宿豫区", + "value": "321311" + }, + { + "label": "沭阳县", + "value": "321322" + }, + { + "label": "泗阳县", + "value": "321323" + }, + { + "label": "泗洪县", + "value": "321324" + }, + { + "label": "宿迁经济技术开发区", + "value": "321371" + } + ] + ], + [ + [{ + "label": "上城区", + "value": "330102" + }, + { + "label": "下城区", + "value": "330103" + }, + { + "label": "江干区", + "value": "330104" + }, + { + "label": "拱墅区", + "value": "330105" + }, + { + "label": "西湖区", + "value": "330106" + }, + { + "label": "滨江区", + "value": "330108" + }, + { + "label": "萧山区", + "value": "330109" + }, + { + "label": "余杭区", + "value": "330110" + }, + { + "label": "富阳区", + "value": "330111" + }, + { + "label": "临安区", + "value": "330112" + }, + { + "label": "桐庐县", + "value": "330122" + }, + { + "label": "淳安县", + "value": "330127" + }, + { + "label": "建德市", + "value": "330182" + } + ], + [{ + "label": "海曙区", + "value": "330203" + }, + { + "label": "江北区", + "value": "330205" + }, + { + "label": "北仑区", + "value": "330206" + }, + { + "label": "镇海区", + "value": "330211" + }, + { + "label": "鄞州区", + "value": "330212" + }, + { + "label": "奉化区", + "value": "330213" + }, + { + "label": "象山县", + "value": "330225" + }, + { + "label": "宁海县", + "value": "330226" + }, + { + "label": "余姚市", + "value": "330281" + }, + { + "label": "慈溪市", + "value": "330282" + } + ], + [{ + "label": "鹿城区", + "value": "330302" + }, + { + "label": "龙湾区", + "value": "330303" + }, + { + "label": "瓯海区", + "value": "330304" + }, + { + "label": "洞头区", + "value": "330305" + }, + { + "label": "永嘉县", + "value": "330324" + }, + { + "label": "平阳县", + "value": "330326" + }, + { + "label": "苍南县", + "value": "330327" + }, + { + "label": "文成县", + "value": "330328" + }, + { + "label": "泰顺县", + "value": "330329" + }, + { + "label": "温州经济技术开发区", + "value": "330371" + }, + { + "label": "瑞安市", + "value": "330381" + }, + { + "label": "乐清市", + "value": "330382" + } + ], + [{ + "label": "南湖区", + "value": "330402" + }, + { + "label": "秀洲区", + "value": "330411" + }, + { + "label": "嘉善县", + "value": "330421" + }, + { + "label": "海盐县", + "value": "330424" + }, + { + "label": "海宁市", + "value": "330481" + }, + { + "label": "平湖市", + "value": "330482" + }, + { + "label": "桐乡市", + "value": "330483" + } + ], + [{ + "label": "吴兴区", + "value": "330502" + }, + { + "label": "南浔区", + "value": "330503" + }, + { + "label": "德清县", + "value": "330521" + }, + { + "label": "长兴县", + "value": "330522" + }, + { + "label": "安吉县", + "value": "330523" + } + ], + [{ + "label": "越城区", + "value": "330602" + }, + { + "label": "柯桥区", + "value": "330603" + }, + { + "label": "上虞区", + "value": "330604" + }, + { + "label": "新昌县", + "value": "330624" + }, + { + "label": "诸暨市", + "value": "330681" + }, + { + "label": "嵊州市", + "value": "330683" + } + ], + [{ + "label": "婺城区", + "value": "330702" + }, + { + "label": "金东区", + "value": "330703" + }, + { + "label": "武义县", + "value": "330723" + }, + { + "label": "浦江县", + "value": "330726" + }, + { + "label": "磐安县", + "value": "330727" + }, + { + "label": "兰溪市", + "value": "330781" + }, + { + "label": "义乌市", + "value": "330782" + }, + { + "label": "东阳市", + "value": "330783" + }, + { + "label": "永康市", + "value": "330784" + } + ], + [{ + "label": "柯城区", + "value": "330802" + }, + { + "label": "衢江区", + "value": "330803" + }, + { + "label": "常山县", + "value": "330822" + }, + { + "label": "开化县", + "value": "330824" + }, + { + "label": "龙游县", + "value": "330825" + }, + { + "label": "江山市", + "value": "330881" + } + ], + [{ + "label": "定海区", + "value": "330902" + }, + { + "label": "普陀区", + "value": "330903" + }, + { + "label": "岱山县", + "value": "330921" + }, + { + "label": "嵊泗县", + "value": "330922" + } + ], + [{ + "label": "椒江区", + "value": "331002" + }, + { + "label": "黄岩区", + "value": "331003" + }, + { + "label": "路桥区", + "value": "331004" + }, + { + "label": "三门县", + "value": "331022" + }, + { + "label": "天台县", + "value": "331023" + }, + { + "label": "仙居县", + "value": "331024" + }, + { + "label": "温岭市", + "value": "331081" + }, + { + "label": "临海市", + "value": "331082" + }, + { + "label": "玉环市", + "value": "331083" + } + ], + [{ + "label": "莲都区", + "value": "331102" + }, + { + "label": "青田县", + "value": "331121" + }, + { + "label": "缙云县", + "value": "331122" + }, + { + "label": "遂昌县", + "value": "331123" + }, + { + "label": "松阳县", + "value": "331124" + }, + { + "label": "云和县", + "value": "331125" + }, + { + "label": "庆元县", + "value": "331126" + }, + { + "label": "景宁畲族自治县", + "value": "331127" + }, + { + "label": "龙泉市", + "value": "331181" + } + ] + ], + [ + [{ + "label": "瑶海区", + "value": "340102" + }, + { + "label": "庐阳区", + "value": "340103" + }, + { + "label": "蜀山区", + "value": "340104" + }, + { + "label": "包河区", + "value": "340111" + }, + { + "label": "长丰县", + "value": "340121" + }, + { + "label": "肥东县", + "value": "340122" + }, + { + "label": "肥西县", + "value": "340123" + }, + { + "label": "庐江县", + "value": "340124" + }, + { + "label": "合肥高新技术产业开发区", + "value": "340171" + }, + { + "label": "合肥经济技术开发区", + "value": "340172" + }, + { + "label": "合肥新站高新技术产业开发区", + "value": "340173" + }, + { + "label": "巢湖市", + "value": "340181" + } + ], + [{ + "label": "镜湖区", + "value": "340202" + }, + { + "label": "弋江区", + "value": "340203" + }, + { + "label": "鸠江区", + "value": "340207" + }, + { + "label": "三山区", + "value": "340208" + }, + { + "label": "芜湖县", + "value": "340221" + }, + { + "label": "繁昌县", + "value": "340222" + }, + { + "label": "南陵县", + "value": "340223" + }, + { + "label": "无为县", + "value": "340225" + }, + { + "label": "芜湖经济技术开发区", + "value": "340271" + }, + { + "label": "安徽芜湖长江大桥经济开发区", + "value": "340272" + } + ], + [{ + "label": "龙子湖区", + "value": "340302" + }, + { + "label": "蚌山区", + "value": "340303" + }, + { + "label": "禹会区", + "value": "340304" + }, + { + "label": "淮上区", + "value": "340311" + }, + { + "label": "怀远县", + "value": "340321" + }, + { + "label": "五河县", + "value": "340322" + }, + { + "label": "固镇县", + "value": "340323" + }, + { + "label": "蚌埠市高新技术开发区", + "value": "340371" + }, + { + "label": "蚌埠市经济开发区", + "value": "340372" + } + ], + [{ + "label": "大通区", + "value": "340402" + }, + { + "label": "田家庵区", + "value": "340403" + }, + { + "label": "谢家集区", + "value": "340404" + }, + { + "label": "八公山区", + "value": "340405" + }, + { + "label": "潘集区", + "value": "340406" + }, + { + "label": "凤台县", + "value": "340421" + }, + { + "label": "寿县", + "value": "340422" + } + ], + [{ + "label": "花山区", + "value": "340503" + }, + { + "label": "雨山区", + "value": "340504" + }, + { + "label": "博望区", + "value": "340506" + }, + { + "label": "当涂县", + "value": "340521" + }, + { + "label": "含山县", + "value": "340522" + }, + { + "label": "和县", + "value": "340523" + } + ], + [{ + "label": "杜集区", + "value": "340602" + }, + { + "label": "相山区", + "value": "340603" + }, + { + "label": "烈山区", + "value": "340604" + }, + { + "label": "濉溪县", + "value": "340621" + } + ], + [{ + "label": "铜官区", + "value": "340705" + }, + { + "label": "义安区", + "value": "340706" + }, + { + "label": "郊区", + "value": "340711" + }, + { + "label": "枞阳县", + "value": "340722" + } + ], + [{ + "label": "迎江区", + "value": "340802" + }, + { + "label": "大观区", + "value": "340803" + }, + { + "label": "宜秀区", + "value": "340811" + }, + { + "label": "怀宁县", + "value": "340822" + }, + { + "label": "潜山县", + "value": "340824" + }, + { + "label": "太湖县", + "value": "340825" + }, + { + "label": "宿松县", + "value": "340826" + }, + { + "label": "望江县", + "value": "340827" + }, + { + "label": "岳西县", + "value": "340828" + }, + { + "label": "安徽安庆经济开发区", + "value": "340871" + }, + { + "label": "桐城市", + "value": "340881" + } + ], + [{ + "label": "屯溪区", + "value": "341002" + }, + { + "label": "黄山区", + "value": "341003" + }, + { + "label": "徽州区", + "value": "341004" + }, + { + "label": "歙县", + "value": "341021" + }, + { + "label": "休宁县", + "value": "341022" + }, + { + "label": "黟县", + "value": "341023" + }, + { + "label": "祁门县", + "value": "341024" + } + ], + [{ + "label": "琅琊区", + "value": "341102" + }, + { + "label": "南谯区", + "value": "341103" + }, + { + "label": "来安县", + "value": "341122" + }, + { + "label": "全椒县", + "value": "341124" + }, + { + "label": "定远县", + "value": "341125" + }, + { + "label": "凤阳县", + "value": "341126" + }, + { + "label": "苏滁现代产业园", + "value": "341171" + }, + { + "label": "滁州经济技术开发区", + "value": "341172" + }, + { + "label": "天长市", + "value": "341181" + }, + { + "label": "明光市", + "value": "341182" + } + ], + [{ + "label": "颍州区", + "value": "341202" + }, + { + "label": "颍东区", + "value": "341203" + }, + { + "label": "颍泉区", + "value": "341204" + }, + { + "label": "临泉县", + "value": "341221" + }, + { + "label": "太和县", + "value": "341222" + }, + { + "label": "阜南县", + "value": "341225" + }, + { + "label": "颍上县", + "value": "341226" + }, + { + "label": "阜阳合肥现代产业园区", + "value": "341271" + }, + { + "label": "阜阳经济技术开发区", + "value": "341272" + }, + { + "label": "界首市", + "value": "341282" + } + ], + [{ + "label": "埇桥区", + "value": "341302" + }, + { + "label": "砀山县", + "value": "341321" + }, + { + "label": "萧县", + "value": "341322" + }, + { + "label": "灵璧县", + "value": "341323" + }, + { + "label": "泗县", + "value": "341324" + }, + { + "label": "宿州马鞍山现代产业园区", + "value": "341371" + }, + { + "label": "宿州经济技术开发区", + "value": "341372" + } + ], + [{ + "label": "金安区", + "value": "341502" + }, + { + "label": "裕安区", + "value": "341503" + }, + { + "label": "叶集区", + "value": "341504" + }, + { + "label": "霍邱县", + "value": "341522" + }, + { + "label": "舒城县", + "value": "341523" + }, + { + "label": "金寨县", + "value": "341524" + }, + { + "label": "霍山县", + "value": "341525" + } + ], + [{ + "label": "谯城区", + "value": "341602" + }, + { + "label": "涡阳县", + "value": "341621" + }, + { + "label": "蒙城县", + "value": "341622" + }, + { + "label": "利辛县", + "value": "341623" + } + ], + [{ + "label": "贵池区", + "value": "341702" + }, + { + "label": "东至县", + "value": "341721" + }, + { + "label": "石台县", + "value": "341722" + }, + { + "label": "青阳县", + "value": "341723" + } + ], + [{ + "label": "宣州区", + "value": "341802" + }, + { + "label": "郎溪县", + "value": "341821" + }, + { + "label": "广德县", + "value": "341822" + }, + { + "label": "泾县", + "value": "341823" + }, + { + "label": "绩溪县", + "value": "341824" + }, + { + "label": "旌德县", + "value": "341825" + }, + { + "label": "宣城市经济开发区", + "value": "341871" + }, + { + "label": "宁国市", + "value": "341881" + } + ] + ], + [ + [{ + "label": "鼓楼区", + "value": "350102" + }, + { + "label": "台江区", + "value": "350103" + }, + { + "label": "仓山区", + "value": "350104" + }, + { + "label": "马尾区", + "value": "350105" + }, + { + "label": "晋安区", + "value": "350111" + }, + { + "label": "闽侯县", + "value": "350121" + }, + { + "label": "连江县", + "value": "350122" + }, + { + "label": "罗源县", + "value": "350123" + }, + { + "label": "闽清县", + "value": "350124" + }, + { + "label": "永泰县", + "value": "350125" + }, + { + "label": "平潭县", + "value": "350128" + }, + { + "label": "福清市", + "value": "350181" + }, + { + "label": "长乐市", + "value": "350182" + } + ], + [{ + "label": "思明区", + "value": "350203" + }, + { + "label": "海沧区", + "value": "350205" + }, + { + "label": "湖里区", + "value": "350206" + }, + { + "label": "集美区", + "value": "350211" + }, + { + "label": "同安区", + "value": "350212" + }, + { + "label": "翔安区", + "value": "350213" + } + ], + [{ + "label": "城厢区", + "value": "350302" + }, + { + "label": "涵江区", + "value": "350303" + }, + { + "label": "荔城区", + "value": "350304" + }, + { + "label": "秀屿区", + "value": "350305" + }, + { + "label": "仙游县", + "value": "350322" + } + ], + [{ + "label": "梅列区", + "value": "350402" + }, + { + "label": "三元区", + "value": "350403" + }, + { + "label": "明溪县", + "value": "350421" + }, + { + "label": "清流县", + "value": "350423" + }, + { + "label": "宁化县", + "value": "350424" + }, + { + "label": "大田县", + "value": "350425" + }, + { + "label": "尤溪县", + "value": "350426" + }, + { + "label": "沙县", + "value": "350427" + }, + { + "label": "将乐县", + "value": "350428" + }, + { + "label": "泰宁县", + "value": "350429" + }, + { + "label": "建宁县", + "value": "350430" + }, + { + "label": "永安市", + "value": "350481" + } + ], + [{ + "label": "鲤城区", + "value": "350502" + }, + { + "label": "丰泽区", + "value": "350503" + }, + { + "label": "洛江区", + "value": "350504" + }, + { + "label": "泉港区", + "value": "350505" + }, + { + "label": "惠安县", + "value": "350521" + }, + { + "label": "安溪县", + "value": "350524" + }, + { + "label": "永春县", + "value": "350525" + }, + { + "label": "德化县", + "value": "350526" + }, + { + "label": "金门县", + "value": "350527" + }, + { + "label": "石狮市", + "value": "350581" + }, + { + "label": "晋江市", + "value": "350582" + }, + { + "label": "南安市", + "value": "350583" + } + ], + [{ + "label": "芗城区", + "value": "350602" + }, + { + "label": "龙文区", + "value": "350603" + }, + { + "label": "云霄县", + "value": "350622" + }, + { + "label": "漳浦县", + "value": "350623" + }, + { + "label": "诏安县", + "value": "350624" + }, + { + "label": "长泰县", + "value": "350625" + }, + { + "label": "东山县", + "value": "350626" + }, + { + "label": "南靖县", + "value": "350627" + }, + { + "label": "平和县", + "value": "350628" + }, + { + "label": "华安县", + "value": "350629" + }, + { + "label": "龙海市", + "value": "350681" + } + ], + [{ + "label": "延平区", + "value": "350702" + }, + { + "label": "建阳区", + "value": "350703" + }, + { + "label": "顺昌县", + "value": "350721" + }, + { + "label": "浦城县", + "value": "350722" + }, + { + "label": "光泽县", + "value": "350723" + }, + { + "label": "松溪县", + "value": "350724" + }, + { + "label": "政和县", + "value": "350725" + }, + { + "label": "邵武市", + "value": "350781" + }, + { + "label": "武夷山市", + "value": "350782" + }, + { + "label": "建瓯市", + "value": "350783" + } + ], + [{ + "label": "新罗区", + "value": "350802" + }, + { + "label": "永定区", + "value": "350803" + }, + { + "label": "长汀县", + "value": "350821" + }, + { + "label": "上杭县", + "value": "350823" + }, + { + "label": "武平县", + "value": "350824" + }, + { + "label": "连城县", + "value": "350825" + }, + { + "label": "漳平市", + "value": "350881" + } + ], + [{ + "label": "蕉城区", + "value": "350902" + }, + { + "label": "霞浦县", + "value": "350921" + }, + { + "label": "古田县", + "value": "350922" + }, + { + "label": "屏南县", + "value": "350923" + }, + { + "label": "寿宁县", + "value": "350924" + }, + { + "label": "周宁县", + "value": "350925" + }, + { + "label": "柘荣县", + "value": "350926" + }, + { + "label": "福安市", + "value": "350981" + }, + { + "label": "福鼎市", + "value": "350982" + } + ] + ], + [ + [{ + "label": "东湖区", + "value": "360102" + }, + { + "label": "西湖区", + "value": "360103" + }, + { + "label": "青云谱区", + "value": "360104" + }, + { + "label": "湾里区", + "value": "360105" + }, + { + "label": "青山湖区", + "value": "360111" + }, + { + "label": "新建区", + "value": "360112" + }, + { + "label": "南昌县", + "value": "360121" + }, + { + "label": "安义县", + "value": "360123" + }, + { + "label": "进贤县", + "value": "360124" + } + ], + [{ + "label": "昌江区", + "value": "360202" + }, + { + "label": "珠山区", + "value": "360203" + }, + { + "label": "浮梁县", + "value": "360222" + }, + { + "label": "乐平市", + "value": "360281" + } + ], + [{ + "label": "安源区", + "value": "360302" + }, + { + "label": "湘东区", + "value": "360313" + }, + { + "label": "莲花县", + "value": "360321" + }, + { + "label": "上栗县", + "value": "360322" + }, + { + "label": "芦溪县", + "value": "360323" + } + ], + [{ + "label": "濂溪区", + "value": "360402" + }, + { + "label": "浔阳区", + "value": "360403" + }, + { + "label": "柴桑区", + "value": "360404" + }, + { + "label": "武宁县", + "value": "360423" + }, + { + "label": "修水县", + "value": "360424" + }, + { + "label": "永修县", + "value": "360425" + }, + { + "label": "德安县", + "value": "360426" + }, + { + "label": "都昌县", + "value": "360428" + }, + { + "label": "湖口县", + "value": "360429" + }, + { + "label": "彭泽县", + "value": "360430" + }, + { + "label": "瑞昌市", + "value": "360481" + }, + { + "label": "共青城市", + "value": "360482" + }, + { + "label": "庐山市", + "value": "360483" + } + ], + [{ + "label": "渝水区", + "value": "360502" + }, + { + "label": "分宜县", + "value": "360521" + } + ], + [{ + "label": "月湖区", + "value": "360602" + }, + { + "label": "余江县", + "value": "360622" + }, + { + "label": "贵溪市", + "value": "360681" + } + ], + [{ + "label": "章贡区", + "value": "360702" + }, + { + "label": "南康区", + "value": "360703" + }, + { + "label": "赣县区", + "value": "360704" + }, + { + "label": "信丰县", + "value": "360722" + }, + { + "label": "大余县", + "value": "360723" + }, + { + "label": "上犹县", + "value": "360724" + }, + { + "label": "崇义县", + "value": "360725" + }, + { + "label": "安远县", + "value": "360726" + }, + { + "label": "龙南县", + "value": "360727" + }, + { + "label": "定南县", + "value": "360728" + }, + { + "label": "全南县", + "value": "360729" + }, + { + "label": "宁都县", + "value": "360730" + }, + { + "label": "于都县", + "value": "360731" + }, + { + "label": "兴国县", + "value": "360732" + }, + { + "label": "会昌县", + "value": "360733" + }, + { + "label": "寻乌县", + "value": "360734" + }, + { + "label": "石城县", + "value": "360735" + }, + { + "label": "瑞金市", + "value": "360781" + } + ], + [{ + "label": "吉州区", + "value": "360802" + }, + { + "label": "青原区", + "value": "360803" + }, + { + "label": "吉安县", + "value": "360821" + }, + { + "label": "吉水县", + "value": "360822" + }, + { + "label": "峡江县", + "value": "360823" + }, + { + "label": "新干县", + "value": "360824" + }, + { + "label": "永丰县", + "value": "360825" + }, + { + "label": "泰和县", + "value": "360826" + }, + { + "label": "遂川县", + "value": "360827" + }, + { + "label": "万安县", + "value": "360828" + }, + { + "label": "安福县", + "value": "360829" + }, + { + "label": "永新县", + "value": "360830" + }, + { + "label": "井冈山市", + "value": "360881" + } + ], + [{ + "label": "袁州区", + "value": "360902" + }, + { + "label": "奉新县", + "value": "360921" + }, + { + "label": "万载县", + "value": "360922" + }, + { + "label": "上高县", + "value": "360923" + }, + { + "label": "宜丰县", + "value": "360924" + }, + { + "label": "靖安县", + "value": "360925" + }, + { + "label": "铜鼓县", + "value": "360926" + }, + { + "label": "丰城市", + "value": "360981" + }, + { + "label": "樟树市", + "value": "360982" + }, + { + "label": "高安市", + "value": "360983" + } + ], + [{ + "label": "临川区", + "value": "361002" + }, + { + "label": "东乡区", + "value": "361003" + }, + { + "label": "南城县", + "value": "361021" + }, + { + "label": "黎川县", + "value": "361022" + }, + { + "label": "南丰县", + "value": "361023" + }, + { + "label": "崇仁县", + "value": "361024" + }, + { + "label": "乐安县", + "value": "361025" + }, + { + "label": "宜黄县", + "value": "361026" + }, + { + "label": "金溪县", + "value": "361027" + }, + { + "label": "资溪县", + "value": "361028" + }, + { + "label": "广昌县", + "value": "361030" + } + ], + [{ + "label": "信州区", + "value": "361102" + }, + { + "label": "广丰区", + "value": "361103" + }, + { + "label": "上饶县", + "value": "361121" + }, + { + "label": "玉山县", + "value": "361123" + }, + { + "label": "铅山县", + "value": "361124" + }, + { + "label": "横峰县", + "value": "361125" + }, + { + "label": "弋阳县", + "value": "361126" + }, + { + "label": "余干县", + "value": "361127" + }, + { + "label": "鄱阳县", + "value": "361128" + }, + { + "label": "万年县", + "value": "361129" + }, + { + "label": "婺源县", + "value": "361130" + }, + { + "label": "德兴市", + "value": "361181" + } + ] + ], + [ + [{ + "label": "历下区", + "value": "370102" + }, + { + "label": "市中区", + "value": "370103" + }, + { + "label": "槐荫区", + "value": "370104" + }, + { + "label": "天桥区", + "value": "370105" + }, + { + "label": "历城区", + "value": "370112" + }, + { + "label": "长清区", + "value": "370113" + }, + { + "label": "章丘区", + "value": "370114" + }, + { + "label": "平阴县", + "value": "370124" + }, + { + "label": "济阳县", + "value": "370125" + }, + { + "label": "商河县", + "value": "370126" + }, + { + "label": "济南高新技术产业开发区", + "value": "370171" + } + ], + [{ + "label": "市南区", + "value": "370202" + }, + { + "label": "市北区", + "value": "370203" + }, + { + "label": "黄岛区", + "value": "370211" + }, + { + "label": "崂山区", + "value": "370212" + }, + { + "label": "李沧区", + "value": "370213" + }, + { + "label": "城阳区", + "value": "370214" + }, + { + "label": "即墨区", + "value": "370215" + }, + { + "label": "青岛高新技术产业开发区", + "value": "370271" + }, + { + "label": "胶州市", + "value": "370281" + }, + { + "label": "平度市", + "value": "370283" + }, + { + "label": "莱西市", + "value": "370285" + } + ], + [{ + "label": "淄川区", + "value": "370302" + }, + { + "label": "张店区", + "value": "370303" + }, + { + "label": "博山区", + "value": "370304" + }, + { + "label": "临淄区", + "value": "370305" + }, + { + "label": "周村区", + "value": "370306" + }, + { + "label": "桓台县", + "value": "370321" + }, + { + "label": "高青县", + "value": "370322" + }, + { + "label": "沂源县", + "value": "370323" + } + ], + [{ + "label": "市中区", + "value": "370402" + }, + { + "label": "薛城区", + "value": "370403" + }, + { + "label": "峄城区", + "value": "370404" + }, + { + "label": "台儿庄区", + "value": "370405" + }, + { + "label": "山亭区", + "value": "370406" + }, + { + "label": "滕州市", + "value": "370481" + } + ], + [{ + "label": "东营区", + "value": "370502" + }, + { + "label": "河口区", + "value": "370503" + }, + { + "label": "垦利区", + "value": "370505" + }, + { + "label": "利津县", + "value": "370522" + }, + { + "label": "广饶县", + "value": "370523" + }, + { + "label": "东营经济技术开发区", + "value": "370571" + }, + { + "label": "东营港经济开发区", + "value": "370572" + } + ], + [{ + "label": "芝罘区", + "value": "370602" + }, + { + "label": "福山区", + "value": "370611" + }, + { + "label": "牟平区", + "value": "370612" + }, + { + "label": "莱山区", + "value": "370613" + }, + { + "label": "长岛县", + "value": "370634" + }, + { + "label": "烟台高新技术产业开发区", + "value": "370671" + }, + { + "label": "烟台经济技术开发区", + "value": "370672" + }, + { + "label": "龙口市", + "value": "370681" + }, + { + "label": "莱阳市", + "value": "370682" + }, + { + "label": "莱州市", + "value": "370683" + }, + { + "label": "蓬莱市", + "value": "370684" + }, + { + "label": "招远市", + "value": "370685" + }, + { + "label": "栖霞市", + "value": "370686" + }, + { + "label": "海阳市", + "value": "370687" + } + ], + [{ + "label": "潍城区", + "value": "370702" + }, + { + "label": "寒亭区", + "value": "370703" + }, + { + "label": "坊子区", + "value": "370704" + }, + { + "label": "奎文区", + "value": "370705" + }, + { + "label": "临朐县", + "value": "370724" + }, + { + "label": "昌乐县", + "value": "370725" + }, + { + "label": "潍坊滨海经济技术开发区", + "value": "370772" + }, + { + "label": "青州市", + "value": "370781" + }, + { + "label": "诸城市", + "value": "370782" + }, + { + "label": "寿光市", + "value": "370783" + }, + { + "label": "安丘市", + "value": "370784" + }, + { + "label": "高密市", + "value": "370785" + }, + { + "label": "昌邑市", + "value": "370786" + } + ], + [{ + "label": "任城区", + "value": "370811" + }, + { + "label": "兖州区", + "value": "370812" + }, + { + "label": "微山县", + "value": "370826" + }, + { + "label": "鱼台县", + "value": "370827" + }, + { + "label": "金乡县", + "value": "370828" + }, + { + "label": "嘉祥县", + "value": "370829" + }, + { + "label": "汶上县", + "value": "370830" + }, + { + "label": "泗水县", + "value": "370831" + }, + { + "label": "梁山县", + "value": "370832" + }, + { + "label": "济宁高新技术产业开发区", + "value": "370871" + }, + { + "label": "曲阜市", + "value": "370881" + }, + { + "label": "邹城市", + "value": "370883" + } + ], + [{ + "label": "泰山区", + "value": "370902" + }, + { + "label": "岱岳区", + "value": "370911" + }, + { + "label": "宁阳县", + "value": "370921" + }, + { + "label": "东平县", + "value": "370923" + }, + { + "label": "新泰市", + "value": "370982" + }, + { + "label": "肥城市", + "value": "370983" + } + ], + [{ + "label": "环翠区", + "value": "371002" + }, + { + "label": "文登区", + "value": "371003" + }, + { + "label": "威海火炬高技术产业开发区", + "value": "371071" + }, + { + "label": "威海经济技术开发区", + "value": "371072" + }, + { + "label": "威海临港经济技术开发区", + "value": "371073" + }, + { + "label": "荣成市", + "value": "371082" + }, + { + "label": "乳山市", + "value": "371083" + } + ], + [{ + "label": "东港区", + "value": "371102" + }, + { + "label": "岚山区", + "value": "371103" + }, + { + "label": "五莲县", + "value": "371121" + }, + { + "label": "莒县", + "value": "371122" + }, + { + "label": "日照经济技术开发区", + "value": "371171" + }, + { + "label": "日照国际海洋城", + "value": "371172" + } + ], + [{ + "label": "莱城区", + "value": "371202" + }, + { + "label": "钢城区", + "value": "371203" + } + ], + [{ + "label": "兰山区", + "value": "371302" + }, + { + "label": "罗庄区", + "value": "371311" + }, + { + "label": "河东区", + "value": "371312" + }, + { + "label": "沂南县", + "value": "371321" + }, + { + "label": "郯城县", + "value": "371322" + }, + { + "label": "沂水县", + "value": "371323" + }, + { + "label": "兰陵县", + "value": "371324" + }, + { + "label": "费县", + "value": "371325" + }, + { + "label": "平邑县", + "value": "371326" + }, + { + "label": "莒南县", + "value": "371327" + }, + { + "label": "蒙阴县", + "value": "371328" + }, + { + "label": "临沭县", + "value": "371329" + }, + { + "label": "临沂高新技术产业开发区", + "value": "371371" + }, + { + "label": "临沂经济技术开发区", + "value": "371372" + }, + { + "label": "临沂临港经济开发区", + "value": "371373" + } + ], + [{ + "label": "德城区", + "value": "371402" + }, + { + "label": "陵城区", + "value": "371403" + }, + { + "label": "宁津县", + "value": "371422" + }, + { + "label": "庆云县", + "value": "371423" + }, + { + "label": "临邑县", + "value": "371424" + }, + { + "label": "齐河县", + "value": "371425" + }, + { + "label": "平原县", + "value": "371426" + }, + { + "label": "夏津县", + "value": "371427" + }, + { + "label": "武城县", + "value": "371428" + }, + { + "label": "德州经济技术开发区", + "value": "371471" + }, + { + "label": "德州运河经济开发区", + "value": "371472" + }, + { + "label": "乐陵市", + "value": "371481" + }, + { + "label": "禹城市", + "value": "371482" + } + ], + [{ + "label": "东昌府区", + "value": "371502" + }, + { + "label": "阳谷县", + "value": "371521" + }, + { + "label": "莘县", + "value": "371522" + }, + { + "label": "茌平县", + "value": "371523" + }, + { + "label": "东阿县", + "value": "371524" + }, + { + "label": "冠县", + "value": "371525" + }, + { + "label": "高唐县", + "value": "371526" + }, + { + "label": "临清市", + "value": "371581" + } + ], + [{ + "label": "滨城区", + "value": "371602" + }, + { + "label": "沾化区", + "value": "371603" + }, + { + "label": "惠民县", + "value": "371621" + }, + { + "label": "阳信县", + "value": "371622" + }, + { + "label": "无棣县", + "value": "371623" + }, + { + "label": "博兴县", + "value": "371625" + }, + { + "label": "邹平县", + "value": "371626" + } + ], + [{ + "label": "牡丹区", + "value": "371702" + }, + { + "label": "定陶区", + "value": "371703" + }, + { + "label": "曹县", + "value": "371721" + }, + { + "label": "单县", + "value": "371722" + }, + { + "label": "成武县", + "value": "371723" + }, + { + "label": "巨野县", + "value": "371724" + }, + { + "label": "郓城县", + "value": "371725" + }, + { + "label": "鄄城县", + "value": "371726" + }, + { + "label": "东明县", + "value": "371728" + }, + { + "label": "菏泽经济技术开发区", + "value": "371771" + }, + { + "label": "菏泽高新技术开发区", + "value": "371772" + } + ] + ], + [ + [{ + "label": "中原区", + "value": "410102" + }, + { + "label": "二七区", + "value": "410103" + }, + { + "label": "管城回族区", + "value": "410104" + }, + { + "label": "金水区", + "value": "410105" + }, + { + "label": "上街区", + "value": "410106" + }, + { + "label": "惠济区", + "value": "410108" + }, + { + "label": "中牟县", + "value": "410122" + }, + { + "label": "郑州经济技术开发区", + "value": "410171" + }, + { + "label": "郑州高新技术产业开发区", + "value": "410172" + }, + { + "label": "郑州航空港经济综合实验区", + "value": "410173" + }, + { + "label": "巩义市", + "value": "410181" + }, + { + "label": "荥阳市", + "value": "410182" + }, + { + "label": "新密市", + "value": "410183" + }, + { + "label": "新郑市", + "value": "410184" + }, + { + "label": "登封市", + "value": "410185" + } + ], + [{ + "label": "龙亭区", + "value": "410202" + }, + { + "label": "顺河回族区", + "value": "410203" + }, + { + "label": "鼓楼区", + "value": "410204" + }, + { + "label": "禹王台区", + "value": "410205" + }, + { + "label": "祥符区", + "value": "410212" + }, + { + "label": "杞县", + "value": "410221" + }, + { + "label": "通许县", + "value": "410222" + }, + { + "label": "尉氏县", + "value": "410223" + }, + { + "label": "兰考县", + "value": "410225" + } + ], + [{ + "label": "老城区", + "value": "410302" + }, + { + "label": "西工区", + "value": "410303" + }, + { + "label": "瀍河回族区", + "value": "410304" + }, + { + "label": "涧西区", + "value": "410305" + }, + { + "label": "吉利区", + "value": "410306" + }, + { + "label": "洛龙区", + "value": "410311" + }, + { + "label": "孟津县", + "value": "410322" + }, + { + "label": "新安县", + "value": "410323" + }, + { + "label": "栾川县", + "value": "410324" + }, + { + "label": "嵩县", + "value": "410325" + }, + { + "label": "汝阳县", + "value": "410326" + }, + { + "label": "宜阳县", + "value": "410327" + }, + { + "label": "洛宁县", + "value": "410328" + }, + { + "label": "伊川县", + "value": "410329" + }, + { + "label": "洛阳高新技术产业开发区", + "value": "410371" + }, + { + "label": "偃师市", + "value": "410381" + } + ], + [{ + "label": "新华区", + "value": "410402" + }, + { + "label": "卫东区", + "value": "410403" + }, + { + "label": "石龙区", + "value": "410404" + }, + { + "label": "湛河区", + "value": "410411" + }, + { + "label": "宝丰县", + "value": "410421" + }, + { + "label": "叶县", + "value": "410422" + }, + { + "label": "鲁山县", + "value": "410423" + }, + { + "label": "郏县", + "value": "410425" + }, + { + "label": "平顶山高新技术产业开发区", + "value": "410471" + }, + { + "label": "平顶山市新城区", + "value": "410472" + }, + { + "label": "舞钢市", + "value": "410481" + }, + { + "label": "汝州市", + "value": "410482" + } + ], + [{ + "label": "文峰区", + "value": "410502" + }, + { + "label": "北关区", + "value": "410503" + }, + { + "label": "殷都区", + "value": "410505" + }, + { + "label": "龙安区", + "value": "410506" + }, + { + "label": "安阳县", + "value": "410522" + }, + { + "label": "汤阴县", + "value": "410523" + }, + { + "label": "滑县", + "value": "410526" + }, + { + "label": "内黄县", + "value": "410527" + }, + { + "label": "安阳高新技术产业开发区", + "value": "410571" + }, + { + "label": "林州市", + "value": "410581" + } + ], + [{ + "label": "鹤山区", + "value": "410602" + }, + { + "label": "山城区", + "value": "410603" + }, + { + "label": "淇滨区", + "value": "410611" + }, + { + "label": "浚县", + "value": "410621" + }, + { + "label": "淇县", + "value": "410622" + }, + { + "label": "鹤壁经济技术开发区", + "value": "410671" + } + ], + [{ + "label": "红旗区", + "value": "410702" + }, + { + "label": "卫滨区", + "value": "410703" + }, + { + "label": "凤泉区", + "value": "410704" + }, + { + "label": "牧野区", + "value": "410711" + }, + { + "label": "新乡县", + "value": "410721" + }, + { + "label": "获嘉县", + "value": "410724" + }, + { + "label": "原阳县", + "value": "410725" + }, + { + "label": "延津县", + "value": "410726" + }, + { + "label": "封丘县", + "value": "410727" + }, + { + "label": "长垣县", + "value": "410728" + }, + { + "label": "新乡高新技术产业开发区", + "value": "410771" + }, + { + "label": "新乡经济技术开发区", + "value": "410772" + }, + { + "label": "新乡市平原城乡一体化示范区", + "value": "410773" + }, + { + "label": "卫辉市", + "value": "410781" + }, + { + "label": "辉县市", + "value": "410782" + } + ], + [{ + "label": "解放区", + "value": "410802" + }, + { + "label": "中站区", + "value": "410803" + }, + { + "label": "马村区", + "value": "410804" + }, + { + "label": "山阳区", + "value": "410811" + }, + { + "label": "修武县", + "value": "410821" + }, + { + "label": "博爱县", + "value": "410822" + }, + { + "label": "武陟县", + "value": "410823" + }, + { + "label": "温县", + "value": "410825" + }, + { + "label": "焦作城乡一体化示范区", + "value": "410871" + }, + { + "label": "沁阳市", + "value": "410882" + }, + { + "label": "孟州市", + "value": "410883" + } + ], + [{ + "label": "华龙区", + "value": "410902" + }, + { + "label": "清丰县", + "value": "410922" + }, + { + "label": "南乐县", + "value": "410923" + }, + { + "label": "范县", + "value": "410926" + }, + { + "label": "台前县", + "value": "410927" + }, + { + "label": "濮阳县", + "value": "410928" + }, + { + "label": "河南濮阳工业园区", + "value": "410971" + }, + { + "label": "濮阳经济技术开发区", + "value": "410972" + } + ], + [{ + "label": "魏都区", + "value": "411002" + }, + { + "label": "建安区", + "value": "411003" + }, + { + "label": "鄢陵县", + "value": "411024" + }, + { + "label": "襄城县", + "value": "411025" + }, + { + "label": "许昌经济技术开发区", + "value": "411071" + }, + { + "label": "禹州市", + "value": "411081" + }, + { + "label": "长葛市", + "value": "411082" + } + ], + [{ + "label": "源汇区", + "value": "411102" + }, + { + "label": "郾城区", + "value": "411103" + }, + { + "label": "召陵区", + "value": "411104" + }, + { + "label": "舞阳县", + "value": "411121" + }, + { + "label": "临颍县", + "value": "411122" + }, + { + "label": "漯河经济技术开发区", + "value": "411171" + } + ], + [{ + "label": "湖滨区", + "value": "411202" + }, + { + "label": "陕州区", + "value": "411203" + }, + { + "label": "渑池县", + "value": "411221" + }, + { + "label": "卢氏县", + "value": "411224" + }, + { + "label": "河南三门峡经济开发区", + "value": "411271" + }, + { + "label": "义马市", + "value": "411281" + }, + { + "label": "灵宝市", + "value": "411282" + } + ], + [{ + "label": "宛城区", + "value": "411302" + }, + { + "label": "卧龙区", + "value": "411303" + }, + { + "label": "南召县", + "value": "411321" + }, + { + "label": "方城县", + "value": "411322" + }, + { + "label": "西峡县", + "value": "411323" + }, + { + "label": "镇平县", + "value": "411324" + }, + { + "label": "内乡县", + "value": "411325" + }, + { + "label": "淅川县", + "value": "411326" + }, + { + "label": "社旗县", + "value": "411327" + }, + { + "label": "唐河县", + "value": "411328" + }, + { + "label": "新野县", + "value": "411329" + }, + { + "label": "桐柏县", + "value": "411330" + }, + { + "label": "南阳高新技术产业开发区", + "value": "411371" + }, + { + "label": "南阳市城乡一体化示范区", + "value": "411372" + }, + { + "label": "邓州市", + "value": "411381" + } + ], + [{ + "label": "梁园区", + "value": "411402" + }, + { + "label": "睢阳区", + "value": "411403" + }, + { + "label": "民权县", + "value": "411421" + }, + { + "label": "睢县", + "value": "411422" + }, + { + "label": "宁陵县", + "value": "411423" + }, + { + "label": "柘城县", + "value": "411424" + }, + { + "label": "虞城县", + "value": "411425" + }, + { + "label": "夏邑县", + "value": "411426" + }, + { + "label": "豫东综合物流产业聚集区", + "value": "411471" + }, + { + "label": "河南商丘经济开发区", + "value": "411472" + }, + { + "label": "永城市", + "value": "411481" + } + ], + [{ + "label": "浉河区", + "value": "411502" + }, + { + "label": "平桥区", + "value": "411503" + }, + { + "label": "罗山县", + "value": "411521" + }, + { + "label": "光山县", + "value": "411522" + }, + { + "label": "新县", + "value": "411523" + }, + { + "label": "商城县", + "value": "411524" + }, + { + "label": "固始县", + "value": "411525" + }, + { + "label": "潢川县", + "value": "411526" + }, + { + "label": "淮滨县", + "value": "411527" + }, + { + "label": "息县", + "value": "411528" + }, + { + "label": "信阳高新技术产业开发区", + "value": "411571" + } + ], + [{ + "label": "川汇区", + "value": "411602" + }, + { + "label": "扶沟县", + "value": "411621" + }, + { + "label": "西华县", + "value": "411622" + }, + { + "label": "商水县", + "value": "411623" + }, + { + "label": "沈丘县", + "value": "411624" + }, + { + "label": "郸城县", + "value": "411625" + }, + { + "label": "淮阳县", + "value": "411626" + }, + { + "label": "太康县", + "value": "411627" + }, + { + "label": "鹿邑县", + "value": "411628" + }, + { + "label": "河南周口经济开发区", + "value": "411671" + }, + { + "label": "项城市", + "value": "411681" + } + ], + [{ + "label": "驿城区", + "value": "411702" + }, + { + "label": "西平县", + "value": "411721" + }, + { + "label": "上蔡县", + "value": "411722" + }, + { + "label": "平舆县", + "value": "411723" + }, + { + "label": "正阳县", + "value": "411724" + }, + { + "label": "确山县", + "value": "411725" + }, + { + "label": "泌阳县", + "value": "411726" + }, + { + "label": "汝南县", + "value": "411727" + }, + { + "label": "遂平县", + "value": "411728" + }, + { + "label": "新蔡县", + "value": "411729" + }, + { + "label": "河南驻马店经济开发区", + "value": "411771" + } + ], + [{ + "label": "济源市", + "value": "419001" + }] + ], + [ + [{ + "label": "江岸区", + "value": "420102" + }, + { + "label": "江汉区", + "value": "420103" + }, + { + "label": "硚口区", + "value": "420104" + }, + { + "label": "汉阳区", + "value": "420105" + }, + { + "label": "武昌区", + "value": "420106" + }, + { + "label": "青山区", + "value": "420107" + }, + { + "label": "洪山区", + "value": "420111" + }, + { + "label": "东西湖区", + "value": "420112" + }, + { + "label": "汉南区", + "value": "420113" + }, + { + "label": "蔡甸区", + "value": "420114" + }, + { + "label": "江夏区", + "value": "420115" + }, + { + "label": "黄陂区", + "value": "420116" + }, + { + "label": "新洲区", + "value": "420117" + } + ], + [{ + "label": "黄石港区", + "value": "420202" + }, + { + "label": "西塞山区", + "value": "420203" + }, + { + "label": "下陆区", + "value": "420204" + }, + { + "label": "铁山区", + "value": "420205" + }, + { + "label": "阳新县", + "value": "420222" + }, + { + "label": "大冶市", + "value": "420281" + } + ], + [{ + "label": "茅箭区", + "value": "420302" + }, + { + "label": "张湾区", + "value": "420303" + }, + { + "label": "郧阳区", + "value": "420304" + }, + { + "label": "郧西县", + "value": "420322" + }, + { + "label": "竹山县", + "value": "420323" + }, + { + "label": "竹溪县", + "value": "420324" + }, + { + "label": "房县", + "value": "420325" + }, + { + "label": "丹江口市", + "value": "420381" + } + ], + [{ + "label": "西陵区", + "value": "420502" + }, + { + "label": "伍家岗区", + "value": "420503" + }, + { + "label": "点军区", + "value": "420504" + }, + { + "label": "猇亭区", + "value": "420505" + }, + { + "label": "夷陵区", + "value": "420506" + }, + { + "label": "远安县", + "value": "420525" + }, + { + "label": "兴山县", + "value": "420526" + }, + { + "label": "秭归县", + "value": "420527" + }, + { + "label": "长阳土家族自治县", + "value": "420528" + }, + { + "label": "五峰土家族自治县", + "value": "420529" + }, + { + "label": "宜都市", + "value": "420581" + }, + { + "label": "当阳市", + "value": "420582" + }, + { + "label": "枝江市", + "value": "420583" + } + ], + [{ + "label": "襄城区", + "value": "420602" + }, + { + "label": "樊城区", + "value": "420606" + }, + { + "label": "襄州区", + "value": "420607" + }, + { + "label": "南漳县", + "value": "420624" + }, + { + "label": "谷城县", + "value": "420625" + }, + { + "label": "保康县", + "value": "420626" + }, + { + "label": "老河口市", + "value": "420682" + }, + { + "label": "枣阳市", + "value": "420683" + }, + { + "label": "宜城市", + "value": "420684" + } + ], + [{ + "label": "梁子湖区", + "value": "420702" + }, + { + "label": "华容区", + "value": "420703" + }, + { + "label": "鄂城区", + "value": "420704" + } + ], + [{ + "label": "东宝区", + "value": "420802" + }, + { + "label": "掇刀区", + "value": "420804" + }, + { + "label": "京山县", + "value": "420821" + }, + { + "label": "沙洋县", + "value": "420822" + }, + { + "label": "钟祥市", + "value": "420881" + } + ], + [{ + "label": "孝南区", + "value": "420902" + }, + { + "label": "孝昌县", + "value": "420921" + }, + { + "label": "大悟县", + "value": "420922" + }, + { + "label": "云梦县", + "value": "420923" + }, + { + "label": "应城市", + "value": "420981" + }, + { + "label": "安陆市", + "value": "420982" + }, + { + "label": "汉川市", + "value": "420984" + } + ], + [{ + "label": "沙市区", + "value": "421002" + }, + { + "label": "荆州区", + "value": "421003" + }, + { + "label": "公安县", + "value": "421022" + }, + { + "label": "监利县", + "value": "421023" + }, + { + "label": "江陵县", + "value": "421024" + }, + { + "label": "荆州经济技术开发区", + "value": "421071" + }, + { + "label": "石首市", + "value": "421081" + }, + { + "label": "洪湖市", + "value": "421083" + }, + { + "label": "松滋市", + "value": "421087" + } + ], + [{ + "label": "黄州区", + "value": "421102" + }, + { + "label": "团风县", + "value": "421121" + }, + { + "label": "红安县", + "value": "421122" + }, + { + "label": "罗田县", + "value": "421123" + }, + { + "label": "英山县", + "value": "421124" + }, + { + "label": "浠水县", + "value": "421125" + }, + { + "label": "蕲春县", + "value": "421126" + }, + { + "label": "黄梅县", + "value": "421127" + }, + { + "label": "龙感湖管理区", + "value": "421171" + }, + { + "label": "麻城市", + "value": "421181" + }, + { + "label": "武穴市", + "value": "421182" + } + ], + [{ + "label": "咸安区", + "value": "421202" + }, + { + "label": "嘉鱼县", + "value": "421221" + }, + { + "label": "通城县", + "value": "421222" + }, + { + "label": "崇阳县", + "value": "421223" + }, + { + "label": "通山县", + "value": "421224" + }, + { + "label": "赤壁市", + "value": "421281" + } + ], + [{ + "label": "曾都区", + "value": "421303" + }, + { + "label": "随县", + "value": "421321" + }, + { + "label": "广水市", + "value": "421381" + } + ], + [{ + "label": "恩施市", + "value": "422801" + }, + { + "label": "利川市", + "value": "422802" + }, + { + "label": "建始县", + "value": "422822" + }, + { + "label": "巴东县", + "value": "422823" + }, + { + "label": "宣恩县", + "value": "422825" + }, + { + "label": "咸丰县", + "value": "422826" + }, + { + "label": "来凤县", + "value": "422827" + }, + { + "label": "鹤峰县", + "value": "422828" + } + ], + [{ + "label": "仙桃市", + "value": "429004" + }, + { + "label": "潜江市", + "value": "429005" + }, + { + "label": "天门市", + "value": "429006" + }, + { + "label": "神农架林区", + "value": "429021" + } + ] + ], + [ + [{ + "label": "芙蓉区", + "value": "430102" + }, + { + "label": "天心区", + "value": "430103" + }, + { + "label": "岳麓区", + "value": "430104" + }, + { + "label": "开福区", + "value": "430105" + }, + { + "label": "雨花区", + "value": "430111" + }, + { + "label": "望城区", + "value": "430112" + }, + { + "label": "长沙县", + "value": "430121" + }, + { + "label": "浏阳市", + "value": "430181" + }, + { + "label": "宁乡市", + "value": "430182" + } + ], + [{ + "label": "荷塘区", + "value": "430202" + }, + { + "label": "芦淞区", + "value": "430203" + }, + { + "label": "石峰区", + "value": "430204" + }, + { + "label": "天元区", + "value": "430211" + }, + { + "label": "株洲县", + "value": "430221" + }, + { + "label": "攸县", + "value": "430223" + }, + { + "label": "茶陵县", + "value": "430224" + }, + { + "label": "炎陵县", + "value": "430225" + }, + { + "label": "云龙示范区", + "value": "430271" + }, + { + "label": "醴陵市", + "value": "430281" + } + ], + [{ + "label": "雨湖区", + "value": "430302" + }, + { + "label": "岳塘区", + "value": "430304" + }, + { + "label": "湘潭县", + "value": "430321" + }, + { + "label": "湖南湘潭高新技术产业园区", + "value": "430371" + }, + { + "label": "湘潭昭山示范区", + "value": "430372" + }, + { + "label": "湘潭九华示范区", + "value": "430373" + }, + { + "label": "湘乡市", + "value": "430381" + }, + { + "label": "韶山市", + "value": "430382" + } + ], + [{ + "label": "珠晖区", + "value": "430405" + }, + { + "label": "雁峰区", + "value": "430406" + }, + { + "label": "石鼓区", + "value": "430407" + }, + { + "label": "蒸湘区", + "value": "430408" + }, + { + "label": "南岳区", + "value": "430412" + }, + { + "label": "衡阳县", + "value": "430421" + }, + { + "label": "衡南县", + "value": "430422" + }, + { + "label": "衡山县", + "value": "430423" + }, + { + "label": "衡东县", + "value": "430424" + }, + { + "label": "祁东县", + "value": "430426" + }, + { + "label": "衡阳综合保税区", + "value": "430471" + }, + { + "label": "湖南衡阳高新技术产业园区", + "value": "430472" + }, + { + "label": "湖南衡阳松木经济开发区", + "value": "430473" + }, + { + "label": "耒阳市", + "value": "430481" + }, + { + "label": "常宁市", + "value": "430482" + } + ], + [{ + "label": "双清区", + "value": "430502" + }, + { + "label": "大祥区", + "value": "430503" + }, + { + "label": "北塔区", + "value": "430511" + }, + { + "label": "邵东县", + "value": "430521" + }, + { + "label": "新邵县", + "value": "430522" + }, + { + "label": "邵阳县", + "value": "430523" + }, + { + "label": "隆回县", + "value": "430524" + }, + { + "label": "洞口县", + "value": "430525" + }, + { + "label": "绥宁县", + "value": "430527" + }, + { + "label": "新宁县", + "value": "430528" + }, + { + "label": "城步苗族自治县", + "value": "430529" + }, + { + "label": "武冈市", + "value": "430581" + } + ], + [{ + "label": "岳阳楼区", + "value": "430602" + }, + { + "label": "云溪区", + "value": "430603" + }, + { + "label": "君山区", + "value": "430611" + }, + { + "label": "岳阳县", + "value": "430621" + }, + { + "label": "华容县", + "value": "430623" + }, + { + "label": "湘阴县", + "value": "430624" + }, + { + "label": "平江县", + "value": "430626" + }, + { + "label": "岳阳市屈原管理区", + "value": "430671" + }, + { + "label": "汨罗市", + "value": "430681" + }, + { + "label": "临湘市", + "value": "430682" + } + ], + [{ + "label": "武陵区", + "value": "430702" + }, + { + "label": "鼎城区", + "value": "430703" + }, + { + "label": "安乡县", + "value": "430721" + }, + { + "label": "汉寿县", + "value": "430722" + }, + { + "label": "澧县", + "value": "430723" + }, + { + "label": "临澧县", + "value": "430724" + }, + { + "label": "桃源县", + "value": "430725" + }, + { + "label": "石门县", + "value": "430726" + }, + { + "label": "常德市西洞庭管理区", + "value": "430771" + }, + { + "label": "津市市", + "value": "430781" + } + ], + [{ + "label": "永定区", + "value": "430802" + }, + { + "label": "武陵源区", + "value": "430811" + }, + { + "label": "慈利县", + "value": "430821" + }, + { + "label": "桑植县", + "value": "430822" + } + ], + [{ + "label": "资阳区", + "value": "430902" + }, + { + "label": "赫山区", + "value": "430903" + }, + { + "label": "南县", + "value": "430921" + }, + { + "label": "桃江县", + "value": "430922" + }, + { + "label": "安化县", + "value": "430923" + }, + { + "label": "益阳市大通湖管理区", + "value": "430971" + }, + { + "label": "湖南益阳高新技术产业园区", + "value": "430972" + }, + { + "label": "沅江市", + "value": "430981" + } + ], + [{ + "label": "北湖区", + "value": "431002" + }, + { + "label": "苏仙区", + "value": "431003" + }, + { + "label": "桂阳县", + "value": "431021" + }, + { + "label": "宜章县", + "value": "431022" + }, + { + "label": "永兴县", + "value": "431023" + }, + { + "label": "嘉禾县", + "value": "431024" + }, + { + "label": "临武县", + "value": "431025" + }, + { + "label": "汝城县", + "value": "431026" + }, + { + "label": "桂东县", + "value": "431027" + }, + { + "label": "安仁县", + "value": "431028" + }, + { + "label": "资兴市", + "value": "431081" + } + ], + [{ + "label": "零陵区", + "value": "431102" + }, + { + "label": "冷水滩区", + "value": "431103" + }, + { + "label": "祁阳县", + "value": "431121" + }, + { + "label": "东安县", + "value": "431122" + }, + { + "label": "双牌县", + "value": "431123" + }, + { + "label": "道县", + "value": "431124" + }, + { + "label": "江永县", + "value": "431125" + }, + { + "label": "宁远县", + "value": "431126" + }, + { + "label": "蓝山县", + "value": "431127" + }, + { + "label": "新田县", + "value": "431128" + }, + { + "label": "江华瑶族自治县", + "value": "431129" + }, + { + "label": "永州经济技术开发区", + "value": "431171" + }, + { + "label": "永州市金洞管理区", + "value": "431172" + }, + { + "label": "永州市回龙圩管理区", + "value": "431173" + } + ], + [{ + "label": "鹤城区", + "value": "431202" + }, + { + "label": "中方县", + "value": "431221" + }, + { + "label": "沅陵县", + "value": "431222" + }, + { + "label": "辰溪县", + "value": "431223" + }, + { + "label": "溆浦县", + "value": "431224" + }, + { + "label": "会同县", + "value": "431225" + }, + { + "label": "麻阳苗族自治县", + "value": "431226" + }, + { + "label": "新晃侗族自治县", + "value": "431227" + }, + { + "label": "芷江侗族自治县", + "value": "431228" + }, + { + "label": "靖州苗族侗族自治县", + "value": "431229" + }, + { + "label": "通道侗族自治县", + "value": "431230" + }, + { + "label": "怀化市洪江管理区", + "value": "431271" + }, + { + "label": "洪江市", + "value": "431281" + } + ], + [{ + "label": "娄星区", + "value": "431302" + }, + { + "label": "双峰县", + "value": "431321" + }, + { + "label": "新化县", + "value": "431322" + }, + { + "label": "冷水江市", + "value": "431381" + }, + { + "label": "涟源市", + "value": "431382" + } + ], + [{ + "label": "吉首市", + "value": "433101" + }, + { + "label": "泸溪县", + "value": "433122" + }, + { + "label": "凤凰县", + "value": "433123" + }, + { + "label": "花垣县", + "value": "433124" + }, + { + "label": "保靖县", + "value": "433125" + }, + { + "label": "古丈县", + "value": "433126" + }, + { + "label": "永顺县", + "value": "433127" + }, + { + "label": "龙山县", + "value": "433130" + }, + { + "label": "湖南吉首经济开发区", + "value": "433172" + }, + { + "label": "湖南永顺经济开发区", + "value": "433173" + } + ] + ], + [ + [{ + "label": "荔湾区", + "value": "440103" + }, + { + "label": "越秀区", + "value": "440104" + }, + { + "label": "海珠区", + "value": "440105" + }, + { + "label": "天河区", + "value": "440106" + }, + { + "label": "白云区", + "value": "440111" + }, + { + "label": "黄埔区", + "value": "440112" + }, + { + "label": "番禺区", + "value": "440113" + }, + { + "label": "花都区", + "value": "440114" + }, + { + "label": "南沙区", + "value": "440115" + }, + { + "label": "从化区", + "value": "440117" + }, + { + "label": "增城区", + "value": "440118" + } + ], + [{ + "label": "武江区", + "value": "440203" + }, + { + "label": "浈江区", + "value": "440204" + }, + { + "label": "曲江区", + "value": "440205" + }, + { + "label": "始兴县", + "value": "440222" + }, + { + "label": "仁化县", + "value": "440224" + }, + { + "label": "翁源县", + "value": "440229" + }, + { + "label": "乳源瑶族自治县", + "value": "440232" + }, + { + "label": "新丰县", + "value": "440233" + }, + { + "label": "乐昌市", + "value": "440281" + }, + { + "label": "南雄市", + "value": "440282" + } + ], + [{ + "label": "罗湖区", + "value": "440303" + }, + { + "label": "福田区", + "value": "440304" + }, + { + "label": "南山区", + "value": "440305" + }, + { + "label": "宝安区", + "value": "440306" + }, + { + "label": "龙岗区", + "value": "440307" + }, + { + "label": "盐田区", + "value": "440308" + }, + { + "label": "龙华区", + "value": "440309" + }, + { + "label": "坪山区", + "value": "440310" + } + ], + [{ + "label": "香洲区", + "value": "440402" + }, + { + "label": "斗门区", + "value": "440403" + }, + { + "label": "金湾区", + "value": "440404" + } + ], + [{ + "label": "龙湖区", + "value": "440507" + }, + { + "label": "金平区", + "value": "440511" + }, + { + "label": "濠江区", + "value": "440512" + }, + { + "label": "潮阳区", + "value": "440513" + }, + { + "label": "潮南区", + "value": "440514" + }, + { + "label": "澄海区", + "value": "440515" + }, + { + "label": "南澳县", + "value": "440523" + } + ], + [{ + "label": "禅城区", + "value": "440604" + }, + { + "label": "南海区", + "value": "440605" + }, + { + "label": "顺德区", + "value": "440606" + }, + { + "label": "三水区", + "value": "440607" + }, + { + "label": "高明区", + "value": "440608" + } + ], + [{ + "label": "蓬江区", + "value": "440703" + }, + { + "label": "江海区", + "value": "440704" + }, + { + "label": "新会区", + "value": "440705" + }, + { + "label": "台山市", + "value": "440781" + }, + { + "label": "开平市", + "value": "440783" + }, + { + "label": "鹤山市", + "value": "440784" + }, + { + "label": "恩平市", + "value": "440785" + } + ], + [{ + "label": "赤坎区", + "value": "440802" + }, + { + "label": "霞山区", + "value": "440803" + }, + { + "label": "坡头区", + "value": "440804" + }, + { + "label": "麻章区", + "value": "440811" + }, + { + "label": "遂溪县", + "value": "440823" + }, + { + "label": "徐闻县", + "value": "440825" + }, + { + "label": "廉江市", + "value": "440881" + }, + { + "label": "雷州市", + "value": "440882" + }, + { + "label": "吴川市", + "value": "440883" + } + ], + [{ + "label": "茂南区", + "value": "440902" + }, + { + "label": "电白区", + "value": "440904" + }, + { + "label": "高州市", + "value": "440981" + }, + { + "label": "化州市", + "value": "440982" + }, + { + "label": "信宜市", + "value": "440983" + } + ], + [{ + "label": "端州区", + "value": "441202" + }, + { + "label": "鼎湖区", + "value": "441203" + }, + { + "label": "高要区", + "value": "441204" + }, + { + "label": "广宁县", + "value": "441223" + }, + { + "label": "怀集县", + "value": "441224" + }, + { + "label": "封开县", + "value": "441225" + }, + { + "label": "德庆县", + "value": "441226" + }, + { + "label": "四会市", + "value": "441284" + } + ], + [{ + "label": "惠城区", + "value": "441302" + }, + { + "label": "惠阳区", + "value": "441303" + }, + { + "label": "博罗县", + "value": "441322" + }, + { + "label": "惠东县", + "value": "441323" + }, + { + "label": "龙门县", + "value": "441324" + } + ], + [{ + "label": "梅江区", + "value": "441402" + }, + { + "label": "梅县区", + "value": "441403" + }, + { + "label": "大埔县", + "value": "441422" + }, + { + "label": "丰顺县", + "value": "441423" + }, + { + "label": "五华县", + "value": "441424" + }, + { + "label": "平远县", + "value": "441426" + }, + { + "label": "蕉岭县", + "value": "441427" + }, + { + "label": "兴宁市", + "value": "441481" + } + ], + [{ + "label": "城区", + "value": "441502" + }, + { + "label": "海丰县", + "value": "441521" + }, + { + "label": "陆河县", + "value": "441523" + }, + { + "label": "陆丰市", + "value": "441581" + } + ], + [{ + "label": "源城区", + "value": "441602" + }, + { + "label": "紫金县", + "value": "441621" + }, + { + "label": "龙川县", + "value": "441622" + }, + { + "label": "连平县", + "value": "441623" + }, + { + "label": "和平县", + "value": "441624" + }, + { + "label": "东源县", + "value": "441625" + } + ], + [{ + "label": "江城区", + "value": "441702" + }, + { + "label": "阳东区", + "value": "441704" + }, + { + "label": "阳西县", + "value": "441721" + }, + { + "label": "阳春市", + "value": "441781" + } + ], + [{ + "label": "清城区", + "value": "441802" + }, + { + "label": "清新区", + "value": "441803" + }, + { + "label": "佛冈县", + "value": "441821" + }, + { + "label": "阳山县", + "value": "441823" + }, + { + "label": "连山壮族瑶族自治县", + "value": "441825" + }, + { + "label": "连南瑶族自治县", + "value": "441826" + }, + { + "label": "英德市", + "value": "441881" + }, + { + "label": "连州市", + "value": "441882" + } + ], + [{ + "label": "东莞市", + "value": "441900" + }], + [{ + "label": "中山市", + "value": "442000" + }], + [{ + "label": "湘桥区", + "value": "445102" + }, + { + "label": "潮安区", + "value": "445103" + }, + { + "label": "饶平县", + "value": "445122" + } + ], + [{ + "label": "榕城区", + "value": "445202" + }, + { + "label": "揭东区", + "value": "445203" + }, + { + "label": "揭西县", + "value": "445222" + }, + { + "label": "惠来县", + "value": "445224" + }, + { + "label": "普宁市", + "value": "445281" + } + ], + [{ + "label": "云城区", + "value": "445302" + }, + { + "label": "云安区", + "value": "445303" + }, + { + "label": "新兴县", + "value": "445321" + }, + { + "label": "郁南县", + "value": "445322" + }, + { + "label": "罗定市", + "value": "445381" + } + ] + ], + [ + [{ + "label": "兴宁区", + "value": "450102" + }, + { + "label": "青秀区", + "value": "450103" + }, + { + "label": "江南区", + "value": "450105" + }, + { + "label": "西乡塘区", + "value": "450107" + }, + { + "label": "良庆区", + "value": "450108" + }, + { + "label": "邕宁区", + "value": "450109" + }, + { + "label": "武鸣区", + "value": "450110" + }, + { + "label": "隆安县", + "value": "450123" + }, + { + "label": "马山县", + "value": "450124" + }, + { + "label": "上林县", + "value": "450125" + }, + { + "label": "宾阳县", + "value": "450126" + }, + { + "label": "横县", + "value": "450127" + } + ], + [{ + "label": "城中区", + "value": "450202" + }, + { + "label": "鱼峰区", + "value": "450203" + }, + { + "label": "柳南区", + "value": "450204" + }, + { + "label": "柳北区", + "value": "450205" + }, + { + "label": "柳江区", + "value": "450206" + }, + { + "label": "柳城县", + "value": "450222" + }, + { + "label": "鹿寨县", + "value": "450223" + }, + { + "label": "融安县", + "value": "450224" + }, + { + "label": "融水苗族自治县", + "value": "450225" + }, + { + "label": "三江侗族自治县", + "value": "450226" + } + ], + [{ + "label": "秀峰区", + "value": "450302" + }, + { + "label": "叠彩区", + "value": "450303" + }, + { + "label": "象山区", + "value": "450304" + }, + { + "label": "七星区", + "value": "450305" + }, + { + "label": "雁山区", + "value": "450311" + }, + { + "label": "临桂区", + "value": "450312" + }, + { + "label": "阳朔县", + "value": "450321" + }, + { + "label": "灵川县", + "value": "450323" + }, + { + "label": "全州县", + "value": "450324" + }, + { + "label": "兴安县", + "value": "450325" + }, + { + "label": "永福县", + "value": "450326" + }, + { + "label": "灌阳县", + "value": "450327" + }, + { + "label": "龙胜各族自治县", + "value": "450328" + }, + { + "label": "资源县", + "value": "450329" + }, + { + "label": "平乐县", + "value": "450330" + }, + { + "label": "荔浦县", + "value": "450331" + }, + { + "label": "恭城瑶族自治县", + "value": "450332" + } + ], + [{ + "label": "万秀区", + "value": "450403" + }, + { + "label": "长洲区", + "value": "450405" + }, + { + "label": "龙圩区", + "value": "450406" + }, + { + "label": "苍梧县", + "value": "450421" + }, + { + "label": "藤县", + "value": "450422" + }, + { + "label": "蒙山县", + "value": "450423" + }, + { + "label": "岑溪市", + "value": "450481" + } + ], + [{ + "label": "海城区", + "value": "450502" + }, + { + "label": "银海区", + "value": "450503" + }, + { + "label": "铁山港区", + "value": "450512" + }, + { + "label": "合浦县", + "value": "450521" + } + ], + [{ + "label": "港口区", + "value": "450602" + }, + { + "label": "防城区", + "value": "450603" + }, + { + "label": "上思县", + "value": "450621" + }, + { + "label": "东兴市", + "value": "450681" + } + ], + [{ + "label": "钦南区", + "value": "450702" + }, + { + "label": "钦北区", + "value": "450703" + }, + { + "label": "灵山县", + "value": "450721" + }, + { + "label": "浦北县", + "value": "450722" + } + ], + [{ + "label": "港北区", + "value": "450802" + }, + { + "label": "港南区", + "value": "450803" + }, + { + "label": "覃塘区", + "value": "450804" + }, + { + "label": "平南县", + "value": "450821" + }, + { + "label": "桂平市", + "value": "450881" + } + ], + [{ + "label": "玉州区", + "value": "450902" + }, + { + "label": "福绵区", + "value": "450903" + }, + { + "label": "容县", + "value": "450921" + }, + { + "label": "陆川县", + "value": "450922" + }, + { + "label": "博白县", + "value": "450923" + }, + { + "label": "兴业县", + "value": "450924" + }, + { + "label": "北流市", + "value": "450981" + } + ], + [{ + "label": "右江区", + "value": "451002" + }, + { + "label": "田阳县", + "value": "451021" + }, + { + "label": "田东县", + "value": "451022" + }, + { + "label": "平果县", + "value": "451023" + }, + { + "label": "德保县", + "value": "451024" + }, + { + "label": "那坡县", + "value": "451026" + }, + { + "label": "凌云县", + "value": "451027" + }, + { + "label": "乐业县", + "value": "451028" + }, + { + "label": "田林县", + "value": "451029" + }, + { + "label": "西林县", + "value": "451030" + }, + { + "label": "隆林各族自治县", + "value": "451031" + }, + { + "label": "靖西市", + "value": "451081" + } + ], + [{ + "label": "八步区", + "value": "451102" + }, + { + "label": "平桂区", + "value": "451103" + }, + { + "label": "昭平县", + "value": "451121" + }, + { + "label": "钟山县", + "value": "451122" + }, + { + "label": "富川瑶族自治县", + "value": "451123" + } + ], + [{ + "label": "金城江区", + "value": "451202" + }, + { + "label": "宜州区", + "value": "451203" + }, + { + "label": "南丹县", + "value": "451221" + }, + { + "label": "天峨县", + "value": "451222" + }, + { + "label": "凤山县", + "value": "451223" + }, + { + "label": "东兰县", + "value": "451224" + }, + { + "label": "罗城仫佬族自治县", + "value": "451225" + }, + { + "label": "环江毛南族自治县", + "value": "451226" + }, + { + "label": "巴马瑶族自治县", + "value": "451227" + }, + { + "label": "都安瑶族自治县", + "value": "451228" + }, + { + "label": "大化瑶族自治县", + "value": "451229" + } + ], + [{ + "label": "兴宾区", + "value": "451302" + }, + { + "label": "忻城县", + "value": "451321" + }, + { + "label": "象州县", + "value": "451322" + }, + { + "label": "武宣县", + "value": "451323" + }, + { + "label": "金秀瑶族自治县", + "value": "451324" + }, + { + "label": "合山市", + "value": "451381" + } + ], + [{ + "label": "江州区", + "value": "451402" + }, + { + "label": "扶绥县", + "value": "451421" + }, + { + "label": "宁明县", + "value": "451422" + }, + { + "label": "龙州县", + "value": "451423" + }, + { + "label": "大新县", + "value": "451424" + }, + { + "label": "天等县", + "value": "451425" + }, + { + "label": "凭祥市", + "value": "451481" + } + ] + ], + [ + [{ + "label": "秀英区", + "value": "460105" + }, + { + "label": "龙华区", + "value": "460106" + }, + { + "label": "琼山区", + "value": "460107" + }, + { + "label": "美兰区", + "value": "460108" + } + ], + [{ + "label": "海棠区", + "value": "460202" + }, + { + "label": "吉阳区", + "value": "460203" + }, + { + "label": "天涯区", + "value": "460204" + }, + { + "label": "崖州区", + "value": "460205" + } + ], + [{ + "label": "西沙群岛", + "value": "460321" + }, + { + "label": "南沙群岛", + "value": "460322" + }, + { + "label": "中沙群岛的岛礁及其海域", + "value": "460323" + } + ], + [{ + "label": "儋州市", + "value": "460400" + }], + [{ + "label": "五指山市", + "value": "469001" + }, + { + "label": "琼海市", + "value": "469002" + }, + { + "label": "文昌市", + "value": "469005" + }, + { + "label": "万宁市", + "value": "469006" + }, + { + "label": "东方市", + "value": "469007" + }, + { + "label": "定安县", + "value": "469021" + }, + { + "label": "屯昌县", + "value": "469022" + }, + { + "label": "澄迈县", + "value": "469023" + }, + { + "label": "临高县", + "value": "469024" + }, + { + "label": "白沙黎族自治县", + "value": "469025" + }, + { + "label": "昌江黎族自治县", + "value": "469026" + }, + { + "label": "乐东黎族自治县", + "value": "469027" + }, + { + "label": "陵水黎族自治县", + "value": "469028" + }, + { + "label": "保亭黎族苗族自治县", + "value": "469029" + }, + { + "label": "琼中黎族苗族自治县", + "value": "469030" + } + ] + ], + [ + [{ + "label": "万州区", + "value": "500101" + }, + { + "label": "涪陵区", + "value": "500102" + }, + { + "label": "渝中区", + "value": "500103" + }, + { + "label": "大渡口区", + "value": "500104" + }, + { + "label": "江北区", + "value": "500105" + }, + { + "label": "沙坪坝区", + "value": "500106" + }, + { + "label": "九龙坡区", + "value": "500107" + }, + { + "label": "南岸区", + "value": "500108" + }, + { + "label": "北碚区", + "value": "500109" + }, + { + "label": "綦江区", + "value": "500110" + }, + { + "label": "大足区", + "value": "500111" + }, + { + "label": "渝北区", + "value": "500112" + }, + { + "label": "巴南区", + "value": "500113" + }, + { + "label": "黔江区", + "value": "500114" + }, + { + "label": "长寿区", + "value": "500115" + }, + { + "label": "江津区", + "value": "500116" + }, + { + "label": "合川区", + "value": "500117" + }, + { + "label": "永川区", + "value": "500118" + }, + { + "label": "南川区", + "value": "500119" + }, + { + "label": "璧山区", + "value": "500120" + }, + { + "label": "铜梁区", + "value": "500151" + }, + { + "label": "潼南区", + "value": "500152" + }, + { + "label": "荣昌区", + "value": "500153" + }, + { + "label": "开州区", + "value": "500154" + }, + { + "label": "梁平区", + "value": "500155" + }, + { + "label": "武隆区", + "value": "500156" + } + ], + [{ + "label": "城口县", + "value": "500229" + }, + { + "label": "丰都县", + "value": "500230" + }, + { + "label": "垫江县", + "value": "500231" + }, + { + "label": "忠县", + "value": "500233" + }, + { + "label": "云阳县", + "value": "500235" + }, + { + "label": "奉节县", + "value": "500236" + }, + { + "label": "巫山县", + "value": "500237" + }, + { + "label": "巫溪县", + "value": "500238" + }, + { + "label": "石柱土家族自治县", + "value": "500240" + }, + { + "label": "秀山土家族苗族自治县", + "value": "500241" + }, + { + "label": "酉阳土家族苗族自治县", + "value": "500242" + }, + { + "label": "彭水苗族土家族自治县", + "value": "500243" + } + ] + ], + [ + [{ + "label": "锦江区", + "value": "510104" + }, + { + "label": "青羊区", + "value": "510105" + }, + { + "label": "金牛区", + "value": "510106" + }, + { + "label": "武侯区", + "value": "510107" + }, + { + "label": "成华区", + "value": "510108" + }, + { + "label": "龙泉驿区", + "value": "510112" + }, + { + "label": "青白江区", + "value": "510113" + }, + { + "label": "新都区", + "value": "510114" + }, + { + "label": "温江区", + "value": "510115" + }, + { + "label": "双流区", + "value": "510116" + }, + { + "label": "郫都区", + "value": "510117" + }, + { + "label": "金堂县", + "value": "510121" + }, + { + "label": "大邑县", + "value": "510129" + }, + { + "label": "蒲江县", + "value": "510131" + }, + { + "label": "新津县", + "value": "510132" + }, + { + "label": "都江堰市", + "value": "510181" + }, + { + "label": "彭州市", + "value": "510182" + }, + { + "label": "邛崃市", + "value": "510183" + }, + { + "label": "崇州市", + "value": "510184" + }, + { + "label": "简阳市", + "value": "510185" + } + ], + [{ + "label": "自流井区", + "value": "510302" + }, + { + "label": "贡井区", + "value": "510303" + }, + { + "label": "大安区", + "value": "510304" + }, + { + "label": "沿滩区", + "value": "510311" + }, + { + "label": "荣县", + "value": "510321" + }, + { + "label": "富顺县", + "value": "510322" + } + ], + [{ + "label": "东区", + "value": "510402" + }, + { + "label": "西区", + "value": "510403" + }, + { + "label": "仁和区", + "value": "510411" + }, + { + "label": "米易县", + "value": "510421" + }, + { + "label": "盐边县", + "value": "510422" + } + ], + [{ + "label": "江阳区", + "value": "510502" + }, + { + "label": "纳溪区", + "value": "510503" + }, + { + "label": "龙马潭区", + "value": "510504" + }, + { + "label": "泸县", + "value": "510521" + }, + { + "label": "合江县", + "value": "510522" + }, + { + "label": "叙永县", + "value": "510524" + }, + { + "label": "古蔺县", + "value": "510525" + } + ], + [{ + "label": "旌阳区", + "value": "510603" + }, + { + "label": "罗江区", + "value": "510604" + }, + { + "label": "中江县", + "value": "510623" + }, + { + "label": "广汉市", + "value": "510681" + }, + { + "label": "什邡市", + "value": "510682" + }, + { + "label": "绵竹市", + "value": "510683" + } + ], + [{ + "label": "涪城区", + "value": "510703" + }, + { + "label": "游仙区", + "value": "510704" + }, + { + "label": "安州区", + "value": "510705" + }, + { + "label": "三台县", + "value": "510722" + }, + { + "label": "盐亭县", + "value": "510723" + }, + { + "label": "梓潼县", + "value": "510725" + }, + { + "label": "北川羌族自治县", + "value": "510726" + }, + { + "label": "平武县", + "value": "510727" + }, + { + "label": "江油市", + "value": "510781" + } + ], + [{ + "label": "利州区", + "value": "510802" + }, + { + "label": "昭化区", + "value": "510811" + }, + { + "label": "朝天区", + "value": "510812" + }, + { + "label": "旺苍县", + "value": "510821" + }, + { + "label": "青川县", + "value": "510822" + }, + { + "label": "剑阁县", + "value": "510823" + }, + { + "label": "苍溪县", + "value": "510824" + } + ], + [{ + "label": "船山区", + "value": "510903" + }, + { + "label": "安居区", + "value": "510904" + }, + { + "label": "蓬溪县", + "value": "510921" + }, + { + "label": "射洪县", + "value": "510922" + }, + { + "label": "大英县", + "value": "510923" + } + ], + [{ + "label": "市中区", + "value": "511002" + }, + { + "label": "东兴区", + "value": "511011" + }, + { + "label": "威远县", + "value": "511024" + }, + { + "label": "资中县", + "value": "511025" + }, + { + "label": "内江经济开发区", + "value": "511071" + }, + { + "label": "隆昌市", + "value": "511083" + } + ], + [{ + "label": "市中区", + "value": "511102" + }, + { + "label": "沙湾区", + "value": "511111" + }, + { + "label": "五通桥区", + "value": "511112" + }, + { + "label": "金口河区", + "value": "511113" + }, + { + "label": "犍为县", + "value": "511123" + }, + { + "label": "井研县", + "value": "511124" + }, + { + "label": "夹江县", + "value": "511126" + }, + { + "label": "沐川县", + "value": "511129" + }, + { + "label": "峨边彝族自治县", + "value": "511132" + }, + { + "label": "马边彝族自治县", + "value": "511133" + }, + { + "label": "峨眉山市", + "value": "511181" + } + ], + [{ + "label": "顺庆区", + "value": "511302" + }, + { + "label": "高坪区", + "value": "511303" + }, + { + "label": "嘉陵区", + "value": "511304" + }, + { + "label": "南部县", + "value": "511321" + }, + { + "label": "营山县", + "value": "511322" + }, + { + "label": "蓬安县", + "value": "511323" + }, + { + "label": "仪陇县", + "value": "511324" + }, + { + "label": "西充县", + "value": "511325" + }, + { + "label": "阆中市", + "value": "511381" + } + ], + [{ + "label": "东坡区", + "value": "511402" + }, + { + "label": "彭山区", + "value": "511403" + }, + { + "label": "仁寿县", + "value": "511421" + }, + { + "label": "洪雅县", + "value": "511423" + }, + { + "label": "丹棱县", + "value": "511424" + }, + { + "label": "青神县", + "value": "511425" + } + ], + [{ + "label": "翠屏区", + "value": "511502" + }, + { + "label": "南溪区", + "value": "511503" + }, + { + "label": "宜宾县", + "value": "511521" + }, + { + "label": "江安县", + "value": "511523" + }, + { + "label": "长宁县", + "value": "511524" + }, + { + "label": "高县", + "value": "511525" + }, + { + "label": "珙县", + "value": "511526" + }, + { + "label": "筠连县", + "value": "511527" + }, + { + "label": "兴文县", + "value": "511528" + }, + { + "label": "屏山县", + "value": "511529" + } + ], + [{ + "label": "广安区", + "value": "511602" + }, + { + "label": "前锋区", + "value": "511603" + }, + { + "label": "岳池县", + "value": "511621" + }, + { + "label": "武胜县", + "value": "511622" + }, + { + "label": "邻水县", + "value": "511623" + }, + { + "label": "华蓥市", + "value": "511681" + } + ], + [{ + "label": "通川区", + "value": "511702" + }, + { + "label": "达川区", + "value": "511703" + }, + { + "label": "宣汉县", + "value": "511722" + }, + { + "label": "开江县", + "value": "511723" + }, + { + "label": "大竹县", + "value": "511724" + }, + { + "label": "渠县", + "value": "511725" + }, + { + "label": "达州经济开发区", + "value": "511771" + }, + { + "label": "万源市", + "value": "511781" + } + ], + [{ + "label": "雨城区", + "value": "511802" + }, + { + "label": "名山区", + "value": "511803" + }, + { + "label": "荥经县", + "value": "511822" + }, + { + "label": "汉源县", + "value": "511823" + }, + { + "label": "石棉县", + "value": "511824" + }, + { + "label": "天全县", + "value": "511825" + }, + { + "label": "芦山县", + "value": "511826" + }, + { + "label": "宝兴县", + "value": "511827" + } + ], + [{ + "label": "巴州区", + "value": "511902" + }, + { + "label": "恩阳区", + "value": "511903" + }, + { + "label": "通江县", + "value": "511921" + }, + { + "label": "南江县", + "value": "511922" + }, + { + "label": "平昌县", + "value": "511923" + }, + { + "label": "巴中经济开发区", + "value": "511971" + } + ], + [{ + "label": "雁江区", + "value": "512002" + }, + { + "label": "安岳县", + "value": "512021" + }, + { + "label": "乐至县", + "value": "512022" + } + ], + [{ + "label": "马尔康市", + "value": "513201" + }, + { + "label": "汶川县", + "value": "513221" + }, + { + "label": "理县", + "value": "513222" + }, + { + "label": "茂县", + "value": "513223" + }, + { + "label": "松潘县", + "value": "513224" + }, + { + "label": "九寨沟县", + "value": "513225" + }, + { + "label": "金川县", + "value": "513226" + }, + { + "label": "小金县", + "value": "513227" + }, + { + "label": "黑水县", + "value": "513228" + }, + { + "label": "壤塘县", + "value": "513230" + }, + { + "label": "阿坝县", + "value": "513231" + }, + { + "label": "若尔盖县", + "value": "513232" + }, + { + "label": "红原县", + "value": "513233" + } + ], + [{ + "label": "康定市", + "value": "513301" + }, + { + "label": "泸定县", + "value": "513322" + }, + { + "label": "丹巴县", + "value": "513323" + }, + { + "label": "九龙县", + "value": "513324" + }, + { + "label": "雅江县", + "value": "513325" + }, + { + "label": "道孚县", + "value": "513326" + }, + { + "label": "炉霍县", + "value": "513327" + }, + { + "label": "甘孜县", + "value": "513328" + }, + { + "label": "新龙县", + "value": "513329" + }, + { + "label": "德格县", + "value": "513330" + }, + { + "label": "白玉县", + "value": "513331" + }, + { + "label": "石渠县", + "value": "513332" + }, + { + "label": "色达县", + "value": "513333" + }, + { + "label": "理塘县", + "value": "513334" + }, + { + "label": "巴塘县", + "value": "513335" + }, + { + "label": "乡城县", + "value": "513336" + }, + { + "label": "稻城县", + "value": "513337" + }, + { + "label": "得荣县", + "value": "513338" + } + ], + [{ + "label": "西昌市", + "value": "513401" + }, + { + "label": "木里藏族自治县", + "value": "513422" + }, + { + "label": "盐源县", + "value": "513423" + }, + { + "label": "德昌县", + "value": "513424" + }, + { + "label": "会理县", + "value": "513425" + }, + { + "label": "会东县", + "value": "513426" + }, + { + "label": "宁南县", + "value": "513427" + }, + { + "label": "普格县", + "value": "513428" + }, + { + "label": "布拖县", + "value": "513429" + }, + { + "label": "金阳县", + "value": "513430" + }, + { + "label": "昭觉县", + "value": "513431" + }, + { + "label": "喜德县", + "value": "513432" + }, + { + "label": "冕宁县", + "value": "513433" + }, + { + "label": "越西县", + "value": "513434" + }, + { + "label": "甘洛县", + "value": "513435" + }, + { + "label": "美姑县", + "value": "513436" + }, + { + "label": "雷波县", + "value": "513437" + } + ] + ], + [ + [{ + "label": "南明区", + "value": "520102" + }, + { + "label": "云岩区", + "value": "520103" + }, + { + "label": "花溪区", + "value": "520111" + }, + { + "label": "乌当区", + "value": "520112" + }, + { + "label": "白云区", + "value": "520113" + }, + { + "label": "观山湖区", + "value": "520115" + }, + { + "label": "开阳县", + "value": "520121" + }, + { + "label": "息烽县", + "value": "520122" + }, + { + "label": "修文县", + "value": "520123" + }, + { + "label": "清镇市", + "value": "520181" + } + ], + [{ + "label": "钟山区", + "value": "520201" + }, + { + "label": "六枝特区", + "value": "520203" + }, + { + "label": "水城县", + "value": "520221" + }, + { + "label": "盘州市", + "value": "520281" + } + ], + [{ + "label": "红花岗区", + "value": "520302" + }, + { + "label": "汇川区", + "value": "520303" + }, + { + "label": "播州区", + "value": "520304" + }, + { + "label": "桐梓县", + "value": "520322" + }, + { + "label": "绥阳县", + "value": "520323" + }, + { + "label": "正安县", + "value": "520324" + }, + { + "label": "道真仡佬族苗族自治县", + "value": "520325" + }, + { + "label": "务川仡佬族苗族自治县", + "value": "520326" + }, + { + "label": "凤冈县", + "value": "520327" + }, + { + "label": "湄潭县", + "value": "520328" + }, + { + "label": "余庆县", + "value": "520329" + }, + { + "label": "习水县", + "value": "520330" + }, + { + "label": "赤水市", + "value": "520381" + }, + { + "label": "仁怀市", + "value": "520382" + } + ], + [{ + "label": "西秀区", + "value": "520402" + }, + { + "label": "平坝区", + "value": "520403" + }, + { + "label": "普定县", + "value": "520422" + }, + { + "label": "镇宁布依族苗族自治县", + "value": "520423" + }, + { + "label": "关岭布依族苗族自治县", + "value": "520424" + }, + { + "label": "紫云苗族布依族自治县", + "value": "520425" + } + ], + [{ + "label": "七星关区", + "value": "520502" + }, + { + "label": "大方县", + "value": "520521" + }, + { + "label": "黔西县", + "value": "520522" + }, + { + "label": "金沙县", + "value": "520523" + }, + { + "label": "织金县", + "value": "520524" + }, + { + "label": "纳雍县", + "value": "520525" + }, + { + "label": "威宁彝族回族苗族自治县", + "value": "520526" + }, + { + "label": "赫章县", + "value": "520527" + } + ], + [{ + "label": "碧江区", + "value": "520602" + }, + { + "label": "万山区", + "value": "520603" + }, + { + "label": "江口县", + "value": "520621" + }, + { + "label": "玉屏侗族自治县", + "value": "520622" + }, + { + "label": "石阡县", + "value": "520623" + }, + { + "label": "思南县", + "value": "520624" + }, + { + "label": "印江土家族苗族自治县", + "value": "520625" + }, + { + "label": "德江县", + "value": "520626" + }, + { + "label": "沿河土家族自治县", + "value": "520627" + }, + { + "label": "松桃苗族自治县", + "value": "520628" + } + ], + [{ + "label": "兴义市", + "value": "522301" + }, + { + "label": "兴仁县", + "value": "522322" + }, + { + "label": "普安县", + "value": "522323" + }, + { + "label": "晴隆县", + "value": "522324" + }, + { + "label": "贞丰县", + "value": "522325" + }, + { + "label": "望谟县", + "value": "522326" + }, + { + "label": "册亨县", + "value": "522327" + }, + { + "label": "安龙县", + "value": "522328" + } + ], + [{ + "label": "凯里市", + "value": "522601" + }, + { + "label": "黄平县", + "value": "522622" + }, + { + "label": "施秉县", + "value": "522623" + }, + { + "label": "三穗县", + "value": "522624" + }, + { + "label": "镇远县", + "value": "522625" + }, + { + "label": "岑巩县", + "value": "522626" + }, + { + "label": "天柱县", + "value": "522627" + }, + { + "label": "锦屏县", + "value": "522628" + }, + { + "label": "剑河县", + "value": "522629" + }, + { + "label": "台江县", + "value": "522630" + }, + { + "label": "黎平县", + "value": "522631" + }, + { + "label": "榕江县", + "value": "522632" + }, + { + "label": "从江县", + "value": "522633" + }, + { + "label": "雷山县", + "value": "522634" + }, + { + "label": "麻江县", + "value": "522635" + }, + { + "label": "丹寨县", + "value": "522636" + } + ], + [{ + "label": "都匀市", + "value": "522701" + }, + { + "label": "福泉市", + "value": "522702" + }, + { + "label": "荔波县", + "value": "522722" + }, + { + "label": "贵定县", + "value": "522723" + }, + { + "label": "瓮安县", + "value": "522725" + }, + { + "label": "独山县", + "value": "522726" + }, + { + "label": "平塘县", + "value": "522727" + }, + { + "label": "罗甸县", + "value": "522728" + }, + { + "label": "长顺县", + "value": "522729" + }, + { + "label": "龙里县", + "value": "522730" + }, + { + "label": "惠水县", + "value": "522731" + }, + { + "label": "三都水族自治县", + "value": "522732" + } + ] + ], + [ + [{ + "label": "五华区", + "value": "530102" + }, + { + "label": "盘龙区", + "value": "530103" + }, + { + "label": "官渡区", + "value": "530111" + }, + { + "label": "西山区", + "value": "530112" + }, + { + "label": "东川区", + "value": "530113" + }, + { + "label": "呈贡区", + "value": "530114" + }, + { + "label": "晋宁区", + "value": "530115" + }, + { + "label": "富民县", + "value": "530124" + }, + { + "label": "宜良县", + "value": "530125" + }, + { + "label": "石林彝族自治县", + "value": "530126" + }, + { + "label": "嵩明县", + "value": "530127" + }, + { + "label": "禄劝彝族苗族自治县", + "value": "530128" + }, + { + "label": "寻甸回族彝族自治县", + "value": "530129" + }, + { + "label": "安宁市", + "value": "530181" + } + ], + [{ + "label": "麒麟区", + "value": "530302" + }, + { + "label": "沾益区", + "value": "530303" + }, + { + "label": "马龙县", + "value": "530321" + }, + { + "label": "陆良县", + "value": "530322" + }, + { + "label": "师宗县", + "value": "530323" + }, + { + "label": "罗平县", + "value": "530324" + }, + { + "label": "富源县", + "value": "530325" + }, + { + "label": "会泽县", + "value": "530326" + }, + { + "label": "宣威市", + "value": "530381" + } + ], + [{ + "label": "红塔区", + "value": "530402" + }, + { + "label": "江川区", + "value": "530403" + }, + { + "label": "澄江县", + "value": "530422" + }, + { + "label": "通海县", + "value": "530423" + }, + { + "label": "华宁县", + "value": "530424" + }, + { + "label": "易门县", + "value": "530425" + }, + { + "label": "峨山彝族自治县", + "value": "530426" + }, + { + "label": "新平彝族傣族自治县", + "value": "530427" + }, + { + "label": "元江哈尼族彝族傣族自治县", + "value": "530428" + } + ], + [{ + "label": "隆阳区", + "value": "530502" + }, + { + "label": "施甸县", + "value": "530521" + }, + { + "label": "龙陵县", + "value": "530523" + }, + { + "label": "昌宁县", + "value": "530524" + }, + { + "label": "腾冲市", + "value": "530581" + } + ], + [{ + "label": "昭阳区", + "value": "530602" + }, + { + "label": "鲁甸县", + "value": "530621" + }, + { + "label": "巧家县", + "value": "530622" + }, + { + "label": "盐津县", + "value": "530623" + }, + { + "label": "大关县", + "value": "530624" + }, + { + "label": "永善县", + "value": "530625" + }, + { + "label": "绥江县", + "value": "530626" + }, + { + "label": "镇雄县", + "value": "530627" + }, + { + "label": "彝良县", + "value": "530628" + }, + { + "label": "威信县", + "value": "530629" + }, + { + "label": "水富县", + "value": "530630" + } + ], + [{ + "label": "古城区", + "value": "530702" + }, + { + "label": "玉龙纳西族自治县", + "value": "530721" + }, + { + "label": "永胜县", + "value": "530722" + }, + { + "label": "华坪县", + "value": "530723" + }, + { + "label": "宁蒗彝族自治县", + "value": "530724" + } + ], + [{ + "label": "思茅区", + "value": "530802" + }, + { + "label": "宁洱哈尼族彝族自治县", + "value": "530821" + }, + { + "label": "墨江哈尼族自治县", + "value": "530822" + }, + { + "label": "景东彝族自治县", + "value": "530823" + }, + { + "label": "景谷傣族彝族自治县", + "value": "530824" + }, + { + "label": "镇沅彝族哈尼族拉祜族自治县", + "value": "530825" + }, + { + "label": "江城哈尼族彝族自治县", + "value": "530826" + }, + { + "label": "孟连傣族拉祜族佤族自治县", + "value": "530827" + }, + { + "label": "澜沧拉祜族自治县", + "value": "530828" + }, + { + "label": "西盟佤族自治县", + "value": "530829" + } + ], + [{ + "label": "临翔区", + "value": "530902" + }, + { + "label": "凤庆县", + "value": "530921" + }, + { + "label": "云县", + "value": "530922" + }, + { + "label": "永德县", + "value": "530923" + }, + { + "label": "镇康县", + "value": "530924" + }, + { + "label": "双江拉祜族佤族布朗族傣族自治县", + "value": "530925" + }, + { + "label": "耿马傣族佤族自治县", + "value": "530926" + }, + { + "label": "沧源佤族自治县", + "value": "530927" + } + ], + [{ + "label": "楚雄市", + "value": "532301" + }, + { + "label": "双柏县", + "value": "532322" + }, + { + "label": "牟定县", + "value": "532323" + }, + { + "label": "南华县", + "value": "532324" + }, + { + "label": "姚安县", + "value": "532325" + }, + { + "label": "大姚县", + "value": "532326" + }, + { + "label": "永仁县", + "value": "532327" + }, + { + "label": "元谋县", + "value": "532328" + }, + { + "label": "武定县", + "value": "532329" + }, + { + "label": "禄丰县", + "value": "532331" + } + ], + [{ + "label": "个旧市", + "value": "532501" + }, + { + "label": "开远市", + "value": "532502" + }, + { + "label": "蒙自市", + "value": "532503" + }, + { + "label": "弥勒市", + "value": "532504" + }, + { + "label": "屏边苗族自治县", + "value": "532523" + }, + { + "label": "建水县", + "value": "532524" + }, + { + "label": "石屏县", + "value": "532525" + }, + { + "label": "泸西县", + "value": "532527" + }, + { + "label": "元阳县", + "value": "532528" + }, + { + "label": "红河县", + "value": "532529" + }, + { + "label": "金平苗族瑶族傣族自治县", + "value": "532530" + }, + { + "label": "绿春县", + "value": "532531" + }, + { + "label": "河口瑶族自治县", + "value": "532532" + } + ], + [{ + "label": "文山市", + "value": "532601" + }, + { + "label": "砚山县", + "value": "532622" + }, + { + "label": "西畴县", + "value": "532623" + }, + { + "label": "麻栗坡县", + "value": "532624" + }, + { + "label": "马关县", + "value": "532625" + }, + { + "label": "丘北县", + "value": "532626" + }, + { + "label": "广南县", + "value": "532627" + }, + { + "label": "富宁县", + "value": "532628" + } + ], + [{ + "label": "景洪市", + "value": "532801" + }, + { + "label": "勐海县", + "value": "532822" + }, + { + "label": "勐腊县", + "value": "532823" + } + ], + [{ + "label": "大理市", + "value": "532901" + }, + { + "label": "漾濞彝族自治县", + "value": "532922" + }, + { + "label": "祥云县", + "value": "532923" + }, + { + "label": "宾川县", + "value": "532924" + }, + { + "label": "弥渡县", + "value": "532925" + }, + { + "label": "南涧彝族自治县", + "value": "532926" + }, + { + "label": "巍山彝族回族自治县", + "value": "532927" + }, + { + "label": "永平县", + "value": "532928" + }, + { + "label": "云龙县", + "value": "532929" + }, + { + "label": "洱源县", + "value": "532930" + }, + { + "label": "剑川县", + "value": "532931" + }, + { + "label": "鹤庆县", + "value": "532932" + } + ], + [{ + "label": "瑞丽市", + "value": "533102" + }, + { + "label": "芒市", + "value": "533103" + }, + { + "label": "梁河县", + "value": "533122" + }, + { + "label": "盈江县", + "value": "533123" + }, + { + "label": "陇川县", + "value": "533124" + } + ], + [{ + "label": "泸水市", + "value": "533301" + }, + { + "label": "福贡县", + "value": "533323" + }, + { + "label": "贡山独龙族怒族自治县", + "value": "533324" + }, + { + "label": "兰坪白族普米族自治县", + "value": "533325" + } + ], + [{ + "label": "香格里拉市", + "value": "533401" + }, + { + "label": "德钦县", + "value": "533422" + }, + { + "label": "维西傈僳族自治县", + "value": "533423" + } + ] + ], + [ + [{ + "label": "城关区", + "value": "540102" + }, + { + "label": "堆龙德庆区", + "value": "540103" + }, + { + "label": "林周县", + "value": "540121" + }, + { + "label": "当雄县", + "value": "540122" + }, + { + "label": "尼木县", + "value": "540123" + }, + { + "label": "曲水县", + "value": "540124" + }, + { + "label": "达孜县", + "value": "540126" + }, + { + "label": "墨竹工卡县", + "value": "540127" + }, + { + "label": "格尔木藏青工业园区", + "value": "540171" + }, + { + "label": "拉萨经济技术开发区", + "value": "540172" + }, + { + "label": "西藏文化旅游创意园区", + "value": "540173" + }, + { + "label": "达孜工业园区", + "value": "540174" + } + ], + [{ + "label": "桑珠孜区", + "value": "540202" + }, + { + "label": "南木林县", + "value": "540221" + }, + { + "label": "江孜县", + "value": "540222" + }, + { + "label": "定日县", + "value": "540223" + }, + { + "label": "萨迦县", + "value": "540224" + }, + { + "label": "拉孜县", + "value": "540225" + }, + { + "label": "昂仁县", + "value": "540226" + }, + { + "label": "谢通门县", + "value": "540227" + }, + { + "label": "白朗县", + "value": "540228" + }, + { + "label": "仁布县", + "value": "540229" + }, + { + "label": "康马县", + "value": "540230" + }, + { + "label": "定结县", + "value": "540231" + }, + { + "label": "仲巴县", + "value": "540232" + }, + { + "label": "亚东县", + "value": "540233" + }, + { + "label": "吉隆县", + "value": "540234" + }, + { + "label": "聂拉木县", + "value": "540235" + }, + { + "label": "萨嘎县", + "value": "540236" + }, + { + "label": "岗巴县", + "value": "540237" + } + ], + [{ + "label": "卡若区", + "value": "540302" + }, + { + "label": "江达县", + "value": "540321" + }, + { + "label": "贡觉县", + "value": "540322" + }, + { + "label": "类乌齐县", + "value": "540323" + }, + { + "label": "丁青县", + "value": "540324" + }, + { + "label": "察雅县", + "value": "540325" + }, + { + "label": "八宿县", + "value": "540326" + }, + { + "label": "左贡县", + "value": "540327" + }, + { + "label": "芒康县", + "value": "540328" + }, + { + "label": "洛隆县", + "value": "540329" + }, + { + "label": "边坝县", + "value": "540330" + } + ], + [{ + "label": "巴宜区", + "value": "540402" + }, + { + "label": "工布江达县", + "value": "540421" + }, + { + "label": "米林县", + "value": "540422" + }, + { + "label": "墨脱县", + "value": "540423" + }, + { + "label": "波密县", + "value": "540424" + }, + { + "label": "察隅县", + "value": "540425" + }, + { + "label": "朗县", + "value": "540426" + } + ], + [{ + "label": "乃东区", + "value": "540502" + }, + { + "label": "扎囊县", + "value": "540521" + }, + { + "label": "贡嘎县", + "value": "540522" + }, + { + "label": "桑日县", + "value": "540523" + }, + { + "label": "琼结县", + "value": "540524" + }, + { + "label": "曲松县", + "value": "540525" + }, + { + "label": "措美县", + "value": "540526" + }, + { + "label": "洛扎县", + "value": "540527" + }, + { + "label": "加查县", + "value": "540528" + }, + { + "label": "隆子县", + "value": "540529" + }, + { + "label": "错那县", + "value": "540530" + }, + { + "label": "浪卡子县", + "value": "540531" + } + ], + [{ + "label": "那曲县", + "value": "542421" + }, + { + "label": "嘉黎县", + "value": "542422" + }, + { + "label": "比如县", + "value": "542423" + }, + { + "label": "聂荣县", + "value": "542424" + }, + { + "label": "安多县", + "value": "542425" + }, + { + "label": "申扎县", + "value": "542426" + }, + { + "label": "索县", + "value": "542427" + }, + { + "label": "班戈县", + "value": "542428" + }, + { + "label": "巴青县", + "value": "542429" + }, + { + "label": "尼玛县", + "value": "542430" + }, + { + "label": "双湖县", + "value": "542431" + } + ], + [{ + "label": "普兰县", + "value": "542521" + }, + { + "label": "札达县", + "value": "542522" + }, + { + "label": "噶尔县", + "value": "542523" + }, + { + "label": "日土县", + "value": "542524" + }, + { + "label": "革吉县", + "value": "542525" + }, + { + "label": "改则县", + "value": "542526" + }, + { + "label": "措勤县", + "value": "542527" + } + ] + ], + [ + [{ + "label": "新城区", + "value": "610102" + }, + { + "label": "碑林区", + "value": "610103" + }, + { + "label": "莲湖区", + "value": "610104" + }, + { + "label": "灞桥区", + "value": "610111" + }, + { + "label": "未央区", + "value": "610112" + }, + { + "label": "雁塔区", + "value": "610113" + }, + { + "label": "阎良区", + "value": "610114" + }, + { + "label": "临潼区", + "value": "610115" + }, + { + "label": "长安区", + "value": "610116" + }, + { + "label": "高陵区", + "value": "610117" + }, + { + "label": "鄠邑区", + "value": "610118" + }, + { + "label": "蓝田县", + "value": "610122" + }, + { + "label": "周至县", + "value": "610124" + } + ], + [{ + "label": "王益区", + "value": "610202" + }, + { + "label": "印台区", + "value": "610203" + }, + { + "label": "耀州区", + "value": "610204" + }, + { + "label": "宜君县", + "value": "610222" + } + ], + [{ + "label": "渭滨区", + "value": "610302" + }, + { + "label": "金台区", + "value": "610303" + }, + { + "label": "陈仓区", + "value": "610304" + }, + { + "label": "凤翔县", + "value": "610322" + }, + { + "label": "岐山县", + "value": "610323" + }, + { + "label": "扶风县", + "value": "610324" + }, + { + "label": "眉县", + "value": "610326" + }, + { + "label": "陇县", + "value": "610327" + }, + { + "label": "千阳县", + "value": "610328" + }, + { + "label": "麟游县", + "value": "610329" + }, + { + "label": "凤县", + "value": "610330" + }, + { + "label": "太白县", + "value": "610331" + } + ], + [{ + "label": "秦都区", + "value": "610402" + }, + { + "label": "杨陵区", + "value": "610403" + }, + { + "label": "渭城区", + "value": "610404" + }, + { + "label": "三原县", + "value": "610422" + }, + { + "label": "泾阳县", + "value": "610423" + }, + { + "label": "乾县", + "value": "610424" + }, + { + "label": "礼泉县", + "value": "610425" + }, + { + "label": "永寿县", + "value": "610426" + }, + { + "label": "彬县", + "value": "610427" + }, + { + "label": "长武县", + "value": "610428" + }, + { + "label": "旬邑县", + "value": "610429" + }, + { + "label": "淳化县", + "value": "610430" + }, + { + "label": "武功县", + "value": "610431" + }, + { + "label": "兴平市", + "value": "610481" + } + ], + [{ + "label": "临渭区", + "value": "610502" + }, + { + "label": "华州区", + "value": "610503" + }, + { + "label": "潼关县", + "value": "610522" + }, + { + "label": "大荔县", + "value": "610523" + }, + { + "label": "合阳县", + "value": "610524" + }, + { + "label": "澄城县", + "value": "610525" + }, + { + "label": "蒲城县", + "value": "610526" + }, + { + "label": "白水县", + "value": "610527" + }, + { + "label": "富平县", + "value": "610528" + }, + { + "label": "韩城市", + "value": "610581" + }, + { + "label": "华阴市", + "value": "610582" + } + ], + [{ + "label": "宝塔区", + "value": "610602" + }, + { + "label": "安塞区", + "value": "610603" + }, + { + "label": "延长县", + "value": "610621" + }, + { + "label": "延川县", + "value": "610622" + }, + { + "label": "子长县", + "value": "610623" + }, + { + "label": "志丹县", + "value": "610625" + }, + { + "label": "吴起县", + "value": "610626" + }, + { + "label": "甘泉县", + "value": "610627" + }, + { + "label": "富县", + "value": "610628" + }, + { + "label": "洛川县", + "value": "610629" + }, + { + "label": "宜川县", + "value": "610630" + }, + { + "label": "黄龙县", + "value": "610631" + }, + { + "label": "黄陵县", + "value": "610632" + } + ], + [{ + "label": "汉台区", + "value": "610702" + }, + { + "label": "南郑区", + "value": "610703" + }, + { + "label": "城固县", + "value": "610722" + }, + { + "label": "洋县", + "value": "610723" + }, + { + "label": "西乡县", + "value": "610724" + }, + { + "label": "勉县", + "value": "610725" + }, + { + "label": "宁强县", + "value": "610726" + }, + { + "label": "略阳县", + "value": "610727" + }, + { + "label": "镇巴县", + "value": "610728" + }, + { + "label": "留坝县", + "value": "610729" + }, + { + "label": "佛坪县", + "value": "610730" + } + ], + [{ + "label": "榆阳区", + "value": "610802" + }, + { + "label": "横山区", + "value": "610803" + }, + { + "label": "府谷县", + "value": "610822" + }, + { + "label": "靖边县", + "value": "610824" + }, + { + "label": "定边县", + "value": "610825" + }, + { + "label": "绥德县", + "value": "610826" + }, + { + "label": "米脂县", + "value": "610827" + }, + { + "label": "佳县", + "value": "610828" + }, + { + "label": "吴堡县", + "value": "610829" + }, + { + "label": "清涧县", + "value": "610830" + }, + { + "label": "子洲县", + "value": "610831" + }, + { + "label": "神木市", + "value": "610881" + } + ], + [{ + "label": "汉滨区", + "value": "610902" + }, + { + "label": "汉阴县", + "value": "610921" + }, + { + "label": "石泉县", + "value": "610922" + }, + { + "label": "宁陕县", + "value": "610923" + }, + { + "label": "紫阳县", + "value": "610924" + }, + { + "label": "岚皋县", + "value": "610925" + }, + { + "label": "平利县", + "value": "610926" + }, + { + "label": "镇坪县", + "value": "610927" + }, + { + "label": "旬阳县", + "value": "610928" + }, + { + "label": "白河县", + "value": "610929" + } + ], + [{ + "label": "商州区", + "value": "611002" + }, + { + "label": "洛南县", + "value": "611021" + }, + { + "label": "丹凤县", + "value": "611022" + }, + { + "label": "商南县", + "value": "611023" + }, + { + "label": "山阳县", + "value": "611024" + }, + { + "label": "镇安县", + "value": "611025" + }, + { + "label": "柞水县", + "value": "611026" + } + ] + ], + [ + [{ + "label": "城关区", + "value": "620102" + }, + { + "label": "七里河区", + "value": "620103" + }, + { + "label": "西固区", + "value": "620104" + }, + { + "label": "安宁区", + "value": "620105" + }, + { + "label": "红古区", + "value": "620111" + }, + { + "label": "永登县", + "value": "620121" + }, + { + "label": "皋兰县", + "value": "620122" + }, + { + "label": "榆中县", + "value": "620123" + }, + { + "label": "兰州新区", + "value": "620171" + } + ], + [{ + "label": "嘉峪关市", + "value": "620201" + }], + [{ + "label": "金川区", + "value": "620302" + }, + { + "label": "永昌县", + "value": "620321" + } + ], + [{ + "label": "白银区", + "value": "620402" + }, + { + "label": "平川区", + "value": "620403" + }, + { + "label": "靖远县", + "value": "620421" + }, + { + "label": "会宁县", + "value": "620422" + }, + { + "label": "景泰县", + "value": "620423" + } + ], + [{ + "label": "秦州区", + "value": "620502" + }, + { + "label": "麦积区", + "value": "620503" + }, + { + "label": "清水县", + "value": "620521" + }, + { + "label": "秦安县", + "value": "620522" + }, + { + "label": "甘谷县", + "value": "620523" + }, + { + "label": "武山县", + "value": "620524" + }, + { + "label": "张家川回族自治县", + "value": "620525" + } + ], + [{ + "label": "凉州区", + "value": "620602" + }, + { + "label": "民勤县", + "value": "620621" + }, + { + "label": "古浪县", + "value": "620622" + }, + { + "label": "天祝藏族自治县", + "value": "620623" + } + ], + [{ + "label": "甘州区", + "value": "620702" + }, + { + "label": "肃南裕固族自治县", + "value": "620721" + }, + { + "label": "民乐县", + "value": "620722" + }, + { + "label": "临泽县", + "value": "620723" + }, + { + "label": "高台县", + "value": "620724" + }, + { + "label": "山丹县", + "value": "620725" + } + ], + [{ + "label": "崆峒区", + "value": "620802" + }, + { + "label": "泾川县", + "value": "620821" + }, + { + "label": "灵台县", + "value": "620822" + }, + { + "label": "崇信县", + "value": "620823" + }, + { + "label": "华亭县", + "value": "620824" + }, + { + "label": "庄浪县", + "value": "620825" + }, + { + "label": "静宁县", + "value": "620826" + }, + { + "label": "平凉工业园区", + "value": "620871" + } + ], + [{ + "label": "肃州区", + "value": "620902" + }, + { + "label": "金塔县", + "value": "620921" + }, + { + "label": "瓜州县", + "value": "620922" + }, + { + "label": "肃北蒙古族自治县", + "value": "620923" + }, + { + "label": "阿克塞哈萨克族自治县", + "value": "620924" + }, + { + "label": "玉门市", + "value": "620981" + }, + { + "label": "敦煌市", + "value": "620982" + } + ], + [{ + "label": "西峰区", + "value": "621002" + }, + { + "label": "庆城县", + "value": "621021" + }, + { + "label": "环县", + "value": "621022" + }, + { + "label": "华池县", + "value": "621023" + }, + { + "label": "合水县", + "value": "621024" + }, + { + "label": "正宁县", + "value": "621025" + }, + { + "label": "宁县", + "value": "621026" + }, + { + "label": "镇原县", + "value": "621027" + } + ], + [{ + "label": "安定区", + "value": "621102" + }, + { + "label": "通渭县", + "value": "621121" + }, + { + "label": "陇西县", + "value": "621122" + }, + { + "label": "渭源县", + "value": "621123" + }, + { + "label": "临洮县", + "value": "621124" + }, + { + "label": "漳县", + "value": "621125" + }, + { + "label": "岷县", + "value": "621126" + } + ], + [{ + "label": "武都区", + "value": "621202" + }, + { + "label": "成县", + "value": "621221" + }, + { + "label": "文县", + "value": "621222" + }, + { + "label": "宕昌县", + "value": "621223" + }, + { + "label": "康县", + "value": "621224" + }, + { + "label": "西和县", + "value": "621225" + }, + { + "label": "礼县", + "value": "621226" + }, + { + "label": "徽县", + "value": "621227" + }, + { + "label": "两当县", + "value": "621228" + } + ], + [{ + "label": "临夏市", + "value": "622901" + }, + { + "label": "临夏县", + "value": "622921" + }, + { + "label": "康乐县", + "value": "622922" + }, + { + "label": "永靖县", + "value": "622923" + }, + { + "label": "广河县", + "value": "622924" + }, + { + "label": "和政县", + "value": "622925" + }, + { + "label": "东乡族自治县", + "value": "622926" + }, + { + "label": "积石山保安族东乡族撒拉族自治县", + "value": "622927" + } + ], + [{ + "label": "合作市", + "value": "623001" + }, + { + "label": "临潭县", + "value": "623021" + }, + { + "label": "卓尼县", + "value": "623022" + }, + { + "label": "舟曲县", + "value": "623023" + }, + { + "label": "迭部县", + "value": "623024" + }, + { + "label": "玛曲县", + "value": "623025" + }, + { + "label": "碌曲县", + "value": "623026" + }, + { + "label": "夏河县", + "value": "623027" + } + ] + ], + [ + [{ + "label": "城东区", + "value": "630102" + }, + { + "label": "城中区", + "value": "630103" + }, + { + "label": "城西区", + "value": "630104" + }, + { + "label": "城北区", + "value": "630105" + }, + { + "label": "大通回族土族自治县", + "value": "630121" + }, + { + "label": "湟中县", + "value": "630122" + }, + { + "label": "湟源县", + "value": "630123" + } + ], + [{ + "label": "乐都区", + "value": "630202" + }, + { + "label": "平安区", + "value": "630203" + }, + { + "label": "民和回族土族自治县", + "value": "630222" + }, + { + "label": "互助土族自治县", + "value": "630223" + }, + { + "label": "化隆回族自治县", + "value": "630224" + }, + { + "label": "循化撒拉族自治县", + "value": "630225" + } + ], + [{ + "label": "门源回族自治县", + "value": "632221" + }, + { + "label": "祁连县", + "value": "632222" + }, + { + "label": "海晏县", + "value": "632223" + }, + { + "label": "刚察县", + "value": "632224" + } + ], + [{ + "label": "同仁县", + "value": "632321" + }, + { + "label": "尖扎县", + "value": "632322" + }, + { + "label": "泽库县", + "value": "632323" + }, + { + "label": "河南蒙古族自治县", + "value": "632324" + } + ], + [{ + "label": "共和县", + "value": "632521" + }, + { + "label": "同德县", + "value": "632522" + }, + { + "label": "贵德县", + "value": "632523" + }, + { + "label": "兴海县", + "value": "632524" + }, + { + "label": "贵南县", + "value": "632525" + } + ], + [{ + "label": "玛沁县", + "value": "632621" + }, + { + "label": "班玛县", + "value": "632622" + }, + { + "label": "甘德县", + "value": "632623" + }, + { + "label": "达日县", + "value": "632624" + }, + { + "label": "久治县", + "value": "632625" + }, + { + "label": "玛多县", + "value": "632626" + } + ], + [{ + "label": "玉树市", + "value": "632701" + }, + { + "label": "杂多县", + "value": "632722" + }, + { + "label": "称多县", + "value": "632723" + }, + { + "label": "治多县", + "value": "632724" + }, + { + "label": "囊谦县", + "value": "632725" + }, + { + "label": "曲麻莱县", + "value": "632726" + } + ], + [{ + "label": "格尔木市", + "value": "632801" + }, + { + "label": "德令哈市", + "value": "632802" + }, + { + "label": "乌兰县", + "value": "632821" + }, + { + "label": "都兰县", + "value": "632822" + }, + { + "label": "天峻县", + "value": "632823" + }, + { + "label": "大柴旦行政委员会", + "value": "632857" + }, + { + "label": "冷湖行政委员会", + "value": "632858" + }, + { + "label": "茫崖行政委员会", + "value": "632859" + } + ] + ], + [ + [{ + "label": "兴庆区", + "value": "640104" + }, + { + "label": "西夏区", + "value": "640105" + }, + { + "label": "金凤区", + "value": "640106" + }, + { + "label": "永宁县", + "value": "640121" + }, + { + "label": "贺兰县", + "value": "640122" + }, + { + "label": "灵武市", + "value": "640181" + } + ], + [{ + "label": "大武口区", + "value": "640202" + }, + { + "label": "惠农区", + "value": "640205" + }, + { + "label": "平罗县", + "value": "640221" + } + ], + [{ + "label": "利通区", + "value": "640302" + }, + { + "label": "红寺堡区", + "value": "640303" + }, + { + "label": "盐池县", + "value": "640323" + }, + { + "label": "同心县", + "value": "640324" + }, + { + "label": "青铜峡市", + "value": "640381" + } + ], + [{ + "label": "原州区", + "value": "640402" + }, + { + "label": "西吉县", + "value": "640422" + }, + { + "label": "隆德县", + "value": "640423" + }, + { + "label": "泾源县", + "value": "640424" + }, + { + "label": "彭阳县", + "value": "640425" + } + ], + [{ + "label": "沙坡头区", + "value": "640502" + }, + { + "label": "中宁县", + "value": "640521" + }, + { + "label": "海原县", + "value": "640522" + } + ] + ], + [ + [{ + "label": "天山区", + "value": "650102" + }, + { + "label": "沙依巴克区", + "value": "650103" + }, + { + "label": "新市区", + "value": "650104" + }, + { + "label": "水磨沟区", + "value": "650105" + }, + { + "label": "头屯河区", + "value": "650106" + }, + { + "label": "达坂城区", + "value": "650107" + }, + { + "label": "米东区", + "value": "650109" + }, + { + "label": "乌鲁木齐县", + "value": "650121" + }, + { + "label": "乌鲁木齐经济技术开发区", + "value": "650171" + }, + { + "label": "乌鲁木齐高新技术产业开发区", + "value": "650172" + } + ], + [{ + "label": "独山子区", + "value": "650202" + }, + { + "label": "克拉玛依区", + "value": "650203" + }, + { + "label": "白碱滩区", + "value": "650204" + }, + { + "label": "乌尔禾区", + "value": "650205" + } + ], + [{ + "label": "高昌区", + "value": "650402" + }, + { + "label": "鄯善县", + "value": "650421" + }, + { + "label": "托克逊县", + "value": "650422" + } + ], + [{ + "label": "伊州区", + "value": "650502" + }, + { + "label": "巴里坤哈萨克自治县", + "value": "650521" + }, + { + "label": "伊吾县", + "value": "650522" + } + ], + [{ + "label": "昌吉市", + "value": "652301" + }, + { + "label": "阜康市", + "value": "652302" + }, + { + "label": "呼图壁县", + "value": "652323" + }, + { + "label": "玛纳斯县", + "value": "652324" + }, + { + "label": "奇台县", + "value": "652325" + }, + { + "label": "吉木萨尔县", + "value": "652327" + }, + { + "label": "木垒哈萨克自治县", + "value": "652328" + } + ], + [{ + "label": "博乐市", + "value": "652701" + }, + { + "label": "阿拉山口市", + "value": "652702" + }, + { + "label": "精河县", + "value": "652722" + }, + { + "label": "温泉县", + "value": "652723" + } + ], + [{ + "label": "库尔勒市", + "value": "652801" + }, + { + "label": "轮台县", + "value": "652822" + }, + { + "label": "尉犁县", + "value": "652823" + }, + { + "label": "若羌县", + "value": "652824" + }, + { + "label": "且末县", + "value": "652825" + }, + { + "label": "焉耆回族自治县", + "value": "652826" + }, + { + "label": "和静县", + "value": "652827" + }, + { + "label": "和硕县", + "value": "652828" + }, + { + "label": "博湖县", + "value": "652829" + }, + { + "label": "库尔勒经济技术开发区", + "value": "652871" + } + ], + [{ + "label": "阿克苏市", + "value": "652901" + }, + { + "label": "温宿县", + "value": "652922" + }, + { + "label": "库车县", + "value": "652923" + }, + { + "label": "沙雅县", + "value": "652924" + }, + { + "label": "新和县", + "value": "652925" + }, + { + "label": "拜城县", + "value": "652926" + }, + { + "label": "乌什县", + "value": "652927" + }, + { + "label": "阿瓦提县", + "value": "652928" + }, + { + "label": "柯坪县", + "value": "652929" + } + ], + [{ + "label": "阿图什市", + "value": "653001" + }, + { + "label": "阿克陶县", + "value": "653022" + }, + { + "label": "阿合奇县", + "value": "653023" + }, + { + "label": "乌恰县", + "value": "653024" + } + ], + [{ + "label": "喀什市", + "value": "653101" + }, + { + "label": "疏附县", + "value": "653121" + }, + { + "label": "疏勒县", + "value": "653122" + }, + { + "label": "英吉沙县", + "value": "653123" + }, + { + "label": "泽普县", + "value": "653124" + }, + { + "label": "莎车县", + "value": "653125" + }, + { + "label": "叶城县", + "value": "653126" + }, + { + "label": "麦盖提县", + "value": "653127" + }, + { + "label": "岳普湖县", + "value": "653128" + }, + { + "label": "伽师县", + "value": "653129" + }, + { + "label": "巴楚县", + "value": "653130" + }, + { + "label": "塔什库尔干塔吉克自治县", + "value": "653131" + } + ], + [{ + "label": "和田市", + "value": "653201" + }, + { + "label": "和田县", + "value": "653221" + }, + { + "label": "墨玉县", + "value": "653222" + }, + { + "label": "皮山县", + "value": "653223" + }, + { + "label": "洛浦县", + "value": "653224" + }, + { + "label": "策勒县", + "value": "653225" + }, + { + "label": "于田县", + "value": "653226" + }, + { + "label": "民丰县", + "value": "653227" + } + ], + [{ + "label": "伊宁市", + "value": "654002" + }, + { + "label": "奎屯市", + "value": "654003" + }, + { + "label": "霍尔果斯市", + "value": "654004" + }, + { + "label": "伊宁县", + "value": "654021" + }, + { + "label": "察布查尔锡伯自治县", + "value": "654022" + }, + { + "label": "霍城县", + "value": "654023" + }, + { + "label": "巩留县", + "value": "654024" + }, + { + "label": "新源县", + "value": "654025" + }, + { + "label": "昭苏县", + "value": "654026" + }, + { + "label": "特克斯县", + "value": "654027" + }, + { + "label": "尼勒克县", + "value": "654028" + } + ], + [{ + "label": "塔城市", + "value": "654201" + }, + { + "label": "乌苏市", + "value": "654202" + }, + { + "label": "额敏县", + "value": "654221" + }, + { + "label": "沙湾县", + "value": "654223" + }, + { + "label": "托里县", + "value": "654224" + }, + { + "label": "裕民县", + "value": "654225" + }, + { + "label": "和布克赛尔蒙古自治县", + "value": "654226" + } + ], + [{ + "label": "阿勒泰市", + "value": "654301" + }, + { + "label": "布尔津县", + "value": "654321" + }, + { + "label": "富蕴县", + "value": "654322" + }, + { + "label": "福海县", + "value": "654323" + }, + { + "label": "哈巴河县", + "value": "654324" + }, + { + "label": "青河县", + "value": "654325" + }, + { + "label": "吉木乃县", + "value": "654326" + } + ], + [{ + "label": "石河子市", + "value": "659001" + }, + { + "label": "阿拉尔市", + "value": "659002" + }, + { + "label": "图木舒克市", + "value": "659003" + }, + { + "label": "五家渠市", + "value": "659004" + }, + { + "label": "铁门关市", + "value": "659006" + } + ] + ], + [ + [{ + "label": "台北", + "value": "660101" + }], + [{ + "label": "高雄", + "value": "660201" + }], + [{ + "label": "基隆", + "value": "660301" + }], + [{ + "label": "台中", + "value": "660401" + }], + [{ + "label": "台南", + "value": "660501" + }], + [{ + "label": "新竹", + "value": "660601" + }], + [{ + "label": "嘉义", + "value": "660701" + }], + [{ + "label": "宜兰", + "value": "660801" + }], + [{ + "label": "桃园", + "value": "660901" + }], + [{ + "label": "苗栗", + "value": "661001" + }], + [{ + "label": "彰化", + "value": "661101" + }], + [{ + "label": "南投", + "value": "661201" + }], + [{ + "label": "云林", + "value": "661301" + }], + [{ + "label": "屏东", + "value": "661401" + }], + [{ + "label": "台东", + "value": "661501" + }], + [{ + "label": "花莲", + "value": "661601" + }], + [{ + "label": "澎湖", + "value": "661701" + }] + ], + [ + [{ + "label": "香港岛", + "value": "670101" + }], + [{ + "label": "九龙", + "value": "670201" + }], + [{ + "label": "新界", + "value": "670301" + }] + ], + [ + [{ + "label": "澳门半岛", + "value": "680101" + }], + [{ + "label": "氹仔岛", + "value": "680201" + }], + [{ + "label": "路环岛", + "value": "680301" + }], + [{ + "label": "路氹城", + "value": "680401" + }] + ] +] +export default areaData; diff --git a/components/mpvue-citypicker/city-data/city.js b/components/mpvue-citypicker/city-data/city.js new file mode 100644 index 0000000..8c1dc26 --- /dev/null +++ b/components/mpvue-citypicker/city-data/city.js @@ -0,0 +1,1503 @@ +/* eslint-disable */ +var cityData = [ + [{ + "label": "市辖区", + "value": "1101" + }], + [{ + "label": "市辖区", + "value": "1201" + }], + [{ + "label": "石家庄市", + "value": "1301" + }, + { + "label": "唐山市", + "value": "1302" + }, + { + "label": "秦皇岛市", + "value": "1303" + }, + { + "label": "邯郸市", + "value": "1304" + }, + { + "label": "邢台市", + "value": "1305" + }, + { + "label": "保定市", + "value": "1306" + }, + { + "label": "张家口市", + "value": "1307" + }, + { + "label": "承德市", + "value": "1308" + }, + { + "label": "沧州市", + "value": "1309" + }, + { + "label": "廊坊市", + "value": "1310" + }, + { + "label": "衡水市", + "value": "1311" + } + ], + [{ + "label": "太原市", + "value": "1401" + }, + { + "label": "大同市", + "value": "1402" + }, + { + "label": "阳泉市", + "value": "1403" + }, + { + "label": "长治市", + "value": "1404" + }, + { + "label": "晋城市", + "value": "1405" + }, + { + "label": "朔州市", + "value": "1406" + }, + { + "label": "晋中市", + "value": "1407" + }, + { + "label": "运城市", + "value": "1408" + }, + { + "label": "忻州市", + "value": "1409" + }, + { + "label": "临汾市", + "value": "1410" + }, + { + "label": "吕梁市", + "value": "1411" + } + ], + [{ + "label": "呼和浩特市", + "value": "1501" + }, + { + "label": "包头市", + "value": "1502" + }, + { + "label": "乌海市", + "value": "1503" + }, + { + "label": "赤峰市", + "value": "1504" + }, + { + "label": "通辽市", + "value": "1505" + }, + { + "label": "鄂尔多斯市", + "value": "1506" + }, + { + "label": "呼伦贝尔市", + "value": "1507" + }, + { + "label": "巴彦淖尔市", + "value": "1508" + }, + { + "label": "乌兰察布市", + "value": "1509" + }, + { + "label": "兴安盟", + "value": "1522" + }, + { + "label": "锡林郭勒盟", + "value": "1525" + }, + { + "label": "阿拉善盟", + "value": "1529" + } + ], + [{ + "label": "沈阳市", + "value": "2101" + }, + { + "label": "大连市", + "value": "2102" + }, + { + "label": "鞍山市", + "value": "2103" + }, + { + "label": "抚顺市", + "value": "2104" + }, + { + "label": "本溪市", + "value": "2105" + }, + { + "label": "丹东市", + "value": "2106" + }, + { + "label": "锦州市", + "value": "2107" + }, + { + "label": "营口市", + "value": "2108" + }, + { + "label": "阜新市", + "value": "2109" + }, + { + "label": "辽阳市", + "value": "2110" + }, + { + "label": "盘锦市", + "value": "2111" + }, + { + "label": "铁岭市", + "value": "2112" + }, + { + "label": "朝阳市", + "value": "2113" + }, + { + "label": "葫芦岛市", + "value": "2114" + } + ], + [{ + "label": "长春市", + "value": "2201" + }, + { + "label": "吉林市", + "value": "2202" + }, + { + "label": "四平市", + "value": "2203" + }, + { + "label": "辽源市", + "value": "2204" + }, + { + "label": "通化市", + "value": "2205" + }, + { + "label": "白山市", + "value": "2206" + }, + { + "label": "松原市", + "value": "2207" + }, + { + "label": "白城市", + "value": "2208" + }, + { + "label": "延边朝鲜族自治州", + "value": "2224" + } + ], + [{ + "label": "哈尔滨市", + "value": "2301" + }, + { + "label": "齐齐哈尔市", + "value": "2302" + }, + { + "label": "鸡西市", + "value": "2303" + }, + { + "label": "鹤岗市", + "value": "2304" + }, + { + "label": "双鸭山市", + "value": "2305" + }, + { + "label": "大庆市", + "value": "2306" + }, + { + "label": "伊春市", + "value": "2307" + }, + { + "label": "佳木斯市", + "value": "2308" + }, + { + "label": "七台河市", + "value": "2309" + }, + { + "label": "牡丹江市", + "value": "2310" + }, + { + "label": "黑河市", + "value": "2311" + }, + { + "label": "绥化市", + "value": "2312" + }, + { + "label": "大兴安岭地区", + "value": "2327" + } + ], + [{ + "label": "市辖区", + "value": "3101" + }], + [{ + "label": "南京市", + "value": "3201" + }, + { + "label": "无锡市", + "value": "3202" + }, + { + "label": "徐州市", + "value": "3203" + }, + { + "label": "常州市", + "value": "3204" + }, + { + "label": "苏州市", + "value": "3205" + }, + { + "label": "南通市", + "value": "3206" + }, + { + "label": "连云港市", + "value": "3207" + }, + { + "label": "淮安市", + "value": "3208" + }, + { + "label": "盐城市", + "value": "3209" + }, + { + "label": "扬州市", + "value": "3210" + }, + { + "label": "镇江市", + "value": "3211" + }, + { + "label": "泰州市", + "value": "3212" + }, + { + "label": "宿迁市", + "value": "3213" + } + ], + [{ + "label": "杭州市", + "value": "3301" + }, + { + "label": "宁波市", + "value": "3302" + }, + { + "label": "温州市", + "value": "3303" + }, + { + "label": "嘉兴市", + "value": "3304" + }, + { + "label": "湖州市", + "value": "3305" + }, + { + "label": "绍兴市", + "value": "3306" + }, + { + "label": "金华市", + "value": "3307" + }, + { + "label": "衢州市", + "value": "3308" + }, + { + "label": "舟山市", + "value": "3309" + }, + { + "label": "台州市", + "value": "3310" + }, + { + "label": "丽水市", + "value": "3311" + } + ], + [{ + "label": "合肥市", + "value": "3401" + }, + { + "label": "芜湖市", + "value": "3402" + }, + { + "label": "蚌埠市", + "value": "3403" + }, + { + "label": "淮南市", + "value": "3404" + }, + { + "label": "马鞍山市", + "value": "3405" + }, + { + "label": "淮北市", + "value": "3406" + }, + { + "label": "铜陵市", + "value": "3407" + }, + { + "label": "安庆市", + "value": "3408" + }, + { + "label": "黄山市", + "value": "3410" + }, + { + "label": "滁州市", + "value": "3411" + }, + { + "label": "阜阳市", + "value": "3412" + }, + { + "label": "宿州市", + "value": "3413" + }, + { + "label": "六安市", + "value": "3415" + }, + { + "label": "亳州市", + "value": "3416" + }, + { + "label": "池州市", + "value": "3417" + }, + { + "label": "宣城市", + "value": "3418" + } + ], + [{ + "label": "福州市", + "value": "3501" + }, + { + "label": "厦门市", + "value": "3502" + }, + { + "label": "莆田市", + "value": "3503" + }, + { + "label": "三明市", + "value": "3504" + }, + { + "label": "泉州市", + "value": "3505" + }, + { + "label": "漳州市", + "value": "3506" + }, + { + "label": "南平市", + "value": "3507" + }, + { + "label": "龙岩市", + "value": "3508" + }, + { + "label": "宁德市", + "value": "3509" + } + ], + [{ + "label": "南昌市", + "value": "3601" + }, + { + "label": "景德镇市", + "value": "3602" + }, + { + "label": "萍乡市", + "value": "3603" + }, + { + "label": "九江市", + "value": "3604" + }, + { + "label": "新余市", + "value": "3605" + }, + { + "label": "鹰潭市", + "value": "3606" + }, + { + "label": "赣州市", + "value": "3607" + }, + { + "label": "吉安市", + "value": "3608" + }, + { + "label": "宜春市", + "value": "3609" + }, + { + "label": "抚州市", + "value": "3610" + }, + { + "label": "上饶市", + "value": "3611" + } + ], + [{ + "label": "济南市", + "value": "3701" + }, + { + "label": "青岛市", + "value": "3702" + }, + { + "label": "淄博市", + "value": "3703" + }, + { + "label": "枣庄市", + "value": "3704" + }, + { + "label": "东营市", + "value": "3705" + }, + { + "label": "烟台市", + "value": "3706" + }, + { + "label": "潍坊市", + "value": "3707" + }, + { + "label": "济宁市", + "value": "3708" + }, + { + "label": "泰安市", + "value": "3709" + }, + { + "label": "威海市", + "value": "3710" + }, + { + "label": "日照市", + "value": "3711" + }, + { + "label": "莱芜市", + "value": "3712" + }, + { + "label": "临沂市", + "value": "3713" + }, + { + "label": "德州市", + "value": "3714" + }, + { + "label": "聊城市", + "value": "3715" + }, + { + "label": "滨州市", + "value": "3716" + }, + { + "label": "菏泽市", + "value": "3717" + } + ], + [{ + "label": "郑州市", + "value": "4101" + }, + { + "label": "开封市", + "value": "4102" + }, + { + "label": "洛阳市", + "value": "4103" + }, + { + "label": "平顶山市", + "value": "4104" + }, + { + "label": "安阳市", + "value": "4105" + }, + { + "label": "鹤壁市", + "value": "4106" + }, + { + "label": "新乡市", + "value": "4107" + }, + { + "label": "焦作市", + "value": "4108" + }, + { + "label": "濮阳市", + "value": "4109" + }, + { + "label": "许昌市", + "value": "4110" + }, + { + "label": "漯河市", + "value": "4111" + }, + { + "label": "三门峡市", + "value": "4112" + }, + { + "label": "南阳市", + "value": "4113" + }, + { + "label": "商丘市", + "value": "4114" + }, + { + "label": "信阳市", + "value": "4115" + }, + { + "label": "周口市", + "value": "4116" + }, + { + "label": "驻马店市", + "value": "4117" + }, + { + "label": "省直辖县级行政区划", + "value": "4190" + } + ], + [{ + "label": "武汉市", + "value": "4201" + }, + { + "label": "黄石市", + "value": "4202" + }, + { + "label": "十堰市", + "value": "4203" + }, + { + "label": "宜昌市", + "value": "4205" + }, + { + "label": "襄阳市", + "value": "4206" + }, + { + "label": "鄂州市", + "value": "4207" + }, + { + "label": "荆门市", + "value": "4208" + }, + { + "label": "孝感市", + "value": "4209" + }, + { + "label": "荆州市", + "value": "4210" + }, + { + "label": "黄冈市", + "value": "4211" + }, + { + "label": "咸宁市", + "value": "4212" + }, + { + "label": "随州市", + "value": "4213" + }, + { + "label": "恩施土家族苗族自治州", + "value": "4228" + }, + { + "label": "省直辖县级行政区划", + "value": "4290" + } + ], + [{ + "label": "长沙市", + "value": "4301" + }, + { + "label": "株洲市", + "value": "4302" + }, + { + "label": "湘潭市", + "value": "4303" + }, + { + "label": "衡阳市", + "value": "4304" + }, + { + "label": "邵阳市", + "value": "4305" + }, + { + "label": "岳阳市", + "value": "4306" + }, + { + "label": "常德市", + "value": "4307" + }, + { + "label": "张家界市", + "value": "4308" + }, + { + "label": "益阳市", + "value": "4309" + }, + { + "label": "郴州市", + "value": "4310" + }, + { + "label": "永州市", + "value": "4311" + }, + { + "label": "怀化市", + "value": "4312" + }, + { + "label": "娄底市", + "value": "4313" + }, + { + "label": "湘西土家族苗族自治州", + "value": "4331" + } + ], + [{ + "label": "广州市", + "value": "4401" + }, + { + "label": "韶关市", + "value": "4402" + }, + { + "label": "深圳市", + "value": "4403" + }, + { + "label": "珠海市", + "value": "4404" + }, + { + "label": "汕头市", + "value": "4405" + }, + { + "label": "佛山市", + "value": "4406" + }, + { + "label": "江门市", + "value": "4407" + }, + { + "label": "湛江市", + "value": "4408" + }, + { + "label": "茂名市", + "value": "4409" + }, + { + "label": "肇庆市", + "value": "4412" + }, + { + "label": "惠州市", + "value": "4413" + }, + { + "label": "梅州市", + "value": "4414" + }, + { + "label": "汕尾市", + "value": "4415" + }, + { + "label": "河源市", + "value": "4416" + }, + { + "label": "阳江市", + "value": "4417" + }, + { + "label": "清远市", + "value": "4418" + }, + { + "label": "东莞市", + "value": "4419" + }, + { + "label": "中山市", + "value": "4420" + }, + { + "label": "潮州市", + "value": "4451" + }, + { + "label": "揭阳市", + "value": "4452" + }, + { + "label": "云浮市", + "value": "4453" + } + ], + [{ + "label": "南宁市", + "value": "4501" + }, + { + "label": "柳州市", + "value": "4502" + }, + { + "label": "桂林市", + "value": "4503" + }, + { + "label": "梧州市", + "value": "4504" + }, + { + "label": "北海市", + "value": "4505" + }, + { + "label": "防城港市", + "value": "4506" + }, + { + "label": "钦州市", + "value": "4507" + }, + { + "label": "贵港市", + "value": "4508" + }, + { + "label": "玉林市", + "value": "4509" + }, + { + "label": "百色市", + "value": "4510" + }, + { + "label": "贺州市", + "value": "4511" + }, + { + "label": "河池市", + "value": "4512" + }, + { + "label": "来宾市", + "value": "4513" + }, + { + "label": "崇左市", + "value": "4514" + } + ], + [{ + "label": "海口市", + "value": "4601" + }, + { + "label": "三亚市", + "value": "4602" + }, + { + "label": "三沙市", + "value": "4603" + }, + { + "label": "儋州市", + "value": "4604" + }, + { + "label": "省直辖县级行政区划", + "value": "4690" + } + ], + [{ + "label": "市辖区", + "value": "5001" + }, + { + "label": "县", + "value": "5002" + } + ], + [{ + "label": "成都市", + "value": "5101" + }, + { + "label": "自贡市", + "value": "5103" + }, + { + "label": "攀枝花市", + "value": "5104" + }, + { + "label": "泸州市", + "value": "5105" + }, + { + "label": "德阳市", + "value": "5106" + }, + { + "label": "绵阳市", + "value": "5107" + }, + { + "label": "广元市", + "value": "5108" + }, + { + "label": "遂宁市", + "value": "5109" + }, + { + "label": "内江市", + "value": "5110" + }, + { + "label": "乐山市", + "value": "5111" + }, + { + "label": "南充市", + "value": "5113" + }, + { + "label": "眉山市", + "value": "5114" + }, + { + "label": "宜宾市", + "value": "5115" + }, + { + "label": "广安市", + "value": "5116" + }, + { + "label": "达州市", + "value": "5117" + }, + { + "label": "雅安市", + "value": "5118" + }, + { + "label": "巴中市", + "value": "5119" + }, + { + "label": "资阳市", + "value": "5120" + }, + { + "label": "阿坝藏族羌族自治州", + "value": "5132" + }, + { + "label": "甘孜藏族自治州", + "value": "5133" + }, + { + "label": "凉山彝族自治州", + "value": "5134" + } + ], + [{ + "label": "贵阳市", + "value": "5201" + }, + { + "label": "六盘水市", + "value": "5202" + }, + { + "label": "遵义市", + "value": "5203" + }, + { + "label": "安顺市", + "value": "5204" + }, + { + "label": "毕节市", + "value": "5205" + }, + { + "label": "铜仁市", + "value": "5206" + }, + { + "label": "黔西南布依族苗族自治州", + "value": "5223" + }, + { + "label": "黔东南苗族侗族自治州", + "value": "5226" + }, + { + "label": "黔南布依族苗族自治州", + "value": "5227" + } + ], + [{ + "label": "昆明市", + "value": "5301" + }, + { + "label": "曲靖市", + "value": "5303" + }, + { + "label": "玉溪市", + "value": "5304" + }, + { + "label": "保山市", + "value": "5305" + }, + { + "label": "昭通市", + "value": "5306" + }, + { + "label": "丽江市", + "value": "5307" + }, + { + "label": "普洱市", + "value": "5308" + }, + { + "label": "临沧市", + "value": "5309" + }, + { + "label": "楚雄彝族自治州", + "value": "5323" + }, + { + "label": "红河哈尼族彝族自治州", + "value": "5325" + }, + { + "label": "文山壮族苗族自治州", + "value": "5326" + }, + { + "label": "西双版纳傣族自治州", + "value": "5328" + }, + { + "label": "大理白族自治州", + "value": "5329" + }, + { + "label": "德宏傣族景颇族自治州", + "value": "5331" + }, + { + "label": "怒江傈僳族自治州", + "value": "5333" + }, + { + "label": "迪庆藏族自治州", + "value": "5334" + } + ], + [{ + "label": "拉萨市", + "value": "5401" + }, + { + "label": "日喀则市", + "value": "5402" + }, + { + "label": "昌都市", + "value": "5403" + }, + { + "label": "林芝市", + "value": "5404" + }, + { + "label": "山南市", + "value": "5405" + }, + { + "label": "那曲地区", + "value": "5424" + }, + { + "label": "阿里地区", + "value": "5425" + } + ], + [{ + "label": "西安市", + "value": "6101" + }, + { + "label": "铜川市", + "value": "6102" + }, + { + "label": "宝鸡市", + "value": "6103" + }, + { + "label": "咸阳市", + "value": "6104" + }, + { + "label": "渭南市", + "value": "6105" + }, + { + "label": "延安市", + "value": "6106" + }, + { + "label": "汉中市", + "value": "6107" + }, + { + "label": "榆林市", + "value": "6108" + }, + { + "label": "安康市", + "value": "6109" + }, + { + "label": "商洛市", + "value": "6110" + } + ], + [{ + "label": "兰州市", + "value": "6201" + }, + { + "label": "嘉峪关市", + "value": "6202" + }, + { + "label": "金昌市", + "value": "6203" + }, + { + "label": "白银市", + "value": "6204" + }, + { + "label": "天水市", + "value": "6205" + }, + { + "label": "武威市", + "value": "6206" + }, + { + "label": "张掖市", + "value": "6207" + }, + { + "label": "平凉市", + "value": "6208" + }, + { + "label": "酒泉市", + "value": "6209" + }, + { + "label": "庆阳市", + "value": "6210" + }, + { + "label": "定西市", + "value": "6211" + }, + { + "label": "陇南市", + "value": "6212" + }, + { + "label": "临夏回族自治州", + "value": "6229" + }, + { + "label": "甘南藏族自治州", + "value": "6230" + } + ], + [{ + "label": "西宁市", + "value": "6301" + }, + { + "label": "海东市", + "value": "6302" + }, + { + "label": "海北藏族自治州", + "value": "6322" + }, + { + "label": "黄南藏族自治州", + "value": "6323" + }, + { + "label": "海南藏族自治州", + "value": "6325" + }, + { + "label": "果洛藏族自治州", + "value": "6326" + }, + { + "label": "玉树藏族自治州", + "value": "6327" + }, + { + "label": "海西蒙古族藏族自治州", + "value": "6328" + } + ], + [{ + "label": "银川市", + "value": "6401" + }, + { + "label": "石嘴山市", + "value": "6402" + }, + { + "label": "吴忠市", + "value": "6403" + }, + { + "label": "固原市", + "value": "6404" + }, + { + "label": "中卫市", + "value": "6405" + } + ], + [{ + "label": "乌鲁木齐市", + "value": "6501" + }, + { + "label": "克拉玛依市", + "value": "6502" + }, + { + "label": "吐鲁番市", + "value": "6504" + }, + { + "label": "哈密市", + "value": "6505" + }, + { + "label": "昌吉回族自治州", + "value": "6523" + }, + { + "label": "博尔塔拉蒙古自治州", + "value": "6527" + }, + { + "label": "巴音郭楞蒙古自治州", + "value": "6528" + }, + { + "label": "阿克苏地区", + "value": "6529" + }, + { + "label": "克孜勒苏柯尔克孜自治州", + "value": "6530" + }, + { + "label": "喀什地区", + "value": "6531" + }, + { + "label": "和田地区", + "value": "6532" + }, + { + "label": "伊犁哈萨克自治州", + "value": "6540" + }, + { + "label": "塔城地区", + "value": "6542" + }, + { + "label": "阿勒泰地区", + "value": "6543" + }, + { + "label": "自治区直辖县级行政区划", + "value": "6590" + } + ], + [{ + "label": "台北", + "value": "6601" + }, + { + "label": "高雄", + "value": "6602" + }, + { + "label": "基隆", + "value": "6603" + }, + { + "label": "台中", + "value": "6604" + }, + { + "label": "台南", + "value": "6605" + }, + { + "label": "新竹", + "value": "6606" + }, + { + "label": "嘉义", + "value": "6607" + }, + { + "label": "宜兰", + "value": "6608" + }, + { + "label": "桃园", + "value": "6609" + }, + { + "label": "苗栗", + "value": "6610" + }, + { + "label": "彰化", + "value": "6611" + }, + { + "label": "南投", + "value": "6612" + }, + { + "label": "云林", + "value": "6613" + }, + { + "label": "屏东", + "value": "6614" + }, + { + "label": "台东", + "value": "6615" + }, + { + "label": "花莲", + "value": "6616" + }, + { + "label": "澎湖", + "value": "6617" + } + ], + [{ + "label": "香港岛", + "value": "6701" + }, + { + "label": "九龙", + "value": "6702" + }, + { + "label": "新界", + "value": "6703" + } + ], + [{ + "label": "澳门半岛", + "value": "6801" + }, + { + "label": "氹仔岛", + "value": "6802" + }, + { + "label": "路环岛", + "value": "6803" + }, + { + "label": "路氹城", + "value": "6804" + } + ] +] +export default cityData; diff --git a/components/mpvue-citypicker/city-data/province.js b/components/mpvue-citypicker/city-data/province.js new file mode 100644 index 0000000..1bd680e --- /dev/null +++ b/components/mpvue-citypicker/city-data/province.js @@ -0,0 +1,139 @@ +/* eslint-disable */ +var provinceData = [{ + "label": "北京市", + "value": "11" + }, + { + "label": "天津市", + "value": "12" + }, + { + "label": "河北省", + "value": "13" + }, + { + "label": "山西省", + "value": "14" + }, + { + "label": "内蒙古自治区", + "value": "15" + }, + { + "label": "辽宁省", + "value": "21" + }, + { + "label": "吉林省", + "value": "22" + }, + { + "label": "黑龙江省", + "value": "23" + }, + { + "label": "上海市", + "value": "31" + }, + { + "label": "江苏省", + "value": "32" + }, + { + "label": "浙江省", + "value": "33" + }, + { + "label": "安徽省", + "value": "34" + }, + { + "label": "福建省", + "value": "35" + }, + { + "label": "江西省", + "value": "36" + }, + { + "label": "山东省", + "value": "37" + }, + { + "label": "河南省", + "value": "41" + }, + { + "label": "湖北省", + "value": "42" + }, + { + "label": "湖南省", + "value": "43" + }, + { + "label": "广东省", + "value": "44" + }, + { + "label": "广西壮族自治区", + "value": "45" + }, + { + "label": "海南省", + "value": "46" + }, + { + "label": "重庆市", + "value": "50" + }, + { + "label": "四川省", + "value": "51" + }, + { + "label": "贵州省", + "value": "52" + }, + { + "label": "云南省", + "value": "53" + }, + { + "label": "西藏自治区", + "value": "54" + }, + { + "label": "陕西省", + "value": "61" + }, + { + "label": "甘肃省", + "value": "62" + }, + { + "label": "青海省", + "value": "63" + }, + { + "label": "宁夏回族自治区", + "value": "64" + }, + { + "label": "新疆维吾尔自治区", + "value": "65" + }, + { + "label": "台湾", + "value": "66" + }, + { + "label": "香港", + "value": "67" + }, + { + "label": "澳门", + "value": "68" + } +] +export default provinceData; diff --git a/components/mpvue-citypicker/mpvueCityPicker.vue b/components/mpvue-citypicker/mpvueCityPicker.vue new file mode 100644 index 0000000..ec02c8b --- /dev/null +++ b/components/mpvue-citypicker/mpvueCityPicker.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/components/mpvue-echarts/src/echarts.vue b/components/mpvue-echarts/src/echarts.vue new file mode 100644 index 0000000..e1cbb66 --- /dev/null +++ b/components/mpvue-echarts/src/echarts.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/components/mpvue-echarts/src/wx-canvas.js b/components/mpvue-echarts/src/wx-canvas.js new file mode 100644 index 0000000..ef58893 --- /dev/null +++ b/components/mpvue-echarts/src/wx-canvas.js @@ -0,0 +1,73 @@ +export default class WxCanvas { + constructor(ctx, canvasId) { + this.ctx = ctx; + this.canvasId = canvasId; + this.chart = null; + + WxCanvas.initStyle(ctx); + this.initEvent(); + } + + getContext(contextType) { + return contextType === '2d' ? this.ctx : null; + } + + setChart(chart) { + this.chart = chart; + } + + attachEvent() { + // noop + } + + detachEvent() { + // noop + } + + static initStyle(ctx) { + const styles = ['fillStyle', 'strokeStyle', 'globalAlpha', + 'textAlign', 'textBaseAlign', 'shadow', 'lineWidth', + 'lineCap', 'lineJoin', 'lineDash', 'miterLimit', 'fontSize']; + + styles.forEach((style) => { + Object.defineProperty(ctx, style, { + set: (value) => { + if ((style !== 'fillStyle' && style !== 'strokeStyle') + || (value !== 'none' && value !== null) + ) { + ctx[`set${style.charAt(0).toUpperCase()}${style.slice(1)}`](value); + } + }, + }); + }); + + ctx.createRadialGradient = () => ctx.createCircularGradient(arguments); + } + + initEvent() { + this.event = {}; + const eventNames = [{ + wxName: 'touchStart', + ecName: 'mousedown', + }, { + wxName: 'touchMove', + ecName: 'mousemove', + }, { + wxName: 'touchEnd', + ecName: 'mouseup', + }, { + wxName: 'touchEnd', + ecName: 'click', + }]; + + eventNames.forEach((name) => { + this.event[name.wxName] = (e) => { + const touch = e.mp.touches[0]; + this.chart._zr.handler.dispatch(name.ecName, { + zrX: name.wxName === 'tap' ? touch.clientX : touch.x, + zrY: name.wxName === 'tap' ? touch.clientY : touch.y, + }); + }; + }); + } +} diff --git a/components/mpvue-picker/mpvuePicker.vue b/components/mpvue-picker/mpvuePicker.vue new file mode 100644 index 0000000..93397ee --- /dev/null +++ b/components/mpvue-picker/mpvuePicker.vue @@ -0,0 +1,484 @@ + + + + + diff --git a/components/mpvueGestureLock/gestureLock.js b/components/mpvueGestureLock/gestureLock.js new file mode 100644 index 0000000..21cf459 --- /dev/null +++ b/components/mpvueGestureLock/gestureLock.js @@ -0,0 +1,175 @@ +class GestureLock { + + constructor(containerWidth, cycleRadius) { + this.containerWidth = containerWidth; // 容器宽度 + this.cycleRadius = cycleRadius; // 圆的半径 + + this.circleArray = []; // 全部圆的对象数组 + this.checkPoints = []; // 选中的圆的对象数组 + this.lineArray = []; // 已激活锁之间的线段数组 + this.lastCheckPoint = 0; // 最后一个激活的锁 + this.offsetX = 0; // 容器的 X 偏移 + this.offsetY = 0; // 容器的 Y 偏移 + this.activeLine = {}; // 最后一个激活的锁与当前位置之间的线段 + + this.windowWidth = wx.getSystemInfoSync().windowWidth; // 窗口大小(用于rpx 和 px 转换) + + this.initCircleArray(); + } + + // 初始化 画布上的 9个圆 + initCircleArray() { + const cycleMargin = (this.containerWidth - 6 * this.cycleRadius) / 6; + let count = 0; + for (let i = 0; i < 3; i++) { + for (let j = 0; j < 3; j++) { + count++; + this.circleArray.push({ + count: count, + x: this.rpxTopx((cycleMargin + this.cycleRadius) * (j * 2 + 1)), + y: this.rpxTopx((cycleMargin + this.cycleRadius) * (i * 2 + 1)), + radius: this.rpxTopx(this.cycleRadius), + check: false, + style: { + left: (cycleMargin + this.cycleRadius) * (j * 2 + 1) - this.cycleRadius + 'rpx', + top: (cycleMargin + this.cycleRadius) * (i * 2 + 1) - this.cycleRadius + 'rpx', + width: this.cycleRadius * 2 + 'rpx', + } + }); + } + } + } + + onTouchStart(e) { + this.setOffset(e); + this.checkTouch({ + x: e.touches[0].pageX - this.offsetX, + y: e.touches[0].pageY - this.offsetY + }); + } + + onTouchMove(e) { + this.moveDraw(e) + } + + onTouchEnd(e) { + const checkPoints = this.checkPoints; + this.reset(); + return checkPoints; + } + + // 初始化 偏移量 + setOffset(e) { + this.offsetX = e.currentTarget.offsetLeft; + this.offsetY = e.currentTarget.offsetTop; + } + + // 检测当时 触摸位置是否位于 锁上 + checkTouch({ + x, + y + }) { + for (let i = 0; i < this.circleArray.length; i++) { + let point = this.circleArray[i]; + if (this.isPointInCycle(x, y, point.x, point.y, point.radius)) { + if (!point.check) { + this.checkPoints.push(point.count); + if (this.lastCheckPoint != 0) { + // 已激活锁之间的线段 + const line = this.drawLine(this.lastCheckPoint, point); + this.lineArray.push(line); + } + this.lastCheckPoint = point; + } + point.check = true; + return; + } + } + } + + // 画线 - 返回 样式 对象 + drawLine(start, end) { + const width = this.getPointDis(start.x, start.y, end.x, end.y); + const rotate = this.getAngle(start, end); + + return { + activeLeft: start.x + 'px', + activeTop: start.y + 'px', + activeWidth: width + 'px', + activeRotate: rotate + 'deg' + } + + } + + // 获取 画线的 角度 + getAngle(start, end) { + var diff_x = end.x - start.x, + diff_y = end.y - start.y; + if (diff_x >= 0) { + return 360 * Math.atan(diff_y / diff_x) / (2 * Math.PI); + } else { + return 180 + 360 * Math.atan(diff_y / diff_x) / (2 * Math.PI); + } + } + + // 判断 当前点是否位于 锁内 + isPointInCycle(x, y, circleX, circleY, radius) { + return (this.getPointDis(x, y, circleX, circleY) < radius) ? true : false; + } + + // 获取两点之间距离 + getPointDis(ax, ay, bx, by) { + return Math.sqrt(Math.pow(ax - bx, 2) + Math.pow(ay - by, 2)); + } + + // 移动 绘制 + moveDraw(e) { + // 画经过的圆 + const x = e.touches[0].pageX - this.offsetX; + const y = e.touches[0].pageY - this.offsetY; + this.checkTouch({ + x, + y + }); + + // 画 最后一个激活的锁与当前位置之间的线段 + this.activeLine = this.drawLine(this.lastCheckPoint, { + x, + y + }); + } + + // 使 画布 恢复初始状态 + reset() { + this.circleArray.forEach((item) => { + item.check = false; + }); + this.checkPoints = []; + this.lineArray = []; + this.activeLine = {}; + this.lastCheckPoint = 0; + } + + + // 获取 最后一个激活的锁与当前位置之间的线段 + getActiveLine() { + return this.activeLine; + } + + // 获取 圆对象数组 + getCycleArray() { + return this.circleArray; + } + + // 获取 已激活锁之间的线段 + getLineArray() { + return this.lineArray; + } + + // 将 RPX 转换成 PX + rpxTopx(rpx) { + return rpx / 750 * this.windowWidth; + } +} + +export default GestureLock; diff --git a/components/mpvueGestureLock/index.vue b/components/mpvueGestureLock/index.vue new file mode 100644 index 0000000..a2cefdd --- /dev/null +++ b/components/mpvueGestureLock/index.vue @@ -0,0 +1,138 @@ + + + + diff --git a/components/my-paging/my-paging.vue b/components/my-paging/my-paging.vue new file mode 100644 index 0000000..7c04929 --- /dev/null +++ b/components/my-paging/my-paging.vue @@ -0,0 +1,157 @@ + + + + + + diff --git a/components/page-foot/page-foot.vue b/components/page-foot/page-foot.vue new file mode 100644 index 0000000..1154dbe --- /dev/null +++ b/components/page-foot/page-foot.vue @@ -0,0 +1,38 @@ + + + + diff --git a/components/page-head/page-head.vue b/components/page-head/page-head.vue new file mode 100644 index 0000000..07ed46d --- /dev/null +++ b/components/page-head/page-head.vue @@ -0,0 +1,16 @@ + + diff --git a/components/pullDown/pullDown.vue b/components/pullDown/pullDown.vue new file mode 100644 index 0000000..10058a2 --- /dev/null +++ b/components/pullDown/pullDown.vue @@ -0,0 +1,663 @@ + + + + + diff --git a/components/search/index.vue b/components/search/index.vue new file mode 100644 index 0000000..c9239e9 --- /dev/null +++ b/components/search/index.vue @@ -0,0 +1,85 @@ + + + + + \ No newline at end of file diff --git a/components/show-modal/show-modal.vue b/components/show-modal/show-modal.vue new file mode 100644 index 0000000..f8b523a --- /dev/null +++ b/components/show-modal/show-modal.vue @@ -0,0 +1,456 @@ + + + + diff --git a/components/tab-nvue/mediaList.vue b/components/tab-nvue/mediaList.vue new file mode 100644 index 0000000..ea3d224 --- /dev/null +++ b/components/tab-nvue/mediaList.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/components/u-charts/u-charts.js b/components/u-charts/u-charts.js new file mode 100644 index 0000000..3b1b798 --- /dev/null +++ b/components/u-charts/u-charts.js @@ -0,0 +1,5046 @@ +/* + * uCharts v1.8.5.20190815 + * uni-app平台高性能跨全端图表,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360) + * Copyright (c) 2019 QIUN秋云 https://www.ucharts.cn All rights reserved. + * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) + * + * uCharts官方网站 + * https://www.uCharts.cn + * + * 开源地址: + * https://gitee.com/uCharts/uCharts + * + * uni-app插件市场地址: + * http://ext.dcloud.net.cn/plugin?id=271 + * + */ + +'use strict'; + +var config = { + yAxisWidth: 15, + yAxisSplit: 5, + xAxisHeight: 15, + xAxisLineHeight: 15, + legendHeight: 15, + yAxisTitleWidth: 15, + padding: [10, 10, 10, 10], + pixelRatio: 1, + rotate: false, + columePadding: 3, + fontSize: 13, + //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'], + dataPointShape: ['circle', 'circle', 'circle', 'circle'], + colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'], + pieChartLinePadding: 15, + pieChartTextPadding: 5, + xAxisTextPadding: 3, + titleColor: '#333333', + titleFontSize: 20, + subtitleColor: '#999999', + subtitleFontSize: 15, + toolTipPadding: 3, + toolTipBackground: '#000000', + toolTipOpacity: 0.7, + toolTipLineHeight: 20, + radarGridCount: 3, + radarLabelTextMargin: 15, + gaugeLabelTextMargin: 15 +}; + +let assign; +if (Object.assign) { + assign = Object.assign; +} else { + // 使用polyfill + assign = function(target, varArgs) { + if (target == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + var to = Object(target); + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + if (nextSource != null) { + for (var nextKey in nextSource) { + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + } +} + +var util = { + toFixed: function toFixed(num, limit) { + limit = limit || 2; + if (this.isFloat(num)) { + num = num.toFixed(limit); + } + return num; + }, + isFloat: function isFloat(num) { + return num % 1 !== 0; + }, + approximatelyEqual: function approximatelyEqual(num1, num2) { + return Math.abs(num1 - num2) < 1e-10; + }, + isSameSign: function isSameSign(num1, num2) { + return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2; + }, + isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) { + return this.isSameSign(p1.x, p2.x); + }, + isCollision: function isCollision(obj1, obj2) { + obj1.end = {}; + obj1.end.x = obj1.start.x + obj1.width; + obj1.end.y = obj1.start.y - obj1.height; + obj2.end = {}; + obj2.end.x = obj2.start.x + obj2.width; + obj2.end.y = obj2.start.y - obj2.height; + var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y; + return !flag; + } +}; + +//兼容H5点击事件 +function getH5Offset(e) { + e.mp = { + changedTouches: [] + }; + e.mp.changedTouches.push({ + x: e.offsetX, + y: e.offsetY + }); + return e; +} + +// hex 转 rgba +function hexToRgb(hexValue, opc) { + var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + var hex = hexValue.replace(rgx, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + var r = parseInt(rgb[1], 16); + var g = parseInt(rgb[2], 16); + var b = parseInt(rgb[3], 16); + return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')'; +} + +function findRange(num, type, limit) { + if (isNaN(num)) { + throw new Error('[uCharts] unvalid series data!'); + } + limit = limit || 10; + type = type ? type : 'upper'; + var multiple = 1; + while (limit < 1) { + limit *= 10; + multiple *= 10; + } + if (type === 'upper') { + num = Math.ceil(num * multiple); + } else { + num = Math.floor(num * multiple); + } + while (num % limit !== 0) { + if (type === 'upper') { + num++; + } else { + num--; + } + } + return num / multiple; +} + +function calCandleMA(dayArr, nameArr, colorArr, kdata) { + let seriesTemp = []; + for (let k = 0; k < dayArr.length; k++) { + let seriesItem = { + data: [], + name: nameArr[k], + color: colorArr[k] + }; + for (let i = 0, len = kdata.length; i < len; i++) { + if (i < dayArr[k]) { + seriesItem.data.push(null); + continue; + } + let sum = 0; + for (let j = 0; j < dayArr[k]; j++) { + sum += kdata[i - j][1]; + } + seriesItem.data.push(+(sum / dayArr[k]).toFixed(3)); + } + seriesTemp.push(seriesItem); + } + return seriesTemp; +} + +function calValidDistance(distance, chartData, config, opts) { + var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3]; + var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length-1); + var validDistance = distance; + if (distance >= 0) { + validDistance = 0; + } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) { + validDistance = dataChartAreaWidth - dataChartWidth; + } + return validDistance; +} + +function isInAngleRange(angle, startAngle, endAngle) { + function adjust(angle) { + while (angle < 0) { + angle += 2 * Math.PI; + } + while (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + } + angle = adjust(angle); + startAngle = adjust(startAngle); + endAngle = adjust(endAngle); + if (startAngle > endAngle) { + endAngle += 2 * Math.PI; + if (angle < startAngle) { + angle += 2 * Math.PI; + } + } + return angle >= startAngle && angle <= endAngle; +} + +function calRotateTranslate(x, y, h) { + var xv = x; + var yv = h - y; + var transX = xv + (h - yv - xv) / Math.sqrt(2); + transX *= -1; + var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2); + return { + transX: transX, + transY: transY + }; +} + +function createCurveControlPoints(points, i) { + + function isNotMiddlePoint(points, i) { + if (points[i - 1] && points[i + 1]) { + return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, + points[ + i + 1].y); + } else { + return false; + } + } + var a = 0.2; + var b = 0.2; + var pAx = null; + var pAy = null; + var pBx = null; + var pBy = null; + if (i < 1) { + pAx = points[0].x + (points[1].x - points[0].x) * a; + pAy = points[0].y + (points[1].y - points[0].y) * a; + } else { + pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a; + pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a; + } + + if (i > points.length - 3) { + var last = points.length - 1; + pBx = points[last].x - (points[last].x - points[last - 1].x) * b; + pBy = points[last].y - (points[last].y - points[last - 1].y) * b; + } else { + pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b; + pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b; + } + if (isNotMiddlePoint(points, i + 1)) { + pBy = points[i + 1].y; + } + if (isNotMiddlePoint(points, i)) { + pAy = points[i].y; + } + return { + ctrA: { + x: pAx, + y: pAy + }, + ctrB: { + x: pBx, + y: pBy + } + }; +} + +function convertCoordinateOrigin(x, y, center) { + return { + x: center.x + x, + y: center.y - y + }; +} + +function avoidCollision(obj, target) { + if (target) { + // is collision test + while (util.isCollision(obj, target)) { + if (obj.start.x > 0) { + obj.start.y--; + } else if (obj.start.x < 0) { + obj.start.y++; + } else { + if (obj.start.y > 0) { + obj.start.y++; + } else { + obj.start.y--; + } + } + } + } + return obj; +} + +function fillSeries(series, opts, config) { + var index = 0; + return series.map(function(item) { + if (!item.color) { + item.color = config.colors[index]; + index = (index + 1) % config.colors.length; + } + if (!item.type) { + item.type = opts.type; + } + if (typeof item.show == "undefined") { + item.show = true; + } + if (!item.type) { + item.type = opts.type; + } + if (!item.pointShape) { + item.pointShape = "circle"; + } + if (!item.legendShape) { + switch (item.type) { + case 'line': + item.legendShape = "line"; + break; + case 'column': + item.legendShape = "rect"; + break; + case 'area': + item.legendShape = "triangle"; + break; + default: + item.legendShape = "circle"; + } + } + return item; + }); +} + +function getDataRange(minData, maxData) { + var limit = 0; + var range = maxData - minData; + if (range >= 10000) { + limit = 1000; + } else if (range >= 1000) { + limit = 100; + } else if (range >= 100) { + limit = 10; + } else if (range >= 10) { + limit = 5; + } else if (range >= 1) { + limit = 1; + } else if (range >= 0.1) { + limit = 0.1; + } else if (range >= 0.01) { + limit = 0.01; + } else if (range >= 0.001) { + limit = 0.001; + } else if (range >= 0.0001) { + limit = 0.0001; + } else if (range >= 0.00001) { + limit = 0.00001; + } else { + limit = 0.000001; + } + return { + minRange: findRange(minData, 'lower', limit), + maxRange: findRange(maxData, 'upper', limit) + }; +} + +function measureText(text) { + var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize; + text = String(text); + var text = text.split(''); + var width = 0; + for (let i = 0; i < text.length; i++) { + let item = text[i]; + if (/[a-zA-Z]/.test(item)) { + width += 7; + } else if (/[0-9]/.test(item)) { + width += 5.5; + } else if (/\./.test(item)) { + width += 2.7; + } else if (/-/.test(item)) { + width += 3.25; + } else if (/[\u4e00-\u9fa5]/.test(item)) { + width += 10; + } else if (/\(|\)/.test(item)) { + width += 3.73; + } else if (/\s/.test(item)) { + width += 2.5; + } else if (/%/.test(item)) { + width += 8; + } else { + width += 10; + } + } + return width * fontSize / 10; +} + +function dataCombine(series) { + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data); + }, []); +} + +function dataCombineStack(series, len) { + var sum = new Array(len); + for (var j = 0; j < sum.length; j++) { + sum[j] = 0; + } + for (var i = 0; i < series.length; i++) { + for (var j = 0; j < sum.length; j++) { + sum[j] += series[i].data[j]; + } + } + return series.reduce(function(a, b) { + return (a.data ? a.data : a).concat(b.data).concat(sum); + }, []); +} + +function getTouches(touches, opts, e) { + let x, y; + if (touches.clientX) { + if (opts.rotate) { + y = opts.height - touches.clientX * opts.pixelRatio; + x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) * + opts.pixelRatio; + } else { + x = touches.clientX * opts.pixelRatio; + y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) * + opts.pixelRatio; + } + } else { + if (opts.rotate) { + y = opts.height - touches.x * opts.pixelRatio; + x = touches.y * opts.pixelRatio; + } else { + x = touches.x * opts.pixelRatio; + y = touches.y * opts.pixelRatio; + } + } + return { + x: x, + y: y + } +} + +function getSeriesDataItem(series, index) { + var data = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + if (item.data[index] !== null && typeof item.data[index] !== 'undefined' && item.show) { + let seriesItem = {}; + seriesItem.color = item.color; + seriesItem.type = item.type; + seriesItem.style = item.style; + seriesItem.pointShape = item.pointShape; + seriesItem.disableLegend = item.disableLegend; + seriesItem.name = item.name; + seriesItem.show = item.show; + seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index]; + data.push(seriesItem); + } + } + return data; +} + +function getMaxTextListLength(list) { + var lengthList = list.map(function(item) { + return measureText(item); + }); + return Math.max.apply(null, lengthList); +} + +function getRadarCoordinateSeries(length) { + var eachAngle = 2 * Math.PI / length; + var CoordinateSeries = []; + for (var i = 0; i < length; i++) { + CoordinateSeries.push(eachAngle * i); + } + + return CoordinateSeries.map(function(item) { + return -1 * item + Math.PI / 2; + }); +} + +function getToolTipData(seriesData, calPoints, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + + var textList = seriesData.map(function(item) { + return { + text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data, + color: item.color + }; + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + for (let i = 0; i < validCalPoints.length; i++) { + let item = validCalPoints[i]; + offset.x = Math.round(item.x); + offset.y += item.y; + } + offset.y /= validCalPoints.length; + return { + textList: textList, + offset: offset + }; +} + +function getMixToolTipData(seriesData, calPoints, index, categories) { + var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; + var textList = seriesData.map(function(item) { + return { + text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data, + color: item.color, + disableLegend: item.disableLegend ? true : false + }; + }); + textList = textList.filter(function(item) { + if (item.disableLegend !== true) { + return item; + } + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + for (let i = 0; i < validCalPoints.length; i++) { + let item = validCalPoints[i]; + offset.x = Math.round(item.x); + offset.y += item.y; + } + offset.y /= validCalPoints.length; + return { + textList: textList, + offset: offset + }; +} + +function getCandleToolTipData(series, seriesData, calPoints, index, categories, extra) { + var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + let upColor = extra.color.upFill; + let downColor = extra.color.downFill; + //颜色顺序为开盘,收盘,最低,最高 + let color = [upColor, upColor, downColor, upColor]; + var textList = []; + let text0 = { + text: categories[index], + color: null + }; + textList.push(text0); + seriesData.map(function(item) { + if (index == 0 && item.data[1] - item.data[0] < 0) { + color[1] = downColor; + } else { + if (item.data[0] < series[index - 1][1]) { + color[0] = downColor; + } + if (item.data[1] < item.data[0]) { + color[1] = downColor; + } + if (item.data[2] > series[index - 1][1]) { + color[2] = upColor; + } + if (item.data[3] < series[index - 1][1]) { + color[3] = downColor; + } + } + let text1 = { + text: '开盘:' + item.data[0], + color: color[0] + }; + let text2 = { + text: '收盘:' + item.data[1], + color: color[1] + }; + let text3 = { + text: '最低:' + item.data[2], + color: color[2] + }; + let text4 = { + text: '最高:' + item.data[3], + color: color[3] + }; + textList.push(text1, text2, text3, text4); + }); + var validCalPoints = []; + var offset = { + x: 0, + y: 0 + }; + for (let i = 0; i < calPoints.length; i++) { + let points = calPoints[i]; + if (typeof points[index] !== 'undefined' && points[index] !== null) { + validCalPoints.push(points[index]); + } + } + offset.x = Math.round(validCalPoints[0][0].x); + return { + textList: textList, + offset: offset + }; +} + +function filterSeries(series) { + let tempSeries = []; + for (let i = 0; i < series.length; i++) { + if (series[i].show == true) { + tempSeries.push(series[i]) + } + } + return tempSeries; +} + +function findCurrentIndex(currentPoints, xAxisPoints, opts, config) { + var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var currentIndex = -1; + var spacing = 0; + if((opts.type=='line' || opts.type=='area') && opts.xAxis.boundaryGap=='justify'){ + spacing = opts.chartData.eachSpacing/2; + } + if (isInExactChartArea(currentPoints, opts, config)) { + xAxisPoints.forEach(function(item, index) { + if (currentPoints.x + offset + spacing > item) { + currentIndex = index; + } + }); + } + return currentIndex; +} + +function findLegendIndex(currentPoints, legendData, opts) { + let currentIndex = -1; + if (isInExactLegendArea(currentPoints, legendData.area)) { + let points = legendData.points; + let index = -1; + for (let i = 0, len = points.length; i < len; i++) { + let item = points[i]; + for (let j = 0; j < item.length; j++) { + index += 1; + let area = item[j]['area']; + if (currentPoints.x > area[0] && currentPoints.x < area[2] && currentPoints.y > area[1] && currentPoints.y < area[3]) { + currentIndex = index; + break; + } + } + } + return currentIndex; + } + return currentIndex; +} + +function isInExactLegendArea(currentPoints, area) { + return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && + currentPoints.y < area.end.y; +} + +function isInExactChartArea(currentPoints, opts, config) { + return currentPoints.x < opts.width - opts.area[1] + 10 && currentPoints.x > opts.area[3] -10 && currentPoints.y > opts.area[0] && currentPoints.y < opts.height - opts.area[2]; +} + +function findRadarChartCurrentIndex(currentPoints, radarData, count) { + var eachAngleArea = 2 * Math.PI / count; + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) { + var fixAngle = function fixAngle(angle) { + if (angle < 0) { + angle += 2 * Math.PI; + } + if (angle > 2 * Math.PI) { + angle -= 2 * Math.PI; + } + return angle; + }; + + var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x); + angle = -1 * angle; + if (angle < 0) { + angle += 2 * Math.PI; + } + + var angleList = radarData.angleList.map(function(item) { + item = fixAngle(-1 * item); + + return item; + }); + + angleList.forEach(function(item, index) { + var rangeStart = fixAngle(item - eachAngleArea / 2); + var rangeEnd = fixAngle(item + eachAngleArea / 2); + if (rangeEnd < rangeStart) { + rangeEnd += 2 * Math.PI; + } + if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= + rangeEnd) { + currentIndex = index; + } + }); + } + + return currentIndex; +} + +function findFunnelChartCurrentIndex(currentPoints, funnelData) { + var currentIndex = -1; + for (var i = 0, len = funnelData.series.length; i < len; i++) { + var item = funnelData.series[i]; + if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findWordChartCurrentIndex(currentPoints, wordData) { + var currentIndex = -1; + for (var i = 0, len = wordData.length; i < len; i++) { + var item = wordData[i]; + if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) { + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findMapChartCurrentIndex(currentPoints, opts) { + var currentIndex = -1; + var cData=opts.chartData.mapData; + var data=opts.series; + var tmp=pointToCoordinate(currentPoints.y, currentPoints.x,cData.bounds,cData.scale,cData.xoffset,cData.yoffset); + var poi=[tmp.x, tmp.y]; + for (var i = 0, len = data.length; i < len; i++) { + var item = data[i].geometry.coordinates; + if(isPoiWithinPoly(poi,item)){ + currentIndex = i; + break; + } + } + return currentIndex; +} + +function findPieChartCurrentIndex(currentPoints, pieData) { + var currentIndex = -1; + if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) { + var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x); + angle = -angle; + for (var i = 0, len = pieData.series.length; i < len; i++) { + var item = pieData.series[i]; + if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) { + currentIndex = i; + break; + } + } + } + + return currentIndex; +} + +function isInExactPieChartArea(currentPoints, center, radius) { + return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2); +} + +function splitPoints(points) { + var newPoints = []; + var items = []; + points.forEach(function(item, index) { + if (item !== null) { + items.push(item); + } else { + if (items.length) { + newPoints.push(items); + } + items = []; + } + }); + if (items.length) { + newPoints.push(items); + } + + return newPoints; +} + +function calLegendData(series, opts, config, chartData) { + let legendData = { + area: { + start: { + x: 0, + y: 0 + }, + end: { + x: 0, + y: 0 + }, + width: 0, + height: 0, + wholeWidth: 0, + wholeHeight: 0 + }, + points: [], + widthArr: [], + heightArr: [] + }; + if (opts.legend.show === false) { + chartData.legendData = legendData; + return legendData; + } + + let padding = opts.legend.padding; + let margin = opts.legend.margin; + let fontSize = opts.legend.fontSize; + let shapeWidth = 15 * opts.pixelRatio; + let shapeRight = 5 * opts.pixelRatio; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + let legendList = []; + let widthCount = 0; + let widthCountArr = []; + let currentRow = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize) + opts.legend.itemGap; + if (widthCount + itemWidth > opts.width - opts.padding[1] - opts.padding[3]) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap); + widthCount = itemWidth; + currentRow = [item]; + } else { + widthCount += itemWidth; + currentRow.push(item); + } + } + if (currentRow.length) { + legendList.push(currentRow); + widthCountArr.push(widthCount - opts.legend.itemGap); + legendData.widthArr = widthCountArr; + let legendWidth = Math.max.apply(null, widthCountArr); + switch (opts.legend.float) { + case 'left': + legendData.area.start.x = opts.padding[3]; + legendData.area.end.x = opts.padding[3] + 2 * padding; + break; + case 'right': + legendData.area.start.x = opts.width - opts.padding[1] - legendWidth - 2 * padding; + legendData.area.end.x = opts.width - opts.padding[1]; + break; + default: + legendData.area.start.x = (opts.width - legendWidth) / 2 - padding; + legendData.area.end.x = (opts.width + legendWidth) / 2 + padding; + } + legendData.area.width = legendWidth + 2 * padding; + legendData.area.wholeWidth = legendWidth + 2 * padding; + legendData.area.height = legendList.length * lineHeight + 2 * padding; + legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin; + legendData.points = legendList; + } + } else { + let len = series.length; + let maxHeight = opts.height - opts.padding[0] - opts.padding[2] - 2 * margin - 2 * padding; + let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len); + legendData.area.height = maxLength * lineHeight + padding * 2; + legendData.area.wholeHeight = maxLength * lineHeight + padding * 2; + switch (opts.legend.float) { + case 'top': + legendData.area.start.y = opts.padding[0] + margin; + legendData.area.end.y = opts.padding[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.padding[2] - margin - legendData.area.height; + legendData.area.end.y = opts.height - opts.padding[2] - margin; + break; + default: + legendData.area.start.y = (opts.height - legendData.area.height) / 2; + legendData.area.end.y = (opts.height + legendData.area.height) / 2; + } + let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1); + let currentRow = []; + for (let i = 0; i < lineNum; i++) { + let temp = series.slice(i * maxLength, i * maxLength + maxLength); + currentRow.push(temp); + } + + legendData.points = currentRow; + + if (currentRow.length) { + for (let i = 0; i < currentRow.length; i++) { + let item = currentRow[i]; + let maxWidth = 0; + for (let j = 0; j < item.length; j++) { + let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize) + opts.legend.itemGap; + if (itemWidth > maxWidth) { + maxWidth = itemWidth; + } + } + legendData.widthArr.push(maxWidth); + legendData.heightArr.push(item.length * lineHeight + padding * 2); + } + let legendWidth = 0 + for (let i = 0; i < legendData.widthArr.length; i++) { + legendWidth += legendData.widthArr[i]; + } + legendData.area.width = legendWidth - opts.legend.itemGap + 2 * padding; + legendData.area.wholeWidth = legendData.area.width + padding; + } + } + + switch (opts.legend.position) { + case 'top': + legendData.area.start.y = opts.padding[0] + margin; + legendData.area.end.y = opts.padding[0] + margin + legendData.area.height; + break; + case 'bottom': + legendData.area.start.y = opts.height - opts.padding[2] - legendData.area.height - margin; + legendData.area.end.y = opts.height - opts.padding[2] - margin; + break; + case 'left': + legendData.area.start.x = opts.padding[3]; + legendData.area.end.x = opts.padding[3] + legendData.area.width; + break; + case 'right': + legendData.area.start.x = opts.width - opts.padding[1] - legendData.area.width; + legendData.area.end.x = opts.width - opts.padding[1]; + break; + } + chartData.legendData = legendData; + return legendData; +} + +function calCategoriesData(categories, opts, config, eachSpacing) { + var result = { + angle: 0, + xAxisHeight: config.xAxisHeight + }; + var categoriesTextLenth = categories.map(function(item) { + return measureText(item); + }); + var maxTextLength = Math.max.apply(this, categoriesTextLenth); + + if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) { + result.angle = 45 * Math.PI / 180; + result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle); + } + return result; +} + +function getRadarDataPoints(angleList, center, radius, series, opts) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + + var radarOption = opts.extra.radar || {}; + radarOption.max = radarOption.max || 0; + var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series))); + + var data = []; + for (let i = 0; i < series.length; i++) { + let each = series[i]; + let listItem = {}; + listItem.color = each.color; + listItem.data = []; + each.data.forEach(function(item, index) { + let tmp = {}; + tmp.angle = angleList[index]; + + tmp.proportion = item / maxData; + tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * + process * Math.sin(tmp.angle), center); + listItem.data.push(tmp); + }); + + data.push(listItem); + } + + return data; +} + +function getPieDataPoints(series, radius) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + + var count = 0; + var _start_ = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0) { + item._proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + } + item._radius_ = radius; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._proportion_ * Math.PI; + } + + return series; +} + +function getFunnelDataPoints(series, radius) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + series = series.sort(function(a,b){return parseInt(b.data)-parseInt(a.data);}); + for (let i = 0; i < series.length; i++) { + series[i].radius = series[i].data/series[0].data*radius*process; + series[i]._proportion_ = series[i].data/series[0].data; + } + return series.reverse(); +} + +function getRoseDataPoints(series, type, minRadius, radius) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var count = 0; + var _start_ = 0; + + var dataArr = []; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + count += item.data; + dataArr.push(item.data); + } + + var minData = Math.min.apply(null, dataArr); + var maxData = Math.max.apply(null, dataArr); + var radiusLength = radius - minRadius; + + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (count === 0 || type == 'area') { + item._proportion_ = item.data / count * process; + item._rose_proportion_ = 1 / series.length * process; + } else { + item._proportion_ = item.data / count * process; + item._rose_proportion_ = item.data / count * process; + } + item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData)); + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item._start_ = _start_; + _start_ += 2 * item._rose_proportion_ * Math.PI; + } + + return series; +} + +function getArcbarDataPoints(series, arcbarOption) { + var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + if (process == 1) { + process = 0.999999; + } + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + let totalAngle; + if (arcbarOption.type == 'default') { + if (arcbarOption.endAngle < arcbarOption.startAngle) { + totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle; + } else{ + totalAngle = arcbarOption.startAngle - arcbarOption.endAngle; + } + } else { + totalAngle = 2; + } + item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle; + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getGaugeAxisPoints(categories, startAngle, endAngle) { + let totalAngle = startAngle - endAngle + 1; + let tempStartAngle = startAngle; + for (let i = 0; i < categories.length; i++) { + categories[i].value = categories[i].value === null ? 0 : categories[i].value; + categories[i]._startAngle_ = tempStartAngle; + categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle; + if (categories[i]._endAngle_ >= 2) { + categories[i]._endAngle_ = categories[i]._endAngle_ % 2; + } + tempStartAngle = categories[i]._endAngle_; + } + return categories; +} + +function getGaugeDataPoints(series, categories, gaugeOption) { + let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + item.data = item.data === null ? 0 : item.data; + if (gaugeOption.pointer.color == 'auto') { + for (let i = 0; i < categories.length; i++) { + if (item.data <= categories[i].value) { + item.color = categories[i].color; + break; + } + } + } else { + item.color = gaugeOption.pointer.color; + } + let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle; + item._oldAngle_ = gaugeOption.oldAngle; + if (gaugeOption.oldAngle < gaugeOption.endAngle) { + item._oldAngle_ += 2; + } + if (item.data >= gaugeOption.oldData) { + item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle; + } else { + item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process; + } + if (item._proportion_ >= 2) { + item._proportion_ = item._proportion_ % 2; + } + } + return series; +} + +function getPieTextMaxLength(series) { + series = getPieDataPoints(series); + let maxLength = 0; + for (let i = 0; i < series.length; i++) { + let item = series[i]; + let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%'; + maxLength = Math.max(maxLength, measureText(text)); + } + + return maxLength; +} + +function fixColumeData(points, eachSpacing, columnLen, index, config, opts) { + return points.map(function(item) { + if (item === null) { + return null; + } + item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / columnLen); + + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width); + } + if (item.width <= 0) { + item.width = 1; + } + item.x += (index + 0.5 - columnLen / 2) * item.width; + return item; + }); +} + +function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) { + return points.map(function(item) { + if (item === null) { + return null; + } + item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2); + + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width); + } + + if (index > 0) { + item.width -= 2 * border; + } + return item; + }); +} + +function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) { + + return points.map(function(item, indexn) { + + if (item === null) { + return null; + } + item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2); + + if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) { + item.width = Math.min(item.width, +opts.extra.column.width); + } + return item; + }); +} + +function getXAxisPoints(categories, opts, config) { + var yAxisTotalWidth = config.yAxisWidth + config.yAxisTitleWidth; + var spacingValid = opts.width - opts.area[1] - opts.area[3]; + var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length; + if((opts.type=='line' || opts.type=='area') && dataCount>1 && opts.xAxis.boundaryGap=='justify'){ + dataCount -=1; + } + var eachSpacing = spacingValid / dataCount; + + var xAxisPoints = []; + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + categories.forEach(function(item, index) { + xAxisPoints.push(startX + index * eachSpacing); + }); + if(opts.xAxis.boundaryGap !=='justify'){ + if (opts.enableScroll === true) { + xAxisPoints.push(startX + categories.length * eachSpacing); + } else { + xAxisPoints.push(endX); + } + } + return { + xAxisPoints: xAxisPoints, + startX: startX, + endX: endX, + eachSpacing: eachSpacing + }; +} + +function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var cPoints = []; + item.forEach(function(items, indexs) { + var point = {}; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + var value = items.value || items; + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + cPoints.push(point); + }); + points.push(cPoints); + } + }); + + return points; +} + +function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) { + var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1; + var boundaryGap='center'; + if (opts.type == 'line'||opts.type == 'area'){ + boundaryGap=opts.xAxis.boundaryGap; + } + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index]; + if(boundaryGap=='center'){ + point.x += Math.round(eachSpacing / 2); + } + var value = item; + if (typeof item === 'object' && item !== null) { + value = item.value + } + var height = validHeight * (value - minRange) / (maxRange - minRange); + height *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + points.push(point); + } + }); + + return points; +} + +function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) { + var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1; + var points = []; + var validHeight = opts.height - opts.area[0] - opts.area[2]; + + data.forEach(function(item, index) { + if (item === null) { + points.push(null); + } else { + var point = {}; + point.color = item.color; + point.x = xAxisPoints[index] + Math.round(eachSpacing / 2); + + if (seriesIndex > 0) { + var value = 0; + for (let i = 0; i <= seriesIndex; i++) { + value += stackSeries[i].data[index]; + } + var value0 = value - item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = validHeight * (value0 - minRange) / (maxRange - minRange); + } else { + var value = item; + var height = validHeight * (value - minRange) / (maxRange - minRange); + var height0 = 0; + } + var heightc = height0; + height *= process; + heightc *= process; + point.y = opts.height - Math.round(height) - opts.area[2]; + point.y0 = opts.height - Math.round(heightc) - opts.area[2]; + points.push(point); + } + }); + + return points; +} + +function getYAxisTextList(series, opts, config, stack) { + var data; + if (stack == 'stack') { + data = dataCombineStack(series, opts.categories.length); + } else { + data = dataCombine(series); + } + var sorted = []; + // remove null from data + data = data.filter(function(item) { + //return item !== null; + if (typeof item === 'object' && item !== null) { + if (Array.isArray(item)) { + return item !== null; + } else { + return item.value !== null; + } + } else { + return item !== null; + } + }); + data.map(function(item) { + if (typeof item === 'object') { + if (Array.isArray(item)) { + item.map(function(subitem) { + sorted.push(subitem); + }) + } else { + sorted.push(item.value); + } + } else { + sorted.push(item); + } + }) + var minData = 0; + var maxData = 0; + if (sorted.length > 0) { + minData = Math.min.apply(this, sorted); + maxData = Math.max.apply(this, sorted); + } + if (typeof opts.yAxis.min === 'number') { + minData = Math.min(opts.yAxis.min, minData); + } + if (typeof opts.yAxis.max === 'number') { + maxData = Math.max(opts.yAxis.max, maxData); + } + + if (minData === maxData) { + var rangeSpan = maxData || 10; + maxData += rangeSpan; + } + + var dataRange = getDataRange(minData, maxData); + var minRange = dataRange.minRange; + var maxRange = dataRange.maxRange; + + var range = []; + var eachRange = (maxRange - minRange) / config.yAxisSplit; + + for (var i = 0; i <= config.yAxisSplit; i++) { + range.push(minRange + eachRange * i); + } + return range.reverse(); +} + +function calYAxisData(series, opts, config) { + //堆叠图重算Y轴 + var columnstyle = assign({}, { + type: "" + }, opts.extra.column); + var ranges = getYAxisTextList(series, opts, config, columnstyle.type); + var yAxisWidth = config.yAxisWidth; + var yAxisFontSize = opts.yAxis.fontSize || config.fontSize; + var rangesFormat = ranges.map(function(item) { + item = util.toFixed(item, 6); + item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item; + yAxisWidth = Math.max(yAxisWidth, measureText(item, yAxisFontSize) + 5); + return item; + }); + if (opts.yAxis.disabled === true) { + yAxisWidth = 0; + } + + return { + rangesFormat: rangesFormat, + ranges: ranges, + yAxisWidth: yAxisWidth + }; +} + +function calTooltipYAxisData(point, series, opts, config, eachSpacing) { + var ranges = getYAxisTextList(series, opts, config); + var spacingValid = opts.height - opts.area[0] - opts.area[2]; + let maxVal = ranges[0]; + let minVal = ranges[ranges.length - 1]; + let minAxis = opts.padding[3]; + let maxAxis = opts.padding[1] + spacingValid; + let item = maxVal - (maxVal - minVal) * (point - minAxis) / (maxAxis - minAxis); + item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item; + return item; +} + +function calMarkLineData(minRange, maxRange, points, opts) { + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + for (let i = 0; i < points.length; i++) { + let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange); + points[i].y = opts.height - Math.round(height) - opts.area[2]; + } + return points; +} + +function contextRotate(context, opts) { + if (opts.rotateLock !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + } else if (opts._rotate_ !== true) { + context.translate(opts.height, 0); + context.rotate(90 * Math.PI / 180); + opts._rotate_ = true; + } +} + +function drawPointShape(points, color, shape, context, opts) { + context.beginPath(); + context.setStrokeStyle("#ffffff"); + context.setLineWidth(1 * opts.pixelRatio); + context.setFillStyle(color); + if (shape === 'diamond') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y); + context.lineTo(item.x, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y); + context.lineTo(item.x, item.y - 4.5); + } + }); + } else if (shape === 'circle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x + 3.5 * opts.pixelRatio, item.y); + context.arc(item.x, item.y, 4 * opts.pixelRatio, 0, 2 * Math.PI, false); + } + }); + } else if (shape === 'rect') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x - 3.5, item.y - 3.5); + context.rect(item.x - 3.5, item.y - 3.5, 7, 7); + } + }); + } else if (shape === 'triangle') { + points.forEach(function(item, index) { + if (item !== null) { + context.moveTo(item.x, item.y - 4.5); + context.lineTo(item.x - 4.5, item.y + 4.5); + context.lineTo(item.x + 4.5, item.y + 4.5); + context.lineTo(item.x, item.y - 4.5); + } + }); + } + context.closePath(); + context.fill(); + context.stroke(); +} + +function drawRingTitle(opts, config, context, center) { + var titlefontSize = opts.title.fontSize || config.titleFontSize; + var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize; + var title = opts.title.name || ''; + var subtitle = opts.subtitle.name || ''; + var titleFontColor = opts.title.color || config.titleColor; + var subtitleFontColor = opts.subtitle.color || config.subtitleColor; + var titleHeight = title ? titlefontSize : 0; + var subtitleHeight = subtitle ? subtitlefontSize : 0; + var margin = 5; + + if (subtitle) { + var textWidth = measureText(subtitle, subtitlefontSize); + var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0); + var startY = center.y + subtitlefontSize / 2 + (opts.subtitle.offsetY || 0); + if (title) { + startY += (titleHeight + margin) / 2; + } + context.beginPath(); + context.setFontSize(subtitlefontSize); + context.setFillStyle(subtitleFontColor); + context.fillText(subtitle, startX, startY); + context.closePath(); + context.stroke(); + } + if (title) { + var _textWidth = measureText(title, titlefontSize); + var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0); + var _startY = center.y + titlefontSize / 2 + (opts.title.offsetY || 0); + if (subtitle) { + _startY -= (subtitleHeight + margin) / 2; + } + context.beginPath(); + context.setFontSize(titlefontSize); + context.setFillStyle(titleFontColor); + context.fillText(title, _startX, _startY); + context.closePath(); + context.stroke(); + } +} + +function drawPointText(points, series, config, context) { + // 绘制数据文案 + var data = series.data; + points.forEach(function(item, index) { + if (item !== null) { + //var formatVal = series.format ? series.format(data[index]) : data[index]; + context.beginPath(); + context.setFontSize(series.textSize || config.fontSize); + context.setFillStyle(series.textColor || '#666666'); + var value = data[index] + if (typeof data[index] === 'object' && data[index] !== null) { + value = data[index].value + } + var formatVal = series.format ? series.format(value) : value; + context.fillText(String(formatVal), item.x - measureText(formatVal, series.textSize || config.fontSize) / 2, item.y - + 2); + context.closePath(); + context.stroke(); + } + }); + +} + +function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) { + radius -= gaugeOption.width / 2 + config.gaugeLabelTextMargin; + + let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber; + let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber; + let nowAngle = gaugeOption.startAngle; + let nowNumber = gaugeOption.startNumber; + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + var pos = { + x: radius * Math.cos(nowAngle * Math.PI), + y: radius * Math.sin(nowAngle * Math.PI) + }; + var labelText = gaugeOption.labelFormat ? gaugeOption.labelFormat(nowNumber) : nowNumber; + pos.x += centerPosition.x - measureText(labelText) / 2; + pos.y += centerPosition.y; + var startX = pos.x; + var startY = pos.y; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(gaugeOption.labelColor || '#666666'); + context.fillText(labelText, startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + + nowAngle += splitAngle; + if (nowAngle >= 2) { + nowAngle = nowAngle % 2; + } + nowNumber += splitNumber; + } + +} + +function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) { + var radarOption = opts.extra.radar || {}; + radius += config.radarLabelTextMargin; + + angleList.forEach(function(angle, index) { + var pos = { + x: radius * Math.cos(angle), + y: radius * Math.sin(angle) + }; + var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition); + var startX = posRelativeCanvas.x; + var startY = posRelativeCanvas.y; + if (util.approximatelyEqual(pos.x, 0)) { + startX -= measureText(opts.categories[index] || '') / 2; + } else if (pos.x < 0) { + startX -= measureText(opts.categories[index] || ''); + } + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(radarOption.labelColor || '#666666'); + context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2); + context.closePath(); + context.stroke(); + }); + +} + +function drawPieText(series, opts, config, context, radius, center) { + var lineRadius = config.pieChartLinePadding; + var textObjectCollection = []; + var lastTextObject = null; + + var seriesConvert = series.map(function(item) { + var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_.toFixed(4) * 100) +'%'; + if(item._rose_proportion_) item._proportion_=item._rose_proportion_; + var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2); + var color = item.color; + var radius = item._radius_; + return { + arc: arc, + text: text, + color: color, + radius: radius, + textColor: item.textColor, + textSize: item.textSize, + }; + }); + for (let i = 0; i < seriesConvert.length; i++) { + let item = seriesConvert[i]; + // line end + let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius); + let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius); + + // line start + let orginX2 = Math.cos(item.arc) * item.radius; + let orginY2 = Math.sin(item.arc) * item.radius; + + // text start + let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding; + let orginY3 = orginY1; + let textWidth = measureText(item.text); + let startY = orginY3; + + if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, { + x: orginX3 + })) { + if (orginX3 > 0) { + startY = Math.min(orginY3, lastTextObject.start.y); + } else if (orginX1 < 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + if (orginY3 > 0) { + startY = Math.max(orginY3, lastTextObject.start.y); + } else { + startY = Math.min(orginY3, lastTextObject.start.y); + } + } + } + if (orginX3 < 0) { + orginX3 -= textWidth; + } + + let textObject = { + lineStart: { + x: orginX2, + y: orginY2 + }, + lineEnd: { + x: orginX1, + y: orginY1 + }, + start: { + x: orginX3, + y: startY + }, + width: textWidth, + height: config.fontSize, + text: item.text, + color: item.color, + textColor: item.textColor, + textSize: item.textSize + }; + lastTextObject = avoidCollision(textObject, lastTextObject); + textObjectCollection.push(lastTextObject); + } + + for (let i = 0; i < textObjectCollection.length; i++) { + let item = textObjectCollection[i]; + let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center); + let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center); + let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center); + context.setLineWidth(1 * opts.pixelRatio); + context.setFontSize(config.fontSize); + context.beginPath(); + context.setStrokeStyle(item.color); + context.setFillStyle(item.color); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x; + let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5; + context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y); + context.moveTo(lineStartPoistion.x, lineStartPoistion.y); + context.stroke(); + context.closePath(); + context.beginPath(); + context.moveTo(textPosition.x + item.width, textPosition.y); + context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFontSize(item.textSize || config.fontSize); + context.setFillStyle(item.textColor || '#666666'); + context.fillText(item.text, textStartX, textPosition.y + 3); + context.closePath(); + context.stroke(); + context.closePath(); + } +} + +function drawToolTipSplitLine(offsetX, opts, config, context) { + var toolTipOption = opts.extra.tooltip || {}; + toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType; + toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength; + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pixelRatio); + context.beginPath(); + context.moveTo(offsetX, startY); + context.lineTo(offsetX, endY); + context.stroke(); + context.setLineDash([]); + + if (toolTipOption.xAxisLabel) { + let labelText = opts.categories[opts.tooltip.index]; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize); + + let textX = offsetX - 0.5 * textWidth; + let textY = endY; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pixelRatio); + context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding); + context.closePath(); + context.stroke(); + context.fill(); + + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || config.fontColor); + context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize); + context.closePath(); + context.stroke(); + } +} + +function drawMarkLine(minRange, maxRange, opts, config, context) { + let markLineOption = assign({}, { + type: 'solid', + dashLength: 4, + data: [] + }, opts.extra.markLine); + let startX = opts.area[3]; + let endX = opts.width - opts.padding[1]; + let points = calMarkLineData(minRange, maxRange, markLineOption.data, opts); + + for (let i = 0; i < points.length; i++) { + let item = assign({}, { + lineColor: '#DE4A42', + showLabel: false, + labelFontColor: '#666666', + labelBgColor: '#DFE8FF', + labelBgOpacity: 0.8, + yAxisIndex: 0 + }, points[i]); + + if (markLineOption.type == 'dash') { + context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]); + } + context.setStrokeStyle(item.lineColor); + context.setLineWidth(1 * opts.pixelRatio); + context.beginPath(); + context.moveTo(startX, item.y); + context.lineTo(endX, item.y); + context.stroke(); + context.setLineDash([]); + if (item.showLabel) { + let labelText = opts.yAxis.format ? opts.yAxis.format(Number(item.value)) : item.value; + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize); + let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding; + let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2); + let bgWidth = bgEndX - bgStartX; + + let textX = bgStartX + (bgWidth - textWidth) / 2; + let textY = item.y; + context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity)); + context.setStrokeStyle(item.labelBgColor); + context.setLineWidth(1 * opts.pixelRatio); + context.beginPath(); + context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding); + context.closePath(); + context.stroke(); + context.fill(); + + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(item.labelFontColor); + context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize); + context.stroke(); + } + } +} + +function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + gridType: 'solid', + dashLength: 4 + }, opts.extra.tooltip); + + var startX = opts.area[3]; + var endX = opts.width - opts.padding[1]; + + if (toolTipOption.gridType == 'dash') { + context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]); + } + context.setStrokeStyle(toolTipOption.gridColor || '#cccccc'); + context.setLineWidth(1 * opts.pixelRatio); + context.beginPath(); + context.moveTo(startX, opts.tooltip.offset.y); + context.lineTo(endX, opts.tooltip.offset.y); + context.stroke(); + context.setLineDash([]); + + if (toolTipOption.yAxisLabel) { + let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing); + context.setFontSize(config.fontSize); + let textWidth = measureText(labelText, config.fontSize); + let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding; + let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2); + let bgWidth = bgEndX - bgStartX; + + let textX = bgStartX + (bgWidth - textWidth) / 2; + let textY = opts.tooltip.offset.y; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity)); + context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground); + context.setLineWidth(1 * opts.pixelRatio); + context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding); + context.closePath(); + context.stroke(); + context.fill(); + + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.labelFontColor || config.fontColor); + context.fillText(labelText, textX, textY + 0.5 * config.fontSize); + context.closePath(); + context.stroke(); + } +} + +function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) { + var toolTipOption = assign({}, { + activeBgColor: '#000000', + activeBgOpacity: 0.08 + }, opts.extra.tooltip); + var startY = opts.area[0]; + var endY = opts.height - opts.area[2]; + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity)); + context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY); + context.closePath(); + context.fill(); +} + +function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) { + var toolTipOption = assign({}, { + bgColor: '#000000', + bgOpacity: 0.7, + fontColor: '#FFFFFF' + }, opts.extra.tooltip); + var legendWidth = 4 * opts.pixelRatio; + var legendMarginRight = 5 * opts.pixelRatio; + var arrowWidth = 8 * opts.pixelRatio; + var isOverRightBorder = false; + if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') { + drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context); + } + + offset = assign({ + x: 0, + y: 0 + }, offset); + offset.y -= 8 * opts.pixelRatio; + var textWidth = textList.map(function(item) { + return measureText(item.text, config.fontSize); + }); + var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth); + var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight; + + // if beyond the right border + if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) { + isOverRightBorder = true; + } + if (toolTipHeight + offset.y > opts.height) { + offset.y = opts.height - toolTipHeight; + } + // draw background rect + context.beginPath(); + context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity)); + if (isOverRightBorder) { + context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio); + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio); + context.lineTo(offset.x - arrowWidth, offset.y); + context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y); + context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y + toolTipHeight); + context.lineTo(offset.x - arrowWidth, offset.y + toolTipHeight); + context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio); + context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio); + } else { + context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio); + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio); + context.lineTo(offset.x + arrowWidth, offset.y); + context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y); + context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y + toolTipHeight); + context.lineTo(offset.x + arrowWidth, offset.y + toolTipHeight); + context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio); + context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio); + } + + context.closePath(); + context.fill(); + + // draw legend + textList.forEach(function(item, index) { + if (item.color !== null) { + context.beginPath(); + context.setFillStyle(item.color); + var startX = offset.x + arrowWidth + 2 * config.toolTipPadding; + var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + + config.toolTipPadding + 1; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding; + } + context.fillRect(startX, startY, legendWidth, config.fontSize); + context.closePath(); + } + }); + + // draw text list + + textList.forEach(function(item, index) { + var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight; + if (isOverRightBorder) { + startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight; + } + var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index + + config.toolTipPadding; + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(toolTipOption.fontColor); + context.fillText(item.text, startX, startY + config.fontSize); + context.closePath(); + context.stroke(); + }); +} + +function drawYAxisTitle(title, opts, config, context) { + var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2; + context.save(); + context.beginPath(); + context.setFontSize(config.fontSize); + context.setFillStyle(opts.yAxis.titleFontColor || '#333333'); + context.translate(0, opts.height); + context.rotate(-90 * Math.PI / 180); + context.fillText(title, startX, opts.padding[3] + 0.5 * config.fontSize); + context.closePath(); + context.stroke(); + context.restore(); +} + +function drawColumnDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + let columnOption = assign({}, { + type: 'group', + width: eachSpacing / 2, + meter: { + border: 4, + fillColor: '#FFFFFF' + } + }, opts.extra.column); + let minRange = ranges.pop(); + let maxRange = ranges.shift(); + let calPoints = []; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing); + } + + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process); + calPoints.push(tooltipPoints); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + context.setStrokeStyle(item.color || eachSeries.color); + context.setLineWidth(1) + context.setFillStyle(item.color || eachSeries.color); + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.moveTo(startX-1, item.y); + context.lineTo(startX+item.width-2,item.y); + context.lineTo(startX+item.width-2,opts.height - opts.area[2]); + context.lineTo(startX,opts.height - opts.area[2]); + context.lineTo(startX,item.y); + //context.rect(startX, item.y, item.width, height); + context.closePath(); + context.stroke(); + context.fill(); + } + }); + break; + case 'stack': + // 绘制堆叠数据图 + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, + seriesIndex, + series, process); + calPoints.push(points); + points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series); + + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + context.setFillStyle(item.color || eachSeries.color); + var startX = item.x - item.width / 2 + 1; + var height = opts.height - item.y - opts.area[2]; + var height0 = opts.height - item.y0 - opts.area[2]; + if (seriesIndex > 0) { + height -= height0; + } + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width - 2, height); + context.closePath(); + context.fill(); + } + }); + break; + case 'meter': + // 绘制温度计数据图 + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meter + .border); + if (seriesIndex == 0) { + points.forEach(function(item, index) { + if (item !== null) { + //画背景颜色 + context.beginPath(); + context.setFillStyle(columnOption.meter.fillColor); + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + //画边框线 + if (columnOption.meter.border > 0) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(columnOption.meter.border * opts.pixelRatio); + context.moveTo(startX + columnOption.meter.border * 0.5, item.y + height); + context.lineTo(startX + columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5); + context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5); + context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + height); + context.stroke(); + } + } + }); + } else { + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + context.setFillStyle(item.color || eachSeries.color); + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.moveTo(startX, item.y); + context.fillRect(startX, item.y, item.width, height); + context.closePath(); + context.fill(); + } + }); + } + break; + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + switch (columnOption.type) { + case 'group': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts); + + drawPointText(points, eachSeries, config, context); + break; + case 'stack': + var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, + seriesIndex, + series, process); + drawPointText(points, eachSeries, config, context); + break; + case 'meter': + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context); + break; + } + }); + } + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + minRange: minRange, + maxRange: maxRange + }; +} + +function drawCandleDataPoints(series, seriesMA, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var candleOption = assign({}, { + color: {}, + average: {} + }, opts.extra.candle); + candleOption.color = assign({}, { + upLine: '#f04864', + upFill: '#f04864', + downLine: '#2fc25b', + downFill: '#2fc25b' + }, candleOption.color); + candleOption.average = assign({}, { + show: false, + name: [], + day: [], + color: config.colors + }, candleOption.average); + opts.extra.candle = candleOption; + + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + + let minRange = ranges.pop(); + let maxRange = ranges.shift(); + let calPoints = []; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + //画均线 + if (candleOption.average.show) { + seriesMA.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + //calPoints.push(points); + var splitPointList = splitPoints(points); + + splitPointList.forEach(function(points, index) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(1); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + points.forEach(function(item, index) { + if (index > 0) { + var ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, item + .y); + } + }); + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + }); + }); + } + //画K线 + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points); + splitPointList = splitPointList[0]; + + splitPointList.forEach(function(points, index) { + context.beginPath(); + //如果上涨 + if (data[index][1] - data[index][0] > 0) { + context.setStrokeStyle(candleOption.color.upLine); + context.setFillStyle(candleOption.color.upFill); + context.setLineWidth(1 * opts.pixelRatio); + context.moveTo(points[3].x, points[3].y); //顶点 + context.lineTo(points[1].x, points[1].y); //收盘中间点 + context.lineTo(points[1].x - eachSpacing / 4, points[1].y); //收盘左侧点 + context.lineTo(points[0].x - eachSpacing / 4, points[0].y); //开盘左侧点 + context.lineTo(points[0].x, points[0].y); //开盘中间点 + context.lineTo(points[2].x, points[2].y); //底点 + context.lineTo(points[0].x, points[0].y); //开盘中间点 + context.lineTo(points[0].x + eachSpacing / 4, points[0].y); //开盘右侧点 + context.lineTo(points[1].x + eachSpacing / 4, points[1].y); //收盘右侧点 + context.lineTo(points[1].x, points[1].y); //收盘中间点 + context.moveTo(points[3].x, points[3].y); //顶点 + } else { + context.setStrokeStyle(candleOption.color.downLine); + context.setFillStyle(candleOption.color.downFill); + context.setLineWidth(1 * opts.pixelRatio); + context.moveTo(points[3].x, points[3].y); //顶点 + context.lineTo(points[0].x, points[0].y); //开盘中间点 + context.lineTo(points[0].x - eachSpacing / 4, points[0].y); //开盘左侧点 + context.lineTo(points[1].x - eachSpacing / 4, points[1].y); //收盘左侧点 + context.lineTo(points[1].x, points[1].y); //收盘中间点 + context.lineTo(points[2].x, points[2].y); //底点 + context.lineTo(points[1].x, points[1].y); //收盘中间点 + context.lineTo(points[1].x + eachSpacing / 4, points[1].y); //收盘右侧点 + context.lineTo(points[0].x + eachSpacing / 4, points[0].y); //开盘右侧点 + context.lineTo(points[0].x, points[0].y); //开盘中间点 + context.moveTo(points[3].x, points[3].y); //顶点 + } + context.closePath(); + context.fill(); + context.stroke(); + }); + }); + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + minRange: minRange, + maxRange: maxRange + }; +} + +function drawAreaDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var areaOption = assign({},{ + type: 'straight', + opacity: 0.2, + addLine: false, + width: 2 + },opts.extra.area); + + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + + let minRange = ranges.pop(); + let maxRange = ranges.shift(); + let endY = opts.height - opts.area[2]; + let calPoints = []; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + + series.forEach(function(eachSeries, seriesIndex) { + let data = eachSeries.data; + let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + + let splitPointList = splitPoints(points); + + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数 + context.beginPath(); + context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity)); + context.setLineWidth(areaOption.width * opts.pixelRatio); + if (points.length > 1) { + let firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + + context.moveTo(firstPoint.x, firstPoint.y); + if (areaOption.type === 'curve') { + points.forEach(function(item, index) { + if (index > 0) { + let ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y); + } + }); + } else { + points.forEach(function(item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + context.lineTo(item.x + eachSpacing / 2, item.y); + context.lineTo(item.x + eachSpacing / 2, endY); + context.lineTo(item.x - eachSpacing / 2, endY); + context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + + //画连线 + if (areaOption.addLine) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(areaOption.width * opts.pixelRatio); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + if (areaOption.type === 'curve') { + points.forEach(function(item, index) { + if (index > 0) { + let ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y); + } + }); + } else { + points.forEach(function(item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + } + } + + //画点 + if (opts.dataPointShape !== false) { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + drawPointShape(points, eachSeries.color, shape, context, opts); + } + + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context); + }); + } + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + minRange: minRange, + maxRange: maxRange + }; +} + +function drawLineDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var lineOption = opts.extra.line || { + type: 'straight', + width: 2 + }; + lineOption.type = lineOption.type ? lineOption.type : 'straight'; + lineOption.width = lineOption.width ? lineOption.width : 2; + + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + + var minRange = ranges.pop(); + var maxRange = ranges.shift(); + var calPoints = []; + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + var splitPointList = splitPoints(points); + + splitPointList.forEach(function(points, index) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(lineOption.width * opts.pixelRatio); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + if (lineOption.type === 'curve') { + points.forEach(function(item, index) { + if (index > 0) { + var ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, item + .y); + } + }); + } else { + points.forEach(function(item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + }); + + if (opts.dataPointShape !== false) { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + drawPointShape(points, eachSeries.color, shape, context, opts); + } + }); + + if (opts.dataLabel !== false && process === 1) { + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + drawPointText(points, eachSeries, config, context); + }); + } + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + minRange: minRange, + maxRange: maxRange + }; +} + +function drawMixDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let ranges = [].concat(opts.chartData.yAxisData.ranges); + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + eachSpacing = xAxisData.eachSpacing; + + let minRange = ranges.pop(); + let maxRange = ranges.shift(); + let endY = opts.height - opts.area[2]; + let calPoints = []; + + var columnIndex = 0; + var columnLength = 0; + series.forEach(function(eachSeries, seriesIndex) { + if (eachSeries.type == 'column') { + columnLength += 1; + } + }); + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + calPoints.push(points); + + // 绘制柱状数据图 + if (eachSeries.type == 'column') { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + points.forEach(function(item, index) { + if (item !== null) { + context.beginPath(); + context.setStrokeStyle(item.color || eachSeries.color); + context.setLineWidth(1) + context.setFillStyle(item.color || eachSeries.color); + var startX = item.x - item.width / 2; + var height = opts.height - item.y - opts.area[2]; + context.moveTo(startX, item.y); + context.moveTo(startX-1, item.y); + context.lineTo(startX+item.width-2,item.y); + context.lineTo(startX+item.width-2,opts.height - opts.area[2]); + context.lineTo(startX,opts.height - opts.area[2]); + context.lineTo(startX,item.y); + //context.rect(startX, item.y, item.width, height); + context.closePath(); + context.stroke(); + context.fill(); + context.closePath(); + context.fill(); + } + }); + columnIndex += 1; + } + + //绘制区域图数据 + + if (eachSeries.type == 'area') { + let splitPointList = splitPoints(points); + for (let i = 0; i < splitPointList.length; i++) { + let points = splitPointList[i]; + // 绘制区域数据 + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setFillStyle(hexToRgb(eachSeries.color, 0.2)); + context.setLineWidth(2 * opts.pixelRatio); + if (points.length > 1) { + var firstPoint = points[0]; + let lastPoint = points[points.length - 1]; + context.moveTo(firstPoint.x, firstPoint.y); + if (eachSeries.style === 'curve') { + points.forEach(function(item, index) { + if (index > 0) { + var ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y); + } + }); + } else { + points.forEach(function(item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + context.lineTo(lastPoint.x, endY); + context.lineTo(firstPoint.x, endY); + context.lineTo(firstPoint.x, firstPoint.y); + } else { + let item = points[0]; + context.moveTo(item.x - eachSpacing / 2, item.y); + context.lineTo(item.x + eachSpacing / 2, item.y); + context.lineTo(item.x + eachSpacing / 2, endY); + context.lineTo(item.x - eachSpacing / 2, endY); + context.moveTo(item.x - eachSpacing / 2, item.y); + } + context.closePath(); + context.fill(); + } + } + + // 绘制折线数据图 + if (eachSeries.type == 'line') { + var splitPointList = splitPoints(points); + splitPointList.forEach(function(points, index) { + context.beginPath(); + context.setStrokeStyle(eachSeries.color); + context.setLineWidth(2 * opts.pixelRatio); + if (points.length === 1) { + context.moveTo(points[0].x, points[0].y); + context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI); + } else { + context.moveTo(points[0].x, points[0].y); + if (eachSeries.style == 'curve') { + points.forEach(function(item, index) { + if (index > 0) { + var ctrlPoint = createCurveControlPoints(points, index - 1); + context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, + item.x, + item.y); + } + }); + } else { + points.forEach(function(item, index) { + if (index > 0) { + context.lineTo(item.x, item.y); + } + }); + } + context.moveTo(points[0].x, points[0].y); + } + context.closePath(); + context.stroke(); + }); + } + + // 绘制点数据图 + if (eachSeries.type == 'point') { + points.forEach(function(pointsa, index) { + if (pointsa) { + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.setStrokeStyle('#FFFFFF'); + context.setLineWidth(1 * opts.pixelRatio); + context.moveTo(pointsa.x + 3.5 * opts.pixelRatio, pointsa.y); + context.arc(pointsa.x, pointsa.y, 4 * opts.pixelRatio, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + context.stroke(); + } + }); + } + + if (eachSeries.addPoint == true && eachSeries.type !== 'column') { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + drawPointShape(points, eachSeries.color, shape, context, opts); + } + }); + if (opts.dataLabel !== false && process === 1) { + var columnIndex = 0; + series.forEach(function(eachSeries, seriesIndex) { + var data = eachSeries.data; + var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process); + if (eachSeries.type !== 'column') { + drawPointText(points, eachSeries, config, context); + } else { + points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts); + drawPointText(points, eachSeries, config, context); + columnIndex += 1; + } + + }); + } + + context.restore(); + + return { + xAxisPoints: xAxisPoints, + calPoints: calPoints, + eachSpacing: eachSpacing, + minRange: minRange, + maxRange: maxRange + }; +} + +function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) { + var toolTipOption = opts.extra.tooltip || {}; + if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) { + drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) + } + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) { + context.translate(opts._scrollDistance_, 0); + } + if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) { + drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints); + } + context.restore(); + +} + +function drawXAxis(categories, opts, config, context) { + + let xAxisData = opts.chartData.xAxisData, + xAxisPoints = xAxisData.xAxisPoints, + startX = xAxisData.startX, + endX = xAxisData.endX, + eachSpacing = xAxisData.eachSpacing; + var boundaryGap='center'; + if (opts.type == 'line'||opts.type == 'area'){ + boundaryGap=opts.xAxis.boundaryGap; + } + var startY = opts.height - opts.area[2]; + var endY = opts.area[0]; + + //绘制滚动条 + if (opts.enableScroll && opts.xAxis.scrollShow) { + var scrollY = opts.height - opts.area[2] + config.xAxisHeight; + var scrollScreenWidth = endX - startX; + var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1); + var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth; + var scrollLeft = 0; + if (opts._scrollDistance_) { + scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth; + } + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pixelRatio); + context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF"); + context.moveTo(startX, scrollY); + context.lineTo(endX, scrollY); + context.stroke(); + context.closePath(); + context.beginPath(); + context.setLineCap('round'); + context.setLineWidth(6 * opts.pixelRatio); + context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6"); + context.moveTo(startX + scrollLeft, scrollY); + context.lineTo(startX + scrollLeft + scrollWidth, scrollY); + context.stroke(); + context.closePath(); + context.setLineCap('butt'); + } + + context.save(); + + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + + + if (opts.xAxis.disableGrid !== true) { + context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc"); + context.setLineCap('butt'); + context.setLineWidth(1 * opts.pixelRatio); + if (opts.xAxis.gridType == 'dash') { + context.setLineDash([opts.xAxis.dashLength, opts.xAxis.dashLength]); + } + if (opts.xAxis.type === 'calibration') { + xAxisPoints.forEach(function(item, index) { + if (index > 0) { + context.beginPath(); + context.moveTo(item - eachSpacing / 2, startY); + context.lineTo(item - eachSpacing / 2, startY + 4 * opts.pixelRatio); + context.closePath(); + context.stroke(); + } + }); + } else { + opts.xAxis.gridEval = opts.xAxis.gridEval || 1; + xAxisPoints.forEach(function(item, index) { + if (index % opts.xAxis.gridEval == 0) { + context.beginPath(); + context.moveTo(item, startY); + context.lineTo(item, endY); + context.stroke(); + } + }); + } + context.setLineDash([]); + } + + + //不绘制X轴 + if (opts.xAxis.disabled !== true) { + // 对X轴列表做抽稀处理 + let validWidth = opts.width - opts.padding[1] - opts.padding[3] - config.yAxisWidth - config.yAxisTitleWidth; + //默认全部显示X轴标签 + let maxXAxisListLength = categories.length; + //如果设置了X轴单屏数量 + if (opts.xAxis.labelCount) { + //如果设置X轴密度 + if (opts.xAxis.itemCount) { + maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount); + } else { + maxXAxisListLength = opts.xAxis.labelCount; + } + maxXAxisListLength -= 1; + } + + let ratio = Math.ceil(categories.length / maxXAxisListLength); + + let newCategories = []; + let cgLength = categories.length; + for (let i = 0; i < cgLength; i++) { + if (i % ratio !== 0) { + newCategories.push(""); + } else { + newCategories.push(categories[i]); + } + } + newCategories[cgLength - 1] = categories[cgLength - 1]; + + var xAxisFontSize = opts.xAxis.fontSize || config.fontSize; + if (config._xAxisTextAngle_ === 0) { + newCategories.forEach(function(item, index) { + var offset = - measureText(item, xAxisFontSize) / 2; + if(boundaryGap == 'center'){ + offset+=eachSpacing / 2; + } + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || '#666666'); + context.fillText(item, xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - xAxisFontSize) / 2); + context.closePath(); + context.stroke(); + }); + + } else { + newCategories.forEach(function(item, index) { + context.save(); + context.beginPath(); + context.setFontSize(xAxisFontSize); + context.setFillStyle(opts.xAxis.fontColor || '#666666'); + var textWidth = measureText(item); + var offset = - textWidth; + if(boundaryGap == 'center'){ + offset+=eachSpacing / 2; + } + var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height), + transX = _calRotateTranslate.transX, + transY = _calRotateTranslate.transY; + + context.rotate(-1 * config._xAxisTextAngle_); + context.translate(transX, transY); + context.fillText(item, xAxisPoints[index] + offset, startY + xAxisFontSize + 5); + context.closePath(); + context.stroke(); + context.restore(); + }); + } + } + context.restore(); + +} + +function drawYAxisGrid(categories, opts, config, context) { + if (opts.yAxis.disableGrid === true) { + return; + } + let spacingValid = opts.height - opts.area[0] - opts.area[2]; + let eachSpacing = spacingValid / config.yAxisSplit; + let startX = opts.area[3]; + let xAxisPoints = opts.chartData.xAxisData.xAxisPoints, + xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing; + let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1); + let endX = startX + TotalWidth; + + let points = []; + for (let i = 0; i < config.yAxisSplit + 1; i++) { + points.push(opts.height - opts.area[2] - eachSpacing * i); + } + + context.save(); + if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) { + context.translate(opts._scrollDistance_, 0); + } + + if (opts.yAxis.gridType == 'dash') { + context.setLineDash([opts.yAxis.dashLength, opts.yAxis.dashLength]); + } + context.setStrokeStyle(opts.yAxis.gridColor || "#cccccc"); + context.setLineWidth(1 * opts.pixelRatio); + points.forEach(function(item, index) { + context.beginPath(); + context.moveTo(startX, item); + context.lineTo(endX, item); + context.stroke(); + }); + context.setLineDash([]); + + context.restore(); +} + +function drawYAxis(series, opts, config, context) { + if (opts.yAxis.disabled === true) { + return; + } + let rangesFormat = opts.chartData.yAxisData.rangesFormat; + var spacingValid = opts.height - opts.area[0] - opts.area[2]; + var eachSpacing = Math.floor(spacingValid / config.yAxisSplit); + var startX = opts.area[3]; + var endX = opts.width - opts.area[1]; + var endY = opts.height - opts.area[2]; + var fillEndY = endY + config.xAxisHeight; + if (opts.xAxis.scrollShow) { + fillEndY -= 3 * opts.pixelRatio; + } + // set YAxis background + context.beginPath(); + context.setFillStyle(opts.background || '#ffffff'); + if (opts._scrollDistance_ < 0) { + context.fillRect(0, 0, startX, fillEndY); + } + if(opts.enableScroll == true){ + context.fillRect(endX, 0, opts.width, fillEndY); + } + context.closePath(); + context.stroke(); + + var points = []; + for (var i = 0; i <= config.yAxisSplit; i++) { + points.push(opts.area[0] + eachSpacing * i); + } + + var yAxisFontSize = opts.yAxis.fontSize || config.fontSize; + rangesFormat.forEach(function(item, index) { + var pos = points[index] ? points[index] : endY; + context.beginPath(); + context.setFontSize(yAxisFontSize); + context.setFillStyle(opts.yAxis.fontColor || '#666666'); + context.fillText(String(item), opts.area[3] - config.yAxisWidth, pos + yAxisFontSize / 2); + context.closePath(); + context.stroke(); + }); + + if (opts.yAxis.title) { + drawYAxisTitle(opts.yAxis.title, opts, config, context); + } +} + +function drawLegend(series, opts, config, context, chartData) { + if (opts.legend.show === false) { + return; + } + let legendData = chartData.legendData; + let legendList = legendData.points; + let legendArea = legendData.area; + let padding = opts.legend.padding; + let fontSize = opts.legend.fontSize; + let shapeWidth = 15 * opts.pixelRatio; + let shapeRight = 5 * opts.pixelRatio; + let itemGap = opts.legend.itemGap; + let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize); + + //画背景及边框 + context.beginPath(); + context.setLineWidth(opts.legend.borderWidth); + context.setStrokeStyle(opts.legend.borderColor); + context.setFillStyle(opts.legend.backgroundColor); + context.moveTo(legendArea.start.x, legendArea.start.y); + context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height); + context.closePath(); + context.fill(); + context.stroke(); + + legendList.forEach(function(itemList, listIndex) { + let width = 0; + let height = 0; + width = legendData.widthArr[listIndex]; + height = legendData.heightArr[listIndex]; + let startX = 0; + let startY = 0; + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + startX = legendArea.start.x + (legendArea.width - width) / 2; + startY = legendArea.start.y + padding + listIndex * lineHeight; + } else { + if (listIndex == 0) { + width = 0; + } else { + width = legendData.widthArr[listIndex - 1]; + } + startX = legendArea.start.x + padding + width; + startY = legendArea.start.y + padding + (legendArea.height - height) / 2; + } + + context.setFontSize(config.fontSize); + for (let i = 0; i < itemList.length; i++) { + let item = itemList[i]; + item.area = [0, 0, 0, 0]; + item.area[0] = startX; + item.area[1] = startY; + item.area[3] = startY + lineHeight; + context.beginPath(); + context.setLineWidth(1 * opts.pixelRatio); + context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor); + context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor); + switch (item.legendShape) { + case 'line': + context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio); + context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio, 15 * opts.pixelRatio, 4 * opts.pixelRatio); + break; + case 'triangle': + context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); + context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio); + context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio); + context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); + break; + case 'diamond': + context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); + context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio); + context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight); + context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); + break; + case 'circle': + context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight); + context.arc(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight, 5 * opts.pixelRatio, 0, 2 * Math.PI); + break; + case 'rect': + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio); + break; + default: + context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio); + context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio); + } + context.closePath(); + context.fill(); + context.stroke(); + + startX += shapeWidth + shapeRight; + let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2; + context.beginPath(); + context.setFontSize(fontSize); + context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor); + context.fillText(item.name, startX, startY + fontTrans); + context.closePath(); + context.stroke(); + if (opts.legend.position == 'top' || opts.legend.position == 'bottom') { + startX += measureText(item.name, fontSize) + itemGap; + item.area[2] = startX; + } else { + item.area[2] = startX + measureText(item.name, fontSize) + itemGap;; + startX -= shapeWidth + shapeRight; + startY += lineHeight; + } + } + }); +} + +function drawPieDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var pieOption = assign({}, { + activeOpacity: 0.5, + activeRadius: 10 * opts.pixelRatio, + offsetAngle: 0, + labelWidth: 15 * opts.pixelRatio, + ringWidth: 0, + border:false, + borderWidth:2, + borderColor:'#FFFFFF' + }, opts.extra.pie); + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = pieOption.activeRadius; + } + + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + + series = getPieDataPoints(series, radius, process); + + var activeRadius = pieOption.activeRadius; + + series = series.map(function(eachSeries) { + eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180; + return eachSeries; + }); + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, + eachSeries._start_ + 2 * + eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(pieOption.borderWidth * opts.pixelRatio); + context.lineJoin = "round"; + context.setStrokeStyle(pieOption.borderColor); + context.setFillStyle(eachSeries.color); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (pieOption.border == true) { + context.stroke(); + } + }); + + if (opts.type === 'ring') { + var innerPieWidth = radius * 0.6; + if (typeof opts.extra.pie.ringWidth === 'number' && opts.extra.pie.ringWidth > 0) { + innerPieWidth = Math.max(0, radius - opts.extra.pie.ringWidth); + } + context.beginPath(); + context.setFillStyle(opts.background || '#ffffff'); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI); + context.closePath(); + context.fill(); + } + + if (opts.dataLabel !== false && process === 1) { + var valid = false; + for (var i = 0, len = series.length; i < len; i++) { + if (series[i].data > 0) { + valid = true; + break; + } + } + + if (valid) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + } + + if (process === 1 && opts.type === 'ring') { + drawRingTitle(opts, config, context, centerPosition); + } + + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawRoseDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var roseOption = assign({}, { + type: 'area', + activeOpacity: 0.5, + activeRadius: 10 * opts.pixelRatio, + offsetAngle: 0, + labelWidth: 15 * opts.pixelRatio, + border:false, + borderWidth:2, + borderColor:'#FFFFFF' + }, opts.extra.rose); + if (config.pieChartLinePadding == 0) { + config.pieChartLinePadding = roseOption.activeRadius; + } + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding); + var minRadius = roseOption.minRadius || radius * 0.5; + + series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process); + + var activeRadius = roseOption.activeRadius; + + series = series.map(function(eachSeries) { + eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180; + return eachSeries; + }); + + series.forEach(function(eachSeries, seriesIndex) { + if (opts.tooltip) { + if (opts.tooltip.index == seriesIndex) { + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5)); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, + eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + } + } + context.beginPath(); + context.setLineWidth(roseOption.borderWidth * opts.pixelRatio); + context.lineJoin = "round"; + context.setStrokeStyle(roseOption.borderColor); + context.setFillStyle(eachSeries.color); + context.moveTo(centerPosition.x, centerPosition.y); + context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * + eachSeries._rose_proportion_ * Math.PI); + context.closePath(); + context.fill(); + if (roseOption.border == true) { + context.stroke(); + } + }); + + if (opts.dataLabel !== false && process === 1) { + var valid = false; + for (var i = 0, len = series.length; i < len; i++) { + if (series[i].data > 0) { + valid = true; + break; + } + } + + if (valid) { + drawPieText(series, opts, config, context, radius, centerPosition); + } + } + + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawArcbarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var arcbarOption = assign({}, { + startAngle: 0.75, + endAngle: 0.25, + type: 'default', + width: 12 * opts.pixelRatio + }, opts.extra.arcbar); + + series = getArcbarDataPoints(series, arcbarOption, process); + var centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + var radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pixelRatio; + radius -= arcbarOption.width / 2; + + //背景颜色 + context.setLineWidth(arcbarOption.width); + context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9'); + context.setLineCap('round'); + context.beginPath(); + if (arcbarOption.type == 'default') { + context.arc(centerPosition.x, centerPosition.y, radius, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * + Math.PI, false); + } else { + context.arc(centerPosition.x, centerPosition.y, radius, 0, 2 * Math.PI, false); + } + context.stroke(); + + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + context.setLineWidth(arcbarOption.width); + context.setStrokeStyle(eachSeries.color); + context.setLineCap('round'); + context.beginPath(); + context.arc(centerPosition.x, centerPosition.y, radius, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * + Math.PI, false); + context.stroke(); + } + + drawRingTitle(opts, config, context, centerPosition); + + return { + center: centerPosition, + radius: radius, + series: series + }; +} + +function drawGaugeDataPoints(categories, series, opts, config, context) { + var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1; + var gaugeOption = assign({}, { + startAngle: 0.75, + endAngle: 0.25, + width: 15, + splitLine: { + fixRadius: 0, + splitNumber: 10, + width: 15, + color: '#FFFFFF', + childNumber: 5, + childWidth: 5 + }, + pointer: { + width: 15, + color: 'auto' + } + }, opts.extra.gauge); + + if (gaugeOption.oldAngle == undefined) { + gaugeOption.oldAngle = gaugeOption.startAngle; + } + if (gaugeOption.oldData == undefined) { + gaugeOption.oldData = 0; + } + categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle); + + var centerPosition = { + x: opts.width / 2, + y: opts.height / 2 + }; + var radius = Math.min(centerPosition.x, centerPosition.y); + radius -= 5 * opts.pixelRatio; + radius -= gaugeOption.width / 2; + var innerRadius = radius - gaugeOption.width; + + //画背景 + context.setLineWidth(gaugeOption.width); + context.setLineCap('butt'); + for (let i = 0; i < categories.length; i++) { + let eachCategories = categories[i]; + context.beginPath(); + context.setStrokeStyle(eachCategories.color); + context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * + Math.PI, false); + context.stroke(); + } + context.save(); + + //画刻度线 + let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1; + let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber; + let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber; + let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius; + let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width; + let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth; + + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + + for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(2 * opts.pixelRatio); + context.moveTo(startX, 0); + context.lineTo(endX, 0); + context.stroke(); + context.rotate(splitAngle * Math.PI); + } + context.restore(); + + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((gaugeOption.startAngle - 1) * Math.PI); + + for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) { + context.beginPath(); + context.setStrokeStyle(gaugeOption.splitLine.color); + context.setLineWidth(1 * opts.pixelRatio); + context.moveTo(startX, 0); + context.lineTo(childendX, 0); + context.stroke(); + context.rotate(childAngle * Math.PI); + } + context.restore(); + + //画指针 + series = getGaugeDataPoints(series, categories, gaugeOption, process); + + for (let i = 0; i < series.length; i++) { + let eachSeries = series[i]; + context.save(); + context.translate(centerPosition.x, centerPosition.y); + context.rotate((eachSeries._proportion_ - 1) * Math.PI); + context.beginPath(); + context.setFillStyle(eachSeries.color); + context.moveTo(gaugeOption.pointer.width, 0); + context.lineTo(0, -gaugeOption.pointer.width / 2); + context.lineTo(-innerRadius, 0); + context.lineTo(0, gaugeOption.pointer.width / 2); + context.lineTo(gaugeOption.pointer.width, 0); + context.closePath(); + context.fill(); + context.beginPath(); + context.setFillStyle('#FFFFFF'); + context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false); + context.fill(); + context.restore(); + } + + if (opts.dataLabel !== false) { + drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context); + } + + drawRingTitle(opts, config, context, centerPosition); + + if (process === 1 && opts.type === 'gauge') { + opts.extra.gauge.oldAngle = series[0]._proportion_; + opts.extra.gauge.oldData = series[0].data; + } + return { + center: centerPosition, + radius: radius, + innerRadius: innerRadius, + categories: categories, + totalAngle: totalAngle + }; +} + +function drawRadarDataPoints(series, opts, config, context) { + var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + var radarOption = assign({},{ + gridColor: '#cccccc', + labelColor: '#666666', + opacity: 0.2 + },opts.extra.radar); + + var coordinateAngle = getRadarCoordinateSeries(opts.categories.length); + + var centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2 + }; + + var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin), + centerPosition.y - config.radarLabelTextMargin); + //TODO逻辑不对 + radius -= opts.padding[1]; + + // draw grid + context.beginPath(); + context.setLineWidth(1 * opts.pixelRatio); + context.setStrokeStyle(radarOption.gridColor); + coordinateAngle.forEach(function(angle) { + var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition); + context.moveTo(centerPosition.x, centerPosition.y); + context.lineTo(pos.x, pos.y); + }); + context.stroke(); + context.closePath(); + // draw split line grid + + var _loop = function _loop(i) { + var startPos = {}; + context.beginPath(); + context.setLineWidth(1 * opts.pixelRatio); + context.setStrokeStyle(radarOption.gridColor); + coordinateAngle.forEach(function(angle, index) { + var pos = convertCoordinateOrigin(radius / config.radarGridCount * i * Math.cos(angle), radius / config.radarGridCount * + i * Math.sin(angle), centerPosition); + if (index === 0) { + startPos = pos; + context.moveTo(pos.x, pos.y); + } else { + context.lineTo(pos.x, pos.y); + } + }); + context.lineTo(startPos.x, startPos.y); + context.stroke(); + context.closePath(); + }; + + for (var i = 1; i <= config.radarGridCount; i++) { + _loop(i); + } + + var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process); + + radarDataPoints.forEach(function(eachSeries, seriesIndex) { + // 绘制区域数据 + context.beginPath(); + context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity)); + eachSeries.data.forEach(function(item, index) { + if (index === 0) { + context.moveTo(item.position.x, item.position.y); + } else { + context.lineTo(item.position.x, item.position.y); + } + }); + context.closePath(); + context.fill(); + + if (opts.dataPointShape !== false) { + var shape = config.dataPointShape[seriesIndex % config.dataPointShape.length]; + var points = eachSeries.data.map(function(item) { + return item.position; + }); + drawPointShape(points, eachSeries.color, shape, context, opts); + } + }); + // draw label text + drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context); + + return { + center: centerPosition, + radius: radius, + angleList: coordinateAngle + }; +} + +function normalInt(min, max, iter) { + iter = iter==0?1:iter; + var arr = []; + for (var i = 0; i < iter; i++) { + arr[i] = Math.random(); + }; + return Math.floor(arr.reduce(function(i,j){return i+j})/iter*(max-min))+min; +}; + +function collisionNew(area,points,width,height){ + var isIn=false; + for(let i=0;ipoints[i].area[2]||area[1]>points[i].area[3]||area[2]width || area[3]>height){ + isIn=true; + break; + }else{ + isIn=false; + } + }else{ + isIn=true; + break; + } + } + } + return isIn; +}; + +function getBoundingBox(data) { + var bounds = {}, coords; + bounds.xMin = 180; + bounds.xMax = 0; + bounds.yMin = 90; + bounds.yMax = 0 + for (var i = 0; i < data.length; i++) { + var coorda = data[i].geometry.coordinates + for (var k = 0; k < coorda.length; k++) { + coords = coorda[k]; + if (coords.length == 1) { + coords = coords[0] + } + for (var j = 0; j < coords.length; j++) { + var longitude = coords[j][0]; + var latitude = coords[j][1]; + var point = { + x: longitude, + y: latitude + } + bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x; + bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x; + bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y; + bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y; + } + } + } + return bounds; +} + +function coordinateToPoint(latitude, longitude,bounds,scale,xoffset,yoffset) { + return { + x: (longitude - bounds.xMin) * scale+xoffset, + y: (bounds.yMax - latitude) * scale+yoffset + }; +} + +function pointToCoordinate(pointY, pointX,bounds,scale,xoffset,yoffset) { + return { + x: (pointX-xoffset)/scale+bounds.xMin, + y: bounds.yMax - (pointY-yoffset)/scale + }; +} + +function isRayIntersectsSegment(poi,s_poi,e_poi){ + if (s_poi[1]==e_poi[1]){return false;} + if (s_poi[1]>poi[1] && e_poi[1]>poi[1]){return false;} + if (s_poi[1]poi[1]){return false;} + if (e_poi[1]==poi[1] && s_poi[1]>poi[1]){return false;} + if (s_poi[0]0.7) { + return true; + }else {return false}; + }; + for (let i = 0; i < points.length; i++) { + let text = points[i].name; + let tHeight = points[i].textSize; + let tWidth = measureText(text,tHeight); + let isSpin = Spin(); + let x,y,area,areav; + let breaknum=0; + while(true) { + breaknum++; + let isCollision; + if (isSpin) { + x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2; + y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2; + area=[y-5-tWidth+opts.width/2,(-x-5+opts.height/2),y+5+opts.width/2,(-x+tHeight+5+opts.height/2)]; + areav=[opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)-5,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)-5,opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)+tHeight,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)+tWidth+5]; + isCollision = collisionNew(areav,points,opts.height,opts.width); + }else{ + x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2; + y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2; + area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2]; + isCollision = collisionNew(area,points,opts.width,opts.height); + } + if (!isCollision) break; + if (breaknum==1000){ + area=[-1000,-1000,-1000,-1000]; + break; + } + }; + if (isSpin) { + points[i].area=areav; + points[i].areav=area; + }else{ + points[i].area=area; + } + points[i].rotate=isSpin; + }; + break; + } + return points; +} + + +function drawWordCloudDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let wordOption = assign({},{ + type: 'normal', + autoColors: true + },opts.extra.word); + + context.beginPath(); + context.setFillStyle(opts.background||'#FFFFFF'); + context.rect(0,0,opts.width,opts.height); + context.fill(); + context.save(); + let points = opts.chartData.wordCloudData; + context.translate(opts.width/2,opts.height/2); + + for(let i=0;i0){ + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process); + }else{ + context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process); + } + }else{ + context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process); + } + } + }else{ + if(points[i].area[0]>0){ + if (opts.tooltip) { + if (opts.tooltip.index == i) { + context.strokeText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process); + }else{ + context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process); + } + }else{ + context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process); + } + + } + } + + context.stroke(); + context.restore(); + } + context.restore(); +} + +function drawFunnelDataPoints(series, opts, config, context) { + let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1; + let funnelOption = assign({},{ + activeWidth:10, + activeOpacity:0.3, + border:false, + borderWidth:2, + borderColor:'#FFFFFF', + fillOpacity:1, + labelAlign:'right' + },opts.extra.funnel); + let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/series.length; + let centerPosition = { + x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2, + y: opts.height-opts.area[2] + }; + let activeWidth = funnelOption.activeWidth; + let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth); + series = getFunnelDataPoints(series, radius, process); + context.save(); + context.translate(centerPosition.x,centerPosition.y); + for(let i=0;i 0 && arguments[0] !== undefined ? arguments[0] : {}; + this.opts = assign({}, this.opts, data); + this.opts.updateData = true; + let scrollPosition = data.scrollPosition || 'current'; + switch (scrollPosition) { + case 'current': + this.opts._scrollDistance_ = this.scrollOption.currentOffset; + break; + case 'left': + this.opts._scrollDistance_ = 0; + this.scrollOption = { + currentOffset: 0, + startTouchX: 0, + distance: 0, + lastMoveTime: 0 + }; + break; + case 'right': + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config), + yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let totalWidth = eachSpacing * (xAxisPoints.length - 1); + let screenWidth = endX - startX; + offsetLeft = screenWidth - totalWidth; + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + break; + } + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +Charts.prototype.zoom = function() { + var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount; + if (this.opts.enableScroll !== true) { + console.log('请启用滚动条后使用!') + return; + } + //当前屏幕中间点 + let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round( + this.opts.xAxis.itemCount / 2); + this.opts.animation = false; + this.opts.xAxis.itemCount = val.itemCount; + //重新计算x轴偏移距离 + let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config), + yAxisWidth = _calYAxisData.yAxisWidth; + this.config.yAxisWidth = yAxisWidth; + let offsetLeft = 0; + let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config), + xAxisPoints = _getXAxisPoints0.xAxisPoints, + startX = _getXAxisPoints0.startX, + endX = _getXAxisPoints0.endX, + eachSpacing = _getXAxisPoints0.eachSpacing; + let centerLeft = eachSpacing * centerPoint; + let screenWidth = endX - startX; + let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1); + offsetLeft = screenWidth / 2 - centerLeft; + if (offsetLeft > 0) { + offsetLeft = 0; + } + if (offsetLeft < MaxLeft) { + offsetLeft = MaxLeft; + } + this.scrollOption = { + currentOffset: offsetLeft, + startTouchX: offsetLeft, + distance: 0, + lastMoveTime: 0 + }; + this.opts._scrollDistance_ = offsetLeft; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); +}; + +Charts.prototype.stopAnimation = function() { + this.animationInstance && this.animationInstance.stop(); +}; + +Charts.prototype.addEventListener = function(type, listener) { + this.event.addEventListener(type, listener); +}; + +Charts.prototype.getCurrentDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose') { + return findPieChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.pieData); + } else if (this.opts.type === 'radar') { + return findRadarChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.radarData, this.opts.categories.length); + } else if (this.opts.type === 'funnel') { + return findFunnelChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.funnelData); + } else if (this.opts.type === 'map') { + return findMapChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts); + }else if (this.opts.type === 'word') { + return findWordChartCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.wordCloudData); + } else { + return findCurrentIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.xAxisPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset)); + } + } + return -1; +}; + +Charts.prototype.getLegendDataIndex = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + let _touches$ = getTouches(touches, this.opts, e); + return findLegendIndex({ + x: _touches$.x, + y: _touches$.y + }, this.opts.chartData.legendData); + } + return -1; +}; + +Charts.prototype.touchLegend = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches) { + var _touches$ = getTouches(touches, this.opts, e); + var index = this.getLegendDataIndex(e); + if (index >= 0) { + this.opts.series[index].show = !this.opts.series[index].show; + this.opts.animation = option.animation ? true : false; + drawCharts.call(this, this.opts.type, this.opts, this.config, this.context); + } + } + +}; + +Charts.prototype.showToolTip = function(e) { + var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (!touches) { + console.log("touchError"); + } + var _touches$ = getTouches(touches, this.opts, e); + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column') { + var index = this.getCurrentDataIndex(e); + if (index > -1) { + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: textList, + offset: offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'mix') { + var index = this.getCurrentDataIndex(e); + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getMixToolTipData = getMixToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option), + textList = _getMixToolTipData.textList, + offset = _getMixToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: textList, + offset: offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'candle') { + var index = this.getCurrentDataIndex(e); + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts.chartData.calPoints, + index, this.opts.categories, this.opts.extra.candle, option), + textList = _getToolTipData.textList, + offset = _getToolTipData.offset; + offset.y = _touches$.y; + opts.tooltip = { + textList: textList, + offset: offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose'||this.opts.type === 'funnel' ) { + var index = this.getCurrentDataIndex(e); + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = this.opts._series_[index]; + var textList = [{ + text: option.format ? option.format(seriesData) : seriesData.name + ': ' + seriesData.data, + color: seriesData.color + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: textList, + offset: offset, + option: option, + index: index + }; + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'map'||this.opts.type === 'word') { + var index = this.getCurrentDataIndex(e); + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = this.opts._series_[index]; + var textList = [{ + text: option.format ? option.format(seriesData) : seriesData.properties.name , + color: seriesData.color + }]; + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: textList, + offset: offset, + option: option, + index: index + }; + } + opts.updateData = false; + drawCharts.call(this, opts.type, opts, this.config, this.context); + } + if (this.opts.type === 'radar') { + var index = this.getCurrentDataIndex(e); + if (index > -1) { + var currentOffset = this.scrollOption.currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset, + animation: false + }); + var seriesData = getSeriesDataItem(this.opts.series, index); + if (seriesData.length !== 0) { + var textList = seriesData.map(function(item) { + return { + text: option.format ? option.format(item) : item.name + ': ' + item.data, + color: item.color + }; + }); + var offset = { + x: _touches$.x, + y: _touches$.y + }; + opts.tooltip = { + textList: textList, + offset: offset, + option: option, + index: index + }; + } + } + drawCharts.call(this, opts.type, opts, this.config, this.context); + } +}; + +Charts.prototype.translate = function(distance) { + this.scrollOption = { + currentOffset: distance, + startTouchX: distance, + distance: 0, + lastMoveTime: 0 + }; + let opts = assign({}, this.opts, { + _scrollDistance_: distance, + animation: false + }); + drawCharts.call(this, this.opts.type, opts, this.config, this.context); +}; + +Charts.prototype.scrollStart = function(e) { + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + var _touches$ = getTouches(touches, this.opts, e); + if (touches && this.opts.enableScroll === true) { + this.scrollOption.startTouchX = _touches$.x; + } +}; + +Charts.prototype.scroll = function(e) { + if (this.scrollOption.lastMoveTime === 0) { + this.scrollOption.lastMoveTime = Date.now(); + } + let Limit = this.opts.extra.touchMoveLimit || 20; + let currMoveTime = Date.now(); + let duration = currMoveTime - this.scrollOption.lastMoveTime; + if (duration < Math.floor(1000 / Limit)) return; + this.scrollOption.lastMoveTime = currMoveTime; + var touches = null; + if (e.changedTouches) { + touches = e.changedTouches[0]; + } else { + touches = e.mp.changedTouches[0]; + } + if (touches && this.opts.enableScroll === true) { + var _touches$ = getTouches(touches, this.opts, e); + var _distance; + _distance = _touches$.x - this.scrollOption.startTouchX; + var currentOffset = this.scrollOption.currentOffset; + var validDistance = calValidDistance(currentOffset + _distance, this.opts.chartData, this.config, this.opts); + this.scrollOption.distance = _distance = validDistance - currentOffset; + var opts = assign({}, this.opts, { + _scrollDistance_: currentOffset + _distance, + animation: false + }); + drawCharts.call(this, opts.type, opts, this.config, this.context); + return currentOffset + _distance; + } +}; + +Charts.prototype.scrollEnd = function(e) { + if (this.opts.enableScroll === true) { + var _scrollOption = this.scrollOption, + currentOffset = _scrollOption.currentOffset, + distance = _scrollOption.distance; + this.scrollOption.currentOffset = currentOffset + distance; + this.scrollOption.distance = 0; + } +}; +if (typeof module === "object" && typeof module.exports === "object") { + module.exports = Charts; + //export default Charts;//建议使用nodejs的module导出方式,如报错请使用export方式导出 +} diff --git a/components/verifition/Verify.vue b/components/verifition/Verify.vue new file mode 100644 index 0000000..3fe4d88 --- /dev/null +++ b/components/verifition/Verify.vue @@ -0,0 +1,469 @@ + + + diff --git a/components/verifition/utils/ase.js b/components/verifition/utils/ase.js new file mode 100644 index 0000000..1fdceed --- /dev/null +++ b/components/verifition/utils/ase.js @@ -0,0 +1,14 @@ +import CryptoJS from 'crypto-js' +/** + * @word 要加密的内容 + * @keyWord String 服务器随机返回的关键字 + * */ +export function aesEncrypt(word, keyWord = "XwKsGlMcdPMEhR1B") { + var key = CryptoJS.enc.Utf8.parse(keyWord); + var srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); +} diff --git a/components/verifition/utils/request.js b/components/verifition/utils/request.js new file mode 100644 index 0000000..e6a31b0 --- /dev/null +++ b/components/verifition/utils/request.js @@ -0,0 +1,17 @@ +import config from '@/config' +const baseUrl = config.baseUrl +export const myRequest = (option = {}) => { + return new Promise((reslove, reject) => { + uni.request({ + url: baseUrl + option.url, + data: option.data, + method: option.method || "GET", + success: (result) => { + reslove(result) + }, + fail: (error) => { + reject(error) + } + }) + }) +} diff --git a/components/verifition/verifyPoint/verifyPoint.vue b/components/verifition/verifyPoint/verifyPoint.vue new file mode 100644 index 0000000..923cc62 --- /dev/null +++ b/components/verifition/verifyPoint/verifyPoint.vue @@ -0,0 +1,555 @@ + + + + diff --git a/components/verifition/verifySlider/verifySlider.vue b/components/verifition/verifySlider/verifySlider.vue new file mode 100644 index 0000000..7c75e0e --- /dev/null +++ b/components/verifition/verifySlider/verifySlider.vue @@ -0,0 +1,661 @@ + + + diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..e269efc --- /dev/null +++ b/env.d.ts @@ -0,0 +1,13 @@ +/// + +declare module '*.vue' { + import { DefineComponent } from 'vue' + + const component: DefineComponent<{}, {}, any> + export default component +} + +interface ImportMetaEnv { + VITE_TITLE: string + VITE_BASE_URL: string +} diff --git a/main.ts b/main.ts new file mode 100644 index 0000000..c19c964 --- /dev/null +++ b/main.ts @@ -0,0 +1,41 @@ +import { createSSRApp } from 'vue' +import * as Pinia from 'pinia' +// @ts-ignore +import uView from 'vk-uview-ui' +import App from './App.vue' + + + +import tab from './plugins/tab' +import modal from './plugins/modal' +import time from './plugins/time' + + +// unocss +import 'uno.css' + +import { accessTimeInAnHour, getNowFormatDate } from "./utils/dateTime"; +export function createApp() { + const app = createSSRApp(App) + app.use(Pinia.createPinia()) + app.use(uView) + // 解决onLaunch和onLoad异步问题 + app.config.globalProperties.$onLaunched = new Promise(resolve => { + app.config.globalProperties.$isResolve = resolve + }) + + // 页签操作 + app.config.globalProperties.$tab = tab + // 模态框对象 + app.config.globalProperties.$modal = modal + // 时间对象 + app.config.globalProperties.$time = time + + + + return { + app, + // uni-app 官方文档示例 https://zh.uniapp.dcloud.io/tutorial/vue3-pinia.html#%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86-pinia + Pinia // 此处必须将 Pinia 返回 + } +} \ No newline at end of file diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..4000fae --- /dev/null +++ b/manifest.json @@ -0,0 +1,82 @@ +{ + "name" : "富维汽车镜", + "appid" : "__UNI__DA78BC9", + "description" : "", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + /* 5+App特有相关 */ + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + /* 模块配置 */ + "modules" : {}, + /* 应用发布信息 */ + "distribute" : { + /* android打包配置 */ + "android" : { + "permissions" : [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + /* ios打包配置 */ + "ios" : { + "dSYMs" : false + }, + /* SDK配置 */ + "sdkConfigs" : { + "ad" : {} + } + } + }, + /* 快应用特有相关 */ + "quickapp" : {}, + /* 小程序特有相关 */ + "mp-weixin" : { + "appid" : "wx6176535b0b0153f0", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "vueVersion" : "3", + "h5" : { + "template" : "index.html", + "devServer" : { + "port" : 9020 + } + } +} diff --git a/pages.json b/pages.json new file mode 100644 index 0000000..69e834d --- /dev/null +++ b/pages.json @@ -0,0 +1,1739 @@ +{ + + "pages": [{ + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "WMS仓库管理系统-移动端", + "titleNView": { + // "autoBackButton": "true", + "buttons": [{}] + } + } + }, + { + "path": "pages/message/index", + "style": { + "navigationBarTitleText": "消息", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + + + ] + } + } + }, + { + "path": "pages/message/details", + "style": { + "navigationBarTitleText": "消息详情", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + // "buttons": [ + // // 右边按钮 + // { + + // "float": "right", + // "fontSize": "58rpx", //按钮上文字的大小 + // "text": "\ue696", + // "fontSrc": "/static/ali_icon/iconfont.ttf" + + // } + // ] + } + } + }, + + { + "path": "pages/login/index", + "style": { + "navigationBarTitleText": "登录" + } + }, + + + { + "path": "pages/query/item", + "style": { + "enablePullDownRefresh": false, // 是否配置下拉刷新的功能 + "navigationBarTitleText": "按物料查询库存", + "titleNView": { + "autoBackButton": "true", + "buttons": [{}] + } + } + }, + { + "path": "pages/query/location", + "style": { + "navigationBarTitleText": "按库位查询库存", + "enablePullDownRefresh": false, + "titleNView": { + "autoBackButton": "true", + "buttons": [{}] + } + } + }, { + "path": "pages/query/container", + "style": { + "navigationBarTitleText": "按器具查询库存", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true", + "buttons": [{}] + } + } + }, + + + { + "path": "pages/setter/index", + "style": { + "navigationBarTitleText": "设置", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + + + ] + } + } + }, + { + "path": "pages/setter/passwordpage", + "style": { + "navigationBarTitleText": "修改密码", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/supplierDeliver/record/supplierDeliverRecord", + "style": { + "navigationBarTitleText": "供应商发货记录", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/supplierDeliver/record/supplierDeliverRecordDetail", + "style": { + "navigationBarTitleText": "供应商发货记录详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspect/request/inspectRequest", + "style": { + "navigationBarTitleText": "检验单申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inspect/request/inspectRequestDetail", + "style": { + "navigationBarTitleText": "检验单申请详情", + "enablePullDownRefresh": true + } + }, + + { + "path": "pages/inspect/job/inspectResult", + "style": { + "navigationBarTitleText": "检验详情", + "enablePullDownRefresh": true + } + }, + + + { + "path": "pages/purchaseReceipt/job/receiptJob", + "style": { + "navigationBarTitleText": "采购收货", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/purchaseReceipt/job/receiptDetail", + "style": { + "navigationBarTitleText": "采购收货任务详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/purchaseReturn/record/returnRecord", + "style": { + "navigationBarTitleText": "采购退货记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/purchaseReturn/request/returnRequest", + "style": { + "navigationBarTitleText": "采购退货申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/purchaseReturn/request/returnRequestDetail", + "style": { + "navigationBarTitleText": "采购退货申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/purchaseReturn/request/returnRequestCreate", + "style": { + "navigationBarTitleText": "采购退货申请创建", + "enablePullDownRefresh": true + } + }, + + { + "path": "pages/purchaseReturn/job/returnJob", + "style": { + "navigationBarTitleText": "采购退货", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/purchaseReturn/job/returnDetail", + "style": { + "navigationBarTitleText": "退货任务详情", + "enablePullDownRefresh": true + // "titleNView": { + // "autoBackButton": "true" + // } + } + }, + { + "path": "pages/inspect/job/inspectJob", + "style": { + "navigationBarTitleText": "到货检验", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + + { + "path": "pages/inspect/job/inspectDetail", + "style": { + "navigationBarTitleText": "到货检验详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inspect/job/inspectFullDetail", + "style": { + "navigationBarTitleText": "全检检验详情", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/putaway/job/putawayJob", + "style": { + "navigationBarTitleText": "采购上架", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + + { + "path": "pages/putaway/job/putawayDetail", + "style": { + "navigationBarTitleText": "采购上架详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/putaway/record/putawayRecord", + "style": { + "navigationBarTitleText": "采购上架记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/putaway/request/putawayRequest", + "style": { + "navigationBarTitleText": "采购上架申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/putaway/request/putawayRequestDetail", + "style": { + "navigationBarTitleText": "采购上架申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/putaway/request/putawayRequestCreate", + "style": { + "navigationBarTitleText": "采购上架申请创建", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/issue/request/issueRequest", + "style": { + "navigationBarTitleText": "发料申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/issue/request/issueRequestDetail", + "style": { + "navigationBarTitleText": "发料申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/issue/request/issueRequestCreate", + "style": { + "navigationBarTitleText": "创建发料申请", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/issue/job/issueJob", + "style": { + "navigationBarTitleText": "发料任务", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/issue/job/issueDetail", + "style": { + "navigationBarTitleText": "发料任务详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/issue/record/issueRecord", + "style": { + "navigationBarTitleText": "直接发料记录", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true" + } + } + }, + { + "path": "pages/productionReceipt/job/productionReceiptJob", + "style": { + "navigationBarTitleText": "生产收料", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productionReceipt/job/productionReceiptDetail", + "style": { + "navigationBarTitleText": "生产收料详细" + + } + }, + { + "path": "pages/repleinsh/job/repleinshJob", + "style": { + "navigationBarTitleText": "补料任务", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/repleinsh/job/repleinshDetail", + "style": { + "navigationBarTitleText": "补料详情", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true" + } + } + }, + { + "path": "pages/repleinsh/record/repleinshRecord", + "style": { + "navigationBarTitleText": "补料记录", + "enablePullDownRefresh": true, + "titleNView": { + "autoBackButton": "true" + } + } + }, + { + "path": "pages/productionReturn/request/returnRequestCreate", + "style": { + "navigationBarTitleText": "生产合格退料申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productionReturn/request/returnToHoldRequest", + "style": { + "navigationBarTitleText": "生产退料隔离申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productionReturn/request/requestDetail", + "style": { + "navigationBarTitleText": "生产退料详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/productionReturn/job/returnJob", + "style": { + "navigationBarTitleText": "生产退料", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productionReturn/job/returnDetail", + "style": { + "navigationBarTitleText": "生产退料详细", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/productionReturn/request/returnToStoreRequest", + "style": { + "navigationBarTitleText": "生产合格退料申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productionReturn/record/returnToStore", + "style": { + "navigationBarTitleText": "合格退料记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/productionReturn/record/returnToHold", + "style": { + "navigationBarTitleText": "隔离退料记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/deliver/job/deliverJob", + "style": { + "navigationBarTitleText": "制品发货任务", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/deliver/job/deliverDetail", + "style": { + "navigationBarTitleText": "制品发货详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/deliver/record/deliverRecord", + "style": { + "navigationBarTitleText": "制品发货记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/productReceipt/job/productReceiptJob", + "style": { + "navigationBarTitleText": "制品收货任务", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productReceipt/record/productReceiptRecord", + "style": { + "navigationBarTitleText": "制品收货记录", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/productReceipt/job/productReceiptDetail", + "style": { + "navigationBarTitleText": "制品收货详情", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/productPutaway/job/productPutawayJob", + "style": { + "navigationBarTitleText": "制品上架任务", + "enablePullDownRefresh": true, + "titleNView": { + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productPutaway/job/productPutawayDetail", + "style": { + "navigationBarTitleText": "制品上架详情", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/productPutaway/record/productPutawayRecord", + "style": { + "navigationBarTitleText": "制品上架记录", + "enablePullDownRefresh": false + + } + }, + + { + "path": "pages/productPutaway/request/putawayRequest", + "style": { + "navigationBarTitleText": "制品上架申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/productPutaway/request/putawayRequestDetail", + "style": { + "navigationBarTitleText": "制品上架申请详情", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/productPutaway/request/putawayRequestCreate", + "style": { + "navigationBarTitleText": "制品上架申请创建", + "enablePullDownRefresh": false + + } + }, + + { + "path": "pages/productDismantle/job/productDismantleJob", + "style": { + "navigationBarTitleText": "制品拆解", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + + { + "path": "pages/productDismantle/job/productDismantleDetail", + "style": { + "navigationBarTitleText": "制品拆解任务详情", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/productDismantle/record/productDismantleRecord", + "style": { + "navigationBarTitleText": "制品拆解记录", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/deliver/request/deliverRequest", + "style": { + "navigationBarTitleText": "成品发货申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/deliver/request/deliverRequestDetail", + "style": { + "navigationBarTitleText": "成品发货申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/deliver/request/deliverRequestCreate", + "style": { + "navigationBarTitleText": "成品发货申请创建", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/customerReturn/job/returnJob", + "style": { + "navigationBarTitleText": "客户退货任务", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/customerReturn/job/returnDetail", + "style": { + "navigationBarTitleText": "客户退货详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/customerReturn/record/returnRecord", + "style": { + "navigationBarTitleText": "客户退货记录", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/customerReturn/request/customerReturnRequest", + "style": { + "navigationBarTitleText": "客户退货申请", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/customerReturn/request/customerReturnRequestDetail", + "style": { + "navigationBarTitleText": "客户退货申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/customerReturn/request/customerReturnRequestCreate", + "style": { + "navigationBarTitleText": "客户退货申请创建", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/scrap/record/scrapRecord", + "style": { + "navigationBarTitleText": "报废出库", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/scrap/job/scrapJob", + "style": { + "navigationBarTitleText": "报废出库", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/scrap/job/scrapJobDetail", + "style": { + "navigationBarTitleText": "报废出库任务详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/scrap/request/scrapRrequest", + "style": { + "navigationBarTitleText": "报废出库申请", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/scrap/request/scrapRequestDetail", + "style": { + "navigationBarTitleText": "报废出库申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/scrap/request/scrapRequestCreate", + "style": { + "navigationBarTitleText": "报废出库申请创建", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/inventoryMove/job/moveJob", + "style": { + "navigationBarTitleText": "库存转移", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inventoryMove/job/inventoryMoveDetail", + "style": { + "navigationBarTitleText": "库存转移详细", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inventoryMove/record/moveFreeRecord", + "style": { + "navigationBarTitleText": "库存转移记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inventoryMove/job/okToHoldMoveJob", + "style": { + "navigationBarTitleText": "合格转隔离", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inventoryMove/job/holdToOkMoveJob", + "style": { + "navigationBarTitleText": "隔离转合格", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inventoryMove/job/holdToScrapMoveJob", + "style": { + "navigationBarTitleText": "隔离转报废", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inventoryMove/job/okToScrapMoveJob", + "style": { + "navigationBarTitleText": "合格转报废", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inventoryMove/job/scrapToHoldMoveJob", + "style": { + "navigationBarTitleText": "报废转隔离", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/inventoryMove/record/okToHoldRecord", + "style": { + "navigationBarTitleText": "合格转隔离记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inventoryMove/record/holdToOkRecord", + "style": { + "navigationBarTitleText": "隔离转合格记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inventoryMove/record/holdToScrapRecord", + "style": { + "navigationBarTitleText": "隔离转报废记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inventoryMove/record/scrapToHoldRecord", + "style": { + "navigationBarTitleText": "报废转隔离记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/inventoryMove/record/okToScrapRecord", + "style": { + "navigationBarTitleText": "合格转报废记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/transfer/job/receiptJob", + "style": { + "navigationBarTitleText": "调拨入库任务", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/transfer/job/receiptDetail", + "style": { + "navigationBarTitleText": "调拨入库详情", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/transfer/record/receiptRecord", + "style": { + "navigationBarTitleText": "调拨入库记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/transfer/job/issueJob", + "style": { + "navigationBarTitleText": "调拨出库任务", + "enablePullDownRefresh": true, + "titleNView": { + "buttons": [{ + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + + { + "path": "pages/transfer/record/deliverRecord", + "style": { + "navigationBarTitleText": "调拨出库记录", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/transfer/job/issueDetail", + "style": { + "navigationBarTitleText": "调拨出库详细", + "enablePullDownRefresh": true + } + }, + { + "path": "pages/count/job/countJob", + "style": { + "navigationBarTitleText": "盘点任务", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/count/job/countDetail", + "style": { + "navigationBarTitleText": "盘点详细", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/count/record/countRecord", + "style": { + "navigationBarTitleText": "按库位盘点", + "enablePullDownRefresh": false + + } + }, + { + "path": "pages/unPlanned/job/receiptJob", + "style": { + "navigationBarTitleText": "计划外入库任务", + "enablePullDownRefresh": true, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + + { + "path": "pages/unPlanned/job/receiptJobDetail", + "style": { + "navigationBarTitleText": "计划外入库详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/unPlanned/request/receiptRequest", + "style": { + "navigationBarTitleText": "计划外入库申请", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/unPlanned/request/receiptRequestDetail", + "style": { + "navigationBarTitleText": "计划外入库申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/unPlanned/request/receiptRequestCreate", + "style": { + "navigationBarTitleText": "计划外入库申请创建", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/unPlanned/job/issueJob", + "style": { + "navigationBarTitleText": "计划外出库任务", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/unPlanned/job/issueJobDetail", + "style": { + "navigationBarTitleText": "计划外出库详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/unPlanned/request/issueRequest", + "style": { + "navigationBarTitleText": "计划外出库申请", + "enablePullDownRefresh": false, + "titleNView": { + // "autoBackButton": "true", + "buttons": [ + // 右边按钮 + { + "float": "right", + "fontSize": "58rpx", //按钮上文字的大小 + "text": "\ue696", + "fontSrc": "/static/ali_icon/iconfont.ttf" + }, + { + + "float": "right", + "fontSize": "52rpx", //按钮上文字的大小 + "text": "\ue6e2", + "fontSrc": "/static/ali_icon/iconfont.ttf" + } + ] + } + } + }, + { + "path": "pages/unPlanned/request/issueRequestDetail", + "style": { + "navigationBarTitleText": "计划外出库申请详情", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/unPlanned/request/issueRequestCreate", + "style": { + "navigationBarTitleText": "计划外出库申请创建", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/unPlanned/record/receiptRecord", + "style": { + "navigationBarTitleText": "计划外入库记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/unPlanned/record/issueRecord", + "style": { + "navigationBarTitleText": "计划外出库记录", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/container/record/containerBindRecord", + "style": { + "navigationBarTitleText": "器具绑定", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/container/record/containerUnBindRecord", + "style": { + "navigationBarTitleText": "器具解绑", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/package/record/splitPackageRecord", + "style": { + "navigationBarTitleText": "拆包", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/package/record/mergePackageRecord", + "style": { + "navigationBarTitleText": "合包", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/package/record/overPackageRecord", + "style": { + "navigationBarTitleText": "翻包", + "enablePullDownRefresh": false + } + } + + + ], + "globalStyle": { + "navigationBarTextStyle": "white", + "navigationBarTitleText": "WMS仓库管理系统-移动端", + "navigationBarBackgroundColor": "#3C9CFF", + "h5": { + "maxWidth": 1190, + "navigationBarTextStyle": "white", + "navigationBarBackgroundColor": "#3C9CFF !important" + }, + //增加返回首页 + // "titleNView": { + // "autoBackButton": "true", + // "buttons": [{ + // "float": "right", + // "text": "\ue696", + // "fontSrc": "/static/ali_icon/iconfont.ttf", + // "fontSize": "58rpx" + // }] + // }, + "softinputMode": "adjustPan" //adjustResize + }, + "tabBar": { + "color": "#000000", + "selectedColor": "#2678f2", + "borderStyle": "black", + "backgroundColor": "", + "list": [{ + + "pagePath": "pages/index/index", + "iconPath": "./static/bar/home.png", + "selectedIconPath": "./static/bar/home_p.png", + "text": "首页" + }, + { + "pagePath": "pages/message/index", + "iconPath": "./static/bar/message.png", + "selectedIconPath": "./static/bar/message_p.png", + "text": "消息" + }, { + "pagePath": "pages/setter/index", + "iconPath": "./static/bar/setting.png", + "selectedIconPath": "./static/bar/setting_p.png", + "text": "设置" + } + ] + } +} \ No newline at end of file diff --git a/pages/common/textview/index.vue b/pages/common/textview/index.vue new file mode 100644 index 0000000..e9b05fb --- /dev/null +++ b/pages/common/textview/index.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/pages/common/webview/index.vue b/pages/common/webview/index.vue new file mode 100644 index 0000000..8388c76 --- /dev/null +++ b/pages/common/webview/index.vue @@ -0,0 +1,34 @@ + + + diff --git a/pages/config/config.vue b/pages/config/config.vue new file mode 100644 index 0000000..4365512 --- /dev/null +++ b/pages/config/config.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/pages/container/coms/comContainerBindCard.vue b/pages/container/coms/comContainerBindCard.vue new file mode 100644 index 0000000..234aa32 --- /dev/null +++ b/pages/container/coms/comContainerBindCard.vue @@ -0,0 +1,180 @@ + + + + + diff --git a/pages/container/coms/comPalletRecord.vue b/pages/container/coms/comPalletRecord.vue new file mode 100644 index 0000000..57e10b4 --- /dev/null +++ b/pages/container/coms/comPalletRecord.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/pages/container/record/containerBindRecord.vue b/pages/container/record/containerBindRecord.vue new file mode 100644 index 0000000..eb52e26 --- /dev/null +++ b/pages/container/record/containerBindRecord.vue @@ -0,0 +1,422 @@ + + + + + diff --git a/pages/container/record/containerUnBindRecord.vue b/pages/container/record/containerUnBindRecord.vue new file mode 100644 index 0000000..435abfc --- /dev/null +++ b/pages/container/record/containerUnBindRecord.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/pages/count/coms/comCountDetailCard.vue b/pages/count/coms/comCountDetailCard.vue new file mode 100644 index 0000000..8722bde --- /dev/null +++ b/pages/count/coms/comCountDetailCard.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/pages/count/coms/comCountJobCard.vue b/pages/count/coms/comCountJobCard.vue new file mode 100644 index 0000000..c2908fe --- /dev/null +++ b/pages/count/coms/comCountJobCard.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/pages/count/coms/detailInfoPopup.vue b/pages/count/coms/detailInfoPopup.vue new file mode 100644 index 0000000..b80e902 --- /dev/null +++ b/pages/count/coms/detailInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/count/coms/jobInfoPopup.vue b/pages/count/coms/jobInfoPopup.vue new file mode 100644 index 0000000..08244cd --- /dev/null +++ b/pages/count/coms/jobInfoPopup.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/pages/count/coms/jobListPopup.vue b/pages/count/coms/jobListPopup.vue new file mode 100644 index 0000000..fe98c8c --- /dev/null +++ b/pages/count/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/count/job/countDetail.vue b/pages/count/job/countDetail.vue new file mode 100644 index 0000000..cff4f50 --- /dev/null +++ b/pages/count/job/countDetail.vue @@ -0,0 +1,843 @@ + + + + + diff --git a/pages/count/job/countJob.vue b/pages/count/job/countJob.vue new file mode 100644 index 0000000..7c3e2bd --- /dev/null +++ b/pages/count/job/countJob.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/pages/count/record/countRecord.vue b/pages/count/record/countRecord.vue new file mode 100644 index 0000000..dbc2570 --- /dev/null +++ b/pages/count/record/countRecord.vue @@ -0,0 +1,552 @@ + + + + + diff --git a/pages/customerReturn/coms/comReturnJobCard.vue b/pages/customerReturn/coms/comReturnJobCard.vue new file mode 100644 index 0000000..4691483 --- /dev/null +++ b/pages/customerReturn/coms/comReturnJobCard.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/pages/customerReturn/coms/comReturnRecord.vue b/pages/customerReturn/coms/comReturnRecord.vue new file mode 100644 index 0000000..784d610 --- /dev/null +++ b/pages/customerReturn/coms/comReturnRecord.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/pages/customerReturn/coms/comReturnRequestCard.vue b/pages/customerReturn/coms/comReturnRequestCard.vue new file mode 100644 index 0000000..eb39e12 --- /dev/null +++ b/pages/customerReturn/coms/comReturnRequestCard.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/customerReturn/coms/detailInfoPopup.vue b/pages/customerReturn/coms/detailInfoPopup.vue new file mode 100644 index 0000000..487c199 --- /dev/null +++ b/pages/customerReturn/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/customerReturn/coms/jobInfoPopup.vue b/pages/customerReturn/coms/jobInfoPopup.vue new file mode 100644 index 0000000..cd90fca --- /dev/null +++ b/pages/customerReturn/coms/jobInfoPopup.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/pages/customerReturn/coms/jobListPopup.vue b/pages/customerReturn/coms/jobListPopup.vue new file mode 100644 index 0000000..4c73872 --- /dev/null +++ b/pages/customerReturn/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/customerReturn/coms/requestDetailInfoPopup.vue b/pages/customerReturn/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..5449001 --- /dev/null +++ b/pages/customerReturn/coms/requestDetailInfoPopup.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/customerReturn/coms/requestInfoPopup.vue b/pages/customerReturn/coms/requestInfoPopup.vue new file mode 100644 index 0000000..1799e48 --- /dev/null +++ b/pages/customerReturn/coms/requestInfoPopup.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/pages/customerReturn/job/returnDetail.vue b/pages/customerReturn/job/returnDetail.vue new file mode 100644 index 0000000..43386f9 --- /dev/null +++ b/pages/customerReturn/job/returnDetail.vue @@ -0,0 +1,538 @@ + + + + + diff --git a/pages/customerReturn/job/returnJob.vue b/pages/customerReturn/job/returnJob.vue new file mode 100644 index 0000000..960f382 --- /dev/null +++ b/pages/customerReturn/job/returnJob.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/pages/customerReturn/record/returnRecord.vue b/pages/customerReturn/record/returnRecord.vue new file mode 100644 index 0000000..45dd23f --- /dev/null +++ b/pages/customerReturn/record/returnRecord.vue @@ -0,0 +1,466 @@ + + + + + diff --git a/pages/customerReturn/request/customerReturnRequest.vue b/pages/customerReturn/request/customerReturnRequest.vue new file mode 100644 index 0000000..0feb080 --- /dev/null +++ b/pages/customerReturn/request/customerReturnRequest.vue @@ -0,0 +1,394 @@ + + + + + diff --git a/pages/customerReturn/request/customerReturnRequestCreate.vue b/pages/customerReturn/request/customerReturnRequestCreate.vue new file mode 100644 index 0000000..d972703 --- /dev/null +++ b/pages/customerReturn/request/customerReturnRequestCreate.vue @@ -0,0 +1,486 @@ + + + + + diff --git a/pages/customerReturn/request/customerReturnRequestDetail.vue b/pages/customerReturn/request/customerReturnRequestDetail.vue new file mode 100644 index 0000000..d6c8752 --- /dev/null +++ b/pages/customerReturn/request/customerReturnRequestDetail.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/pages/deliver/coms/comDeliverDetailCard.vue b/pages/deliver/coms/comDeliverDetailCard.vue new file mode 100644 index 0000000..81c35f2 --- /dev/null +++ b/pages/deliver/coms/comDeliverDetailCard.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/pages/deliver/coms/comDeliverJobCard.vue b/pages/deliver/coms/comDeliverJobCard.vue new file mode 100644 index 0000000..6daab45 --- /dev/null +++ b/pages/deliver/coms/comDeliverJobCard.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/pages/deliver/coms/comDeliverRequestCard.vue b/pages/deliver/coms/comDeliverRequestCard.vue new file mode 100644 index 0000000..5c26c19 --- /dev/null +++ b/pages/deliver/coms/comDeliverRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/deliver/coms/comDeliverRequestCreator.vue b/pages/deliver/coms/comDeliverRequestCreator.vue new file mode 100644 index 0000000..5f75ab3 --- /dev/null +++ b/pages/deliver/coms/comDeliverRequestCreator.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/pages/deliver/coms/comDeliverRequestPopup.vue b/pages/deliver/coms/comDeliverRequestPopup.vue new file mode 100644 index 0000000..84f6101 --- /dev/null +++ b/pages/deliver/coms/comDeliverRequestPopup.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/pages/deliver/coms/comScanDeliverPack.vue b/pages/deliver/coms/comScanDeliverPack.vue new file mode 100644 index 0000000..4339bef --- /dev/null +++ b/pages/deliver/coms/comScanDeliverPack.vue @@ -0,0 +1,531 @@ + + + + + diff --git a/pages/deliver/coms/detailInfoPopup.vue b/pages/deliver/coms/detailInfoPopup.vue new file mode 100644 index 0000000..487c199 --- /dev/null +++ b/pages/deliver/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/deliver/coms/jobInfoPopup.vue b/pages/deliver/coms/jobInfoPopup.vue new file mode 100644 index 0000000..831b56e --- /dev/null +++ b/pages/deliver/coms/jobInfoPopup.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/pages/deliver/coms/jobListPopup.vue b/pages/deliver/coms/jobListPopup.vue new file mode 100644 index 0000000..f58edcf --- /dev/null +++ b/pages/deliver/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/deliver/coms/requestDetailInfoPopup.vue b/pages/deliver/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..ac7ff32 --- /dev/null +++ b/pages/deliver/coms/requestDetailInfoPopup.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/deliver/coms/requestInfoPopup.vue b/pages/deliver/coms/requestInfoPopup.vue new file mode 100644 index 0000000..6ecf270 --- /dev/null +++ b/pages/deliver/coms/requestInfoPopup.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/pages/deliver/job/deliverDetail.vue b/pages/deliver/job/deliverDetail.vue new file mode 100644 index 0000000..26c8979 --- /dev/null +++ b/pages/deliver/job/deliverDetail.vue @@ -0,0 +1,462 @@ + + + + + diff --git a/pages/deliver/job/deliverJob.vue b/pages/deliver/job/deliverJob.vue new file mode 100644 index 0000000..8d51443 --- /dev/null +++ b/pages/deliver/job/deliverJob.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/pages/deliver/record/deliverRecord.vue b/pages/deliver/record/deliverRecord.vue new file mode 100644 index 0000000..b8b1359 --- /dev/null +++ b/pages/deliver/record/deliverRecord.vue @@ -0,0 +1,502 @@ + + + + + diff --git a/pages/deliver/request/deliverRequest.vue b/pages/deliver/request/deliverRequest.vue new file mode 100644 index 0000000..d770dfc --- /dev/null +++ b/pages/deliver/request/deliverRequest.vue @@ -0,0 +1,390 @@ + + + + + diff --git a/pages/deliver/request/deliverRequestCreate.vue b/pages/deliver/request/deliverRequestCreate.vue new file mode 100644 index 0000000..d697fbf --- /dev/null +++ b/pages/deliver/request/deliverRequestCreate.vue @@ -0,0 +1,198 @@ + + + + + diff --git a/pages/deliver/request/deliverRequestDetail.vue b/pages/deliver/request/deliverRequestDetail.vue new file mode 100644 index 0000000..9315192 --- /dev/null +++ b/pages/deliver/request/deliverRequestDetail.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/pages/demo/demo.vue b/pages/demo/demo.vue new file mode 100644 index 0000000..b9e7dbd --- /dev/null +++ b/pages/demo/demo.vue @@ -0,0 +1,703 @@ + + + + + diff --git a/pages/demo/page.vue b/pages/demo/page.vue new file mode 100644 index 0000000..491d6a2 --- /dev/null +++ b/pages/demo/page.vue @@ -0,0 +1,128 @@ + + + + + \ No newline at end of file diff --git a/pages/error/404.vue b/pages/error/404.vue new file mode 100644 index 0000000..2f29e39 --- /dev/null +++ b/pages/error/404.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue new file mode 100644 index 0000000..d4de446 --- /dev/null +++ b/pages/index/index.vue @@ -0,0 +1,494 @@ + + + + + diff --git a/pages/inspect/coms/comInspectDetailCard.vue b/pages/inspect/coms/comInspectDetailCard.vue new file mode 100644 index 0000000..850fbac --- /dev/null +++ b/pages/inspect/coms/comInspectDetailCard.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/pages/inspect/coms/comInspectJobCard.vue b/pages/inspect/coms/comInspectJobCard.vue new file mode 100644 index 0000000..ec68ce9 --- /dev/null +++ b/pages/inspect/coms/comInspectJobCard.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/pages/inspect/coms/comInspectJobList.vue b/pages/inspect/coms/comInspectJobList.vue new file mode 100644 index 0000000..87f0b01 --- /dev/null +++ b/pages/inspect/coms/comInspectJobList.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/pages/inspect/coms/comInspectRequestCard.vue b/pages/inspect/coms/comInspectRequestCard.vue new file mode 100644 index 0000000..f6c7931 --- /dev/null +++ b/pages/inspect/coms/comInspectRequestCard.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/pages/inspect/coms/inspectComDetailCard.vue b/pages/inspect/coms/inspectComDetailCard.vue new file mode 100644 index 0000000..417d5bc --- /dev/null +++ b/pages/inspect/coms/inspectComDetailCard.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/pages/inspect/coms/inspectEdit.vue b/pages/inspect/coms/inspectEdit.vue new file mode 100644 index 0000000..a313af6 --- /dev/null +++ b/pages/inspect/coms/inspectEdit.vue @@ -0,0 +1,291 @@ + + + + + diff --git a/pages/inspect/coms/inspectInfoPopup.vue b/pages/inspect/coms/inspectInfoPopup.vue new file mode 100644 index 0000000..33d87d5 --- /dev/null +++ b/pages/inspect/coms/inspectInfoPopup.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/pages/inspect/coms/requestDetailInfoPopup.vue b/pages/inspect/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..13ec899 --- /dev/null +++ b/pages/inspect/coms/requestDetailInfoPopup.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/pages/inspect/coms/requestInfoPopup.vue b/pages/inspect/coms/requestInfoPopup.vue new file mode 100644 index 0000000..0fcc258 --- /dev/null +++ b/pages/inspect/coms/requestInfoPopup.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/pages/inspect/coms/uploadCamera.vue b/pages/inspect/coms/uploadCamera.vue new file mode 100644 index 0000000..13718fd --- /dev/null +++ b/pages/inspect/coms/uploadCamera.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/pages/inspect/job/inspectDetail.vue b/pages/inspect/job/inspectDetail.vue new file mode 100644 index 0000000..54b85aa --- /dev/null +++ b/pages/inspect/job/inspectDetail.vue @@ -0,0 +1,533 @@ + + + + + \ No newline at end of file diff --git a/pages/inspect/job/inspectFullDetail.vue b/pages/inspect/job/inspectFullDetail.vue new file mode 100644 index 0000000..94ecd79 --- /dev/null +++ b/pages/inspect/job/inspectFullDetail.vue @@ -0,0 +1,553 @@ + + + + + \ No newline at end of file diff --git a/pages/inspect/job/inspectJob.vue b/pages/inspect/job/inspectJob.vue new file mode 100644 index 0000000..2cb2ab9 --- /dev/null +++ b/pages/inspect/job/inspectJob.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/pages/inspect/job/inspectResult.vue b/pages/inspect/job/inspectResult.vue new file mode 100644 index 0000000..c755674 --- /dev/null +++ b/pages/inspect/job/inspectResult.vue @@ -0,0 +1,585 @@ + + + + + \ No newline at end of file diff --git a/pages/inspect/request/inspectRequest.vue b/pages/inspect/request/inspectRequest.vue new file mode 100644 index 0000000..bd7b966 --- /dev/null +++ b/pages/inspect/request/inspectRequest.vue @@ -0,0 +1,380 @@ + + + + + diff --git a/pages/inspect/request/inspectRequestDetail.vue b/pages/inspect/request/inspectRequestDetail.vue new file mode 100644 index 0000000..4f89b76 --- /dev/null +++ b/pages/inspect/request/inspectRequestDetail.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/pages/inventoryMove/coms/comInventoryDetailCard.vue b/pages/inventoryMove/coms/comInventoryDetailCard.vue new file mode 100644 index 0000000..1ccf22e --- /dev/null +++ b/pages/inventoryMove/coms/comInventoryDetailCard.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/pages/inventoryMove/coms/comInventoryJobCard.vue b/pages/inventoryMove/coms/comInventoryJobCard.vue new file mode 100644 index 0000000..98946e3 --- /dev/null +++ b/pages/inventoryMove/coms/comInventoryJobCard.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/pages/inventoryMove/coms/comMove.vue b/pages/inventoryMove/coms/comMove.vue new file mode 100644 index 0000000..8ed05bf --- /dev/null +++ b/pages/inventoryMove/coms/comMove.vue @@ -0,0 +1,409 @@ + + + + + diff --git a/pages/inventoryMove/coms/comMoveJob.vue b/pages/inventoryMove/coms/comMoveJob.vue new file mode 100644 index 0000000..1b19648 --- /dev/null +++ b/pages/inventoryMove/coms/comMoveJob.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/pages/inventoryMove/coms/comMoveRecord.vue b/pages/inventoryMove/coms/comMoveRecord.vue new file mode 100644 index 0000000..652f54e --- /dev/null +++ b/pages/inventoryMove/coms/comMoveRecord.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/pages/inventoryMove/coms/comMoveRecordCard.vue b/pages/inventoryMove/coms/comMoveRecordCard.vue new file mode 100644 index 0000000..1387b86 --- /dev/null +++ b/pages/inventoryMove/coms/comMoveRecordCard.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/pages/inventoryMove/coms/comMovebalance.vue b/pages/inventoryMove/coms/comMovebalance.vue new file mode 100644 index 0000000..3aebfeb --- /dev/null +++ b/pages/inventoryMove/coms/comMovebalance.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/pages/inventoryMove/coms/detailInfoPopup.vue b/pages/inventoryMove/coms/detailInfoPopup.vue new file mode 100644 index 0000000..8a7d67b --- /dev/null +++ b/pages/inventoryMove/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/inventoryMove/coms/jobInfoPopup.vue b/pages/inventoryMove/coms/jobInfoPopup.vue new file mode 100644 index 0000000..9f72ee9 --- /dev/null +++ b/pages/inventoryMove/coms/jobInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/inventoryMove/coms/jobListPopup.vue b/pages/inventoryMove/coms/jobListPopup.vue new file mode 100644 index 0000000..59ace1d --- /dev/null +++ b/pages/inventoryMove/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/inventoryMove/job/holdToOkMoveJob.vue b/pages/inventoryMove/job/holdToOkMoveJob.vue new file mode 100644 index 0000000..149213d --- /dev/null +++ b/pages/inventoryMove/job/holdToOkMoveJob.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/inventoryMove/job/holdToScrapMoveJob.vue b/pages/inventoryMove/job/holdToScrapMoveJob.vue new file mode 100644 index 0000000..410b2ab --- /dev/null +++ b/pages/inventoryMove/job/holdToScrapMoveJob.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/inventoryMove/job/inventoryMoveDetail.vue b/pages/inventoryMove/job/inventoryMoveDetail.vue new file mode 100644 index 0000000..1d212af --- /dev/null +++ b/pages/inventoryMove/job/inventoryMoveDetail.vue @@ -0,0 +1,567 @@ + + + + + diff --git a/pages/inventoryMove/job/inventoryMoveJob.vue b/pages/inventoryMove/job/inventoryMoveJob.vue new file mode 100644 index 0000000..f3f0873 --- /dev/null +++ b/pages/inventoryMove/job/inventoryMoveJob.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/pages/inventoryMove/job/moveJob.vue b/pages/inventoryMove/job/moveJob.vue new file mode 100644 index 0000000..e7b7ec5 --- /dev/null +++ b/pages/inventoryMove/job/moveJob.vue @@ -0,0 +1,37 @@ + + + + diff --git a/pages/inventoryMove/job/okToHoldMoveJob.vue b/pages/inventoryMove/job/okToHoldMoveJob.vue new file mode 100644 index 0000000..5e2f8ec --- /dev/null +++ b/pages/inventoryMove/job/okToHoldMoveJob.vue @@ -0,0 +1,36 @@ + + + + diff --git a/pages/inventoryMove/job/okToScrapMoveJob.vue b/pages/inventoryMove/job/okToScrapMoveJob.vue new file mode 100644 index 0000000..c78799e --- /dev/null +++ b/pages/inventoryMove/job/okToScrapMoveJob.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/inventoryMove/job/scrapToHoldMoveJob.vue b/pages/inventoryMove/job/scrapToHoldMoveJob.vue new file mode 100644 index 0000000..985e5a5 --- /dev/null +++ b/pages/inventoryMove/job/scrapToHoldMoveJob.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/inventoryMove/record/holdToOkRecord.vue b/pages/inventoryMove/record/holdToOkRecord.vue new file mode 100644 index 0000000..72d3dc7 --- /dev/null +++ b/pages/inventoryMove/record/holdToOkRecord.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/pages/inventoryMove/record/holdToScrapRecord.vue b/pages/inventoryMove/record/holdToScrapRecord.vue new file mode 100644 index 0000000..70175e8 --- /dev/null +++ b/pages/inventoryMove/record/holdToScrapRecord.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/pages/inventoryMove/record/moveFreeRecord.vue b/pages/inventoryMove/record/moveFreeRecord.vue new file mode 100644 index 0000000..001898f --- /dev/null +++ b/pages/inventoryMove/record/moveFreeRecord.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/pages/inventoryMove/record/okToHoldRecord.vue b/pages/inventoryMove/record/okToHoldRecord.vue new file mode 100644 index 0000000..2fb8080 --- /dev/null +++ b/pages/inventoryMove/record/okToHoldRecord.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/pages/inventoryMove/record/okToScrapRecord.vue b/pages/inventoryMove/record/okToScrapRecord.vue new file mode 100644 index 0000000..dfa24f3 --- /dev/null +++ b/pages/inventoryMove/record/okToScrapRecord.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/pages/inventoryMove/record/scrapToHoldRecord.vue b/pages/inventoryMove/record/scrapToHoldRecord.vue new file mode 100644 index 0000000..f9b6e8a --- /dev/null +++ b/pages/inventoryMove/record/scrapToHoldRecord.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/pages/issue-按批次推荐/coms/comIssueDetailCard.vue b/pages/issue-按批次推荐/coms/comIssueDetailCard.vue new file mode 100644 index 0000000..80dcf05 --- /dev/null +++ b/pages/issue-按批次推荐/coms/comIssueDetailCard.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/pages/issue-按批次推荐/coms/comIssueJobCard.vue b/pages/issue-按批次推荐/coms/comIssueJobCard.vue new file mode 100644 index 0000000..bd49c9d --- /dev/null +++ b/pages/issue-按批次推荐/coms/comIssueJobCard.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/pages/issue-按批次推荐/coms/comIssueRecommend.vue b/pages/issue-按批次推荐/coms/comIssueRecommend.vue new file mode 100644 index 0000000..c9256fd --- /dev/null +++ b/pages/issue-按批次推荐/coms/comIssueRecommend.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/pages/issue-按批次推荐/coms/comScanIssueList.vue b/pages/issue-按批次推荐/coms/comScanIssueList.vue new file mode 100644 index 0000000..1b815ca --- /dev/null +++ b/pages/issue-按批次推荐/coms/comScanIssueList.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/pages/issue-按批次推荐/coms/comScanIssuePack.vue b/pages/issue-按批次推荐/coms/comScanIssuePack.vue new file mode 100644 index 0000000..206e4c5 --- /dev/null +++ b/pages/issue-按批次推荐/coms/comScanIssuePack.vue @@ -0,0 +1,336 @@ + + + + + diff --git a/pages/issue-按批次推荐/job/issueDetail.vue b/pages/issue-按批次推荐/job/issueDetail.vue new file mode 100644 index 0000000..ea19866 --- /dev/null +++ b/pages/issue-按批次推荐/job/issueDetail.vue @@ -0,0 +1,693 @@ + + + + + diff --git a/pages/issue-按批次推荐/job/issueJob.vue b/pages/issue-按批次推荐/job/issueJob.vue new file mode 100644 index 0000000..4993edb --- /dev/null +++ b/pages/issue-按批次推荐/job/issueJob.vue @@ -0,0 +1,356 @@ + + + + + diff --git a/pages/issue/coms/comIssueDetailCard.vue b/pages/issue/coms/comIssueDetailCard.vue new file mode 100644 index 0000000..9b3fd70 --- /dev/null +++ b/pages/issue/coms/comIssueDetailCard.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/pages/issue/coms/comIssueJobCard.vue b/pages/issue/coms/comIssueJobCard.vue new file mode 100644 index 0000000..9226463 --- /dev/null +++ b/pages/issue/coms/comIssueJobCard.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/issue/coms/comIssueRecommend.vue b/pages/issue/coms/comIssueRecommend.vue new file mode 100644 index 0000000..c9256fd --- /dev/null +++ b/pages/issue/coms/comIssueRecommend.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/pages/issue/coms/comIssueRequestCard.vue b/pages/issue/coms/comIssueRequestCard.vue new file mode 100644 index 0000000..4bd6825 --- /dev/null +++ b/pages/issue/coms/comIssueRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/issue/coms/comIssueRequestCreator.vue b/pages/issue/coms/comIssueRequestCreator.vue new file mode 100644 index 0000000..07f13bd --- /dev/null +++ b/pages/issue/coms/comIssueRequestCreator.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/issue/coms/comIssueRequestDetailCard.vue b/pages/issue/coms/comIssueRequestDetailCard.vue new file mode 100644 index 0000000..60db0b1 --- /dev/null +++ b/pages/issue/coms/comIssueRequestDetailCard.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/pages/issue/coms/comIssueRequestInfo.vue b/pages/issue/coms/comIssueRequestInfo.vue new file mode 100644 index 0000000..b124595 --- /dev/null +++ b/pages/issue/coms/comIssueRequestInfo.vue @@ -0,0 +1,56 @@ + + + + + + + + diff --git a/pages/issue/coms/comIssueRequestPopup.vue b/pages/issue/coms/comIssueRequestPopup.vue new file mode 100644 index 0000000..bbd6dd9 --- /dev/null +++ b/pages/issue/coms/comIssueRequestPopup.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/pages/issue/coms/comScanIssueList.vue b/pages/issue/coms/comScanIssueList.vue new file mode 100644 index 0000000..1b815ca --- /dev/null +++ b/pages/issue/coms/comScanIssueList.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/pages/issue/coms/comScanIssuePack.vue b/pages/issue/coms/comScanIssuePack.vue new file mode 100644 index 0000000..0572aa5 --- /dev/null +++ b/pages/issue/coms/comScanIssuePack.vue @@ -0,0 +1,531 @@ + + + + + diff --git a/pages/issue/coms/detailInfoPopup.vue b/pages/issue/coms/detailInfoPopup.vue new file mode 100644 index 0000000..8a7d67b --- /dev/null +++ b/pages/issue/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/issue/coms/jobInfoPopup.vue b/pages/issue/coms/jobInfoPopup.vue new file mode 100644 index 0000000..8971076 --- /dev/null +++ b/pages/issue/coms/jobInfoPopup.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/pages/issue/coms/jobListPopup.vue b/pages/issue/coms/jobListPopup.vue new file mode 100644 index 0000000..315991f --- /dev/null +++ b/pages/issue/coms/jobListPopup.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/pages/issue/coms/requestDetailInfoPopup.vue b/pages/issue/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..377a384 --- /dev/null +++ b/pages/issue/coms/requestDetailInfoPopup.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/pages/issue/coms/requestInfoPopup.vue b/pages/issue/coms/requestInfoPopup.vue new file mode 100644 index 0000000..433374a --- /dev/null +++ b/pages/issue/coms/requestInfoPopup.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/pages/issue/job/issueDetail.vue b/pages/issue/job/issueDetail.vue new file mode 100644 index 0000000..12f9c78 --- /dev/null +++ b/pages/issue/job/issueDetail.vue @@ -0,0 +1,520 @@ + + + + + diff --git a/pages/issue/job/issueJob.vue b/pages/issue/job/issueJob.vue new file mode 100644 index 0000000..d287387 --- /dev/null +++ b/pages/issue/job/issueJob.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/pages/issue/job/issueReceiptJob.vue b/pages/issue/job/issueReceiptJob.vue new file mode 100644 index 0000000..7fc91e6 --- /dev/null +++ b/pages/issue/job/issueReceiptJob.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/pages/issue/js/issue.js b/pages/issue/js/issue.js new file mode 100644 index 0000000..824eb60 --- /dev/null +++ b/pages/issue/js/issue.js @@ -0,0 +1,110 @@ + import { + calc + } from '@/common/calc.js'; +export function getDataSource(list, subList) { + for (var i = 0; i < subList.length; i++) { + let detail = subList[i]; + var location = list.find(r => + r.toLocationCode == detail.toLocationCode) + if (location == undefined) { + location = { + toLocationCode: detail.toLocationCode, + productionLineCode: detail.productionLineCode, + workStationCode: detail.workStationCode, + Items: [] + } + list.push(location); + } + createDetailInfo(location, detail); + } + return list; +} + +//树形结构:需求库位 -> 物料Items -> 库位 Locations-> 批次Batchs -> 记录Records +export function createDetailInfo(location, detail) { + var item = location.Items.find(r => + r.itemCode == detail.itemCode) + if (item == undefined) { + item = createItemInfo(detail); + location.Items.push(item) + } else { + item.qty = calc.add(item.qty,detail.qty) + //在物料下查找库位 + let location = item.Locations.find(r => r.fromLocationCode == detail.fromLocationCode); + if (location == undefined) { + location = createLocationInfo(detail); + item.Locations.push(location); + } else { + //在库位下查找批次 + let batch = location.Batchs.find(r => r.batch == detail.batch); + if (batch == undefined) { + let batch = createBatchInfo(detail); + location.Batchs.push(batch); + } else { + if (detail.packingNumber != "" && detail.packingNumber != null) { + batch.Recommends.push(detail); + } + } + } + } +} + +export function createItemInfo(detail) { + let item = { + itemCode: detail.itemCode, + itemName: detail.itemName, + productionLineCode: detail.productionLineCode, + workStationCode: detail.workStationCode, + stdPackQty: detail.stdPackQty, + stdPackUnit: detail.stdPackUnit, + qty: detail.qty, + uom: detail.uom, + handleQty: 0, + Locations: [] + } + let location = createLocationInfo(detail); + item.Locations.push(location); + return item; +} + +export function createLocationInfo(detail) { + let location = { + fromLocationCode: detail.fromLocationCode, + qty: detail.qty, + uom: detail.uom, + handleQty: 0, + Batchs: [] + } + let batch = createBatchInfo(detail); + location.Batchs.push(batch); + return location; +} + +export function createBatchInfo(detail) { + let batch = { + detail: detail, + batch: detail.batch, + packingNumber: detail.packingNumber, + qty: detail.qty, + uom: detail.uom, + handleQty: 0, + Recommends: [], + Records: [], + } + + //推荐到了箱码和批次 + if (detail.packingNumber != "" && detail.packingNumber != null) { + batch.Recommends.push(detail); + } + return batch; +} + +export function createRecordInfo(detail) { + var record = {} + detail.scaned = true; + // let record = JSON.parse(JSON.stringify(detail)); + //克隆对象,深度克隆,防止双向绑定同一个变量 + Object.assign(record, detail) + record.toLocationCode = this.toLocationCode; + return record; +} diff --git a/pages/issue/record/issueRecord.vue b/pages/issue/record/issueRecord.vue new file mode 100644 index 0000000..028f214 --- /dev/null +++ b/pages/issue/record/issueRecord.vue @@ -0,0 +1,434 @@ + + + + + diff --git a/pages/issue/request/issueRequest.vue b/pages/issue/request/issueRequest.vue new file mode 100644 index 0000000..5f3d8e4 --- /dev/null +++ b/pages/issue/request/issueRequest.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/pages/issue/request/issueRequestCreate.vue b/pages/issue/request/issueRequestCreate.vue new file mode 100644 index 0000000..328b78b --- /dev/null +++ b/pages/issue/request/issueRequestCreate.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/pages/issue/request/issueRequestDetail.vue b/pages/issue/request/issueRequestDetail.vue new file mode 100644 index 0000000..2713ae7 --- /dev/null +++ b/pages/issue/request/issueRequestDetail.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/pages/login/index.vue b/pages/login/index.vue new file mode 100644 index 0000000..535579d --- /dev/null +++ b/pages/login/index.vue @@ -0,0 +1,401 @@ + + + + + \ No newline at end of file diff --git a/pages/message/details.vue b/pages/message/details.vue new file mode 100644 index 0000000..915b210 --- /dev/null +++ b/pages/message/details.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/pages/message/index.vue b/pages/message/index.vue new file mode 100644 index 0000000..fba36d3 --- /dev/null +++ b/pages/message/index.vue @@ -0,0 +1,323 @@ + + + + + diff --git a/pages/package/coms/comOverRecord.vue b/pages/package/coms/comOverRecord.vue new file mode 100644 index 0000000..8e780fd --- /dev/null +++ b/pages/package/coms/comOverRecord.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/pages/package/coms/comPackageRecord.vue b/pages/package/coms/comPackageRecord.vue new file mode 100644 index 0000000..fe24a43 --- /dev/null +++ b/pages/package/coms/comPackageRecord.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/pages/package/record/mergePackageRecord.vue b/pages/package/record/mergePackageRecord.vue new file mode 100644 index 0000000..938983c --- /dev/null +++ b/pages/package/record/mergePackageRecord.vue @@ -0,0 +1,393 @@ + + + + + diff --git a/pages/package/record/overPackageRecord.vue b/pages/package/record/overPackageRecord.vue new file mode 100644 index 0000000..475ed2e --- /dev/null +++ b/pages/package/record/overPackageRecord.vue @@ -0,0 +1,366 @@ + + + + + diff --git a/pages/package/record/splitPackageRecord.vue b/pages/package/record/splitPackageRecord.vue new file mode 100644 index 0000000..166691a --- /dev/null +++ b/pages/package/record/splitPackageRecord.vue @@ -0,0 +1,385 @@ + + + + + diff --git a/pages/productDismantle/coms/comProductDetailCard.vue b/pages/productDismantle/coms/comProductDetailCard.vue new file mode 100644 index 0000000..4c56737 --- /dev/null +++ b/pages/productDismantle/coms/comProductDetailCard.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/pages/productDismantle/coms/comProductJobCard.vue b/pages/productDismantle/coms/comProductJobCard.vue new file mode 100644 index 0000000..ede69fb --- /dev/null +++ b/pages/productDismantle/coms/comProductJobCard.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/pages/productDismantle/coms/comProductRecord.vue b/pages/productDismantle/coms/comProductRecord.vue new file mode 100644 index 0000000..ed20ed5 --- /dev/null +++ b/pages/productDismantle/coms/comProductRecord.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/pages/productDismantle/coms/comScanProductList.vue b/pages/productDismantle/coms/comScanProductList.vue new file mode 100644 index 0000000..1b815ca --- /dev/null +++ b/pages/productDismantle/coms/comScanProductList.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/pages/productDismantle/coms/detailInfoPopup.vue b/pages/productDismantle/coms/detailInfoPopup.vue new file mode 100644 index 0000000..4b64c50 --- /dev/null +++ b/pages/productDismantle/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/productDismantle/coms/jobInfoPopup.vue b/pages/productDismantle/coms/jobInfoPopup.vue new file mode 100644 index 0000000..9188858 --- /dev/null +++ b/pages/productDismantle/coms/jobInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/productDismantle/coms/jobListPopup.vue b/pages/productDismantle/coms/jobListPopup.vue new file mode 100644 index 0000000..7d0c8b9 --- /dev/null +++ b/pages/productDismantle/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/productDismantle/coms/requestDetailInfoPopup.vue b/pages/productDismantle/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..13ec899 --- /dev/null +++ b/pages/productDismantle/coms/requestDetailInfoPopup.vue @@ -0,0 +1,85 @@ + + + + + diff --git a/pages/productDismantle/coms/requestInfoPopup.vue b/pages/productDismantle/coms/requestInfoPopup.vue new file mode 100644 index 0000000..3a39a00 --- /dev/null +++ b/pages/productDismantle/coms/requestInfoPopup.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/pages/productDismantle/job/productDismantleDetail.vue b/pages/productDismantle/job/productDismantleDetail.vue new file mode 100644 index 0000000..760e1e3 --- /dev/null +++ b/pages/productDismantle/job/productDismantleDetail.vue @@ -0,0 +1,550 @@ + + + + + diff --git a/pages/productDismantle/job/productDismantleJob.vue b/pages/productDismantle/job/productDismantleJob.vue new file mode 100644 index 0000000..e566a89 --- /dev/null +++ b/pages/productDismantle/job/productDismantleJob.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/pages/productDismantle/record/productDismantleRecord.vue b/pages/productDismantle/record/productDismantleRecord.vue new file mode 100644 index 0000000..b352c64 --- /dev/null +++ b/pages/productDismantle/record/productDismantleRecord.vue @@ -0,0 +1,375 @@ + + + + + diff --git a/pages/productPutaway/coms/comProductDetailCard.vue b/pages/productPutaway/coms/comProductDetailCard.vue new file mode 100644 index 0000000..4c56737 --- /dev/null +++ b/pages/productPutaway/coms/comProductDetailCard.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/pages/productPutaway/coms/comProductJobCard.vue b/pages/productPutaway/coms/comProductJobCard.vue new file mode 100644 index 0000000..9e7eb95 --- /dev/null +++ b/pages/productPutaway/coms/comProductJobCard.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/pages/productPutaway/coms/comPutawayRequestCard.vue b/pages/productPutaway/coms/comPutawayRequestCard.vue new file mode 100644 index 0000000..ca0ba13 --- /dev/null +++ b/pages/productPutaway/coms/comPutawayRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/productPutaway/coms/comScanProductList.vue b/pages/productPutaway/coms/comScanProductList.vue new file mode 100644 index 0000000..1b815ca --- /dev/null +++ b/pages/productPutaway/coms/comScanProductList.vue @@ -0,0 +1,54 @@ + + + + + \ No newline at end of file diff --git a/pages/productPutaway/coms/detailInfoPopup.vue b/pages/productPutaway/coms/detailInfoPopup.vue new file mode 100644 index 0000000..4b64c50 --- /dev/null +++ b/pages/productPutaway/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/productPutaway/coms/jobInfoPopup.vue b/pages/productPutaway/coms/jobInfoPopup.vue new file mode 100644 index 0000000..9188858 --- /dev/null +++ b/pages/productPutaway/coms/jobInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/productPutaway/coms/jobListPopup.vue b/pages/productPutaway/coms/jobListPopup.vue new file mode 100644 index 0000000..7d0c8b9 --- /dev/null +++ b/pages/productPutaway/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/productPutaway/coms/requestDetailInfoPopup.vue b/pages/productPutaway/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..a5bf0df --- /dev/null +++ b/pages/productPutaway/coms/requestDetailInfoPopup.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/pages/productPutaway/coms/requestInfoPopup.vue b/pages/productPutaway/coms/requestInfoPopup.vue new file mode 100644 index 0000000..eea5cfd --- /dev/null +++ b/pages/productPutaway/coms/requestInfoPopup.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/pages/productPutaway/job/productPutawayDetail.vue b/pages/productPutaway/job/productPutawayDetail.vue new file mode 100644 index 0000000..5482228 --- /dev/null +++ b/pages/productPutaway/job/productPutawayDetail.vue @@ -0,0 +1,501 @@ + + + + + diff --git a/pages/productPutaway/job/productPutawayJob.vue b/pages/productPutaway/job/productPutawayJob.vue new file mode 100644 index 0000000..628284f --- /dev/null +++ b/pages/productPutaway/job/productPutawayJob.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/pages/productPutaway/record/productPutawayRecord.vue b/pages/productPutaway/record/productPutawayRecord.vue new file mode 100644 index 0000000..c994dbb --- /dev/null +++ b/pages/productPutaway/record/productPutawayRecord.vue @@ -0,0 +1,450 @@ + + + + + diff --git a/pages/productPutaway/request/putawayRequest.vue b/pages/productPutaway/request/putawayRequest.vue new file mode 100644 index 0000000..a551af6 --- /dev/null +++ b/pages/productPutaway/request/putawayRequest.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/pages/productPutaway/request/putawayRequestCreate.vue b/pages/productPutaway/request/putawayRequestCreate.vue new file mode 100644 index 0000000..5a835e6 --- /dev/null +++ b/pages/productPutaway/request/putawayRequestCreate.vue @@ -0,0 +1,428 @@ + + + + + diff --git a/pages/productPutaway/request/putawayRequestDetail.vue b/pages/productPutaway/request/putawayRequestDetail.vue new file mode 100644 index 0000000..1d71a3d --- /dev/null +++ b/pages/productPutaway/request/putawayRequestDetail.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/pages/productReceipt/coms/comProductDetailCard.vue b/pages/productReceipt/coms/comProductDetailCard.vue new file mode 100644 index 0000000..1c94c2f --- /dev/null +++ b/pages/productReceipt/coms/comProductDetailCard.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/pages/productReceipt/coms/comProductJobCard.vue b/pages/productReceipt/coms/comProductJobCard.vue new file mode 100644 index 0000000..a8daf82 --- /dev/null +++ b/pages/productReceipt/coms/comProductJobCard.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/pages/productReceipt/coms/comProductRecord.vue b/pages/productReceipt/coms/comProductRecord.vue new file mode 100644 index 0000000..de707d5 --- /dev/null +++ b/pages/productReceipt/coms/comProductRecord.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/pages/productReceipt/coms/detailInfoPopup.vue b/pages/productReceipt/coms/detailInfoPopup.vue new file mode 100644 index 0000000..ae30344 --- /dev/null +++ b/pages/productReceipt/coms/detailInfoPopup.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/pages/productReceipt/coms/jobInfoPopup.vue b/pages/productReceipt/coms/jobInfoPopup.vue new file mode 100644 index 0000000..e5513bc --- /dev/null +++ b/pages/productReceipt/coms/jobInfoPopup.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/pages/productReceipt/coms/jobListPopup.vue b/pages/productReceipt/coms/jobListPopup.vue new file mode 100644 index 0000000..cbcf199 --- /dev/null +++ b/pages/productReceipt/coms/jobListPopup.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/pages/productReceipt/coms/productDetailInfoPopup.vue b/pages/productReceipt/coms/productDetailInfoPopup.vue new file mode 100644 index 0000000..daed7ee --- /dev/null +++ b/pages/productReceipt/coms/productDetailInfoPopup.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/pages/productReceipt/job/productReceiptDetail.vue b/pages/productReceipt/job/productReceiptDetail.vue new file mode 100644 index 0000000..8cee17d --- /dev/null +++ b/pages/productReceipt/job/productReceiptDetail.vue @@ -0,0 +1,417 @@ + + + + + diff --git a/pages/productReceipt/job/productReceiptJob.vue b/pages/productReceipt/job/productReceiptJob.vue new file mode 100644 index 0000000..c5e524a --- /dev/null +++ b/pages/productReceipt/job/productReceiptJob.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/pages/productReceipt/record/productReceiptRecord.vue b/pages/productReceipt/record/productReceiptRecord.vue new file mode 100644 index 0000000..91c9dff --- /dev/null +++ b/pages/productReceipt/record/productReceiptRecord.vue @@ -0,0 +1,494 @@ + + + + + diff --git a/pages/productionReceipt/coms/comProductionDetailCard.vue b/pages/productionReceipt/coms/comProductionDetailCard.vue new file mode 100644 index 0000000..4c56737 --- /dev/null +++ b/pages/productionReceipt/coms/comProductionDetailCard.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/pages/productionReceipt/coms/comProductionJobCard.vue b/pages/productionReceipt/coms/comProductionJobCard.vue new file mode 100644 index 0000000..5a09851 --- /dev/null +++ b/pages/productionReceipt/coms/comProductionJobCard.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/pages/productionReceipt/coms/comProductionRecord.vue b/pages/productionReceipt/coms/comProductionRecord.vue new file mode 100644 index 0000000..0965c8c --- /dev/null +++ b/pages/productionReceipt/coms/comProductionRecord.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/pages/productionReceipt/coms/detailInfoPopup.vue b/pages/productionReceipt/coms/detailInfoPopup.vue new file mode 100644 index 0000000..ca7f783 --- /dev/null +++ b/pages/productionReceipt/coms/detailInfoPopup.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/pages/productionReceipt/coms/jobInfoPopup.vue b/pages/productionReceipt/coms/jobInfoPopup.vue new file mode 100644 index 0000000..005efdb --- /dev/null +++ b/pages/productionReceipt/coms/jobInfoPopup.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/pages/productionReceipt/coms/jobListPopup.vue b/pages/productionReceipt/coms/jobListPopup.vue new file mode 100644 index 0000000..79eff27 --- /dev/null +++ b/pages/productionReceipt/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/productionReceipt/job/productionReceiptDetail.vue b/pages/productionReceipt/job/productionReceiptDetail.vue new file mode 100644 index 0000000..8570d82 --- /dev/null +++ b/pages/productionReceipt/job/productionReceiptDetail.vue @@ -0,0 +1,544 @@ + + + + + diff --git a/pages/productionReceipt/job/productionReceiptJob.vue b/pages/productionReceipt/job/productionReceiptJob.vue new file mode 100644 index 0000000..f5ed5c5 --- /dev/null +++ b/pages/productionReceipt/job/productionReceiptJob.vue @@ -0,0 +1,288 @@ + + + + + diff --git a/pages/productionReceipt/record/productionReceiptRecord.vue b/pages/productionReceipt/record/productionReceiptRecord.vue new file mode 100644 index 0000000..d373181 --- /dev/null +++ b/pages/productionReceipt/record/productionReceiptRecord.vue @@ -0,0 +1,370 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturn.vue b/pages/productionReturn/coms/comReturn.vue new file mode 100644 index 0000000..b879d6e --- /dev/null +++ b/pages/productionReturn/coms/comReturn.vue @@ -0,0 +1,512 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnCommonRequest.vue b/pages/productionReturn/coms/comReturnCommonRequest.vue new file mode 100644 index 0000000..7b545bb --- /dev/null +++ b/pages/productionReturn/coms/comReturnCommonRequest.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnDetailCard.vue b/pages/productionReturn/coms/comReturnDetailCard.vue new file mode 100644 index 0000000..eec41e6 --- /dev/null +++ b/pages/productionReturn/coms/comReturnDetailCard.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnJobCard.vue b/pages/productionReturn/coms/comReturnJobCard.vue new file mode 100644 index 0000000..9f4c26e --- /dev/null +++ b/pages/productionReturn/coms/comReturnJobCard.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnRecord.vue b/pages/productionReturn/coms/comReturnRecord.vue new file mode 100644 index 0000000..0236cd3 --- /dev/null +++ b/pages/productionReturn/coms/comReturnRecord.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnRecordTitle.vue b/pages/productionReturn/coms/comReturnRecordTitle.vue new file mode 100644 index 0000000..d87eb49 --- /dev/null +++ b/pages/productionReturn/coms/comReturnRecordTitle.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnRequestCard.vue b/pages/productionReturn/coms/comReturnRequestCard.vue new file mode 100644 index 0000000..cda5359 --- /dev/null +++ b/pages/productionReturn/coms/comReturnRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnRequestCreator.vue b/pages/productionReturn/coms/comReturnRequestCreator.vue new file mode 100644 index 0000000..b6f73f6 --- /dev/null +++ b/pages/productionReturn/coms/comReturnRequestCreator.vue @@ -0,0 +1,159 @@ + + + + + diff --git a/pages/productionReturn/coms/comReturnRequestInfo.vue b/pages/productionReturn/coms/comReturnRequestInfo.vue new file mode 100644 index 0000000..4bed79f --- /dev/null +++ b/pages/productionReturn/coms/comReturnRequestInfo.vue @@ -0,0 +1,57 @@ + + + + + + + + diff --git a/pages/productionReturn/coms/comReturnRequestPopup.vue b/pages/productionReturn/coms/comReturnRequestPopup.vue new file mode 100644 index 0000000..1206fa2 --- /dev/null +++ b/pages/productionReturn/coms/comReturnRequestPopup.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/pages/productionReturn/coms/comScanReturnPack.vue b/pages/productionReturn/coms/comScanReturnPack.vue new file mode 100644 index 0000000..b9175d3 --- /dev/null +++ b/pages/productionReturn/coms/comScanReturnPack.vue @@ -0,0 +1,513 @@ + + + + + diff --git a/pages/productionReturn/coms/detailInfoPopup.vue b/pages/productionReturn/coms/detailInfoPopup.vue new file mode 100644 index 0000000..3c0d964 --- /dev/null +++ b/pages/productionReturn/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/productionReturn/coms/jobInfoPopup.vue b/pages/productionReturn/coms/jobInfoPopup.vue new file mode 100644 index 0000000..9188858 --- /dev/null +++ b/pages/productionReturn/coms/jobInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/productionReturn/coms/jobListPopup.vue b/pages/productionReturn/coms/jobListPopup.vue new file mode 100644 index 0000000..4c73872 --- /dev/null +++ b/pages/productionReturn/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/productionReturn/coms/requestDetailInfoPopup.vue b/pages/productionReturn/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..e9258a9 --- /dev/null +++ b/pages/productionReturn/coms/requestDetailInfoPopup.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/pages/productionReturn/coms/requestInfoPopup.vue b/pages/productionReturn/coms/requestInfoPopup.vue new file mode 100644 index 0000000..685f2c6 --- /dev/null +++ b/pages/productionReturn/coms/requestInfoPopup.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/pages/productionReturn/coms/returnDetailInfoPopup.vue b/pages/productionReturn/coms/returnDetailInfoPopup.vue new file mode 100644 index 0000000..4e1973e --- /dev/null +++ b/pages/productionReturn/coms/returnDetailInfoPopup.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/pages/productionReturn/job/returnDetail.vue b/pages/productionReturn/job/returnDetail.vue new file mode 100644 index 0000000..5cb8f22 --- /dev/null +++ b/pages/productionReturn/job/returnDetail.vue @@ -0,0 +1,515 @@ + + + + + diff --git a/pages/productionReturn/job/returnJob.vue b/pages/productionReturn/job/returnJob.vue new file mode 100644 index 0000000..9e79f81 --- /dev/null +++ b/pages/productionReturn/job/returnJob.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/pages/productionReturn/record/returnToHold.vue b/pages/productionReturn/record/returnToHold.vue new file mode 100644 index 0000000..d2b78ee --- /dev/null +++ b/pages/productionReturn/record/returnToHold.vue @@ -0,0 +1,559 @@ + + + + + diff --git a/pages/productionReturn/record/returnToStore.vue b/pages/productionReturn/record/returnToStore.vue new file mode 100644 index 0000000..4ed8792 --- /dev/null +++ b/pages/productionReturn/record/returnToStore.vue @@ -0,0 +1,600 @@ + + + + + diff --git a/pages/productionReturn/request/requestDetail.vue b/pages/productionReturn/request/requestDetail.vue new file mode 100644 index 0000000..1dba06a --- /dev/null +++ b/pages/productionReturn/request/requestDetail.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/pages/productionReturn/request/returnRequestCreate.vue b/pages/productionReturn/request/returnRequestCreate.vue new file mode 100644 index 0000000..a204b7d --- /dev/null +++ b/pages/productionReturn/request/returnRequestCreate.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/pages/productionReturn/request/returnToHoldRequest.vue b/pages/productionReturn/request/returnToHoldRequest.vue new file mode 100644 index 0000000..47463da --- /dev/null +++ b/pages/productionReturn/request/returnToHoldRequest.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/pages/productionReturn/request/returnToStoreRequest.vue b/pages/productionReturn/request/returnToStoreRequest.vue new file mode 100644 index 0000000..2bcde74 --- /dev/null +++ b/pages/productionReturn/request/returnToStoreRequest.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/pages/purchaseReceipt/coms/comReceiptDetailCard.vue b/pages/purchaseReceipt/coms/comReceiptDetailCard.vue new file mode 100644 index 0000000..da34e49 --- /dev/null +++ b/pages/purchaseReceipt/coms/comReceiptDetailCard.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/pages/purchaseReceipt/coms/comReceiptJobCard.vue b/pages/purchaseReceipt/coms/comReceiptJobCard.vue new file mode 100644 index 0000000..8c8ddfd --- /dev/null +++ b/pages/purchaseReceipt/coms/comReceiptJobCard.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/pages/purchaseReceipt/coms/receiptDetailInfoPopup.vue b/pages/purchaseReceipt/coms/receiptDetailInfoPopup.vue new file mode 100644 index 0000000..b44816c --- /dev/null +++ b/pages/purchaseReceipt/coms/receiptDetailInfoPopup.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/pages/purchaseReceipt/coms/receiptInfoPopup.vue b/pages/purchaseReceipt/coms/receiptInfoPopup.vue new file mode 100644 index 0000000..dc5bf8e --- /dev/null +++ b/pages/purchaseReceipt/coms/receiptInfoPopup.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/pages/purchaseReceipt/coms/receiptJobListPopup.vue b/pages/purchaseReceipt/coms/receiptJobListPopup.vue new file mode 100644 index 0000000..c1e6bcf --- /dev/null +++ b/pages/purchaseReceipt/coms/receiptJobListPopup.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/pages/purchaseReceipt/job/receiptDetail.vue b/pages/purchaseReceipt/job/receiptDetail.vue new file mode 100644 index 0000000..19fe596 --- /dev/null +++ b/pages/purchaseReceipt/job/receiptDetail.vue @@ -0,0 +1,518 @@ + + + + + diff --git a/pages/purchaseReceipt/job/receiptJob.vue b/pages/purchaseReceipt/job/receiptJob.vue new file mode 100644 index 0000000..0c720e2 --- /dev/null +++ b/pages/purchaseReceipt/job/receiptJob.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/pages/purchaseReturn/coms/comReturnJobCard.vue b/pages/purchaseReturn/coms/comReturnJobCard.vue new file mode 100644 index 0000000..154820a --- /dev/null +++ b/pages/purchaseReturn/coms/comReturnJobCard.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/purchaseReturn/coms/comReturnRequestCard.vue b/pages/purchaseReturn/coms/comReturnRequestCard.vue new file mode 100644 index 0000000..ee1589b --- /dev/null +++ b/pages/purchaseReturn/coms/comReturnRequestCard.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/pages/purchaseReturn/coms/requestDetailInfoPopup.vue b/pages/purchaseReturn/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..b7edbb2 --- /dev/null +++ b/pages/purchaseReturn/coms/requestDetailInfoPopup.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/pages/purchaseReturn/coms/requestInfoPopup.vue b/pages/purchaseReturn/coms/requestInfoPopup.vue new file mode 100644 index 0000000..80d32c4 --- /dev/null +++ b/pages/purchaseReturn/coms/requestInfoPopup.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/pages/purchaseReturn/coms/returnDetailInfoPopup.vue b/pages/purchaseReturn/coms/returnDetailInfoPopup.vue new file mode 100644 index 0000000..642fa7e --- /dev/null +++ b/pages/purchaseReturn/coms/returnDetailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/purchaseReturn/coms/returnInfoPopup.vue b/pages/purchaseReturn/coms/returnInfoPopup.vue new file mode 100644 index 0000000..abef135 --- /dev/null +++ b/pages/purchaseReturn/coms/returnInfoPopup.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/pages/purchaseReturn/coms/returnJobListPopup.vue b/pages/purchaseReturn/coms/returnJobListPopup.vue new file mode 100644 index 0000000..56759af --- /dev/null +++ b/pages/purchaseReturn/coms/returnJobListPopup.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/pages/purchaseReturn/job/returnDetail.vue b/pages/purchaseReturn/job/returnDetail.vue new file mode 100644 index 0000000..b7a7205 --- /dev/null +++ b/pages/purchaseReturn/job/returnDetail.vue @@ -0,0 +1,471 @@ + + + + + diff --git a/pages/purchaseReturn/job/returnJob.vue b/pages/purchaseReturn/job/returnJob.vue new file mode 100644 index 0000000..3e0fec9 --- /dev/null +++ b/pages/purchaseReturn/job/returnJob.vue @@ -0,0 +1,305 @@ + + + + + diff --git a/pages/purchaseReturn/record/returnRecord.vue b/pages/purchaseReturn/record/returnRecord.vue new file mode 100644 index 0000000..2ba1de4 --- /dev/null +++ b/pages/purchaseReturn/record/returnRecord.vue @@ -0,0 +1,398 @@ + + + + + diff --git a/pages/purchaseReturn/request/returnRequest.vue b/pages/purchaseReturn/request/returnRequest.vue new file mode 100644 index 0000000..710dc47 --- /dev/null +++ b/pages/purchaseReturn/request/returnRequest.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/pages/purchaseReturn/request/returnRequestCreate.vue b/pages/purchaseReturn/request/returnRequestCreate.vue new file mode 100644 index 0000000..d308530 --- /dev/null +++ b/pages/purchaseReturn/request/returnRequestCreate.vue @@ -0,0 +1,358 @@ + + + + + diff --git a/pages/purchaseReturn/request/returnRequestDetail.vue b/pages/purchaseReturn/request/returnRequestDetail.vue new file mode 100644 index 0000000..96deb92 --- /dev/null +++ b/pages/purchaseReturn/request/returnRequestDetail.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/pages/putaway/coms/comPutawayJobCard.vue b/pages/putaway/coms/comPutawayJobCard.vue new file mode 100644 index 0000000..4f19c5d --- /dev/null +++ b/pages/putaway/coms/comPutawayJobCard.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/pages/putaway/coms/comPutawayRequestCard.vue b/pages/putaway/coms/comPutawayRequestCard.vue new file mode 100644 index 0000000..e142866 --- /dev/null +++ b/pages/putaway/coms/comPutawayRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/putaway/coms/putawayDetailInfoPopup.vue b/pages/putaway/coms/putawayDetailInfoPopup.vue new file mode 100644 index 0000000..eef803f --- /dev/null +++ b/pages/putaway/coms/putawayDetailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/putaway/coms/putawayInfoPopup.vue b/pages/putaway/coms/putawayInfoPopup.vue new file mode 100644 index 0000000..e3e2e79 --- /dev/null +++ b/pages/putaway/coms/putawayInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/putaway/coms/putawayJobListPopup.vue b/pages/putaway/coms/putawayJobListPopup.vue new file mode 100644 index 0000000..9a17ec1 --- /dev/null +++ b/pages/putaway/coms/putawayJobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/putaway/coms/requestDetailInfoPopup.vue b/pages/putaway/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..21a597b --- /dev/null +++ b/pages/putaway/coms/requestDetailInfoPopup.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/pages/putaway/coms/requestInfoPopup.vue b/pages/putaway/coms/requestInfoPopup.vue new file mode 100644 index 0000000..d4aed62 --- /dev/null +++ b/pages/putaway/coms/requestInfoPopup.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/pages/putaway/job/putawayDetail.vue b/pages/putaway/job/putawayDetail.vue new file mode 100644 index 0000000..8e6cea6 --- /dev/null +++ b/pages/putaway/job/putawayDetail.vue @@ -0,0 +1,515 @@ + + + + + diff --git a/pages/putaway/job/putawayJob.vue b/pages/putaway/job/putawayJob.vue new file mode 100644 index 0000000..6a3069f --- /dev/null +++ b/pages/putaway/job/putawayJob.vue @@ -0,0 +1,289 @@ + + + + + diff --git a/pages/putaway/record/putawayRecord.vue b/pages/putaway/record/putawayRecord.vue new file mode 100644 index 0000000..be7af0b --- /dev/null +++ b/pages/putaway/record/putawayRecord.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/pages/putaway/request/putawayRequest.vue b/pages/putaway/request/putawayRequest.vue new file mode 100644 index 0000000..c46f125 --- /dev/null +++ b/pages/putaway/request/putawayRequest.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/pages/putaway/request/putawayRequestCreate.vue b/pages/putaway/request/putawayRequestCreate.vue new file mode 100644 index 0000000..3dcbcfc --- /dev/null +++ b/pages/putaway/request/putawayRequestCreate.vue @@ -0,0 +1,431 @@ + + + + + diff --git a/pages/putaway/request/putawayRequestDetail.vue b/pages/putaway/request/putawayRequestDetail.vue new file mode 100644 index 0000000..cb5340e --- /dev/null +++ b/pages/putaway/request/putawayRequestDetail.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/pages/query/coms/comItemBalance.vue b/pages/query/coms/comItemBalance.vue new file mode 100644 index 0000000..3205e09 --- /dev/null +++ b/pages/query/coms/comItemBalance.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/pages/query/coms/comItemDetailCard.vue b/pages/query/coms/comItemDetailCard.vue new file mode 100644 index 0000000..806094a --- /dev/null +++ b/pages/query/coms/comItemDetailCard.vue @@ -0,0 +1,78 @@ + + + + + + + diff --git a/pages/query/coms/comLocationDetailCard.vue b/pages/query/coms/comLocationDetailCard.vue new file mode 100644 index 0000000..d43e7d7 --- /dev/null +++ b/pages/query/coms/comLocationDetailCard.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/pages/query/container.vue b/pages/query/container.vue new file mode 100644 index 0000000..5976b97 --- /dev/null +++ b/pages/query/container.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/pages/query/item.vue b/pages/query/item.vue new file mode 100644 index 0000000..d2036a1 --- /dev/null +++ b/pages/query/item.vue @@ -0,0 +1,302 @@ + + + + + + diff --git a/pages/query/item_copy.vue b/pages/query/item_copy.vue new file mode 100644 index 0000000..310f738 --- /dev/null +++ b/pages/query/item_copy.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/pages/query/location.vue b/pages/query/location.vue new file mode 100644 index 0000000..cb61e4e --- /dev/null +++ b/pages/query/location.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/pages/query/location_copy.vue b/pages/query/location_copy.vue new file mode 100644 index 0000000..a31f1f1 --- /dev/null +++ b/pages/query/location_copy.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/pages/repleinsh/coms/comRepleinshJobCard.vue b/pages/repleinsh/coms/comRepleinshJobCard.vue new file mode 100644 index 0000000..42adb98 --- /dev/null +++ b/pages/repleinsh/coms/comRepleinshJobCard.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/pages/repleinsh/coms/comRepleinshRequestCard.vue b/pages/repleinsh/coms/comRepleinshRequestCard.vue new file mode 100644 index 0000000..e142866 --- /dev/null +++ b/pages/repleinsh/coms/comRepleinshRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/repleinsh/coms/comRepleinshRequestPopup.vue b/pages/repleinsh/coms/comRepleinshRequestPopup.vue new file mode 100644 index 0000000..b3a21ed --- /dev/null +++ b/pages/repleinsh/coms/comRepleinshRequestPopup.vue @@ -0,0 +1,320 @@ + + + + + diff --git a/pages/repleinsh/coms/comRepleishDetailCard.vue b/pages/repleinsh/coms/comRepleishDetailCard.vue new file mode 100644 index 0000000..8aa9bec --- /dev/null +++ b/pages/repleinsh/coms/comRepleishDetailCard.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/pages/repleinsh/coms/comScanReplishPack.vue b/pages/repleinsh/coms/comScanReplishPack.vue new file mode 100644 index 0000000..2568434 --- /dev/null +++ b/pages/repleinsh/coms/comScanReplishPack.vue @@ -0,0 +1,531 @@ + + + + + diff --git a/pages/repleinsh/coms/repleinshDetailInfoPopup.vue b/pages/repleinsh/coms/repleinshDetailInfoPopup.vue new file mode 100644 index 0000000..eef803f --- /dev/null +++ b/pages/repleinsh/coms/repleinshDetailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/repleinsh/coms/repleinshInfoPopup.vue b/pages/repleinsh/coms/repleinshInfoPopup.vue new file mode 100644 index 0000000..88b2e0f --- /dev/null +++ b/pages/repleinsh/coms/repleinshInfoPopup.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/pages/repleinsh/coms/repleinshJobListPopup.vue b/pages/repleinsh/coms/repleinshJobListPopup.vue new file mode 100644 index 0000000..9a17ec1 --- /dev/null +++ b/pages/repleinsh/coms/repleinshJobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/repleinsh/coms/requestDetailInfoPopup.vue b/pages/repleinsh/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..21a597b --- /dev/null +++ b/pages/repleinsh/coms/requestDetailInfoPopup.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/pages/repleinsh/coms/requestInfoPopup.vue b/pages/repleinsh/coms/requestInfoPopup.vue new file mode 100644 index 0000000..14f9d09 --- /dev/null +++ b/pages/repleinsh/coms/requestInfoPopup.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/pages/repleinsh/job/repleinshDetail.vue b/pages/repleinsh/job/repleinshDetail.vue new file mode 100644 index 0000000..9f0cd00 --- /dev/null +++ b/pages/repleinsh/job/repleinshDetail.vue @@ -0,0 +1,499 @@ + + + + + diff --git a/pages/repleinsh/job/repleinshJob.vue b/pages/repleinsh/job/repleinshJob.vue new file mode 100644 index 0000000..b5084a2 --- /dev/null +++ b/pages/repleinsh/job/repleinshJob.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/pages/repleinsh/record/repleinshRecord.vue b/pages/repleinsh/record/repleinshRecord.vue new file mode 100644 index 0000000..9c2b8c9 --- /dev/null +++ b/pages/repleinsh/record/repleinshRecord.vue @@ -0,0 +1,566 @@ + + + + + diff --git a/pages/repleinsh/request/repleinshRequest.vue b/pages/repleinsh/request/repleinshRequest.vue new file mode 100644 index 0000000..3af80d3 --- /dev/null +++ b/pages/repleinsh/request/repleinshRequest.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/pages/repleinsh/request/repleinshRequestDetail.vue b/pages/repleinsh/request/repleinshRequestDetail.vue new file mode 100644 index 0000000..2555013 --- /dev/null +++ b/pages/repleinsh/request/repleinshRequestDetail.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/pages/scrap/coms/comScrapDetailCard.vue b/pages/scrap/coms/comScrapDetailCard.vue new file mode 100644 index 0000000..38f3944 --- /dev/null +++ b/pages/scrap/coms/comScrapDetailCard.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/pages/scrap/coms/comScrapJobCard.vue b/pages/scrap/coms/comScrapJobCard.vue new file mode 100644 index 0000000..037ee32 --- /dev/null +++ b/pages/scrap/coms/comScrapJobCard.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/pages/scrap/coms/comScrapRequestCard.vue b/pages/scrap/coms/comScrapRequestCard.vue new file mode 100644 index 0000000..23d744a --- /dev/null +++ b/pages/scrap/coms/comScrapRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/scrap/coms/requestDetailInfoPopup.vue b/pages/scrap/coms/requestDetailInfoPopup.vue new file mode 100644 index 0000000..4c965d1 --- /dev/null +++ b/pages/scrap/coms/requestDetailInfoPopup.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/pages/scrap/coms/requestInfoPopup.vue b/pages/scrap/coms/requestInfoPopup.vue new file mode 100644 index 0000000..871a73f --- /dev/null +++ b/pages/scrap/coms/requestInfoPopup.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/pages/scrap/coms/scrapDetailInfoPopup.vue b/pages/scrap/coms/scrapDetailInfoPopup.vue new file mode 100644 index 0000000..7a5ba51 --- /dev/null +++ b/pages/scrap/coms/scrapDetailInfoPopup.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/pages/scrap/coms/scrapInfoPopup.vue b/pages/scrap/coms/scrapInfoPopup.vue new file mode 100644 index 0000000..8bb7ec3 --- /dev/null +++ b/pages/scrap/coms/scrapInfoPopup.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/pages/scrap/coms/scrapJobListPopup.vue b/pages/scrap/coms/scrapJobListPopup.vue new file mode 100644 index 0000000..66af3f1 --- /dev/null +++ b/pages/scrap/coms/scrapJobListPopup.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/pages/scrap/job/scrapJob.vue b/pages/scrap/job/scrapJob.vue new file mode 100644 index 0000000..7648546 --- /dev/null +++ b/pages/scrap/job/scrapJob.vue @@ -0,0 +1,283 @@ + + + + + diff --git a/pages/scrap/job/scrapJobDetail.vue b/pages/scrap/job/scrapJobDetail.vue new file mode 100644 index 0000000..6574746 --- /dev/null +++ b/pages/scrap/job/scrapJobDetail.vue @@ -0,0 +1,449 @@ + + + + + diff --git a/pages/scrap/record/scrapRecord.vue b/pages/scrap/record/scrapRecord.vue new file mode 100644 index 0000000..a5de67d --- /dev/null +++ b/pages/scrap/record/scrapRecord.vue @@ -0,0 +1,396 @@ + + + + + diff --git a/pages/scrap/request/scrapRequestCreate.vue b/pages/scrap/request/scrapRequestCreate.vue new file mode 100644 index 0000000..1fb3df4 --- /dev/null +++ b/pages/scrap/request/scrapRequestCreate.vue @@ -0,0 +1,390 @@ + + + + + diff --git a/pages/scrap/request/scrapRequestDetail.vue b/pages/scrap/request/scrapRequestDetail.vue new file mode 100644 index 0000000..4ba2c28 --- /dev/null +++ b/pages/scrap/request/scrapRequestDetail.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/pages/scrap/request/scrapRrequest.vue b/pages/scrap/request/scrapRrequest.vue new file mode 100644 index 0000000..25a10de --- /dev/null +++ b/pages/scrap/request/scrapRrequest.vue @@ -0,0 +1,390 @@ + + + + + diff --git a/pages/setter/index.vue b/pages/setter/index.vue new file mode 100644 index 0000000..9b616cf --- /dev/null +++ b/pages/setter/index.vue @@ -0,0 +1,166 @@ + + + + + \ No newline at end of file diff --git a/pages/setter/passwordpage.vue b/pages/setter/passwordpage.vue new file mode 100644 index 0000000..72434c6 --- /dev/null +++ b/pages/setter/passwordpage.vue @@ -0,0 +1,108 @@ + + + + + diff --git a/pages/setter/setterDetail.vue b/pages/setter/setterDetail.vue new file mode 100644 index 0000000..708e6d0 --- /dev/null +++ b/pages/setter/setterDetail.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/pages/supplierDeliver/coms/comRecordCard.vue b/pages/supplierDeliver/coms/comRecordCard.vue new file mode 100644 index 0000000..1c6e0c4 --- /dev/null +++ b/pages/supplierDeliver/coms/comRecordCard.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/pages/supplierDeliver/coms/comRecordDetailCard.vue b/pages/supplierDeliver/coms/comRecordDetailCard.vue new file mode 100644 index 0000000..0802152 --- /dev/null +++ b/pages/supplierDeliver/coms/comRecordDetailCard.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/pages/supplierDeliver/coms/recordDetailInfoPopup.vue b/pages/supplierDeliver/coms/recordDetailInfoPopup.vue new file mode 100644 index 0000000..7ef4023 --- /dev/null +++ b/pages/supplierDeliver/coms/recordDetailInfoPopup.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/pages/supplierDeliver/coms/recordInfoPopup.vue b/pages/supplierDeliver/coms/recordInfoPopup.vue new file mode 100644 index 0000000..8eadb47 --- /dev/null +++ b/pages/supplierDeliver/coms/recordInfoPopup.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/pages/supplierDeliver/coms/recordListDetailPop.vue b/pages/supplierDeliver/coms/recordListDetailPop.vue new file mode 100644 index 0000000..a8dae9b --- /dev/null +++ b/pages/supplierDeliver/coms/recordListDetailPop.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/pages/supplierDeliver/coms/recordListPopup.vue b/pages/supplierDeliver/coms/recordListPopup.vue new file mode 100644 index 0000000..88edbd1 --- /dev/null +++ b/pages/supplierDeliver/coms/recordListPopup.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/pages/supplierDeliver/coms/recordtDetailInfoPopup.vue b/pages/supplierDeliver/coms/recordtDetailInfoPopup.vue new file mode 100644 index 0000000..7a5ba51 --- /dev/null +++ b/pages/supplierDeliver/coms/recordtDetailInfoPopup.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/pages/supplierDeliver/record/supplierDeliverRecord.vue b/pages/supplierDeliver/record/supplierDeliverRecord.vue new file mode 100644 index 0000000..16313ac --- /dev/null +++ b/pages/supplierDeliver/record/supplierDeliverRecord.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/pages/supplierDeliver/record/supplierDeliverRecordDetail.vue b/pages/supplierDeliver/record/supplierDeliverRecordDetail.vue new file mode 100644 index 0000000..6e5a72e --- /dev/null +++ b/pages/supplierDeliver/record/supplierDeliverRecordDetail.vue @@ -0,0 +1,247 @@ + + + + + diff --git a/pages/transfer/coms/comReceiptDetailCard.vue b/pages/transfer/coms/comReceiptDetailCard.vue new file mode 100644 index 0000000..3ffa47a --- /dev/null +++ b/pages/transfer/coms/comReceiptDetailCard.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/pages/transfer/coms/comTransferJobCard.vue b/pages/transfer/coms/comTransferJobCard.vue new file mode 100644 index 0000000..98946e3 --- /dev/null +++ b/pages/transfer/coms/comTransferJobCard.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/pages/transfer/coms/comTransferRecord.vue b/pages/transfer/coms/comTransferRecord.vue new file mode 100644 index 0000000..cf58ebc --- /dev/null +++ b/pages/transfer/coms/comTransferRecord.vue @@ -0,0 +1,487 @@ + + + + + diff --git a/pages/transfer/coms/detailInfoPopup.vue b/pages/transfer/coms/detailInfoPopup.vue new file mode 100644 index 0000000..4b64c50 --- /dev/null +++ b/pages/transfer/coms/detailInfoPopup.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/pages/transfer/coms/jobInfoPopup.vue b/pages/transfer/coms/jobInfoPopup.vue new file mode 100644 index 0000000..ae2a0e9 --- /dev/null +++ b/pages/transfer/coms/jobInfoPopup.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/pages/transfer/coms/jobListPopup.vue b/pages/transfer/coms/jobListPopup.vue new file mode 100644 index 0000000..4301be0 --- /dev/null +++ b/pages/transfer/coms/jobListPopup.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/pages/transfer/job/issueDetail.vue b/pages/transfer/job/issueDetail.vue new file mode 100644 index 0000000..3f9598d --- /dev/null +++ b/pages/transfer/job/issueDetail.vue @@ -0,0 +1,525 @@ + + + + + diff --git a/pages/transfer/job/issueJob.vue b/pages/transfer/job/issueJob.vue new file mode 100644 index 0000000..674c191 --- /dev/null +++ b/pages/transfer/job/issueJob.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/pages/transfer/job/receiptDetail.vue b/pages/transfer/job/receiptDetail.vue new file mode 100644 index 0000000..72635b7 --- /dev/null +++ b/pages/transfer/job/receiptDetail.vue @@ -0,0 +1,563 @@ + + + + + diff --git a/pages/transfer/job/receiptJob.vue b/pages/transfer/job/receiptJob.vue new file mode 100644 index 0000000..87c65a8 --- /dev/null +++ b/pages/transfer/job/receiptJob.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/pages/transfer/job/transferDetail.vue b/pages/transfer/job/transferDetail.vue new file mode 100644 index 0000000..982bef9 --- /dev/null +++ b/pages/transfer/job/transferDetail.vue @@ -0,0 +1,584 @@ + + + + + diff --git a/pages/transfer/job/transferJob.vue b/pages/transfer/job/transferJob.vue new file mode 100644 index 0000000..05d185a --- /dev/null +++ b/pages/transfer/job/transferJob.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/pages/transfer/record/deliverRecord.vue b/pages/transfer/record/deliverRecord.vue new file mode 100644 index 0000000..a99a719 --- /dev/null +++ b/pages/transfer/record/deliverRecord.vue @@ -0,0 +1,460 @@ + + + + + diff --git a/pages/transfer/record/receiptRecord.vue b/pages/transfer/record/receiptRecord.vue new file mode 100644 index 0000000..51c6e5a --- /dev/null +++ b/pages/transfer/record/receiptRecord.vue @@ -0,0 +1,438 @@ + + + + + diff --git a/pages/unPlanned/coms/comBalance.vue b/pages/unPlanned/coms/comBalance.vue new file mode 100644 index 0000000..45e326f --- /dev/null +++ b/pages/unPlanned/coms/comBalance.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/pages/unPlanned/coms/comIssueDetailCard.vue b/pages/unPlanned/coms/comIssueDetailCard.vue new file mode 100644 index 0000000..3564b84 --- /dev/null +++ b/pages/unPlanned/coms/comIssueDetailCard.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/pages/unPlanned/coms/comIssueJobCard.vue b/pages/unPlanned/coms/comIssueJobCard.vue new file mode 100644 index 0000000..98946e3 --- /dev/null +++ b/pages/unPlanned/coms/comIssueJobCard.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/pages/unPlanned/coms/comIssueRequestCard.vue b/pages/unPlanned/coms/comIssueRequestCard.vue new file mode 100644 index 0000000..3ca67a9 --- /dev/null +++ b/pages/unPlanned/coms/comIssueRequestCard.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/pages/unPlanned/coms/comReceiptDetailCard.vue b/pages/unPlanned/coms/comReceiptDetailCard.vue new file mode 100644 index 0000000..6c50a26 --- /dev/null +++ b/pages/unPlanned/coms/comReceiptDetailCard.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/pages/unPlanned/coms/comReceiptJobCard.vue b/pages/unPlanned/coms/comReceiptJobCard.vue new file mode 100644 index 0000000..98946e3 --- /dev/null +++ b/pages/unPlanned/coms/comReceiptJobCard.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/pages/unPlanned/coms/comReceiptRecord.vue b/pages/unPlanned/coms/comReceiptRecord.vue new file mode 100644 index 0000000..ca3b418 --- /dev/null +++ b/pages/unPlanned/coms/comReceiptRecord.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/pages/unPlanned/coms/comReceiptRequestCard.vue b/pages/unPlanned/coms/comReceiptRequestCard.vue new file mode 100644 index 0000000..f9784b4 --- /dev/null +++ b/pages/unPlanned/coms/comReceiptRequestCard.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/pages/unPlanned/coms/comReceiptRequestPopup.vue b/pages/unPlanned/coms/comReceiptRequestPopup.vue new file mode 100644 index 0000000..583541f --- /dev/null +++ b/pages/unPlanned/coms/comReceiptRequestPopup.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/pages/unPlanned/coms/detailInfoPopup.vue b/pages/unPlanned/coms/detailInfoPopup.vue new file mode 100644 index 0000000..be4a571 --- /dev/null +++ b/pages/unPlanned/coms/detailInfoPopup.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/pages/unPlanned/coms/jobInfoPopup.vue b/pages/unPlanned/coms/jobInfoPopup.vue new file mode 100644 index 0000000..f361f30 --- /dev/null +++ b/pages/unPlanned/coms/jobInfoPopup.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/pages/unPlanned/coms/jobListPopup.vue b/pages/unPlanned/coms/jobListPopup.vue new file mode 100644 index 0000000..d57df20 --- /dev/null +++ b/pages/unPlanned/coms/jobListPopup.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/pages/unPlanned/coms/requestIssDetailInfoPopup.vue b/pages/unPlanned/coms/requestIssDetailInfoPopup.vue new file mode 100644 index 0000000..0e72cf6 --- /dev/null +++ b/pages/unPlanned/coms/requestIssDetailInfoPopup.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/pages/unPlanned/coms/requestIssInfoPopup.vue b/pages/unPlanned/coms/requestIssInfoPopup.vue new file mode 100644 index 0000000..dc6bf5e --- /dev/null +++ b/pages/unPlanned/coms/requestIssInfoPopup.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/pages/unPlanned/coms/requestRecDetailInfoPopup.vue b/pages/unPlanned/coms/requestRecDetailInfoPopup.vue new file mode 100644 index 0000000..8f8d799 --- /dev/null +++ b/pages/unPlanned/coms/requestRecDetailInfoPopup.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/pages/unPlanned/coms/requestRecInfoPopup.vue b/pages/unPlanned/coms/requestRecInfoPopup.vue new file mode 100644 index 0000000..3d6fe23 --- /dev/null +++ b/pages/unPlanned/coms/requestRecInfoPopup.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/pages/unPlanned/job/issueJob.vue b/pages/unPlanned/job/issueJob.vue new file mode 100644 index 0000000..c5ef37f --- /dev/null +++ b/pages/unPlanned/job/issueJob.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/pages/unPlanned/job/issueJobDetail.vue b/pages/unPlanned/job/issueJobDetail.vue new file mode 100644 index 0000000..44832a2 --- /dev/null +++ b/pages/unPlanned/job/issueJobDetail.vue @@ -0,0 +1,425 @@ + + + + + diff --git a/pages/unPlanned/job/receiptJob.vue b/pages/unPlanned/job/receiptJob.vue new file mode 100644 index 0000000..9a9b713 --- /dev/null +++ b/pages/unPlanned/job/receiptJob.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/pages/unPlanned/job/receiptJobDetail.vue b/pages/unPlanned/job/receiptJobDetail.vue new file mode 100644 index 0000000..d73df3c --- /dev/null +++ b/pages/unPlanned/job/receiptJobDetail.vue @@ -0,0 +1,412 @@ + + + + + diff --git a/pages/unPlanned/record/issueRecord.vue b/pages/unPlanned/record/issueRecord.vue new file mode 100644 index 0000000..d02d229 --- /dev/null +++ b/pages/unPlanned/record/issueRecord.vue @@ -0,0 +1,296 @@ + + + + + diff --git a/pages/unPlanned/record/receiptRecord.vue b/pages/unPlanned/record/receiptRecord.vue new file mode 100644 index 0000000..cec98b3 --- /dev/null +++ b/pages/unPlanned/record/receiptRecord.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/pages/unPlanned/request/issueRequest.vue b/pages/unPlanned/request/issueRequest.vue new file mode 100644 index 0000000..7cec841 --- /dev/null +++ b/pages/unPlanned/request/issueRequest.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/pages/unPlanned/request/issueRequestCreate.vue b/pages/unPlanned/request/issueRequestCreate.vue new file mode 100644 index 0000000..6f28beb --- /dev/null +++ b/pages/unPlanned/request/issueRequestCreate.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/pages/unPlanned/request/issueRequestDetail.vue b/pages/unPlanned/request/issueRequestDetail.vue new file mode 100644 index 0000000..56586ff --- /dev/null +++ b/pages/unPlanned/request/issueRequestDetail.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/pages/unPlanned/request/receiptRequest.vue b/pages/unPlanned/request/receiptRequest.vue new file mode 100644 index 0000000..2871cb2 --- /dev/null +++ b/pages/unPlanned/request/receiptRequest.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/pages/unPlanned/request/receiptRequestCreate.vue b/pages/unPlanned/request/receiptRequestCreate.vue new file mode 100644 index 0000000..5fbcc64 --- /dev/null +++ b/pages/unPlanned/request/receiptRequestCreate.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/pages/unPlanned/request/receiptRequestDetail.vue b/pages/unPlanned/request/receiptRequestDetail.vue new file mode 100644 index 0000000..1c7a299 --- /dev/null +++ b/pages/unPlanned/request/receiptRequestDetail.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/plugins/auth.js b/plugins/auth.js new file mode 100644 index 0000000..3b91c14 --- /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..d76c141 --- /dev/null +++ b/plugins/index.js @@ -0,0 +1,17 @@ +import tab from './tab' +// import auth from './auth' +import modal from './modal' +import time from './time' + +export default { + install(app) { + // 页签操作 + app.config.globalProperties.$tab = tab + // 认证对象 + // Vue.prototype.$auth = auth + // 模态框对象 + app.config.globalProperties.$modal = modal + // 时间对象 + app.config.globalProperties.$time = time + } +} diff --git a/plugins/modal.js b/plugins/modal.js new file mode 100644 index 0000000..5425628 --- /dev/null +++ b/plugins/modal.js @@ -0,0 +1,73 @@ +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,confirmText,cancelText) { + return new Promise((resolve, reject) => { + uni.showModal({ + title: '系统提示', + content: content, + cancelText: cancelText||'取消', + confirmText: 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, + }) + }, + // 关闭遮罩层 + closeLoading() { + uni.hideLoading() + } +} diff --git a/plugins/tab.js b/plugins/tab.js new file mode 100644 index 0000000..294253d --- /dev/null +++ b/plugins/tab.js @@ -0,0 +1,32 @@ +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(level) { + return uni.navigateBack({ + delta:level + }) + } +} diff --git a/plugins/time.js b/plugins/time.js new file mode 100644 index 0000000..9f8a11c --- /dev/null +++ b/plugins/time.js @@ -0,0 +1,19 @@ +export default { + formatDate(timestamp){ + // 获取当前时间戳(单位:毫秒) + // var timestamp = Date.now(); // 或者传入特定的时间戳值 + timestamp = timestamp ? timestamp :Date.now() + // 创建Date对象并设置时间戳 + var dateObj = new Date(timestamp); + + // 提取年份、月份、日期等信息 + var year = dateObj.getFullYear(); + var month = (dateObj.getMonth() + 1).toString().padStart(2, '0'); // 注意月份从0开始计数,所以需要加1 + var day = dateObj.getDate().toString().padStart(2, '0'); + var hour = dateObj.getHours().toString().padStart(2, '0'); + var minutes = dateObj.getMinutes().toString().padStart(2, '0'); + var seconds = dateObj.getSeconds().toString().padStart(2, '0'); + + return `${year}-${month}-${day} ${hour}:${minutes}:${seconds}` + } +} diff --git a/static/avatar.png b/static/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc3c6fbabc4911c0e26ae2d7c2c4bd25afcb9fb GIT binary patch literal 5403 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 i+l8&0>&^ObYFtuIC+Gpxs*A((`E@KK=o#Msw}} literal 0 HcmV?d00001 diff --git a/static/icon/black_count.svg b/static/icon/black_count.svg new file mode 100644 index 0000000..7122e62 --- /dev/null +++ b/static/icon/black_count.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/checkmark-circle.svg b/static/icon/checkmark-circle.svg new file mode 100644 index 0000000..d16c84e --- /dev/null +++ b/static/icon/checkmark-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/close-circle.svg b/static/icon/close-circle.svg new file mode 100644 index 0000000..55c1ffe --- /dev/null +++ b/static/icon/close-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/close-circle2.svg b/static/icon/close-circle2.svg new file mode 100644 index 0000000..48be751 --- /dev/null +++ b/static/icon/close-circle2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/close.svg b/static/icon/close.svg new file mode 100644 index 0000000..e6a2272 --- /dev/null +++ b/static/icon/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/data-checkbox.png b/static/icon/data-checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..748bdcbe36faff874f06ebf45f135d6e166e5ec5 GIT binary patch literal 1888 zcmV-m2cP(fP)Px+8c9S!RA@u(S!qmER}}v448u4qf}n_kidtn5qpeW`TCLWtwi=fPtGF|*tuT!E3U}Yr+FfL|(N_Hf5wKBaIY+rqZe(SVrO!)B6*mcn?ta1%z;b zv<9FCNCgNU;f6H8d=@| zzFTb+yBQPMJbiM+Dk-`Wh%lm~hFbtSz1!Cxu_O6m-MDMx?i?JuSOUgyQ=g>mD#e;h zB5}z#qlsWW&A}GW2}7HfYALubWq8DQ9nD96aTP|t6KIFa&zZzuj3S0$wML~aj^yLa z3zthGI+~FLkc5yRPbAIm=n7BL^9r+o)mtCboFAP-o8ens2Rq$_)px`RfPp3HX#{lz z?2<@aV#WbN$nYV3{V}Nl%Bu8<1u3SgDuPdA+M-97`f|pH6(}Tv_}2!S}_y*ibQxj+Vjr6hCdaFFs18T9*NLDWId7{9QpE zKP42AoxL3zJ$$|hzwOJbdB#VWX``x3@$9uyr0skJt5B;N+1U%9PY8k9Q{gnwoIEc> z#!#+L(mIY{9c|Y{5)Jo2Si6~Hg3!GY7&mG80F%!q6z` z({e#^6&9?>s`lM#?UlMX^0M1RC}oQKFx&yq{{6QDFn&lYSD51Sf6_~#-;pD3`skj{ z_m(5DKMp^}-jjv=FicOS;oYSebX}|fW+Yr+pj0S+(5Myoer`wjde`s!j*OL>ENCuK z)}~)(vS8t=J192`U;>$?PYz$(U_@eQx{oiEHwh3N-Ltv)cGy@eb;l!|xmwEK;BP4( zn!2T=^sXHPUSL#GM!5bAnh~o6+06gejSEI}4|(Mxh4`6kB}n}&jivGGXPG2e#{>6{%D^Uk;8eBBSXAuORpy z23Qn-TZ|hUY&VL?FB48{wmmQeu&VCyNLNj{W9Z3yoT}7lcId--CMl z zng90nR$@eS00#8(b2g-Q3S}d?_L}5FIs4 z1jM^vv5oP)6Vb^F;b9tt2JyRJ6+Bf0l~oMIWmU+|Gs9pkM@H6D+g{)#j0|jU8jaX3 zBLVe9-6F!#s&C^pvl#?gxAFX9fe^CNiihjg)4~7mZM=P0`1g?;{Ry!;_&$OPFjRjZ zVeG7+RPIen=z9K@`aa@LIW(lM+ojcz&bWisM8uuwHHL0eMj9ik?qD`$#GU9hhVE;V ak^cbcP=`^xbzQaq0000 \ No newline at end of file diff --git a/static/icon/icon_customer.svg b/static/icon/icon_customer.svg new file mode 100644 index 0000000..1ec2604 --- /dev/null +++ b/static/icon/icon_customer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icon_date.svg b/static/icon/icon_date.svg new file mode 100644 index 0000000..fd7b17c --- /dev/null +++ b/static/icon/icon_date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icon_eye-fill.svg b/static/icon/icon_eye-fill.svg new file mode 100644 index 0000000..6cabb84 --- /dev/null +++ b/static/icon/icon_eye-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icon_eye-off-outline.svg b/static/icon/icon_eye-off-outline.svg new file mode 100644 index 0000000..a99c7e5 --- /dev/null +++ b/static/icon/icon_eye-off-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icon_filter.svg b/static/icon/icon_filter.svg new file mode 100644 index 0000000..a916a83 --- /dev/null +++ b/static/icon/icon_filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/iconfont.ttf b/static/icon/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d9c6e1a5bd7b13dae475633a5f4f6266c649c0b0 GIT binary patch literal 1616 zcmd^9%}W$v82`O9>+ZUn=0{2N#U$mSWLGz`i1Lu8hoZvFQ;_5C?1#+GY_p?iC&5z` z)S*+?i0IZekn$Epgb?H)*KYg7!n&nIr*oH>i@fn>W!ZZM{GhubMM8(S#%PAE0eGX4PtW zcHtHM99pU7*8TT|(<2O({)N(ifiWV?rKQ7sC@9e$s3+XU+^~v;C z85qqmXp1zH&?HNdl{B=fijqz70k$}#NPh}F=!Z5qbafQXw&^=KD4PgG`v1kku9QsH z4>JXQ(ksXa#1$KhK|DqS7rw83AonPo#dqWcGc`2mWOtDp#mfaOt}m}I2j>C(3+5Om zd-yAwTu`;dHF)DdcSwm*6?=`W%ipjRNpn4ltR862gs!AqFD_l!M0*4gV$#*IoBR;8c1Hby5!g2B! z6;9z4E-Rd7#hQF0VvSs<3-byK_Wx304b6D1uulG+!ZG4yg&WX;HHG8ke=D5A7{B+h zei~gOKj2xWZxxJ*S)-D7oucdb(L7?6rfk!T%xE67yn4lTjNVL7L=9Vx!pE z)t|*qY+{2KD1DQxlV@}W \ No newline at end of file diff --git a/static/icon/icons_close-circle.svg b/static/icon/icons_close-circle.svg new file mode 100644 index 0000000..01bb878 --- /dev/null +++ b/static/icon/icons_close-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icons_close.svg b/static/icon/icons_close.svg new file mode 100644 index 0000000..5574d0b --- /dev/null +++ b/static/icon/icons_close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icons_edit.svg b/static/icon/icons_edit.svg new file mode 100644 index 0000000..e81fde4 --- /dev/null +++ b/static/icon/icons_edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/icons_scan_close.svg b/static/icon/icons_scan_close.svg new file mode 100644 index 0000000..15a32b8 --- /dev/null +++ b/static/icon/icons_scan_close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/light_count.svg b/static/icon/light_count.svg new file mode 100644 index 0000000..0e4b9ab --- /dev/null +++ b/static/icon/light_count.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/plus.svg b/static/icon/plus.svg new file mode 100644 index 0000000..d8c2ef6 --- /dev/null +++ b/static/icon/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/question-circle.svg b/static/icon/question-circle.svg new file mode 100644 index 0000000..1829a60 --- /dev/null +++ b/static/icon/question-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/screen.png b/static/icon/screen.png new file mode 100644 index 0000000000000000000000000000000000000000..6bdb41d2cd199f935a037e090100d68b7c031c67 GIT binary patch literal 5214 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 literal 0 HcmV?d00001 diff --git a/static/icon/search.svg b/static/icon/search.svg new file mode 100644 index 0000000..0de882b --- /dev/null +++ b/static/icon/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon/warning.svg b/static/icon/warning.svg new file mode 100644 index 0000000..a517020 --- /dev/null +++ b/static/icon/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icon_personal_name.png b/static/icon_personal_name.png new file mode 100644 index 0000000000000000000000000000000000000000..88746da4aea86c0e20535e38b7fa5ebbfdd39f26 GIT binary patch literal 13394 zcmXwfc|6qL_y2v(j4j)c$Ud?brL2{hLDpfCv|m1KeLW}IDE{$PEOm*SHz}z#IjO41 zVP-R9s}Di!4+jz*vsL`V#cmH;N1x>7cHJ+qkd60~h-(^UnLF`w`?J*vF$SLdQhhv^ zMDXIwn4GuT_VbK7q-YeQqK~4!KA(&%f`~=|T(ifHi_2-I3G>OvUM@?;U17D7ofsi+ zcG19~q~&v-H8);K%f-2^&*q$jqPY=(6w}1$f4|c$mdB9OoBRF#iHT#9COmv16Dg&S z51yUtkqd+-X(7;^V?U}gUtw6*{nxOJ_94&l*YE6`CpTj#I#4$!0@yIy9?U%FlHP91 zwKp?T;o-P!e~JMu_CUV@V*>Ic0WiDlwUcts{mWMC;n~uNrnJ=h^yH+V-$IH>bpd*P zLd6^qIHk{ZxK(Mdm8Ix2`qlI4xc_7Ov*d&DkNSt-ZzWT|3;%6qxV&Qzo*x21Wgf2tqkbmE)0JnQTXU0% zT&lIBL!UqZRK`O&SI_>-Goqe*Zm0Rp?C#2VxxyJqnG!8((?M~M^5UmerbVZH1R3Cf>XBB?q7_{GR4ey%{SSe&Nv0-{Y8r+;u#=t zL@QMAy6Q`CR}Bz8JBDIYtED|zYyGe3_~aXPpv)nTmjG1jb}h7&Wi}_j8eT$rl_46* zdpTY-t!xl@6m#aVqPo6+JMdVyB;gGkz?gIzQ0!7_?zFma_gvgRr zB#jONs?Ra=@ij!#6HQRSk(Uu`#EwGDA|P)gM7V(yYr8gfH0bL3a+|*vAXNE?Fmma@H7wy+A#nZ+UAej^(ZAS&G{!$ zfCPdNdS&5ot2(&N3oi!Ve|mk?@*)aBIKn%I^^K;*65qO{A3yJ(MI{nr>A|VIhwACx zA>L##%bIrv?lmH>g6%gcs#i}HB>77)USol98qv#i-J!$ZguWpLZ~%S2mkdS|<7qhO z*MF=;xg@ir!T`p|V+T3Qb2pI422hSWfgdts&aM0-lTStkYXCGl`4HGWzmIb}p^Elw zRH>{KFHCh~2XqU)>!O+j30!i#Mn$O;_0+NY zAY);qk#YDs&7`uefn~bYlgCrLli@@UdY~(zzt{5k9vK{J=@82$p!kl|cx)J!fHq>6 zI4uK2Rlf=1X7kUr7}l4}T~|Gc2Jyg(0!{_T;+%{S60cddGuj1lcO7*wg$o@7Hq{Jz za3pIhfPe9e6dojeo+KI*QAVI(r>Lk?K(X1aK#ZW9DNQ_&0v9rWvVt9=^go?-frmGp zH_`07+gDbwtcs3S@&S)Z7q+UE#Xd6aK!iVXe`)GG6P&-htAXg?5_tW>&J!6Utl);c zjZX)6GIB$e0b}d)tmy0yIxwo{ZnI4fWZtGyco*Cq@>^d3cyBLZ#b^HBlXg!sQh?iV zxma)>?q^RA_@>3Mz%3kuIVuNT%xXC_JA_CjW7EO-a@WZG_v&_luP2G35G(7kkHp#A zbKWVN-qBLjXQ$|nOb{PSNOYEb#=L*%c zh$x8yR^1S`dDIpGS`*IooTH_E93ntqnVU*KT!>%<#Iq#{>bX&yf*j=$fQXc$03!hu zlqv)qkA`7EJgX}1fF6vJrdYur4Rp5vg1}j_i^T1*p~@oxkp}KQ$r?l$M1%amCP8qh zjxJU}5Uv;RA_3ISXFF)MsrQmVj>wSG8c zgaXi=x*05E>ddM#JGBKtxH z4X-@Aei3>0q6-}?Z{nR;hk$DzQn|-{vwO`abm;)^RJGT?hM;h!qKSTA%~ScM5NSAY zWctqCYXBs~_mi~XD`z^AB%QzndQaj{V2=V^Hn;Q6^1Xb91e0np(l}jVB+t17g988( z-%k;Vx-?*PZQ|(AclRHxz%452+3?~nxkul`m@VNXBo}o6%M&DCt>%Uj7{K{uI$(Ca zDU$BS3E=2)SOzx@+Son$(%hi?hKXJU5T^w}H>d5+;!o<*Ee6YOeS-92I{(WEw@<8q z_#k6K;P`z&3daN7EBmRmpGz4(xzYC-2=LByX9q^7AcC2I<319c&+ww%+=;kC2x0{A zVsayR<;W0t)BW(1kOB?u0Fso21vt&11v+}M{{;1VlMb|M*EB!vXGQCQVxb1l@ER<@ z$hPquHOAu55bowqrDqfX(HYVEP~8edTxJEW=4dkb=>YN$kl<0`cRF;JH$TX7r@Vv9 z>-Ki%Phx%jouVs6!OS5NgwAaEL$~Zf`Ldwa4E%HwaaT(@_k85K+X3d?K~&s69pEsC zqIH?ydZa#Y1w^60?TwQy5qV7bN!Bu=hG()uJom@QTy@eVR6 z^1gm#RSf)BEECCAnd*zjN$Y|v3Ix(tb2uh7XbJsTKsx#}9-%7;qT!KtMNZQ^aXUrq z7X`*t01P`V(?2L*eCX$OA73-FWp`trbcWJL4{bB;U&6HrVf>np0Z@DR@ zB+%mOk^8WSVXB%mJL= zrjs({8Y^hKL;d>k=MPTbS90`Ko7b&W$j(+2N$+|+9jGdk=_rD+3vBi~udJE@o;g3O z#Y$$;Fp6#c&(pg*qdrPk*7~XQSMd4Jr)MJSt8M*=yU1&4PMdZ5x`9XhKg&gu6TI|J zM9W+KejMW$(1N_Rysos>nV@-gwFl46M63z@j^KC$b=%?>saKV2h8J9@N#X~m%4VfM zdY^4$Vp1qY@-Wrmw{MJMaY^7h`%Atnw?1A`J>t7we4usA$;#U6KvKT%`gnC0*Y9AF z4I|!Hj<>tx2ndv1G_w&BC5#Et~{tZYOVzWl@l$6E93^ARQjalZG5SFYTR0_ zSyCF$?m$w?CLKnu+5vi0&wO^AT(&EWlcr3nURY&aFh6uBYSC{^>^C_Ga$qo>QaG1K zzBfw_v|f}CQs_W z2I}I#qfW%{Sjc84s{7K$xQcPNsCqC45o5uLc~!s&)BN6B!IGw|)qK{c21*_$@D+p; ze<#wk9>#rM78L3^LtS|weaNn#uNFefucTuQ>JqPTVm6p?9Ma*%yTT|bN> zv!mRrrf19v9ay1`LoIqg%frWXe*QndRq)<8W9<~)TOXj_SWqWBxViWIam303L&(gB zsIZgbsLAS%GLWRw^Lj4|Jyn_PQPFSDtA?Y-uuC5CQ{O+^Qtk#4hIx}R-dW^7D{N_NC}qqi0?Ot`x? z#7}YHa$cWndL*@5Fs#rYM~gJPG-wgJ9!MGESMpW|6JKw5zESDLp5$(oDssyAe))vA zp?Ca#OjzUc&Bs0av(k*WmMx_XhWcC^_g3wb`Jc?xMo7kl9idIr4q{WTd1uOqR5_>F z9QR764JVe~T(VYu``y?E;)!GX(&$4rck<&(>Zf#<>@bHH4VCrMo%tNc=<9Y`Qk;xv zc11o&;S{(DW{>K-ft!xQ!QcAbkcL%7|3?8r(Dz5>9<^ahl`yH)!8#!GPw^fyb>h1h=gtZ?5Q`U{VJ3TfnfZkq`vy! zt2@-yF2=dSiC5Ep-o5>PX(NPm_?~gmeG*6V3eF#7oc}Ecx-;>JCt^kYjX8(-FXzhT zofIZJ;}m6zdYn&A!kPlLs=+s=JQZCAa4A%&Is6leg(hpR(l1mM!*7kuqwk6$e9T{= zLNCSAmrHu*M*gR=BhNDeM@n#1Im_X-=kAogChE{eg3IQ@wOgfnnC8qVHHO@Q8@ zfNyifxlfTtCb?5tUM0*-73t$=^#oK2w1IM{&s@!~l?#)hR1~P3O1oMzRj$O=I%+a@ zAXDGAY%2J}Zp{l5g(27mu4->2k_s<)@An+i2|AG#B}dx|AK$O)VM3JNV-jHm=_2U} zaqgW$BuJ)C3i}T`JYHP+@t4s_ToY4ish$ol3$PQb?E*bp@+WOv|saGR!-eX`^ zvv#;SV^fI42wOoid#nv@^FJB~$w{lPqO4P^lXQsLfkJ)Iua|)?4hWB9;H%i9i;3vg zWR)N3!!rRpMep$Ql)at+0;}vPnzQ`qhAMx3x0Z`6ptp=VxMZe=aW=fa&}kR4qY{Q+ zmYe)G{$yWLvG4k1R3Dh%|N81|5}d#ZJ5}+pNg&3-fs-Iq_f|INaDPT+ZFO@ zjh%IQx3{r%(>`3eVN8mY1QX6cb52Mk`q^-~Vp`+)=h+t^t?ex(>QS!@Vc`He&d6jf zQvLpy=QnT~%MEK(x&jZsIbifu%DBpd`fAL9>j$l)1?@?Q#EV=|*k-BRPqAPDQ!keB zyAB(KgJ0Nxot`=IKv%6a@3&{~d!|Lg@|-!>vSr~({qw5HY_bz+2TjuTH9sUJA_)KV z*T2v}S5+a^dU7hgw~tnT$RAh;iZKGia6v+%i?T(xoVJn*gKyl2>S|5A1l1MqX3ldOaY3%A%YR|*Vh?$23u zZen*^w+ffoYw@mCEd8y3BwipuXDJJ`qo|O;qX2}>b3o#nuzWa<#LRoAqB)!RpJH zilOD}NP_aTDQ#?&QM<`Ag3QR&E(&Z=$x}6UWw%oS<*f4#l)wKpf52B0wHm*`4wOMa zb%6St(a$>IiT#&mx*N(YRr5-tJiiXHZoI+-@>|;!tI-a)v02yOuEN?{IV+pO8dWWT zKsBO^Gv){9k!EWQI%L7B_AM87%82$+j9;0iASo2W6%4jdu@+S?LT*-un%jjJTt1>$!6)ou;Lb}$ZDsuWvUOQEP|84)TAV;J=v$`5}C z_d^&jjsu0~>Wg|6lvqX!yBH@6{_sF6j3B&19bxk_VxbM}Hg7Ek=z`TznFzuTS6hAt zB?{v=y^0W=Asw`AZPlaxuZafefy)w>L-!T?=q8U1aTD4trJ2%`V*nOyT@#6E(ZyiGFHteJ+XMFoj*U-$9j?Q8fSQkt(S%%l&Uw7Z@Zu4tq~F zUP*H-Ic@+j$6q=8P${ouiiK96EsSHe02`{zBd&4NM2##6J+wl=aTV4f{S-TZe(Gz0 zkn(=Z?Te2ClOL{F4>e_HXwd_|wPB;Es?AO&2q4_LbO@q`a+*L`Sbe@w zbc`FIex=0$FBQ=_*zLuPRxFjeTl9T{FAV)EBn}97PhVhg`)k5JAk{)e^9?CgK8UK( zKmA47>dR7nXFu4t#S>nck<$&EcQg_2>|k3}ydoS^1In zB;VA?rLat{pUTEw>sZiu6qub;N1$e=Ubz?|9PcH`;Hs5pb{D4il~EkuUT4gBaoq*y z5ieF}&tis{EelOL+_Zva|H^^}F@QTCd!I^H25>9^qsPU!GMP4Nz)j3g+vTmaPH8v2 zv-kW80nKi^EO(d-k{)dv+CoIxp7?hQqbgcC*|OiUKW+DeC!K>ha2dEych22wfN#V8i~k3ij^WY zhN49yhagx@n?6V7y^u0MM$<@q-3YzbH8M<@T(a2v(Y zv__qwm@iVWhwZ1K_n6R5BMw;_^s&q^Y6#vleP*C3eU32F=T0@ZvnbzNIa))#Diq_! z3QlP+)S25sX|PTCgDtusRVO+@Bj?!+_S#E%PYHHnP-!w#-YvgvRaJ%ZwXQALT-)i2 zrD#=LzS9v6j>Qiktyi*hg}Up@zpj(->q`Aqv7Ur!uas`bLAbmAas7T}$-6m>1Bnn1 z!s^@mHAC3tIi}H>M8X}ryEQp9KL5dXfyTvg9{VBxNG<+aOob()p&FA5Lf3JrGGl1AD#~9sYNytfG z^otH4u+;Ac)5%&K9)tNNBvOS7kn~0m%{ys~Mp=oqW;v*jT74Arw482Y6wDx;9bh7= zf%!76qWI%QJdcIAV??5Xr~UcsS92-;Ux%%)@j<|COsg&OY`c@&MWNM%R5_YL4LY*j z_@#HB1mGd~g9!wU(n5xXhYCT21o(7)`+i?m)Mr{ymU`8@+3g50(~|{)|N9M-*fZp#Qm^W5_ ziD9?NaL9E31(6nq)$t@NxmRhL^HNnNhXvi}AW$5BNf**Jq;nJ_hN=<_b`P4cF3~Fw zx&n-1;m9Lie_qfm9L~uECL+pjOF4I9h`N6Wrz@%7Q{0dEX_JvV!T{VL);22|j& zb>HDZT}oHysgsiXlRh+6gv5JvA0=ed1H$#$*OPV4P4~F`j+Fu*#m^>V8`Xk=HP~XA ze;J`s#%L`p;hXbqsopZ~$Q>&^E_}hk-*G|M}wf7e$Mm7QWoZi^zY;$Q4|7 zlR7zJv_p486KT}7hevr<)-0FqrfS7yCLUjZeTx1`=ctn|Ae~D7a&P^; zMM&C5ioIBRV|rTN`TaiTgtSun{Ad3pa%Nu(pFB~_lc1G(J4TMw_CeD6fcgE!yKIg$ zuvnSKRcDk_4WkPDw})1X-YM^R2jI2%i#_DpCTADn7YR=49hW@~mRlF>YkcdiV*=&V zXZU_QqIV2!7kY~%3AE03&zXRmg?q-ZIZ68#zv)5S-l`Y%R8d&sa<;W;GBU9CL_2&4 z49cw8-c7l;eWs?cy6Ps(+GL;L5pZHbEr*t~U~tdmQ<@aGiX~>hQw2#fb{@HbA zCVh)|0j+(5l67dv01|S_cEWBRKE7!+;7JL~t~{Mq7jtVMMKKu(#iTX*&sY5V{rEB= zR40WTuu9zAnyKAg_`FlJ@-v!xNFB)AEBZ6#VO2O$zV1bpooF&^TsEXUa4kK0gt{wQ z9M16B`dXyI0olKF6<s1v85~E{beo4nw@x} ze8kX%q9H}$iluRxu#loi_T=E0BSVje=(%IwH=FqYBcaZjqB@r>3%wL_q?;l+xj{!p z|YoX>&?J&t;MggDYAC`X4FDZ6^qZdNbI#PSfcC8y)k{))#wsU_V#Hb#&2du|Go1<>Ln#_$UFX;m^H>>BYQ<4Cb79fEjF3MZ;$6FoZ@JdG=dxdfZGb4w z9n&3C%T0K304BMuHpA|3`zpQLlO3$&b7Vn{+GRTV>mUhLxob!gU2?!cDpzNKS@;Z& zD1VXG%(}053o?J*&?JX@La@i?KcB(bJlH6!klx(-E^fEDH6nTEE{?!{Z@DxyZ%1~d z3#-S1x*_Mj?nWgB{9VqIdk$q}Ic}@h!UNrK^QDij;RToNbqTRfDtb=;t6p~Klz|9r zN~duz<+^TimFzacu@AWenjm;2HeWB;fJsxxfsPm*+3)Vpd0*GF$R!3#<9Smib;S<6 zrXk35TlE=w7E0bKVkQG!kATmx2cWT38j$9HU_DCL&6XUM_Nw zjKL7ifChZ1?bg_E6(Y#!EHI12oe6c>_C5U$S+=X*!}sF7<1OTmauF~o0@iV5g5O{P zUki%3!2-@R5c1^(J@=CpA8aedE^fYF4EYm(`;iUXbm3Kg#_hpaeTu)3xHuGj?7?>5 z*x`CZv#C?rgcjZ$O+1#Ij9(j}%cdWFV|E!GG&x?4%A0H8%TGgTZ)?dRKA%h`Pab{1 z(*KiS3JWglf)N{R8TlHLt;b)5=o=yc%Uof)J$6^qkd9-3FE5>IA2AtU;YYnF5*T7=sO2L8@ z#qBLO>OW?}$;h69CNCg2zEkMq_ZvTvH#SS9@6MR{{zoZgeWH3+ecy{3HG1-gb7HJO zyZ5=D#Xno&7)xw@5=ZPy+;Ic`W&GaH^jcS6&#CUoaPu5<;Mg=h#$)ThvApTpVcHnu zX@oTI*)fgrhr(GkwHDW%_e=N8d7vH!{R66<14S!0d1yD_QCj=;==!%Q$n;Y-1WrE( z3s&HWx?GzqPp$K!blPM6Y1WPH+=*%LPrj|BrIfPkpV`@f({^%*x5_oLZ3haC?ro9j z26&F_ycryGskOIDDkykA@=QAMVDB!H5Er7L|1yRfx=DOYt?P^3@Am)ix^Zbp-g%U6 z4?Iulvx{IQJ^D^Fs8*_p-|}d2FUQ0;6B#Fx4Yob?Z4F#;l!JTYti?!4*I8451)LPa) zdO&H^X*<|;{T_>*-q{;=ckjWu;ZSDshmgo-gCoU357b9gp8PzR)`t&~yg${RpTrJq zL~q=%{$k1u!jH{BHX7#4!aX6`w`MkatT|Dusfoq6d?jmVaJs%mw~IH zzcJz1{f?%q8E9z;JV`42U@TR*~t4`e|LqeAzxex zpG-!JF(Z0A2GhswKf?F_ZoyTmsWbM|91_POw}clN5$ahC>8{`Tr7vUI`s3ynzQP`m zE`i^_MlUg9-v{HklEON^CO6(Kn27$4oV*1Ci|QWEM^NNbc8B2Xp$b@ru|*_C&xEzc zu!{bsyTazO32>iKhpY4>(JLC&VHHVGIDGcFv3s_(xnNL6yJKWEMP$-tJB6 z9G?G;%il()0~OO81OgbzeB4^5=6pmF==35~;Cbt2jc+#IQvyUL01x32OEG-_N8|)G zxncT8vlw#G#Unrh34jqxY8Lf69BjJ_6NL^r?OQ+Q09km6|B3^*;UXW%x(k;7E$ZyX z5a-2)yrOA^Zw_!XNj*_o@?xA1tbi|Vu2)8e2v6l@GfY|i79=dW0>~_Mypl>ka z-|aV*{MTEXBm1cDKLFwyRV|VcfYykxxF_Ru;9imm)8VK;exg!SC z?aj_CQtymAfTv0Sxa5SDQNu1UfY)$L19!&0=E6ba>o`C>$1|LUhEtyW&f@=9g-aUl zW`bq=+)|Dze}NHrh=EQ5oT>YAeZx8q4j>QMw#$El%b%{o0 z^8TZmHcuY#qXF}x4W>FDukmu+2@nNl-#t`?$6=|yPjP-E0J6-%?Xz&%z|8maU6{`X z9Bvf+lWYUP8?)jqy}^Dx1c*c-K)15;{?0*Wut{tnTyr=7e32yhFSr)zc94-lp9q z$5$FfEIC-|@~Cmifd~Q&d`f3Om=l5#`FFlt6z;;O0|0nR$H}?)AUi33rms&XG5+qN zoS>;D;LDNEZ)@=u7Q1FLiQa(pWYWzl?bjzH$I|*Sm5_{*W;>bPzqhJ6-nJs1&h?r; zhK%ytW$mWaV$;$r^8P$3b2$S6bHZ7x{bV{;qjE#(LDa8S=bfTQ&KjbO=(I5F!FN~$ zO<$ML=jgx7)_*ubG!1=Ub=QbL(5Q}QX__5 z{bwyc!5QEJ{1SR}Rh z)<-6e{Xs+!>_z{w?uv6_)VAHBc4rz#tF2^(=ff)v-$u@=hw6dJ?|;V9B{`|x9F+&A z&s_Tg{A{-GmtG5}4|+Rv&;Wa)f8H%6{XEZ%G7KTtks&8)w}^FTn@Pxlmv-P0{6${L zkbEIPACV)umGSsjyNWmEfYpc{jAo?^DO>ls>*f+(5uPZxs+Z_C^}=0%mXgs1 za6ZE9l{5%|h*6*%a~qqusq0G{_8bQYE8hlpE6tp`tb5S(VAYCGBh%P8n;G;z$Jw5Q z)%l^_(#r`Lu*7)sow1=!4+EUcK>)wZcT^b#%IO>PVDf9mr=;J4F|Z;d$zDClOXb|S zgH|%7MS{AkvF!naQ%z`3dss>OO{&i~wuJ#)pM*kW{Vp91xMsd*Le;-D-lPl9-RNdo z7A2*wCL{r7L=5-SB`bO#16kR?0G@+xOL{*(&J-eCe7u|SQiSoW5c~qDGPv$LKl6eJ zKA89Q`E#8AU=}JlFb^i+fkS)2WJkD?lpC`DtKs-p4$T@mO!LX4+OEZ$wt!c%o;KTl z>oQWXQq1ZYI{f%;j0tB_XXG2183+i6!`v1hR$!EeAUG?E2GO}S$5$c`Pq!SfyW=ZkEt)GgFoe; z`-B3a0kG=jRC{+I&3O$F4fyxIKb(OjWT|6JZNYn0QD3pYoa-EOdq_V z-ayIHJIcdHN%?lTw+`%>2P=@D-Q2O3nq|WE1=l}LMQfX2fX#IwMe_Iub_iE?GFk@~ zK*H0Xn_fk_@gVtM5M1=5L(?|`0B#}r3ZYv||Le<5$oXfjHQjMKf&x-kKeV@Bzj=5) z8v!2gM}!!NNW*&!oIDPxEihg)I`rK&2Agw*thC@-_B8%N0yF53V(mz)I3bJxc^IXK z>#OPs{KrkJ*-3Z&mF3Bw-7lfRDNQ9xQP+TV;*k#?fV74Kd1*5b8(}#nG)U+4iV||H zsD5`_H@Dx&H#5P}VYAMr#(VtK_IDn%M4bux9L1?^9H385J@=8q7luc26EyzC-r0FC zNCLv@*NP?aD3;!x$GmX;<~C_~SXc2G93Z}Lw_Us|tpNv!_&L5F`wY;LHLX8QuoIhw zHVg>D-8UE4Q>QF>Me4 ztE^$vQF?F_2fuO@n>ANv2p2|=07MubXQ2hU|8?;LHSDz0N+BI8vRj#9|OmP z)@{~Sm>^upzwS?@D5=6=7NH6N2i!#ohQW>gLnAg{Zb5-)UjCK#r;W>KaK3n9>x1tJ z=bvlOFO+>GB1(A00Pr6w{yqrJH>r0r$Xh5QCKb`NwSlr>ar|{!@M?>sy(SR8Y@PRRf*Z}hUIp@w>5Ga>wdn(?rL;H(*RvoJIe#0w;;V;BM5*Kt4Fp%)u1RV+p5JljGo5$WkFdzvtu^^1>Eq^U=AwbvJ^Ypk8 z$ISH0_N>AFhiXTO4gv02cw?n|PH2=7i>Ded+3b+4PD`?_-L@LH4G)iF2GLk06Zpna z*TO=?P`6GXCrkRY1TU&80Nl^~R=YZ*iSJV@iZUP&!wWFJd@GC$5DvFlWz#<5`WX@1#=hF zVdfvs4_Py#z_Cvps=&ESw&eA6F6)jUJ1Png)g0MT#q7z4??V7F2>$NAT+>(sgNXIo z5p5xO)<9sSk#+C^hFMNYFoJ>1aq`B{e27>i>v#H7VE~+DM)~afOz6xLgb^6+n|}?{ z_UUwX)Y*Uy!#xVODwOm`HRJr2)} zgEPPb#{60J;cz}anvR^PQW$~l1*6wFa%sVi$1VJN(!~J(!tFDRSW6)o_brE>ec5qE zj}vvV<+qC6O8}C1cpGJ;D$>#)4uS3(yI<+rY2RDScVk2m;P+eaxoCTo1S@FIXo&KI z(d1t7bcEVoxkh>MnWEE&fzJfJPXOHQ3hS9x>T&9mIMrr5^VHc~f9E<)XI@SrqD)M*xg1&+*N#^%G9^OnP?Dc|Ha5pKy+rTEAf* z%R`QjSSml)7SyH2`um@H?@rB8x222i_++$hf=pIEdxJJVU}6E2QBt+=)@93ruj_~T zq&}J5$(Lvb=VR!aS-M;kp791di3u@q>M6qszN0LzjXcgF$&FZMf&6;j^X2l)Yukl> zF&@7LtzgZq$YTbjiF#tLm2A2!f HY=ZtD3{*Xk literal 0 HcmV?d00001 diff --git a/static/icon_personal_password.png b/static/icon_personal_password.png new file mode 100644 index 0000000000000000000000000000000000000000..56112873da74f32c85ef99f492f1b4c40f1560a2 GIT binary patch literal 12185 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

    #W{_)m4aGSipPXO_bQwQswj=g+!U z(oVfip8)EUwBKrn)2oLwpa$l1Z&vdgn+x(50A}WuI$kDFRUULS7Ghj#wFM76&x}?O z03rc1Gh9DcE1&)Jx9H+w0baJl{{fgtI>KnEg(L52$>L$k2=FLjh1#G_ARF~YG5*cY z+UpsQD}p1Z_Q%|Z)3}!{r!_Y<#CeN=Cf#6{bk75ZP&GAUt8Z*ue|dPYw@OYBP@g2* ztd>5ru>jYVg&}|FJqC=E##nGXy$Ko0sGwD1CBKE9$0{jve3ukN%;S>5D? zDfO1m5cUE^;ARULLU*+0z_y}!Q- z{x$-pJCtr}TMfg&jtThvS+8tThC!K_*tg4?tF=yQVMkLJq`{F{+ylET$eiNOk-53A zJ78uoi=&3X7gO_{Uvq3=1l4f>gTCu`OriAw^1arR89KLxLG17z2aieTDP|BO+Sj?^ zc~=RC`tAcy+AXK{HZ&kJmrZr{`7z?^3cxq@3kB1x;R;O9J6Wurn$x<+0?M-p#%$1^ zXiOqR*5aTVDat^xB6T@+c&{Mj#g%^`Zh zPSu3afAteyR(POnVzRL{R4mfKuYOk)QH4k8DT@{~ax)?rJ6TXB_XFSt0&VYqj`Jge zC=%)}G)i$1L?;%&c>oLJ>nGNgq5uVZ8XARrB8WaL!011+?7C7kprCii5be$aj_;5s zPOMi#G&3aoazzk>S%8PC@A{0R(;aA7w>((_!cVgw}tYmd^~_vhb1-nR1MjxsZRdB6pd=QrKf@1f^Iogtsc zix0eDuaxAVA9ZBKJImDhEoGFuSi-8%$2o7ET%+bfv}1%M!O^YR!3E)U=s^g*!EMW~ zXGgQaDxjTGjwdRg6}5n6bV|9FY`ZAq1`m+?#DxNuuM~}itxtJvp6QIm^I?%EylCK1 zo@vZzMJ3Tn&VosvBn*n+yDZian!EYGil>XPJZTipb++lAMhZj}?cwfRvG|;NMIR7u zd1Vnrd4M5@X7t=^9mIzc|uNO*1hA-cjNx@bC5592$*aEO!Aa zTg~>67Vu)h;ZQB|1@nIFDDsJY`>=S=vMv*}{HI2Zo3B|ZCw46DcOvBqEa(=T+UuvV zKIz|UG_@$gb9kSej?PLZ!TJXed{3`GQm8OJXMm(zg7BkkJbDKxy0~heaB_{F6%@D~4eRX` zSkac;Mq!_|VJspEi~45zPevL|2%jn;EdLTazyi*mscx8rW1CBWsrtZBgIBJq>WN-? zsUyeG;EE8|z;^s%m#RYpn15cdq-#P;kKKCB0xV%2AX&4wH5Mz^PL7U)1U|@ccuKjV zpoUM#RxMf`0Z0uC8hIQqwEeH$BJ7K*X0J9N-yhX!ELd#&D+m^&!o{8*gt0Iz3STI= z-ldKPNjf}W@lLo{J|sJ1QKXBItbqmtSy}{x%&;V;@Uj#02UW1(&?8$6VR5;RJ}H0F zKluHkG)D9JX+V%vV2MR9$w{!I^M8+NWIP0j8D~`cvVP{WY5*sA`k0yiaB@n$i5$IC zVEJ$$Q`?HyArM%y&uq2qMu9}9K(MZ3^QY1!-+DkwIRlgiK><|tIIvaTC?#ChXrG7_2~J|?t%9w}JA+r9acTPweya;RJGw)W{X(^mU* z6J6FmFtx5XOg?w4-TXbA$aAL>H$+UUeEZz8ix{+cW~`IO-LKgj#Ia}V24`XC1ySH$ z`uA`HH{6?60&zJZ^v;1-(1nz1)8*YM{;m1!HPg{8Um+wTu*@D#4p=}u4dep1TvpH+ zjYm%a$RmY2G)FCtn0xTEyctJJRYc!EZE-wqIlX-QsLML}Bg>9Pi^SU;TVc{k<#j4M zO^Cy%WxZi&8e%lu*U7L#mcTx0%Y13`jW>)G-$P3>T`uW5Hhivd-(OGS@t*d7;eU3D zp+D7f-nbTh_k0}rj5%7W{&YEslbd5XJSE=9_F{JQjq1Z-0A_$LWHplb;~UI#1z(bv zrSD+|4Zq`s#`4>B+?OvZmi089!DwJk#jv6QMXSvyvdLdJE@F5xyQVzIA4sH}VyA2{ZgH*w V{h33i3p(9E|E%$ug3}In{tq;1!F>P# literal 0 HcmV?d00001 diff --git a/static/icon_personal_setting.png b/static/icon_personal_setting.png new file mode 100644 index 0000000000000000000000000000000000000000..7508cf6782b555381b0e2fa6d83b123d42268c65 GIT binary patch literal 14302 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 literal 0 HcmV?d00001 diff --git a/static/icons_ui/default_blank.png b/static/icons_ui/default_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f0fdaad1ab72fa34d558d7da3069352e7fea32 GIT binary patch literal 34952 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 CC;>G9 literal 0 HcmV?d00001 diff --git a/static/icons_ui/default_data.png b/static/icons_ui/default_data.png new file mode 100644 index 0000000000000000000000000000000000000000..939913ab43c772b87400d7303ba5709d48da01fa GIT binary patch literal 15053 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 G7WO~eFwtTF literal 0 HcmV?d00001 diff --git a/static/icons_ui/default_notpassed.png b/static/icons_ui/default_notpassed.png new file mode 100644 index 0000000000000000000000000000000000000000..b78385be19bacf356cdbb8782e3e01b5a040ec1a GIT binary patch literal 12915 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 B4E6v3 literal 0 HcmV?d00001 diff --git a/static/icons_ui/icon_add.svg b/static/icons_ui/icon_add.svg new file mode 100644 index 0000000..5edc037 --- /dev/null +++ b/static/icons_ui/icon_add.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_apply_num.svg b/static/icons_ui/icon_apply_num.svg new file mode 100644 index 0000000..9c098c4 --- /dev/null +++ b/static/icons_ui/icon_apply_num.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/icons_ui/icon_asn.svg b/static/icons_ui/icon_asn.svg new file mode 100644 index 0000000..e1ab37d --- /dev/null +++ b/static/icons_ui/icon_asn.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/icons_ui/icon_avn.svg b/static/icons_ui/icon_avn.svg new file mode 100644 index 0000000..d2694bc --- /dev/null +++ b/static/icons_ui/icon_avn.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/icons_ui/icon_buy_num.svg b/static/icons_ui/icon_buy_num.svg new file mode 100644 index 0000000..9a6f363 --- /dev/null +++ b/static/icons_ui/icon_buy_num.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/icons_ui/icon_camera_black.svg b/static/icons_ui/icon_camera_black.svg new file mode 100644 index 0000000..94c440c --- /dev/null +++ b/static/icons_ui/icon_camera_black.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/icons_ui/icon_camera_white.svg b/static/icons_ui/icon_camera_white.svg new file mode 100644 index 0000000..8bdb5dc --- /dev/null +++ b/static/icons_ui/icon_camera_white.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/icons_ui/icon_close.svg b/static/icons_ui/icon_close.svg new file mode 100644 index 0000000..7c0e9dd --- /dev/null +++ b/static/icons_ui/icon_close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons_ui/icon_customer.svg b/static/icons_ui/icon_customer.svg new file mode 100644 index 0000000..ced7ba7 --- /dev/null +++ b/static/icons_ui/icon_customer.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_date.svg b/static/icons_ui/icon_date.svg new file mode 100644 index 0000000..de352cd --- /dev/null +++ b/static/icons_ui/icon_date.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_down.svg b/static/icons_ui/icon_down.svg new file mode 100644 index 0000000..95a4c41 --- /dev/null +++ b/static/icons_ui/icon_down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons_ui/icon_erp.svg b/static/icons_ui/icon_erp.svg new file mode 100644 index 0000000..385359d --- /dev/null +++ b/static/icons_ui/icon_erp.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/icons_ui/icon_form.svg b/static/icons_ui/icon_form.svg new file mode 100644 index 0000000..d6fc9f2 --- /dev/null +++ b/static/icons_ui/icon_form.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_kw.svg b/static/icons_ui/icon_kw.svg new file mode 100644 index 0000000..54f3ffc --- /dev/null +++ b/static/icons_ui/icon_kw.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/icons_ui/icon_kw_blue.svg b/static/icons_ui/icon_kw_blue.svg new file mode 100644 index 0000000..23f200d --- /dev/null +++ b/static/icons_ui/icon_kw_blue.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_kw_use.svg b/static/icons_ui/icon_kw_use.svg new file mode 100644 index 0000000..f0f037a --- /dev/null +++ b/static/icons_ui/icon_kw_use.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/icons_ui/icon_login_password.svg b/static/icons_ui/icon_login_password.svg new file mode 100644 index 0000000..4ece043 --- /dev/null +++ b/static/icons_ui/icon_login_password.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_login_user.svg b/static/icons_ui/icon_login_user.svg new file mode 100644 index 0000000..a628595 --- /dev/null +++ b/static/icons_ui/icon_login_user.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_notpass.svg b/static/icons_ui/icon_notpass.svg new file mode 100644 index 0000000..9c4ea07 --- /dev/null +++ b/static/icons_ui/icon_notpass.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_num.svg b/static/icons_ui/icon_num.svg new file mode 100644 index 0000000..75ba510 --- /dev/null +++ b/static/icons_ui/icon_num.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_passed.svg b/static/icons_ui/icon_passed.svg new file mode 100644 index 0000000..5a06471 --- /dev/null +++ b/static/icons_ui/icon_passed.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_pc.svg b/static/icons_ui/icon_pc.svg new file mode 100644 index 0000000..95698a0 --- /dev/null +++ b/static/icons_ui/icon_pc.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/static/icons_ui/icon_ponumber.svg b/static/icons_ui/icon_ponumber.svg new file mode 100644 index 0000000..3f1e82d --- /dev/null +++ b/static/icons_ui/icon_ponumber.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_prod_line.svg b/static/icons_ui/icon_prod_line.svg new file mode 100644 index 0000000..eabccd5 --- /dev/null +++ b/static/icons_ui/icon_prod_line.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/icons_ui/icon_qiju_end.svg b/static/icons_ui/icon_qiju_end.svg new file mode 100644 index 0000000..b1780e4 --- /dev/null +++ b/static/icons_ui/icon_qiju_end.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_qiju_num.svg b/static/icons_ui/icon_qiju_num.svg new file mode 100644 index 0000000..3879b8e --- /dev/null +++ b/static/icons_ui/icon_qiju_num.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_qiju_start.svg b/static/icons_ui/icon_qiju_start.svg new file mode 100644 index 0000000..d2b3dc4 --- /dev/null +++ b/static/icons_ui/icon_qiju_start.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_return_num.svg b/static/icons_ui/icon_return_num.svg new file mode 100644 index 0000000..5677a55 --- /dev/null +++ b/static/icons_ui/icon_return_num.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/icons_ui/icon_scan_white.svg b/static/icons_ui/icon_scan_white.svg new file mode 100644 index 0000000..a661468 --- /dev/null +++ b/static/icons_ui/icon_scan_white.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_send_request.svg b/static/icons_ui/icon_send_request.svg new file mode 100644 index 0000000..f352b54 --- /dev/null +++ b/static/icons_ui/icon_send_request.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/static/icons_ui/icon_senditem.svg b/static/icons_ui/icon_senditem.svg new file mode 100644 index 0000000..2f8404b --- /dev/null +++ b/static/icons_ui/icon_senditem.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_supplier.svg b/static/icons_ui/icon_supplier.svg new file mode 100644 index 0000000..f0991f8 --- /dev/null +++ b/static/icons_ui/icon_supplier.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/static/icons_ui/icon_take_photo.svg b/static/icons_ui/icon_take_photo.svg new file mode 100644 index 0000000..e6421d3 --- /dev/null +++ b/static/icons_ui/icon_take_photo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/icons_ui/icon_tasknum.svg b/static/icons_ui/icon_tasknum.svg new file mode 100644 index 0000000..247dbf2 --- /dev/null +++ b/static/icons_ui/icon_tasknum.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_tenant.svg b/static/icons_ui/icon_tenant.svg new file mode 100644 index 0000000..7707804 --- /dev/null +++ b/static/icons_ui/icon_tenant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/icons_ui/icon_time.svg b/static/icons_ui/icon_time.svg new file mode 100644 index 0000000..a706317 --- /dev/null +++ b/static/icons_ui/icon_time.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_tm.svg b/static/icons_ui/icon_tm.svg new file mode 100644 index 0000000..669bfcb --- /dev/null +++ b/static/icons_ui/icon_tm.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/static/icons_ui/icon_xm.svg b/static/icons_ui/icon_xm.svg new file mode 100644 index 0000000..80425fc --- /dev/null +++ b/static/icons_ui/icon_xm.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icon_xm_blue.svg b/static/icons_ui/icon_xm_blue.svg new file mode 100644 index 0000000..468012f --- /dev/null +++ b/static/icons_ui/icon_xm_blue.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/icons_common_recceipt.svg b/static/icons_ui/icons_common_recceipt.svg new file mode 100644 index 0000000..78ee356 --- /dev/null +++ b/static/icons_ui/icons_common_recceipt.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/static/icons_ui/icons_common_sjadd.svg b/static/icons_ui/icons_common_sjadd.svg new file mode 100644 index 0000000..2f67b51 --- /dev/null +++ b/static/icons_ui/icons_common_sjadd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/static/icons_ui/label_scx.svg b/static/icons_ui/label_scx.svg new file mode 100644 index 0000000..31d0882 --- /dev/null +++ b/static/icons_ui/label_scx.svg @@ -0,0 +1,4 @@ + + + + diff --git a/static/icons_ui/login_bg.png b/static/icons_ui/login_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..a062de190ef3ebb8cff98eb5b0812ac7e0adb13e GIT binary patch literal 102876 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%0Ajk%6E*`Jy;z?GjKe0s?Yi8!n?A@5)d!bvAP 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 literal 0 HcmV?d00001 diff --git a/static/images/banner/banner01.jpg b/static/images/banner/banner01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fdb1e167eca46acee0482a1494d66537a1b6711a GIT binary patch literal 44454 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

    -wtB?K+}+jmbpC5} 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

    j7PFa!NH&l+pFwQ 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 NQitons+69D{Xf8;ggF2J literal 0 HcmV?d00001 diff --git a/static/images/profile.jpg b/static/images/profile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3a940b21cc9dcea01e62d94e243eebcf76d96bc GIT binary patch literal 81131 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 z≺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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_act_icon1.png b/static/images/tabbar/tab_act_icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d0de1d779b71f65853d2c16158f04f7fe795fb3 GIT binary patch literal 16851 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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_act_icon2.png b/static/images/tabbar/tab_act_icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..8c927dda208aedc0bfba1affc4640f7f781a3858 GIT binary patch literal 16360 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%0An_4Dl!ucCl>sA`j zXAR7+toO&<%Fg|-JbZ-c;jTBU`GpTE)S~?b4*S=J2YlC?w8PD2p zlm_!X+hP(gHg&kSQu%|K4xvAC_TQb>$jUx+Y{5IdY+qg35^{d=r8mUdH?>C!SN>V# zUP^6^e@T?S6RJCcmIbrGr0&>Ot%WzuSn{fS+eOYZZ8u*1*&Jti{sB9nb6fRqdX|-M zbM#GX-vYO<9QL%%+~YK_DsyqWz1=0&1uqt@Y{QYc-OIBx&Ni^j*JsXojOj0xwmwh; zt?ORjv}rb!M0MO-V{4lPs`sjuk7tHo*AG5tG{vpEecIr3z;f=vn&nTA1!?{@#xmbk KtkX-QH~$NrDJ69P literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_act_icon5.png b/static/images/tabbar/tab_act_icon5.png new file mode 100644 index 0000000000000000000000000000000000000000..f9aef6c6c945a4e8498fa6615fa664ac9f5c1ff8 GIT binary patch literal 16587 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 WQv>LqbzA;!AR#t6W_Ofy#lHdeSJzbl literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_icon1.png b/static/images/tabbar/tab_icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..d36711d06bf530aa713b8f1e0f4aff2a9000c862 GIT binary patch literal 16875 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 HBrN+kqzzuj literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_icon2.png b/static/images/tabbar/tab_icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b16a350a65ee67efc9ac2b1e38726d94a464eb6 GIT binary patch literal 16171 zcmeI3d0Z1`8pkJ)CqLhzvLF3UY4kw+`JrVMR7B1HbMr&+1c6Q*}`z#k`D8wQYnlGV1a-~&fr;d%r?}) zGh0V`gS5m^VpgriK-dhpnd6R&YH+(PipzB`)cR_^E)&tZklEVIj-&`XPy*(MBXDO< zI&G^DVYe7Pr>4`wm=QB!W}B7t<9F&uWZ*X3nt^w*WUJie!emZVs@AnTJztZl)1|Gp zNm(RLdJX^t= zAvt-ivRDg-+Hi{+$Bhc_E=y=Z$cc^Rgv~OTb$GUQtQ-bsx23u*5T-MyHYRL;@@l)kyUssYKv`s8ad5cL=S- zwRU%*G>6uap~YgUMk>+>cw#Xk<%vZiJx?OR5MG1?6KhaGBwwVJwuJU^?+|*r#XvSW z)aWzEefIzE5}kzUuvDDEN^Z>@pDjynTu&QI!WOn4Z4rzHPdg$|ixqPhTNJmY+FJWp zYkPA0c#2krYTb=Yp>@{+rjx_%M%zxS)w9{n&@q9pM%f$R$Gz({vNJFu~00B z!C}xN!QjA*DM|y`Z>{bw!WT%Ioj|2i&(tnGeUxTTZ?b&uy*vfz9VPGV$eT*I^{%o* zZMJr=-||P>CH6LX6LX6LX6LX6LXts|AF1+2#Oo~=p6h>YiryrBz52

    mUh9(owfSL7O4ci+3@I^Z&=oqY0$`^bL> za~fl(AMAHrG?uy6zuvF=!xt6Cu*>&D8fC~;CS#sokpH18$A=&2QQLiSK=GbEQ2wBS zp{3D_^lvl{CSr%P97Uxm$)}PV_8#t0+NUh!b-$9gLPLg(%b7pE&w?OHuY$+gk8hVByPh;@PVYhKmVL!*Qk`2G`Hh0c%w?>Q z2`7HI>H0M#d^|sZVAj^%S$|wzFskQG*k4V#L3d=#d)*SZvF;{=isbQYUU6na6 zuWxTg>IoCxH;m13AM3{YAHl+}SKzwA83WP+5}@jsAHB-fJok~zSP8L8d-mT46?%@X zd8!Hii$>h4J84!sk<4eOl&snkh!8i1qYLUb*Zv6#e84#uykDBPz8?B)^0p~bw&s1V zzB>_({1@X)x(!bm&TTy_Vew^IE8aI#mJ4WuE;SIakPn%wA z9FAJfWjtCc2@00Hwe@bZg_hb9ShmBw*NX>Kt}A`9$4~j?!n8p|apB8-+~Pr%(M4I2 z%n29oFB^t# zv`1k#p5!lI#K8FTSy$Qei~+%skpuSW5ay`$eqqkAn4Gigvzh${ew4prWL2;yi|&ls zVgJ!T3KDuUyooA=G=syo=4k>*o<)Jgx3`N6tk`3u`pJ3gA+iuN4M%TO*v56MR}Ddp z3UtebDbJf$^u9cLd6}vDN&)lQIsc3IDyj~w+WL3J{=%M3+Yy#ZjC~~PJ;iSTxp~_k ei4FA(=-Tb7*(3Iz`NaJ=d;Fwn%91zJ-u)+HKsl5E literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_icon3.png b/static/images/tabbar/tab_icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..880aed5960da718a9a25944d7665f75965c20a5e GIT binary patch literal 18330 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 literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_icon4.png b/static/images/tabbar/tab_icon4.png new file mode 100644 index 0000000000000000000000000000000000000000..b9249bffb44f3d02fc39c07bc0f394bea2984c8d GIT binary patch literal 17287 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 cb^%aW`c-u5+38l=f0ePwXPNgAJ20`8(L&;S4c literal 0 HcmV?d00001 diff --git a/static/images/tabbar/tab_icon5.png b/static/images/tabbar/tab_icon5.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ecfd9e80ca3d2acbd7e31a6c102292a6c9f308 GIT binary patch literal 16597 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%0AOo0!z!{HL^q|d!9TCN|prKg%7j! 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 SYs}WS&%*SCNx89m_ \ No newline at end of file diff --git a/static/menus/count.svg b/static/menus/count.svg new file mode 100644 index 0000000..12ee9bb --- /dev/null +++ b/static/menus/count.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/customer_return.svg b/static/menus/customer_return.svg new file mode 100644 index 0000000..4c7f32c --- /dev/null +++ b/static/menus/customer_return.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/deliver.svg b/static/menus/deliver.svg new file mode 100644 index 0000000..5148af0 --- /dev/null +++ b/static/menus/deliver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/hold_to_ok.svg b/static/menus/hold_to_ok.svg new file mode 100644 index 0000000..bb22391 --- /dev/null +++ b/static/menus/hold_to_ok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/hold_to_scrap.svg b/static/menus/hold_to_scrap.svg new file mode 100644 index 0000000..6e46345 --- /dev/null +++ b/static/menus/hold_to_scrap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/inspect.svg b/static/menus/inspect.svg new file mode 100644 index 0000000..a18cd65 --- /dev/null +++ b/static/menus/inspect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/inventory_move.svg b/static/menus/inventory_move.svg new file mode 100644 index 0000000..e310f68 --- /dev/null +++ b/static/menus/inventory_move.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/issue.svg b/static/menus/issue.svg new file mode 100644 index 0000000..3222d1a --- /dev/null +++ b/static/menus/issue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/menu_search_lj.svg b/static/menus/menu_search_lj.svg new file mode 100644 index 0000000..fb40fa7 --- /dev/null +++ b/static/menus/menu_search_lj.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/static/menus/merge_package.svg b/static/menus/merge_package.svg new file mode 100644 index 0000000..b2d27ad --- /dev/null +++ b/static/menus/merge_package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/ok_to_hold.svg b/static/menus/ok_to_hold.svg new file mode 100644 index 0000000..4f5d182 --- /dev/null +++ b/static/menus/ok_to_hold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/ok_to_scrap.svg b/static/menus/ok_to_scrap.svg new file mode 100644 index 0000000..1dee036 --- /dev/null +++ b/static/menus/ok_to_scrap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/over_package.svg b/static/menus/over_package.svg new file mode 100644 index 0000000..7a3c203 --- /dev/null +++ b/static/menus/over_package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/product_dismantle.svg b/static/menus/product_dismantle.svg new file mode 100644 index 0000000..26efa1f --- /dev/null +++ b/static/menus/product_dismantle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/product_putaway.svg b/static/menus/product_putaway.svg new file mode 100644 index 0000000..e14ec51 --- /dev/null +++ b/static/menus/product_putaway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/product_receipt.svg b/static/menus/product_receipt.svg new file mode 100644 index 0000000..bb318a2 --- /dev/null +++ b/static/menus/product_receipt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/static/menus/production_receipt.svg b/static/menus/production_receipt.svg new file mode 100644 index 0000000..bb318a2 --- /dev/null +++ b/static/menus/production_receipt.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/static/menus/production_return.svg b/static/menus/production_return.svg new file mode 100644 index 0000000..86ab315 --- /dev/null +++ b/static/menus/production_return.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/purchase_receipt.svg b/static/menus/purchase_receipt.svg new file mode 100644 index 0000000..b2d972f --- /dev/null +++ b/static/menus/purchase_receipt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/purchase_return.svg b/static/menus/purchase_return.svg new file mode 100644 index 0000000..1dcb2cf --- /dev/null +++ b/static/menus/purchase_return.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/putaway.svg b/static/menus/putaway.svg new file mode 100644 index 0000000..aeafb4f --- /dev/null +++ b/static/menus/putaway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/query_container.svg b/static/menus/query_container.svg new file mode 100644 index 0000000..23278b2 --- /dev/null +++ b/static/menus/query_container.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/query_inspect.svg b/static/menus/query_inspect.svg new file mode 100644 index 0000000..cecb013 --- /dev/null +++ b/static/menus/query_inspect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/query_issue_request.svg b/static/menus/query_issue_request.svg new file mode 100644 index 0000000..112a70d --- /dev/null +++ b/static/menus/query_issue_request.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/query_item.svg b/static/menus/query_item.svg new file mode 100644 index 0000000..bdbb713 --- /dev/null +++ b/static/menus/query_item.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/query_location.svg b/static/menus/query_location.svg new file mode 100644 index 0000000..3b1587a --- /dev/null +++ b/static/menus/query_location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/query_supplier_deliver.svg b/static/menus/query_supplier_deliver.svg new file mode 100644 index 0000000..b100017 --- /dev/null +++ b/static/menus/query_supplier_deliver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/repleinsh.svg b/static/menus/repleinsh.svg new file mode 100644 index 0000000..afaf5f9 --- /dev/null +++ b/static/menus/repleinsh.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/return_to_hold.svg b/static/menus/return_to_hold.svg new file mode 100644 index 0000000..9faa33d --- /dev/null +++ b/static/menus/return_to_hold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/return_to_store.svg b/static/menus/return_to_store.svg new file mode 100644 index 0000000..71349db --- /dev/null +++ b/static/menus/return_to_store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/scrap.svg b/static/menus/scrap.svg new file mode 100644 index 0000000..d17ef49 --- /dev/null +++ b/static/menus/scrap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/scrap_to_hold.svg b/static/menus/scrap_to_hold.svg new file mode 100644 index 0000000..92777a5 --- /dev/null +++ b/static/menus/scrap_to_hold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/split_package.svg b/static/menus/split_package.svg new file mode 100644 index 0000000..5a4b0a3 --- /dev/null +++ b/static/menus/split_package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/transfer_deliver.svg b/static/menus/transfer_deliver.svg new file mode 100644 index 0000000..acd90f7 --- /dev/null +++ b/static/menus/transfer_deliver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/transfer_receipt.svg b/static/menus/transfer_receipt.svg new file mode 100644 index 0000000..007cc6d --- /dev/null +++ b/static/menus/transfer_receipt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/unbind_pallet.svg b/static/menus/unbind_pallet.svg new file mode 100644 index 0000000..2849d84 --- /dev/null +++ b/static/menus/unbind_pallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/unplanned_issue.svg b/static/menus/unplanned_issue.svg new file mode 100644 index 0000000..1eb8765 --- /dev/null +++ b/static/menus/unplanned_issue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/menus/unplanned_receipt.svg b/static/menus/unplanned_receipt.svg new file mode 100644 index 0000000..29dc3a1 --- /dev/null +++ b/static/menus/unplanned_receipt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/no_more.png b/static/no_more.png new file mode 100644 index 0000000000000000000000000000000000000000..8bca5fedb43c82dcc608024e4566782da8dc55ea GIT binary patch literal 79568 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%0AQ{*`^) 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

    V|NqUzL^{ zF;2+jCl5V3(<4x$;nY1u%(EK)1+O7-%ZOO+=Z6z3QPRMWpZb$y&qjBbXBy62G9rw z*6G4UC&lm^2Nh=w@+0)3`kV8pl*!@PH}2vqa1k`Q%imoLMF7bpHR#=fJyoe>dO0c{ zCbZnYEvcC=B?h^?Oa*!9IPCl!s)QzR2-jgELDrfz*cMTw^%PCyHI(6__3m8R^p)#3 zEX@}`=e^slf2lmy7JvJ6!E|nA=w;j3ZF zCm~^2`DdpGd4S6SLQl#V9@+J^wf8Q(Ffkif#(0`kBE;VRN=TreA;&)iudrpa3KOYy zBi3*@gI%59>H+pm#B|HNaW!rp@r&6GUBJn2CivC36g6wX!W%Mv6V}fg6BVOb-J) z2_uLihko`J_J4CPC1U9uqfi?|Zx!<3_452j?*!`tmjjXnq52;o+m3YDd1T~??KI#F zaON+O^G+s;8&=SQlC)5~s6HUcH~&SwPHe-luPp;&Gdf{HNEqq*+F3+d1U99p(KTkDEproV{IiNC1~Wb7wxyQ)0NU$v$#%x{uw2`_v5K zmHpfL_R_orPh%cU4=Ak%CvV$_%Qjb_#a79HY~c>wYO^$bDdJIV<)% zn%Ls@)Q1nf(&b_i1WN&B!76b`E$P*s985FdCs1&(X`=F@x?e9;>*w2Q;l8~Kfr=P0 zo%_QrtMe5XW_?>m3YjS3b_CO3nA0epp68FFd`18M3JkLRB__?3%cAL`xtrPldjwk+ z_-Dm)A_Eq6&Z~0KP{u-eIJmS{-J}c@mz!jlifNz8{ z%~{=Mk8Us=vZOWy2Jp0-`&P+V-WsU?_)@Z^uWZ@_amSsFmxICQGNW&s$)O}3bCb^& zwnFYR%N5Q;@n*68>^G(`*S;=2?q4=_?;uNF*a}?_NIuU`aHmi-6`eSqAPp4+UtXgW z3M=~&xXR5f356;j3`V>2_AXQda`wYaXPC!PFK-|g?BEt-(UmM`=+x6xdF>mIZ1rMT z=2}bsMn=cM&%IUXsgxjq&Joh~PfKDTmtYFdl%B+XO35GNp+h<0JP*QM%{gr&JwcFL zAC^vbWZvD<6`xqb^duh!x3QO3 zs`$6!+hWPE!s|4+R=?Y{p`mX7P%k2}`09-SfEyVhG4nL0mrFw@^43c+FVno1%>zWWw*sX1go1>W(*XNh{a3vF7`CgQR2wGvxZhZbVUZQ4afofm+!g>Hbdf z;tZliPjPuJl+~O_z~%K_N=3a`B6Ww238a!69LV~0%fVL&PIXy{Zq6(#O+n{Z#1~0) zTEZ=9k)dGm*JDb`ly?g(@O7IXg{x4ZC^n|2Og+e;Zg=IC3mogYCS!4d1I`3#P)>J1 z(ZIMV#N1uu0XjlD57003h$!F^pUnYSm<4m#9XKaet542-sTBs4Ln%<1l|7>Pn0Evd zY1%k}VCDE2@y<8|zf1SLsI?$Ez~`GOamN~}yt>Lwh{c_ZcJJv}{#49`6H zGcIc4SrHjD7Asw|XJu-7?}oSm;mO<;1W+4vqkPa*fGsI8@Op8@OuHdB@8i36E7%z* zG957g8-qlu2o>!u#Ys@NZ_>8+oj%5P^tYlyAuhTwV*%YJ(G3uO8CTA3d}q~)5hI6U zUzcSpd;^=ALvGR&5&Gx&AU^Onx%eA-H}8u<8Fyf$rS?Va${&!&HH2Dr4^g&2wV^g5 zL~NJT!`apqA_hKpV*;r-dhK#8aLa)F+MBBMIKx8)qyMRq$udf&Z(wlZO1J6ZW0N)3 zY@u-p181hz9I+x5qb|IR2Nyo3eDFfPzrJr}qnH|X`(7UE@<6dj-a02^s#K(~>^X7#qO-cd6U`nEW*ukuTPP=qy&&3S653&Uz zr{Pvl!Qw1~D6QIE`q;2#G`qu*K_;r&oCBj%>)e81-8+oFwDY}U*S!Kv8iM$9NYrxp zzR%OYDG!-6#%>nOXADFt5xe0v!+i>HI&OvX!$QFjx)j}pT!_suss{Wic6LEW=hvPNCV)ysqgC@N~ zuaM&L?r+{lJv_}XM#`6rJAL?VFx(p8bBWPUXqQH@H)aoiO575X`sSqTr>14+8}j(@ zK0885^5}8X!T!ZrLom}Iny=IYeBV<4u8~k_JA=u<%IQZHkBvQL!_r$4R*aXgZiEEL zgZ8n{JJ<_QEB!WYj{tuf#WWUhC&*Whsl|fn3a4|ZL6E7r2CpwP}8o&#^@vc#Z;rj2m z3}~1EILcCTpyn;Jy$pQ1iLY=|gH{Q52v|Bu^uVjT+@e?UjIIm1pU43z7!;4*g6J}hb5Kc zFD@n?T=9Tps8Nal$|!%Fd%4XwX+eTXF(a5#fE0JC0djjEHcfW|*e^{%yBo zCBbeodJG~WWt;z2#{wZ%8!35pWaA3UP9)lK$Sz0JTxe>6N1y=cqxT^~NStZQSK{EG zx0;ox?{H#02WK(?YYjXT6X)5+;Bm5|s2Te6*@A?V(qK3(4K!h5aC}@v`1@0M@P!-{ z(RVaO1Xwi`K=J|I)X-WD9utJ(UIdB@bW;nx5go^zqDYazNf&}-2w?gX0WXbdN0|*f z9-@K}F@c}|-R|G};fs=&+yl3IX?z|^S2L~II^GT_7v zNuG-cbs}kbbDQgqQCI2JTsmkJ!D-uBh+fFL3@T%A-UNa6RW=O_N^>E_sCkVb^g1A% zikK+u2TIS8y>Nzb__fyK-)GdsU`#SCR1k$A1ZWWn2nmRlSxh@Me$dK^!!Xe0VA%Cr4ZgbPC1%U`>iy#m|QK1Nj-=PTWXUc`uqdf*vCLnFmqaZbwsD`&X zWiX&O*@{3~4cFHYQ!uXp4`6R_(@hA>mjs>M|ET@q&eQ|O^-d`oh!bJV-Gf_Lu-i}4 zjDWI|K9!Q;wf)_GjbZD1ZZ;qd$BU2<8!O;O$6oa$RRcoJ4gks%+@cb@joE~J%?|U8 zg0q&k7@bFY@SRmH$e!bdp+Ow3@XmXh!+wv5aN_d8Vus>U#c=o~chdTa?n2Nfor8t} zfmoA>SJ5M@BEE;!0uLmiUA;P_zQhY;{vs#Tz@|)m+8+Z}CO+OCt?7 zAiOOA!EU#ov0$zFlRh*xv3imSmEVqx8w_h1o0w!oQ&p%NpB&-_*n5B_1*p{nR1?$k znvJ}d!PtZYd&;x_xh)3PZ{b#lM~B-sP1lxMME$6!HH@J*2r^qAmILjgoHzU z{dtP;@*p1E(^fF)0o~mKG-Z+225P>dhs7)Lg4}o9jPaMezQjcXjVrX4gKkOC_QL~R z1F6kB&7X8gp+x1HwA7^7c-%=8c)OxNr37osu{c;W&+|K$cIJ;fNR{^*=s?pjG3B7~ zi4jSPm!0|N%a$`%^K20w{*KHkV- zE_MVR4bUtT;6wx$at2s}g$xeEao(X40IXpK5EP)JPg^=;1CSmqYF7}U07ChMe@rE~ zCxO|_O>2rGV3IJZRY0K!Dimnd!$t{2@R%=n@Mze<)2;(pM)A~t-Knu>bZ4M zNl;PU2Tm%A8;J+~CQdxM)Mh9PTR0l%eFlyP=Y`aDrXQRbA{-t=gkQje+c>}#h4y|- zy-KfTt7Yw=VuGA)%4?x17&xXORMgXykFn#N> zj1IIV?Hmwdry+g(>u4}vIB=Pgg;zDbq{k~B$$=mAO>P(`%1Go$%!$5v6WI-T>S3%i z5B$JGT?enM&Efq9=hUSv&a2WQJMeC4BSU^l!-LtM7&8$f5_r7Z(OEUaNwgfTk>?}p zITi^)B?v!D5gx>Y&E1wnMOj=AfujJ@4*Ux3b+QzMQX-UTB^;p$BwDdwH)1f9`}5=I z7K|)Gn}Y^6=p=SI@mXk47D@&YicArq)C_Y!@z0~zsE;~+epn%>Byg2*gNX#IPI|B+ z8Epb=QTDAWXv2=BT<`@Rylg=7+;#Re-LID^f;1#45a84_6e~&1>^3HX5OS7U!i4)9 zkJOZOKIy(BvbpV~!ogw2grA*gczMQ+#6}ow1YnV?A!z2L6}_L%$EnPmAr!Ac5epD0sJV&>82UyI239i+QAarTnIn)nXAK#&)`R4{sAmovW3!S1 z2ycI$x<UDQNRJU{G(y1%V5`?i|G}5yfFLc% zEw7!}m=h_29-Zct9SqEev^>J#EIjB#UEq}2fwRUL8bvtijwCZf5$CEJaB$1N{47OS zKaK|rJ%w=pfKwZ8Y8&1v3UC8+F(Oc6kmr}Uu;@~~Fp$*(1HC^Sa@Bxs3tgwKZ_=!D zAlJ8a%_Vsx2?Ps>@b4*tFkd^NDS~6u20-1#HR16}1umv-QC|g3)q-p_K%GTTzBeiq zFgi5(5R6^g(24nH;zbZ1MLOxsgP9lGjDC?H6bYfo2o4W3=<^IG)sa*w!dVCiGBM30 z2tPLTxc(k~5Ok^#Xgv`GFaUp4mpTEqF?-f&Kv;mepp$fdq&|wvUrvb@>9`C58=V#3&zBSu_ply9z8%vAe>39UT__2Fys(~ zuGp4CYc;N0cVT@>rokbp2>s`0A7upYKuA+h!qdz<3|tFqKBuFxZ4JAa$MKoH@S@$& zIKl^bLqH%9(T^4*n9Qv$v!dv+YJjI2@>`M@k&5U`uo9^wU@=t!)btsk6u~WRdUp3E zpr9uWJV+YCOcG-FG9WOJ9O1+&1?EUPbABK)l1z?J`i_S$%Zh)VpJ#fUADBXc_CaJ$ z@_3qohO)O7By}Qnc%dURF#CZbL4K{1MsuU#`1u(T!7HJwz&C|(_p*|w)I8C_+`ot? zokl+4^bARu_WRwxkESSkVJJqXA<7eIsIuZvY~zndoP*-=m(5xNV8OtX*+f?dpbAPr z#~9duv|Wo<+c*$CL=(9*GxyREJ;u!P zmxF19g$AS|Eoj-$85k~I=?ZS_#t$duMuXO8aC3E7h0R7@l~5PCedk=DW@|mJ8@Ppqoi?+es4> ztn$f4ch$6KJdU`L_RQXOF9N~^f`ahdc?H3u9s^l{UTcQL45$Obe+4MmSu1#U;IHv`91{XT9s22>ZP*6mLk4(jUI9R#Phz33hEF1jR>bBALRJw%pJDmGt}z5RYZi*w24OB}igiR- zW)Z^GTvmK8sJLiN&Foa*(F^rmW?dZ@#Q2Rqz;408;v%*D=&g#PuM}055B)r zPC-8=Jb01>*ce!3a-tQII9i`jJN45AolqM86*#W*9%Zl%3<`aifAE817oGcwG)WK#GwVdu|(`JJzAjFA;b-QtW z6ZeYHFj5)^_`=`z^UqJ0q#7rRh5{}ShLEd=949*#rhfQNW1t9AD~j-jSUo!UHcE^d2%@FcLGn?Ov_Mu2kc9-z13~6$#U}~{gEFnCtuKj8 z7PH9^0wnzQNzkP2s5Bqx0D?*nX5xGBSfOA;I>=Ysn&H>^eWv~1%0=!_`HL)(6Ox-M z5fF^@JzzI+BB_`90mp;oJ3V~LmltOhgA~qJ5kaub3pB1z6ff?4@HMn88s1WwZ~4#e zxNt;L*w~a|c=P;@UOXSsr>Jw-;J^ZJUr_f0pi7Ura>z1cGF2kY1|Eu`ES)AA2YOq< zh(!hJ#I7|M%*I%fPh%L@yyq~X1U4Bf3W|_*MG@nO8;&a;cqDiricoGgPJgRrct5@G z?CM2BrLj;(0%y6lh~uDBk3sJ&gx{G|F8CM7WkPx#0v;%G-!LJPpm79ES`^N}@lVw7 zKqA8T&(xG6yxlMvut-Vd;fqSiz^5C*e}AuYh2p&s1`Z&P8DvDTm;ybp_MDf5-MVzI< z#`THX@{ll3{E3jz1`yr`cD{M@5e2EB@c{)5{4WACSo#8?2-!19Qx8GwJH{K@w;>t= z_pXZ1(|9)BoSmgHKxtAjUYB~!5bc*eOu7;xEbpGQ{z8Of`5A*Om`h&*;L=h4s3`|N) z-;xSJXjn7+Y9c7QW9Q%LCTbZ79AXN|Atf0qVIVN7q=;q}VPMmV&(~D1R}Sh#NrL9i z%!>ysA0!vW%}a8Gl_fMP8s5635r8SR75JS6A_gdR1zl;hky}{imX`OTEzm9LRX8Za z1z&a~s4I)NMMX$XiZxFJnF+6ojAkbyWTG%K$uZwf&zA)P9_wTBuam#=aPSDa0fvLe z21EE;HN$xUL2Dy8O)zxZV@j^lmjL9*tkw&8iNRzq)ikTwWwtS2*fdH7wgPAR}@nw;naaBY`WpP34I_i_mE1+CgB2dyfVX z*8Anq&3gz!fQ0pH(V4UbZS{ONn)u@S+mY)ZMiD$F{QPNz2qRM!iI`x~;-e-l0>=?N zVq~$eYMw$0KbI|bK|mydfEK zVR{ILK*Jo>+2y1tjs=R)L`3-2pkUZM=Dad+rFwyUkPS~*JfC!_gs~V}E-cdsPk5Mw ztLjH+Fzg@*h$ST76iqt7Ha_9`@pkaSB;jX;gy-9aGJ@g8MJ#&_l$~gx?MSe^&=7xq z-CID?p_RwHMh#dln-zQIl^X3z$7+C0ez0R5I+hJ|Aj#O$kYX+!fO?|buz;|e()VF>u`{%X zz!)nM7+|;^zdm`Uu_EBJHmNVH&AkS?)RGUQw9*mLg z$FjMlRb~^7ZjGY(ubWDUlcx#J)fI#>{eEP4;D4E7K->J-uvMMaU>3CA_?JY47ZaX0 zlmxeb{-9WB*!0nUi-F4r=~u%C62k4sT+`N$<8Xi=1V~t+*;&2kg}z%)lnb(MSS5r7 z73P*j0}5N^lZY&*IZ*}6Y*iAhg$SLy|~w`6d-)0*2< z5>^Fa$3?9aEw)lkD-0jU2m)pa-CbRKr2L?}oxVPB(a=;_yvyK}3>&!R$o@ga+oyl6UFM;#DNN(XA%ZY}`(KRxf`5oQew?9K@l7FrQRh zaU=pld4-{Jy)GiWmf?7CC{eZ>-JYSvwAv8L1t>}fmMt{kt)@J8@Y{cdzVpx0w>26 z(eEP~zce+iTYf30_tF*K>qhGhI=1 z1ybxP!UAhp78@|@1W^p2uqK27M^1dD%0SzX+Tt_+I;i%Edb2?Uv($5;3w#0YZiy## z=>#|r5SIcbba<5^hrZ98A*fSHtr^1m>jYuir31QJ&9Gs!q@aksNI#S^OF&c0ce2p5 zeKKvII$I*#|@_WHFz!cVLke!jn3Qv|DzD;vufmIx34+kC>Tz?9^~O<1UC zj+y5hThtSy9YVHF;^*2ZmT9|*z^)HiK;ij_Ne%16+bk-O&}qT0Y#yny?tF$J>=Y3i z5rpGTifT^7=EukL4h1Z@@--*Jj1(78_~#XZkP8RmxrlvO$6K4L|6D0T7*T3P5%fJK z$YLR2@sM;FaO6TF0EQ6+bD$8|_s%%cAX>dv$~Upmpm;3{(?r8!+?3OA_O&A+IwCl4 zv1pfWCSi{r`>hWm z-l!Tc5Y{!pfSLCjrDd7`fsGjG8a)UG%LOnx|7((4y~nY6hXZ zT<)(3io0xc=98W*;iHvT zin6Q($S6s3JYvI*)+iDJI@Pu;6CBkO4H;}Kn6Yz)V1*YNlLu-;Nd}I9!ksaM6%%}| z0HxR##t|lo2eX(+DtREh3<$SZ2|~Z?c<+sEQg)yVE774+0IkcweO65}P4Yd49y5gR zmn#N^B?OnY#&EF4wzTC4U5aVWmPuJBKwHasO}0Iw?Fb7re^PHy-q8w$J^6n&F8BzXL2plAxKX(O$#EV_9^H(10QA={uex2*c*; za^=*!5@5JZ&H!a0(Nsnf24egw;nRs&931-rzVzF3cf`Xoe?$}tfT~{+8@a_PnM1&NGNbJe!tONfne;&Z~appZQj*xOgt=hy^FpUg5G;=1$(&=AA?$#J zGk|cWV(=>$bzcue@T-jl9>UCze@#R9pc4(VgP7S6QpNDN0ubVI#^Hs4kP%_Rgs)5b z40KQ_ty)Eqh)8#S1Ze2!TR{ zP%}L59s0`FmX=71Y})zH;}kzQ2MB*3AqZ`%82pB$^|FhxS}RD9DMA61C4>bTMz+iG z*8N;rF{DAHmjXgJu-gURBoc?5`-l$Av1VO5@IoVl2A--IazcXYF{leXIGwNhAy)H( zTHS=k0JIVqU^giA^i2rDBFq~fQ`Jze9oj8>9LKE+!bw0lUojlA=2G+jC@NPq+q zP{0F}a+e3T{JopUi?6E~0v`MshTHA6i0~M$+5y|qwG1LF8H7g2W{_EZKrIXT$*8-~ zKG#Lgp!*Aau{$>wl!(CxiA50NpyfboFWP9n=yOd{g8H3=N<@^*CfXu?vRa%Or&E-$W2z3J9@icwB=B@|3gb z=9rn{#H#3=gOojt$TC%Be}HXbSS=l7moc%AQW0X~flCW^oyic49SrtyhrR3|-ja+k zfkEH~h1#JF{m1nl!}f~dR{$X_W1jAOZ3&Za>P|+ldJ$%^A@#CB3x57$X#n749IeT+1$xSSFb=~0D6)rz8x>v+HfQnL38~d*rBFRS{gpj zeFhNC1!JQtNKp|EU_(#Pz%Mew@~sv#LWBY+5rrwA-S#By6%ft=!XXJ^WXb5qXBqtF zUIah#XrKa^MByU<0uvFYCc~f0B!pZsyciHNB3!V(g}Mv*Mnx+ZXzogw27IaL&=e_paR&<1sS_>IWtvK)C_=xI#cU zWK8jEX^BF(j3AJT;njf9UC0q= zuo0bTv{xvQm5c}=+7YREPz%$*)&OM0DnFk>SSVgF001BWNklc@)4Q=|2(1Q;3;~K#LR*4_aVHv_1B62rLl+AMUnU8D{j~eSaFjRn z1Jo2@e(l?7RRW;~mYUGhq~*Z!Ur{l<8W0vl$jai0jZPhy^#Kb{b4Vi>*}f+}3xS#- z2-mQ@%9GVfXjB6E!D{uA#2MmbHbg}SpjJ83I>9a>PBtKWCL=5}4URe%%XLG5gaaW- zzYPd_rP5lj!0&<$1`0D8G`Yt>Ztd{b?a^~AP?4*ix)di&xDpV)bH(udS>DAF9w!lD zpwY-V77_DQvtc(fv<0%>xm4?u;(%2F5fWtSAaTS%0{M+f3c|z?)JDew0<7qZyQIZ? zup&%O#l?(($)Z$iH!M;@aem?P20%C@Aq+JT*w9h%d;CZfKWMl$k$9J%fbiF&uZ=iO zRmDwr89pzT5T4KVdWN8c#lwj3ka@|*qyh-gz)T^KZi~*^phfUi#);adBzS}6Tjq}d zm9GvK7DV?lU|~m-Ijx|^8sI>efs8(a^9xBpk2O022~Ign5Dw%aoCXBswL;Z!?CWDs z-V9t*1J4*_1m1J>&r4-1vzH}FV0nsRgWI2r7{V8k5Z(X?H&HYkZ9lfO$>3O*frOtK z)6Ymyf)@;vD@jZ_8zNwdKrkj?2@YT(O#TCUH^Y)^323<$S5`E^&Z41@_dOkY3^fD9 z!N(Awr1Mf*DkRK>!`_S}dTZJPfN;u|G+6sr_pf8xmXfp}K~wN7PrJ4HwfyClrzOqS zf$xhLLXZ$X-vtP=)o@T+M7pnCx{id?KrLW!Qi%k41-Ilx4GYMpp$g}|6pbjc0kZqx zBW7;r*d)E9i7kGGokPxbaEMVU5QW7kBH$`Ri1K2q3;*`gX%-JJPTo&e!hqykfvkz7C>NC!{cDtFvtKD$iXEn zNu9)-N;#2+t!8fRuy~NcZbB4HN4At`pb9zNjw_4HGy|wT&sIpvF$J-&7Y-iS-wQ!N zU-l!&(qY`5fiT||hVgh6AXID!xY=2-VXLFBj622Cf8-W7GmK0_=t!HPyG}y5NRl{E zH5@>MmW?c-$Uw-!N!gg7zgBZR2MJP%!MK`tU=n==sB!5|eLLw7ha>7U~aA#@%wdls9Gg9&@~ zL1qt9Vg;x|laMn7)q5OS7Q%!H!;U4d8(j$9n@R>lS=?PVbn=?-)Jf0f0+AaX2}>by zNe(TU5DRlow&2K4E?A_1?N|YxoXoa4yOdt_VGc5b9B(jIJ?`x<^umXbL`CnY$hhEw zFSZ_AEiAP2F31&3Xj}T215Jj%PXhuPtw&rLPg1#PzLcXFtBOz+km8_`Is&d`vct#7 zdy63?ho)0~V$VQeH$hD~;AF1HlhU4MWpbVDSbhQwB?J zeExJU{)B9h0k)`zaB2*?mwkpPA}suX_?Tg>4Vh=3+BGm}bLY}`zX1qYMexVH$xSss zG3W=FU;xX;(Ia1IFad!9Vyq%6iH<{BEb!kUm!AuNxK zd*K+NAP?_eWJ6eI2w2##P>oRbYrv5MlA5F;hDHO*d{zDd(DYz>9eJMOe2u+`A|y?* zdnZGfV^<|6Y$pkx#;pUD4dvbio|Zs&HBD~ z5CglpAOjFwV{w9}QY?VU5ZIcQ+wG!01FIN@pW7P|LEIkwuvt;0IY)7%fn5HPq$jc+ z3`idqN0DgSxznM>#YUn<9zcCaaRiGQ=q+r_zy#*PCOEjgX%|)KbEm=0^}yA6ZaC3oI0guVsU_l$c?RFCPdITnXp)A284XaG6Rf%cMv;#aD8dzHMG6Sr z+f>DX2(;BOIgQ%eR!SxJf&*yDvD9mHTe8qpepKr8o1I+D$F zWxZbkNJXEUmym&eZM9pVP7^(Fv~I{s0<4WV zXnCP6RuU&P#p4WtLje|z34V(=!RSIz77%=jtjCDOP6OySMj{_{6co-Pf@m_ll_3N~ zSXe>|QC=enLr=~#NUlH)Nn|Snk5kQ&D2UFOOeROp70+rxN028TumBtd9MC;Pu!o$1 zcO0Q6E*`5G?qZ!2={<5K0X8s%)tZ6;!}u$JfJUK!hSq3Gi@xox1a@685W#16jhKc+Bd>l})4CB1uD zo_)DD0VEoLDmZK$upj}p3^{|67LDp+Cs~jxqeDkmy+s)z?s?k;3au|x4E}V*a56wG z&N3ukfZOs9(yblWT9qyum9u=v=NS?T;EInC7N=r{00Ii#X+-!G459lCICxMUV1fku zLU0>epqKZUj_Oo2f+PFhWim4hM9)%UK0;1S5n1fON+ba3Ee2_FDrf|D1H(SnAU=Ow zQtUTW4M9ur^S=t|Hu$tHo(3sx2L(k7HdPGkn&Lq~=o(28&=3)QQA8YvvF==o#)C$T zEMO2B8#?(&x3_?rdnB_Aoni=GD#g#IqrA88*iku=OM}nfw^nHh!|0LjSwb10oOUrG z$b%1jH(MHfko`tV6P!uTEfulQGGteEvjZukm{q6+pNZ0Rf90#|`Er|NJekZH{(n!V!rFp(&IKYeq#e?I;++v1Vj=*L;}nc3qY+&j@k}fiZJ2reF+PyesHDY z-#GfU&!8zIn6jhDKL9Lt5a6H@sX`BWRLus5%|a9W{OScuSWQXTe0#hQ5Q@+2g<_DQ zfolkMW$>i5x7LbF@r@X8Bt(F=88GP!D90YnZi8oe2!bL+MCeWc!e=;~?_mfmT2am! zcMX41J4_P1e%fnXKBJI3E?P1Xbmrt=V(xLB`kFIR+bUsA#aikfs=!# z%n4AT0nEXRVzh~B2)TjRon{DcQ5C!RttLY9kdf%1GR~PtS!_xW4|T|vxjOa5Y!9;< z4CL2ZQ1e4->Z!;BO8rI|e+sBKTt zRTaa!3*qSaGYv!t{NQ;J?l)8ozI_DOeK(A4Z~70WBcIL6$)AJ`l@g43$Ff}!6+_4p zBWX4qIL+UAl;LN1Tg+;@Yt40PBFI4QVRdPTdkjF}Yf&81K<50FIwjSiN;U`M4KYh> zDT0N}q_Xu;4^&EHf>G1duK%!~81&q$+)J>yi!sROKUX6R3JDRgkEn36dN|c|JPZg% zhFXvXkgsr2%3%V8;Ry)dWQ}4vZyWDxwTc#q7umy=eabGuJ9!xX3zt z?e38!%bpHfL?tp436uxkd5Bq)pg-p{an7I(J+cYNgCL5<5c^S1V$E*k-tOT+!%^LK0)}Av?0-1 z(^fiSpRu!XNS5sf99+$Z)<$&pwKzDyu3~_l&Vqv+Be_XRRNM%mmV`9ifH{x3+7g6) z5%$yqI4wFJb|y`!5>&ciTYg%4fab^dzu!;4sSvUvmgXTgxq)#AA?o$77){(NWUJz2 zQq+_+VLDV17>AG#>YpzM`R1uF_R*exO%z1bPGpYL<(3qG7d!Yg9H7548LTzQOe;!z z@kor&Tmy8ve?L8?ODo`p)YTp&pb<nt6 zZq}%X!l1-72h$kby0T*x5cmWWF(RP~3K%yodMvu*BzQ$ZFD5kpJaUa!#-u;SDl(n% zor=Ou?^ooUVziY(Q4Mx2GxHYo);C!;QOo*KI}VLU0ek&Epf5@2%e-|jc19$@$v_yB zhP#53$Ob0yGC&SOz^I#sWJh2i0eVzIsSENC#}bDD0`C}($_!6U6>RV$Fx~NW>(ql7 zbjv`(cx1~!5JW;JjGc63(j=tE&->%~eC-DbhC}!xJ;P*Yoo`AgsG=Y{A+b_~&Wgph zjwO9f)Z|Hx;c!8C)CwRh2&gfGKlXfklIkPoN+%*a>9~{ww$YJd zd!#qifHomz+4d?C!lV(xl3TYMB>Y!SJN}7+Ffr!fovY4kmKzYGUY_hR3do(wLNowX zGoqJV79Ds1US&vT=FY&7BNBQc3C@gyl`s@v;8YlGS?;=%E=pjRP6PoEDEABzBWh-G z79e4HZ=wUtwmQi7h7j;^wqrOdGfd9Bqihv$5T{CR5JE-=3vUpx%`RXwGK(@`iN(G* z>GiEt2F)Qn@(!$hAVE(%ULUkNRob9^@OsW2`VhM~U#(98DIxT}GKx&K;SNOTb>@a7 z(0l;6JK5c*`o%#D4d`r;-5i*>apkk}B63e6nZ|)3iKLUIi=RRXd0{lWKWB1 zpU2ab;&GW_wmJj)K`CA{LA`w}i`#(BG=(zWh|HQ$O9V<^!hlV3E6JU}?gDn66AfX>{b9d+6;5=?DSOBaSSkez>|cNg~1iMmY?OWnv0My7_h zaEqaZEwb1}#MVC$PgequQ_SGt^TgAX;&BpzIS~ePkGPVSG7GzMo?!~ytz02O;||gt zW`OEBgkjV>k&bupix=_C#}L zu>ghq&Sc3bb`>gRuLS+gF*Wst%ya= zP{$nXrX=WC8lAaj6_93_1Q5ojRj=}9bTAA~tB`?g-3YBDpeHvJz>qgXLM{x&;yf?S zN0KB+d;;ll0YErRBG~sHsXdg0Y?c>UEx(S_y{$ z!hcLXSRoPC#u*}?a2kaxT6i#v{f)(SkUk3R$WuWD#MDP#1$bx@_C}zQBLux2K5g2* z*Nu?0`EswEN$>LmPRevptHOu!oM8i9;OL05fmb_BShA_}^d04(BT5dV2te7Hwg12g zW3#CX;4OQ%dCq^LU7&4L12G<<DdpB8vHg02q!(Bmv}l7!-rHe%iL0`cYMxe+A%{iEj{ z&-Dz|b)fXd-*TYZg&{WRtw`*~6Dj;4(~sf!L4tu>32Z`%4mW|GC)q#*hb26;ifR3M z)Hf*K%>tLZH6viP)+{!qX!4Y}sd;9}tnKV`6H{|CTmukRoCxEd!O9H%Z4KDr5Nb$Z!%9t<2y#9QEIm zBaUeHIcZXHd5JQ&U4C7&35TfYgt?AN&&jG#mP8ioLIMzU5kNRhB0MUGh~DAf&L4zI zB(}nt4tzRR2YTz!+=lyT5$N0nkIggfLnk5?6$@dX3;llrT+=MLkB~Adl9Qg4 z9L%;RNT<@QZe}$Pl@`8~vB^(?xC$T~B@vQ0iBSh=N&!m!aqg~b3vIl)RnO37m_imH zv5*aIYs09EQ$zwjl{aa*_auVliC?J@e8E?~b9-#)8;s0wY~+!(3h&l2ybC&5W*2nC zIoOc$&h;HSrXLvChCO@`Hk_5%2j9?*C$dB$I8p%^fM6*C@M#O!&Ufyp1msORyFNv# zWFsv!LX*&QEhv9Ns~I!4d?l=?fOitCQXG;PT!64bBCJA$Xxjt1=M4vet2I8AnGc!^ zAuI(##G(imfoScwr*^vC)V`MAzfVu3{LB_OCpyglUn^IR)HLI>re{P45wPh4RYe+0}w=1-oA3#kqU<}I9s+~5TmfsIo%>ma)}2XvAd<%3tZ3DiqRkr08z-G&jcT;@XQ8A6Ls z3HFCP$5|HzoGaCEkq6;i&+z2lBu`^lvm!*+0n}6^OeKMFu~gg#e0dwKNI=BrNq9|| zUkxTCC(@VT50;VuUrBIa++ydlKmF*O)m=$yJon_Sz`;@s7I@&SJOigGFeeP$P3!yq zAZ}P;xQ9{b2>{?f1R5fkXa#lX0XrguqnI4P2=1%wZeNIZInJQ2T$MMg3L6SGA@*A_ z_F>!t5We>Ugu^<+qYWasHUvB6grakZV($X43?gp1r6PpNGXM(jd_{D-<>{R9sMYxKg$)5-SO5s9`}41k^W%cpOhBd9lKSg+|QX0O@2tS2Vd~cg*m?kbPifU5O!Lz^vHwFN}-Crb*ckHY)(5q8oUEs{`fO##_B_IKu zL?mz$4A5`~U<5>;C2=iK?mq^O$EE0(+T9;|CjVneouN1ci$5V03=ju>+EOthKChA- zPt%I!{KwG9gig0Gn|bF@yQpSVruv^?;u5p2;QcmesZ%ZP=c{B7Q!*sDv)L+m+yBiKsZM$ z`sW{mx9qJ=IkA)zWG#c-@E#UiAfSR~Yj9K-v;qn4zPGQ+DnfA~{C+6E^=kkUe#AV( zhPc(qbsMw+rlk~AalzTLK1dC4w<^cItU>!OVf7@0b4|lG)z4@UI^G!ukYTk9ZDA0o zckp#i!0w=?mWuJ%1>Ae)6EFC=hKlUkmy*)bAz zl1s&*h%D~Z*~Q*o|8diqt;D$b!P7ih~PWh`hA0d2yadcOg+27#5)BB4q7#M-pD9y{U~!MmCSBN zF*-c@qfxBzkorM~(m$M69buy^X^*rKDWNyhHHIuAh~>|9sA087pz#w-+W@*W zj4n9j>kZT69~UBI9I$Ad3*k~9e)C>o@~}a1DjQv~OA}OX&}w%5egJ%*A;?R9$h?7r z2SR-?9L5QwE57zMf!jO`osqBsJnY!R;C}9|(ZRin2^<=5uuujcMJQPKA8}Wr+enT> zu_U1avMjiPu>*S>{r|tYu}cRpsV=)G4szI?8MsP%dVG8&#gIaf%|S{!637yW^nOM0 zw5*t;h7{2OZ&;+Iy|SPNkVFtgbwY~}To#6)`GLyyb}ghaOOU|OG{kV`fLbXRz2WOF zzuoM-mM zW}rkwJ+M`CgPL0iD~-tNW&#RK!*O(py!uPpu79TBY+`mEa7(#> z>b;)&5ucydju;JkrhfAjJY-4W0Z7EfkZdgp@>$6b$e8)_(;#c1 zl4#!m(e>zT)u zR%%IWhZIe2d7*Hty92upquYU&ZFbWy%onk10J&iK1LPLot^%) zMPwN?{J!bF2tqvgBQ=A`N{9s;ri;@6eRd3^o+6{n{)SvTdKn>uK#3PvUhSeHvM?(N z1bCNuam_LiXNcpea`?W8VeT$1wrNHud~-}3xDsPXs-6$z%rcN|2CD-1!GPhUf4N2t zNhB9s6p>j_37Vi`L7ldc0g>}F%%*uN3mHM)m|34su3N<#F5rN%26j2`Uc9-I2I)2U zeS19A{*TxJnyg_^;~(KdjSOR(001BWNklwQ>;b^(4kk-L_uDb0ZHLJcj7 zqu%XX(7>*;xmV^K_Dl+vGB1cAf@Mx7)6n(}i7AG|fZ?owa4OO8ZTcWk1_)B~A2sr& z`+x2=Mrt5{iCVDG_<>Tm=8lrv*LsdGJq(tS9V&#=T~mbL4Gf+^!sBs!e%>B7rI3|G z0S9r^K-OKjwqJVEK=hI9A93sS1*M(!Qxskohlzz*|Y&}ho~yWY>_PV-DFe*$%xHh@{d_}gBP*-neH)dgmc774{e>uE&pj zmjZJJo78jLG0~x~$c7Y}fmTNUR_ufP8r~}*sX7WQx_)nY}A0Su4*|LALByWcpL&>;5F+kTc6yL9@X^e*jt9iw~Q+JRt6TnU9oCnKJZIbc0`0m@Av8KnYG6OMmWPGnNddD06hwgLW5Y%>Ean$mFL z*lN|xKy?tgCzKXL7I+=fF~$8-D(=?5-SStsEJiRp5SrJ>Wpi*K){yv|?Oez}d}{e) z`Sn#a9!8&X(?bj}ZB&;oI=Uk0TAKB2fr^i3=e_3FRVl?btKPi7oUcyktixEgcvdC9 z^)UB@3Tg(q<|*i73Q26>BV1*Z*~Ri3n5TfH)?48YGm&EU`U8TCes2PWMiDxCpeYZB6jKV#v)`K=ekdP5Gnw{Vr5v>jd*E!gF zWXkTSfXq7N_WfOfl=Mr>(^{M2i)Ww0d0lLAr#SKx+DTDjS{HtA&Hs|umvMRV5VFKl zbi7wOR`iCfnYYhEWWD?5qVgnFQm(N;Jr85)p2~_#$-v=mkg@2Ic-2frdOD3c1^cpS zl@6zI+_z(S*NMi!(}|G0^!dM&x+_EzIoz6t#=+hgNA zmy!{MP~8bxncn2hZp%#~0c^u^4H|Gso10ql-IzgO$}X`{!OH>J|=o$}w`8DFCp&ykwa<3EP_ zj|g;|7!<8JTz+#_0{U5WvMWkh@BSWl9DRIC_yHEK)NlId-4)vS3En0FkVbdQA~c#> zZ7!(9t-MA9dz=fE@{;A_bE*D4q6z9_Qk#@3sO+WJ6B)nadMYyeOvzbCq1CdH-{sUD zGSt^G;hrE8Z5=@Md6M|Dl)RF|6xH`O19-aloKf5pH67YjPA8i#otI!IFtb-)c;vco zIf?BPL*x~e8Qq&3<#F&N-%eA($jcf+L-KGOBjU*@ux+glO^25Q5EYY>#zYJ?BEi$3za&M2afSyoGZqwTN z11gRV?06a}UHhO-#mMQ6uD06~hOH>i_Qt=)Z0w+5kQ^uvLSl&tC^Fyh@WmknA`9T!ahcF#lVB*iOh!qHvt7TRa#5~%6ml$#jlGyJ zv}F03mVx?ck%D+9qQ+xY{X#{%=rr-h8l4tkAU#~d*Y#ACOw0(6lhG)6S4&7rMvPo_ zO(5pK?_ulxwD7;77rT9-h^`8dnW!_th{XHdkI#uYXoybE*hs z&Kevz{cO5}Ot#hjrR-?+QXG1{L~%rkl-bwLZ}gRyl*uEuR>p(FhqO* zlPI(?PVDvQJ(AqTUfj0Ke>IMjAL%~jgv_xFzQR_rmhArG65pq+{Jpcu%W}N$o})-Z z_~W*>O-Bq8ni` zMT_`EiF8X)csMF7+nc97qbhiX4aHBL03+za#R@?C_A(9T))`Je_x}+vgeM-YJ;^I@ zj7#MmGSU=GPNGeptubhaLt5%Yzh^_n+N$k3X3a%hVzxRu(@7oq)lD(r@0X|yJCL#V zg;Z>Z|I+paUF0iel%gW+1;!p)h6^W1NVDFGO>1mT#SLJcU3n8DqdokM50JOqClK7o zQGHyuTwoVPdOV-$v|%>$7NTS#Li&KioX?N;(3-Pg@M1sTAOo%nCzdq+X@3aK*NbKHNOn=*yX7Z*>uL z-H3AlnL-1*&2N_P#_X<}H*kCcpItWXfG9p4{IO?xn)HF+HMFsc)+>@Bn34ec^@&<2 z6bBCu!cvA-_Ty1V22?{=+M2%!d#jpQ$k#+OZ6B4M^)Ye16v9$n08BV9(jv6w<8r3_ zz#@tKxldz(!|Uq$@7B@{o^;6A!eukUg!=AI`~K+C_1}f<*T4Mu(t_X(oHAeDBmHW_ z`_DtzUXvOsn?C^CFZRIiKy7r0Yx&^Oo>tu9sfw4y3O%HvnxsJ4B#M@+xj}E@3Sjn(|2M$rH zIe`51^`S263>vh|@j#|ewq#_Ltin?SLg^!DItZ9Np~v{?{VTj^970hZwc+UUBk0Ya z5m82)n3tlc@)sn}e_-D}dm)t~ZG&Z0Sn>m3J%p{$i5#U8S>+qPX`iIa#ZN$;Bno`F zWU1@^2;RfXw+Rx}Gdlk&7(pn*X7iNM_YcnLq4&bIe)vZ5f9D^;pP1AKDj(=l+l9zs&+VlJ{-(0PBvb3H|W?aH?UEx~@K5n&9D z;Ei94OXo2tv;H0L!`)obuF~dY$1cy($&fPqyNBKP>ufRPHvb@lVH#v6+Yl1v7id}} z%*x6%j1Ft)M;BOQOfH(HlD}kM1^Edj%Tn5-0PILK6>dx=Oup+a0mlQDmhTcS{(wJ! z;~z)nIi~&M^1dCA_K(aQxLNlcjENtyuN4+WZH9v(i#X55_4r&mb~Ltzv;8eW2KvzFbw$FGblGhXZ;K>?@;RSbn;-a7Mu-1L+XAHwnHp7ccc#b)KadgBc*6>lVpBu)`WIR=T^zh9hS(cG%A2A!>c6@ z19Ga3o4{Vt#~Z)RfA;29 zM?&fw*KRjFdh(^JApAyGX1ft=jqc*E=VBh>^UCwv0Y_f<+pTmFuhO%T00Q7g5Rg5y zf_$U$;T4Zr1n$$;wjoZCX!~%a zt&}1?(I^K2N<{N%tInv`kGzleW5mzvs7UX9sz!xBnhW_<^uEBJPYnP1!hvvRduZlT z^#enL7c5J~^?GOvgMXS=O{+qLo6oKjtp|_99;*~0EQ_gM3utzw)z**R{OI&Iv%2!_ zQ}_+|BICd(s>~i^EtL-Wz2&Z#8h9vYtd81XZ2&lFP=vuRzS*TcSi zT5eSqWZ3~el97|NmFCH2^#l?`6?odwdv7f?Fw+L4VybGtUvUqE`J~N5Mz2E$JlB#v zv4x;FfoP)&8UZ>6Z(%q2+u(P-Te#niOZF6lA>Xa-c^O+R)$zo(@mx#HqubW4_AB9s z&GG&{Yied{O`oWg^cAjtRRwr{PdG9KiXNU>TO4iBfQPo^r!1pVvmk*#L2HHS-e8}3 z&qZFKGTKU_U14W8J_(q&I=xhPHun$3?H+M<;lNKqPMl^=L5oXNlAsp#D#AMv%0O&S zNzT!@{Cy#M`!E&wul4jMf{w48C6B+@v80+AmFe&CsjqC1q+rIQtJ2v7D0*VXr#XZ+ zR4T$pP7rElDzdoXL@MW?oCybv=Vj&xLrg;k4Ck;s$gD$IA_#4stvGU(+0S7k;9}Vk z)nt?$YN9O#80GYw338hH<%z&gVYp!m@vC#~IF!ZYhT=*aVc4d-H$kX}uC8uR%lE8h zTe3Wmh_7+al%O)GAHYCE5)l2G0vGSi;iua|i@C;IBn`~4V(I}GJfd^5syH8YbV53PX=?HU zwwf`8-x`0jibop|5jWGA#v+P=NP==f{MmM27c$y)Z5)d)J7uCu4u!Oa;VW0QVpiAR zOq7&9Cy&OyNFGKf!FQ=hz+7wb_~|?BA-{aI>?Tynen2Cz;CyTdt8`>+Z{q|PO)M}g zfwzy}edR%CiN0%7hvPnK^r%FJ(B;+Gbcl?4g1WcG%C3mPbJPMg>j%}I!_@no(u^^W zC$HvuaKH6fB$*NLD8vC-z6InT$|tpUr-&Mpo{U`gF1ZWW+G+Df%VmKwSTQIn|A5bX z5@X!^GZVpQo8ZZn+%eCEn7ulD_eF0nRw-RzHMv^eVoxF+uXB`jCD_ay<9k~f>1iJG zneN^b!(3U&aX_PN6E`+(_TAYNKXk6lU8IeU3y4G9&hQW%+=a__^)3nr6zBl578*2E zg)&8v2{>htW0b=<$q{_p+TnrcDNPw`{?$+0Tze0>GX$URUKJ~vI>)eK$!j}Q+3@LI zUJWGM7sL6@;IPQvCpFggggoNd70-OrfVL0%^@X5JHS3?O>SQ8(xO;ck>98yR6Zq@D zUX-CfEhq;QrfDE&bEhjI`NA9jgn^Vu;b`9OPhf&oJ zng?pmwn=x-k|C~;`s(0x-WY#%*y~cd>-Sb4E@Eb02_p8J~=!J$6@ePFtAj7C)=T&Z;^b5Zg(GHJ%?RD4^Wc6 z2;cUyo=ST^Zai>1Tk^V2ZP)gSR~^9CuNXW}K+2n4^{1N3r4#`!b5}g$GR~t~6q;%L zc-!Z3Z6bO0j5;A4XdZj!Z6MOXbBK3zd7DZ2P6Q$J$(GA5i4!McGrU=-Wt7X-5FZzX zAWs{4-gG0sbkQw80*ZcFPy&eXQxRSgL^`U)Y}G>In9HJ5QCf{^GvCU70`^TY$EBX; zEqO=QQSK~KUp$$gY?i}S zgX8we7~;hQ%wmVFu`iwy{pxZ`GI8#TX@L&Wd8-oaW9eJGY3@?X1{a9l_Q9l1kU|vj>_72gV&d&)i`TPpdX&V z3{FIbgfe+n5`BCXmM^B|X!p?AW<%;4&or(ZVny|xc(boCnMVE%W>8m4JduywLF|2w z2o*3hj+LUp)Gp3R`ck23A&U$q6fnZ%Z=jgv(l`!;MZeC# zpF|K|oDcS3{@sw5l1pqVi~H1xnIOF(E+$u*%KSJVE}ziI4Chmm^jEWy4xjK$SySfa znsoQ_AjAb1pZ>sCjnSQiOB}LZKl8wPkBH!9sFt!ddL31{fVb}jSI!L$jdfr8Z44H8 zp`MpPtqdZ^l`wklZZS^G)a&>b=nkU)?8fN$4u`-TRxMw1=J}y5q&qe@Ak|Lz8_L!( z1!_5lLww~uoL*Bq@)Hd(S0z0RxUEMK{il}&^#4n^QMJ1DgXj#?-ik*IObR}-_7gVM zcFY*yaTL%D%EBhGLu?(#v9JN>(@OT0@se&qtr#5MRxuON=rUax|&Ao6Y z0K1;+TM}w~c9SlhcNN*t5#Vp%HTT__KA&`@^(47BBWrSuWiALliaIOe_dVzSz1G@9 zmErhQI$2zBs4V}7FB%&JTcmyYeaMRwY^}d_(XVUB`0)pz*1e9~%=H9qET1MWlRB41 zYu+TedP(HaUdQgP+?aCqWvDQ^>+Git7gL7^W8gxv92d*obpU$UINHvOj7&^vqZs7l z`}NP|%Q{*;qXl$sWJ+!d=|q5dY3VyznR$QVaEYfn6%2P7EHFy98jDJOl*>G^RWeW= zSjkb$bp#no$EleM9Kl-=WOoQmFH`@H}yz=>aFIgn8`w=OG8WYB>SjEz{S9(Z@O;gq21DuyiAi7;U{7`)1<4f7X*(!D0Ni`1+5EHzXQ_n+T5ek|^G~EM z0?oW7Q~qfSNxEtwcT8gRMRk?Q*Ee@>2J1`Ok&A^{X3-2Cpmhgf@zU$xg$G^!pJ!wA zey0=nlLGQ$*&@}aK@{)bYkyNCksxMiIg&2<*M~&_Oa#rXO%_u_YTb(hlN5iy0O#Q+ zw{8*WO5oeYP0LV~t3kOm*-oqVf=CW=L35_cCN_S~1kWfqOtfCr#rcA2Xgo5?j zC9SFL`aD`A!7C$|q0<>ZH4)SE3AclF^dFp^;3r$tn9d=BR9h-tTsqG-Fu4h;MDH-Z z<6VKLzPxflV(}Yk?W^wPFVDjT(tt#S)0Ou;zE1Rv?rD!^NKC?_oai(*H^_2*1m;*C z%Q}D~n=-3<5?J(l(#4Lj&rp8zBX-9h!kRRrCvgIXEwz3@GAn}NN5@`f^4>7)1P4PY zbF!Db9~ym@b6CupcWPpq1l052yL0N==WARHHK2ctel*VSk$SB1JM-~UI0)Dr0(j~z z*K=u*7st-bAtY6ahyJQ~bR3>pJJeDzobiP7KVn=fvC00J$9d&9eW}lgNay?4&w<0I z(+vz_yI%%5F8XkW>{I%VC1>8uo_6Wj3)@F);(u1x_Lf1^vL5(STz=CL3?^YC&FSS> zwikm$fQcy?l!_>`ltEE!KMYSR81Q2LWit-a;*~dHf4+e>yt&`nj(zaozUe+H>cQ&Y z+eZ>t5pXY^sCFKPL$}Dea2K$^{1Tp%%?JFsE#X;hqd)lpejGDE@!;C`z+2Tw^vf7% zZBn)42p%IJe0P{zZ~cd(5~cAR}AgPzie|>fzFN#v_pTLLx>Yc;VqWAjm82skw zVq}*9DM<_a1ahXh4Btx%< zZ^+0teMTQgj?!{GcZKMqYPDOt4_V|BJmq@z>)^A5tm<5kYRLxW~yA^wCR^m+y8|`Wdcr| z%1`N|HZW9?ksa9_IQD~gKZ;xRA+KPG|Hxm@w|JpeU^wFkZSY3rqdQ}2?7 zPxSts-Ui6k&9Zx{SceNnO0_8FID+3at8>(oL%d|X-|B*BsW9Gjm5@15+nx61GtWjm zGEL&3Oa?P9CPahXk~!Nmvvmbpx@fAT1L_UyGJ?PY>v{sa(p^qJG*K@RfhMl57+w6+ zRG)*O?Y`mTtN%`L{`ufzX3ZjJVqDgb(8ETx^lNw*-ahgD$)>+J4sGmss);80&)J> z&@+xB59BhNlN@MgGd(cuesx>KfK~iC{~Kg;TPBWFJB*1)K}}o)32b$vips!u%My!N zsCPeh&_8vHZ!x4vdF%h%J=Z4reOpW9`-sOI>}lOu(4ve!u$XmuGq$KnYd@+pIV&SY z3uR?5jQEu{%zzAcP24*0On6NxEeg_{8~?zg(A#yaC&FkxdgQggM=z)5yRWa)qDuXZ z7_eI%&Rt66@4uD$p9BZxyY!4ZwWDxh`Z{+T!Z|R^mJakZ zt7!*bj{n*T2q6#s`*84ZcWCs0J*6sES#(*!&|)Ko?_G*JwFvVdxJomMJ8JMA*8)7? zo!59cv>gR|HgXD=b2HSfkQO0p$j9K$kcfEtK~M5j^l@>1!MBEnJkp4wnGs#yw_2+D zIP9jW?a_*~Mll4bzIUUg8+}CMxArU&C4!rxl4a#g(6#-}(m0sR?RLX_`D&I5|x#D9Jr%Qn8v zofB0pAj5ZBwq#?v3)i_*boXCeCI1_I=GF~y?AAv)>-bQkbGY#-d|Y3?Pr9bHy7NKl zpJ-4>*=Ku+)zwm8d;VyBa`yrYfZzwa9v z*Hy`aPS`zr$QP+AZ>^Z5VmSByyq@=Sj!p=oI}^xexZ`o31Q$h($pi z%qhY0ItuugiVXCIxv%?+XxkD>6qNR8X~6_o$E~N|NS#?fsxAMr%mo-G0=kM~jE=O1 zWS=!!+Qo#sQ3yxP9S~$$i({t~J(FI307+fp!x3Cke#(RePtFmQJz{%VpWwR?b;LKR ze!+V*4#D5RgVw^3updAZ8;vYsAR6=_lvmymnyBFdd~Z{#rhH; z$PeGEg9!YcTRGg=&mc`YnYEYNm%xNO9FN01PE3u&-~lFY{Y7Tl@Q<=hC_Y&{+&!?S z|MY}eD?kskN3am4nWUNHXuxGZjF8Y=AE{i|{7Dmqep!b!km6w1auviZ9o}$;O#fj& zOVng+C&irJ_Wj`_@6gR5!0-j(x+fSi!d5YDeb;atQi(%HwXOdOs~h`?8BtNV`MTvH z+L%%e#$zmP|3y*!0Ld6nVchHXq5FRso7U#+to&lMJ=rIzOH;>pE?FOWstPx(`_Z$t z)SI5N^pHmyouVVX(-CQRU5~C)aT{H!A(Ljca)q)U^3sr>Mtk_sW=b(p1Fo-YgW!uv z0rMS9zBoLR3U8&y7INdTK$x61XJ+MoWcQVneE!uX@n~ak!y2u!r)E9j#so_+SJN}! z4+xb>`fahVlJ%8LyIWrn($hsi990s**4RP5#)Ku_1WnaYF32t^HlirXSz=yH0zAk( zrB}xi)RT8}j!I;D))@yqgaE6GMxkFHc`!Jrygh;mYQtY%M2rUyfkA`Y7b>WIHlt7& zp5Tl8BwkNk-|nxn=TR%Mb}sNjbK3sf#jvOn_=il0A4ex8R<^SiX&O0;7bl{(C9)<< z=JNeNFAxF@9e-?_n%-pVRr92{ZZ;~(niyH^0M5(G{`}Imf6A(j!;84|*|b(#_C&E^ zs$^p97+5tStY3+q<51sBvWVz}EzKc1D2bM-K7RV@pkt0NuRxj)9a)IjV?JVV379#I zU;~+XRN=nRg9D}%vOl+#I5rb0>pd0mwCVgO-b>138w9Wesl}YVX+}Q`+#U1GtHv=dhb3H!N&kv8yh(zy?Rd0 zL%WoHXe!J~3&N6as%-#-(BMSm`a7FX|y;uW=suNo;P>-I%xX$Bn*^hcNw{bghX z1lUb)v|42#{4F~ZUm=%WJ)SX01$q-$Tcnq}`i7W|PlymXo_#2Z7j?iULuJ z_rHGTer6(~M;3uH;-;77)d$-OEMd=C)JMo{ z(HP4RTpVGX#r7J<_FIZBcVt;nRDI+|E2_CI8Hkeo}i9?9SX=i%po- zydBq$UGWn6Xb@AyKRM#i2XvlB%kx`pM<4{YqA%Apr+Y&Qlq9auj+ zVRT>MIP0R%mXM^HC~>9J?#2~+c~I`_5`0TZ^Fcw&qy&_Nm9r!M)&9MO{r90ibu*{9 zRB_MOH2}eI1EdQz8QVT@Gck@x^pfQtf7h61qJv2uZzG-If2{`mcNStxwB=%s@3kGU z#`G!4YUH!n#yM*x9u<(Ly=GABaK#u(=VN}odOUU|kmGj$2uV1<$>q)qcm(u8@@;Go z+>L*4t7+#}V#)>UmyKg#C!G@M)8T~=Upz?sn~$DIUw!^m%!c@nJgdR#8ygJGOZNQ( zBORTyX3Z$TU(wN;BDKVRO6U5a=b~P*Qk&`l27pb_v;I)eu(7|HjTqzJJ!p3oHi&WmVJVlNiKxS1fHJ0LS28Xj51 zWez2ilo|**9&j?~XR9YJtsjsZf;@^}PYQpB=HVqy$q~l^B8WZydo?vlQq|17?~1K7 zb$oDYV8G}d^&7g0Df8&1sx7vcz`_}$uzeHG6`Gd=-J`NF)DJ!yr(KRIJ007oLm@cA!haZR4=1Bvq0U{LNd&klc|C z;uLMh@^z0eB89GXkaFQy7kM6`in9yFs>`*{uq!?=gInK&q@1wuy>&x?CW)fza(a!z z_dYWwF}Gj^U7torUYikmmF^Q120okwnlx1}q`stkyYJv==Y}8}kf7aqYPaV0rBq{I zycsVE!sAb!>s`93PfU`~Fkqlq^n~x>Zg!7bB}UQM8+(0NT39J$JQZy=0_S_xK}w$c zwFxsbMwyjCxjp7g<)jIla0DIfk~7(YD`<`Z`gGE@{Co=i--fgXx}b)JZ9;swJ^$%j z+RJjsjU$NUqblbW`QyqAdjI3F{;Fs}$o8|rFf;^X1n!?giIUyiDqLLUubhzL-MR>+q?bPxhzm>KU2k~!0xD;~@Jyg=4h4w(a1aq!P*^mkuM@l<4{usy3^*J)(J7mD20YS@$FCnC3AGBNayB%nz5TFtL)A24H9_3y+bMqXd9pMDI)zsS zyCkQSePNcveqT1OJ`>Of`|K1s#gI;Amr7dBy>zmDoo%e-$&g1J)>H92`TAd6^#Zg` z*?Rc6OH7waQ`qZKl@rw(K5+1REFPb9zqB9{A1qsu&s&gQe`(^Vnh(|0`5|yD9j8d8 z*2V$m=gl=PCwR+#YM@m4w0d&TLpGif;%4^w;)UJI;{i{I2Dvj4Ysg#-ZPgd8b_=G& zFsKn4MceWYw&~rZH!r3o`-(ExMWXT)2QmW6+6?}LW$!0OuR|pkz?j?EN>bHydxJ&r z-Ap|!n8}}=i*cv=?GO&?V`!GvFEyOfr}ihyfOt-bqLj4RZ4>s!cfDRCGS=w;9=@j$bO@fdp1cExK9+IFB?v#$u~6cBtw|e-W!{SlInKs zL}(rrC{}D0%~i=L#)B{771j=t{MD?Ed#sPQVDIJ1Xs9ZrnQm?h^qZ%*+%b z=Ku{#-`z^76%K3;2-zB%#k!vujk*O=$VsUp*R_hrL>7-!9{PO1ajWY$;X0%lK>}R0 zqR={TL1UyWEW#R_RrI&_m`>El0-q)&08&sf6p+NDEEtu_Vxk`z2Lqr82y|!%@{7ar zut;;uF2X0Mr@s2k8O$aV;(;iP8en{Dt~zIf`bb^v7n46+a+2?(8O2j@woWPVfZ!&t z6|qCwph~2ebO!3`(~>I=V{A1*KiSi zj-uOq0a}0|dW8ZP8x558`^5*QtI!!_*V=xzRKWAYJ?lf~uI_*5jg5&B#R}3)adtV& z^OQN2dQvd8BFX23%R9tkl4DGi@4w0XlR1&lJKhIhUf2Eu#W=*>`WAAFAs|)&O7A@- zJ2@rpc34S2@2gLDv5Gbrdh5)QbtdyUlU)4}^=o=i=q{mXJGP)7}^&$SZ2`2v;J=i>nMfp4~tqH`QTzp=lCAdmgsgsfa7?I;R*U&}D z@tkdRq7dp$Ey*Uy);axGC8y}*3;(O!2t3?A)S_x6M4(G@c)(>@<^wa;Ors9`D@N(J zX#KAz>f8Ga5jZV7iPaRTEt(uUwr?e$LtN2#_+S8`6&}@OU%#}4^S`^-Qu)*ZKC2!N zjLBNFkflbqT)XmVGu02Es+Bv>UjHI2V?Typekb!ZfX@NhO>r8$w`<5 zEO{t=C@hTrgT1Z1+MdalV3U-YUneS7?@>R)3&VZ>CBkUX)zc6F#x)iq<+!Ti_GA`0 zTiTe~WPCdJ*N^n?s|%gcCbJ|$d1L2>b@up*d|H-g58_!+F=_$;h(kb()*aSU9BRpY zAx40|ModFLixtH{NsTxi9Z8{j+~C-UjsyY8-QB-SJpGr7ZsmiWb)>AV^^-`J-~Fhd zYBYRofZuD8OB2L8A*1Y)AvB)&;*;n$e0)uDRUJjdR-2TCTfe`1ZT;LQla815D}LT9 ktVy_7Ab{HcvAW#vNaXjOT`0r?6R{qbI#OG?9$}68AMk0szp4MmE8geoE^O(`OVB2C30 zD9sWSDGCx0X#%-?zjMBG&mZ@>d7eDkd-lwlS!>U%WWVpk%;KDuw)-ex6tD*X>@I!% z_A2aPi#)wD_i`{{<5SJ>%cPCZ^{QQ~v$M0m_kN2#{D>OZi+R{q*cCsiT3BqS}W(_&o8vU>i~{3zgJ$q33QY1TobCD{(jDU z_pQ>=(UHQ_m6MYb`6tW2OMv_D)PDDMD|N2!&$%%7{@wq3MEmoD_EM0xNdeqjrLIl< znLbaW9f{UXT^n6heDMCu*6ueAD-mVwzZCD3INZ*xpN64H2x);QG@r!*M_r#gKH7(C zpZ|M&Z20KCL{8Jm$x;5BZ`kUxzQv8b)wbiq-;diH-Q65_=e$N&w%>gF`DlL4%+~hr z-rCo%Umup=ycQAO`=I#l+@{XMsrxf48~Hl7CzcL>f3|ROAAM3g`*V9ZA?#;lbrnn7y2;c9cGlRJ#t=p^<(dQwUx82Y9DHfa*Ohg zj*kzv-o_3rta=(hX?IQ^`P|q4^i@%a9s}r8pUmy51wz9oFq}HW1L8@}(`-&6X!6#Zg- z|JT^u`tQRX${N<=_~<~lX?ky|`1b3s+a$GK%0`W*-09-&&ddxiZ|w}d-2XMc_m$8* zw|4Yvqhxk-cNV+5+PYbBZ@XV>=I8d|?@uSkN56^;_hx6mY1yneIPOnr+$C1-yc}Nq z`HR-hOglc>tR(Jl3?ET{DRr(KP-1@f4`>;mJD|kvzJI?s8ra-GJfdzME++meEnU*J z`&D9EUS0L)8|Bwsi|>XGm9;gG8>{s#tQW^ZKCCWm6zH}*tlfU0BH!`-aGgS<(L`yC z=S?qOFgC=PswkqsKmY)6Dsr;HAWhsO+)qDs4We=Go`K#GNDpsc|6o0_&1Wyfkp5nJ zVvg!IC>xxyx1YaxY?$|j*z*@XV*@?4y~GUkk-E`3(LuN%?+ABfbkMcnaGhv9F?X*J z4{x2*Xc=p$8EL2(YAY+7 z8fj~vQ$43*sHUc=t!=8Jrt+_?MR0h8d$6bXzrOuXegC(u;s4iG$2iQ}Jt8FRVo1of zf3pDN7ZMQ??iYeXs+{H{QrgDd(?9qhiOfHD>Axmz;vME6>FsqcEF=i|pJmqZ|9^y_ zrmCT;t)Z!=;DgdsS5WiO^it4PQ}t5t_R!EoX=r(PYI|60EPO4C!x=`?Wv zMx*1Ss;=hluA-^nq2;Ne;H9pnp`eXY)>hC|S5sG3_Hg%9Q`HnxIt@|jpUnARne?yd zG(G=0{GYlwJ^7!?@(w;Nr?Aty0n$!)gTIFd`+K{8c7AVfQ8#~WtpEJ6wz{(Xed*iR zMaq}YpFS?k&&|$!ct1V$Zj$_V;?3(<<71;E!!L&h2l`1b`kwbb>*?<5eEOuLy{)z7 z@uTLZhm8*!?$_7V)>Ky!EALg5m)$KbDK5HGSdgDbxP9wpZccVqW=48iYD#hv{zhU# zd|YfybX4T^i14sbTu5-xwZH&>KVKhjFHaA5?A0r7t}f1(og6PYT)bd!hp|0xV{K(= zVQzNL)Wq1x5N)8Zr+ZdMTT4?zT}@R*8KtDCATK8?BP}HempQzu0Ut+OYesG(jk5(U+G@uNq%SnOj>1bbrH&?a z1EA0%T%x*pq4QC#jKGSrMeXAwHR5bea^<7S(o@o;ZQ6$1J$32tG8HjTE1qra z{3txQSz`O5@A!a?viR+exko*G6sRQ}0AM%cj+J<@BIvPU<6Cic?||z|DyRMK`}iXS z2fdPo?ve%FQiTRGl&zdQNeX_8E>nf^b9xz^W!&*<7S{*AnwvvjUrUTc^6$^!6BD?E zvt^Q(taHScxIGgzHP&ix7E2G1Z-}0B@nlJ)M`81XMB6DjQ-+ye3cQN=M3n7i=`61} zW%J$(7^)bNFq7|rd-AE=Lf4eW7g^+9f=d9e1aKEcjok{ra?v+mCle!-5VtEMQ(7vs za~1!9OLML$>&lWuOK~kJS$GhG64Ck@n+kPS z$G`okHg1$X5Z6iqsdP}bMvympm01Eu&yGCjbc`M|R4l|88H6&?nTus3l2$Pm_?9&f3VL-YXDHs@bwn_zDam+50Z-YPvfTqGPfMYXcScm?Th0lDPv@z4`|(eQ79JX zv2GAeIf;55o%=k?M}&n({AP5w2vA8=$z*8DN5uuUDs=Yw^Dp&`Mr=qlNsQAFZUi?% z5U?qUu5UrSB)}fs4C^LWFf$Z`|8~tx<8wDDQWBLTCMNn~AGoPjSY>zvY1G}*Ph<%q z^@Hw0^*-Fe0-52-h-@T~K7yE`pGpGKQt(MX4+4`l=nNUTu_=&MMV7MY%S$K98lSb( zEH`srKUVwBgPCR(C6X!&)+6D9TAMeT2T2SqBX}s92&NOq!V;x{a6}&Pg0Tm?Ap#^= z{)XL~!(1>dBcn~cpF?8$>m6}5zQkH!F!SO^UUyW6dh|8OF}g;$?!!5);jIFLQ~dI%=wjPM>Z6B#d~hr>*+(Y^^V^=u`<4`I=$JuX5^jfS#d2P7rQy-r8krNI z7!yf~b;fgVjo$rnr=g!hPDiKc)n%{ zFi+*z7OZ@+#On$EK-~&wT4P;<59P;(Woqo-hjjTSv8!R(qT!2y*GfmjoTZf#W6F%3 zokV@!Q~_7$JkXVv$hR=?~yuo5!&;XI*~lV?nm7{j8Y_z;FC^-N$%r zxNiXe9#=q6VvMokJ>P7ySZXth0>(K0aI^o4?A7~d$UXkoWtTe=$~%EeXMXs(fBq69 z2B$!mint6vX>Kb{coUWAt9@YlAQWC9W)y8{LF@}F2z!DKjN4BUb|pRiDY1?S_<5Uw z_h8gqzs*2{iWhwic)r%W0cmRiBj>kbr7*!7gN+`e9a`pjPF0K=PS~^#LVoqLR$*oI zIFyQ^fec8=F;%@Ttgo?f0d$+e?&}r(zcFuP6G;Uzfu9+7D31)}K`fRJK90*?47=B5 z72rq8aeui;Jf1ZXbS3$x2m-FgBZLAj@3{$?b-|Y31XcJ_0TQ%>_bt2a`LJV0)*F_lbz(_*qd3MnF@e@Wv~1g?2-t5&%YZ|UH80YES})kpfM zWTIWjC{GUYGpwxatr>Sjg$OcTWT&N1@Fo`GhzH}u;C9h1Lr|9}5Cew9nNKp7e7XQq zzh6{nzQ4%Q0a*IfHb1&@t7}M9KjqVhr?3clBd_-It4!;fc9{6@3`Yqmj)#BmfN6CA zMO3!6hAI-Smugfcq#vBM@NxOvqy4KQIAGLFE0BrORbwdp(poZNN^y3G;XE!yYp9=H zqSzVS_9@JMz!l`=w}0)o^{=wHgs&&$?usgEus90;P{JvRdHp7_*7F^w%88j^FqxI1 z{0&{S`Qb2cug}97J0?EL2I30&&tn1ouUxZ$*f%+$B6lku%2Bn7^DEY_mLap{T2ifP zi^+vhPMji7GF>FqGsF0Z+F%wBi8uks=T5JmG+z6tUa*shbKgzYU1eTBhJRX|-83jU zfTUygrv<)z%=&V`agJeU?GA-aCaj;?5|?t7(d2M?r9zyWv^O0fK#!BWMr+QAKiaNb z7+v*_l0Nfr7^3T}UHoh0SCr{qefa0!Wx9p}W=bcFuSuf<*u?KVctH$Ui3&*I#w%e$ zS&5LWbCvc&GAkLZ=N0*m zE@3YLs|`w##%hv|=4vs0i}@C;)L zkOSk5>arKP&$s3o0rUk$JH~BCG5KN)%OZ44sbJle8`k>(B@!^|5?-B@sZ7bl?}8#Q z-q)wCYofAnqXCN2K%Zh8jakn6lE^oa;Blzc`THrcLw3z|F2a~}=~XDA1?*0ML{Q)- z*c`zYFEJ-DWD?`P3H->@ksDk}zhcip&zD7sxa@{DBt~ZiD^ckp zFlDw>x+@` zmHd(KZmWN^AOYw^b`pDU?0^FS#n!IPHow|4W`EVNQgknquT53C?YQT0@NZN4s=JDE7$g~BO95Wp z11S?8YL>OLxICcF0-X_${MLX=*|tK2T7!U0ufKKb6qpf3jYXDY@9yKcaYPBZZ7Sf& zjLv;w)K!u>jJK?n596Rme!47K?FGxtnm1OHfm+9Q@Q}-;h#l&A^s&h-oc*_FplB^5 z^x@r>GI$5B5U|i)%#Q2opZ67C#owbdi=fi^{_v%(>qnDvrvGjLO zWrMRu8*f-|XA()MF*6^!U zU#fQX1SczvOdmz9Ax2c+%&rjkYY5)~2b!bD}JgKXUS%cFS?q%7N{3A%+ ztL?wC+>3E}^01)SoU z06tuFv$L5HiA2M)Udz6oX;ng8Ysob)e3Is#>@b@A{ff6Py$X$3$duQ1Ui3-eQ@}0K zQ2f(O4oYyingb%&??9kjdN$LbDJxxf9JUZ3OufWSuErLE?k;cw&pw&_4GWJ?zhj;3 zZfUP5=&pC|8GnpdVIefb@xfoj)LS={T9_|djiAnn<6#wz$>Hp}K1$Gb)|Mk-9M zyz*}j9w-aNARWGC1^8$OzhHWuw9cAbpT&cPr(HepRH?sO#G?L8oQ!VZZn$ zSg5(=v!*Kk8vXtfj&U7EBCI{P!a#5cE?wR2P;T&{0;rWbS~`J$G7(9c2tz}?s6Y`4 z04elt7zxW;@Le%|yW0dxyLM%@X*9PSfyeMy-PJaxu@#rq+9(s=q{@~sHM`qt44+{7 z?#bMZtFIT_m=vv;wtPN~RDhX0_uaN0uUWs+_4mbtkBDp(s2E^j#8y!$g<&K?Scy}Z zH&e(Xub1-gBPEAoWMIRjX&m#67o|ct{++#^Q`0WMSQ=`Y3;Y;|=tTm&7l&J{H5gG4 zdbhFdBd@6D56JR7K_o0xZ_ZM0COi5=r@E7e;E>6|B~HRHOCFu80w>Ug{7D>ql`wm~ zVxqR`-PqB*oX~*PFfbB5_jChLbnNT%hRmc;5^(qeNgU5ghQ$WH(IiaK`^`vKynC(S z)C8S-lCV%<11%`UGk#hSvMy8%8lZ^5<7w?ayf_HG(EC?!KE4rhim|~@DtrpFnd#Z+ z7s|aOKwbE_5*Tv8n)=+LLGSZ;(C3rpcdIsDi_yS!p_%TRvGdPI^P|4d35{{$KU#hG zLJNAER{ptN4+vqIIqw!<+2s3ucL7PA3(%DcJ$OGkb-KMxrd%84&>xR!o-x$}i&QLH z+PsTfE;X@mG5)aFlYnpNrR*KE$_LKl+X0%SFUcQfqn>|gWA@`hL)9KlM^XsFNJf7O z*y%jj=^nHV1wWxqr^O7{dxFpCOKn*!nckX})gSf$G;4h_o5(#Ex-l6cJd=(A3nKs_ zXmH#u9(H!18Ub2~PmWo8!Jyw+Lwh4}2gA;vE~EP=moE`HPh z)!4!yPXSA?1LX<7ew3zZQriQxYwxjETL1ztz5 z%f0=jK%?4R6_cUB6evVI9;LMj)UJe+a)j%iTWFd9Zwpf&ID*r$JCe7z_0fEzCtUKZ zThfKUmIkQFSnQuif1)e@?0)|9xGE|4Gph=2Ng2IsWS;yaVMn+bXl)DL=;O)#vc1vA zuZ9+>o)}gQ{~falRB!*iJ=cAs{Yy$ndYkzI(v8Z}!f-^~W_}AQ>fe`t3kD6a%23}f z8G)nzvRV+~F*i1c*kSvfK1AF7t1|(DC?Mv_A?emaITacx0%Um$78_uF$okijy-_mm z_=rMJ0Zf(9-u|Vq-#LJ7KM*=JG{-C9fRW_M^7GJi3@`-wL+pLw{&p{Wha(tS9iWn)`4u2 zds*(@Z1kDokplOZcbljl5*a++dbsMO3sSb+x=Xjn_~eFnY^Hx?zpsD;jK%PcERwFg zUmdcYpNtc662?pfPYK&wY~Ru{bb`VMK3SaE#E`G63o0jRNqJ#c zx3#uuULViAxOA(35tywB#F8n%;!3w?RqE7*oMPJ??jmQ~`+fXd^s_ux@`TXA+>MW2 zFAjf(4IUNCgrHD(wkj>=I#kgOVVfT9+>5^GoxuyAXg3}pFO!nl+uAeb_$(VXTB$>a zV`gjLbkqGXg{unTO9$dW1IYvAU;j4{h#W) zl14;c9koIb(qpE^XNm=~D{IWHlEz$jQo<~C?IH{bz^l{tXZU*72P&0>c2={6s#Iy= zlOi$z(ZODVj%9~d0e^o7H_8c^!tr~jL&xHp7SKxJuMEM8;jrZE!x0apzpnC_SHvay z;;x6rHK}bEW%@o7Q{@=Baf=r`9)vIEK`xm$O(%A_Am1y##y&Y`;$8P=o?UtlWA9q# z5XG|$%-F_hefsy!ioOtsQ@4Kc@=7oioDNfb*) z*`jW1aZDBoCL%`BOonfNExlUdr&XK8Ej>UqC@7F*VznToX}@Z6g^DhhKJ=kslb{6j zq5%IpYL&vhnEHMgw_mg;Jzu&!FvI;$WE_gaaxpx~&f*C?#jg3$JcxA75FNyrPA_>LqAjA2@V&JTPF>&2q| zICBIyVkmViQ0g_riq3A%yYZ~=v^(Owllul)VfJnGDtAl&=8LJ|UW%DzYr^4xb>?80 zcLHteH^^#MFz`iz0=fD@h1!jPKJVgtvAc}nhBb-g&4dqclSa<(^W5?6OJW!PwL-U8 zs^rmDV6rqHg>LL3`6>t2eH?okRTha zJ7(CCxIf{uRAD$Nu`Ac=)xuS9*R%o1J;)903Sbcyg5`bbh#98x)vT$cB&HodpdiNn4y@G#EFUul!6FN|=9YxL@hJv~@iQ6kQkWk< z?Q=MdQNzD0+eKwm2!B6L}d0J}_0LasPJ1)YJ*jbiL-kW9IBb z#5<}W-$(^b-Zk!Z)p$a$WK)E_jU*YW%3T2QP5Uq;szV4e-Lrx#}v{yj5zAA62RUm5q6$rdJV5ufv-9)j8rGjQ;F@l z0sK=v7jC##G3Lg+2JN)i@_XYEDw+9io3bBTEt_af33a5aa_#oE8meIb^$}*_8mD2M z-Bu4h>5Fggp1alYgHh9o#G`^umuZRs%KU-xh{-tbS{OCOK40=OZXAY`_dBF!8wT#J zT^K>g0$WXFgM%Cy>X+5qTxA29xcFZp#3^T#QO1FfF?KOeWx=r}%p2u_XG=BS*L=*a z(hZGGzvNbR_SsP~lSgzKEEPaU&{FzCfXsbvo9TIaZ8cDtoR@J}!}`4!bWWN4@#OsZ zPJp79OYz2RD8)2Q+#sr)bXOUk#Nj79wv z5xJ?U4#i-Bgp$@f_Z{n2)A1$wpHvjQW8BIaKm$JY_vr5y`RH(uCdoyxCGlq(8<<%m zNVTe}V4Q%qTqAlC44L?a}V4VK(ua)CLeqj{FunZa2b@z*C_3`Q{(BMPidSO_D8hzIqDw!LwB?Nv#VR zFhNuZuw-A|m?-e$cyWF%gu|pkK!EMq=Ht1Ab0J;cuMy^{aW`H{?k%MA{hE^*g8cYg z>A29`5%W-B2<|WOT!1hhHxoQJd+#^RKzwl%I(wF4aki^x?)Y}%+4#k$IgwpK1VVh- zvw05N`Dd*OTd5HO3%6&rMhY%v<2L^yqj{rO`+~OTyYY-RLxy9_iBQGzB*ay+#_PA< zAR_D&owzwkYyuA!#3do;Zczd0d7Kh9Ui&OAT4-jea@r%OmI zx%E63(b#Q0&^K=3lm7LFtHBhP2#FcK(6?5+qPu88{vA1!@Vi3lc;s`vx1D74;*=^j@JbY?Dh{wK;ftbXC z@u(*pR*+;TlbJL*P@rY4q7;~P{QIv<3mjI^uCl9PT`k{y&OfmYn5IxuLyD&Gdd3J3 zt%+}S7UW4{|If|=Go<8&d%R1xGWf8XQGL{!U#k_h5<6N#YJV^+>KjHh0?s!wok{(d zIiAXaniT2fDO9;fp2G3luCWfK3@&bG$aNr6xrKERpM35)_!c_{>n@Inzqi0cFrUYE z&|E(iN=W7_p(yZG4q@I4%oxso05pG93d4TSBupgno_Mv0@yRi40A$WvT^gmDw&x6M z9n&Zi_<1bu5!}?R;S3YF*ZD4k{bOXUlll(U!=Plf*j!SvFZ!x@9`)<2XPw&47h~io z;Uyi}q08AhGS4xkK+d}*g$_emUWVX?FW)Oz+bEO@FbcwexgCwFE5%%6V=ASx$-Wj2 zzPp}t;vBi(h3xciLHn5mL3d4UH#X+(Mz_#k7Py)c3FCk{Q)$rTYFWv5Uvu)jRO&JebIZj=M&a`809ee%^$RdPbAh6&M0nL5q%6yj zRk3?f4tIk`zi+$MqN`Ej zyoDGUxK^e+v5dp%FFzeUT-&8>KBkP{&N&k*C1mTT`o&?l`YIKoye`^A1k=9(*=pBO&{5j!7>+R*THa9%I}C+NHYz0etDUKgN^ zmlfizLB&V+?LhrdQk3hI!~GAeace^x;G&e;J#cM7-`+Vvt?ejEO6Ljdkc(2rDY)Ez zy!_N4qB@S*ozOf*y!Lmh6sFfPJhkjhd1|=!T9XDa7u=sD-Td7htiGOc6`*0AlOfg5 z3c9{+yE$IOue-zNiidEn@1c>H*KbjSraP~$_89Q#PNGAyxPlXmN~m`x*a=A#2|qod z=#K{L%1VeV`DlJohW5|)N$fZ#7XPSGxNd?PXV4$_* z4LDKihJ3<)x1x&giNEz$o?B!w9Y|8SyQLts4o8R}heR7GH$z@ylN$bXHk#IDp=3ol z{VzU9yr>-N^l@Q(z6hv{UWEB2kyskBZ2n1JxxTrztjAmU0~-n`9hEAyMB#P>hC=yL zYoxzr_Jh8M++Z|k!}0%-Xh2Uwd>W@gJGhr2&66>rqGOODB=p{$R*8Y1q7o}nNmc=; zbRiPVr+?a#p!K_Sm;mnAVIRWWvWEz)Q^5MXMnfnF0<@Yh6$~{^()GxGbr~S)0WfdP zeH62uvl5=Wdi(JoTz;E7r6dMf-ouA95_h!gD_>uz{DnFh|%7e4K{FCk>F)Z+Z%5odBSL=-xD-Q}3{ z?qT6&Q3zbF_w&i_T~jqT7b(og0)`#5?oJi&V7?>5iRP9bv)Q|Wr|yEZVBA5y+h@AvCNWaH1ux)U_sI#}q*s7B@58&8wK zz-TaYs$deFnj&)U7J&I3m0q}dB4pfK(dg;CM;f~6z7yLuD0^q;zTx|tKMx26NBza^_NkCXQpBh;njmXms$Y*qI8IC>X%BkudMJ2f6eK zjvd>9jfv$H=w5%Gy4zA}O&RP64KzsB1Bthz5t}Elw+Z^2XhH&lh#7k6r~n84*zH%w z#Il_I{h?6x0$B0BVXGY;^!#cCl%K4_d=4G0xuPc8aB1i*%sujnnae!?Rm1g(j)g9z zio0TV8=XQe42gs?k!6-%=uYtUyRdsAGQ5Ti_M6Mrs5CeT+xzx!ZfNR|AzA2l@b~X5 zhTv}I!HJ9QuG(AB2WH4cr_vFvAi--*M)}z{bv4GAtqZQV4xs0HBLANE4smACjUT z_U*p0mx zjuPaG4o-1Q;nPZ!rp61w!G!=&BVFou`{V?1J{3IhS6Zrtlda3}c|j^bnhFI1z=@sy zm!)Dalq4MyZamNg#gjn_SbEn6ltf9K(^jYo4lHJtZp8zJOhYtVGOwZ_Av8RY2>>1$ z@qYjV^J6mXN0XvTQe*(&2RJB_%oo$?4unU4Rt$MGGF?OkVH^71HLE!$i0_ z=ai#K262*d`bv@<_H(X}CY=F*dx%`6X}PM&;380_zJwFG!49u{^8yY$({S^!;idur zR7ha#;k{LCo^dxit%tx!?7FpXE~1EpGxz5@+Tm4@PHuREW@*mM5}+gYW^C7O;RiQ4 z0if>8l=2c#_5Cb?=v#$kP+u}|q>CUcMz4VbaRY9%t(h^>(7*%~gwMiFASv?%cl%&J z&qOB2ikKwP9eac?)ESKpLDT>JV1s&qQl!Eilv5Flx!Q9uH!PGdMp(He&-iko*JV&) zOODWNj?Gx?8GH^B1Ckbjuso*hFq5tU<6oKK#fFX!yOgAcgENysEJ?tc(YudQVENcPPv~#+ zqRu|eDx3D_WyaG1Y;6i-kcg}{g|Q0HUgMHjrc zsDOU}FeAYlWN0}N7%c5^qAiFcL(P%kp;S;R_4iomoy(QX zNI$VTfEAvhfkb~D1H+ME4J~wgYd1B;;F1L5-S40xB)o;MVoJM8KRKM{Cg_4LHk~Q;ARqPi)f}H?;XRd-yjB{umV;Ytb2{#R> zRagc=O1QXWOSmj+3PM40ST06#jlMI8`NL&7TwRF_JReWIGViL0E1$F|lfr-`@O2?` zmy;Rl@-s^HW2+|V%lvy9xM|3kV|?jt0DT?yepDm&Hi{49T#xv1AE(VX*?$$0t#=LY~@SW9=k2Ik?@*oRfI4ZGdN9+tpOi!zbZ2O%VV9Re1L ze$dhrkW^GEN^a_z2bA(P$M;}3G0h(WngxAj#0r~6{q9U2HupN$`!f{hy8~xpAI;9+ ze?8m`m?cse9&N>N^(8+NUCUKL zt(3sDXd&9yBZ7XZLpav%@KIsNj~Pip5;Ko7=? z{=vhZ&BM++agRi?rUM0edrr33%Yd4s0zM*41^Kim&}iK6DLMOT!A#G4o!%!A5I0P! zi-wgejqzqG5?s&y{N2K{zQ4_+oadax=j*jyDkO+<8Swo)E3O#$&82TSP>(kM%(==rNSFeCDk524F#A=|a(@n1&MeDbsR0xdrUx{BkV_?_oBqaSPYIqw$$kd8g9 z*VOCqJ=0}NMX)m~0@OY*DCu=))vCXnr{mhsr+io_FAo1_i8X=H;fU|#MGl;IRb&%iTd>cf|6LRWJJWaCSLuFd|{u-{hg>aQT8XyEOZ!H9JoiTDvJ zO|~pH{!vj9IF341T&nvr+>05zasT_9hNv8=>;)aKdP;pEuF-9C+j zhT!Z++(fRY{tg7}Xv2{~Tfl%Qq3zxL_~gO(PEVaj{Htb9(3=OZD6+~4cOTqzZj85V zoai-jwS3)~R!gA5dym@ZvP*peW!T$`-(-W6vGn(?-$*WjEEwpMk?`AiaKqoG-rhz6 zl0KBuW$*rK+4X!h1yqNmCjjV6@bvju`j7NB~4p0xk{fp%6--iFw^nWs#;%WLHB&UOne4WZ@ zEW5uj+UhyNjMTmq-CyN3#>207+VuZUB!kHbX-*(l`DBzjDB>Dgs=P;dSR>KW?uLYc z8ip7N!||P~j}E_Xis<0PJ(sCdASgvLwKK$b;$u~T z?>vJb(Y&RfVmDQf*G)Q%yZ8>2ap6odKy-+ln(MC@Oe!;E^LDO0l2vZj@xI9Y$Yw?mYa#m#m@FAJI5fQ8~X`1=`X0FjdvmGWJO9 z81ZfKwZA_a8PKyF`|RaT6Hles5I$zrshNplN+#!4M+M+fFL-(EDZ z@cNpSdB!K-JkGWvS_ICBbk7X^(EJ|j|2YXJ3=4L0D!x7IZ{`UzvGn84XD{p&cU0e@ zdKr|A7H0w+J^UM_?hTna$zZBxS>Y;P%D@{89(#gO>}bFHm-*I_K+a`{*#5eb09nyA z)glQYy7n3P#~)~~s}{TJ8W8lNZ%@JWc zg~9i5R$6W5Yt@-}RUV!p{GR2{r;Lsfdx%+A|ERyK_HVf@F%Z}&L(Ei?5{A*E&JyA|Cyv8jv|)iE4oQ zjCXrBdOvvtC)n4SWACDMwpgj%ftQ!cu0j>@5NWLzn1ar$zdk5%lM^9%{I?nO9vS~f z&6MrnEQ93GbyY!eBzWmzNtzD&*^SwnYhZi!1KngE&r*oQcnyUva&%C*XBEg_p2|d% zN0-(6$)wWL&vfBak|0_GH{>iP=n`j=g#7Mb^EDZ>Kya9aRN7M=Svd(tWDL!@fatB8b8YZ6ymYy%Y5Ja{ZT@{K@ga_-_a4BXx3!aeY- zHQxm6*+V5XgPCug_b;sZv8tn+IFX<@hUXV?_wSZ<5^3O zV&-0oYU>UO;^Pl<8Bb#J+9$yTNfVL$#w;?w&9{fTjIW-sm!RYEh%6_XK&|v^SZSBI zq=@p!kUSotyejTUfEh68L>Tz&WGwa_yj*qzRQ$Mh|D5KyUF3LG^{B;Xrcv{EB1Y_V z+)igMNUvqpVZ)HgROamSEdWJbbk(SPgL$iwy~tg=82Ybx!Q9EoYVJEsZiTsuYjab_ z@|zHk77=L6vMr)70(nM$^&&S4;=g>cwr$=2LQ)S~75|?m0n;D(4VMjLuOJe+qS5>^ zEr8u42tx7s4+Gxs5@BN$#w!Yyii0}mxU7kJnSU0y$47u?iGNyIFh7kRUbZ1%eIt;V z2Uns}GBWgjL+Ou4br}QSzT=O~@G-IS6wSG$A}^gi-E__TYtP$NTF@o^WUZuxUnxK) zSHrt08&&=puLdh8-nKTWH+o%`m?bQ2wP9Kf4MG-B>^eUllZ1lwG6LtnNgm}8SordWcz47kSyR8 zRqVm_@B+`XJjHy`L4haWWvWDu8a4|mW|<-n-KwE6aMWp_aM|>pVrF`&4_S&rv^>`@ z>~BppnL6Arx*3qkAB_Zr5DiPtAb^R~n%8VZLwro*Y5nuo1Ddz^q&9)e8qnnkFQe8eymAGAWQ-x99a8;nd+(>WVl;Hp>(P_uf-lDbE(`xbeelb;+kYugv%OQ)C)vi6LJdI0&Kn z<)P~4R5*hd5-Q9S%gkgKQB&{{=CiC`YI_SOOa()Z5PR^6*C0dPBazF+U6gK?5MXWa z=j3ROY%k(U$6J*4E%hE9^_B?!5&?*GOZ+E)BCvM~OGk{_QDIHK-fUIAOs$W88Quqa z?8ejL$J1k3{dE56t9jr<3atOYojMUn+K#v#yK<11%vMX>zm<5#C=+|woMQCZ{q|r( z)UPY+!&i2NV)7D0UY|ELE8+;j$IgBedVLwNH6qO$kFcaK@N&m_Uj7P-4>A{ z6z|*pVfW2_x}GHn4;HqT>gR=pb5WtUh9i0}1+!7&zVQH;M-n$O;`MRSrwv_1B%spg z1`Vxxz{4id5}JS%JuXJ8FR`}$59WjLxm6U_?UQ(l`3y(Jua6|&s*i=chYOYN1m& zDxZhhw}%m+Y2S8ZE;yy&GC@C!Q&4DnB*xmz?uHvY_3EmZ6cWr!#(Mju3%H;5DuMq8 z`MFD*35;5a!#SlKp^{$y3;o1tNf??ZT$l{cg+-)D$DLbcb;E%h_aPUk(9^$~p-_o^ zm*P=G;GO++t>`Sr5)g{O;0pj9<6#w}>X`q-+Fgb<-9P;QUk3vjJ$k5wlmqF|5z-FEe*WC+sW=!VgaBLyXfbf_Z)1jL~zh;a@P1uQHS4E`VV{C=6_jYp}?BE#B z_v`)mEJuCSOOj-gyi;S1erKO@9FStN|H(d}DD}y>0+VFN|74#^jjWIH=(;d(8;J~c zroFdAf_Fq1kbRgM+3e)puNv8V*@u?>#4+*wVs=ql;$HTl<9g2KxF$e<{z1Mt57s&m>d(DR&d?DTYloLdqi9Ah!pXo24Y?m=35MEM+ z2L0L5UwsA`dE}PKh4K_Hy%8aR(TJIK7^9FZR+)8 zoB8ePuYI6D(Z?^v|CN!K?@Q>7Erjn_F3@}~dRNB+&4-bX!57)0xp4TR&FyOGe>I;R zl&8>+&!6T4O9AH+Xt46id^}2mqwD4mc^2&ylN9LdDmd#9LFL+*)-U=)%L^z>6AXMjkIIAeVCNxY=nb zEK+)jd?F*4;CDolQTy>wO{!a#OgHX)hK+O&C;`;yR_?BdO~{4RT|(EL+!2jG!@Hi~M+mM7bc+(O;#Xrv6(mQ9u3oO3x9*;E@lnw zZL@_b)H)=4<(!|Y%yFn!eBLkdf&Tlr5VYX~;-;^skD(_dxR@>+dxm;)nyGUy>ANa}`N3 zsV7z*qx%n4zV5aaX;+O2i@hBY_7NVv;sRu!NBOr*R7zk0V;q@dVl#bv*@uw8y~-I& z>Tw|T<2FYFen=?(7-!QSG!v!^dmCTa%@T>;zR63pkIy1#8Z+Q;LTG7>_iTrvHW@bB z-L6;&?@$cButX9pdNZ_840~K_Uh&nU{f|yO2s7!9UFrJxLh*sWq znXc>>nexw^ep@rW=FH%1o-&l6^V4znOdY6%sc{kg8LhF~0gUOEE2;-3Nb)F(>z&IU zkoELC@PH$wW>=g1z%d!kzE`e>%g*+yHUin__>=BW&J{_IsrLP#SHH8*E&019FCd=( z$vy^^ZO2_(_OcIiz*hebOjq*%WS_q`ApAcig01dK;OnTwIf19ZH}<>hQQb~Djmr=H za?Y=&i9D&sC|LMz_(}pss^nSQ;PWc+L#dF0syz{eF4`l zeck#`Tl01bH47EDTovZ2F(ks{2MYc(1cmwKA*X!i1CGrH0Z$&92R^8YN9Z!exg-_vWN_;9cM!q6X#)~ z$U~XXgW6M4gr)jG$U*W_Q`ORy>q}QoFV#Q2*W(7ESAx1)m%3sf_f4!-8Cm5Vab>cNi_~!ui@9sBN07^HWjExOF6b0tJu_r5Oq0Ch12z@4;jX*XG(u znOCguqvT9;tpT!O;?%|x%DQXnmWk&olOFLYBhc^~)~;JK*sR;xr_C+J&`4Ei!@k{G zlzPCty5&GcxwYUiKPIi;Z}yHjXQm>~KiK1XLH4^xwvAaO3v`d(XLTua#|amMZNB`N zJ5oAVYy9+rNWYB#Lcn&mfgPrtomfhI-h)L7vWO*#sBKv zR;e?0tKUwn2GsGIeWad%-Te`Ea<%#xM0nGwj4>IJt0$EZIi-rUk7id}Bk_10^1S4| z^w!Hh=ofhLz6>k_E0}OcQ|5UZhY<;GpuX%NK@$J+wJJqQRk=F8r3NXQuJN+(Svp%h z7hm|r6JG?qZw@=&qrk-+jS>#XH?0(C%_doK_piRFK6mQ4&x_+GQB8@cHl{PnB-0YL%z5m6C zU|@4mrOPQ(O_}3{o^_-7VTx>{muV@o8%k*d^$jHhb zyTBNp5J~Nt8|P*q29w%TXNHj?Kc4L1^<6$Ef`z0gA9yXT*VcKsEGb|k2~w%hifVc> zTK3q0*tIbsS9v;xU7_psyTNx?GDn3*XXD@Wy**B*Vk8ThC-*_iSV??_C^K7bl8PSG zQpIpMrCX4X`(44xLnUKje-`5$1|RySW8xkgg?xfPw9mK4 zciGgY;VKOZ8v*t-J}14G%nd#y0sa|qJt*NU!5L-{13@M zK_r1bCs5*LGwW48@e`Wv;*XBZG55toXCzJr z;T+@Fa7+*?loomCH3KXO0wa`(p4corYFD2EtuT%Eg4~W@&Y~6_qz}jLf07&Za3ojd zTZ@FRKlAcSdP-O;P5dys`=n2Vfk^oW3YM4v#}RvHzHla78U^heCnX);f^rx$T;5)L z4in#0JhqcJpSzz0?UWcpAKc*;c}N-}WCWA_<@E*cq#1}Ih7q`LPuL%Q8y|8a!7=zT zf$}hj3PDNk6b&49%CM-HGLHQ0VIpA!gT{3&2l9iSAE;1MpEJ$RXACXxtCrT?SSDpJ zhP;@ur0Och#6yl4B=Ww@H+y54CtL8GU0!qqfjo3AGx)LOeKWikhz*;nW$_9ep2i3( z4vtqNHo`6bhzv#=%ceW1-CKP9(z2)AM)?HXZ*B#2fJJy-&1j`sh@hL5Z5407wQIJ(a#-@vHi%a&>k_BHMC--fPgT<@xrI znod3Jm8ns2PcTM+v;h@k%r{u#+l@KoZN5w`pwqw@+ouvj$)rSPJgt8EjVyLwVyF1( zK56$(Ht|zdotNr45M;WZet7@&J~q7$`?YwS4&8whwbf0}4*bjMI|aR~Q-eHa6@bLO zCQfc0h%QiNUy_fOoH)+n=${l3VrEd4hAEt=Drw(^w8Z=TWTca0pxfEU^MVmy2mihx z8&ERkpg@do!(#PMbxw4(#XTVOnNBZ;g#nFSpRZz;VJ3TBlNWPu27M30 zD$&OgSSvtefcPtkIQ|wHDD-0~7BBV-M^5U;F_PiaOMu9583~9Ci>OC!mY@6sO8H0G z+?qv*o#HN&@tE-dD&$}$XHba$Gc!5X>n+M|_r~Gp$s$IiPqF19FZ%8Tv`1 z-N1(o-<;Vv#j`zZ_U;38Y%>w^uDEjP(=#?Qd1}t*Hp&Kn>6s-F4D3W z^+3RCC{{k_yX~vq#(jM}{N(5cRME;`OpO9w>G{}y1ZCu#@d)nXIE+3=O%ySSe=6Y* zYFfWO9&HZ7%+LB$9p1jr_kS!7-uxTn;cs$8)8$u@LdGk!; z0~Zwc;&A-c*ucw!KiBzC-=K8*Y_ay$s~VRuW8a69horg6)z`jo?L)F^cZq)s;2`(^ zp8a;p;56%`x=P%8WGTzGrAu&tr7)vXp@r{!M)tbr8`(t*L5{$k})22h83m@B_Y6pGtW~H)e>`wCGM&diHh!Q`rh20C< z;!zV8bYF_h9YOh7Ou6$F=0>+f0uTe)`vY*JpJBiOGxH$hq=5U{-q`3r5ChHp2~W%( z#6Sr}O2zAqgUu%r!i~J|7$f28rhvo1<&(JQFfiS=)K9)t6X?88p7eqo>kaP%90r!I zyP-PZFhCt*xPLng$Hrq+@ySZWWD~$)V7loTn))szt7&+DmIf;z&3^1I@C2Yj3d5jz zVa9w&ik_im2;5POp78F~zaR!istCbt%>l~qn5H&n2|x^KrD=a4hR{Ut!7v>5vSx~b z#{GI&8E@(y#6TcdMR)@c17ggw<`2ZchY^`z^@ivVm<6=m_$F1vU=L8>7cUv@aC2 zZ$VBHkx|>QlPqM;-l2E~W)h4ki`ggvw@D(5lJgJKGESC&U=g{~%1O zIIET4Q+B)TtW)u?w7AGMPdiC#d(e5Vv_iE>urnUKbvaYW%>?TP(*WgG&x71H9WqJ+ zjo0(u36y*JmYkRX3sT_r4VG{_xB$IeaT_G^Mf0Q+S0wEu=EFr?v-;MSSLJ%poOfjk z;4th`9RyjGSzjUMWkj!eOF!>w)+AVN!Ex1xOAUO4hbyY@wmBXTOCf--uUDn|{w302 zfVCp=;FGg1$9+~e6;;hp(uiqJ3sl{NWy$z)-Nv4xB9v9R%*bW7hoI-^c4NNY)@xuZ ze4=LPX-6tJdp%49RKR}4KxHvCPaso1BT$3|URNy>aN`m3yTlm`3+FN13PT=Mt2N?J zhFz`}JxfH*Cmm*#pPT^m`=o_4Qw6DDRaz02S!ufi-RcGD`fx>35nf9$;uN;0tje+z zqJV`7n|e!@)O7>RoP~(hM8i|z?;ZusA`86>LE~i&Q4z$LjQU?zP%A4~!md#PZyqd? z3G<3-j3ic|Ngz|<}O(+t87%26^ zjEt-$&cQXTA(c?DbX8~xhONVT;ENjn5DetFUt6_mUDXa7S60iwq6oOU)@1=^%d9iB zZJ^=Xsn(WLR~^Y$-+#dxVw-Q6HFwNoZRnuwM}H|3&^%brUyX6Jasw;@nmEw9xL7S! za)o^-qfRIiY1nGL;n()4aD|O)wH&E~MHQNH1wCq;hCw(sVPd57hp|wKU;8(*=vv^X$JR zn4$yl3yhe>(psyf{F}GS_xOcP$9_Mq^{E=#v~I2WfN5EE(HO@bzd)pU&sW9|II_ntFbw&Vd93`kx~!R)v;F?1@6?lbF)2nmZW*&^!8-akMsD^>x)r$d znki9kn?@B*vHvBYHuB4Az$3EQV5@d%=FZ)By3?qT5)@qN(u304Fw zan!BsY_G*0yg<3Tuk|h~+AW!V?x+;wC;%_enDTe-c@oN>xy)j(+lB0IfzUDtcow)K z8u-)IcyM`ytaAjA7baY9b;P(G3B1Spo(;$g3P0yjKkr#-+>7nD+b_aki?rpXj_j*R zaZ+j-olyY}QqEY-D`ii4X3eG#JzN*L!2`$(paf9cJd&Tl(XE(Hsz$))Apy_X6STny0DYIh`@1 zH%~lV@2lxDk1+4dXEUGcczQHbqq<3pfeW*#Ia@_2pwCKYTV(COm7) zUO0ba{=Uo0cW*(C)vp|W-4UnD9wkEEEur#+HF?(RfB`gdm)06;#W*lNoy;6Z{TO-D z36k8r+ji$g$c;h7>-mVbSJm&HRaz}$_OIy>*OCBvflfFTzXoHc#3^7&c+7_($s5u} zl6dI&kJgscufn&M?*ClB1XO+o;iFq=vUart9eHCs}V~Rt(-Tv+uk(oTjR3?^Y9Kq;(hiBqav{_3^z!x;In6)d+LJZ zY(o26aFy7*CoOE^R>+Iz_?phWdv$aTbr))t2Z>`s?)P7f#4g8Um(~2?54RtT`DyJM zfX$x0JqOqe*v;jm?~XF~6Mu2B1#ReHk2U-y$F<9V5GkkTl;8SdQ6JvXui-JttotG0 zIAcIzz_XO_AEgA6gB3QPw1AN(q0LA6tS-K5K8jOeh@7^3PtEwGBaX_w@d13k;`Fpi zPwZ#;v{drjJB)Xrs|?Otvz!yNkaOTKFW+q@=0OfnArXJC3Tt6cS)p`KzO|GW(j=ApCvZoUe=gASs8E0d&mL zUk|-5Ql`H`fTP#PF{^)$UQg$2CgyBB0^`ch@Kyf39ewiz+6^8_6#em&b0qC;V%^(V zYD4;&^VX#qCU3!J4v7~?E2rDuP=47|?B;!qy1QNZ_bPFhQ!V-j1ROWTX|!~7@#ns@ zVa>`2;f;-)cRB>fxw-A>_^&%>WDW3Kn-8g}d4 zM@QHm@_+wTm9Iy5J0hGLd;3ns@b;&npe`C=sP9CV?}DEg*gyb<#Wh*HI-`ZmiIZo_ z4QB8=vQpl8K@VTWHTKo$eBN)^zQ-;|_I;JNH9xWwb5Bx$`T2E_;h-yMzv>%QWmD3^ zzBeP{@7?LLSJ~U}hZWHwhPeu)jG|MYx1;d3wxlPi9VYU8Cfp;z0=F^-uPw~q&t7}b z(G^4Rp@9Vhd=hy$MlvG2idjBTv>=fNN<5(Q^4qI;R}v%*%l|D5u6|Oic%jgtr)>gJ zOoa1UZZz#e_Z_uzN;tbkbOfPlDf|_9fqKyX$LElzoQ?m|({O`lRrTPz`d6G8DMd~_ zj<1|@aUKB-9%YHtnh&nRx{VHUVBbWC8zHJ0u<@Yt@wUHq-ZPGzoP_g#Z*~nNl$~>F z@9h}WevdF)>%PSEtop}7d)cN_$P)Z~&9igYb!(EiWm3B?umnSh z@9wY7Tj5W9;tx^pJ-$KKW3#{+>^qOY{_WOXxEkmbN~Gx+>9|$+&pIMp!BMXsjd9s6cl12&YejVF-D(hqVaD>H`0NiRg- zyXtYScrYM@)Zo z6!kT^X5?&z$eg5@D$`QoK4a|a-)tq1kW<=koe!vNIV%vfuB-DG762EBhxJsG8M_1@ zHeTXcxtjBb&z^fj?fP6VI_fiuQKVq6f1cn7Gr28nMH9z48HT59UUg0m@zA7$75W!% z9nY{X8G2)qy@Nej$5mh?r6+~`VybZH+owy)F^ylDzQfobH6_BdyhIEA8FsvkToe^7 zFYesB!8{++16w^VS85%$v%+?oF=@n40|>S>tn%VrQ)}6|^aOe>B(~Y;s*{@dP6rPICK+BqXQgR9-JPkT2M&*B#J84@iO14j z@KGN*EG(I|b`;fUzE2xj@KI?IUzQOHH;aFW=(UkzfUVH}iy;{{h$yQKaq#VAtQ8AY zQuMA8;{Q}Ifh*mq8zlIJN|AGw0AIu#&f%yXAD{X4B~~p5m=@cMNhrH)@dZhJdR+hW zD52?>WZ8y|hI+gb1%k1HL~^<|@1oRTA%*zF(Qn7c8hKE0*9qMgjKdtMWYxjZXBX`1 zv>z0`k0wTVq<>P?kQ9j@&6vTz@e!mwz)i+$fD(Aw16E@CDP*%<5Coe;NsQab9er&J z;W-bQ<#NK^Zcs|Vj5A=8GVyG7qy%2JHHg9|X{6>eI!7U8RpBO?UF)H^#AU5M=tifd z&0he;>jx8g5eT-UbXIr8gR&{!z!WjO=eHxTC{jL0h;sPOKiaN2pQN&=W#Vh` z>P}76z6+r|O}DHradw8LsH8VfB-yEx<~fs98&!36?H+6O#iw*}XrMOC1ePvWzU*w* z?DIJ)uD56_3avjOdh7sQD@e_!EA*@UQ4#s*C`9Pr_g(%LEHz4e}8`&e)H$gAj)guzdz49K>lqRV1WgE{eLY3-crv! z_MTH{xTE$Gz}|~H`(V9Bk|lmy26-zfxx#WoEMoqP%q&rWyt=j z`&`OchQFu|@92v4KVnf#Pz#S>ZT64zpiOY{WTnNX0%D|}u>HOFF!wZm&%QFsmrq8w zMRbTA>4FI-(Asp*%>W(ARE)OP(1mBqrrAOw)r-3`%A)7bqx3yrF=MfWbHi^q#K6nn zzs}>sb!H~n1holeBhj4!;Jau}o9U|cJ_*N(~LeSG{RFs=Y(jwZiWA@f=+2}rA3FMK* zd5?B4~suU&9IBkD|o?(n-jnD4|yh-qb=398*r?Fo}k>~787IGKPI(Q(D z8#$iJ=cZ1)IHmd-boQ9tnD?zBNB(kS(m?hHyNsU{ya7MYn-bQA*+A*x#IWL`;eFgh z>u2=>c7BH%xh!Q0F3*4I(&KRa(QFuVihnm_wZ>&bD%mXyp?({dZ{N$Jp7T{t%nN%6 z(6j;xvVi;+D_wn}Y5ycQ(zzZva`l5G*Xx$ejtLkd^=B9a#i6r2oO^f-@0pEduV_vR z45KAmqHnNbf)I!Pk$Zz<7Ec9l4&1*B* z!bt-of8x{mCwcSAb{w5V!=YXFPY+c?g7w(Lt`@!<2+|9mrOf1=`kJfo*0ly^PbR&g zstJBe=n{_){R%UoQ1ocgyS7&!9zh=cmdn=yZ-G7easRgHojf%GJ4L^P{Z*Qq4f#qGB^xtuw7yC>-?Rwqc z`Wa%P_x&%ZPB64)P4`#}6O21BfGQvPkl zFngQ69$M_KxL|}nbbdvE`{`i`JCMU2GL^!fcG8`1gZSoGM@|RY$MpH@$@^~G}& zGyTa+0q`sjyZHTl&7%U3@#pibkPaHp{8B-6q^Apo>yNhCl0T>DXxWEtA_sTOyq zNoy59w}J~oc(D6&ilZTzrr_*Un<-%=By|n#i!O zRW>c>DfEUvb%;mO@*o(;yCe(Rz2;vA)_-xAu-~9P_^^8Is=M7V3}@;nwm&FFgbsBQ zcn#{@A6kC@$K(ZlWJ1AGk**QRF@v8BO^iBN9p7--2VOC%TrJs=B`GJ!3p?&>#D6gG z&gD;vuO;xim9(SxMj3px?FG@CtzNAszCU;?oNKgB*~h`rV$$Dvh2IqPu<=OLZB4l_ zXFv7UakPCHiHd(N)Z3(#6^K=`BCK8WE{ip9N!3Z&l{v z0B&;R1V4;ibT#r3kJXbUZ}90!(1)W!&a8~!%bS?j?Dx{oWDVFJcpC89UW@?4osEz? zrdJ1_)FyF0mAwwVu6N^PXyhIOLVdk zM)i$#Yg$XGmOX&~-E~Xr!kKqtLUy6fPE9FI@kq!fLMT)d!o@-!8xa8u)i3kxw-#F) zclj$(qh`0w#3*g1MTl?KixE|oNpcQ$)TOZb3#WHZXi6y8QBi;~t(2}D(iM;O3jh>6BW z%He%p;JQ)ybv@UteV<*1AtvF}gDMj0m6ns0NBSw;I=s1&irvz4`ez+n9@p+;8RkZw z0OWi8LjOxJrw`Ffh}}Id^ID7EM{0^xrQ###2bHEe8;GC|PyhWk%h>nPZ~d>j^T}_5 z%dT_0OW+xLV(v4{M)>Kft}emhOH>=;;2w!Icmcyv^$NOCLLFO!4|c0n%Wej4CS*oG z$=uxn14i|mB#q@|>@l^<UZ4yPpP2tv%zNIC8GH^fL^CR$rEIOpRZdK`_sJzNzk zmZS-f^U}@KgEgEccJzo&<=kt%?wd3EmcaWP!=$IC;xa1%-;Kf*?Z}kE@6(5 zaVb~P=MKlVjuo8##77Psh*9{lxU9+jeCshVdrxI->upZ?Gd`RPk6QgRd;gkwZp6BU z{x!_}%X`glpYJ>{KmDLR?f~K1`>Y3%YvbpibNJD{ z+B~Ngfz{~q{E3J1(p_f1Cd#^5ZP_5R!;)BGk!F(#K53BW$lt4XqJ{Btoc*K?j+&?? z1I1BEr`M7>FL)zvfjKFVAS{T0kL>3U?@3LO2PWu?(Fb-JNChUuhL9Sam^dxXr#X?R z)0^rc0F?r?18l~gcJLcJSi0xDw zm79xP`%5H=XeKK0o=Gu79dZW+kt9QGFBg9Rqbw-U3*U;#+l7*3Xox1<$+RH4tZX6z z;oeiAb13`5gwFsmZzRk!!)d=15uW1`J{K;gm6bP_?G4|p{M#n;a%8-+fZ;nx z(J;7N`~}2}0zLOA(>w_b_XT%8s^kKO?*#u&buTVTBsC@B&+y$U9^5ZeDeeig*ku+^ zM^bSF-I?{ujYGnJhVNcR{x1+-XJ0}Gwh%rld&74QWc61Mh=)}^hF)l~UT)rBy`kyO z!2~Ijpn(jukX4$lT1^%L8AyRCgGe|s3~0ksV=y8XVmDeYM=3^WRkSqII5vGX{~zgq zT`QLafgO2OW4j8m0l~&2tJfoI)oz!6c8k)W)8w70nzzrZ(P`|mP+n8;NEmEurB2cd zq6wtGi-dSg2pX2GmEpW&&v%dC3UT)9UbFd9=LU5d>b8^4y@4Aj2zt&H7i<|jq{ z+$=Yy!8~Y9nNz;TEMd>`%LiqfQ`d!GZ5L7on)7d$Yc7Ctw#zXTs4)m;N50aml?pYz zszz>^EN|%^XvXXmhM9pankzLY;5H1H2NkMGxiUI%p&C&kvDrGa1fpxUQJrmg$!%*H zZIaGZgRWNNN5v~b?X%^VW1~v1yMfos+c$)oH(s`d;A%h0w&UnAtlD-B%^YP~J_yl@ zAr<~|PPW6>f`!{BHLu9g+H?LjdDnxrYHZR&WZ)e54xaCY%}_3QMf=|3oteM4c*nP0 z+vU1^5EGc@spd2=;co@5v#UF#Dn=v1(HR#2 z=75=KDyOxy)YZjTYbD%$XZ)HZwO!4i3t=CGR)fnr?d{$5V5uY*cg@XKkH?+R>1*H0 z+km~h)Qfar?>-3Z-H9c-5r`n?-e9So$ck&xud&d~9_6$8g_`h+2ycKnsO9gC_*RvL zIbEI7D^qdpn19E%nN?UQRJOkxU=Ey2z?oEg1BPLv;DBvWOucyz;^DQmonBpmg4oRg zyO2J@wpGS!dY`tv4RN4Bn4TxsFHq4YVP(7mE!ekhl?pHigrYs>V3*iCJ!tcHTJQ5K zz1Pgu)9GG`8M%?NLChvw7;8#nWNhRPf z(Ko+E8*;rKih4YF|NEejkJTP?z;N)Q_Xo*kxiaY-I`$TBdsmE{^0#teBm$H7$hy7B`@+XDxd+8N+PAFry5lgvC-1a)PGIs*?{=W|;jBj8 z*^eA>9S27b5G&dQ9gO{BM8ceI@`CKcUA0s%-_+iHGI}qwXX_NhIJ0YS?@oqU#!M0t zM>FK3p#<{R%yU_}&(q^rUdx%$uub445Wpz{UBl zu^UX0fUuy!%!qJ12F!-ssz{zGDT2NffyiBf!2+54H4(2w+AM^ruH~(%GsVA#XcG8J zOmL$eeQr8)R9c~d_jEF`hIN-+WWWr2-=_Rt#yUhP@b+}YeXZ*>i4*DC!uNHA29D~^ zW3CK=`{$JcClC5xv(UXZvOTAyd*|^K%;G7?QX${9_5Shet#%3z#Rlq?0-;%$2hy=H z#nxiu*n56=`c$7j3~DX)z&@z)hdC-VsFCmg^1U~c0S!NK4Zm~M3=cn|P|2SSy!yQ1-xYqUl zn4IAcv9s4`Zgy#SB1%aGyz(eV_>C76A}MnMbu7w)wfQ{w! zk`6n_&fkX(C`6UkcX7$Chd(D6Vw9g)^le0XcbaB7IQ!T=-wN0CaIR5=0AA`Rx{f0Jq?*+?`rd{*^qXMvK!n`l{hp$y?8hHE8SvjdjqM^$DmI;Ob@^DL`}*4`yB8Vm{jWA2@ti;A>3v94)w8^VvTHVD;~b%? zfp;AV!;kx|p2otU(w@wfFLC1v8Nc0v=k+`<a0@I%Z}I1<{dNnGmq)@X&mklx3U74|-!p8V5Z!YNkes_+ zfq$R=d*&8giPf4v@Mhr46HTb1`qI;*J@X;SfLA%(p}*wG!rYI8**xRHgCPjYmICvk z>w>(-^3hYYQ*>_fr<2m*1od)P5sTMl7eV(vkNO5}e`yXQ3w(2dA3XcxCO&ElKo!%5&_(T#o^UK{uhCiJ-2|d=N4?9O`U_b?TjW0-^hQ> z{*PPGZT`R90@>eg!BxO5nEc}weEytlxNU&q8~MjAsB=u#!Vg|-sSAJrZh@A2iF@Aa z!O8#Y7T_yxIM(1Lbbx<+SB2T-8C<_?ZwE^;2lu@JX`j`89Pd?{&zAP$;Hp72GRkCJ zY?gIg%y9&}eT{cNMJ63-&C3(J=N8a4P|BCi&r8!@0d9f(hgtz+n|%FWhH~!m|F{Kf zf7Py3*z~Mc9~iO5ySm#Q+ep*ZiJFa7`0W-X()QefCbR1idu{=D7H1Rfk6Yk&WZ?gC z3+j_l=6Lp+Khys|HL+nfaX z0Md)0<@d~$8C z+ML|0Hs9Sq{$|1Y%7-;a;*I`P8$H?osW#=-wTh+ zSMrAix}1-m4lBx%EhQd6z8-y1lnV{RUv(EHJxsC;DHrd^StC;J4ZIvj?K7BzoFiN1 zj`7exvj>vGBaAxnVI7{5i3#;GCngi>TeoAX&#pj|cy{Mgqi}r?m7hxnb34VU+Er)V zt>xy&uUu)z->&nla!-t%Ra3WrQ2$r>_eYUCr@9!re>ol|K6%c6A%!lwAHlx$=6-hnRcXI2Mg&|$+_k2JrcQeYXbtuaLZ=S=br70- z#4mOFsX4#zW_*q>ZAE3$9eeCvJK=<1BB;QTAa(DBROb~|#WlyvoA;|66EkLIF%Ph+ zn?%qvB2>{B5Bb4DmL4D`s>J9YoW@i|-1f&xGr#Ok4oJ8ivCY!GdxFraah;V|a9KNh zo-!!ddX0vxnnO<}h^v@{mX7{dJ)YS=WBonPCDkYXrBppuIq{PoK+^Mw8zE4$D;~xQ zH;)FrkmdR%jF2u1oxHiEYxGEq1#d3H$;!_dgmP7pafbxYklbV{1S*49C zBEsV3bMLXK_x9hlA9`$s4Wq@*1s_;K^6vWR(RrT3QeXEi2F3NFaW<^c-$tcDg6a+K zohaf1(e`V5M5R+^|BC~=TXT`1mwQBI06&V0ZTYnw*!?PQ?+@RFZtOq$i7z61Ga5b!RGa+ek9*a| zn6a%yp7v*b2=pHKPqj%)=>w`wxSBlsX6c*IJNLDJSDV9E+Or;*`s`I3-(1S%-(rzV z(G}}?|E@N^+oMmjV@9loo(r7(x$LcRbI+xG#jEn$rNr;7_3;1SWP<`D0vL$0lo*8G zk@o;jNe+(1N_;ZD_`je6#@RHZ^PLZ40jS`{*XR}XxHSHF)EsO?Ivy<%!MBFxcZg7; zhumE_o;0>sZ62xlKiLYD{9SFzfNEnBj_KniF(_(2SdFIN)rR)F+5}sDwLxZtCHe9N&Qc?S^K}$23ZHQ4366BNR*_I&h$p<{_3Ys#-^x;*F0iSw6$tCt@dgJBi68FLlC2M*Tw28`{{vB@anPkf~r97BS zQ~Vun(j{D;;l%$5HzrmUXLD4(;5LA8!^-)fk@w+GxB+E<`&YPuXi{GT;fBTg9LFUf z1Fd)f7gEX6ol6A5&0AbLZ)CxTU7*}-{wLflCj0`z4OS7y%s#j-u@`PAR5P#tgd2Rp z8z9`E^0?CrT+_4683{+Xqkn*kPoiP~rIP>hNz+H_iey-FULu!Xj?HhSQdv+!iCEzB zs3-;y3$WRTHL}m5V-B#g_QV401^<3A3InD=2qp`bSOa1KvBZ{Eq;|WcJUz=B>!rJ1 zaNi_6y%EEY4lwE|wbh5``hxS&T$a2=k4nob`hQm&f`8juUJlMH9jG=~MZ@^=?UlW1 z6SSUrA_Ifl=kAHMrMcoQ*BQEt~T2qK(%2NPnS_~R==x_;6K&otd#%C z)>+S&(7r8%pWR-yVMkU2V!Q`AAGjEAxsAm!3tu-^@BbH9kUZ(ZTmBDMu$v4vW?uT$ zY+(U{0bD^#Kg73;)_J=evjnQ@Dfqu!0h9LSn*$r{pJb+ zqe^=&G@td0YS(O#kE$MDzfAK3H!g6tN5aeqh|H-bav1Eobz_usZ9zuq_26o2!KO;B zvX;mYj?L0`fGZ%wh(vhPl`Hm+)NVg0P;I9Cu2xRbtRpY;vI?gnLtOE23j#uu3T-xP z;hONJ3qn{+EgYbV7edWa$H8mmZR>uuNGHQ5X8Gq#+dl5JL~UG7yDiL5Yug!U%P&9o z-Z^={R{N(YniZGg_bUZ2WT5ifXXXY#Cfn_5Ch!BY^p6>p^#hRa8#4dnQxXj4GN4$O zWE&=k$GpS3{}>{p11K|qPkGo$8t^Gsc7=q`J71e9hRR&M_F@CrT|mD74mTGdVMrj{ z5ZZWYrCN`h)Ie=VF%_!n!H1&}5$KFCAlxvV1nFIMovkPRo%YLi+fE0xIYD+Zju=H- zeNG|SGV;U9z!wRIWQ`t3F_h)kbJU!U0Q!?GG?SvQ+l0i>T)fE83+vt9pvw`_o@b|f zWncH!%XV$}>2gx^i-30X?E=tlXhwVOCRf{~vZwdZ)oaA)jvePct3dwIzuFDU@UqiD zNg>pFu-Ds#gb?maoaQ<52-)ecnju$!ebC1_Jy>!O-c&IFG4F4=3J{gXs|O0OXzL81 z-RxTZjyL39CdQc6*SoURdqZPrz5JhcbLN#ru>W4W840_wrhR>0uKnTb8*6Mgk?=jP zz^DSew!|4)4Bj5R`9oNrTl;#f+>l~Ln=&;X`DKqQh(3$BB-cAS3Ew9?Trvi`KX`*z zm{DBOw#OCN-K=Y(+cdif6@oN+2c-hEJT?cHcW%;suh+Bnt^HRlU=0KD#qV|MN@nWO zfl*}00PoO<{neh0osqZ*c(Q}^8M=D^7mx%+!H(Vd-1<#NSGr+VTY|8J7X>Vc`v3U4 z?|-WQ{}23U;n>IC9A%Tt>>PXV5h90>nM3yK*gMC_rekj*vUQBI%gl&6A`z9gihQ5+ ze!a)%^8J4QgY(n5oO65J?zgMiA7BL~oFqLJtQhfxEOy9KtfhgY{a2V@P!8A)%^6(q zi17qu72&NY{q_+`Y=nlFplIt$UfiyKHdCo1@i={-SA}XE>eZSZF{nlL;6E#s66I8c zd-texq8bNIM8_`_wVHbsw@i&YD^2Pb44o9=vXvQsdxDeC;+s;csYnal<+TTI^rtHA zq<#7xqgqCv9^KpA9sc4eo%OE1+!GumQg>ay!LMif&0>{41~zBdvHzOCh! ztR6;nJOfoA{UFwC{QJH`ebdQmF6lI$7u!i0U2WMUF~_qyd{L!}tG^0`of`1u z*ym05APVc_JnReV(|BQ{M&+V;6^c^r{spREeHZ!{(hRc%4Ho%QI|WPTR}GU5QH#{* zMTF9G_4S3Eu0@aOUcPE}1BiDwHfjJz$P1RhJIt ztM=xA1 z_iyiJ+Xh{B*1I`NUJ@z(NO`V}nQfBZz9{dKkJL`hrR0{v)E=}}Oy;ox#Tni*Xk3vT z|4vTJ=Fmj0#IY3-q!mL=szWd0@Q!bMt_E5lW<%HNsfs|xu@*|euFu@zNC2`JSF$*o zOSexOG>?}$HCh)&Lao(-4N1j=uY?VsC+sGCNT(J8iDj)`vAn{OrQRb3>+^QF4Ywh! zM;ycc2OzDBt3_d<&f`Sp2L`}~n`S{4IKFAvQavkB%D*R%jbJ zEzlgK*nWxUxuv#8b)k&R1798QkJn>~iBoEkb~&l_(}BS5MJ4_j>qi@6;xvnGynjXE z={Tv=mF#EFB{9>|N+hnh&CJHF_rpf>yaIILkA1oV}kiY z6$fqYOo8=Ck{o?QHlAD|k%!J0bHg{Ts@Xf#=;3Q<#ks+k?2$;`+d))jMsw zRf0hm{qR~hkubY*@{}_9q}*?k!19pQuM&_t)FcGNt1D^fj;_i}xuTK5<=#pkcQIt9 zu7+#vZk`d>SIqvE$X~oLYgCT=>j=W4PJH>bmxZF)YIO20#sRgVH%J5Z48#qkm=@Oq zl<0)D9o0_Jkb2MG&+zNdYha}OViXV>XPC`4Y_g414Wcx(?G-p*cqxbZUWwi)19kY1 zVQ6^N-FzpXZY5szEKS$Ybonc-!!f%X#GaL=4m}9yvgfq0#cX} zmEd*!Np`0nE4HO`$xZ#YhG63oB4JTsceg{eFmxu?Q%Rv&%ZCH~;rB<{h>>U>YQoO7 z9YcowuO#M=w&a58kC3K4&Kb&Sr9PCcD5KT`Xx)3DWsTPuuXO+p{ev6lPGB{d8#6R;N zE#&ZX9-xH`$e$b5H8v-qjvzwM$*T<)n_U)$mZR=SXda)=Mq(LGL6$`aVUXodS(3^^SmjqNl8EC`6ZZ?B*b*4^Lrp{3 z{mVE4-L;YWvxUv`<)~HXpFK(C3CFsh+Zl2Qec^eB863w3!?R^se@G@T0(?wo4`r+J%_BxenYU$ub z^1h(*kBp|2jzW*`r!m3Q`QQ1x(wH8$dq4^NXjSgdUuFNb&@8?4#&1b@D!&hx3Sw8s z+UL)+D5DaYYu^VL6y8%yIKD! zZVhTPw?{*%uWFr;E*qV*dCO@XqJrw9$!{yII+~>I;{}e1zfXCnf%TMlNV3 zzHUN;1C-!&6SFW`QLQl_dldOd!N~b%ws(BlK9%Z}7?WXQ29vA7lp$z$jW1X-nS4oV zQnfzuf<_KJj-2X#%dRcjJ95E6cCPUrI009!5i=TEbvbZeT>a z4gawrOrR zCjiqp4|u1oN?deT~Ooxo-x&)O>VyDi6H}TgYE{$=-!Aj%_Muv z5>1~3X52Z2LQ>N4huE=FiAGsJ();J+TIK>$hQrONI{x;?hEY{~MD`15z zyT-~18B6CG{d+Oe{f4{d+YmK(>=7#J?%%;k;O}9+41-OWbtcAc6l3XrOA@0B3`U0i zdoU6eo@gBk3`V-b+h5w0A)00|KTQDQn^B3Azc% zHgSLzl2M!fBIzoMfaqaO+)i+Gz+En4Wef%uBTdshyY5gGqydAGHSRH~`H(w#NpSac zU@-DQ47j5!V|56228G$E$A!M&z~k_%_cDBK0QGj+AthOz8?IY{+ccjmlc4nO3y zJ0lU2qZ^t9bY~0{NF=*)7HoO=5K>8jOor|h-8|QxnL8P7PR?}~fbNW&2iScV!5NU% z3eWQw&O7bSAl(yfGH$S5w*^ud2~lQ5?(N-+;&_-mIwx0Gk(D6C+>&2icSjdXfqfVv z#SFf=! zyDwg2+6E$z_vvO+6p$c2?gE`t$U;Pe&nXlSov=Cnr#?fBH_daE0sXDdH~{sT=b8W##AcK10x|+nyQz-wF2@X&HTSX47zk0ejbIy9RAb;>NEEWY^sFu(t7zL8^Q9X zrDPLAh;H9Yrls4$(D%CFj3C%(cGJ_j?w*z;f_NA*ohKi2j=%QrV!qfH) zy7HQb4dz`%RB*nSCqDUG!Ii=qW@7L$CjYcOgQ|9=aM1y=T~@3*8LxIEXG=Z_%(Anq z@zl#FUjn&>=KrfcgQ$&t7qh-odkIlru2`R8SEFVpb*Kq`sZdD%@A?d~wuIuQcS1fd zuAzDrl(f>|Sy<1AXdGg1BpnrEv~2iolhfbRD5zI>vKwsW2_9B#8uG;OW4y-R#T<<{ zPEnLvNs2D~!u1J3rCLBURrQoJnJetkmNWO(dK$}CYD7^@=>KZa&{x*Ww=|0b4H{ze z$FQu4FC||To6a^PaXLVQhR_h#S_$&

    ^ULdC>s+h9K%Soo+^A_+;{oUT1>(^udL; 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

    =^FnIIhF8W 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 literal 0 HcmV?d00001 diff --git a/static/search.svg b/static/search.svg new file mode 100644 index 0000000..8238711 --- /dev/null +++ b/static/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/uni.ttf b/static/uni.ttf new file mode 100644 index 0000000000000000000000000000000000000000..60a1968d08cc6056c70b5402b2effac43c6f96a3 GIT binary patch literal 26164 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 literal 0 HcmV?d00001 diff --git a/store/index.ts b/store/index.ts new file mode 100644 index 0000000..bd65527 --- /dev/null +++ b/store/index.ts @@ -0,0 +1 @@ +export { default as useCountStore } from './modules/countStore' diff --git a/store/modules/countStore.ts b/store/modules/countStore.ts new file mode 100644 index 0000000..d152f09 --- /dev/null +++ b/store/modules/countStore.ts @@ -0,0 +1,121 @@ +import { defineStore } from 'pinia' +import { + login, + logout, + getInfo, + getPermissionInfo +} from '@/api/login' +import { + setToken, + removeToken +} from '@/utils/auth' +const baseUrl = import.meta.env.VITE_BASE_URL +const useStore = defineStore('storeId', { + state: () => ({ + id: '', // 用户编号 + name: '', + avatar: '', + roles: [], + permissions: '', + role: '', + post: '', + dept: '', + menus1: [], + menus2: [], + }), + getters: { + // isEven: (state) => state.count % 2 === 0 + }, + actions: { + // 登录 + Login(userInfo) { + const username = userInfo.username.trim() + const password = userInfo.password + const captchaVerification = userInfo.captchaVerification + const tenantName = userInfo.tenantName + const rememberMe = userInfo.rememberMe + const code = userInfo.code + const uuid = userInfo.uuid + return new Promise((resolve, reject) => { + login(username, password, captchaVerification, tenantName, rememberMe, code, uuid).then( + res => { + res = res.data; + // 设置 token + setToken(res) + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + // 获取权限 + GetPermissionInfo() { + return new Promise((resolve, reject) => { + getPermissionInfo().then(res => { + res = res.data; // 读取 data 数据 + if (res.roles && res.roles.length > 0) { + this.roles = res.roles + this.role = res.roles.filter(item => item == 'all_approve' || item == 'normal_approve')[0] + this.permissions = res.permissions + let menus = [] + res.menus.forEach(item => { + if (item.path == '/pda') { + menus = item.children + } + }) + this.menus1 = menus.filter(item => item.path !== 'itemOut') + this.menus2 = menus.filter(item => item.path === 'itemOut') + } else { + this.roles = [] + this.role = '' + } + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + // 获取权限 + GetInfo() { + return new Promise((resolve, reject) => { + getInfo().then(res => { + res = res.data; // 读取 data 数据 + this.avatar = res.avatar + this.name = res.nickname + this.id = res.id + this.avatar = res.avatar + this.dept = res.dept + if (res.posts && res.posts.length > 0) { + this.post = res.posts.filter(item => item.code == 'worker' || item.code == 'engineer')[0] + } else { + this.post = '' + } + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + // 获取权限 + LogOut() { + return new Promise((resolve, reject) => { + logout().then(res => { + this.id = ''// 用户编号 + this.name = '' + this.avatar = '' + this.roles = '' + this.permissions = '' + this.role = '' + this.post = '' + this.dept = '' + removeToken() + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + } +}) + +export default useStore \ No newline at end of file diff --git a/styles/vars/_base.less b/styles/vars/_base.less new file mode 100644 index 0000000..6bb66aa --- /dev/null +++ b/styles/vars/_base.less @@ -0,0 +1,2 @@ +@title-size: 40rpx; +@title-color: #47caff; diff --git a/styles/vars/_base.scss b/styles/vars/_base.scss new file mode 100644 index 0000000..19eb9f1 --- /dev/null +++ b/styles/vars/_base.scss @@ -0,0 +1,2 @@ +$title-size: 40rpx; +$title-color: #bd34fe; diff --git a/uni.scss b/uni.scss new file mode 100644 index 0000000..38cc172 --- /dev/null +++ b/uni.scss @@ -0,0 +1,77 @@ +/** + * 这里是uni-app内置的常用样式变量 + * + * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 + * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App + * + */ + +/** + * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 + * + * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 + */ + +@import 'vk-uview-ui/theme.scss'; +/* 颜色变量 */ + +/* 行为相关颜色 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 文字基本颜色 */ +$uni-text-color: #333; //基本色 +$uni-text-color-inverse: #fff; //反色 +$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息 +$uni-text-color-placeholder: #808080; +$uni-text-color-disable: #c0c0c0; + +/* 背景颜色 */ +$uni-bg-color: #ffffff; +$uni-bg-color-grey: #f8f8f8; +$uni-bg-color-hover: #f1f1f1; //点击状态颜色 +$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色 + +/* 边框颜色 */ +$uni-border-color: #c8c7cc; + +/* 尺寸变量 */ + +/* 文字尺寸 */ +$uni-font-size-sm: 24rpx; +$uni-font-size-base: 28rpx; +$uni-font-size-lg: 32rpx; + +/* 图片尺寸 */ +$uni-img-size-sm: 40rpx; +$uni-img-size-base: 52rpx; +$uni-img-size-lg: 80rpx; + +/* Border Radius */ +$uni-border-radius-sm: 4rpx; +$uni-border-radius-base: 6rpx; +$uni-border-radius-lg: 12rpx; +$uni-border-radius-circle: 50%; + +/* 水平间距 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20rpx; +$uni-spacing-row-lg: 30rpx; + +/* 垂直间距 */ +$uni-spacing-col-sm: 8rpx; +$uni-spacing-col-base: 16rpx; +$uni-spacing-col-lg: 24rpx; + +/* 透明度 */ +$uni-opacity-disabled: 0.3; // 组件禁用态的透明度 + +/* 文章场景相关 */ +$uni-color-title: #2c405a; // 文章标题颜色 +$uni-font-size-title: 40rpx; +$uni-color-subtitle: #555555; // 二级标题颜色 +$uni-font-size-subtitle: 36rpx; +$uni-color-paragraph: #3f536e; // 文章段落颜色 +$uni-font-size-paragraph: 30rpx; diff --git a/uni_modules/uni-badge/changelog.md b/uni_modules/uni-badge/changelog.md new file mode 100644 index 0000000..544ecc1 --- /dev/null +++ b/uni_modules/uni-badge/changelog.md @@ -0,0 +1,29 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-badge](https://uniapp.dcloud.io/component/uniui/uni-badge) +## 1.1.7(2021-11-08) +- 优化 升级ui +- 修改 size 属性默认值调整为 small +- 修改 type 属性,默认值调整为 error,info 替换 default +## 1.1.6(2021-09-22) +- 修复 在字节小程序上样式不生效的 bug +## 1.1.5(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.4(2021-07-29) +- 修复 去掉 nvue 不支持css 的 align-self 属性,nvue 下不暂支持 absolute 属性 +## 1.1.3(2021-06-24) +- 优化 示例项目 +## 1.1.1(2021-05-12) +- 新增 组件示例地址 +## 1.1.0(2021-05-12) +- 新增 uni-badge 的 absolute 属性,支持定位 +- 新增 uni-badge 的 offset 属性,支持定位偏移 +- 新增 uni-badge 的 is-dot 属性,支持仅显示有一个小点 +- 新增 uni-badge 的 max-num 属性,支持自定义封顶的数字值,超过 99 显示99+ +- 优化 uni-badge 属性 custom-style, 支持以对象形式自定义样式 +## 1.0.7(2021-05-07) +- 修复 uni-badge 在 App 端,数字小于10时不是圆形的bug +- 修复 uni-badge 在父元素不是 flex 布局时,宽度缩小的bug +- 新增 uni-badge 属性 custom-style, 支持自定义样式 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue new file mode 100644 index 0000000..1981b4e --- /dev/null +++ b/uni_modules/uni-badge/components/uni-badge/uni-badge.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/uni_modules/uni-badge/package.json b/uni_modules/uni-badge/package.json new file mode 100644 index 0000000..7ba6d2f --- /dev/null +++ b/uni_modules/uni-badge/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-badge", + "displayName": "uni-badge 数字角标", + "version": "1.2.0", + "description": "数字角标(徽章)组件,在元素周围展示消息提醒,一般用于列表、九宫格、按钮等地方。", + "keywords": [ + "", + "badge", + "uni-ui", + "uniui", + "数字角标", + "徽章" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-badge/readme.md b/uni_modules/uni-badge/readme.md new file mode 100644 index 0000000..bdf175d --- /dev/null +++ b/uni_modules/uni-badge/readme.md @@ -0,0 +1,10 @@ +## Badge 数字角标 +> **组件名:uni-badge** +> 代码块: `uBadge` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-badge) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-breadcrumb/changelog.md b/uni_modules/uni-breadcrumb/changelog.md new file mode 100644 index 0000000..016e6ce --- /dev/null +++ b/uni_modules/uni-breadcrumb/changelog.md @@ -0,0 +1,6 @@ +## 0.1.2(2022-06-08) +- 修复 微信小程序 separator 不显示问题 +## 0.1.1(2022-06-02) +- 新增 支持 uni.scss 修改颜色 +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue new file mode 100644 index 0000000..b9edbd6 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb-item/uni-breadcrumb-item.vue @@ -0,0 +1,121 @@ + + + diff --git a/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue new file mode 100644 index 0000000..94493a2 --- /dev/null +++ b/uni_modules/uni-breadcrumb/components/uni-breadcrumb/uni-breadcrumb.vue @@ -0,0 +1,41 @@ + + + diff --git a/uni_modules/uni-breadcrumb/package.json b/uni_modules/uni-breadcrumb/package.json new file mode 100644 index 0000000..e5f33e8 --- /dev/null +++ b/uni_modules/uni-breadcrumb/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-breadcrumb", + "displayName": "uni-breadcrumb 面包屑", + "version": "0.1.2", + "description": "Breadcrumb 面包屑", + "keywords": [ + "uni-breadcrumb", + "breadcrumb", + "uni-ui", + "面包屑导航", + "面包屑" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} diff --git a/uni_modules/uni-breadcrumb/readme.md b/uni_modules/uni-breadcrumb/readme.md new file mode 100644 index 0000000..6976b8d --- /dev/null +++ b/uni_modules/uni-breadcrumb/readme.md @@ -0,0 +1,66 @@ + +## breadcrumb 面包屑导航 +> **组件名:uni-breadcrumb** +> 代码块: `ubreadcrumb` + +显示当前页面的路径,快速返回之前的任意页面。 + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + {{route.name}} + +``` + +```js +export default { + name: "uni-stat-breadcrumb", + data() { + return { + routes: [{ + to: '/A', + name: 'A页面' + }, { + to: '/B', + name: 'B页面' + }, { + to: '/C', + name: 'C页面' + }] + }; + } + } +``` + + +## API + +### Breadcrumb Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|separator |String |斜杠'/' |分隔符 | +|separatorClass |String | |图标分隔符 class | + +### Breadcrumb Item Props + +|属性名 |类型 |默认值 |说明 | +|:-: |:-: |:-: |:-: | +|to |String | |路由跳转页面路径 | +|replace|Boolean | |在使用 to 进行路由跳转时,启用 replace 将不会向 history 添加新记录(仅 h5 支持) | + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb](https://hellouniapp.dcloud.net.cn/pages/extUI/breadcrumb/breadcrumb) \ No newline at end of file diff --git a/uni_modules/uni-calendar/changelog.md b/uni_modules/uni-calendar/changelog.md new file mode 100644 index 0000000..6df4493 --- /dev/null +++ b/uni_modules/uni-calendar/changelog.md @@ -0,0 +1,16 @@ +## 1.4.5(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.4.4(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.4.3(2021-09-22) +- 修复 startDate、 endDate 属性失效的 bug +## 1.4.2(2021-08-24) +- 新增 支持国际化 +## 1.4.1(2021-08-05) +- 修复 弹出层被 tabbar 遮盖 bug +## 1.4.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.3.16(2021-05-12) +- 新增 组件示例地址 +## 1.3.15(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-calendar/components/uni-calendar/calendar.js b/uni_modules/uni-calendar/components/uni-calendar/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json new file mode 100644 index 0000000..fcbd13c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/en.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "ok", + "uni-calender.cancel": "cancel", + "uni-calender.today": "today", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json new file mode 100644 index 0000000..1ca43de --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hans.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "确定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json new file mode 100644 index 0000000..e0fe33b --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/i18n/zh-Hant.json @@ -0,0 +1,12 @@ +{ + "uni-calender.ok": "確定", + "uni-calender.cancel": "取消", + "uni-calender.today": "今日", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六" +} diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue new file mode 100644 index 0000000..0353011 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar-item.vue @@ -0,0 +1,181 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue new file mode 100644 index 0000000..a2c33d0 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue @@ -0,0 +1,554 @@ + + + + + diff --git a/uni_modules/uni-calendar/components/uni-calendar/util.js b/uni_modules/uni-calendar/components/uni-calendar/util.js new file mode 100644 index 0000000..bae9273 --- /dev/null +++ b/uni_modules/uni-calendar/components/uni-calendar/util.js @@ -0,0 +1,354 @@ +import CALENDAR from './calendar.js' + +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + lunar: this.getlunar(full.year, full.month - 1, beforeDate), + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let isinfo = false + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate), + afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate), + month: full.month, + lunar: this.getlunar(full.year, full.month, i), + disable: !(disableBefore && disableAfter), + isDay + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + lunar: this.getlunar(full.year, Number(full.month) + 1, i), + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + /** + * 计算阴历日期显示 + */ + getlunar(year, month, date) { + return CALENDAR.solar2lunar(year, month, date) + } + /** + * 设置打点 + */ + setSelectInfo(data, value) { + this.selected = value + this._getWeek(data) + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (before && after) { + this.multipleStatus.before = '' + this.multipleStatus.after = '' + this.multipleStatus.data = [] + } else { + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + } + this._getWeek(fullDate) + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + fullDate, + year, + month, + date, + day + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-calendar/package.json b/uni_modules/uni-calendar/package.json new file mode 100644 index 0000000..40455c8 --- /dev/null +++ b/uni_modules/uni-calendar/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-calendar", + "displayName": "uni-calendar 日历", + "version": "1.4.5", + "description": "日历组件", + "keywords": [ + "uni-ui", + "uniui", + "日历", + "", + "打卡", + "日历选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-calendar/readme.md b/uni_modules/uni-calendar/readme.md new file mode 100644 index 0000000..4f3ca0e --- /dev/null +++ b/uni_modules/uni-calendar/readme.md @@ -0,0 +1,103 @@ + + +## Calendar 日历 +> **组件名:uni-calendar** +> 代码块: `uCalendar` + + +日历组件 + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 本组件农历转换使用的js是 [@1900-2100区间内的公历、农历互转](https://github.com/jjonline/calendar.js) +> - 仅支持自定义组件模式 +> - `date`属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date() +> - 通过 `insert` 属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意 +> - 弹窗模式下无法阻止后面的元素滚动,如有需要阻止,请在弹窗弹出后,手动设置滚动元素为不可滚动 + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +### 基本用法 + +在 ``template`` 中使用组件 + +```html + + + +``` + +### 通过方法打开日历 + +需要设置 `insert` 为 `false` + +```html + + + + +``` + +```javascript + +export default { + data() { + return {}; + }, + methods: { + open(){ + this.$refs.calendar.open(); + }, + confirm(e) { + console.log(e); + } + } +}; + +``` + + +## API + +### Calendar Props + +| 属性名 | 类型 | 默认值| 说明 | +| | | +| date | String |- | 自定义当前时间,默认为今天 | +| lunar | Boolean | false | 显示农历 | +| startDate | String |- | 日期选择范围-开始日期 | +| endDate | String |- | 日期选择范围-结束日期 | +| range | Boolean | false | 范围选择 | +| insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 | +|clearDate |Boolean |true |弹窗模式是否清空上次选择内容 | +| selected | Array |- | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] | +|showMonth | Boolean | true | 是否显示月份为背景 | + +### Calendar Events + +| 事件名 | 说明 |返回值| +| | | | +| open | 弹出日历组件,`insert :false` 时生效|- | + + + + + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar](https://hellouniapp.dcloud.net.cn/pages/extUI/calendar/calendar) \ No newline at end of file diff --git a/uni_modules/uni-card/changelog.md b/uni_modules/uni-card/changelog.md new file mode 100644 index 0000000..c3cd8c4 --- /dev/null +++ b/uni_modules/uni-card/changelog.md @@ -0,0 +1,26 @@ +## 1.3.1(2021-12-20) +- 修复 在vue页面下略缩图显示不正常的bug +## 1.3.0(2021-11-19) +- 重构插槽的用法 ,header 替换为 title +- 新增 actions 插槽 +- 新增 cover 封面图属性和插槽 +- 新增 padding 内容默认内边距离 +- 新增 margin 卡片默认外边距离 +- 新增 spacing 卡片默认内边距 +- 新增 shadow 卡片阴影属性 +- 取消 mode 属性,可使用组合插槽代替 +- 取消 note 属性 ,使用actions插槽代替 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-card](https://uniapp.dcloud.io/component/uniui/uni-card) +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-07-01) +- 优化 图文卡片无图片加载时,提供占位图标 +- 新增 header 插槽,自定义卡片头部( 图文卡片 mode="style" 时,不支持) +- 修复 thumbnail 不存在仍然占位的 bug +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-card/components/uni-card/uni-card.vue b/uni_modules/uni-card/components/uni-card/uni-card.vue new file mode 100644 index 0000000..38cf594 --- /dev/null +++ b/uni_modules/uni-card/components/uni-card/uni-card.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/uni_modules/uni-card/package.json b/uni_modules/uni-card/package.json new file mode 100644 index 0000000..f16224d --- /dev/null +++ b/uni_modules/uni-card/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-card", + "displayName": "uni-card 卡片", + "version": "1.3.1", + "description": "Card 组件,提供常见的卡片样式。", + "keywords": [ + "uni-ui", + "uniui", + "card", + "", + "卡片" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-card/readme.md b/uni_modules/uni-card/readme.md new file mode 100644 index 0000000..7434e71 --- /dev/null +++ b/uni_modules/uni-card/readme.md @@ -0,0 +1,12 @@ + + +## Card 卡片 +> **组件名:uni-card** +> 代码块: `uCard` + +卡片视图组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-card) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-collapse/changelog.md b/uni_modules/uni-collapse/changelog.md new file mode 100644 index 0000000..292e4c7 --- /dev/null +++ b/uni_modules/uni-collapse/changelog.md @@ -0,0 +1,36 @@ +## 1.4.3(2022-01-25) +- 修复 初始化的时候 ,open 属性失效的bug +## 1.4.2(2022-01-21) +- 修复 微信小程序resize后组件收起的bug +## 1.4.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-collapse](https://uniapp.dcloud.io/component/uniui/uni-collapse) +## 1.3.3(2021-08-17) +- 优化 show-arrow 属性默认为true +## 1.3.2(2021-08-17) +- 新增 show-arrow 属性,控制是否显示右侧箭头 +## 1.3.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.3.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.2(2021-07-21) +- 修复 由1.2.0版本引起的 change 事件返回 undefined 的Bug +## 1.2.1(2021-07-21) +- 优化 组件示例 +## 1.2.0(2021-07-21) +- 新增 组件折叠动画 +- 新增 value\v-model 属性 ,动态修改面板折叠状态 +- 新增 title 插槽 ,可定义面板标题 +- 新增 border 属性 ,显示隐藏面板内容分隔线 +- 新增 title-border 属性 ,显示隐藏面板标题分隔线 +- 修复 resize 方法失效的Bug +- 修复 change 事件返回参数不正确的Bug +- 优化 H5、App 平台自动更具内容更新高度,无需调用 reszie() 方法 +## 1.1.7(2021-05-12) +- 新增 组件示例地址 +## 1.1.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.1.5(2021-02-05) +- 调整为uni_modules目录规范 \ No newline at end of file diff --git a/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue new file mode 100644 index 0000000..50a72a5 --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse-item/uni-collapse-item.vue @@ -0,0 +1,404 @@ + + + + + diff --git a/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue new file mode 100644 index 0000000..384c39a --- /dev/null +++ b/uni_modules/uni-collapse/components/uni-collapse/uni-collapse.vue @@ -0,0 +1,147 @@ + + + diff --git a/uni_modules/uni-collapse/package.json b/uni_modules/uni-collapse/package.json new file mode 100644 index 0000000..65349cf --- /dev/null +++ b/uni_modules/uni-collapse/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-collapse", + "displayName": "uni-collapse 折叠面板", + "version": "1.4.3", + "description": "Collapse 组件,可以折叠 / 展开的内容区域。", + "keywords": [ + "uni-ui", + "折叠", + "折叠面板", + "手风琴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-collapse/readme.md b/uni_modules/uni-collapse/readme.md new file mode 100644 index 0000000..bc758eb --- /dev/null +++ b/uni_modules/uni-collapse/readme.md @@ -0,0 +1,12 @@ + + +## Collapse 折叠面板 +> **组件名:uni-collapse** +> 代码块: `uCollapse` +> 关联组件:`uni-collapse-item`、`uni-icons`。 + + +折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-collapse) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-combox/changelog.md b/uni_modules/uni-combox/changelog.md new file mode 100644 index 0000000..23c2748 --- /dev/null +++ b/uni_modules/uni-combox/changelog.md @@ -0,0 +1,15 @@ +## 1.0.1(2021-11-23) +- 优化 label、label-width 属性 +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-combox](https://uniapp.dcloud.io/component/uniui/uni-combox) +## 0.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.6(2021-05-12) +- 新增 组件示例地址 +## 0.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 0.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue new file mode 100644 index 0000000..fe3b2d6 --- /dev/null +++ b/uni_modules/uni-combox/components/uni-combox/uni-combox.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/uni_modules/uni-combox/package.json b/uni_modules/uni-combox/package.json new file mode 100644 index 0000000..4a05c3f --- /dev/null +++ b/uni_modules/uni-combox/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-combox", + "displayName": "uni-combox 组合框", + "version": "1.0.1", + "description": "可以选择也可以输入的表单项 ", + "keywords": [ + "uni-ui", + "uniui", + "combox", + "组合框", + "select" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-combox/readme.md b/uni_modules/uni-combox/readme.md new file mode 100644 index 0000000..ffa2cc8 --- /dev/null +++ b/uni_modules/uni-combox/readme.md @@ -0,0 +1,11 @@ + + +## Combox 组合框 +> **组件名:uni-combox** +> 代码块: `uCombox` + + +组合框组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-combox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-countdown/changelog.md b/uni_modules/uni-countdown/changelog.md new file mode 100644 index 0000000..f25beef --- /dev/null +++ b/uni_modules/uni-countdown/changelog.md @@ -0,0 +1,24 @@ +## 1.2.2(2022-01-19) +- 修复 在微信小程序中样式不生效的bug +## 1.2.1(2022-01-18) +- 新增 update 方法 ,在动态更新时间后,刷新组件 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-countdown](https://uniapp.dcloud.io/component/uniui/uni-countdown) +## 1.1.3(2021-10-18) +- 重构 +- 新增 font-size 支持自定义字体大小 +## 1.1.2(2021-08-24) +- 新增 支持国际化 +## 1.1.1(2021-07-30) +- 优化 vue3下小程序事件警告的问题 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-06-18) +- 修复 uni-countdown 重复赋值跳两秒的 bug +## 1.0.4(2021-05-12) +- 新增 组件示例地址 +## 1.0.3(2021-05-08) +- 修复 uni-countdown 不能控制倒计时的 bug +## 1.0.2(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json new file mode 100644 index 0000000..06309cb --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "day", + "uni-countdown.h": "h", + "uni-countdown.m": "m", + "uni-countdown.s": "s" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json new file mode 100644 index 0000000..358cdd1 --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "时", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json new file mode 100644 index 0000000..e5a63de --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-countdown.day": "天", + "uni-countdown.h": "時", + "uni-countdown.m": "分", + "uni-countdown.s": "秒" +} diff --git a/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue new file mode 100644 index 0000000..1f8ef4e --- /dev/null +++ b/uni_modules/uni-countdown/components/uni-countdown/uni-countdown.vue @@ -0,0 +1,271 @@ + + + diff --git a/uni_modules/uni-countdown/package.json b/uni_modules/uni-countdown/package.json new file mode 100644 index 0000000..70e99ee --- /dev/null +++ b/uni_modules/uni-countdown/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-countdown", + "displayName": "uni-countdown 倒计时", + "version": "1.2.2", + "description": "CountDown 倒计时组件", + "keywords": [ + "uni-ui", + "uniui", + "countdown", + "倒计时" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-countdown/readme.md b/uni_modules/uni-countdown/readme.md new file mode 100644 index 0000000..4bcb1aa --- /dev/null +++ b/uni_modules/uni-countdown/readme.md @@ -0,0 +1,10 @@ + + +## CountDown 倒计时 +> **组件名:uni-countdown** +> 代码块: `uCountDown` + +倒计时组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-countdown) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-checkbox/changelog.md b/uni_modules/uni-data-checkbox/changelog.md new file mode 100644 index 0000000..dbc517a --- /dev/null +++ b/uni_modules/uni-data-checkbox/changelog.md @@ -0,0 +1,43 @@ +## 1.0.2(2022-06-30) +- 优化 在 uni-forms 中的依赖注入方式 +## 1.0.1(2022-02-07) +- 修复 multiple 为 true 时,v-model 的值为 null 报错的 bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-checkbox](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +## 0.2.5(2021-08-23) +- 修复 在uni-forms中 modelValue 中不存在当前字段,当前字段必填写也不参与校验的问题 +## 0.2.4(2021-08-17) +- 修复 单选 list 模式下 ,icon 为 left 时,选中图标不显示的问题 +## 0.2.3(2021-08-11) +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +## 0.2.2(2021-07-30) +- 优化 在uni-forms组件,与label不对齐的问题 +## 0.2.1(2021-07-27) +- 修复 单选默认值为0不能选中的Bug +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.11(2021-07-06) +- 优化 删除无用日志 +## 0.1.10(2021-07-05) +- 修复 由 0.1.9 引起的非 nvue 端图标不显示的问题 +## 0.1.9(2021-07-05) +- 修复 nvue 黑框样式问题 +## 0.1.8(2021-06-28) +- 修复 selectedTextColor 属性不生效的Bug +## 0.1.7(2021-06-02) +- 新增 map 属性,可以方便映射text/value属性 +## 0.1.6(2021-05-26) +- 修复 不关联服务空间的情况下组件报错的Bug +## 0.1.5(2021-05-12) +- 新增 组件示例地址 +## 0.1.4(2021-04-09) +- 修复 nvue 下无法选中的问题 +## 0.1.3(2021-03-22) +- 新增 disabled属性 +## 0.1.2(2021-02-24) +- 优化 默认颜色显示 +## 0.1.1(2021-02-24) +- 新增 支持nvue +## 0.1.0(2021-02-18) +- “暂无数据”显示居中 diff --git a/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue new file mode 100644 index 0000000..2e51712 --- /dev/null +++ b/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue @@ -0,0 +1,817 @@ + + + + + diff --git a/uni_modules/uni-data-checkbox/package.json b/uni_modules/uni-data-checkbox/package.json new file mode 100644 index 0000000..51470a9 --- /dev/null +++ b/uni_modules/uni-data-checkbox/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-data-checkbox", + "displayName": "uni-data-checkbox 数据选择器", + "version": "1.0.2", + "description": "通过数据驱动的单选框和复选框", + "keywords": [ + "uni-ui", + "checkbox", + "单选", + "多选", + "单选多选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-load-more","uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-checkbox/readme.md b/uni_modules/uni-data-checkbox/readme.md new file mode 100644 index 0000000..6eb253d --- /dev/null +++ b/uni_modules/uni-data-checkbox/readme.md @@ -0,0 +1,18 @@ + + +## DataCheckbox 数据驱动的单选复选框 +> **组件名:uni-data-checkbox** +> 代码块: `uDataCheckbox` + + +本组件是基于uni-app基础组件checkbox的封装。本组件要解决问题包括: + +1. 数据绑定型组件:给本组件绑定一个data,会自动渲染一组候选内容。再以往,开发者需要编写不少代码实现类似功能 +2. 自动的表单校验:组件绑定了data,且符合[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)组件的表单校验规范,搭配使用会自动实现表单校验 +3. 本组件合并了单选多选 +4. 本组件有若干风格选择,如普通的单选多选框、并列button风格、tag风格。开发者可以快速选择需要的风格。但作为一个封装组件,样式代码虽然不用自己写了,却会牺牲一定的样式自定义性 + +在uniCloud开发中,`DB Schema`中配置了enum枚举等类型后,在web控制台的[自动生成表单](https://uniapp.dcloud.io/uniCloud/schema?id=autocode)功能中,会自动生成``uni-data-checkbox``组件并绑定好data + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-checkbox) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-picker/changelog.md b/uni_modules/uni-data-picker/changelog.md new file mode 100644 index 0000000..083e521 --- /dev/null +++ b/uni_modules/uni-data-picker/changelog.md @@ -0,0 +1,64 @@ +## 1.0.7(2022-07-06) +- 优化 pc端图标位置不正确的问题 +## 1.0.6(2022-07-05) +- 优化 显示样式 +## 1.0.5(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.0.4(2022-04-19) +- 修复 字节小程序 本地数据无法选择下一级的Bug +## 1.0.3(2022-02-25) +- 修复 nvue 不支持的 v-show 的 bug +## 1.0.2(2022-02-25) +- 修复 条件编译 nvue 不支持的 css 样式 +## 1.0.1(2021-11-23) +- 修复 由上个版本引发的map、v-model等属性不生效的bug +## 1.0.0(2021-11-19) +- 优化 组件 UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-data-picker](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +## 0.4.9(2021-10-28) +- 修复 VUE2 v-model 概率无效的 bug +## 0.4.8(2021-10-27) +- 修复 v-model 概率无效的 bug +## 0.4.7(2021-10-25) +- 新增 属性 spaceInfo 服务空间配置 HBuilderX 3.2.11+ +- 修复 树型 uniCloud 数据类型为 int 时报错的 bug +## 0.4.6(2021-10-19) +- 修复 非 VUE3 v-model 为 0 时无法选中的 bug +## 0.4.5(2021-09-26) +- 新增 清除已选项的功能(通过 clearIcon 属性配置是否显示按钮),同时提供 clear 方法以供调用,二者等效 +- 修复 readonly 为 true 时报错的 bug +## 0.4.4(2021-09-26) +- 修复 上一版本造成的 map 属性失效的 bug +- 新增 ellipsis 属性,支持配置 tab 选项长度过长时是否自动省略 +## 0.4.3(2021-09-24) +- 修复 某些情况下级联未触发的 bug +## 0.4.2(2021-09-23) +- 新增 提供 show 和 hide 方法,开发者可以通过 ref 调用 +- 新增 选项内容过长自动添加省略号 +## 0.4.1(2021-09-15) +- 新增 map 属性 字段映射,将 text/value 映射到数据中的其他字段 +## 0.4.0(2021-07-13) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.3.5(2021-06-04) +- 修复 无法加载云端数据的问题 +## 0.3.4(2021-05-28) +- 修复 v-model 无效问题 +- 修复 loaddata 为空数据组时加载时间过长问题 +- 修复 上个版本引出的本地数据无法选择带有 children 的 2 级节点 +## 0.3.3(2021-05-12) +- 新增 组件示例地址 +## 0.3.2(2021-04-22) +- 修复 非树形数据有 where 属性查询报错的问题 +## 0.3.1(2021-04-15) +- 修复 本地数据概率无法回显时问题 +## 0.3.0(2021-04-07) +- 新增 支持云端非树形表结构数据 +- 修复 根节点 parent_field 字段等于 null 时选择界面错乱问题 +## 0.2.0(2021-03-15) +- 修复 nodeclick、popupopened、popupclosed 事件无法触发的问题 +## 0.1.9(2021-03-09) +- 修复 微信小程序某些情况下无法选择的问题 +## 0.1.8(2021-02-05) +- 优化 部分样式在 nvue 上的兼容表现 +## 0.1.7(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue new file mode 100644 index 0000000..410888d --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -0,0 +1,554 @@ + + + + + diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js new file mode 100644 index 0000000..c12fd54 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js @@ -0,0 +1,563 @@ +export default { + props: { + localdata: { + type: [Array, Object], + default () { + return [] + } + }, + spaceInfo: { + type: Object, + default () { + return {} + } + }, + collection: { + type: String, + default: '' + }, + action: { + type: String, + default: '' + }, + field: { + type: String, + default: '' + }, + orderby: { + type: String, + default: '' + }, + where: { + type: [String, Object], + default: '' + }, + pageData: { + type: String, + default: 'add' + }, + pageCurrent: { + type: Number, + default: 1 + }, + pageSize: { + type: Number, + default: 20 + }, + getcount: { + type: [Boolean, String], + default: false + }, + getone: { + type: [Boolean, String], + default: false + }, + gettree: { + type: [Boolean, String], + default: false + }, + manual: { + type: Boolean, + default: false + }, + value: { + type: [Array, String, Number], + default () { + return [] + } + }, + modelValue: { + type: [Array, String, Number], + default () { + return [] + } + }, + preload: { + type: Boolean, + default: false + }, + stepSearh: { + type: Boolean, + default: true + }, + selfField: { + type: String, + default: '' + }, + parentField: { + type: String, + default: '' + }, + multiple: { + type: Boolean, + default: false + }, + map: { + type: Object, + default() { + return { + text: "text", + value: "value" + } + } + } + }, + data() { + return { + loading: false, + errorMessage: '', + loadMore: { + contentdown: '', + contentrefresh: '', + contentnomore: '' + }, + dataList: [], + selected: [], + selectedIndex: 0, + page: { + current: this.pageCurrent, + size: this.pageSize, + count: 0 + } + } + }, + computed: { + isLocaldata() { + return !this.collection.length + }, + postField() { + let fields = [this.field]; + if (this.parentField) { + fields.push(`${this.parentField} as parent_value`); + } + return fields.join(','); + }, + dataValue() { + let isModelValue = Array.isArray(this.modelValue) ? (this.modelValue.length > 0) : (this.modelValue !== null || this.modelValue !== undefined) + return isModelValue ? this.modelValue : this.value + }, + hasValue() { + if (typeof this.dataValue === 'number') { + return true + } + return (this.dataValue != null) && (this.dataValue.length > 0) + } + }, + created() { + this.$watch(() => { + var al = []; + ['pageCurrent', + 'pageSize', + 'spaceInfo', + 'value', + 'modelValue', + 'localdata', + 'collection', + 'action', + 'field', + 'orderby', + 'where', + 'getont', + 'getcount', + 'gettree' + ].forEach(key => { + al.push(this[key]) + }); + return al + }, (newValue, oldValue) => { + let needReset = false + for (let i = 2; i < newValue.length; i++) { + if (newValue[i] != oldValue[i]) { + needReset = true + break + } + } + if (newValue[0] != oldValue[0]) { + this.page.current = this.pageCurrent + } + this.page.size = this.pageSize + + this.onPropsChange() + }) + this._treeData = [] + }, + methods: { + onPropsChange() { + this._treeData = [] + }, + getCommand(options = {}) { + /* eslint-disable no-undef */ + let db = uniCloud.database(this.spaceInfo) + + const action = options.action || this.action + if (action) { + db = db.action(action) + } + + const collection = options.collection || this.collection + db = db.collection(collection) + + const where = options.where || this.where + if (!(!where || !Object.keys(where).length)) { + db = db.where(where) + } + + const field = options.field || this.field + if (field) { + db = db.field(field) + } + + const orderby = options.orderby || this.orderby + if (orderby) { + db = db.orderBy(orderby) + } + + const current = options.pageCurrent !== undefined ? options.pageCurrent : this.page.current + const size = options.pageSize !== undefined ? options.pageSize : this.page.size + const getCount = options.getcount !== undefined ? options.getcount : this.getcount + const getTree = options.gettree !== undefined ? options.gettree : this.gettree + + const getOptions = { + getCount, + getTree + } + if (options.getTreePath) { + getOptions.getTreePath = options.getTreePath + } + + db = db.skip(size * (current - 1)).limit(size).get(getOptions) + + return db + }, + getNodeData(callback) { + if (this.loading) { + return + } + this.loading = true + this.getCommand({ + field: this.postField, + where: this._pathWhere() + }).then((res) => { + this.loading = false + this.selected = res.result.data + callback && callback() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + getTreePath(callback) { + if (this.loading) { + return + } + this.loading = true + + this.getCommand({ + field: this.postField, + getTreePath: { + startWith: `${this.selfField}=='${this.dataValue}'` + } + }).then((res) => { + this.loading = false + let treePath = [] + this._extractTreePath(res.result.data, treePath) + this.selected = treePath + callback && callback() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + loadData() { + if (this.isLocaldata) { + this._processLocalData() + return + } + + if (this.dataValue != null) { + this._loadNodeData((data) => { + this._treeData = data + this._updateBindData() + this._updateSelected() + }) + return + } + + if (this.stepSearh) { + this._loadNodeData((data) => { + this._treeData = data + this._updateBindData() + }) + } else { + this._loadAllData((data) => { + this._treeData = [] + this._extractTree(data, this._treeData, null) + this._updateBindData() + }) + } + }, + _loadAllData(callback) { + if (this.loading) { + return + } + this.loading = true + + this.getCommand({ + field: this.postField, + gettree: true, + startwith: `${this.selfField}=='${this.dataValue}'` + }).then((res) => { + this.loading = false + callback(res.result.data) + this.onDataChange() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + _loadNodeData(callback, pw) { + if (this.loading) { + return + } + this.loading = true + + this.getCommand({ + field: this.postField, + where: pw || this._postWhere(), + pageSize: 500 + }).then((res) => { + this.loading = false + callback(res.result.data) + this.onDataChange() + }).catch((err) => { + this.loading = false + this.errorMessage = err + }) + }, + _pathWhere() { + let result = [] + let where_field = this._getParentNameByField(); + if (where_field) { + result.push(`${where_field} == '${this.dataValue}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + _postWhere() { + let result = [] + let selected = this.selected + let parentField = this.parentField + if (parentField) { + result.push(`${parentField} == null || ${parentField} == ""`) + } + if (selected.length) { + for (var i = 0; i < selected.length - 1; i++) { + result.push(`${parentField} == '${selected[i].value}'`) + } + } + + let where = [] + if (this.where) { + where.push(`(${this.where})`) + } + if (result.length) { + where.push(`(${result.join(' || ')})`) + } + + return where.join(' && ') + }, + _nodeWhere() { + let result = [] + let selected = this.selected + if (selected.length) { + result.push(`${this.parentField} == '${selected[selected.length - 1].value}'`) + } + + if (this.where) { + return `(${this.where}) && (${result.join(' || ')})` + } + + return result.join(' || ') + }, + _getParentNameByField() { + const fields = this.field.split(','); + let where_field = null; + for (let i = 0; i < fields.length; i++) { + const items = fields[i].split('as'); + if (items.length < 2) { + continue; + } + if (items[1].trim() === 'value') { + where_field = items[0].trim(); + break; + } + } + return where_field + }, + _isTreeView() { + return (this.parentField && this.selfField) + }, + _updateSelected() { + var dl = this.dataList + var sl = this.selected + let textField = this.map.text + let valueField = this.map.value + for (var i = 0; i < sl.length; i++) { + var value = sl[i].value + var dl2 = dl[i] + for (var j = 0; j < dl2.length; j++) { + var item2 = dl2[j] + if (item2[valueField] === value) { + sl[i].text = item2[textField] + break + } + } + } + }, + _updateBindData(node) { + const { + dataList, + hasNodes + } = this._filterData(this._treeData, this.selected) + + let isleaf = this._stepSearh === false && !hasNodes + + if (node) { + node.isleaf = isleaf + } + + this.dataList = dataList + this.selectedIndex = dataList.length - 1 + + if (!isleaf && this.selected.length < dataList.length) { + this.selected.push({ + value: null, + text: "请选择" + }) + } + + return { + isleaf, + hasNodes + } + }, + _filterData(data, paths) { + let dataList = [] + let hasNodes = true + + dataList.push(data.filter((item) => { + return (item.parent_value === null || item.parent_value === undefined || item.parent_value === '') + })) + for (let i = 0; i < paths.length; i++) { + var value = paths[i].value + var nodes = data.filter((item) => { + return item.parent_value === value + }) + + if (nodes.length) { + dataList.push(nodes) + } else { + hasNodes = false + } + } + + return { + dataList, + hasNodes + } + }, + _extractTree(nodes, result, parent_value) { + let list = result || [] + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + if (parent_value !== null && parent_value !== undefined && parent_value !== '') { + child.parent_value = parent_value + } + result.push(child) + + let children = node.children + if (children) { + this._extractTree(children, result, node[valueField]) + } + } + }, + _extractTreePath(nodes, result) { + let list = result || [] + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + + let child = {} + for (let key in node) { + if (key !== 'children') { + child[key] = node[key] + } + } + result.push(child) + + let children = node.children + if (children) { + this._extractTreePath(children, result) + } + } + }, + _findNodePath(key, nodes, path = []) { + let textField = this.map.text + let valueField = this.map.value + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i] + let children = node.children + let text = node[textField] + let value = node[valueField] + + path.push({ + value, + text + }) + + if (value === key) { + return path + } + + if (children) { + const p = this._findNodePath(key, children, path) + if (p.length) { + return p + } + } + + path.pop() + } + return [] + }, + _processLocalData() { + this._treeData = [] + this._extractTree(this.localdata, this._treeData) + + var inputValue = this.dataValue + if (inputValue === undefined) { + return + } + + if (Array.isArray(inputValue)) { + inputValue = inputValue[inputValue.length - 1] + if (typeof inputValue === 'object' && inputValue[this.map.value]) { + inputValue = inputValue[this.map.value] + } + } + + this.selected = this._findNodePath(inputValue, this.localdata) + } + } +} diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue new file mode 100644 index 0000000..065aac2 --- /dev/null +++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue @@ -0,0 +1,333 @@ + + + + diff --git a/uni_modules/uni-data-picker/package.json b/uni_modules/uni-data-picker/package.json new file mode 100644 index 0000000..9900380 --- /dev/null +++ b/uni_modules/uni-data-picker/package.json @@ -0,0 +1,93 @@ +{ + "id": "uni-data-picker", + "displayName": "uni-data-picker 数据驱动的picker选择器", + "version": "1.0.7", + "description": "单列、多列级联选择器,常用于省市区城市选择、公司部门选择、多级分类等场景", + "keywords": [ + "uni-ui", + "uniui", + "picker", + "级联", + "省市区", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-load-more", + "uni-icons", + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-data-picker/readme.md b/uni_modules/uni-data-picker/readme.md new file mode 100644 index 0000000..6cda224 --- /dev/null +++ b/uni_modules/uni-data-picker/readme.md @@ -0,0 +1,22 @@ +## DataPicker 级联选择 +> **组件名:uni-data-picker** +> 代码块: `uDataPicker` +> 关联组件:`uni-data-pickerview`、`uni-load-more`。 + + +`` 是一个选择类[datacom组件](https://uniapp.dcloud.net.cn/component/datacom)。 + +支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + +候选数据支持一次性加载完毕,也支持懒加载,比如示例图中,选择了“北京”后,动态加载北京的区县数据。 + +`` 组件尤其适用于地址选择、分类选择等选择类。 + +`` 支持本地数据、云端静态数据(json),uniCloud云数据库数据。 + +`` 可以通过JQL直连uniCloud云数据库,配套[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema),可在schema2code中自动生成前端页面,还支持服务器端校验。 + +在uniCloud数据表中新建表“uni-id-address”和“opendb-city-china”,这2个表的schema自带foreignKey关联。在“uni-id-address”表的表结构页面使用schema2code生成前端页面,会自动生成地址管理的维护页面,自动从“opendb-city-china”表包含的中国所有省市区信息里选择地址。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-data-select/changelog.md b/uni_modules/uni-data-select/changelog.md new file mode 100644 index 0000000..d5beaa3 --- /dev/null +++ b/uni_modules/uni-data-select/changelog.md @@ -0,0 +1,16 @@ +## 0.1.6(2022-07-06) +- 修复 pc端宽度异常的bug +## 0.1.5 +- 修复 pc端宽度异常的bug +## 0.1.4(2022-07-05) +- 优化 显示样式 +## 0.1.3(2022-06-02) +- 修复 localdata 赋值不生效的 bug +- 新增 支持 uni.scss 修改颜色 +- 新增 支持选项禁用(数据选项设置 disabled: true 即禁用) +## 0.1.2(2022-05-08) +- 修复 当 value 为 0 时选择不生效的 bug +## 0.1.1(2022-05-07) +- 新增 记住上次的选项(仅 collection 存在时有效) +## 0.1.0(2022-04-22) +- 初始化 diff --git a/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue new file mode 100644 index 0000000..16995bd --- /dev/null +++ b/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue @@ -0,0 +1,426 @@ + + + + + diff --git a/uni_modules/uni-data-select/package.json b/uni_modules/uni-data-select/package.json new file mode 100644 index 0000000..1ebd8dd --- /dev/null +++ b/uni_modules/uni-data-select/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-data-select", + "displayName": "uni-data-select 下拉框选择器", + "version": "0.1.6", + "description": "通过数据驱动的下拉框选择器", + "keywords": [ + "uni-ui", + "select", + "uni-data-select", + "下拉框", + "下拉选" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.1" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-load-more"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "u", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-data-select/readme.md b/uni_modules/uni-data-select/readme.md new file mode 100644 index 0000000..eb58de3 --- /dev/null +++ b/uni_modules/uni-data-select/readme.md @@ -0,0 +1,8 @@ +## DataSelect 下拉框选择器 +> **组件名:uni-data-select** +> 代码块: `uDataSelect` + +当选项过多时,使用下拉菜单展示并选择内容 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-data-select) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-dateformat/changelog.md b/uni_modules/uni-dateformat/changelog.md new file mode 100644 index 0000000..d551d7b --- /dev/null +++ b/uni_modules/uni-dateformat/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-dateformat](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +## 0.0.5(2021-07-08) +- 调整 默认时间不再是当前时间,而是显示'-'字符 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-04) +- 调整为uni_modules目录规范 +- 修复 iOS 平台日期格式化出错的问题 diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js new file mode 100644 index 0000000..e00d559 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/date-format.js @@ -0,0 +1,200 @@ +// yyyy-MM-dd hh:mm:ss.SSS 所有支持的类型 +function pad(str, length = 2) { + str += '' + while (str.length < length) { + str = '0' + str + } + return str.slice(-length) +} + +const parser = { + yyyy: (dateObj) => { + return pad(dateObj.year, 4) + }, + yy: (dateObj) => { + return pad(dateObj.year) + }, + MM: (dateObj) => { + return pad(dateObj.month) + }, + M: (dateObj) => { + return dateObj.month + }, + dd: (dateObj) => { + return pad(dateObj.day) + }, + d: (dateObj) => { + return dateObj.day + }, + hh: (dateObj) => { + return pad(dateObj.hour) + }, + h: (dateObj) => { + return dateObj.hour + }, + mm: (dateObj) => { + return pad(dateObj.minute) + }, + m: (dateObj) => { + return dateObj.minute + }, + ss: (dateObj) => { + return pad(dateObj.second) + }, + s: (dateObj) => { + return dateObj.second + }, + SSS: (dateObj) => { + return pad(dateObj.millisecond, 3) + }, + S: (dateObj) => { + return dateObj.millisecond + }, +} + +// 这都n年了iOS依然不认识2020-12-12,需要转换为2020/12/12 +function getDate(time) { + if (time instanceof Date) { + return time + } + switch (typeof time) { + case 'string': + { + // 2020-12-12T12:12:12.000Z、2020-12-12T12:12:12.000 + if (time.indexOf('T') > -1) { + return new Date(time) + } + return new Date(time.replace(/-/g, '/')) + } + default: + return new Date(time) + } +} + +export function formatDate(date, format = 'yyyy/MM/dd hh:mm:ss') { + if (!date && date !== 0) { + return '' + } + date = getDate(date) + const dateObj = { + year: date.getFullYear(), + month: date.getMonth() + 1, + day: date.getDate(), + hour: date.getHours(), + minute: date.getMinutes(), + second: date.getSeconds(), + millisecond: date.getMilliseconds() + } + const tokenRegExp = /yyyy|yy|MM|M|dd|d|hh|h|mm|m|ss|s|SSS|SS|S/ + let flag = true + let result = format + while (flag) { + flag = false + result = result.replace(tokenRegExp, function(matched) { + flag = true + return parser[matched](dateObj) + }) + } + return result +} + +export function friendlyDate(time, { + locale = 'zh', + threshold = [60000, 3600000], + format = 'yyyy/MM/dd hh:mm:ss' +}) { + if (time === '-') { + return time + } + if (!time && time !== 0) { + return '' + } + const localeText = { + zh: { + year: '年', + month: '月', + day: '天', + hour: '小时', + minute: '分钟', + second: '秒', + ago: '前', + later: '后', + justNow: '刚刚', + soon: '马上', + template: '{num}{unit}{suffix}' + }, + en: { + year: 'year', + month: 'month', + day: 'day', + hour: 'hour', + minute: 'minute', + second: 'second', + ago: 'ago', + later: 'later', + justNow: 'just now', + soon: 'soon', + template: '{num} {unit} {suffix}' + } + } + const text = localeText[locale] || localeText.zh + let date = getDate(time) + let ms = date.getTime() - Date.now() + let absMs = Math.abs(ms) + if (absMs < threshold[0]) { + return ms < 0 ? text.justNow : text.soon + } + if (absMs >= threshold[1]) { + return formatDate(date, format) + } + let num + let unit + let suffix = text.later + if (ms < 0) { + suffix = text.ago + ms = -ms + } + const seconds = Math.floor((ms) / 1000) + const minutes = Math.floor(seconds / 60) + const hours = Math.floor(minutes / 60) + const days = Math.floor(hours / 24) + const months = Math.floor(days / 30) + const years = Math.floor(months / 12) + switch (true) { + case years > 0: + num = years + unit = text.year + break + case months > 0: + num = months + unit = text.month + break + case days > 0: + num = days + unit = text.day + break + case hours > 0: + num = hours + unit = text.hour + break + case minutes > 0: + num = minutes + unit = text.minute + break + default: + num = seconds + unit = text.second + break + } + + if (locale === 'en') { + if (num === 1) { + num = 'a' + } else { + unit += 's' + } + } + + return text.template.replace(/{\s*num\s*}/g, num + '').replace(/{\s*unit\s*}/g, unit).replace(/{\s*suffix\s*}/g, + suffix) +} diff --git a/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue new file mode 100644 index 0000000..c5ed030 --- /dev/null +++ b/uni_modules/uni-dateformat/components/uni-dateformat/uni-dateformat.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/uni_modules/uni-dateformat/package.json b/uni_modules/uni-dateformat/package.json new file mode 100644 index 0000000..786a670 --- /dev/null +++ b/uni_modules/uni-dateformat/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-dateformat", + "displayName": "uni-dateformat 日期格式化", + "version": "1.0.0", + "description": "日期格式化组件,可以将日期格式化为1分钟前、刚刚等形式", + "keywords": [ + "uni-ui", + "uniui", + "日期格式化", + "时间格式化", + "格式化时间", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-dateformat/readme.md b/uni_modules/uni-dateformat/readme.md new file mode 100644 index 0000000..37ddb6e --- /dev/null +++ b/uni_modules/uni-dateformat/readme.md @@ -0,0 +1,11 @@ + + +### DateFormat 日期格式化 +> **组件名:uni-dateformat** +> 代码块: `uDateformat` + + +日期格式化组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-dateformat) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/changelog.md b/uni_modules/uni-datetime-picker/changelog.md new file mode 100644 index 0000000..5c9735a --- /dev/null +++ b/uni_modules/uni-datetime-picker/changelog.md @@ -0,0 +1,93 @@ +## 2.2.6(2022-06-30) +- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致 +## 2.2.5(2022-06-24) +- 修复 日历顶部年月及底部确认未国际化 bug +## 2.2.4(2022-03-31) +- 修复 Vue3 下动态赋值,单选类型未响应的 bug +## 2.2.3(2022-03-28) +- 修复 Vue3 下动态赋值未响应的 bug +## 2.2.2(2021-12-10) +- 修复 clear-icon 属性在小程序平台不生效的 bug +## 2.2.1(2021-12-10) +- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug +## 2.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +## 2.1.5(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 2.1.4(2021-09-10) +- 修复 hide-second 在移动端的 bug +- 修复 单选赋默认值时,赋值日期未高亮的 bug +- 修复 赋默认值时,移动端未正确显示时间的 bug +## 2.1.3(2021-09-09) +- 新增 hide-second 属性,支持只使用时分,隐藏秒 +## 2.1.2(2021-09-03) +- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次 +- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法 +- 优化 调整字号大小,美化日历界面 +- 修复 因国际化导致的 placeholder 失效的 bug +## 2.1.1(2021-08-24) +- 新增 支持国际化 +- 优化 范围选择器在 pc 端过宽的问题 +## 2.1.0(2021-08-09) +- 新增 适配 vue3 +## 2.0.19(2021-08-09) +- 新增 支持作为 uni-forms 子组件相关功能 +- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug +## 2.0.18(2021-08-05) +- 修复 type 属性动态赋值无效的 bug +- 修复 ‘确认’按钮被 tabbar 遮盖 bug +- 修复 组件未赋值时范围选左、右日历相同的 bug +## 2.0.17(2021-08-04) +- 修复 范围选未正确显示当前值的 bug +- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug +## 2.0.16(2021-07-21) +- 新增 return-type 属性支持返回 date 日期对象 +## 2.0.15(2021-07-14) +- 修复 单选日期类型,初始赋值后不在当前日历的 bug +- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效) +- 优化 移动端移除显示框的清空按钮,无实际用途 +## 2.0.14(2021-07-14) +- 修复 组件赋值为空,界面未更新的 bug +- 修复 start 和 end 不能动态赋值的 bug +- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug +## 2.0.13(2021-07-08) +- 修复 范围选择不能动态赋值的 bug +## 2.0.12(2021-07-08) +- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug +## 2.0.11(2021-07-08) +- 优化 弹出层在超出视窗边缘定位不准确的问题 +## 2.0.10(2021-07-08) +- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug +- 优化 弹出层在超出视窗边缘被遮盖的问题 +## 2.0.9(2021-07-07) +- 新增 maskClick 事件 +- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px +- 修复 范围选择时清空返回值不合理的bug,['', ''] -> [] +## 2.0.8(2021-07-07) +- 新增 日期时间显示框支持插槽 +## 2.0.7(2021-07-01) +- 优化 添加 uni-icons 依赖 +## 2.0.6(2021-05-22) +- 修复 图标在小程序上不显示的 bug +- 优化 重命名引用组件,避免潜在组件命名冲突 +## 2.0.5(2021-05-20) +- 优化 代码目录扁平化 +## 2.0.4(2021-05-12) +- 新增 组件示例地址 +## 2.0.3(2021-05-10) +- 修复 ios 下不识别 '-' 日期格式的 bug +- 优化 pc 下弹出层添加边框和阴影 +## 2.0.2(2021-05-08) +- 修复 在 admin 中获取弹出层定位错误的bug +## 2.0.1(2021-05-08) +- 修复 type 属性向下兼容,默认值从 date 变更为 datetime +## 2.0.0(2021-04-30) +- 支持日历形式的日期+时间的范围选择 + > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker) +## 1.0.6(2021-03-18) +- 新增 hide-second 属性,时间支持仅选择时、分 +- 修复 选择跟显示的日期不一样的 bug +- 修复 chang事件触发2次的 bug +- 修复 分、秒 end 范围错误的 bug +- 优化 更好的 nvue 适配 diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue new file mode 100644 index 0000000..3d2dbea --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.js new file mode 100644 index 0000000..b8d7d6f --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.js @@ -0,0 +1,546 @@ +/** +* @1900-2100区间内的公历、农历互转 +* @charset UTF-8 +* @github https://github.com/jjonline/calendar.js +* @Author Jea杨(JJonline@JJonline.Cn) +* @Time 2014-7-21 +* @Time 2016-8-13 Fixed 2033hex、Attribution Annals +* @Time 2016-9-25 Fixed lunar LeapMonth Param Bug +* @Time 2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year +* @Version 1.0.3 +* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0] +* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0] +*/ +/* eslint-disable */ +var calendar = { + + /** + * 农历1900-2100的润大小信息表 + * @Array Of Property + * @return Hex + */ + lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909 + 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919 + 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929 + 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939 + 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949 + 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959 + 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969 + 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979 + 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989 + 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999 + 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009 + 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019 + 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029 + 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039 + 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049 + /** Add By JJonline@JJonline.Cn**/ + 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059 + 0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069 + 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079 + 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089 + 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099 + 0x0d520], // 2100 + + /** + * 公历每个月份的天数普通表 + * @Array Of Property + * @return Number + */ + solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + + /** + * 天干地支之天干速查表 + * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] + * @return Cn string + */ + Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'], + + /** + * 天干地支之地支速查表 + * @Array Of Property + * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] + * @return Cn string + */ + Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'], + + /** + * 天干地支之地支速查表<=>生肖 + * @Array Of Property + * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] + * @return Cn string + */ + Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'], + + /** + * 24节气速查表 + * @Array Of Property + * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"] + * @return Cn string + */ + solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'], + + /** + * 1900-2100各年的24节气日期速查表 + * @Array Of Property + * @return 0x string For splice + */ + sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', + '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', + 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa', + '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f', + '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', + '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722', + '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f', + '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722', + '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', + '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e', + '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', + '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa', + '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2', + '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722', + '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', + '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', + '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722', + '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721', + '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd', + '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35', + '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', + '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721', + '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5', + '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35', + '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', + '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd', + '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35', + '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'], + + /** + * 数字转中文速查表 + * @Array Of Property + * @trans ['日','一','二','三','四','五','六','七','八','九','十'] + * @return Cn string + */ + nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'], + + /** + * 日期转农历称呼速查表 + * @Array Of Property + * @trans ['初','十','廿','卅'] + * @return Cn string + */ + nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'], + + /** + * 月份转农历称呼速查表 + * @Array Of Property + * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊'] + * @return Cn string + */ + nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'], + + /** + * 返回农历y年一整年的总天数 + * @param lunar Year + * @return Number + * @eg:var count = calendar.lYearDays(1987) ;//count=387 + */ + lYearDays: function (y) { + var i; var sum = 348 + for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 } + return (sum + this.leapDays(y)) + }, + + /** + * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0 + * @param lunar Year + * @return Number (0-12) + * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6 + */ + leapMonth: function (y) { // 闰字编码 \u95f0 + return (this.lunarInfo[y - 1900] & 0xf) + }, + + /** + * 返回农历y年闰月的天数 若该年没有闰月则返回0 + * @param lunar Year + * @return Number (0、29、30) + * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29 + */ + leapDays: function (y) { + if (this.leapMonth(y)) { + return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29) + } + return (0) + }, + + /** + * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法 + * @param lunar Year + * @return Number (-1、29、30) + * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29 + */ + monthDays: function (y, m) { + if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1 + return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) + }, + + /** + * 返回公历(!)y年m月的天数 + * @param solar Year + * @return Number (-1、28、29、30、31) + * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30 + */ + solarDays: function (y, m) { + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var ms = m - 1 + if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29 + return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28) + } else { + return (this.solarMonth[ms]) + } + }, + + /** + * 农历年份转换为干支纪年 + * @param lYear 农历年的年份数 + * @return Cn string + */ + toGanZhiYear: function (lYear) { + var ganKey = (lYear - 3) % 10 + var zhiKey = (lYear - 3) % 12 + if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干 + if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支 + return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1] + }, + + /** + * 公历月、日判断所属星座 + * @param cMonth [description] + * @param cDay [description] + * @return Cn string + */ + toAstro: function (cMonth, cDay) { + var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf' + var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22] + return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座 + }, + + /** + * 传入offset偏移量返回干支 + * @param offset 相对甲子的偏移量 + * @return Cn string + */ + toGanZhi: function (offset) { + return this.Gan[offset % 10] + this.Zhi[offset % 12] + }, + + /** + * 传入公历(!)y年获得该年第n个节气的公历日期 + * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起 + * @return day Number + * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春 + */ + getTerm: function (y, n) { + if (y < 1900 || y > 2100) { return -1 } + if (n < 1 || n > 24) { return -1 } + var _table = this.sTermInfo[y - 1900] + var _info = [ + parseInt('0x' + _table.substr(0, 5)).toString(), + parseInt('0x' + _table.substr(5, 5)).toString(), + parseInt('0x' + _table.substr(10, 5)).toString(), + parseInt('0x' + _table.substr(15, 5)).toString(), + parseInt('0x' + _table.substr(20, 5)).toString(), + parseInt('0x' + _table.substr(25, 5)).toString() + ] + var _calday = [ + _info[0].substr(0, 1), + _info[0].substr(1, 2), + _info[0].substr(3, 1), + _info[0].substr(4, 2), + + _info[1].substr(0, 1), + _info[1].substr(1, 2), + _info[1].substr(3, 1), + _info[1].substr(4, 2), + + _info[2].substr(0, 1), + _info[2].substr(1, 2), + _info[2].substr(3, 1), + _info[2].substr(4, 2), + + _info[3].substr(0, 1), + _info[3].substr(1, 2), + _info[3].substr(3, 1), + _info[3].substr(4, 2), + + _info[4].substr(0, 1), + _info[4].substr(1, 2), + _info[4].substr(3, 1), + _info[4].substr(4, 2), + + _info[5].substr(0, 1), + _info[5].substr(1, 2), + _info[5].substr(3, 1), + _info[5].substr(4, 2) + ] + return parseInt(_calday[n - 1]) + }, + + /** + * 传入农历数字月份返回汉语通俗表示法 + * @param lunar month + * @return Cn string + * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月' + */ + toChinaMonth: function (m) { // 月 => \u6708 + if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1 + var s = this.nStr3[m - 1] + s += '\u6708'// 加上月字 + return s + }, + + /** + * 传入农历日期数字返回汉字表示法 + * @param lunar day + * @return Cn string + * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一' + */ + toChinaDay: function (d) { // 日 => \u65e5 + var s + switch (d) { + case 10: + s = '\u521d\u5341'; break + case 20: + s = '\u4e8c\u5341'; break + break + case 30: + s = '\u4e09\u5341'; break + break + default : + s = this.nStr2[Math.floor(d / 10)] + s += this.nStr1[d % 10] + } + return (s) + }, + + /** + * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春” + * @param y year + * @return Cn string + * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔' + */ + getAnimal: function (y) { + return this.Animals[(y - 4) % 12] + }, + + /** + * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON + * @param y solar year + * @param m solar month + * @param d solar day + * @return JSON object + * @eg:console.log(calendar.solar2lunar(1987,11,01)); + */ + solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31 + // 年份限定、上限 + if (y < 1900 || y > 2100) { + return -1// undefined转换为数字变为NaN + } + // 公历传参最下限 + if (y == 1900 && m == 1 && d < 31) { + return -1 + } + // 未传参 获得当天 + if (!y) { + var objDate = new Date() + } else { + var objDate = new Date(y, parseInt(m) - 1, d) + } + var i; var leap = 0; var temp = 0 + // 修正ymd参数 + var y = objDate.getFullYear() + var m = objDate.getMonth() + 1 + var d = objDate.getDate() + var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000 + for (i = 1900; i < 2101 && offset > 0; i++) { + temp = this.lYearDays(i) + offset -= temp + } + if (offset < 0) { + offset += temp; i-- + } + + // 是否今天 + var isTodayObj = new Date() + var isToday = false + if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) { + isToday = true + } + // 星期几 + var nWeek = objDate.getDay() + var cWeek = this.nStr1[nWeek] + // 数字表示周几顺应天朝周一开始的惯例 + if (nWeek == 0) { + nWeek = 7 + } + // 农历年 + var year = i + var leap = this.leapMonth(i) // 闰哪个月 + var isLeap = false + + // 效验闰月 + for (i = 1; i < 13 && offset > 0; i++) { + // 闰月 + if (leap > 0 && i == (leap + 1) && isLeap == false) { + --i + isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数 + } else { + temp = this.monthDays(year, i)// 计算农历普通月天数 + } + // 解除闰月 + if (isLeap == true && i == (leap + 1)) { isLeap = false } + offset -= temp + } + // 闰月导致数组下标重叠取反 + if (offset == 0 && leap > 0 && i == leap + 1) { + if (isLeap) { + isLeap = false + } else { + isLeap = true; --i + } + } + if (offset < 0) { + offset += temp; --i + } + // 农历月 + var month = i + // 农历日 + var day = offset + 1 + // 天干地支处理 + var sm = m - 1 + var gzY = this.toGanZhiYear(year) + + // 当月的两个节气 + // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year` + var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始 + var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始 + + // 依据12节气修正干支月 + var gzM = this.toGanZhi((y - 1900) * 12 + m + 11) + if (d >= firstNode) { + gzM = this.toGanZhi((y - 1900) * 12 + m + 12) + } + + // 传入的日期的节气与否 + var isTerm = false + var Term = null + if (firstNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 2] + } + if (secondNode == d) { + isTerm = true + Term = this.solarTerm[m * 2 - 1] + } + // 日柱 当月一日与 1900/1/1 相差天数 + var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10 + var gzD = this.toGanZhi(dayCyclical + d - 1) + // 该日期所属的星座 + var astro = this.toAstro(m, d) + + return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro } + }, + + /** + * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON + * @param y lunar year + * @param m lunar month + * @param d lunar day + * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可] + * @return JSON object + * @eg:console.log(calendar.lunar2solar(1987,9,10)); + */ + lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1 + var isLeapMonth = !!isLeapMonth + var leapOffset = 0 + var leapMonth = this.leapMonth(y) + var leapDay = this.leapDays(y) + if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同 + if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值 + var day = this.monthDays(y, m) + var _day = day + // bugFix 2016-9-25 + // if month is leap, _day use leapDays method + if (isLeapMonth) { + _day = this.leapDays(y, m) + } + if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验 + + // 计算农历的时间差 + var offset = 0 + for (var i = 1900; i < y; i++) { + offset += this.lYearDays(i) + } + var leap = 0; var isAdd = false + for (var i = 1; i < m; i++) { + leap = this.leapMonth(y) + if (!isAdd) { // 处理闰月 + if (leap <= i && leap > 0) { + offset += this.leapDays(y); isAdd = true + } + } + offset += this.monthDays(y, i) + } + // 转换闰月农历 需补充该年闰月的前一个月的时差 + if (isLeapMonth) { offset += day } + // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点) + var stmap = Date.UTC(1900, 1, 30, 0, 0, 0) + var calObj = new Date((offset + d - 31) * 86400000 + stmap) + var cY = calObj.getUTCFullYear() + var cM = calObj.getUTCMonth() + 1 + var cD = calObj.getUTCDate() + + return this.solar2lunar(cY, cM, cD) + } +} + +export default calendar diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue new file mode 100644 index 0000000..8f7f181 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue @@ -0,0 +1,907 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json new file mode 100644 index 0000000..9acf1ab --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "select date", + "uni-datetime-picker.selectTime": "select time", + "uni-datetime-picker.selectDateTime": "select datetime", + "uni-datetime-picker.startDate": "start date", + "uni-datetime-picker.endDate": "end date", + "uni-datetime-picker.startTime": "start time", + "uni-datetime-picker.endTime": "end time", + "uni-datetime-picker.ok": "ok", + "uni-datetime-picker.clear": "clear", + "uni-datetime-picker.cancel": "cancel", + "uni-datetime-picker.year": "-", + "uni-datetime-picker.month": "", + "uni-calender.MON": "MON", + "uni-calender.TUE": "TUE", + "uni-calender.WED": "WED", + "uni-calender.THU": "THU", + "uni-calender.FRI": "FRI", + "uni-calender.SAT": "SAT", + "uni-calender.SUN": "SUN", + "uni-calender.confirm": "confirm" +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json new file mode 100644 index 0000000..d2df5e7 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "选择日期", + "uni-datetime-picker.selectTime": "选择时间", + "uni-datetime-picker.selectDateTime": "选择日期时间", + "uni-datetime-picker.startDate": "开始日期", + "uni-datetime-picker.endDate": "结束日期", + "uni-datetime-picker.startTime": "开始时间", + "uni-datetime-picker.endTime": "结束时间", + "uni-datetime-picker.ok": "确定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "确认" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json new file mode 100644 index 0000000..d23fa3c --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json @@ -0,0 +1,22 @@ +{ + "uni-datetime-picker.selectDate": "選擇日期", + "uni-datetime-picker.selectTime": "選擇時間", + "uni-datetime-picker.selectDateTime": "選擇日期時間", + "uni-datetime-picker.startDate": "開始日期", + "uni-datetime-picker.endDate": "結束日期", + "uni-datetime-picker.startTime": "開始时间", + "uni-datetime-picker.endTime": "結束时间", + "uni-datetime-picker.ok": "確定", + "uni-datetime-picker.clear": "清除", + "uni-datetime-picker.cancel": "取消", + "uni-datetime-picker.year": "年", + "uni-datetime-picker.month": "月", + "uni-calender.SUN": "日", + "uni-calender.MON": "一", + "uni-calender.TUE": "二", + "uni-calender.WED": "三", + "uni-calender.THU": "四", + "uni-calender.FRI": "五", + "uni-calender.SAT": "六", + "uni-calender.confirm": "確認" +} \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js new file mode 100644 index 0000000..9601aba --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif \ No newline at end of file diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue new file mode 100644 index 0000000..699aa63 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue @@ -0,0 +1,927 @@ + + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue new file mode 100644 index 0000000..9bdf8bc --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue @@ -0,0 +1,1012 @@ + + + + diff --git a/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js new file mode 100644 index 0000000..efa5773 --- /dev/null +++ b/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js @@ -0,0 +1,410 @@ +class Calendar { + constructor({ + date, + selected, + startDate, + endDate, + range, + // multipleStatus + } = {}) { + // 当前日期 + this.date = this.getDate(new Date()) // 当前初入日期 + // 打点信息 + this.selected = selected || []; + // 范围开始 + this.startDate = startDate + // 范围结束 + this.endDate = endDate + this.range = range + // 多选状态 + this.cleanMultipleStatus() + // 每周日期 + this.weeks = {} + // this._getWeek(this.date.fullDate) + // this.multipleStatus = multipleStatus + this.lastHover = false + } + /** + * 设置日期 + * @param {Object} date + */ + setDate(date) { + this.selectDate = this.getDate(date) + this._getWeek(this.selectDate.fullDate) + } + + /** + * 清理多选状态 + */ + cleanMultipleStatus() { + this.multipleStatus = { + before: '', + after: '', + data: [] + } + } + + /** + * 重置开始日期 + */ + resetSatrtDate(startDate) { + // 范围开始 + this.startDate = startDate + + } + + /** + * 重置结束日期 + */ + resetEndDate(endDate) { + // 范围结束 + this.endDate = endDate + } + + /** + * 获取任意时间 + */ + getDate(date, AddDayCount = 0, str = 'day') { + if (!date) { + date = new Date() + } + if (typeof date !== 'object') { + date = date.replace(/-/g, '/') + } + const dd = new Date(date) + switch (str) { + case 'day': + dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 + break + case 'month': + if (dd.getDate() === 31) { + dd.setDate(dd.getDate() + AddDayCount) + } else { + dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期 + } + break + case 'year': + dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期 + break + } + const y = dd.getFullYear() + const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 + const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 + return { + fullDate: y + '-' + m + '-' + d, + year: y, + month: m, + date: d, + day: dd.getDay() + } + } + + + /** + * 获取上月剩余天数 + */ + _getLastMonthDays(firstDay, full) { + let dateArr = [] + for (let i = firstDay; i > 0; i--) { + const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate() + dateArr.push({ + date: beforeDate, + month: full.month - 1, + disable: true + }) + } + return dateArr + } + /** + * 获取本月天数 + */ + _currentMonthDys(dateData, full) { + let dateArr = [] + let fullDate = this.date.fullDate + for (let i = 1; i <= dateData; i++) { + let isinfo = false + let nowDate = full.year + '-' + (full.month < 10 ? + full.month : full.month) + '-' + (i < 10 ? + '0' + i : i) + // 是否今天 + let isDay = fullDate === nowDate + // 获取打点信息 + let info = this.selected && this.selected.find((item) => { + if (this.dateEqual(nowDate, item.date)) { + return item + } + }) + + // 日期禁用 + let disableBefore = true + let disableAfter = true + if (this.startDate) { + // let dateCompBefore = this.dateCompare(this.startDate, fullDate) + // disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate) + disableBefore = this.dateCompare(this.startDate, nowDate) + } + + if (this.endDate) { + // let dateCompAfter = this.dateCompare(fullDate, this.endDate) + // disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate) + disableAfter = this.dateCompare(nowDate, this.endDate) + } + let multiples = this.multipleStatus.data + let checked = false + let multiplesStatus = -1 + if (this.range) { + if (multiples) { + multiplesStatus = multiples.findIndex((item) => { + return this.dateEqual(item, nowDate) + }) + } + if (multiplesStatus !== -1) { + checked = true + } + } + let data = { + fullDate: nowDate, + year: full.year, + date: i, + multiple: this.range ? checked : false, + beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after), + afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after), + month: full.month, + disable: !(disableBefore && disableAfter), + isDay, + userChecked: false + } + if (info) { + data.extraInfo = info + } + + dateArr.push(data) + } + return dateArr + } + /** + * 获取下月天数 + */ + _getNextMonthDays(surplus, full) { + let dateArr = [] + for (let i = 1; i < surplus + 1; i++) { + dateArr.push({ + date: i, + month: Number(full.month) + 1, + disable: true + }) + } + return dateArr + } + + /** + * 获取当前日期详情 + * @param {Object} date + */ + getInfo(date) { + if (!date) { + date = new Date() + } + const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate) + return dateInfo + } + + /** + * 比较时间大小 + */ + dateCompare(startDate, endDate) { + // 计算截止时间 + startDate = new Date(startDate.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + endDate = new Date(endDate.replace('-', '/').replace('-', '/')) + if (startDate <= endDate) { + return true + } else { + return false + } + } + + /** + * 比较时间是否相等 + */ + dateEqual(before, after) { + // 计算截止时间 + before = new Date(before.replace('-', '/').replace('-', '/')) + // 计算详细项的截止时间 + after = new Date(after.replace('-', '/').replace('-', '/')) + if (before.getTime() - after.getTime() === 0) { + return true + } else { + return false + } + } + + /** + * 比较真实起始日期 + */ + + isLogicBefore(currentDay, before, after) { + let logicBefore = before + if (before && after) { + logicBefore = this.dateCompare(before, after) ? before : after + } + return this.dateEqual(logicBefore, currentDay) + } + + isLogicAfter(currentDay, before, after) { + let logicAfter = after + if (before && after) { + logicAfter = this.dateCompare(before, after) ? after : before + } + return this.dateEqual(logicAfter, currentDay) + } + + /** + * 获取日期范围内所有日期 + * @param {Object} begin + * @param {Object} end + */ + geDateAll(begin, end) { + var arr = [] + var ab = begin.split('-') + var ae = end.split('-') + var db = new Date() + db.setFullYear(ab[0], ab[1] - 1, ab[2]) + var de = new Date() + de.setFullYear(ae[0], ae[1] - 1, ae[2]) + var unixDb = db.getTime() - 24 * 60 * 60 * 1000 + var unixDe = de.getTime() - 24 * 60 * 60 * 1000 + for (var k = unixDb; k <= unixDe;) { + k = k + 24 * 60 * 60 * 1000 + arr.push(this.getDate(new Date(parseInt(k))).fullDate) + } + return arr + } + + /** + * 获取多选状态 + */ + setMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + if (!this.range) return + if (before && after) { + if (!this.lastHover) { + this.lastHover = true + return + } + this.multipleStatus.before = fullDate + this.multipleStatus.after = '' + this.multipleStatus.data = [] + this.multipleStatus.fulldate = '' + this.lastHover = false + } else { + if (!before) { + this.multipleStatus.before = fullDate + this.lastHover = false + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus + .after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus + .before); + } + this.lastHover = true + } + } + this._getWeek(fullDate) + } + + /** + * 鼠标 hover 更新多选状态 + */ + setHoverMultiple(fullDate) { + let { + before, + after + } = this.multipleStatus + + if (!this.range) return + if (this.lastHover) return + + if (!before) { + this.multipleStatus.before = fullDate + } else { + this.multipleStatus.after = fullDate + if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after); + } else { + this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before); + } + } + this._getWeek(fullDate) + } + + /** + * 更新默认值多选状态 + */ + setDefaultMultiple(before, after) { + this.multipleStatus.before = before + this.multipleStatus.after = after + if (before && after) { + if (this.dateCompare(before, after)) { + this.multipleStatus.data = this.geDateAll(before, after); + this._getWeek(after) + } else { + this.multipleStatus.data = this.geDateAll(after, before); + this._getWeek(before) + } + } + } + + /** + * 获取每周数据 + * @param {Object} dateData + */ + _getWeek(dateData) { + const { + fullDate, + year, + month, + date, + day + } = this.getDate(dateData) + let firstDay = new Date(year, month - 1, 1).getDay() + let currentDay = new Date(year, month, 0).getDate() + let dates = { + lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天 + currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数 + nextMonthDays: [], // 下个月开始几天 + weeks: [] + } + let canlender = [] + const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length) + dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData)) + canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays) + let weeks = {} + // 拼接数组 上个月开始几天 + 本月天数+ 下个月开始几天 + for (let i = 0; i < canlender.length; i++) { + if (i % 7 === 0) { + weeks[parseInt(i / 7)] = new Array(7) + } + weeks[parseInt(i / 7)][i % 7] = canlender[i] + } + this.canlender = canlender + this.weeks = weeks + } + + //静态方法 + // static init(date) { + // if (!this.instance) { + // this.instance = new Calendar(date); + // } + // return this.instance; + // } +} + + +export default Calendar diff --git a/uni_modules/uni-datetime-picker/package.json b/uni_modules/uni-datetime-picker/package.json new file mode 100644 index 0000000..60fa1d0 --- /dev/null +++ b/uni_modules/uni-datetime-picker/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-datetime-picker", + "displayName": "uni-datetime-picker 日期选择器", + "version": "2.2.6", + "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择", + "keywords": [ + "uni-datetime-picker", + "uni-ui", + "uniui", + "日期时间选择器", + "日期时间" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-datetime-picker/readme.md b/uni_modules/uni-datetime-picker/readme.md new file mode 100644 index 0000000..162fbef --- /dev/null +++ b/uni_modules/uni-datetime-picker/readme.md @@ -0,0 +1,21 @@ + + +> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护` + +## DatetimePicker 时间选择器 + +> **组件名:uni-datetime-picker** +> 代码块: `uDatetimePicker` + + +该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。 + +若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。 + +**_点击 picker 默认值规则:_** + +- 若设置初始值 value, 会显示在 picker 显示框中 +- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-drawer/changelog.md b/uni_modules/uni-drawer/changelog.md new file mode 100644 index 0000000..6d2488c --- /dev/null +++ b/uni_modules/uni-drawer/changelog.md @@ -0,0 +1,13 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中个别scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-drawer](https://uniapp.dcloud.io/component/uniui/uni-drawer) +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-04) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-drawer/components/uni-drawer/keypress.js b/uni_modules/uni-drawer/components/uni-drawer/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue new file mode 100644 index 0000000..2471521 --- /dev/null +++ b/uni_modules/uni-drawer/components/uni-drawer/uni-drawer.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/uni_modules/uni-drawer/package.json b/uni_modules/uni-drawer/package.json new file mode 100644 index 0000000..dd056e4 --- /dev/null +++ b/uni_modules/uni-drawer/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-drawer", + "displayName": "uni-drawer 抽屉", + "version": "1.2.1", + "description": "抽屉式导航,用于展示侧滑菜单,侧滑导航。", + "keywords": [ + "uni-ui", + "uniui", + "drawer", + "抽屉", + "侧滑导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-drawer/readme.md b/uni_modules/uni-drawer/readme.md new file mode 100644 index 0000000..dcf6e6b --- /dev/null +++ b/uni_modules/uni-drawer/readme.md @@ -0,0 +1,10 @@ + + +## Drawer 抽屉 +> **组件名:uni-drawer** +> 代码块: `uDrawer` + +抽屉侧滑菜单。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-drawer) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-easyinput/changelog.md b/uni_modules/uni-easyinput/changelog.md new file mode 100644 index 0000000..1e8c6f9 --- /dev/null +++ b/uni_modules/uni-easyinput/changelog.md @@ -0,0 +1,47 @@ +## 1.1.0(2022-06-30) +- 新增 在 uni-forms 1.4.0 中使用可以在 blur 时校验内容 +- 新增 clear 事件,点击右侧叉号图标触发 +- 新增 change 事件 ,仅在输入框失去焦点或用户按下回车时触发 +- 优化 组件样式,组件获取焦点时高亮显示,图标颜色调整等 +- +## 1.0.5(2022-06-07) +- 优化 clearable 显示策略 +## 1.0.4(2022-06-07) +- 优化 clearable 显示策略 +## 1.0.3(2022-05-20) +- 修复 关闭图标某些情况下无法取消的bug +## 1.0.2(2022-04-12) +- 修复 默认值不生效的bug +## 1.0.1(2022-04-02) +- 修复 value不能为0的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-easyinput](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +## 0.1.4(2021-08-20) +- 修复 在 uni-forms 的动态表单中默认值校验不通过的 bug +## 0.1.3(2021-08-11) +- 修复 在 uni-forms 中重置表单,错误信息无法清除的问题 +## 0.1.2(2021-07-30) +- 优化 vue3下事件警告的问题 +## 0.1.1 +- 优化 errorMessage 属性支持 Boolean 类型 +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.16(2021-06-29) +- 修复 confirmType 属性(仅 type="text" 生效)导致多行文本框无法换行的 bug +## 0.0.15(2021-06-21) +- 修复 passwordIcon 属性拼写错误的 bug +## 0.0.14(2021-06-18) +- 新增 passwordIcon 属性,当type=password时是否显示小眼睛图标 +- 修复 confirmType 属性不生效的问题 +## 0.0.13(2021-06-04) +- 修复 disabled 状态可清出内容的 bug +## 0.0.12(2021-05-12) +- 新增 组件示例地址 +## 0.0.11(2021-05-07) +- 修复 input-border 属性不生效的问题 +## 0.0.10(2021-04-30) +- 修复 ios 遮挡文字、显示一半的问题 +## 0.0.9(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/uni_modules/uni-easyinput/components/uni-easyinput/common.js new file mode 100644 index 0000000..df9abe1 --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/common.js @@ -0,0 +1,56 @@ +/** + * @desc 函数防抖 + * @param func 目标函数 + * @param wait 延迟执行毫秒数 + * @param immediate true - 立即执行, false - 延迟执行 + */ +export const debounce = function(func, wait = 1000, immediate = true) { + let timer; + console.log(1); + return function() { + console.log(123); + let context = this, + args = arguments; + if (timer) clearTimeout(timer); + if (immediate) { + let callNow = !timer; + timer = setTimeout(() => { + timer = null; + }, wait); + if (callNow) func.apply(context, args); + } else { + timer = setTimeout(() => { + func.apply(context, args); + }, wait) + } + } +} +/** + * @desc 函数节流 + * @param func 函数 + * @param wait 延迟执行毫秒数 + * @param type 1 使用表时间戳,在时间段开始的时候触发 2 使用表定时器,在时间段结束的时候触发 + */ +export const throttle = (func, wait = 1000, type = 1) => { + let previous = 0; + let timeout; + return function() { + let context = this; + let args = arguments; + if (type === 1) { + let now = Date.now(); + + if (now - previous > wait) { + func.apply(context, args); + previous = now; + } + } else if (type === 2) { + if (!timeout) { + timeout = setTimeout(() => { + timeout = null; + func.apply(context, args) + }, wait) + } + } + } +} diff --git a/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue new file mode 100644 index 0000000..5818d7f --- /dev/null +++ b/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue @@ -0,0 +1,593 @@ + + + + + diff --git a/uni_modules/uni-easyinput/package.json b/uni_modules/uni-easyinput/package.json new file mode 100644 index 0000000..3cc793e --- /dev/null +++ b/uni_modules/uni-easyinput/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-easyinput", + "displayName": "uni-easyinput 增强输入框", + "version": "1.1.0", + "description": "Easyinput 组件是对原生input组件的增强", + "keywords": [ + "uni-ui", + "uniui", + "input", + "uni-easyinput", + "输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-easyinput/readme.md b/uni_modules/uni-easyinput/readme.md new file mode 100644 index 0000000..f1faf8f --- /dev/null +++ b/uni_modules/uni-easyinput/readme.md @@ -0,0 +1,11 @@ + + +### Easyinput 增强输入框 +> **组件名:uni-easyinput** +> 代码块: `uEasyinput` + + +easyinput 组件是对原生input组件的增强 ,是专门为配合表单组件[uni-forms](https://ext.dcloud.net.cn/plugin?id=2773)而设计的,easyinput 内置了边框,图标等,同时包含 input 所有功能 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-easyinput) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fab/changelog.md b/uni_modules/uni-fab/changelog.md new file mode 100644 index 0000000..24e26b1 --- /dev/null +++ b/uni_modules/uni-fab/changelog.md @@ -0,0 +1,17 @@ +## 1.2.2(2021-12-29) +- 更新 组件依赖 +## 1.2.1(2021-11-19) +- 修复 阴影颜色不正确的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fab](https://uniapp.dcloud.io/component/uniui/uni-fab) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 按钮背景色调整 +- 优化 兼容pc端 diff --git a/uni_modules/uni-fab/components/uni-fab/uni-fab.vue b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue new file mode 100644 index 0000000..bef97f1 --- /dev/null +++ b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue @@ -0,0 +1,475 @@ + + + + + diff --git a/uni_modules/uni-fab/components/uni-fab/uni-fab.vue.bak b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue.bak new file mode 100644 index 0000000..5adc72a --- /dev/null +++ b/uni_modules/uni-fab/components/uni-fab/uni-fab.vue.bak @@ -0,0 +1,379 @@ + + + + + diff --git a/uni_modules/uni-fab/package.json b/uni_modules/uni-fab/package.json new file mode 100644 index 0000000..0f27daa --- /dev/null +++ b/uni_modules/uni-fab/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-fab", + "displayName": "uni-fab 悬浮按钮", + "version": "1.2.2", + "description": "悬浮按钮 fab button ,点击可展开一个图标按钮菜单。", + "keywords": [ + "uni-ui", + "uniui", + "按钮", + "悬浮按钮", + "fab" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fab/readme.md b/uni_modules/uni-fab/readme.md new file mode 100644 index 0000000..9a444e8 --- /dev/null +++ b/uni_modules/uni-fab/readme.md @@ -0,0 +1,9 @@ +## Fab 悬浮按钮 +> **组件名:uni-fab** +> 代码块: `uFab` + + +点击可展开一个图形按钮菜单 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fab) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-fav/changelog.md b/uni_modules/uni-fav/changelog.md new file mode 100644 index 0000000..d8a08d4 --- /dev/null +++ b/uni_modules/uni-fav/changelog.md @@ -0,0 +1,19 @@ +## 1.2.1(2022-05-30) +- 新增 stat 属性 ,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-fav](https://uniapp.dcloud.io/component/uniui/uni-fav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 组件示例地址 +## 1.0.5(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.4(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.3(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/en.json b/uni_modules/uni-fav/components/uni-fav/i18n/en.json new file mode 100644 index 0000000..9a0759e --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "collect", + "uni-fav.collected": "collected" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/index.js b/uni_modules/uni-fav/components/uni-fav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json new file mode 100644 index 0000000..67c89bf --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-fav.collect": "收藏", + "uni-fav.collected": "已收藏" +} diff --git a/uni_modules/uni-fav/components/uni-fav/uni-fav.vue b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue new file mode 100644 index 0000000..d2c58df --- /dev/null +++ b/uni_modules/uni-fav/components/uni-fav/uni-fav.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/uni_modules/uni-fav/package.json b/uni_modules/uni-fav/package.json new file mode 100644 index 0000000..cc14697 --- /dev/null +++ b/uni_modules/uni-fav/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-fav", + "displayName": "uni-fav 收藏按钮", + "version": "1.2.1", + "description": " Fav 收藏组件,可自定义颜色、大小。", + "keywords": [ + "fav", + "uni-ui", + "uniui", + "收藏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-fav/readme.md b/uni_modules/uni-fav/readme.md new file mode 100644 index 0000000..4de125d --- /dev/null +++ b/uni_modules/uni-fav/readme.md @@ -0,0 +1,10 @@ + + +## Fav 收藏按钮 +> **组件名:uni-fav** +> 代码块: `uFav` + +用于收藏功能,可点击切换选中、不选中的状态。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-fav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-file-picker/changelog.md b/uni_modules/uni-file-picker/changelog.md new file mode 100644 index 0000000..5c81026 --- /dev/null +++ b/uni_modules/uni-file-picker/changelog.md @@ -0,0 +1,63 @@ +## 1.0.2(2022-07-04) +- 修复 在uni-forms下样式不生效的bug +## 1.0.1(2021-11-23) +- 修复 参数为对象的情况下,url在某些情况显示错误的bug +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-file-picker](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +## 0.2.16(2021-11-08) +- 修复 传入空对象 ,显示错误的Bug +## 0.2.15(2021-08-30) +- 修复 return-type="object" 时且存在v-model时,无法删除文件的Bug +## 0.2.14(2021-08-23) +- 新增 参数中返回 fileID 字段 +## 0.2.13(2021-08-23) +- 修复 腾讯云传入fileID 不能回显的bug +- 修复 选择图片后,不能放大的问题 +## 0.2.12(2021-08-17) +- 修复 由于 0.2.11 版本引起的不能回显图片的Bug +## 0.2.11(2021-08-16) +- 新增 clearFiles(index) 方法,可以手动删除指定文件 +- 修复 v-model 值设为 null 报错的Bug +## 0.2.10(2021-08-13) +- 修复 return-type="object" 时,无法删除文件的Bug +## 0.2.9(2021-08-03) +- 修复 auto-upload 属性失效的Bug +## 0.2.8(2021-07-31) +- 修复 fileExtname属性不指定值报错的Bug +## 0.2.7(2021-07-31) +- 修复 在某种场景下图片不回显的Bug +## 0.2.6(2021-07-30) +- 修复 return-type为object下,返回值不正确的Bug +## 0.2.5(2021-07-30) +- 修复(重要) H5 平台下如果和uni-forms组件一同使用导致页面卡死的问题 +## 0.2.3(2021-07-28) +- 优化 调整示例代码 +## 0.2.2(2021-07-27) +- 修复 vue3 下赋值错误的Bug +- 优化 h5平台下上传文件导致页面卡死的问题 +## 0.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.1.1(2021-07-02) +- 修复 sourceType 缺少默认值导致 ios 无法选择文件 +## 0.1.0(2021-06-30) +- 优化 解耦与uniCloud的强绑定关系 ,如不绑定服务空间,默认autoUpload为false且不可更改 +## 0.0.11(2021-06-30) +- 修复 由 0.0.10 版本引发的 returnType 属性失效的问题 +## 0.0.10(2021-06-29) +- 优化 文件上传后进度条消失时机 +## 0.0.9(2021-06-29) +- 修复 在uni-forms 中,删除文件 ,获取的值不对的Bug +## 0.0.8(2021-06-15) +- 修复 删除文件时无法触发 v-model 的Bug +## 0.0.7(2021-05-12) +- 新增 组件示例地址 +## 0.0.6(2021-04-09) +- 修复 选择的文件非 file-extname 字段指定的扩展名报错的Bug +## 0.0.5(2021-04-09) +- 优化 更新组件示例 +## 0.0.4(2021-04-09) +- 优化 file-extname 字段支持字符串写法,多个扩展名需要用逗号分隔 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 微信小程序不指定 fileExtname 属性选择失败的Bug diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js new file mode 100644 index 0000000..24a07f5 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/choose-and-upload-file.js @@ -0,0 +1,224 @@ +'use strict'; + +const ERR_MSG_OK = 'chooseAndUploadFile:ok'; +const ERR_MSG_FAIL = 'chooseAndUploadFile:fail'; + +function chooseImage(opts) { + const { + count, + sizeType = ['original', 'compressed'], + sourceType = ['album', 'camera'], + extension + } = opts + return new Promise((resolve, reject) => { + uni.chooseImage({ + count, + sizeType, + sourceType, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res, 'image')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseImage:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseVideo(opts) { + const { + camera, + compressed, + maxDuration, + sourceType = ['album', 'camera'], + extension + } = opts; + return new Promise((resolve, reject) => { + uni.chooseVideo({ + camera, + compressed, + maxDuration, + sourceType, + extension, + success(res) { + const { + tempFilePath, + duration, + size, + height, + width + } = res; + resolve(normalizeChooseAndUploadFileRes({ + errMsg: 'chooseVideo:ok', + tempFilePaths: [tempFilePath], + tempFiles: [ + { + name: (res.tempFile && res.tempFile.name) || '', + path: tempFilePath, + size, + type: (res.tempFile && res.tempFile.type) || '', + width, + height, + duration, + fileType: 'video', + cloudPath: '', + }, ], + }, 'video')); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseVideo:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function chooseAll(opts) { + const { + count, + extension + } = opts; + return new Promise((resolve, reject) => { + let chooseFile = uni.chooseFile; + if (typeof wx !== 'undefined' && + typeof wx.chooseMessageFile === 'function') { + chooseFile = wx.chooseMessageFile; + } + if (typeof chooseFile !== 'function') { + return reject({ + errMsg: ERR_MSG_FAIL + ' 请指定 type 类型,该平台仅支持选择 image 或 video。', + }); + } + chooseFile({ + type: 'all', + count, + extension, + success(res) { + resolve(normalizeChooseAndUploadFileRes(res)); + }, + fail(res) { + reject({ + errMsg: res.errMsg.replace('chooseFile:fail', ERR_MSG_FAIL), + }); + }, + }); + }); +} + +function normalizeChooseAndUploadFileRes(res, fileType) { + res.tempFiles.forEach((item, index) => { + if (!item.name) { + item.name = item.path.substring(item.path.lastIndexOf('/') + 1); + } + if (fileType) { + item.fileType = fileType; + } + item.cloudPath = + Date.now() + '_' + index + item.name.substring(item.name.lastIndexOf('.')); + }); + if (!res.tempFilePaths) { + res.tempFilePaths = res.tempFiles.map((file) => file.path); + } + return res; +} + +function uploadCloudFiles(files, max = 5, onUploadProgress) { + files = JSON.parse(JSON.stringify(files)) + const len = files.length + let count = 0 + let self = this + return new Promise(resolve => { + while (count < max) { + next() + } + + function next() { + let cur = count++ + if (cur >= len) { + !files.find(item => !item.url && !item.errMsg) && resolve(files) + return + } + const fileItem = files[cur] + const index = self.files.findIndex(v => v.uuid === fileItem.uuid) + fileItem.url = '' + delete fileItem.errMsg + + uniCloud + .uploadFile({ + filePath: fileItem.path, + cloudPath: fileItem.cloudPath, + fileType: fileItem.fileType, + onUploadProgress: res => { + res.index = index + onUploadProgress && onUploadProgress(res) + } + }) + .then(res => { + fileItem.url = res.fileID + fileItem.index = index + if (cur < len) { + next() + } + }) + .catch(res => { + fileItem.errMsg = res.errMsg || res.message + fileItem.index = index + if (cur < len) { + next() + } + }) + } + }) +} + + + + + +function uploadFiles(choosePromise, { + onChooseFile, + onUploadProgress +}) { + return choosePromise + .then((res) => { + if (onChooseFile) { + const customChooseRes = onChooseFile(res); + if (typeof customChooseRes !== 'undefined') { + return Promise.resolve(customChooseRes).then((chooseRes) => typeof chooseRes === 'undefined' ? + res : chooseRes); + } + } + return res; + }) + .then((res) => { + if (res === false) { + return { + errMsg: ERR_MSG_OK, + tempFilePaths: [], + tempFiles: [], + }; + } + return res + }) +} + +function chooseAndUploadFile(opts = { + type: 'all' +}) { + if (opts.type === 'image') { + return uploadFiles(chooseImage(opts), opts); + } + else if (opts.type === 'video') { + return uploadFiles(chooseVideo(opts), opts); + } + return uploadFiles(chooseAll(opts), opts); +} + +export { + chooseAndUploadFile, + uploadCloudFiles +}; diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue new file mode 100644 index 0000000..0928a41 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/uni-file-picker.vue @@ -0,0 +1,656 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue new file mode 100644 index 0000000..625d92e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-file.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue new file mode 100644 index 0000000..2a29bc2 --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/upload-image.vue @@ -0,0 +1,292 @@ + + + + + diff --git a/uni_modules/uni-file-picker/components/uni-file-picker/utils.js b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js new file mode 100644 index 0000000..60aaa3e --- /dev/null +++ b/uni_modules/uni-file-picker/components/uni-file-picker/utils.js @@ -0,0 +1,109 @@ +/** + * 获取文件名和后缀 + * @param {String} name + */ +export const get_file_ext = (name) => { + const last_len = name.lastIndexOf('.') + const len = name.length + return { + name: name.substring(0, last_len), + ext: name.substring(last_len + 1, len) + } +} + +/** + * 获取扩展名 + * @param {Array} fileExtname + */ +export const get_extname = (fileExtname) => { + if (!Array.isArray(fileExtname)) { + let extname = fileExtname.replace(/(\[|\])/g, '') + return extname.split(',') + } else { + return fileExtname + } + return [] +} + +/** + * 获取文件和检测是否可选 + */ +export const get_files_and_is_max = (res, _extname) => { + let filePaths = [] + let files = [] + if(!_extname || _extname.length === 0){ + return { + filePaths, + files + } + } + res.tempFiles.forEach(v => { + let fileFullName = get_file_ext(v.name) + const extname = fileFullName.ext.toLowerCase() + if (_extname.indexOf(extname) !== -1) { + files.push(v) + filePaths.push(v.path) + } + }) + if (files.length !== res.tempFiles.length) { + uni.showToast({ + title: `当前选择了${res.tempFiles.length}个文件 ,${res.tempFiles.length - files.length} 个文件格式不正确`, + icon: 'none', + duration: 5000 + }) + } + + return { + filePaths, + files + } +} + + +/** + * 获取图片信息 + * @param {Object} filepath + */ +export const get_file_info = (filepath) => { + return new Promise((resolve, reject) => { + uni.getImageInfo({ + src: filepath, + success(res) { + resolve(res) + }, + fail(err) { + reject(err) + } + }) + }) +} +/** + * 获取封装数据 + */ +export const get_file_data = async (files, type = 'image') => { + // 最终需要上传数据库的数据 + let fileFullName = get_file_ext(files.name) + const extname = fileFullName.ext.toLowerCase() + let filedata = { + name: files.name, + uuid: files.uuid, + extname: extname || '', + cloudPath: files.cloudPath, + fileType: files.fileType, + url: files.path || files.path, + size: files.size, //单位是字节 + image: {}, + path: files.path, + video: {} + } + if (type === 'image') { + const imageinfo = await get_file_info(files.path) + delete filedata.video + filedata.image.width = imageinfo.width + filedata.image.height = imageinfo.height + filedata.image.location = imageinfo.path + } else { + delete filedata.image + } + return filedata +} diff --git a/uni_modules/uni-file-picker/package.json b/uni_modules/uni-file-picker/package.json new file mode 100644 index 0000000..08bd66e --- /dev/null +++ b/uni_modules/uni-file-picker/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-file-picker", + "displayName": "uni-file-picker 文件选择上传", + "version": "1.0.2", + "description": "文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间", + "keywords": [ + "uni-ui", + "uniui", + "图片上传", + "文件上传" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-file-picker/readme.md b/uni_modules/uni-file-picker/readme.md new file mode 100644 index 0000000..c8399a5 --- /dev/null +++ b/uni_modules/uni-file-picker/readme.md @@ -0,0 +1,11 @@ + +## FilePicker 文件选择上传 + +> **组件名:uni-file-picker** +> 代码块: `uFilePicker` + + +文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-file-picker) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-forms/changelog.md b/uni_modules/uni-forms/changelog.md new file mode 100644 index 0000000..5a4bb79 --- /dev/null +++ b/uni_modules/uni-forms/changelog.md @@ -0,0 +1,86 @@ +## 1.4.6(2022-07-13) +- 修复 model 需要校验的值没有声明对应字段时,导致第一次不触发校验的bug +## 1.4.5(2022-07-05) +- 新增 更多表单示例 +- 优化 子表单组件过期提示的问题 +- 优化 子表单组件uni-datetime-picker、uni-data-select、uni-data-picker的显示样式 +## 1.4.4(2022-07-04) +- 更新 删除组件日志 +## 1.4.3(2022-07-04) +- 修复 由 1.4.0 引发的 label 插槽不生效的bug +## 1.4.2(2022-07-04) +- 修复 子组件找不到 setValue 报错的bug +## 1.4.1(2022-07-04) +- 修复 uni-data-picker 在 uni-forms-item 中报错的bug +- 修复 uni-data-picker 在 uni-forms-item 中宽度不正确的bug +## 1.4.0(2022-06-30) +- 【重要】组件逻辑重构,部分用法用旧版本不兼容,请注意兼容问题 +- 【重要】组件使用 Provide/Inject 方式注入依赖,提供了自定义表单组件调用 uni-forms 校验表单的能力 +- 新增 model 属性,等同于原 value/modelValue 属性,旧属性即将废弃 +- 新增 validateTrigger 属性的 blur 值,仅 uni-easyinput 生效 +- 新增 onFieldChange 方法,可以对子表单进行校验,可替代binddata方法 +- 新增 子表单的 setRules 方法,配合自定义校验函数使用 +- 新增 uni-forms-item 的 setRules 方法,配置动态表单使用可动态更新校验规则 +- 优化 动态表单校验方式,废弃拼接name的方式 +## 1.3.3(2022-06-22) +- 修复 表单校验顺序无序问题 +## 1.3.2(2021-12-09) +- +## 1.3.1(2021-11-19) +- 修复 label 插槽不生效的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-forms](https://uniapp.dcloud.io/component/uniui/uni-forms) +## 1.2.7(2021-08-13) +- 修复 没有添加校验规则的字段依然报错的Bug +## 1.2.6(2021-08-11) +- 修复 重置表单错误信息无法清除的问题 +## 1.2.5(2021-08-11) +- 优化 组件文档 +## 1.2.4(2021-08-11) +- 修复 表单验证只生效一次的问题 +## 1.2.3(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.2(2021-07-26) +- 修复 vue2 下条件编译导致destroyed生命周期失效的Bug +- 修复 1.2.1 引起的示例在小程序平台报错的Bug +## 1.2.1(2021-07-22) +- 修复 动态校验表单,默认值为空的情况下校验失效的Bug +- 修复 不指定name属性时,运行报错的Bug +- 优化 label默认宽度从65调整至70,使required为true且四字时不换行 +- 优化 组件示例,新增动态校验示例代码 +- 优化 组件文档,使用方式更清晰 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-06-25) +- 修复 pattern 属性在微信小程序平台无效的问题 +## 1.1.1(2021-06-22) +- 修复 validate-trigger属性为submit且err-show-type属性为toast时不能弹出的Bug +## 1.1.0(2021-06-22) +- 修复 只写setRules方法而导致校验不生效的Bug +- 修复 由上个办法引发的错误提示文字错位的Bug +## 1.0.48(2021-06-21) +- 修复 不设置 label 属性 ,无法设置label插槽的问题 +## 1.0.47(2021-06-21) +- 修复 不设置label属性,label-width属性不生效的bug +- 修复 setRules 方法与rules属性冲突的问题 +## 1.0.46(2021-06-04) +- 修复 动态删减数据导致报错的问题 +## 1.0.45(2021-06-04) +- 新增 modelValue 属性 ,value 即将废弃 +## 1.0.44(2021-06-02) +- 新增 uni-forms-item 可以设置单独的 rules +- 新增 validate 事件增加 keepitem 参数,可以选择那些字段不过滤 +- 优化 submit 事件重命名为 validate +## 1.0.43(2021-05-12) +- 新增 组件示例地址 +## 1.0.42(2021-04-30) +- 修复 自定义检验器失效的问题 +## 1.0.41(2021-03-05) +- 更新 校验器 +- 修复 表单规则设置类型为 number 的情况下,值为0校验失败的Bug +## 1.0.40(2021-03-04) +- 修复 动态显示uni-forms-item的情况下,submit 方法获取值错误的Bug +## 1.0.39(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 校验器传入 int 等类型 ,返回String类型的Bug diff --git a/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue new file mode 100644 index 0000000..250ed87 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue @@ -0,0 +1,627 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue new file mode 100644 index 0000000..ed2f6d9 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/uni-forms.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/uni_modules/uni-forms/components/uni-forms/utils.js b/uni_modules/uni-forms/components/uni-forms/utils.js new file mode 100644 index 0000000..6da2421 --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/utils.js @@ -0,0 +1,293 @@ +/** + * 简单处理对象拷贝 + * @param {Obejct} 被拷贝对象 + * @@return {Object} 拷贝对象 + */ +export const deepCopy = (val) => { + return JSON.parse(JSON.stringify(val)) +} +/** + * 过滤数字类型 + * @param {String} format 数字类型 + * @@return {Boolean} 返回是否为数字类型 + */ +export const typeFilter = (format) => { + return format === 'int' || format === 'double' || format === 'number' || format === 'timestamp'; +} + +/** + * 把 value 转换成指定的类型,用于处理初始值,原因是初始值需要入库不能为 undefined + * @param {String} key 字段名 + * @param {any} value 字段值 + * @param {Object} rules 表单校验规则 + */ +export const getValue = (key, value, rules) => { + const isRuleNumType = rules.find(val => val.format && typeFilter(val.format)); + const isRuleBoolType = rules.find(val => (val.format && val.format === 'boolean') || val.format === 'bool'); + // 输入类型为 number + if (!!isRuleNumType) { + if (!value && value !== 0) { + value = null + } else { + value = isNumber(Number(value)) ? Number(value) : value + } + } + + // 输入类型为 boolean + if (!!isRuleBoolType) { + value = isBoolean(value) ? value : false + } + + return value; +} + +/** + * 获取表单数据 + * @param {String|Array} name 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + * @param {any} value 需要设置的值 + */ +export const setDataValue = (field, formdata, value) => { + formdata[field] = value + return value || '' +} + +/** + * 获取表单数据 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + * @param {Object} data 原始数据 + */ +export const getDataValue = (field, data) => { + return objGet(data, field) +} + +/** + * 获取表单类型 + * @param {String|Array} field 真实名称,需要使用 realName 获取 + */ +export const getDataValueType = (field, data) => { + const value = getDataValue(field, data) + return { + type: type(value), + value + } +} + +/** + * 获取表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const realName = (name, data = {}) => { + const base_name = _basePath(name) + if (typeof base_name === 'object' && Array.isArray(base_name) && base_name.length > 1) { + const realname = base_name.reduce((a, b) => a += `#${b}`, '_formdata_') + return realname + } + return base_name[0] || name +} + +/** + * 判断是否表单可用的真实name + * @param {String|Array} name 表单name + * @@return {String} 表单可用的真实name + */ +export const isRealName = (name) => { + const reg = /^_formdata_#*/ + return reg.test(name) +} + +/** + * 获取表单数据的原始格式 + * @@return {Object|Array} object 需要解析的数据 + */ +export const rawData = (object = {}, name) => { + let newData = JSON.parse(JSON.stringify(object)) + let formData = {} + for(let i in newData){ + let path = name2arr(i) + objSet(formData,path,newData[i]) + } + return formData +} + +/** + * 真实name还原为 array + * @param {*} name + */ +export const name2arr = (name) => { + let field = name.replace('_formdata_#', '') + field = field.split('#').map(v => (isNumber(v) ? Number(v) : v)) + return field +} + +/** + * 对象中设置值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} value 需要设置的值 + */ +export const objSet = (object, path, value) => { + if (typeof object !== 'object') return object; + _basePath(path).reduce((o, k, i, _) => { + if (i === _.length - 1) { + // 若遍历结束直接赋值 + o[k] = value + return null + } else if (k in o) { + // 若存在对应路径,则返回找到的对象,进行下一次遍历 + return o[k] + } else { + // 若不存在对应路径,则创建对应对象,若下一路径是数字,新对象赋值为空数组,否则赋值为空对象 + o[k] = /^[0-9]{1,}$/.test(_[i + 1]) ? [] : {} + return o[k] + } + }, object) + // 返回object + return object; +} + +// 处理 path, path有三种形式:'a[0].b.c'、'a.0.b.c' 和 ['a','0','b','c'],需要统一处理成数组,便于后续使用 +function _basePath(path) { + // 若是数组,则直接返回 + if (Array.isArray(path)) return path + // 若有 '[',']',则替换成将 '[' 替换成 '.',去掉 ']' + return path.replace(/\[/g, '.').replace(/\]/g, '').split('.') +} + +/** + * 从对象中获取值 + * @param {Object|Array} object 源数据 + * @param {String| Array} path 'a.b.c' 或 ['a',0,'b','c'] + * @param {String} defaultVal 如果无法从调用链中获取值的默认值 + */ +export const objGet = (object, path, defaultVal = 'undefined') => { + // 先将path处理成统一格式 + let newPath = _basePath(path) + // 递归处理,返回最后结果 + let val = newPath.reduce((o, k) => { + return (o || {})[k] + }, object); + return !val || val !== undefined ? val : defaultVal +} + + +/** + * 是否为 number 类型 + * @param {any} num 需要判断的值 + * @return {Boolean} 是否为 number + */ +export const isNumber = (num) => { + return !isNaN(Number(num)) +} + +/** + * 是否为 boolean 类型 + * @param {any} bool 需要判断的值 + * @return {Boolean} 是否为 boolean + */ +export const isBoolean = (bool) => { + return (typeof bool === 'boolean') +} +/** + * 是否有必填字段 + * @param {Object} rules 规则 + * @return {Boolean} 是否有必填字段 + */ +export const isRequiredField = (rules) => { + let isNoField = false; + for (let i = 0; i < rules.length; i++) { + const ruleData = rules[i]; + if (ruleData.required) { + isNoField = true; + break; + } + } + return isNoField; +} + + +/** + * 获取数据类型 + * @param {Any} obj 需要获取数据类型的值 + */ +export const type = (obj) => { + var class2type = {}; + + // 生成class2type映射 + "Boolean Number String Function Array Date RegExp Object Error".split(" ").map(function(item, index) { + class2type["[object " + item + "]"] = item.toLowerCase(); + }) + if (obj == null) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[Object.prototype.toString.call(obj)] || "object" : + typeof obj; +} + +/** + * 判断两个值是否相等 + * @param {any} a 值 + * @param {any} b 值 + * @return {Boolean} 是否相等 + */ +export const isEqual = (a, b) => { + //如果a和b本来就全等 + if (a === b) { + //判断是否为0和-0 + return a !== 0 || 1 / a === 1 / b; + } + //判断是否为null和undefined + if (a == null || b == null) { + return a === b; + } + //接下来判断a和b的数据类型 + var classNameA = toString.call(a), + classNameB = toString.call(b); + //如果数据类型不相等,则返回false + if (classNameA !== classNameB) { + return false; + } + //如果数据类型相等,再根据不同数据类型分别判断 + switch (classNameA) { + case '[object RegExp]': + case '[object String]': + //进行字符串转换比较 + return '' + a === '' + b; + case '[object Number]': + //进行数字转换比较,判断是否为NaN + if (+a !== +a) { + return +b !== +b; + } + //判断是否为0或-0 + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + return +a === +b; + } + //如果是对象类型 + if (classNameA == '[object Object]') { + //获取a和b的属性长度 + var propsA = Object.getOwnPropertyNames(a), + propsB = Object.getOwnPropertyNames(b); + if (propsA.length != propsB.length) { + return false; + } + for (var i = 0; i < propsA.length; i++) { + var propName = propsA[i]; + //如果对应属性对应值不相等,则返回false + if (a[propName] !== b[propName]) { + return false; + } + } + return true; + } + //如果是数组类型 + if (classNameA == '[object Array]') { + if (a.toString() == b.toString()) { + return true; + } + return false; + } +} diff --git a/uni_modules/uni-forms/components/uni-forms/validate.js b/uni_modules/uni-forms/components/uni-forms/validate.js new file mode 100644 index 0000000..69a70db --- /dev/null +++ b/uni_modules/uni-forms/components/uni-forms/validate.js @@ -0,0 +1,486 @@ +var pattern = { + email: /^\S+?@\S+?\.\S+?$/, + idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, + url: new RegExp( + "^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$", + 'i') +}; + +const FORMAT_MAPPING = { + "int": 'integer', + "bool": 'boolean', + "double": 'number', + "long": 'number', + "password": 'string' + // "fileurls": 'array' +} + +function formatMessage(args, resources = '') { + var defaultMessage = ['label'] + defaultMessage.forEach((item) => { + if (args[item] === undefined) { + args[item] = '' + } + }) + + let str = resources + for (let key in args) { + let reg = new RegExp('{' + key + '}') + str = str.replace(reg, args[key]) + } + return str +} + +function isEmptyValue(value, type) { + if (value === undefined || value === null) { + return true; + } + + if (typeof value === 'string' && !value) { + return true; + } + + if (Array.isArray(value) && !value.length) { + return true; + } + + if (type === 'object' && !Object.keys(value).length) { + return true; + } + + return false; +} + +const types = { + integer(value) { + return types.number(value) && parseInt(value, 10) === value; + }, + string(value) { + return typeof value === 'string'; + }, + number(value) { + if (isNaN(value)) { + return false; + } + return typeof value === 'number'; + }, + "boolean": function(value) { + return typeof value === 'boolean'; + }, + "float": function(value) { + return types.number(value) && !types.integer(value); + }, + array(value) { + return Array.isArray(value); + }, + object(value) { + return typeof value === 'object' && !types.array(value); + }, + date(value) { + return value instanceof Date; + }, + timestamp(value) { + if (!this.integer(value) || Math.abs(value).toString().length > 16) { + return false + } + return true; + }, + file(value) { + return typeof value.url === 'string'; + }, + email(value) { + return typeof value === 'string' && !!value.match(pattern.email) && value.length < 255; + }, + url(value) { + return typeof value === 'string' && !!value.match(pattern.url); + }, + pattern(reg, value) { + try { + return new RegExp(reg).test(value); + } catch (e) { + return false; + } + }, + method(value) { + return typeof value === 'function'; + }, + idcard(value) { + return typeof value === 'string' && !!value.match(pattern.idcard); + }, + 'url-https'(value) { + return this.url(value) && value.startsWith('https://'); + }, + 'url-scheme'(value) { + return value.startsWith('://'); + }, + 'url-web'(value) { + return false; + } +} + +class RuleValidator { + + constructor(message) { + this._message = message + } + + async validateRule(fieldKey, fieldValue, value, data, allData) { + var result = null + + let rules = fieldValue.rules + + let hasRequired = rules.findIndex((item) => { + return item.required + }) + if (hasRequired < 0) { + if (value === null || value === undefined) { + return result + } + if (typeof value === 'string' && !value.length) { + return result + } + } + + var message = this._message + + if (rules === undefined) { + return message['default'] + } + + for (var i = 0; i < rules.length; i++) { + let rule = rules[i] + let vt = this._getValidateType(rule) + + Object.assign(rule, { + label: fieldValue.label || `["${fieldKey}"]` + }) + + if (RuleValidatorHelper[vt]) { + result = RuleValidatorHelper[vt](rule, value, message) + if (result != null) { + break + } + } + + if (rule.validateExpr) { + let now = Date.now() + let resultExpr = rule.validateExpr(value, allData, now) + if (resultExpr === false) { + result = this._getMessage(rule, rule.errorMessage || this._message['default']) + break + } + } + + if (rule.validateFunction) { + result = await this.validateFunction(rule, value, data, allData, vt) + if (result !== null) { + break + } + } + } + + if (result !== null) { + result = message.TAG + result + } + + return result + } + + async validateFunction(rule, value, data, allData, vt) { + let result = null + try { + let callbackMessage = null + const res = await rule.validateFunction(rule, value, allData || data, (message) => { + callbackMessage = message + }) + if (callbackMessage || (typeof res === 'string' && res) || res === false) { + result = this._getMessage(rule, callbackMessage || res, vt) + } + } catch (e) { + result = this._getMessage(rule, e.message, vt) + } + return result + } + + _getMessage(rule, message, vt) { + return formatMessage(rule, message || rule.errorMessage || this._message[vt] || message['default']) + } + + _getValidateType(rule) { + var result = '' + if (rule.required) { + result = 'required' + } else if (rule.format) { + result = 'format' + } else if (rule.arrayType) { + result = 'arrayTypeFormat' + } else if (rule.range) { + result = 'range' + } else if (rule.maximum !== undefined || rule.minimum !== undefined) { + result = 'rangeNumber' + } else if (rule.maxLength !== undefined || rule.minLength !== undefined) { + result = 'rangeLength' + } else if (rule.pattern) { + result = 'pattern' + } else if (rule.validateFunction) { + result = 'validateFunction' + } + return result + } +} + +const RuleValidatorHelper = { + required(rule, value, message) { + if (rule.required && isEmptyValue(value, rule.format || typeof value)) { + return formatMessage(rule, rule.errorMessage || message.required); + } + + return null + }, + + range(rule, value, message) { + const { + range, + errorMessage + } = rule; + + let list = new Array(range.length); + for (let i = 0; i < range.length; i++) { + const item = range[i]; + if (types.object(item) && item.value !== undefined) { + list[i] = item.value; + } else { + list[i] = item; + } + } + + let result = false + if (Array.isArray(value)) { + result = (new Set(value.concat(list)).size === list.length); + } else { + if (list.indexOf(value) > -1) { + result = true; + } + } + + if (!result) { + return formatMessage(rule, errorMessage || message['enum']); + } + + return null + }, + + rangeNumber(rule, value, message) { + if (!types.number(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let { + minimum, + maximum, + exclusiveMinimum, + exclusiveMaximum + } = rule; + let min = exclusiveMinimum ? value <= minimum : value < minimum; + let max = exclusiveMaximum ? value >= maximum : value > maximum; + + if (minimum !== undefined && min) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMinimum ? + 'exclusiveMinimum' : 'minimum' + ]) + } else if (maximum !== undefined && max) { + return formatMessage(rule, rule.errorMessage || message['number'][exclusiveMaximum ? + 'exclusiveMaximum' : 'maximum' + ]) + } else if (minimum !== undefined && maximum !== undefined && (min || max)) { + return formatMessage(rule, rule.errorMessage || message['number'].range) + } + + return null + }, + + rangeLength(rule, value, message) { + if (!types.string(value) && !types.array(value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + let min = rule.minLength; + let max = rule.maxLength; + let val = value.length; + + if (min !== undefined && val < min) { + return formatMessage(rule, rule.errorMessage || message['length'].minLength) + } else if (max !== undefined && val > max) { + return formatMessage(rule, rule.errorMessage || message['length'].maxLength) + } else if (min !== undefined && max !== undefined && (val < min || val > max)) { + return formatMessage(rule, rule.errorMessage || message['length'].range) + } + + return null + }, + + pattern(rule, value, message) { + if (!types['pattern'](rule.pattern, value)) { + return formatMessage(rule, rule.errorMessage || message.pattern.mismatch); + } + + return null + }, + + format(rule, value, message) { + var customTypes = Object.keys(types); + var format = FORMAT_MAPPING[rule.format] ? FORMAT_MAPPING[rule.format] : (rule.format || rule.arrayType); + + if (customTypes.indexOf(format) > -1) { + if (!types[format](value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + } + + return null + }, + + arrayTypeFormat(rule, value, message) { + if (!Array.isArray(value)) { + return formatMessage(rule, rule.errorMessage || message.typeError); + } + + for (let i = 0; i < value.length; i++) { + const element = value[i]; + let formatResult = this.format(rule, element, message) + if (formatResult !== null) { + return formatResult + } + } + + return null + } +} + +class SchemaValidator extends RuleValidator { + + constructor(schema, options) { + super(SchemaValidator.message); + + this._schema = schema + this._options = options || null + } + + updateSchema(schema) { + this._schema = schema + } + + async validate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, false, allData) + } + return result.length ? result[0] : null + } + + async validateAll(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidate(data, true, allData) + } + return result + } + + async validateUpdate(data, allData) { + let result = this._checkFieldInSchema(data) + if (!result) { + result = await this.invokeValidateUpdate(data, false, allData) + } + return result.length ? result[0] : null + } + + async invokeValidate(data, all, allData) { + let result = [] + let schema = this._schema + for (let key in schema) { + let value = schema[key] + let errorMessage = await this.validateRule(key, value, data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + async invokeValidateUpdate(data, all, allData) { + let result = [] + for (let key in data) { + let errorMessage = await this.validateRule(key, this._schema[key], data[key], data, allData) + if (errorMessage != null) { + result.push({ + key, + errorMessage + }) + if (!all) break + } + } + return result + } + + _checkFieldInSchema(data) { + var keys = Object.keys(data) + var keys2 = Object.keys(this._schema) + if (new Set(keys.concat(keys2)).size === keys2.length) { + return '' + } + + var noExistFields = keys.filter((key) => { + return keys2.indexOf(key) < 0; + }) + var errorMessage = formatMessage({ + field: JSON.stringify(noExistFields) + }, SchemaValidator.message.TAG + SchemaValidator.message['defaultInvalid']) + return [{ + key: 'invalid', + errorMessage + }] + } +} + +function message() { + return { + TAG: "", + default: '验证错误', + defaultInvalid: '提交的字段{field}在数据库中并不存在', + validateFunction: '验证无效', + required: '{label}必填', + 'enum': '{label}超出范围', + timestamp: '{label}格式无效', + whitespace: '{label}不能为空', + typeError: '{label}类型无效', + date: { + format: '{label}日期{value}格式无效', + parse: '{label}日期无法解析,{value}无效', + invalid: '{label}日期{value}无效' + }, + length: { + minLength: '{label}长度不能少于{minLength}', + maxLength: '{label}长度不能超过{maxLength}', + range: '{label}必须介于{minLength}和{maxLength}之间' + }, + number: { + minimum: '{label}不能小于{minimum}', + maximum: '{label}不能大于{maximum}', + exclusiveMinimum: '{label}不能小于等于{minimum}', + exclusiveMaximum: '{label}不能大于等于{maximum}', + range: '{label}必须介于{minimum}and{maximum}之间' + }, + pattern: { + mismatch: '{label}格式不匹配' + } + }; +} + + +SchemaValidator.message = new message(); + +export default SchemaValidator diff --git a/uni_modules/uni-forms/package.json b/uni_modules/uni-forms/package.json new file mode 100644 index 0000000..e69d39b --- /dev/null +++ b/uni_modules/uni-forms/package.json @@ -0,0 +1,91 @@ +{ + "id": "uni-forms", + "displayName": "uni-forms 表单", + "version": "1.4.6", + "description": "由输入框、选择器、单选框、多选框等控件组成,用以收集、校验、提交数据", + "keywords": [ + "uni-ui", + "表单", + "校验", + "表单校验", + "表单验证" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-forms/readme.md b/uni_modules/uni-forms/readme.md new file mode 100644 index 0000000..63d5a04 --- /dev/null +++ b/uni_modules/uni-forms/readme.md @@ -0,0 +1,23 @@ + + +## Forms 表单 + +> **组件名:uni-forms** +> 代码块: `uForms`、`uni-forms-item` +> 关联组件:`uni-forms-item`、`uni-easyinput`、`uni-data-checkbox`、`uni-group`。 + + +uni-app的内置组件已经有了 `

    `组件,用于提交表单内容。 + +然而几乎每个表单都需要做表单验证,为了方便做表单验证,减少重复开发,`uni ui` 又基于 ``组件封装了 ``组件,内置了表单验证功能。 + +`` 提供了 `rules`属性来描述校验规则、``子组件来包裹具体的表单项,以及给原生或三方组件提供了 `binddata()` 来设置表单值。 + +每个要校验的表单项,不管input还是checkbox,都必须放在``组件中,且一个``组件只能放置一个表单项。 + +``组件内部预留了显示error message的区域,默认是在表单项的底部。 + +另外,``组件下面的各个表单项,可以通过``包裹为不同的分组。同一``下的不同表单项目将聚拢在一起,同其他group保持垂直间距。``仅影响视觉效果。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-forms) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-goods-nav/changelog.md b/uni_modules/uni-goods-nav/changelog.md new file mode 100644 index 0000000..c6264c6 --- /dev/null +++ b/uni_modules/uni-goods-nav/changelog.md @@ -0,0 +1,18 @@ +## 1.2.1(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-goods-nav](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json new file mode 100644 index 0000000..dcdba41 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/en.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "shop", + "uni-goods-nav.options.cart": "cart", + "uni-goods-nav.buttonGroup.addToCart": "add to cart", + "uni-goods-nav.buttonGroup.buyNow": "buy now" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json new file mode 100644 index 0000000..48ee344 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hans.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店铺", + "uni-goods-nav.options.cart": "购物车", + "uni-goods-nav.buttonGroup.addToCart": "加入购物车", + "uni-goods-nav.buttonGroup.buyNow": "立即购买" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json new file mode 100644 index 0000000..d0a0255 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/i18n/zh-Hant.json @@ -0,0 +1,6 @@ +{ + "uni-goods-nav.options.shop": "店鋪", + "uni-goods-nav.options.cart": "購物車", + "uni-goods-nav.buttonGroup.addToCart": "加入購物車", + "uni-goods-nav.buttonGroup.buyNow": "立即購買" +} diff --git a/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue new file mode 100644 index 0000000..8a16b17 --- /dev/null +++ b/uni_modules/uni-goods-nav/components/uni-goods-nav/uni-goods-nav.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/uni_modules/uni-goods-nav/package.json b/uni_modules/uni-goods-nav/package.json new file mode 100644 index 0000000..636e45e --- /dev/null +++ b/uni_modules/uni-goods-nav/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-goods-nav", + "displayName": "uni-goods-nav 商品导航", + "version": "1.2.1", + "description": "商品导航组件主要用于电商类应用底部导航,可自定义加入购物车,购买等操作", + "keywords": [ + "uni-ui", + "uniui", + "商品导航" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-goods-nav/readme.md b/uni_modules/uni-goods-nav/readme.md new file mode 100644 index 0000000..07df93f --- /dev/null +++ b/uni_modules/uni-goods-nav/readme.md @@ -0,0 +1,10 @@ + + +## GoodsNav 商品导航 +> **组件名:uni-goods-nav** +> 代码块: `uGoodsNav` + +商品加入购物车,立即购买等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-goods-nav) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-grid/changelog.md b/uni_modules/uni-grid/changelog.md new file mode 100644 index 0000000..d301166 --- /dev/null +++ b/uni_modules/uni-grid/changelog.md @@ -0,0 +1,13 @@ +## 1.4.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-grid](https://uniapp.dcloud.io/component/uniui/uni-grid) +## 1.3.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.3.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.3.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.2.4(2021-05-12) +- 新增 组件示例地址 +## 1.2.3(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue new file mode 100644 index 0000000..19c08d7 --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid-item/uni-grid-item.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/uni_modules/uni-grid/components/uni-grid/uni-grid.vue b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue new file mode 100644 index 0000000..0edc7ff --- /dev/null +++ b/uni_modules/uni-grid/components/uni-grid/uni-grid.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/uni_modules/uni-grid/package.json b/uni_modules/uni-grid/package.json new file mode 100644 index 0000000..ccb2c91 --- /dev/null +++ b/uni_modules/uni-grid/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-grid", + "displayName": "uni-grid 宫格", + "version": "1.4.0", + "description": "Grid 宫格组件,提供移动端常见的宫格布局,如九宫格。", + "keywords": [ + "uni-ui", + "uniui", + "九宫格", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-grid/readme.md b/uni_modules/uni-grid/readme.md new file mode 100644 index 0000000..0aa44cc --- /dev/null +++ b/uni_modules/uni-grid/readme.md @@ -0,0 +1,11 @@ + + +## Grid 宫格 +> **组件名:uni-grid** +> 代码块: `uGrid` + + +宫格组件。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-grid) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-group/changelog.md b/uni_modules/uni-group/changelog.md new file mode 100644 index 0000000..a7024fd --- /dev/null +++ b/uni_modules/uni-group/changelog.md @@ -0,0 +1,16 @@ +## 1.2.2(2022-05-30) +- 新增 stat属性,是否开启uni统计功能 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-group](https://uniapp.dcloud.io/component/uniui/uni-group) +## 1.1.7(2021-11-08) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 优化 组件文档 +## 1.0.3(2021-05-12) +- 新增 组件示例地址 +## 1.0.2(2021-02-05) +- 调整为uni_modules目录规范 +- 优化 兼容 nvue 页面 diff --git a/uni_modules/uni-group/components/uni-group/uni-group.vue b/uni_modules/uni-group/components/uni-group/uni-group.vue new file mode 100644 index 0000000..3425ecd --- /dev/null +++ b/uni_modules/uni-group/components/uni-group/uni-group.vue @@ -0,0 +1,134 @@ + + + + diff --git a/uni_modules/uni-group/package.json b/uni_modules/uni-group/package.json new file mode 100644 index 0000000..ea00a08 --- /dev/null +++ b/uni_modules/uni-group/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-group", + "displayName": "uni-group 分组", + "version": "1.2.2", + "description": "分组组件可用于将组件用于分组,添加间隔,以产生明显的区块", + "keywords": [ + "uni-ui", + "uniui", + "group", + "分组", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-group/readme.md b/uni_modules/uni-group/readme.md new file mode 100644 index 0000000..bae67f4 --- /dev/null +++ b/uni_modules/uni-group/readme.md @@ -0,0 +1,9 @@ + +## Group 分组 +> **组件名:uni-group** +> 代码块: `uGroup` + +分组组件可用于将组件分组,添加间隔,以产生明显的区块。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-group) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-icons/changelog.md b/uni_modules/uni-icons/changelog.md new file mode 100644 index 0000000..6449885 --- /dev/null +++ b/uni_modules/uni-icons/changelog.md @@ -0,0 +1,22 @@ +## 1.3.5(2022-01-24) +- 优化 size 属性可以传入不带单位的字符串数值 +## 1.3.4(2022-01-24) +- 优化 size 支持其他单位 +## 1.3.3(2022-01-17) +- 修复 nvue 有些图标不显示的bug,兼容老版本图标 +## 1.3.2(2021-12-01) +- 优化 示例可复制图标名称 +## 1.3.1(2021-11-23) +- 优化 兼容旧组件 type 值 +## 1.3.0(2021-11-19) +- 新增 更多图标 +- 优化 自定义图标使用方式 +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons) +## 1.1.7(2021-11-08) +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.5(2021-05-12) +- 新增 组件示例地址 +## 1.1.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-icons/components/uni-icons/icons.js b/uni_modules/uni-icons/components/uni-icons/icons.js new file mode 100644 index 0000000..7889936 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/icons.js @@ -0,0 +1,1169 @@ +export default { + "id": "2852637", + "name": "uniui图标库", + "font_family": "uniicons", + "css_prefix_text": "uniui-", + "description": "", + "glyphs": [ + { + "icon_id": "25027049", + "name": "yanse", + "font_class": "color", + "unicode": "e6cf", + "unicode_decimal": 59087 + }, + { + "icon_id": "25027048", + "name": "wallet", + "font_class": "wallet", + "unicode": "e6b1", + "unicode_decimal": 59057 + }, + { + "icon_id": "25015720", + "name": "settings-filled", + "font_class": "settings-filled", + "unicode": "e6ce", + "unicode_decimal": 59086 + }, + { + "icon_id": "25015434", + "name": "shimingrenzheng-filled", + "font_class": "auth-filled", + "unicode": "e6cc", + "unicode_decimal": 59084 + }, + { + "icon_id": "24934246", + "name": "shop-filled", + "font_class": "shop-filled", + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "24934159", + "name": "staff-filled-01", + "font_class": "staff-filled", + "unicode": "e6cb", + "unicode_decimal": 59083 + }, + { + "icon_id": "24932461", + "name": "VIP-filled", + "font_class": "vip-filled", + "unicode": "e6c6", + "unicode_decimal": 59078 + }, + { + "icon_id": "24932462", + "name": "plus_circle_fill", + "font_class": "plus-filled", + "unicode": "e6c7", + "unicode_decimal": 59079 + }, + { + "icon_id": "24932463", + "name": "folder_add-filled", + "font_class": "folder-add-filled", + "unicode": "e6c8", + "unicode_decimal": 59080 + }, + { + "icon_id": "24932464", + "name": "yanse-filled", + "font_class": "color-filled", + "unicode": "e6c9", + "unicode_decimal": 59081 + }, + { + "icon_id": "24932465", + "name": "tune-filled", + "font_class": "tune-filled", + "unicode": "e6ca", + "unicode_decimal": 59082 + }, + { + "icon_id": "24932455", + "name": "a-rilidaka-filled", + "font_class": "calendar-filled", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "24932456", + "name": "notification-filled", + "font_class": "notification-filled", + "unicode": "e6c1", + "unicode_decimal": 59073 + }, + { + "icon_id": "24932457", + "name": "wallet-filled", + "font_class": "wallet-filled", + "unicode": "e6c2", + "unicode_decimal": 59074 + }, + { + "icon_id": "24932458", + "name": "paihangbang-filled", + "font_class": "medal-filled", + "unicode": "e6c3", + "unicode_decimal": 59075 + }, + { + "icon_id": "24932459", + "name": "gift-filled", + "font_class": "gift-filled", + "unicode": "e6c4", + "unicode_decimal": 59076 + }, + { + "icon_id": "24932460", + "name": "fire-filled", + "font_class": "fire-filled", + "unicode": "e6c5", + "unicode_decimal": 59077 + }, + { + "icon_id": "24928001", + "name": "refreshempty", + "font_class": "refreshempty", + "unicode": "e6bf", + "unicode_decimal": 59071 + }, + { + "icon_id": "24926853", + "name": "location-ellipse", + "font_class": "location-filled", + "unicode": "e6af", + "unicode_decimal": 59055 + }, + { + "icon_id": "24926735", + "name": "person-filled", + "font_class": "person-filled", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "24926703", + "name": "personadd-filled", + "font_class": "personadd-filled", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "24923351", + "name": "back", + "font_class": "back", + "unicode": "e6b9", + "unicode_decimal": 59065 + }, + { + "icon_id": "24923352", + "name": "forward", + "font_class": "forward", + "unicode": "e6ba", + "unicode_decimal": 59066 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrow-right", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923353", + "name": "arrowthinright", + "font_class": "arrowthinright", + "unicode": "e6bb", + "unicode_decimal": 59067 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrow-left", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923354", + "name": "arrowthinleft", + "font_class": "arrowthinleft", + "unicode": "e6bc", + "unicode_decimal": 59068 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrow-up", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923355", + "name": "arrowthinup", + "font_class": "arrowthinup", + "unicode": "e6bd", + "unicode_decimal": 59069 + }, + { + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrow-down", + "unicode": "e6be", + "unicode_decimal": 59070 + },{ + "icon_id": "24923356", + "name": "arrowthindown", + "font_class": "arrowthindown", + "unicode": "e6be", + "unicode_decimal": 59070 + }, + { + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "bottom", + "unicode": "e6b8", + "unicode_decimal": 59064 + },{ + "icon_id": "24923349", + "name": "arrowdown", + "font_class": "arrowdown", + "unicode": "e6b8", + "unicode_decimal": 59064 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "right", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923346", + "name": "arrowright", + "font_class": "arrowright", + "unicode": "e6b5", + "unicode_decimal": 59061 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "top", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923347", + "name": "arrowup", + "font_class": "arrowup", + "unicode": "e6b6", + "unicode_decimal": 59062 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "left", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923348", + "name": "arrowleft", + "font_class": "arrowleft", + "unicode": "e6b7", + "unicode_decimal": 59063 + }, + { + "icon_id": "24923334", + "name": "eye", + "font_class": "eye", + "unicode": "e651", + "unicode_decimal": 58961 + }, + { + "icon_id": "24923335", + "name": "eye-filled", + "font_class": "eye-filled", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "24923336", + "name": "eye-slash", + "font_class": "eye-slash", + "unicode": "e6b3", + "unicode_decimal": 59059 + }, + { + "icon_id": "24923337", + "name": "eye-slash-filled", + "font_class": "eye-slash-filled", + "unicode": "e6b4", + "unicode_decimal": 59060 + }, + { + "icon_id": "24923305", + "name": "info-filled", + "font_class": "info-filled", + "unicode": "e649", + "unicode_decimal": 58953 + }, + { + "icon_id": "24923299", + "name": "reload-01", + "font_class": "reload", + "unicode": "e6b2", + "unicode_decimal": 59058 + }, + { + "icon_id": "24923195", + "name": "mic_slash_fill", + "font_class": "micoff-filled", + "unicode": "e6b0", + "unicode_decimal": 59056 + }, + { + "icon_id": "24923165", + "name": "map-pin-ellipse", + "font_class": "map-pin-ellipse", + "unicode": "e6ac", + "unicode_decimal": 59052 + }, + { + "icon_id": "24923166", + "name": "map-pin", + "font_class": "map-pin", + "unicode": "e6ad", + "unicode_decimal": 59053 + }, + { + "icon_id": "24923167", + "name": "location", + "font_class": "location", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "24923064", + "name": "starhalf", + "font_class": "starhalf", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "24923065", + "name": "star", + "font_class": "star", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "24923066", + "name": "star-filled", + "font_class": "star-filled", + "unicode": "e68f", + "unicode_decimal": 59023 + }, + { + "icon_id": "24899646", + "name": "a-rilidaka", + "font_class": "calendar", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "24899647", + "name": "fire", + "font_class": "fire", + "unicode": "e6a1", + "unicode_decimal": 59041 + }, + { + "icon_id": "24899648", + "name": "paihangbang", + "font_class": "medal", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "24899649", + "name": "font", + "font_class": "font", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "24899650", + "name": "gift", + "font_class": "gift", + "unicode": "e6a4", + "unicode_decimal": 59044 + }, + { + "icon_id": "24899651", + "name": "link", + "font_class": "link", + "unicode": "e6a5", + "unicode_decimal": 59045 + }, + { + "icon_id": "24899652", + "name": "notification", + "font_class": "notification", + "unicode": "e6a6", + "unicode_decimal": 59046 + }, + { + "icon_id": "24899653", + "name": "staff", + "font_class": "staff", + "unicode": "e6a7", + "unicode_decimal": 59047 + }, + { + "icon_id": "24899654", + "name": "VIP", + "font_class": "vip", + "unicode": "e6a8", + "unicode_decimal": 59048 + }, + { + "icon_id": "24899655", + "name": "folder_add", + "font_class": "folder-add", + "unicode": "e6a9", + "unicode_decimal": 59049 + }, + { + "icon_id": "24899656", + "name": "tune", + "font_class": "tune", + "unicode": "e6aa", + "unicode_decimal": 59050 + }, + { + "icon_id": "24899657", + "name": "shimingrenzheng", + "font_class": "auth", + "unicode": "e6ab", + "unicode_decimal": 59051 + }, + { + "icon_id": "24899565", + "name": "person", + "font_class": "person", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "24899566", + "name": "email-filled", + "font_class": "email-filled", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "24899567", + "name": "phone-filled", + "font_class": "phone-filled", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "24899568", + "name": "phone", + "font_class": "phone", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "24899570", + "name": "email", + "font_class": "email", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "24899571", + "name": "personadd", + "font_class": "personadd", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "24899558", + "name": "chatboxes-filled", + "font_class": "chatboxes-filled", + "unicode": "e692", + "unicode_decimal": 59026 + }, + { + "icon_id": "24899559", + "name": "contact", + "font_class": "contact", + "unicode": "e693", + "unicode_decimal": 59027 + }, + { + "icon_id": "24899560", + "name": "chatbubble-filled", + "font_class": "chatbubble-filled", + "unicode": "e694", + "unicode_decimal": 59028 + }, + { + "icon_id": "24899561", + "name": "contact-filled", + "font_class": "contact-filled", + "unicode": "e695", + "unicode_decimal": 59029 + }, + { + "icon_id": "24899562", + "name": "chatboxes", + "font_class": "chatboxes", + "unicode": "e696", + "unicode_decimal": 59030 + }, + { + "icon_id": "24899563", + "name": "chatbubble", + "font_class": "chatbubble", + "unicode": "e697", + "unicode_decimal": 59031 + }, + { + "icon_id": "24881290", + "name": "upload-filled", + "font_class": "upload-filled", + "unicode": "e68e", + "unicode_decimal": 59022 + }, + { + "icon_id": "24881292", + "name": "upload", + "font_class": "upload", + "unicode": "e690", + "unicode_decimal": 59024 + }, + { + "icon_id": "24881293", + "name": "weixin", + "font_class": "weixin", + "unicode": "e691", + "unicode_decimal": 59025 + }, + { + "icon_id": "24881274", + "name": "compose", + "font_class": "compose", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "24881275", + "name": "qq", + "font_class": "qq", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "24881276", + "name": "download-filled", + "font_class": "download-filled", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "24881277", + "name": "pengyouquan", + "font_class": "pyq", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "24881279", + "name": "sound", + "font_class": "sound", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "24881280", + "name": "trash-filled", + "font_class": "trash-filled", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "24881281", + "name": "sound-filled", + "font_class": "sound-filled", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "24881282", + "name": "trash", + "font_class": "trash", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "24881284", + "name": "videocam-filled", + "font_class": "videocam-filled", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "24881285", + "name": "spinner-cycle", + "font_class": "spinner-cycle", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "24881286", + "name": "weibo", + "font_class": "weibo", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "24881288", + "name": "videocam", + "font_class": "videocam", + "unicode": "e68c", + "unicode_decimal": 59020 + }, + { + "icon_id": "24881289", + "name": "download", + "font_class": "download", + "unicode": "e68d", + "unicode_decimal": 59021 + }, + { + "icon_id": "24879601", + "name": "help", + "font_class": "help", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "24879602", + "name": "navigate-filled", + "font_class": "navigate-filled", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "24879603", + "name": "plusempty", + "font_class": "plusempty", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "24879604", + "name": "smallcircle", + "font_class": "smallcircle", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "24879605", + "name": "minus-filled", + "font_class": "minus-filled", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "24879606", + "name": "micoff", + "font_class": "micoff", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "24879588", + "name": "closeempty", + "font_class": "closeempty", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "24879589", + "name": "clear", + "font_class": "clear", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "24879590", + "name": "navigate", + "font_class": "navigate", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "24879591", + "name": "minus", + "font_class": "minus", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "24879592", + "name": "image", + "font_class": "image", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "24879593", + "name": "mic", + "font_class": "mic", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "24879594", + "name": "paperplane", + "font_class": "paperplane", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "24879595", + "name": "close", + "font_class": "close", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "24879596", + "name": "help-filled", + "font_class": "help-filled", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "24879597", + "name": "plus-filled", + "font_class": "paperplane-filled", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "24879598", + "name": "plus", + "font_class": "plus", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "24879599", + "name": "mic-filled", + "font_class": "mic-filled", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "24879600", + "name": "image-filled", + "font_class": "image-filled", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "24855900", + "name": "locked-filled", + "font_class": "locked-filled", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "24855901", + "name": "info", + "font_class": "info", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "24855903", + "name": "locked", + "font_class": "locked", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "24855884", + "name": "camera-filled", + "font_class": "camera-filled", + "unicode": "e658", + "unicode_decimal": 58968 + }, + { + "icon_id": "24855885", + "name": "chat-filled", + "font_class": "chat-filled", + "unicode": "e659", + "unicode_decimal": 58969 + }, + { + "icon_id": "24855886", + "name": "camera", + "font_class": "camera", + "unicode": "e65a", + "unicode_decimal": 58970 + }, + { + "icon_id": "24855887", + "name": "circle", + "font_class": "circle", + "unicode": "e65b", + "unicode_decimal": 58971 + }, + { + "icon_id": "24855888", + "name": "checkmarkempty", + "font_class": "checkmarkempty", + "unicode": "e65c", + "unicode_decimal": 58972 + }, + { + "icon_id": "24855889", + "name": "chat", + "font_class": "chat", + "unicode": "e65d", + "unicode_decimal": 58973 + }, + { + "icon_id": "24855890", + "name": "circle-filled", + "font_class": "circle-filled", + "unicode": "e65e", + "unicode_decimal": 58974 + }, + { + "icon_id": "24855891", + "name": "flag", + "font_class": "flag", + "unicode": "e65f", + "unicode_decimal": 58975 + }, + { + "icon_id": "24855892", + "name": "flag-filled", + "font_class": "flag-filled", + "unicode": "e660", + "unicode_decimal": 58976 + }, + { + "icon_id": "24855893", + "name": "gear-filled", + "font_class": "gear-filled", + "unicode": "e661", + "unicode_decimal": 58977 + }, + { + "icon_id": "24855894", + "name": "home", + "font_class": "home", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "24855895", + "name": "home-filled", + "font_class": "home-filled", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "24855896", + "name": "gear", + "font_class": "gear", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "24855897", + "name": "smallcircle-filled", + "font_class": "smallcircle-filled", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "24855898", + "name": "map-filled", + "font_class": "map-filled", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "24855899", + "name": "map", + "font_class": "map", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "24855825", + "name": "refresh-filled", + "font_class": "refresh-filled", + "unicode": "e656", + "unicode_decimal": 58966 + }, + { + "icon_id": "24855826", + "name": "refresh", + "font_class": "refresh", + "unicode": "e657", + "unicode_decimal": 58967 + }, + { + "icon_id": "24855808", + "name": "cloud-upload", + "font_class": "cloud-upload", + "unicode": "e645", + "unicode_decimal": 58949 + }, + { + "icon_id": "24855809", + "name": "cloud-download-filled", + "font_class": "cloud-download-filled", + "unicode": "e646", + "unicode_decimal": 58950 + }, + { + "icon_id": "24855810", + "name": "cloud-download", + "font_class": "cloud-download", + "unicode": "e647", + "unicode_decimal": 58951 + }, + { + "icon_id": "24855811", + "name": "cloud-upload-filled", + "font_class": "cloud-upload-filled", + "unicode": "e648", + "unicode_decimal": 58952 + }, + { + "icon_id": "24855813", + "name": "redo", + "font_class": "redo", + "unicode": "e64a", + "unicode_decimal": 58954 + }, + { + "icon_id": "24855814", + "name": "images-filled", + "font_class": "images-filled", + "unicode": "e64b", + "unicode_decimal": 58955 + }, + { + "icon_id": "24855815", + "name": "undo-filled", + "font_class": "undo-filled", + "unicode": "e64c", + "unicode_decimal": 58956 + }, + { + "icon_id": "24855816", + "name": "more", + "font_class": "more", + "unicode": "e64d", + "unicode_decimal": 58957 + }, + { + "icon_id": "24855817", + "name": "more-filled", + "font_class": "more-filled", + "unicode": "e64e", + "unicode_decimal": 58958 + }, + { + "icon_id": "24855818", + "name": "undo", + "font_class": "undo", + "unicode": "e64f", + "unicode_decimal": 58959 + }, + { + "icon_id": "24855819", + "name": "images", + "font_class": "images", + "unicode": "e650", + "unicode_decimal": 58960 + }, + { + "icon_id": "24855821", + "name": "paperclip", + "font_class": "paperclip", + "unicode": "e652", + "unicode_decimal": 58962 + }, + { + "icon_id": "24855822", + "name": "settings", + "font_class": "settings", + "unicode": "e653", + "unicode_decimal": 58963 + }, + { + "icon_id": "24855823", + "name": "search", + "font_class": "search", + "unicode": "e654", + "unicode_decimal": 58964 + }, + { + "icon_id": "24855824", + "name": "redo-filled", + "font_class": "redo-filled", + "unicode": "e655", + "unicode_decimal": 58965 + }, + { + "icon_id": "24841702", + "name": "list", + "font_class": "list", + "unicode": "e644", + "unicode_decimal": 58948 + }, + { + "icon_id": "24841489", + "name": "mail-open-filled", + "font_class": "mail-open-filled", + "unicode": "e63a", + "unicode_decimal": 58938 + }, + { + "icon_id": "24841491", + "name": "hand-thumbsdown-filled", + "font_class": "hand-down-filled", + "unicode": "e63c", + "unicode_decimal": 58940 + }, + { + "icon_id": "24841492", + "name": "hand-thumbsdown", + "font_class": "hand-down", + "unicode": "e63d", + "unicode_decimal": 58941 + }, + { + "icon_id": "24841493", + "name": "hand-thumbsup-filled", + "font_class": "hand-up-filled", + "unicode": "e63e", + "unicode_decimal": 58942 + }, + { + "icon_id": "24841494", + "name": "hand-thumbsup", + "font_class": "hand-up", + "unicode": "e63f", + "unicode_decimal": 58943 + }, + { + "icon_id": "24841496", + "name": "heart-filled", + "font_class": "heart-filled", + "unicode": "e641", + "unicode_decimal": 58945 + }, + { + "icon_id": "24841498", + "name": "mail-open", + "font_class": "mail-open", + "unicode": "e643", + "unicode_decimal": 58947 + }, + { + "icon_id": "24841488", + "name": "heart", + "font_class": "heart", + "unicode": "e639", + "unicode_decimal": 58937 + }, + { + "icon_id": "24839963", + "name": "loop", + "font_class": "loop", + "unicode": "e633", + "unicode_decimal": 58931 + }, + { + "icon_id": "24839866", + "name": "pulldown", + "font_class": "pulldown", + "unicode": "e632", + "unicode_decimal": 58930 + }, + { + "icon_id": "24813798", + "name": "scan", + "font_class": "scan", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "24813786", + "name": "bars", + "font_class": "bars", + "unicode": "e627", + "unicode_decimal": 58919 + }, + { + "icon_id": "24813788", + "name": "cart-filled", + "font_class": "cart-filled", + "unicode": "e629", + "unicode_decimal": 58921 + }, + { + "icon_id": "24813790", + "name": "checkbox", + "font_class": "checkbox", + "unicode": "e62b", + "unicode_decimal": 58923 + }, + { + "icon_id": "24813791", + "name": "checkbox-filled", + "font_class": "checkbox-filled", + "unicode": "e62c", + "unicode_decimal": 58924 + }, + { + "icon_id": "24813794", + "name": "shop", + "font_class": "shop", + "unicode": "e62f", + "unicode_decimal": 58927 + }, + { + "icon_id": "24813795", + "name": "headphones", + "font_class": "headphones", + "unicode": "e630", + "unicode_decimal": 58928 + }, + { + "icon_id": "24813796", + "name": "cart", + "font_class": "cart", + "unicode": "e631", + "unicode_decimal": 58929 + } + ] +} diff --git a/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue new file mode 100644 index 0000000..86e7444 --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uni-icons.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/uni_modules/uni-icons/components/uni-icons/uni.ttf b/uni_modules/uni-icons/components/uni-icons/uni.ttf new file mode 100644 index 0000000000000000000000000000000000000000..60a1968d08cc6056c70b5402b2effac43c6f96a3 GIT binary patch literal 26164 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 literal 0 HcmV?d00001 diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.css b/uni_modules/uni-icons/components/uni-icons/uniicons.css new file mode 100644 index 0000000..2f56eab --- /dev/null +++ b/uni_modules/uni-icons/components/uni-icons/uniicons.css @@ -0,0 +1,663 @@ +.uniui-color:before { + content: "\e6cf"; +} + +.uniui-wallet:before { + content: "\e6b1"; +} + +.uniui-settings-filled:before { + content: "\e6ce"; +} + +.uniui-auth-filled:before { + content: "\e6cc"; +} + +.uniui-shop-filled:before { + content: "\e6cd"; +} + +.uniui-staff-filled:before { + content: "\e6cb"; +} + +.uniui-vip-filled:before { + content: "\e6c6"; +} + +.uniui-plus-filled:before { + content: "\e6c7"; +} + +.uniui-folder-add-filled:before { + content: "\e6c8"; +} + +.uniui-color-filled:before { + content: "\e6c9"; +} + +.uniui-tune-filled:before { + content: "\e6ca"; +} + +.uniui-calendar-filled:before { + content: "\e6c0"; +} + +.uniui-notification-filled:before { + content: "\e6c1"; +} + +.uniui-wallet-filled:before { + content: "\e6c2"; +} + +.uniui-medal-filled:before { + content: "\e6c3"; +} + +.uniui-gift-filled:before { + content: "\e6c4"; +} + +.uniui-fire-filled:before { + content: "\e6c5"; +} + +.uniui-refreshempty:before { + content: "\e6bf"; +} + +.uniui-location-filled:before { + content: "\e6af"; +} + +.uniui-person-filled:before { + content: "\e69d"; +} + +.uniui-personadd-filled:before { + content: "\e698"; +} + +.uniui-back:before { + content: "\e6b9"; +} + +.uniui-forward:before { + content: "\e6ba"; +} + +.uniui-arrow-right:before { + content: "\e6bb"; +} + +.uniui-arrowthinright:before { + content: "\e6bb"; +} + +.uniui-arrow-left:before { + content: "\e6bc"; +} + +.uniui-arrowthinleft:before { + content: "\e6bc"; +} + +.uniui-arrow-up:before { + content: "\e6bd"; +} + +.uniui-arrowthinup:before { + content: "\e6bd"; +} + +.uniui-arrow-down:before { + content: "\e6be"; +} + +.uniui-arrowthindown:before { + content: "\e6be"; +} + +.uniui-bottom:before { + content: "\e6b8"; +} + +.uniui-arrowdown:before { + content: "\e6b8"; +} + +.uniui-right:before { + content: "\e6b5"; +} + +.uniui-arrowright:before { + content: "\e6b5"; +} + +.uniui-top:before { + content: "\e6b6"; +} + +.uniui-arrowup:before { + content: "\e6b6"; +} + +.uniui-left:before { + content: "\e6b7"; +} + +.uniui-arrowleft:before { + content: "\e6b7"; +} + +.uniui-eye:before { + content: "\e651"; +} + +.uniui-eye-filled:before { + content: "\e66a"; +} + +.uniui-eye-slash:before { + content: "\e6b3"; +} + +.uniui-eye-slash-filled:before { + content: "\e6b4"; +} + +.uniui-info-filled:before { + content: "\e649"; +} + +.uniui-reload:before { + content: "\e6b2"; +} + +.uniui-micoff-filled:before { + content: "\e6b0"; +} + +.uniui-map-pin-ellipse:before { + content: "\e6ac"; +} + +.uniui-map-pin:before { + content: "\e6ad"; +} + +.uniui-location:before { + content: "\e6ae"; +} + +.uniui-starhalf:before { + content: "\e683"; +} + +.uniui-star:before { + content: "\e688"; +} + +.uniui-star-filled:before { + content: "\e68f"; +} + +.uniui-calendar:before { + content: "\e6a0"; +} + +.uniui-fire:before { + content: "\e6a1"; +} + +.uniui-medal:before { + content: "\e6a2"; +} + +.uniui-font:before { + content: "\e6a3"; +} + +.uniui-gift:before { + content: "\e6a4"; +} + +.uniui-link:before { + content: "\e6a5"; +} + +.uniui-notification:before { + content: "\e6a6"; +} + +.uniui-staff:before { + content: "\e6a7"; +} + +.uniui-vip:before { + content: "\e6a8"; +} + +.uniui-folder-add:before { + content: "\e6a9"; +} + +.uniui-tune:before { + content: "\e6aa"; +} + +.uniui-auth:before { + content: "\e6ab"; +} + +.uniui-person:before { + content: "\e699"; +} + +.uniui-email-filled:before { + content: "\e69a"; +} + +.uniui-phone-filled:before { + content: "\e69b"; +} + +.uniui-phone:before { + content: "\e69c"; +} + +.uniui-email:before { + content: "\e69e"; +} + +.uniui-personadd:before { + content: "\e69f"; +} + +.uniui-chatboxes-filled:before { + content: "\e692"; +} + +.uniui-contact:before { + content: "\e693"; +} + +.uniui-chatbubble-filled:before { + content: "\e694"; +} + +.uniui-contact-filled:before { + content: "\e695"; +} + +.uniui-chatboxes:before { + content: "\e696"; +} + +.uniui-chatbubble:before { + content: "\e697"; +} + +.uniui-upload-filled:before { + content: "\e68e"; +} + +.uniui-upload:before { + content: "\e690"; +} + +.uniui-weixin:before { + content: "\e691"; +} + +.uniui-compose:before { + content: "\e67f"; +} + +.uniui-qq:before { + content: "\e680"; +} + +.uniui-download-filled:before { + content: "\e681"; +} + +.uniui-pyq:before { + content: "\e682"; +} + +.uniui-sound:before { + content: "\e684"; +} + +.uniui-trash-filled:before { + content: "\e685"; +} + +.uniui-sound-filled:before { + content: "\e686"; +} + +.uniui-trash:before { + content: "\e687"; +} + +.uniui-videocam-filled:before { + content: "\e689"; +} + +.uniui-spinner-cycle:before { + content: "\e68a"; +} + +.uniui-weibo:before { + content: "\e68b"; +} + +.uniui-videocam:before { + content: "\e68c"; +} + +.uniui-download:before { + content: "\e68d"; +} + +.uniui-help:before { + content: "\e679"; +} + +.uniui-navigate-filled:before { + content: "\e67a"; +} + +.uniui-plusempty:before { + content: "\e67b"; +} + +.uniui-smallcircle:before { + content: "\e67c"; +} + +.uniui-minus-filled:before { + content: "\e67d"; +} + +.uniui-micoff:before { + content: "\e67e"; +} + +.uniui-closeempty:before { + content: "\e66c"; +} + +.uniui-clear:before { + content: "\e66d"; +} + +.uniui-navigate:before { + content: "\e66e"; +} + +.uniui-minus:before { + content: "\e66f"; +} + +.uniui-image:before { + content: "\e670"; +} + +.uniui-mic:before { + content: "\e671"; +} + +.uniui-paperplane:before { + content: "\e672"; +} + +.uniui-close:before { + content: "\e673"; +} + +.uniui-help-filled:before { + content: "\e674"; +} + +.uniui-paperplane-filled:before { + content: "\e675"; +} + +.uniui-plus:before { + content: "\e676"; +} + +.uniui-mic-filled:before { + content: "\e677"; +} + +.uniui-image-filled:before { + content: "\e678"; +} + +.uniui-locked-filled:before { + content: "\e668"; +} + +.uniui-info:before { + content: "\e669"; +} + +.uniui-locked:before { + content: "\e66b"; +} + +.uniui-camera-filled:before { + content: "\e658"; +} + +.uniui-chat-filled:before { + content: "\e659"; +} + +.uniui-camera:before { + content: "\e65a"; +} + +.uniui-circle:before { + content: "\e65b"; +} + +.uniui-checkmarkempty:before { + content: "\e65c"; +} + +.uniui-chat:before { + content: "\e65d"; +} + +.uniui-circle-filled:before { + content: "\e65e"; +} + +.uniui-flag:before { + content: "\e65f"; +} + +.uniui-flag-filled:before { + content: "\e660"; +} + +.uniui-gear-filled:before { + content: "\e661"; +} + +.uniui-home:before { + content: "\e662"; +} + +.uniui-home-filled:before { + content: "\e663"; +} + +.uniui-gear:before { + content: "\e664"; +} + +.uniui-smallcircle-filled:before { + content: "\e665"; +} + +.uniui-map-filled:before { + content: "\e666"; +} + +.uniui-map:before { + content: "\e667"; +} + +.uniui-refresh-filled:before { + content: "\e656"; +} + +.uniui-refresh:before { + content: "\e657"; +} + +.uniui-cloud-upload:before { + content: "\e645"; +} + +.uniui-cloud-download-filled:before { + content: "\e646"; +} + +.uniui-cloud-download:before { + content: "\e647"; +} + +.uniui-cloud-upload-filled:before { + content: "\e648"; +} + +.uniui-redo:before { + content: "\e64a"; +} + +.uniui-images-filled:before { + content: "\e64b"; +} + +.uniui-undo-filled:before { + content: "\e64c"; +} + +.uniui-more:before { + content: "\e64d"; +} + +.uniui-more-filled:before { + content: "\e64e"; +} + +.uniui-undo:before { + content: "\e64f"; +} + +.uniui-images:before { + content: "\e650"; +} + +.uniui-paperclip:before { + content: "\e652"; +} + +.uniui-settings:before { + content: "\e653"; +} + +.uniui-search:before { + content: "\e654"; +} + +.uniui-redo-filled:before { + content: "\e655"; +} + +.uniui-list:before { + content: "\e644"; +} + +.uniui-mail-open-filled:before { + content: "\e63a"; +} + +.uniui-hand-down-filled:before { + content: "\e63c"; +} + +.uniui-hand-down:before { + content: "\e63d"; +} + +.uniui-hand-up-filled:before { + content: "\e63e"; +} + +.uniui-hand-up:before { + content: "\e63f"; +} + +.uniui-heart-filled:before { + content: "\e641"; +} + +.uniui-mail-open:before { + content: "\e643"; +} + +.uniui-heart:before { + content: "\e639"; +} + +.uniui-loop:before { + content: "\e633"; +} + +.uniui-pulldown:before { + content: "\e632"; +} + +.uniui-scan:before { + content: "\e62a"; +} + +.uniui-bars:before { + content: "\e627"; +} + +.uniui-cart-filled:before { + content: "\e629"; +} + +.uniui-checkbox:before { + content: "\e62b"; +} + +.uniui-checkbox-filled:before { + content: "\e62c"; +} + +.uniui-shop:before { + content: "\e62f"; +} + +.uniui-headphones:before { + content: "\e630"; +} + +.uniui-cart:before { + content: "\e631"; +} diff --git a/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/uni_modules/uni-icons/components/uni-icons/uniicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..835f33bc9411461b8b9046b3fec742e921d6ce3a GIT binary patch literal 35760 zcmeFacbp?vl{Q?rN>WLsSXIigCAC7gI!S6tox^m`be^1}CwPJ>yxZ{uSzi{WC_=LI+*Wx!<-H!v})21fuKMZQ#fB2Fs zuEGwU_ZyDmuR3&e_s&PS@Be}0T=(JF$l;w=9Als0-iQ4lE^0cm^YDeWhnK#G<4!$@ z>-QZydhsP6Kl0Pv9Cw|EbP-?YO$@C;`+ zuKnR1zxV)MXnddfv56Dn_-W<%#_jZ^d%1f!hyI(6O8C!lXY}93nl=3f9^gzbYS03Jm0vJ;T)Z1IKntfUtypB#zx`e6wG3 zC5AhB&Me^QdH${3yL1otSUp#NN^cKN_yKnkm%XqxczWUgrT^Oo|6lL`SPy&+DZ_DX z1{?B^82rf|!cpSXHhg1*;kZecHy+MI*MqCu>g9T0eYieaf9edzAC9!tJL|pm0UQ~l zBQN;JaG!_sb8)VT%i=%By_I_#_ZIFh?(N(=xVtf?-^|^~y@`7RcMEqbcN=#*_eSmx z?)BVjxU0EqFm9T;Q`~9pTJAdTdhWH{>+qBtxEr~fxSP3Gb60T(xkKDx?g)33JH{R7 zPH-1465x0fg%5CGeb33>TxSiZCZa24wyO7(&Q z>$wfwMs5?gnVaOMxM^;NYvpFSIc_<(f-7(s&u0CxL#u8VbF$klItIryQ@x|5W z48lm`>dOtnnB(dz48rK+>MISxIOOW948n-y>Z=XH*yQSK48kbo>T3axcUVKK~8Y>od!W-aP?gVL3VKU-3CF5aP>U~L7s5+3k`x~;p%%0f{fwn z`wW7#;p+Phg52Ti2MmG);_4R}1X;w@scs-hC9Y0&13^AJNK#+l4o$3aH zH00`3HxT3^SEssxAR)Or)eQt$$+z7tkWDxWPSHIIBXb!IaW`m$ZxcXZRf;QpmZ#4*d zg{!~KAZQq_ewRVeHC+Ae20`m^^>-Kq{lnGoHVB%CtKVY~bP`v;*C1#ou700E&{JIf zeuJQ~xcWN{g6`t#?=lEljH|!fAm}r${tpI0vvKtY41$j1>hCcK+K#I~Xb|)sSAVZT z(12Y1eFi}na`pEc1g*%`|Ir}mN3Q+>gPp}tAE%avLosrF^GJG z`bQ0dZsqD9GYDFitAE@e=v%J-34@?{x%wv!f)3{DpE3yAn5#cz5cD!v|Fl8S&|Lj9 z20>SI_0JjvtVjlpxwFpV+N5QQ~$g{(D+>a3kE^= zbM-G81S^26f5{-&16=*f2Ej7m>R&MkHUd}wszKz<)E_qpb^}-cnn7g6)t@j3wggxI zxp1QBm2=klxXa|a&TVx+;Qp=WwVt{>D}O~9QXW)O>O0h5db_-@^8Ud$^pPT-1=NS-v_4k2r|_kM*0!vaW9xyNll~`AaKH zuPQxR4wv6t{%QC2?wh**v$DGKU?rS_5?F|crGafkiL7dNk-%Y_E4VmkSn6>Hb;SUukEx3l0# zej=BS$yT%Av8Uc*J`xpdRw>aQ5n{34Scli{%@0hjo|#!%t;CXMOO1~vM@By$$wu(0 z7+*JsbCF0c%-{dHFL+pQI~s3&zjaOf89{d%!`6o3fsCO(`6

    PqiNa$~E4XJ#a8s%?nsx`&SiQ7Wz{CE9c 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 literal 0 HcmV?d00001 diff --git a/uni_modules/uni-icons/package.json b/uni_modules/uni-icons/package.json new file mode 100644 index 0000000..d1c4e77 --- /dev/null +++ b/uni_modules/uni-icons/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-icons", + "displayName": "uni-icons 图标", + "version": "1.3.5", + "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。", + "keywords": [ + "uni-ui", + "uniui", + "icon", + "图标" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.2.14" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-icons/readme.md b/uni_modules/uni-icons/readme.md new file mode 100644 index 0000000..86234ba --- /dev/null +++ b/uni_modules/uni-icons/readme.md @@ -0,0 +1,8 @@ +## Icons 图标 +> **组件名:uni-icons** +> 代码块: `uIcons` + +用于展示 icons 图标 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-indexed-list/changelog.md b/uni_modules/uni-indexed-list/changelog.md new file mode 100644 index 0000000..08fa71c --- /dev/null +++ b/uni_modules/uni-indexed-list/changelog.md @@ -0,0 +1,17 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-indexed-list](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue new file mode 100644 index 0000000..19284bd --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list-item.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue new file mode 100644 index 0000000..ee3a7ec --- /dev/null +++ b/uni_modules/uni-indexed-list/components/uni-indexed-list/uni-indexed-list.vue @@ -0,0 +1,367 @@ + + + diff --git a/uni_modules/uni-indexed-list/package.json b/uni_modules/uni-indexed-list/package.json new file mode 100644 index 0000000..125c0e7 --- /dev/null +++ b/uni_modules/uni-indexed-list/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-indexed-list", + "displayName": "uni-indexed-list 索引列表", + "version": "1.2.1", + "description": "索引列表组件,右侧带索引的列表,方便快速定位到具体内容,通常用于城市/机场选择等场景", + "keywords": [ + "uni-ui", + "索引列表", + "索引", + "列表" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-indexed-list/readme.md b/uni_modules/uni-indexed-list/readme.md new file mode 100644 index 0000000..44ad84b --- /dev/null +++ b/uni_modules/uni-indexed-list/readme.md @@ -0,0 +1,11 @@ + + +## IndexedList 索引列表 +> **组件名:uni-indexed-list** +> 代码块: `uIndexedList` + + +用于展示索引列表。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-indexed-list) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-link/changelog.md b/uni_modules/uni-link/changelog.md new file mode 100644 index 0000000..2cfbf59 --- /dev/null +++ b/uni_modules/uni-link/changelog.md @@ -0,0 +1,17 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-link](https://uniapp.dcloud.io/component/uniui/uni-link) +## 1.1.7(2021-11-08) +## 0.0.7(2021-09-03) +- 修复 在 nvue 下不显示的 bug +## 0.0.6(2021-07-30) +- 新增 支持自定义插槽 +## 0.0.5(2021-06-21) +- 新增 download 属性,H5平台下载文件名 +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-03-09) +- 新增 href 属性支持 tel:|mailto: + +## 0.0.2(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-link/components/uni-link/uni-link.vue b/uni_modules/uni-link/components/uni-link/uni-link.vue new file mode 100644 index 0000000..27c5468 --- /dev/null +++ b/uni_modules/uni-link/components/uni-link/uni-link.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/uni_modules/uni-link/package.json b/uni_modules/uni-link/package.json new file mode 100644 index 0000000..77b1986 --- /dev/null +++ b/uni_modules/uni-link/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-link", + "displayName": "uni-link 超链接", + "version": "1.0.0", + "description": "uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打", + "keywords": [ + "uni-ui", + "uniui", + "link", + "超链接", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "y" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-link/readme.md b/uni_modules/uni-link/readme.md new file mode 100644 index 0000000..7f09e94 --- /dev/null +++ b/uni_modules/uni-link/readme.md @@ -0,0 +1,11 @@ + + +## Link 链接 +> **组件名:uni-link** +> 代码块: `uLink` + + +uni-link是一个外部网页超链接组件,在小程序内复制url,在app内打开外部浏览器,在h5端打开新网页。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-link) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-list/changelog.md b/uni_modules/uni-list/changelog.md new file mode 100644 index 0000000..6aa6e4e --- /dev/null +++ b/uni_modules/uni-list/changelog.md @@ -0,0 +1,20 @@ +## 1.2.1(2022-03-30) +- 删除无用文件 +## 1.2.0(2021-11-23) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-list](https://uniapp.dcloud.io/component/uniui/uni-list) +## 1.1.3(2021-08-30) +- 修复 在vue3中to属性在发行应用的时候报错的bug +## 1.1.2(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.1(2021-07-21) +- 修复 与其他组件嵌套使用时,点击失效的Bug +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.17(2021-05-12) +- 新增 组件示例地址 +## 1.0.16(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.0.15(2021-02-05) +- 调整为uni_modules目录规范 +- 修复 uni-list-chat 角标显示不正常的问题 diff --git a/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue new file mode 100644 index 0000000..b9349c2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss new file mode 100644 index 0000000..311f8d9 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss @@ -0,0 +1,58 @@ +/** + * 这里是 uni-list 组件内置的常用样式变量 + * 如果需要覆盖样式,这里提供了基本的组件样式变量,您可以尝试修改这里的变量,去完成样式替换,而不用去修改源码 + * + */ + +// 背景色 +$background-color : #fff; +// 分割线颜色 +$divide-line-color : #e5e5e5; + +// 默认头像大小,如需要修改此值,注意同步修改 js 中的值 const avatarWidth = xx ,目前只支持方形头像 +// nvue 页面不支持修改头像大小 +$avatar-width : 45px ; + +// 头像边框 +$avatar-border-radius: 5px; +$avatar-border-color: #eee; +$avatar-border-width: 1px; + +// 标题文字样式 +$title-size : 16px; +$title-color : #3b4144; +$title-weight : normal; + +// 描述文字样式 +$note-size : 12px; +$note-color : #999; +$note-weight : normal; + +// 右侧额外内容默认样式 +$right-text-size : 12px; +$right-text-color : #999; +$right-text-weight : normal; + +// 角标样式 +// nvue 页面不支持修改圆点位置以及大小 +// 角标在左侧时,角标的位置,默认为 0 ,负数左/下移动,正数右/上移动 +$badge-left: 0px; +$badge-top: 0px; + +// 显示圆点时,圆点大小 +$dot-width: 10px; +$dot-height: 10px; + +// 显示角标时,角标大小和字体大小 +$badge-size : 18px; +$badge-font : 12px; +// 显示角标时,角标前景色 +$badge-color : #fff; +// 显示角标时,角标背景色 +$badge-background-color : #ff5a5f; +// 显示角标时,角标左右间距 +$badge-space : 6px; + +// 状态样式 +// 选中颜色 +$hover : #f5f5f5; diff --git a/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue new file mode 100644 index 0000000..2b31008 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue @@ -0,0 +1,538 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue new file mode 100644 index 0000000..2c7d9ea --- /dev/null +++ b/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue @@ -0,0 +1,454 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-list - 副本.vue b/uni_modules/uni-list/components/uni-list/uni-list - 副本.vue new file mode 100644 index 0000000..1c85003 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-list - 副本.vue @@ -0,0 +1,106 @@ + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-list.vue b/uni_modules/uni-list/components/uni-list/uni-list.vue new file mode 100644 index 0000000..ecda676 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-list.vue @@ -0,0 +1,108 @@ + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.vue b/uni_modules/uni-list/components/uni-list/uni-refresh.vue new file mode 100644 index 0000000..3b4c5a2 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/uni_modules/uni-list/components/uni-list/uni-refresh.wxs b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs new file mode 100644 index 0000000..818a6b7 --- /dev/null +++ b/uni_modules/uni-list/components/uni-list/uni-refresh.wxs @@ -0,0 +1,87 @@ +var pullDown = { + threshold: 95, + maxHeight: 200, + callRefresh: 'onrefresh', + callPullingDown: 'onpullingdown', + refreshSelector: '.uni-refresh' +}; + +function ready(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + state.canPullDown = newValue; + // console.log(newValue); +} + +function touchStart(e, instance) { + var state = instance.getState(); + state.refreshInstance = instance.selectComponent(pullDown.refreshSelector); + state.canPullDown = (state.refreshInstance != null && state.refreshInstance != undefined); + if (!state.canPullDown) { + return + } + + // console.log("touchStart"); + + state.height = 0; + state.touchStartY = e.touches[0].pageY || e.changedTouches[0].pageY; + state.refreshInstance.setStyle({ + 'height': 0 + }); + state.refreshInstance.callMethod("onchange", true); +} + +function touchMove(e, ownerInstance) { + var instance = e.instance; + var state = instance.getState(); + if (!state.canPullDown) { + return + } + + var oldHeight = state.height; + var endY = e.touches[0].pageY || e.changedTouches[0].pageY; + var height = endY - state.touchStartY; + if (height > pullDown.maxHeight) { + return; + } + + var refreshInstance = state.refreshInstance; + refreshInstance.setStyle({ + 'height': height + 'px' + }); + + height = height < pullDown.maxHeight ? height : pullDown.maxHeight; + state.height = height; + refreshInstance.callMethod(pullDown.callPullingDown, { + height: height + }); +} + +function touchEnd(e, ownerInstance) { + var state = e.instance.getState(); + if (!state.canPullDown) { + return + } + + state.refreshInstance.callMethod("onchange", false); + + var refreshInstance = state.refreshInstance; + if (state.height > pullDown.threshold) { + refreshInstance.callMethod(pullDown.callRefresh); + return; + } + + refreshInstance.setStyle({ + 'height': 0 + }); +} + +function propObserver(newValue, oldValue, instance) { + pullDown = newValue; +} + +module.exports = { + touchmove: touchMove, + touchstart: touchStart, + touchend: touchEnd, + propObserver: propObserver +} diff --git a/uni_modules/uni-list/package.json b/uni_modules/uni-list/package.json new file mode 100644 index 0000000..66e8bef --- /dev/null +++ b/uni_modules/uni-list/package.json @@ -0,0 +1,91 @@ +{ + "id": "uni-list", + "displayName": "uni-list 列表", + "version": "1.2.1", + "description": "List 组件 ,帮助使用者快速构建列表。", + "keywords": [ + "", + "uni-ui", + "uniui", + "列表", + "", + "list" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-badge", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-list/readme.md b/uni_modules/uni-list/readme.md new file mode 100644 index 0000000..32c2865 --- /dev/null +++ b/uni_modules/uni-list/readme.md @@ -0,0 +1,346 @@ +## List 列表 +> **组件名:uni-list** +> 代码块: `uList`、`uListItem` +> 关联组件:`uni-list-item`、`uni-badge`、`uni-icons`、`uni-list-chat`、`uni-list-ad` + + +List 列表组件,包含基本列表样式、可扩展插槽机制、长列表性能优化、多端兼容。 + +在vue页面里,它默认使用页面级滚动。在app-nvue页面里,它默认使用原生list组件滚动。这样的长列表,在滚动出屏幕外后,系统会回收不可见区域的渲染内存资源,不会造成滚动越长手机越卡的问题。 + +uni-list组件是父容器,里面的核心是uni-list-item子组件,它代表列表中的一个可重复行,子组件可以无限循环。 + +uni-list-item有很多风格,uni-list-item组件通过内置的属性,满足一些常用的场景。当内置属性不满足需求时,可以通过扩展插槽来自定义列表内容。 + +内置属性可以覆盖的场景包括:导航列表、设置列表、小图标列表、通信录列表、聊天记录列表。 + +涉及很多大图或丰富内容的列表,比如类今日头条的新闻列表、类淘宝的电商列表,需要通过扩展插槽实现。 + +下文均有样例给出。 + +uni-list不包含下拉刷新和上拉翻页。上拉翻页另见组件:[uni-load-more](https://ext.dcloud.net.cn/plugin?id=29) + + +### 安装方式 + +本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,`HBuilderX 2.5.5`起,只需将本组件导入项目,在页面`template`中即可直接使用,无需在页面中`import`和注册`components`。 + +如需通过`npm`方式使用`uni-ui`组件,另见文档:[https://ext.dcloud.net.cn/plugin?id=55](https://ext.dcloud.net.cn/plugin?id=55) + +> **注意事项** +> 为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。 +> - 组件需要依赖 `sass` 插件 ,请自行手动安装 +> - 组件内部依赖 `'uni-icons'` 、`uni-badge` 组件 +> - `uni-list` 和 `uni-list-item` 需要配套使用,暂不支持单独使用 `uni-list-item` +> - 只有开启点击反馈后,会有点击选中效果 +> - 使用插槽时,可以完全自定义内容 +> - note 、rightText 属性暂时没做限制,不支持文字溢出隐藏,使用时应该控制长度显示或通过默认插槽自行扩展 +> - 支付宝小程序平台需要在支付宝小程序开发者工具里开启 component2 编译模式,开启方式: 详情 --> 项目配置 --> 启用 component2 编译 +> - 如果需要修改 `switch`、`badge` 样式,请使用插槽自定义 +> - 在 `HBuilderX` 低版本中,可能会出现组件显示 `undefined` 的问题,请升级最新的 `HBuilderX` 或者 `cli` +> - 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + +### 基本用法 + +- 设置 `title` 属性,可以显示列表标题 +- 设置 `disabled` 属性,可以禁用当前项 + +```html + + + + + +``` + +### 多行内容显示 + +- 设置 `note` 属性 ,可以在第二行显示描述文本信息 + +```html + + + + + +``` + +### 右侧显示角标、switch + +- 设置 `show-badge` 属性 ,可以显示角标内容 +- 设置 `show-switch` 属性,可以显示 switch 开关 + +```html + + + + + +``` + +### 左侧显示略缩图、图标 + +- 设置 `thumb` 属性 ,可以在列表左侧显示略缩图 +- 设置 `show-extra-icon` 属性,并指定 `extra-icon` 可以在左侧显示图标 + +```html + + + + +``` + +### 开启点击反馈和右侧箭头 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,并给列表右侧添加一个箭头 +- 设置 `to` 属性,可以跳转页面,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` + +```html + + + + + + + +``` + + +### 聊天列表示例 +- 设置 `clickable` 为 `true` ,则表示这是一个可点击的列表,会默认给一个点击效果,并可以监听 `click` 事件 +- 设置 `link` 属性,会自动开启点击反馈,`link` 的值表示跳转方式,如果不指定,默认为 `navigateTo` +- 设置 `to` 属性,可以跳转页面 +- `time` 属性,通常会设置成时间显示,但是这个属性不仅仅可以设置时间,你可以传入任何文本,注意文本长度可能会影响显示 +- `avatar` 和 `avatarList` 属性同时只会有一个生效,同时设置的话,`avatarList` 属性的长度大于1 ,`avatar` 属性将失效 +- 可以通过默认插槽自定义列表右侧内容 + +```html + + + + + + + + + + + + + + + + + 刚刚 + + + + + + + +``` + +```javascript + +export default { + components: {}, + data() { + return { + avatarList: [{ + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }, { + url: 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png' + }] + } + } +} + +``` + + +```css + +.chat-custom-right { + flex: 1; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + justify-content: space-between; + align-items: flex-end; +} + +.chat-custom-text { + font-size: 12px; + color: #999; +} + +``` + +## API + +### List Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +border |Boolean |true | 是否显示边框 + + +### ListItem Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +ellipsis |Number |0 | title 是否溢出隐藏,可选值,0:默认; 1:显示一行; 2:显示两行;【nvue 暂不支持】 +thumb |String |- | 左侧缩略图,若thumb有值,则不会显示扩展图标 +thumbSize |String |medium | 略缩图尺寸,可选值,lg:大图; medium:一般; sm:小图; +showBadge |Boolean |false | 是否显示数字角标 +badgeText |String |- | 数字角标内容 +badgeType |String |- | 数字角标类型,参考[uni-icons](https://ext.dcloud.net.cn/plugin?id=21) +badgeStyle |Object |- | 数字角标样式,使用uni-badge的custom-style参数 +rightText |String |- | 右侧文字内容 +disabled |Boolean |false | 是否禁用 +showArrow |Boolean |true | 是否显示箭头图标 +link |String |navigateTo | 新页面跳转方式,可选值见下表 +to |String |- | 新页面跳转地址,如填写此属性,click 会返回页面是否跳转成功 +clickable |Boolean |false | 是否开启点击反馈 +showSwitch |Boolean |false | 是否显示Switch +switchChecked |Boolean |false | Switch是否被选中 +showExtraIcon |Boolean |false | 左侧是否显示扩展图标 +extraIcon |Object |- | 扩展图标参数,格式为 ``{color: '#4cd964',size: '22',type: 'spinner'}``,参考 [uni-icons](https://ext.dcloud.net.cn/plugin?id=28) +direction | String |row | 排版方向,可选值,row:水平排列; column:垂直排列; 3个插槽是水平排还是垂直排,也受此属性控制 + + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItem Events + +事件称名 |说明 |返回参数 +:-: |:-: |:-: +click |点击 uniListItem 触发事件,需开启点击反馈 |- +switchChange |点击切换 Switch 时触发,需显示 switch |e={value:checked} + + + +### ListItem Slots + +名称 | 说明 +:-: | :-: +header | 左/上内容插槽,可完全自定义默认显示 +body | 中间内容插槽,可完全自定义中间内容 +footer | 右/下内容插槽,可完全自定义右侧内容 + + +> **通过插槽扩展** +> 需要注意的是当使用插槽时,内置样式将会失效,只保留排版样式,此时的样式需要开发者自己实现 +> 如果 `uni-list-item` 组件内置属性样式无法满足需求,可以使用插槽来自定义uni-list-item里的内容。 +> uni-list-item提供了3个可扩展的插槽:`header`、`body`、`footer` +> - 当 `direction` 属性为 `row` 时表示水平排列,此时 `header` 表示列表的左边部分,`body` 表示列表的中间部分,`footer` 表示列表的右边部分 +> - 当 `direction` 属性为 `column` 时表示垂直排列,此时 `header` 表示列表的上边部分,`body` 表示列表的中间部分,`footer` 表示列表的下边部分 +> 开发者可以只用1个插槽,也可以3个一起使用。在插槽中可自主编写view标签,实现自己所需的效果。 + + +**示例** + +```html + + + + + + + + + 自定义插槽 + + + + +``` + + + + + +### ListItemChat Props + +属性名 |类型 |默认值 | 说明 +:-: |:-: |:-: | :-: +title |String |- | 标题 +note |String |- | 描述 +clickable |Boolean |false | 是否开启点击反馈 +badgeText |String |- | 数字角标内容,设置为 `dot` 将显示圆点 +badgePositon |String |right | 角标位置 +link |String |navigateTo | 是否展示右侧箭头并开启点击反馈,可选值见下表 +clickable |Boolean |false | 是否开启点击反馈 +to |String |- | 跳转页面地址,如填写此属性,click 会返回页面是否跳转成功 +time |String |- | 右侧时间显示 +avatarCircle |Boolean |false | 是否显示圆形头像 +avatar |String |- | 头像地址,avatarCircle 不填时生效 +avatarList |Array |- | 头像组,格式为 [{url:''}] + +#### Link Options + +属性名 | 说明 +:-: | :-: +navigateTo | 同 uni.navigateTo() +redirectTo | 同 uni.reLaunch() +reLaunch | 同 uni.reLaunch() +switchTab | 同 uni.switchTab() + +### ListItemChat Slots + +名称 | 说明 +:- | :- +default | 自定义列表右侧内容(包括时间和角标显示) + +### ListItemChat Events +事件称名 | 说明 | 返回参数 +:-: | :-: | :-: +@click | 点击 uniListChat 触发事件 | {data:{}} ,如有 to 属性,会返回页面跳转信息 + + + + + + +## 基于uni-list扩展的页面模板 + +通过扩展插槽,可实现多种常见样式的列表 + +**新闻列表类** + +1. 云端一体混合布局:[https://ext.dcloud.net.cn/plugin?id=2546](https://ext.dcloud.net.cn/plugin?id=2546) +2. 云端一体垂直布局,大图模式:[https://ext.dcloud.net.cn/plugin?id=2583](https://ext.dcloud.net.cn/plugin?id=2583) +3. 云端一体垂直布局,多行图文混排:[https://ext.dcloud.net.cn/plugin?id=2584](https://ext.dcloud.net.cn/plugin?id=2584) +4. 云端一体垂直布局,多图模式:[https://ext.dcloud.net.cn/plugin?id=2585](https://ext.dcloud.net.cn/plugin?id=2585) +5. 云端一体水平布局,左图右文:[https://ext.dcloud.net.cn/plugin?id=2586](https://ext.dcloud.net.cn/plugin?id=2586) +6. 云端一体水平布局,左文右图:[https://ext.dcloud.net.cn/plugin?id=2587](https://ext.dcloud.net.cn/plugin?id=2587) +7. 云端一体垂直布局,无图模式,主标题+副标题:[https://ext.dcloud.net.cn/plugin?id=2588](https://ext.dcloud.net.cn/plugin?id=2588) + +**商品列表类** + +1. 云端一体列表/宫格视图互切:[https://ext.dcloud.net.cn/plugin?id=2651](https://ext.dcloud.net.cn/plugin?id=2651) +2. 云端一体列表(宫格模式):[https://ext.dcloud.net.cn/plugin?id=2671](https://ext.dcloud.net.cn/plugin?id=2671) +3. 云端一体列表(列表模式):[https://ext.dcloud.net.cn/plugin?id=2672](https://ext.dcloud.net.cn/plugin?id=2672) + +## 组件示例 + +点击查看:[https://hellouniapp.dcloud.net.cn/pages/extUI/list/list](https://hellouniapp.dcloud.net.cn/pages/extUI/list/list) \ No newline at end of file diff --git a/uni_modules/uni-load-more/changelog.md b/uni_modules/uni-load-more/changelog.md new file mode 100644 index 0000000..8f03f1d --- /dev/null +++ b/uni_modules/uni-load-more/changelog.md @@ -0,0 +1,19 @@ +## 1.3.3(2022-01-20) +- 新增 showText属性 ,是否显示文本 +## 1.3.2(2022-01-19) +- 修复 nvue 平台下不显示文本的bug +## 1.3.1(2022-01-19) +- 修复 微信小程序平台样式选择器报警告的问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-load-more](https://uniapp.dcloud.io/component/uniui/uni-load-more) +## 1.2.1(2021-08-24) +- 新增 支持国际化 +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.8(2021-05-12) +- 新增 组件示例地址 +## 1.1.7(2021-03-30) +- 修复 uni-load-more 在首页使用时,h5 平台报 'uni is not defined' 的 bug +## 1.1.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json new file mode 100644 index 0000000..a4f14a5 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "Pull up to show more", + "uni-load-more.contentrefresh": "loading...", + "uni-load-more.contentnomore": "No more data" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json new file mode 100644 index 0000000..f15d510 --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉显示更多", + "uni-load-more.contentrefresh": "正在加载...", + "uni-load-more.contentnomore": "没有更多数据了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json new file mode 100644 index 0000000..a255c6d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-load-more.contentdown": "上拉顯示更多", + "uni-load-more.contentrefresh": "正在加載...", + "uni-load-more.contentnomore": "沒有更多數據了" +} diff --git a/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue new file mode 100644 index 0000000..e5eff4d --- /dev/null +++ b/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/uni_modules/uni-load-more/package.json b/uni_modules/uni-load-more/package.json new file mode 100644 index 0000000..2fa6f04 --- /dev/null +++ b/uni_modules/uni-load-more/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-load-more", + "displayName": "uni-load-more 加载更多", + "version": "1.3.3", + "description": "LoadMore 组件,常用在列表里面,做滚动加载使用。", + "keywords": [ + "uni-ui", + "uniui", + "加载更多", + "load-more" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-load-more/readme.md b/uni_modules/uni-load-more/readme.md new file mode 100644 index 0000000..54dc1fa --- /dev/null +++ b/uni_modules/uni-load-more/readme.md @@ -0,0 +1,14 @@ + + +### LoadMore 加载更多 +> **组件名:uni-load-more** +> 代码块: `uLoadMore` + + +用于列表中,做滚动加载使用,展示 loading 的各种状态。 + + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-load-more) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-nav-bar/changelog.md b/uni_modules/uni-nav-bar/changelog.md new file mode 100644 index 0000000..f0f6b56 --- /dev/null +++ b/uni_modules/uni-nav-bar/changelog.md @@ -0,0 +1,41 @@ +## 1.3.6(2022-06-30) +- 修复 组件示例中插槽用法无法显示内容的bug +## 1.3.5(2022-05-24) +- 新增 stat 属性 ,可开启统计title 上报 ,仅使用了title 属性且项目开启了uni统计生效 +## 1.3.4(2022-01-24) +- 更新 组件示例 +## 1.3.3(2022-01-24) +- 新增 left-width/right-width属性 ,可修改左右两侧的宽度 +## 1.3.2(2022-01-18) +- 修复 在vue下,标题不垂直居中的bug +## 1.3.1(2022-01-18) +- 修复 height 属性类型错误 +## 1.3.0(2022-01-18) +- 新增 height 属性,可修改组件高度 +- 新增 dark 属性可可开启暗黑模式 +- 优化 标题字数过多显示省略号 +- 优化 插槽,插入内容可完全覆盖 +## 1.2.1(2022-01-10) +- 修复 color 属性不生效的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-nav-bar](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.11(2021-05-12) +- 新增 组件示例地址 +## 1.0.10(2021-04-30) +- 修复 在nvue下fixed为true,宽度不能撑满的Bug +## 1.0.9(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.8(2021-04-14) +- uni-ui 修复 uni-nav-bar 当 fixed 属性为 true 时铺不满屏幕的 bug + +## 1.0.7(2021-02-25) +- 修复 easycom 下,找不到 uni-status-bar 的bug + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue new file mode 100644 index 0000000..cbfc168 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue @@ -0,0 +1,348 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue new file mode 100644 index 0000000..6a68874 --- /dev/null +++ b/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/uni_modules/uni-nav-bar/package.json b/uni_modules/uni-nav-bar/package.json new file mode 100644 index 0000000..e3fe073 --- /dev/null +++ b/uni_modules/uni-nav-bar/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-nav-bar", + "displayName": "uni-nav-bar 自定义导航栏", + "version": "1.3.6", + "description": "自定义导航栏组件,主要用于头部导航。", + "keywords": [ + "uni-ui", + "导航", + "导航栏", + "自定义导航栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-nav-bar/readme.md b/uni_modules/uni-nav-bar/readme.md new file mode 100644 index 0000000..3934b32 --- /dev/null +++ b/uni_modules/uni-nav-bar/readme.md @@ -0,0 +1,15 @@ + + +## NavBar 导航栏 +> **组件名:uni-nav-bar** +> 代码块: `uNavBar` + +导航栏组件,主要用于头部导航。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-nav-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-notice-bar/changelog.md b/uni_modules/uni-notice-bar/changelog.md new file mode 100644 index 0000000..9ee75a0 --- /dev/null +++ b/uni_modules/uni-notice-bar/changelog.md @@ -0,0 +1,16 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-notice-bar](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +## 1.1.1(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 组件示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.6(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue new file mode 100644 index 0000000..424430d --- /dev/null +++ b/uni_modules/uni-notice-bar/components/uni-notice-bar/uni-notice-bar.vue @@ -0,0 +1,395 @@ + + + + + diff --git a/uni_modules/uni-notice-bar/package.json b/uni_modules/uni-notice-bar/package.json new file mode 100644 index 0000000..97719a0 --- /dev/null +++ b/uni_modules/uni-notice-bar/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-notice-bar", + "displayName": "uni-notice-bar 通告栏", + "version": "1.2.0", + "description": "NoticeBar 通告栏组件,常用于展示公告信息,可设为滚动公告", + "keywords": [ + "uni-ui", + "uniui", + "通告栏", + "公告", + "跑马灯" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-notice-bar/readme.md b/uni_modules/uni-notice-bar/readme.md new file mode 100644 index 0000000..fb2ede2 --- /dev/null +++ b/uni_modules/uni-notice-bar/readme.md @@ -0,0 +1,13 @@ + + +## NoticeBar 通告栏 +> **组件名:uni-notice-bar** +> 代码块: `uNoticeBar` + + +通告栏组件 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-notice-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-number-box/changelog.md b/uni_modules/uni-number-box/changelog.md new file mode 100644 index 0000000..5925c32 --- /dev/null +++ b/uni_modules/uni-number-box/changelog.md @@ -0,0 +1,25 @@ +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-number-box](https://uniapp.dcloud.io/component/uniui/uni-number-box) +## 1.1.2(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +## 1.1.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-20) +- 修复 uni-number-box 浮点数运算不精确的 bug +- 修复 uni-number-box change 事件触发不正确的 bug +- 新增 uni-number-box v-model 双向绑定 +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 + +## 1.0.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 v-model +- 新增 支持 focus、blur 事件 +- 新增 支持 PC 端 diff --git a/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue new file mode 100644 index 0000000..6f8393a --- /dev/null +++ b/uni_modules/uni-number-box/components/uni-number-box/uni-number-box.vue @@ -0,0 +1,258 @@ + + + diff --git a/uni_modules/uni-number-box/package.json b/uni_modules/uni-number-box/package.json new file mode 100644 index 0000000..ad82336 --- /dev/null +++ b/uni_modules/uni-number-box/package.json @@ -0,0 +1,85 @@ +{ + "id": "uni-number-box", + "displayName": "uni-number-box 数字输入框", + "version": "1.2.1", + "description": "NumberBox 带加减按钮的数字输入框组件,用户可以控制每次点击增加的数值,支持小数。", + "keywords": [ + "uni-ui", + "uniui", + "数字输入框" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-number-box/readme.md b/uni_modules/uni-number-box/readme.md new file mode 100644 index 0000000..affc56f --- /dev/null +++ b/uni_modules/uni-number-box/readme.md @@ -0,0 +1,13 @@ + + +## NumberBox 数字输入框 +> **组件名:uni-number-box** +> 代码块: `uNumberBox` + + +带加减按钮的数字输入框。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-number-box) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-pagination/changelog.md b/uni_modules/uni-pagination/changelog.md new file mode 100644 index 0000000..4934027 --- /dev/null +++ b/uni_modules/uni-pagination/changelog.md @@ -0,0 +1,22 @@ +## 1.2.2(2022-07-06) +- 修复 es 语言 i18n 错误 +## 1.2.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination) +## 1.1.2(2021-10-08) +- 修复 current 、value 属性未监听,导致高亮样式失效的 bug +## 1.1.1(2021-08-20) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-05-12) +- 新增 组件示例地址 +## 1.0.6(2021-04-12) +- 新增 PC 和 移动端适配不同的 ui +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json new file mode 100644 index 0000000..d6e2897 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/en.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "prev", + "uni-pagination.nextText": "next", + "uni-pagination.piecePerPage": "piece/page" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json new file mode 100644 index 0000000..604a113 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/es.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "anterior", + "uni-pagination.nextText": "prxima", + "uni-pagination.piecePerPage": "Artculo/Pgina" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json new file mode 100644 index 0000000..a7a0c77 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "précédente", + "uni-pagination.nextText": "suivante", + "uni-pagination.piecePerPage": "Articles/Pages" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json new file mode 100644 index 0000000..782bbe4 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一页", + "uni-pagination.nextText": "下一页", + "uni-pagination.piecePerPage": "条/页" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json new file mode 100644 index 0000000..180fddb --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json @@ -0,0 +1,5 @@ +{ + "uni-pagination.prevText": "上一頁", + "uni-pagination.nextText": "下一頁", + "uni-pagination.piecePerPage": "條/頁" +} diff --git a/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue new file mode 100644 index 0000000..7135034 --- /dev/null +++ b/uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue @@ -0,0 +1,463 @@ + + + + + diff --git a/uni_modules/uni-pagination/package.json b/uni_modules/uni-pagination/package.json new file mode 100644 index 0000000..644859b --- /dev/null +++ b/uni_modules/uni-pagination/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-pagination", + "displayName": "uni-pagination 分页器", + "version": "1.2.2", + "description": "Pagination 分页器组件,用于展示页码、请求数据等。", + "keywords": [ + "uni-ui", + "uniui", + "分页器", + "页码" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-icons"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-pagination/readme.md b/uni_modules/uni-pagination/readme.md new file mode 100644 index 0000000..97ea1d6 --- /dev/null +++ b/uni_modules/uni-pagination/readme.md @@ -0,0 +1,11 @@ + + +## Pagination 分页器 +> **组件名:uni-pagination** +> 代码块: `uPagination` + + +分页器组件,用于展示页码、请求数据等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-popup/changelog.md b/uni_modules/uni-popup/changelog.md new file mode 100644 index 0000000..a9e2d66 --- /dev/null +++ b/uni_modules/uni-popup/changelog.md @@ -0,0 +1,60 @@ +## 1.7.9(2022-04-02) +- 修复 弹出层内部无法滚动的bug +## 1.7.8(2022-03-28) +- 修复 小程序中高度错误的bug +## 1.7.7(2022-03-17) +- 修复 快速调用open出现问题的Bug +## 1.7.6(2022-02-14) +- 修复 safeArea 属性不能设置为false的bug +## 1.7.5(2022-01-19) +- 修复 isMaskClick 失效的bug +## 1.7.4(2022-01-19) +- 新增 cancelText \ confirmText 属性 ,可自定义文本 +- 新增 maskBackgroundColor 属性 ,可以修改蒙版颜色 +- 优化 maskClick属性 更新为 isMaskClick ,解决微信小程序警告的问题 +## 1.7.3(2022-01-13) +- 修复 设置 safeArea 属性不生效的bug +## 1.7.2(2021-11-26) +- 优化 组件示例 +## 1.7.1(2021-11-26) +- 修复 vuedoc 文字错误 +## 1.7.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-popup](https://uniapp.dcloud.io/component/uniui/uni-popup) +## 1.6.2(2021-08-24) +- 新增 支持国际化 +## 1.6.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.6.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.5.0(2021-06-23) +- 新增 mask-click 遮罩层点击事件 +## 1.4.5(2021-06-22) +- 修复 nvue 平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.4(2021-06-18) +- 修复 H5平台中间弹出后,点击内容,再点击遮罩无法关闭的Bug +## 1.4.3(2021-06-08) +- 修复 错误的 watch 字段 +- 修复 safeArea 属性不生效的问题 +- 修复 点击内容,再点击遮罩无法关闭的Bug +## 1.4.2(2021-05-12) +- 新增 组件示例地址 +## 1.4.1(2021-04-29) +- 修复 组件内放置 input 、textarea 组件,无法聚焦的问题 +## 1.4.0 (2021-04-29) +- 新增 type 属性的 left\right 值,支持左右弹出 +- 新增 open(String:type) 方法参数 ,可以省略 type 属性 ,直接传入类型打开指定弹窗 +- 新增 backgroundColor 属性,可定义主窗口背景色,默认不显示背景色 +- 新增 safeArea 属性,是否适配底部安全区 +- 修复 App\h5\微信小程序底部安全区占位不对的Bug +- 修复 App 端弹出等待的Bug +- 优化 提升低配设备性能,优化动画卡顿问题 +- 优化 更简单的组件自定义方式 +## 1.2.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 +## 1.2.8(2021-02-05) +- 调整为uni_modules目录规范 +## 1.2.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持 PC 端 +- 新增 uni-popup-message 、uni-popup-dialog扩展组件支持 PC 端 diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js new file mode 100644 index 0000000..6ef26a2 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + this.$once('hook:beforeDestroy', () => { + document.removeEventListener('keyup', listener) + }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue new file mode 100644 index 0000000..a5d0f2a --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue new file mode 100644 index 0000000..91370a8 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue @@ -0,0 +1,143 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue new file mode 100644 index 0000000..5be7624 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue @@ -0,0 +1,187 @@ + + + + diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/uni_modules/uni-popup/components/uni-popup/i18n/en.json new file mode 100644 index 0000000..7f1bd06 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/en.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "cancel", + "uni-popup.ok": "ok", + "uni-popup.placeholder": "pleace enter", + "uni-popup.title": "Hint", + "uni-popup.shareTitle": "Share to" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/uni_modules/uni-popup/components/uni-popup/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json new file mode 100644 index 0000000..5e3003c --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "确定", + "uni-popup.placeholder": "请输入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json new file mode 100644 index 0000000..13e39eb --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json @@ -0,0 +1,7 @@ +{ + "uni-popup.cancel": "取消", + "uni-popup.ok": "確定", + "uni-popup.placeholder": "請輸入", + "uni-popup.title": "提示", + "uni-popup.shareTitle": "分享到" +} diff --git a/uni_modules/uni-popup/components/uni-popup/keypress.js b/uni_modules/uni-popup/components/uni-popup/keypress.js new file mode 100644 index 0000000..62dda46 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/keypress.js @@ -0,0 +1,45 @@ +// #ifdef H5 +export default { + name: 'Keypress', + props: { + disable: { + type: Boolean, + default: false + } + }, + mounted () { + const keyNames = { + esc: ['Esc', 'Escape'], + tab: 'Tab', + enter: 'Enter', + space: [' ', 'Spacebar'], + up: ['Up', 'ArrowUp'], + left: ['Left', 'ArrowLeft'], + right: ['Right', 'ArrowRight'], + down: ['Down', 'ArrowDown'], + delete: ['Backspace', 'Delete', 'Del'] + } + const listener = ($event) => { + if (this.disable) { + return + } + const keyName = Object.keys(keyNames).find(key => { + const keyName = $event.key + const value = keyNames[key] + return value === keyName || (Array.isArray(value) && value.includes(keyName)) + }) + if (keyName) { + // 避免和其他按键事件冲突 + setTimeout(() => { + this.$emit(keyName, {}) + }, 0) + } + } + document.addEventListener('keyup', listener) + // this.$once('hook:beforeDestroy', () => { + // document.removeEventListener('keyup', listener) + // }) + }, + render: () => {} +} +// #endif diff --git a/uni_modules/uni-popup/components/uni-popup/popup.js b/uni_modules/uni-popup/components/uni-popup/popup.js new file mode 100644 index 0000000..c4e5781 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/popup.js @@ -0,0 +1,26 @@ + +export default { + data() { + return { + + } + }, + created(){ + this.popup = this.getParent() + }, + methods:{ + /** + * 获取父元素实例 + */ + getParent(name = 'uniPopup') { + let parent = this.$parent; + let parentName = parent.$options.name; + while (parentName !== name) { + parent = parent.$parent; + if (!parent) return false + parentName = parent.$options.name; + } + return parent; + }, + } +} diff --git a/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue new file mode 100644 index 0000000..db90c59 --- /dev/null +++ b/uni_modules/uni-popup/components/uni-popup/uni-popup.vue @@ -0,0 +1,474 @@ + + + + diff --git a/uni_modules/uni-popup/package.json b/uni_modules/uni-popup/package.json new file mode 100644 index 0000000..069e9ce --- /dev/null +++ b/uni_modules/uni-popup/package.json @@ -0,0 +1,90 @@ +{ + "id": "uni-popup", + "displayName": "uni-popup 弹出层", + "version": "1.7.9", + "description": " Popup 组件,提供常用的弹层", + "keywords": [ + "uni-ui", + "弹出层", + "弹窗", + "popup", + "弹框" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-transition" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-popup/readme.md b/uni_modules/uni-popup/readme.md new file mode 100644 index 0000000..fdad4b3 --- /dev/null +++ b/uni_modules/uni-popup/readme.md @@ -0,0 +1,17 @@ + + +## Popup 弹出层 +> **组件名:uni-popup** +> 代码块: `uPopup` +> 关联组件:`uni-transition` + + +弹出层组件,在应用中弹出一个消息提示窗口、提示框等 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-popup) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + + diff --git a/uni_modules/uni-rate/changelog.md b/uni_modules/uni-rate/changelog.md new file mode 100644 index 0000000..8a98a61 --- /dev/null +++ b/uni_modules/uni-rate/changelog.md @@ -0,0 +1,25 @@ +## 1.3.1(2022-02-25) +- 修复 条件判断 `NaN` 错误的 bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-rate](https://uniapp.dcloud.io/component/uniui/uni-rate) +## 1.2.2(2021-09-10) +- 优化 默认值修改为 0 颗星 +## 1.2.1(2021-07-30) +- 优化 vue3下事件警告的问题 +## 1.2.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.2(2021-05-12) +- 新增 组件示例地址 +## 1.1.1(2021-04-21) +- 修复 布局变化后 uni-rate 星星计算不准确的 bug +- 优化 添加依赖 uni-icons, 导入 uni-rate 自动下载依赖 +## 1.1.0(2021-04-16) +- 修复 uni-rate 属性 margin 值为 string 组件失效的 bug + +## 1.0.9(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.8(2021-02-05) +- 调整为uni_modules目录规范 +- 支持 pc 端 diff --git a/uni_modules/uni-rate/components/uni-rate/uni-rate.vue b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue new file mode 100644 index 0000000..857f5f9 --- /dev/null +++ b/uni_modules/uni-rate/components/uni-rate/uni-rate.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/uni_modules/uni-rate/package.json b/uni_modules/uni-rate/package.json new file mode 100644 index 0000000..64e8e33 --- /dev/null +++ b/uni_modules/uni-rate/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-rate", + "displayName": "uni-rate 评分", + "version": "1.3.1", + "description": "Rate 评分组件,可自定义评分星星图标的大小、间隔、评分数。", + "keywords": [ + "uni-ui", + "uniui", + "评分" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-rate/readme.md b/uni_modules/uni-rate/readme.md new file mode 100644 index 0000000..eae7b5c --- /dev/null +++ b/uni_modules/uni-rate/readme.md @@ -0,0 +1,12 @@ + + +## Rate 评分 +> **组件名:uni-rate** +> 代码块: `uRate` +> 关联组件:`uni-icons` + + +评分组件,多用于购买商品后,对商品进行评价等场景 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-rate) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-row/changelog.md b/uni_modules/uni-row/changelog.md new file mode 100644 index 0000000..5b465bc --- /dev/null +++ b/uni_modules/uni-row/changelog.md @@ -0,0 +1,10 @@ +## 1.0.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-row](https://uniapp.dcloud.io/component/uniui/uni-row) +## 0.1.0(2021-07-13) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 0.0.4(2021-05-12) +- 新增 组件示例地址 +## 0.0.3(2021-02-05) +- 调整为uni_modules目录规范 +- 新增uni-row组件 diff --git a/uni_modules/uni-row/components/uni-col/uni-col.vue b/uni_modules/uni-row/components/uni-col/uni-col.vue new file mode 100644 index 0000000..84e2deb --- /dev/null +++ b/uni_modules/uni-row/components/uni-col/uni-col.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/uni-row/components/uni-row/uni-row.vue b/uni_modules/uni-row/components/uni-row/uni-row.vue new file mode 100644 index 0000000..f8e8542 --- /dev/null +++ b/uni_modules/uni-row/components/uni-row/uni-row.vue @@ -0,0 +1,190 @@ + + + + + diff --git a/uni_modules/uni-row/package.json b/uni_modules/uni-row/package.json new file mode 100644 index 0000000..3f52fa6 --- /dev/null +++ b/uni_modules/uni-row/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-row", + "displayName": "uni-row 布局-行", + "version": "1.0.0", + "description": "流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。", + "keywords": [ + "uni-ui", + "uniui", + "栅格", + "布局", + "layout" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-row/readme.md b/uni_modules/uni-row/readme.md new file mode 100644 index 0000000..3c9c8b9 --- /dev/null +++ b/uni_modules/uni-row/readme.md @@ -0,0 +1,10 @@ +## Layout 布局 + +> **组件名 uni-row、uni-col** +> 代码块: `uRow`、`uCol` + + +流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-row) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/changelog.md b/uni_modules/uni-scss/changelog.md new file mode 100644 index 0000000..b863bb0 --- /dev/null +++ b/uni_modules/uni-scss/changelog.md @@ -0,0 +1,8 @@ +## 1.0.3(2022-01-21) +- 优化 组件示例 +## 1.0.2(2021-11-22) +- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题 +## 1.0.1(2021-11-22) +- 修复 vue3中scss语法兼容问题 +## 1.0.0(2021-11-18) +- init diff --git a/uni_modules/uni-scss/index.scss b/uni_modules/uni-scss/index.scss new file mode 100644 index 0000000..1744a5f --- /dev/null +++ b/uni_modules/uni-scss/index.scss @@ -0,0 +1 @@ +@import './styles/index.scss'; diff --git a/uni_modules/uni-scss/package.json b/uni_modules/uni-scss/package.json new file mode 100644 index 0000000..7cc0ccb --- /dev/null +++ b/uni_modules/uni-scss/package.json @@ -0,0 +1,82 @@ +{ + "id": "uni-scss", + "displayName": "uni-scss 辅助样式", + "version": "1.0.3", + "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。", + "keywords": [ + "uni-scss", + "uni-ui", + "辅助样式" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "category": [ + "JS SDK", + "通用 SDK" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-scss/readme.md b/uni_modules/uni-scss/readme.md new file mode 100644 index 0000000..b7d1c25 --- /dev/null +++ b/uni_modules/uni-scss/readme.md @@ -0,0 +1,4 @@ +`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/index.scss b/uni_modules/uni-scss/styles/index.scss new file mode 100644 index 0000000..ffac4fe --- /dev/null +++ b/uni_modules/uni-scss/styles/index.scss @@ -0,0 +1,7 @@ +@import './setting/_variables.scss'; +@import './setting/_border.scss'; +@import './setting/_color.scss'; +@import './setting/_space.scss'; +@import './setting/_radius.scss'; +@import './setting/_text.scss'; +@import './setting/_styles.scss'; diff --git a/uni_modules/uni-scss/styles/setting/_border.scss b/uni_modules/uni-scss/styles/setting/_border.scss new file mode 100644 index 0000000..12a11c3 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_border.scss @@ -0,0 +1,3 @@ +.uni-border { + border: 1px $uni-border-1 solid; +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_color.scss b/uni_modules/uni-scss/styles/setting/_color.scss new file mode 100644 index 0000000..1ededd9 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_color.scss @@ -0,0 +1,66 @@ + +// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐 +// @mixin get-styles($k,$c) { +// @if $k == size or $k == weight{ +// font-#{$k}:#{$c} +// }@else{ +// #{$k}:#{$c} +// } +// } +$uni-ui-color:( + // 主色 + primary: $uni-primary, + primary-disable: $uni-primary-disable, + primary-light: $uni-primary-light, + // 辅助色 + success: $uni-success, + success-disable: $uni-success-disable, + success-light: $uni-success-light, + warning: $uni-warning, + warning-disable: $uni-warning-disable, + warning-light: $uni-warning-light, + error: $uni-error, + error-disable: $uni-error-disable, + error-light: $uni-error-light, + info: $uni-info, + info-disable: $uni-info-disable, + info-light: $uni-info-light, + // 中性色 + main-color: $uni-main-color, + base-color: $uni-base-color, + secondary-color: $uni-secondary-color, + extra-color: $uni-extra-color, + // 背景色 + bg-color: $uni-bg-color, + // 边框颜色 + border-1: $uni-border-1, + border-2: $uni-border-2, + border-3: $uni-border-3, + border-4: $uni-border-4, + // 黑色 + black:$uni-black, + // 白色 + white:$uni-white, + // 透明 + transparent:$uni-transparent +) !default; +@each $key, $child in $uni-ui-color { + .uni-#{"" + $key} { + color: $child; + } + .uni-#{"" + $key}-bg { + background-color: $child; + } +} +.uni-shadow-sm { + box-shadow: $uni-shadow-sm; +} +.uni-shadow-base { + box-shadow: $uni-shadow-base; +} +.uni-shadow-lg { + box-shadow: $uni-shadow-lg; +} +.uni-mask { + background-color:$uni-mask; +} diff --git a/uni_modules/uni-scss/styles/setting/_radius.scss b/uni_modules/uni-scss/styles/setting/_radius.scss new file mode 100644 index 0000000..9a0428b --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_radius.scss @@ -0,0 +1,55 @@ +@mixin radius($r,$d:null ,$important: false){ + $radius-value:map-get($uni-radius, $r) if($important, !important, null); + // Key exists within the $uni-radius variable + @if (map-has-key($uni-radius, $r) and $d){ + @if $d == t { + border-top-left-radius:$radius-value; + border-top-right-radius:$radius-value; + }@else if $d == r { + border-top-right-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == b { + border-bottom-left-radius:$radius-value; + border-bottom-right-radius:$radius-value; + }@else if $d == l { + border-top-left-radius:$radius-value; + border-bottom-left-radius:$radius-value; + }@else if $d == tl { + border-top-left-radius:$radius-value; + }@else if $d == tr { + border-top-right-radius:$radius-value; + }@else if $d == br { + border-bottom-right-radius:$radius-value; + }@else if $d == bl { + border-bottom-left-radius:$radius-value; + } + }@else{ + border-radius:$radius-value; + } +} + +@each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $key} { + @include radius($key) + } + }@else{ + .uni-radius { + @include radius($key) + } + } +} + +@each $direction in t, r, b, l,tl, tr, br, bl { + @each $key, $child in $uni-radius { + @if($key){ + .uni-radius-#{"" + $direction}-#{"" + $key} { + @include radius($key,$direction,false) + } + }@else{ + .uni-radius-#{$direction} { + @include radius($key,$direction,false) + } + } + } +} diff --git a/uni_modules/uni-scss/styles/setting/_space.scss b/uni_modules/uni-scss/styles/setting/_space.scss new file mode 100644 index 0000000..3c89528 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_space.scss @@ -0,0 +1,56 @@ + +@mixin fn($space,$direction,$size,$n) { + @if $n { + #{$space}-#{$direction}: #{$size*$uni-space-root}px + } @else { + #{$space}-#{$direction}: #{-$size*$uni-space-root}px + } +} +@mixin get-styles($direction,$i,$space,$n){ + @if $direction == t { + @include fn($space, top,$i,$n); + } + @if $direction == r { + @include fn($space, right,$i,$n); + } + @if $direction == b { + @include fn($space, bottom,$i,$n); + } + @if $direction == l { + @include fn($space, left,$i,$n); + } + @if $direction == x { + @include fn($space, left,$i,$n); + @include fn($space, right,$i,$n); + } + @if $direction == y { + @include fn($space, top,$i,$n); + @include fn($space, bottom,$i,$n); + } + @if $direction == a { + @if $n { + #{$space}:#{$i*$uni-space-root}px; + } @else { + #{$space}:#{-$i*$uni-space-root}px; + } + } +} + +@each $orientation in m,p { + $space: margin; + @if $orientation == m { + $space: margin; + } @else { + $space: padding; + } + @for $i from 0 through 16 { + @each $direction in t, r, b, l, x, y, a { + .uni-#{$orientation}#{$direction}-#{$i} { + @include get-styles($direction,$i,$space,true); + } + .uni-#{$orientation}#{$direction}-n#{$i} { + @include get-styles($direction,$i,$space,false); + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-scss/styles/setting/_styles.scss b/uni_modules/uni-scss/styles/setting/_styles.scss new file mode 100644 index 0000000..689afec --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_styles.scss @@ -0,0 +1,167 @@ +/* #ifndef APP-NVUE */ + +$-color-white:#fff; +$-color-black:#000; +@mixin base-style($color) { + color: #fff; + background-color: $color; + border-color: mix($-color-black, $color, 8%); + &:not([hover-class]):active { + background: mix($-color-black, $color, 10%); + border-color: mix($-color-black, $color, 20%); + color: $-color-white; + outline: none; + } +} +@mixin is-color($color) { + @include base-style($color); + &[loading] { + @include base-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &[loading], + &:not([hover-class]):active { + color: $-color-white; + border-color: mix(darken($color,10%), $-color-white); + background-color: mix($color, $-color-white); + } + } + +} +@mixin base-plain-style($color) { + color:$color; + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 70%); + &:not([hover-class]):active { + background: mix($-color-white, $color, 80%); + color: $color; + outline: none; + border-color: mix($-color-white, $color, 50%); + } +} +@mixin is-plain($color){ + &[plain] { + @include base-plain-style($color); + &[loading] { + @include base-plain-style($color); + &::before { + margin-right:5px; + } + } + &[disabled] { + &, + &:active { + color: mix($-color-white, $color, 40%); + background-color: mix($-color-white, $color, 90%); + border-color: mix($-color-white, $color, 80%); + } + } + } +} + + +.uni-btn { + margin: 5px; + color: #393939; + border:1px solid #ccc; + font-size: 16px; + font-weight: 200; + background-color: #F9F9F9; + // TODO 暂时处理边框隐藏一边的问题 + overflow: visible; + &::after{ + border: none; + } + + &:not([type]),&[type=default] { + color: #999; + &[loading] { + background: none; + &::before { + margin-right:5px; + } + } + + + + &[disabled]{ + color: mix($-color-white, #999, 60%); + &, + &[loading], + &:active { + color: mix($-color-white, #999, 60%); + background-color: mix($-color-white,$-color-black , 98%); + border-color: mix($-color-white, #999, 85%); + } + } + + &[plain] { + color: #999; + background: none; + border-color: $uni-border-1; + &:not([hover-class]):active { + background: none; + color: mix($-color-white, $-color-black, 80%); + border-color: mix($-color-white, $-color-black, 90%); + outline: none; + } + &[disabled]{ + &, + &[loading], + &:active { + background: none; + color: mix($-color-white, #999, 60%); + border-color: mix($-color-white, #999, 85%); + } + } + } + } + + &:not([hover-class]):active { + color: mix($-color-white, $-color-black, 50%); + } + + &[size=mini] { + font-size: 16px; + font-weight: 200; + border-radius: 8px; + } + + + + &.uni-btn-small { + font-size: 14px; + } + &.uni-btn-mini { + font-size: 12px; + } + + &.uni-btn-radius { + border-radius: 999px; + } + &[type=primary] { + @include is-color($uni-primary); + @include is-plain($uni-primary) + } + &[type=success] { + @include is-color($uni-success); + @include is-plain($uni-success) + } + &[type=error] { + @include is-color($uni-error); + @include is-plain($uni-error) + } + &[type=warning] { + @include is-color($uni-warning); + @include is-plain($uni-warning) + } + &[type=info] { + @include is-color($uni-info); + @include is-plain($uni-info) + } +} +/* #endif */ diff --git a/uni_modules/uni-scss/styles/setting/_text.scss b/uni_modules/uni-scss/styles/setting/_text.scss new file mode 100644 index 0000000..a34d08f --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_text.scss @@ -0,0 +1,24 @@ +@mixin get-styles($k,$c) { + @if $k == size or $k == weight{ + font-#{$k}:#{$c} + }@else{ + #{$k}:#{$c} + } +} + +@each $key, $child in $uni-headings { + /* #ifndef APP-NVUE */ + .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ + /* #ifdef APP-NVUE */ + .container .uni-#{$key} { + @each $k, $c in $child { + @include get-styles($k,$c) + } + } + /* #endif */ +} diff --git a/uni_modules/uni-scss/styles/setting/_variables.scss b/uni_modules/uni-scss/styles/setting/_variables.scss new file mode 100644 index 0000000..557d3d7 --- /dev/null +++ b/uni_modules/uni-scss/styles/setting/_variables.scss @@ -0,0 +1,146 @@ +// @use "sass:math"; +@import '../tools/functions.scss'; +// 间距基础倍数 +$uni-space-root: 2 !default; +// 边框半径默认值 +$uni-radius-root:5px !default; +$uni-radius: () !default; +// 边框半径断点 +$uni-radius: map-deep-merge( + ( + 0: 0, + // TODO 当前版本暂时不支持 sm 属性 + // 'sm': math.div($uni-radius-root, 2), + null: $uni-radius-root, + 'lg': $uni-radius-root * 2, + 'xl': $uni-radius-root * 6, + 'pill': 9999px, + 'circle': 50% + ), + $uni-radius +); +// 字体家族 +$body-font-family: 'Roboto', sans-serif !default; +// 文本 +$heading-font-family: $body-font-family !default; +$uni-headings: () !default; +$letterSpacing: -0.01562em; +$uni-headings: map-deep-merge( + ( + 'h1': ( + size: 32px, + weight: 300, + line-height: 50px, + // letter-spacing:-0.01562em + ), + 'h2': ( + size: 28px, + weight: 300, + line-height: 40px, + // letter-spacing: -0.00833em + ), + 'h3': ( + size: 24px, + weight: 400, + line-height: 32px, + // letter-spacing: normal + ), + 'h4': ( + size: 20px, + weight: 400, + line-height: 30px, + // letter-spacing: 0.00735em + ), + 'h5': ( + size: 16px, + weight: 400, + line-height: 24px, + // letter-spacing: normal + ), + 'h6': ( + size: 14px, + weight: 500, + line-height: 18px, + // letter-spacing: 0.0125em + ), + 'subtitle': ( + size: 12px, + weight: 400, + line-height: 20px, + // letter-spacing: 0.00937em + ), + 'body': ( + font-size: 14px, + font-weight: 400, + line-height: 22px, + // letter-spacing: 0.03125em + ), + 'caption': ( + 'size': 12px, + 'weight': 400, + 'line-height': 20px, + // 'letter-spacing': 0.03333em, + // 'text-transform': false + ) + ), + $uni-headings +); + + + +// 主色 +$uni-primary: #2979ff !default; +$uni-primary-disable:lighten($uni-primary,20%) !default; +$uni-primary-light: lighten($uni-primary,25%) !default; + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37 !default; +$uni-success-disable:lighten($uni-success,20%) !default; +$uni-success-light: lighten($uni-success,25%) !default; + +$uni-warning: #f3a73f !default; +$uni-warning-disable:lighten($uni-warning,20%) !default; +$uni-warning-light: lighten($uni-warning,25%) !default; + +$uni-error: #e43d33 !default; +$uni-error-disable:lighten($uni-error,20%) !default; +$uni-error-light: lighten($uni-error,25%) !default; + +$uni-info: #8f939c !default; +$uni-info-disable:lighten($uni-info,20%) !default; +$uni-info-light: lighten($uni-info,25%) !default; + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a !default; // 主要文字 +$uni-base-color: #6a6a6a !default; // 常规文字 +$uni-secondary-color: #909399 !default; // 次要文字 +$uni-extra-color: #c7c7c7 !default; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0 !default; +$uni-border-2: #EDEDED !default; +$uni-border-3: #DCDCDC !default; +$uni-border-4: #B9B9B9 !default; + +// 常规色 +$uni-black: #000000 !default; +$uni-white: #ffffff !default; +$uni-transparent: rgba($color: #000000, $alpha: 0) !default; + +// 背景色 +$uni-bg-color: #f7f7f7 !default; + +/* 水平间距 */ +$uni-spacing-sm: 8px !default; +$uni-spacing-base: 15px !default; +$uni-spacing-lg: 30px !default; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default; +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default; +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default; + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4) !default; diff --git a/uni_modules/uni-scss/styles/tools/functions.scss b/uni_modules/uni-scss/styles/tools/functions.scss new file mode 100644 index 0000000..ac6f63e --- /dev/null +++ b/uni_modules/uni-scss/styles/tools/functions.scss @@ -0,0 +1,19 @@ +// 合并 map +@function map-deep-merge($parent-map, $child-map){ + $result: $parent-map; + @each $key, $child in $child-map { + $parent-has-key: map-has-key($result, $key); + $parent-value: map-get($result, $key); + $parent-type: type-of($parent-value); + $child-type: type-of($child); + $parent-is-map: $parent-type == map; + $child-is-map: $child-type == map; + + @if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){ + $result: map-merge($result, ( $key: $child )); + }@else { + $result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) )); + } + } + @return $result; +}; diff --git a/uni_modules/uni-scss/theme.scss b/uni_modules/uni-scss/theme.scss new file mode 100644 index 0000000..80ee62f --- /dev/null +++ b/uni_modules/uni-scss/theme.scss @@ -0,0 +1,31 @@ +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; +// 主色 +$uni-primary: #2979ff; +// 辅助色 +$uni-success: #4cd964; +// 警告色 +$uni-warning: #f0ad4e; +// 错误色 +$uni-error: #dd524d; +// 描述色 +$uni-info: #909399; +// 中性色 +$uni-main-color: #303133; +$uni-base-color: #606266; +$uni-secondary-color: #909399; +$uni-extra-color: #C0C4CC; +// 背景色 +$uni-bg-color: #f5f5f5; +// 边框颜色 +$uni-border-1: #DCDFE6; +$uni-border-2: #E4E7ED; +$uni-border-3: #EBEEF5; +$uni-border-4: #F2F6FC; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); diff --git a/uni_modules/uni-scss/variables.scss b/uni_modules/uni-scss/variables.scss new file mode 100644 index 0000000..1c062d4 --- /dev/null +++ b/uni_modules/uni-scss/variables.scss @@ -0,0 +1,62 @@ +@import './styles/setting/_variables.scss'; +// 间距基础倍数 +$uni-space-root: 2; +// 边框半径默认值 +$uni-radius-root:5px; + +// 主色 +$uni-primary: #2979ff; +$uni-primary-disable:mix(#fff,$uni-primary,50%); +$uni-primary-light: mix(#fff,$uni-primary,80%); + +// 辅助色 +// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。 +$uni-success: #18bc37; +$uni-success-disable:mix(#fff,$uni-success,50%); +$uni-success-light: mix(#fff,$uni-success,80%); + +$uni-warning: #f3a73f; +$uni-warning-disable:mix(#fff,$uni-warning,50%); +$uni-warning-light: mix(#fff,$uni-warning,80%); + +$uni-error: #e43d33; +$uni-error-disable:mix(#fff,$uni-error,50%); +$uni-error-light: mix(#fff,$uni-error,80%); + +$uni-info: #8f939c; +$uni-info-disable:mix(#fff,$uni-info,50%); +$uni-info-light: mix(#fff,$uni-info,80%); + +// 中性色 +// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。 +$uni-main-color: #3a3a3a; // 主要文字 +$uni-base-color: #6a6a6a; // 常规文字 +$uni-secondary-color: #909399; // 次要文字 +$uni-extra-color: #c7c7c7; // 辅助说明 + +// 边框颜色 +$uni-border-1: #F0F0F0; +$uni-border-2: #EDEDED; +$uni-border-3: #DCDCDC; +$uni-border-4: #B9B9B9; + +// 常规色 +$uni-black: #000000; +$uni-white: #ffffff; +$uni-transparent: rgba($color: #000000, $alpha: 0); + +// 背景色 +$uni-bg-color: #f7f7f7; + +/* 水平间距 */ +$uni-spacing-sm: 8px; +$uni-spacing-base: 15px; +$uni-spacing-lg: 30px; + +// 阴影 +$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5); +$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2); +$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5); + +// 蒙版 +$uni-mask: rgba($color: #000000, $alpha: 0.4); diff --git a/uni_modules/uni-search-bar/changelog.md b/uni_modules/uni-search-bar/changelog.md new file mode 100644 index 0000000..b41fdd3 --- /dev/null +++ b/uni_modules/uni-search-bar/changelog.md @@ -0,0 +1,33 @@ +## 1.2.3(2022-05-24) +- 新增 readonly 属性,组件只读 +## 1.2.2(2022-05-06) +- 修复 vue3 input 事件不生效的bug +## 1.2.1(2022-05-06) +- 修复 多余代码导致的bug +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-search-bar](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +## 1.1.2(2021-08-30) +- 修复 value 属性与 modelValue 属性不兼容的Bug +## 1.1.1(2021-08-24) +- 新增 支持国际化 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.9(2021-05-12) +- 新增 项目示例地址 +## 1.0.8(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.7(2021-04-15) +- uni-ui 新增 uni-search-bar 的 focus 事件 + +## 1.0.6(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 支持双向绑定 +- 更改 input 事件的返回值,e={value:Number} --> e=value +- 新增 支持图标插槽 +- 新增 支持 clear、blur 事件 +- 新增 支持 focus 属性 +- 去掉组件背景色 diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json new file mode 100644 index 0000000..dd083a5 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "Search enter content" +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js new file mode 100644 index 0000000..de7509c --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js @@ -0,0 +1,8 @@ +import en from './en.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json new file mode 100644 index 0000000..d4e5c12 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "请输入搜索内容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json new file mode 100644 index 0000000..318b6ef --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json @@ -0,0 +1,4 @@ +{ + "uni-search-bar.cancel": "cancel", + "uni-search-bar.placeholder": "請輸入搜索內容" +} diff --git a/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue new file mode 100644 index 0000000..5a518a8 --- /dev/null +++ b/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/uni_modules/uni-search-bar/package.json b/uni_modules/uni-search-bar/package.json new file mode 100644 index 0000000..9352c57 --- /dev/null +++ b/uni_modules/uni-search-bar/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-search-bar", + "displayName": "uni-search-bar 搜索栏", + "version": "1.2.3", + "description": "搜索栏组件,通常用于搜索商品、文章等", + "keywords": [ + "uni-ui", + "uniui", + "搜索框", + "搜索栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-search-bar/readme.md b/uni_modules/uni-search-bar/readme.md new file mode 100644 index 0000000..253092f --- /dev/null +++ b/uni_modules/uni-search-bar/readme.md @@ -0,0 +1,14 @@ + + +## SearchBar 搜索栏 + +> **组件名:uni-search-bar** +> 代码块: `uSearchBar` + + +搜索栏组件 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-search-bar) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-section/changelog.md b/uni_modules/uni-section/changelog.md new file mode 100644 index 0000000..738f2b3 --- /dev/null +++ b/uni_modules/uni-section/changelog.md @@ -0,0 +1,2 @@ +## 0.0.1(2022-07-22) +- 初始化 diff --git a/uni_modules/uni-section/components/uni-section/uni-section.vue b/uni_modules/uni-section/components/uni-section/uni-section.vue new file mode 100644 index 0000000..9a52e0b --- /dev/null +++ b/uni_modules/uni-section/components/uni-section/uni-section.vue @@ -0,0 +1,167 @@ + + + + diff --git a/uni_modules/uni-section/package.json b/uni_modules/uni-section/package.json new file mode 100644 index 0000000..0a31fb5 --- /dev/null +++ b/uni_modules/uni-section/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-section", + "displayName": "uni-section 标题栏", + "version": "0.0.1", + "description": "标题栏组件", + "keywords": [ + "uni-ui", + "uniui", + "标题栏" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-section/readme.md b/uni_modules/uni-section/readme.md new file mode 100644 index 0000000..d47faab --- /dev/null +++ b/uni_modules/uni-section/readme.md @@ -0,0 +1,8 @@ +## Section 标题栏 +> **组件名:uni-section** +> 代码块: `uSection` + +uni-section 组件主要用于文章、列表详情等标题展示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-segmented-control/changelog.md b/uni_modules/uni-segmented-control/changelog.md new file mode 100644 index 0000000..a44385d --- /dev/null +++ b/uni_modules/uni-segmented-control/changelog.md @@ -0,0 +1,9 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-segmented-control](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.5(2021-05-12) +- 新增 项目示例地址 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue new file mode 100644 index 0000000..044a495 --- /dev/null +++ b/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/uni_modules/uni-segmented-control/package.json b/uni_modules/uni-segmented-control/package.json new file mode 100644 index 0000000..6cae41d --- /dev/null +++ b/uni_modules/uni-segmented-control/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-segmented-control", + "displayName": "uni-segmented-control 分段器", + "version": "1.2.0", + "description": "分段器由至少 2 个分段控件组成,用作不同视图的显示", + "keywords": [ + "uni-ui", + "uniui", + "分段器", + "segement", + "顶部选择" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-segmented-control/readme.md b/uni_modules/uni-segmented-control/readme.md new file mode 100644 index 0000000..3527b03 --- /dev/null +++ b/uni_modules/uni-segmented-control/readme.md @@ -0,0 +1,13 @@ + + +## SegmentedControl 分段器 +> **组件名:uni-segmented-control** +> 代码块: `uSegmentedControl` + + +用作不同视图的显示 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-segmented-control) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-steps/changelog.md b/uni_modules/uni-steps/changelog.md new file mode 100644 index 0000000..cb9d367 --- /dev/null +++ b/uni_modules/uni-steps/changelog.md @@ -0,0 +1,16 @@ +## 1.1.1(2021-11-22) +- 修复 vue3中某些scss变量无法找到的问题 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-steps](https://uniapp.dcloud.io/component/uniui/uni-steps) +## 1.0.8(2021-05-12) +- 新增 项目示例地址 +## 1.0.7(2021-05-06) +- 修复 uni-steps 横向布局时,多行文字高度不合理的 bug +## 1.0.6(2021-04-21) +- 优化 添加依赖 uni-icons, 导入后自动下载依赖 +## 1.0.5(2021-02-05) +- 优化 组件引用关系,通过uni_modules引用组件 + +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-steps/components/uni-steps/uni-steps.vue b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue new file mode 100644 index 0000000..a6c8f28 --- /dev/null +++ b/uni_modules/uni-steps/components/uni-steps/uni-steps.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/uni_modules/uni-steps/package.json b/uni_modules/uni-steps/package.json new file mode 100644 index 0000000..c687b40 --- /dev/null +++ b/uni_modules/uni-steps/package.json @@ -0,0 +1,89 @@ +{ + "id": "uni-steps", + "displayName": "uni-steps 步骤条", + "version": "1.1.1", + "description": "步骤条组件,提供横向和纵向两种布局格式。", + "keywords": [ + "uni-ui", + "uniui", + "步骤条", + "时间轴" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": [ + "uni-scss", + "uni-icons" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-steps/readme.md b/uni_modules/uni-steps/readme.md new file mode 100644 index 0000000..da7a4bf --- /dev/null +++ b/uni_modules/uni-steps/readme.md @@ -0,0 +1,13 @@ + + +## Steps 步骤条 +> **组件名:uni-steps** +> 代码块: `uSteps` + + +步骤条,常用于显示进度 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-steps) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-swipe-action/changelog.md b/uni_modules/uni-swipe-action/changelog.md new file mode 100644 index 0000000..c007cb5 --- /dev/null +++ b/uni_modules/uni-swipe-action/changelog.md @@ -0,0 +1,41 @@ +## 1.3.7(2022-06-06) +- 修复 vue3 下使用组件不能正常运行的Bug +## 1.3.6(2022-05-31) +- 修复 h5端点击click触发两次的Bug +## 1.3.5(2022-05-23) +- 修复 isPC 找不到的Bug +## 1.3.4(2022-05-19) +- 修复 在 nvue 下 disabled 失效的bug +## 1.3.3(2022-03-31) +- 修复 按钮字体大小不能设置的bug +## 1.3.2(2022-03-16) +- 修复 h5和app端下报el错误的bug +## 1.3.1(2022-03-07) +- 修复 HBuilderX 1.4.X 版本中,h5和app端下报错的bug +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swipe-action](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +## 1.2.4(2021-08-20) +- 优化 close-all 方法 +## 1.2.3(2021-08-20) +- 新增 close-all 方法,关闭所有已打开的组件 +## 1.2.2(2021-08-17) +- 新增 resize() 方法,在非微信小程序、h5、app-vue端出现不能滑动的问题的时候,重置组件 +- 修复 app 端偶尔出现类似 Page[x][-x,xx;-x,xx,x,x-x] 的问题 +- 优化 微信小程序、h5、app-vue 滑动逻辑,避免出现动态新增组件后不能滑动的问题 +## 1.2.1(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +- 修复 跨页面修改组件数据 ,导致不能滑动的问题 +## 1.1.10(2021-06-17) +- 修复 按钮点击执行两次的bug +## 1.1.9(2021-05-12) +- 新增 项目示例地址 +## 1.1.8(2021-03-26) +- 修复 微信小程序 nv_navigator is not defined 报错的bug +## 1.1.7(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 左侧滑动 +- 新增 插槽使用方式 +- 新增 threshold 属性,可以控制滑动缺省值 +- 优化 长列表滚动性能 +- 修复 滚动页面时触发组件滑动的Bug diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js new file mode 100644 index 0000000..755c97c --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js @@ -0,0 +1,302 @@ +let bindIngXMixins = {} + +// #ifdef APP-NVUE +const BindingX = uni.requireNativePlugin('bindingx'); +const dom = uni.requireNativePlugin('dom'); +const animation = uni.requireNativePlugin('animation'); + +bindIngXMixins = { + data() { + return {} + }, + + watch: { + show(newVal) { + if (this.autoClose) return + if (this.stop) return + this.stop = true + if (newVal) { + this.open(newVal) + } else { + this.close() + } + }, + leftOptions() { + this.getSelectorQuery() + this.init() + }, + rightOptions(newVal) { + this.init() + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.box = this.getEl(this.$refs['selector-box--hock']) + this.selector = this.getEl(this.$refs['selector-content--hock']); + this.leftButton = this.getEl(this.$refs['selector-left-button--hock']); + this.rightButton = this.getEl(this.$refs['selector-right-button--hock']); + this.init() + }, + // beforeDestroy() { + // this.swipeaction.children.forEach((item, index) => { + // if (item === this) { + // this.swipeaction.children.splice(index, 1) + // } + // }) + // }, + methods: { + init() { + this.$nextTick(() => { + this.x = 0 + this.button = { + show: false + } + setTimeout(() => { + this.getSelectorQuery() + }, 200) + }) + }, + onClick(index, item, position) { + this.$emit('click', { + content: item, + index, + position + }) + }, + touchstart(e) { + // fix by mehaotian 禁止滑动 + if (this.disabled) return + // 每次只触发一次,避免多次监听造成闪烁 + if (this.stop) return + this.stop = true + if (this.autoClose) { + this.swipeaction.closeOther(this) + } + + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + let expression = this.range(this.x, -rightWidth, leftWidth) + let leftExpression = this.range(this.x - leftWidth, -leftWidth, 0) + let rightExpression = this.range(this.x + rightWidth, 0, rightWidth) + + this.eventpan = BindingX.bind({ + anchor: this.box, + eventType: 'pan', + props: [{ + element: this.selector, + property: 'transform.translateX', + expression + }, { + element: this.leftButton, + property: 'transform.translateX', + expression: leftExpression + }, { + element: this.rightButton, + property: 'transform.translateX', + expression: rightExpression + }, ] + }, (e) => { + // nope + if (e.state === 'end') { + this.x = e.deltaX + this.x; + this.isclick = true + this.bindTiming(e.deltaX) + } + }); + }, + touchend(e) { + if (this.isopen !== 'none' && !this.isclick) { + this.open('none') + } + }, + bindTiming(x) { + const left = this.x + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + const threshold = this.threshold + if (!this.isopen || this.isopen === 'none') { + if (left > threshold) { + this.open('left') + } else if (left < -threshold) { + this.open('right') + } else { + this.open('none') + } + } else { + if ((x > -leftWidth && x < 0) || x > rightWidth) { + if ((x > -threshold && x < 0) || (x - rightWidth > threshold)) { + this.open('left') + } else { + this.open('none') + } + } else { + if ((x < threshold && x > 0) || (x + leftWidth < -threshold)) { + this.open('right') + } else { + this.open('none') + } + } + } + }, + + /** + * 移动范围 + * @param {Object} num + * @param {Object} mix + * @param {Object} max + */ + range(num, mix, max) { + return `min(max(x+${num}, ${mix}), ${max})` + }, + + /** + * 开启swipe + */ + open(type) { + this.animation(type) + }, + + /** + * 关闭swipe + */ + close() { + this.animation('none') + }, + + /** + * 开启关闭动画 + * @param {Object} type + */ + animation(type) { + const time = 300 + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + if (this.eventpan && this.eventpan.token) { + BindingX.unbind({ + token: this.eventpan.token, + eventType: 'pan' + }) + } + + switch (type) { + case 'left': + Promise.all([ + this.move(this.selector, leftWidth), + this.move(this.leftButton, 0), + this.move(this.rightButton, rightWidth * 2) + ]).then(() => { + this.setEmit(leftWidth, type) + }) + break + case 'right': + Promise.all([ + this.move(this.selector, -rightWidth), + this.move(this.leftButton, -leftWidth * 2), + this.move(this.rightButton, 0) + ]).then(() => { + this.setEmit(-rightWidth, type) + }) + break + default: + Promise.all([ + this.move(this.selector, 0), + this.move(this.leftButton, -leftWidth), + this.move(this.rightButton, rightWidth) + ]).then(() => { + this.setEmit(0, type) + }) + + } + }, + setEmit(x, type) { + const leftWidth = this.button.left.width + const rightWidth = this.button.right.width + this.isopen = this.isopen || 'none' + this.stop = false + this.isclick = false + // 只有状态不一致才会返回结果 + if (this.isopen !== type && this.x !== x) { + if (type === 'left' && leftWidth > 0) { + this.$emit('change', 'left') + } + if (type === 'right' && rightWidth > 0) { + this.$emit('change', 'right') + } + if (type === 'none') { + this.$emit('change', 'none') + } + } + this.x = x + this.isopen = type + }, + move(ref, value) { + return new Promise((resolve, reject) => { + animation.transition(ref, { + styles: { + transform: `translateX(${value})`, + }, + duration: 150, //ms + timingFunction: 'linear', + needLayout: false, + delay: 0 //ms + }, function(res) { + resolve(res) + }) + }) + + }, + + /** + * 获取ref + * @param {Object} el + */ + getEl(el) { + return el.ref + }, + /** + * 获取节点信息 + */ + getSelectorQuery() { + Promise.all([ + this.getDom('left'), + this.getDom('right'), + ]).then((data) => { + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + + if (show === 'none') { + // this.close() + } else { + this.open(show) + } + + }) + + }, + getDom(str) { + return new Promise((resolve, reject) => { + dom.getComponentRect(this.$refs[`selector-${str}-button--hock`], (data) => { + if (data) { + this.button[str] = data.size + resolve(data) + } else { + reject() + } + }) + }) + } + } +} + +// #endif + +export default bindIngXMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/index.wxs b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/index.wxs new file mode 100644 index 0000000..10ddb56 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/index.wxs @@ -0,0 +1,323 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function sizeReady(newValue, oldValue, ownerInstance, instance) { + var state = instance.getState() + var buttonPositions = JSON.parse(newValue) + if (!buttonPositions || !buttonPositions.data || buttonPositions.data.length === 0) return + state.leftWidth = buttonPositions.data[0].width + state.rightWidth = buttonPositions.data[1].width + state.threshold = instance.getDataset().threshold + + if (buttonPositions.show && buttonPositions.show !== 'none') { + openState(buttonPositions.show, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ins) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ins.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ins) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var position = state.position + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + sizeReady: sizeReady, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js new file mode 100644 index 0000000..917cb48 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/isPC.js @@ -0,0 +1,12 @@ +export function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (let v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js new file mode 100644 index 0000000..43cd56b --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpalipay.js @@ -0,0 +1,193 @@ +export default { + data() { + return { + x: 0, + transition: false, + width: 0, + viewWidth: 0, + swipeShow: 0 + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + if (newVal && newVal !== 'none') { + this.transition = true + this.open(newVal) + } else { + this.close() + } + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.isopen = false + setTimeout(() => { + this.getQuerySelect() + }, 50) + }, + methods: { + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + /** + * 移动触发 + * @param {Object} e + */ + onChange(e) { + this.moveX = e.detail.x + this.isclose = false + }, + touchstart(e) { + this.transition = false + this.isclose = true + this.autoClose && this.swipeaction.closeOther(this) + }, + touchmove(e) {}, + touchend(e) { + // 0的位置什么都不执行 + if (this.isclose && this.isopen === 'none') return + if (this.isclose && this.isopen !== 'none') { + this.transition = true + this.close() + } else { + this.move(this.moveX + this.leftWidth) + } + }, + + /** + * 移动 + * @param {Object} moveX + */ + move(moveX) { + // 打开关闭的处理逻辑不太一样 + this.transition = true + // 未打开状态 + if (!this.isopen || this.isopen === 'none') { + if (moveX > this.threshold) { + this.open('left') + } else if (moveX < -this.threshold) { + this.open('right') + } else { + this.close() + } + } else { + if (moveX < 0 && moveX < this.rightWidth) { + const rightX = this.rightWidth + moveX + if (rightX < this.threshold) { + this.open('right') + } else { + this.close() + } + } else if (moveX > 0 && moveX < this.leftWidth) { + const leftX = this.leftWidth - moveX + if (leftX < this.threshold) { + this.open('left') + } else { + this.close() + } + } + + } + + }, + + /** + * 打开 + */ + open(type) { + this.x = this.moveX + this.animation(type) + }, + + /** + * 关闭 + */ + close() { + this.x = this.moveX + // TODO 解决 x 值不更新的问题,所以会多触发一次 nextTick ,待优化 + this.$nextTick(() => { + this.x = -this.leftWidth + if (this.isopen !== 'none') { + this.$emit('change', 'none') + } + this.isopen = 'none' + }) + }, + + /** + * 执行结束动画 + * @param {Object} type + */ + animation(type) { + this.$nextTick(() => { + if (type === 'left') { + this.x = 0 + } else { + this.x = -this.rightWidth - this.leftWidth + } + + if (this.isopen !== type) { + this.$emit('change', type) + } + this.isopen = type + }) + + }, + getSlide(x) {}, + getQuerySelect() { + const query = uni.createSelectorQuery().in(this); + query.selectAll('.movable-view--hock').boundingClientRect(data => { + this.leftWidth = data[1].width + this.rightWidth = data[2].width + this.width = data[0].width + this.viewWidth = this.width + this.rightWidth + this.leftWidth + if (this.leftWidth === 0) { + // TODO 疑似bug ,初始化的时候如果x 是0,会导致移动位置错误,所以让元素超出一点 + this.x = -0.1 + } else { + this.x = -this.leftWidth + } + this.moveX = this.x + this.$nextTick(() => { + this.swipeShow = 1 + }) + + if (!this.buttonWidth) { + this.disabledView = true + } + + if (this.autoClose) return + if (this.show !== 'none') { + this.transition = true + this.open(this.shows) + } + }).exec(); + + } + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js new file mode 100644 index 0000000..9a8bcbb --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js @@ -0,0 +1,259 @@ +let otherMixins = {} + +// #ifndef APP-PLUS|| MP-WEIXIN || H5 +const MIN_DISTANCE = 10; +otherMixins = { + data() { + // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug + const elClass = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}` + return { + uniShow: false, + left: 0, + buttonShow: 'none', + ani: false, + moveLeft: '', + elClass + } + }, + watch: { + show(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + left() { + this.moveLeft = `translateX(${this.left}px)` + }, + buttonShow(newVal) { + if (this.autoClose) return + this.openState(newVal) + }, + leftOptions() { + this.init() + }, + rightOptions() { + this.init() + } + }, + mounted() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + this.init() + }, + methods: { + init() { + clearTimeout(this.timer) + this.timer = setTimeout(() => { + this.getSelectorQuery() + }, 100) + // 移动距离 + this.left = 0 + this.x = 0 + }, + + closeSwipe(e) { + if (!this.autoClose) return + this.swipeaction.closeOther(this) + }, + appTouchStart(e) { + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + touchstart(e) { + if (this.disabled) return + this.ani = false + this.x = this.left || 0 + this.stopTouchStart(e) + this.autoClose && this.closeSwipe() + }, + touchmove(e) { + if (this.disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e); + if (this.direction !== 'horizontal') { + return; + } + this.move(this.x + this.deltaX) + return false + }, + touchend() { + if (this.disabled) return + this.moveDirection(this.left) + }, + /** + * 设置移动距离 + * @param {Object} value + */ + move(value) { + value = value || 0 + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + // 获取可滑动范围 + this.left = this.range(value, -rightWidth, leftWidth); + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + */ + moveDirection(left) { + const threshold = this.threshold + const isopen = this.isopen || 'none' + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + if (this.deltaX === 0) { + this.openState('none') + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > + 0 && rightWidth + + left < threshold)) { + // right + this.openState('right') + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > + 0 && + leftWidth - left < threshold)) { + // left + this.openState('left') + } else { + // default + this.openState('none') + } + }, + + /** + * 开启状态 + * @param {Boolean} type + */ + openState(type) { + const leftWidth = this.leftWidth + const rightWidth = this.rightWidth + let left = '' + this.isopen = this.isopen ? this.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + + if (this.isopen !== type) { + this.throttle = true + this.$emit('change', type) + } + + this.isopen = type + // 添加动画类 + this.ani = true + this.$nextTick(() => { + this.move(left) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 + }, + close() { + this.openState('none') + }, + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus() { + this.direction = ''; + this.deltaX = 0; + this.deltaY = 0; + this.offsetX = 0; + this.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event) { + this.resetTouchStatus(); + const touch = event.touches[0]; + this.startX = touch.clientX; + this.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event) { + const touch = event.touches[0]; + this.deltaX = touch.clientX - this.startX; + this.deltaY = touch.clientY - this.startY; + this.offsetX = Math.abs(this.deltaX); + this.offsetY = Math.abs(this.deltaY); + this.direction = this.direction || this.getDirection(this.offsetX, this.offsetY); + }, + + getSelectorQuery() { + const views = uni.createSelectorQuery().in(this) + views + .selectAll('.' + this.elClass) + .boundingClientRect(data => { + if (data.length === 0) return + let show = 'none' + if (this.autoClose) { + show = 'none' + } else { + show = this.show + } + this.leftWidth = data[0].width || 0 + this.rightWidth = data[1].width || 0 + this.buttonShow = show + }) + .exec() + } + } +} + +// #endif + +export default otherMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js new file mode 100644 index 0000000..435e0fb --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js @@ -0,0 +1,83 @@ +let mpMixins = {} +let is_pc = null +// #ifdef H5 +import { + isPC +} from "./isPC" +is_pc = isPC() +// #endif +// #ifdef APP-VUE|| MP-WEIXIN || H5 + +mpMixins = { + data() { + return { + is_show: 'none' + } + }, + watch: { + show(newVal) { + this.is_show = this.show + } + }, + created() { + this.swipeaction = this.getSwipeAction() + if (this.swipeaction.children !== undefined) { + this.swipeaction.children.push(this) + } + }, + mounted() { + this.is_show = this.show + }, + methods: { + // wxs 中调用 + closeSwipe(e) { + if (!this.autoClose) return + this.swipeaction.closeOther(this) + }, + + change(e) { + this.$emit('change', e.open) + if (this.is_show !== e.open) { + this.is_show = e.open + } + }, + + appTouchStart(e) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + this.clientX = clientX + this.timestamp = new Date().getTime() + }, + appTouchEnd(e, index, item, position) { + if (is_pc) return + const { + clientX + } = e.changedTouches[0] + // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题 + let diff = Math.abs(this.clientX - clientX) + let time = (new Date().getTime()) - this.timestamp + if (diff < 40 && time < 300) { + this.$emit('click', { + content: item, + index, + position + }) + } + }, + onClickForPC(index, item, position) { + if (!is_pc) return + // #ifdef H5 + this.$emit('click', { + content: item, + index, + position + }) + // #endif + } + } +} + +// #endif +export default mpMixins diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js new file mode 100644 index 0000000..78f0ec6 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/render.js @@ -0,0 +1,270 @@ +const MIN_DISTANCE = 10; +export default { + showWatch(newVal, oldVal, ownerInstance, instance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + if (!$el) return + this.getDom(instance, ownerInstance, self) + if (newVal && newVal !== 'none') { + this.openState(newVal, instance, ownerInstance, self) + return + } + + if (state.left) { + this.openState('none', instance, ownerInstance, self) + } + this.resetTouchStatus(instance, self) + }, + + /** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ + touchstart(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state; + this.getDom(instance, ownerInstance, self) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + this.stopTouchStart(e, ownerInstance, self) + }, + + /** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchmove(e, ownerInstance, self) { + let instance = e.instance; + // 删除之后已经那不到实例了 + if (!instance) return; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + if (disabled) return + // 是否可以滑动页面 + this.stopTouchMove(e, self); + if (state.direction !== 'horizontal') { + return; + } + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + let x = state.x + state.deltaX + this.move(x, instance, ownerInstance, self) + }, + + /** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ + touchend(e, ownerInstance, self) { + let instance = e.instance; + let disabled = instance.getDataset().disabled + let state = self.state + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = this.getDisabledType(disabled) + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + this.moveDirection(state.left, instance, ownerInstance, self) + + }, + + /** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ + move(value, instance, ownerInstance, self) { + value = value || 0 + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = this.range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + + }, + + /** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ + getDom(instance, ownerInstance, self) { + var state = self.state + var $el = ownerInstance.$el || ownerInstance.$vm && ownerInstance.$vm.$el + var leftDom = $el.querySelector('.button-group--left') + var rightDom = $el.querySelector('.button-group--right') + + state.leftWidth = leftDom.offsetWidth || 0 + state.rightWidth = rightDom.offsetWidth || 0 + state.threshold = instance.getDataset().threshold + }, + + getDisabledType(value) { + return (typeof(value) === 'string' ? JSON.parse(value) : value) || false; + }, + + /** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ + range(num, min, max) { + return Math.min(Math.max(num, min), max); + }, + + + /** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ + moveDirection(left, ins, ownerInstance, self) { + var state = self.state + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + this.openState('none', ins, ownerInstance, self) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + this.openState('right', ins, ownerInstance, self) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + this.openState('left', ins, ownerInstance, self) + } else { + // default + this.openState('none', ins, ownerInstance, self) + } + }, + + + /** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ + openState(type, ins, ownerInstance, self) { + let state = self.state + let leftWidth = state.leftWidth + let rightWidth = state.rightWidth + let left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(() => { + ins.addClass('ani'); + this.move(left, ins, ownerInstance, self) + }) + }, + + + getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; + }, + + /** + * 重置滑动状态 + * @param {Object} event + */ + resetTouchStatus(instance, self) { + let state = self.state; + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; + }, + + /** + * 设置滑动开始位置 + * @param {Object} event + */ + stopTouchStart(event, ownerInstance, self) { + let instance = event.instance; + let state = self.state + this.resetTouchStatus(instance, self); + var touch = event.touches[0]; + state.startX = touch.clientX; + state.startY = touch.clientY; + }, + + /** + * 滑动中,是否禁止打开 + * @param {Object} event + */ + stopTouchMove(event, self) { + let instance = event.instance; + let state = self.state; + let touch = event.touches[0]; + + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || this.getDirection(state.offsetX, state.offsetY); + } +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue new file mode 100644 index 0000000..d79c297 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/uni-swipe-action-item.vue @@ -0,0 +1,347 @@ + + + + + + diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs new file mode 100644 index 0000000..b394244 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action-item/wx.wxs @@ -0,0 +1,341 @@ +var MIN_DISTANCE = 10; + +/** + * 判断当前是否为H5、app-vue + */ +var IS_HTML5 = false +if (typeof window === 'object') IS_HTML5 = true + +/** + * 监听页面内值的变化,主要用于动态开关swipe-action + * @param {Object} newValue + * @param {Object} oldValue + * @param {Object} ownerInstance + * @param {Object} instance + */ +function showWatch(newVal, oldVal, ownerInstance, instance) { + var state = instance.getState() + getDom(instance, ownerInstance) + if (newVal && newVal !== 'none') { + openState(newVal, instance, ownerInstance) + return + } + + if (state.left) { + openState('none', instance, ownerInstance) + } + resetTouchStatus(instance) +} + +/** + * 开始触摸操作 + * @param {Object} e + * @param {Object} ins + */ +function touchstart(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState(); + getDom(instance, ownerInstance) + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 开始触摸时移除动画类 + instance.requestAnimationFrame(function() { + instance.removeClass('ani'); + ownerInstance.callMethod('closeSwipe'); + }) + + // 记录上次的位置 + state.x = state.left || 0 + // 计算滑动开始位置 + stopTouchStart(e, ownerInstance) +} + +/** + * 开始滑动操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchmove(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + if (disabled) return + // 是否可以滑动页面 + stopTouchMove(e); + if (state.direction !== 'horizontal') { + return; + } + + if (e.preventDefault) { + // 阻止页面滚动 + e.preventDefault() + } + + move(state.x + state.deltaX, instance, ownerInstance) +} + +/** + * 结束触摸操作 + * @param {Object} e + * @param {Object} ownerInstance + */ +function touchend(e, ownerInstance) { + var instance = e.instance; + var disabled = instance.getDataset().disabled + var state = instance.getState() + // fix by mehaotian, TODO 兼容 app-vue 获取dataset为字符串 , h5 获取 为 undefined 的问题,待框架修复 + disabled = (typeof(disabled) === 'string' ? JSON.parse(disabled) : disabled) || false; + + if (disabled) return + // 滑动过程中触摸结束,通过阙值判断是开启还是关闭 + // fixed by mehaotian 定时器解决点击按钮,touchend 触发比 click 事件时机早的问题 ,主要是 ios13 + moveDirection(state.left, instance, ownerInstance) + +} + +/** + * 设置移动距离 + * @param {Object} value + * @param {Object} instance + * @param {Object} ownerInstance + */ +function move(value, instance, ownerInstance) { + value = value || 0 + var state = instance.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + // 获取可滑动范围 + state.left = range(value, -rightWidth, leftWidth); + instance.requestAnimationFrame(function() { + instance.setStyle({ + transform: 'translateX(' + state.left + 'px)', + '-webkit-transform': 'translateX(' + state.left + 'px)' + }) + }) + +} + +/** + * 获取元素信息 + * @param {Object} instance + * @param {Object} ownerInstance + */ +function getDom(instance, ownerInstance) { + var state = instance.getState() + var leftDom = ownerInstance.selectComponent('.button-group--left') + var rightDom = ownerInstance.selectComponent('.button-group--right') + var leftStyles = { + width: 0 + } + var rightStyles = { + width: 0 + } + leftStyles = leftDom.getBoundingClientRect() + rightStyles = rightDom.getBoundingClientRect() + + state.leftWidth = leftStyles.width || 0 + state.rightWidth = rightStyles.width || 0 + state.threshold = instance.getDataset().threshold +} + +/** + * 获取范围 + * @param {Object} num + * @param {Object} min + * @param {Object} max + */ +function range(num, min, max) { + return Math.min(Math.max(num, min), max); +} + + +/** + * 移动方向判断 + * @param {Object} left + * @param {Object} value + * @param {Object} ownerInstance + * @param {Object} ins + */ +function moveDirection(left, ins, ownerInstance) { + var state = ins.getState() + var threshold = state.threshold + var position = state.position + var isopen = state.isopen || 'none' + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + if (state.deltaX === 0) { + openState('none', ins, ownerInstance) + return + } + if ((isopen === 'none' && rightWidth > 0 && -left > threshold) || (isopen !== 'none' && rightWidth > 0 && + rightWidth + + left < threshold)) { + // right + openState('right', ins, ownerInstance) + } else if ((isopen === 'none' && leftWidth > 0 && left > threshold) || (isopen !== 'none' && leftWidth > 0 && + leftWidth - left < threshold)) { + // left + openState('left', ins, ownerInstance) + } else { + // default + openState('none', ins, ownerInstance) + } +} + + +/** + * 开启状态 + * @param {Boolean} type + * @param {Object} ins + * @param {Object} ownerInstance + */ +function openState(type, ins, ownerInstance) { + var state = ins.getState() + var leftWidth = state.leftWidth + var rightWidth = state.rightWidth + var left = '' + state.isopen = state.isopen ? state.isopen : 'none' + switch (type) { + case "left": + left = leftWidth + break + case "right": + left = -rightWidth + break + default: + left = 0 + } + + // && !state.throttle + + if (state.isopen !== type) { + state.throttle = true + ownerInstance.callMethod('change', { + open: type + }) + + } + + state.isopen = type + // 添加动画类 + ins.requestAnimationFrame(function() { + ins.addClass('ani'); + move(left, ins, ownerInstance) + }) + // 设置最终移动位置,理论上只要进入到这个函数,肯定是要打开的 +} + + +function getDirection(x, y) { + if (x > y && x > MIN_DISTANCE) { + return 'horizontal'; + } + if (y > x && y > MIN_DISTANCE) { + return 'vertical'; + } + return ''; +} + +/** + * 重置滑动状态 + * @param {Object} event + */ +function resetTouchStatus(instance) { + var state = instance.getState(); + state.direction = ''; + state.deltaX = 0; + state.deltaY = 0; + state.offsetX = 0; + state.offsetY = 0; +} + +/** + * 设置滑动开始位置 + * @param {Object} event + */ +function stopTouchStart(event) { + var instance = event.instance; + var state = instance.getState(); + resetTouchStatus(instance); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.startX = touch.clientX; + state.startY = touch.clientY; +} + +/** + * 滑动中,是否禁止打开 + * @param {Object} event + */ +function stopTouchMove(event) { + var instance = event.instance; + var state = instance.getState(); + var touch = event.touches[0]; + if (IS_HTML5 && isPC()) { + touch = event; + } + state.deltaX = touch.clientX - state.startX; + state.deltaY = touch.clientY - state.startY; + state.offsetY = Math.abs(state.deltaY); + state.offsetX = Math.abs(state.deltaX); + state.direction = state.direction || getDirection(state.offsetX, state.offsetY); +} + +function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length - 1; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +var movable = false + +function mousedown(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchstart(e, ins) + movable = true +} + +function mousemove(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + if (!movable) return + touchmove(e, ins) +} + +function mouseup(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + touchend(e, ins) + movable = false +} + +function mouseleave(e, ins) { + if (!IS_HTML5) return + if (!isPC()) return + movable = false +} + +module.exports = { + showWatch: showWatch, + touchstart: touchstart, + touchmove: touchmove, + touchend: touchend, + mousedown: mousedown, + mousemove: mousemove, + mouseup: mouseup, + mouseleave: mouseleave +} diff --git a/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue new file mode 100644 index 0000000..4971782 --- /dev/null +++ b/uni_modules/uni-swipe-action/components/uni-swipe-action/uni-swipe-action.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/uni_modules/uni-swipe-action/package.json b/uni_modules/uni-swipe-action/package.json new file mode 100644 index 0000000..c8998d9 --- /dev/null +++ b/uni_modules/uni-swipe-action/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swipe-action", + "displayName": "uni-swipe-action 滑动操作", + "version": "1.3.7", + "description": "SwipeAction 滑动操作操作组件", + "keywords": [ + "", + "uni-ui", + "uniui", + "滑动删除", + "侧滑删除" + ], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "y", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} diff --git a/uni_modules/uni-swipe-action/readme.md b/uni_modules/uni-swipe-action/readme.md new file mode 100644 index 0000000..93a5cac --- /dev/null +++ b/uni_modules/uni-swipe-action/readme.md @@ -0,0 +1,11 @@ + + +## SwipeAction 滑动操作 +> **组件名:uni-swipe-action** +> 代码块: `uSwipeAction`、`uSwipeActionItem` + + +通过滑动触发选项的容器 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swipe-action) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/changelog.md b/uni_modules/uni-swiper-dot/changelog.md new file mode 100644 index 0000000..85cf54d --- /dev/null +++ b/uni_modules/uni-swiper-dot/changelog.md @@ -0,0 +1,12 @@ +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-swiper-dot](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.6(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.5(2021-02-05) +- 调整为uni_modules目录规范 +- 新增 clickItem 事件,支持指示点控制轮播 +- 新增 支持 pc 可用 diff --git a/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue new file mode 100644 index 0000000..e66b6c7 --- /dev/null +++ b/uni_modules/uni-swiper-dot/components/uni-swiper-dot/uni-swiper-dot.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/uni_modules/uni-swiper-dot/package.json b/uni_modules/uni-swiper-dot/package.json new file mode 100644 index 0000000..f2dd8d2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-swiper-dot", + "displayName": "uni-swiper-dot 轮播图指示点", + "version": "1.2.0", + "description": "自定义轮播图指示点组件", + "keywords": [ + "uni-ui", + "uniui", + "轮播图指示点", + "dot", + "swiper" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-swiper-dot/readme.md b/uni_modules/uni-swiper-dot/readme.md new file mode 100644 index 0000000..7d397e2 --- /dev/null +++ b/uni_modules/uni-swiper-dot/readme.md @@ -0,0 +1,11 @@ + + +## SwiperDot 轮播图指示点 +> **组件名:uni-swiper-dot** +> 代码块: `uSwiperDot` + + +自定义轮播图指示点 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-swiper-dot) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/uni-table/changelog.md b/uni_modules/uni-table/changelog.md new file mode 100644 index 0000000..8233b20 --- /dev/null +++ b/uni_modules/uni-table/changelog.md @@ -0,0 +1,23 @@ +## 1.2.1(2022-06-06) +- 修复 微信小程序存在无使用组件的问题 +## 1.2.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table) +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-07-08) +- 新增 uni-th 支持 date 日期筛选范围 +## 1.0.6(2021-07-05) +- 新增 uni-th 支持 range 筛选范围 +## 1.0.5(2021-06-28) +- 新增 uni-th 筛选功能 +## 1.0.4(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.3(2021-04-16) +- 新增 sortable 属性,是否开启单列排序 +- 优化 表格多选逻辑 +## 1.0.2(2021-03-22) +- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制 +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-table/components/uni-table/uni-table.vue b/uni_modules/uni-table/components/uni-table/uni-table.vue new file mode 100644 index 0000000..91b74fa --- /dev/null +++ b/uni_modules/uni-table/components/uni-table/uni-table.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue new file mode 100644 index 0000000..fbe1bdc --- /dev/null +++ b/uni_modules/uni-table/components/uni-tbody/uni-tbody.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-td/uni-td.vue b/uni_modules/uni-table/components/uni-td/uni-td.vue new file mode 100644 index 0000000..9ce93e9 --- /dev/null +++ b/uni_modules/uni-table/components/uni-td/uni-td.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/filter-dropdown.vue b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue new file mode 100644 index 0000000..bc9a0e3 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/filter-dropdown.vue @@ -0,0 +1,503 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-th/uni-th.vue b/uni_modules/uni-table/components/uni-th/uni-th.vue new file mode 100644 index 0000000..883e3f2 --- /dev/null +++ b/uni_modules/uni-table/components/uni-th/uni-th.vue @@ -0,0 +1,278 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-thead/uni-thead.vue b/uni_modules/uni-table/components/uni-thead/uni-thead.vue new file mode 100644 index 0000000..0dd18cd --- /dev/null +++ b/uni_modules/uni-table/components/uni-thead/uni-thead.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/table-checkbox.vue b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue new file mode 100644 index 0000000..158f3ff --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/table-checkbox.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/uni_modules/uni-table/components/uni-tr/uni-tr.vue b/uni_modules/uni-table/components/uni-tr/uni-tr.vue new file mode 100644 index 0000000..f9b9671 --- /dev/null +++ b/uni_modules/uni-table/components/uni-tr/uni-tr.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-table/i18n/en.json b/uni_modules/uni-table/i18n/en.json new file mode 100644 index 0000000..e32023c --- /dev/null +++ b/uni_modules/uni-table/i18n/en.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reset", + "filter-dropdown.search": "Search", + "filter-dropdown.submit": "Submit", + "filter-dropdown.filter": "Filter", + "filter-dropdown.gt": "Greater or equal to", + "filter-dropdown.lt": "Less than or equal to", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/es.json b/uni_modules/uni-table/i18n/es.json new file mode 100644 index 0000000..9afd04b --- /dev/null +++ b/uni_modules/uni-table/i18n/es.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Reiniciar", + "filter-dropdown.search": "Búsqueda", + "filter-dropdown.submit": "Entregar", + "filter-dropdown.filter": "Filtrar", + "filter-dropdown.gt": "Mayor o igual a", + "filter-dropdown.lt": "Menos que o igual a", + "filter-dropdown.date": "Fecha" +} diff --git a/uni_modules/uni-table/i18n/fr.json b/uni_modules/uni-table/i18n/fr.json new file mode 100644 index 0000000..b006237 --- /dev/null +++ b/uni_modules/uni-table/i18n/fr.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "Réinitialiser", + "filter-dropdown.search": "Chercher", + "filter-dropdown.submit": "Soumettre", + "filter-dropdown.filter": "Filtre", + "filter-dropdown.gt": "Supérieur ou égal à", + "filter-dropdown.lt": "Inférieur ou égal à", + "filter-dropdown.date": "Date" +} diff --git a/uni_modules/uni-table/i18n/index.js b/uni_modules/uni-table/i18n/index.js new file mode 100644 index 0000000..2469dd0 --- /dev/null +++ b/uni_modules/uni-table/i18n/index.js @@ -0,0 +1,12 @@ +import en from './en.json' +import es from './es.json' +import fr from './fr.json' +import zhHans from './zh-Hans.json' +import zhHant from './zh-Hant.json' +export default { + en, + es, + fr, + 'zh-Hans': zhHans, + 'zh-Hant': zhHant +} diff --git a/uni_modules/uni-table/i18n/zh-Hans.json b/uni_modules/uni-table/i18n/zh-Hans.json new file mode 100644 index 0000000..862af17 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hans.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "确定", + "filter-dropdown.filter": "筛选", + "filter-dropdown.gt": "大于等于", + "filter-dropdown.lt": "小于等于", + "filter-dropdown.date": "日期范围" +} diff --git a/uni_modules/uni-table/i18n/zh-Hant.json b/uni_modules/uni-table/i18n/zh-Hant.json new file mode 100644 index 0000000..64f8061 --- /dev/null +++ b/uni_modules/uni-table/i18n/zh-Hant.json @@ -0,0 +1,9 @@ +{ + "filter-dropdown.reset": "重置", + "filter-dropdown.search": "搜索", + "filter-dropdown.submit": "確定", + "filter-dropdown.filter": "篩選", + "filter-dropdown.gt": "大於等於", + "filter-dropdown.lt": "小於等於", + "filter-dropdown.date": "日期範圍" +} diff --git a/uni_modules/uni-table/package.json b/uni_modules/uni-table/package.json new file mode 100644 index 0000000..f224ab7 --- /dev/null +++ b/uni_modules/uni-table/package.json @@ -0,0 +1,86 @@ +{ + "id": "uni-table", + "displayName": "uni-table 表格", + "version": "1.2.1", + "description": "表格组件,多用于展示多条结构类似的数据,如", + "keywords": [ + "uni-ui", + "uniui", + "table", + "表格" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss","uni-datetime-picker"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "n" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "n", + "QQ": "y" + }, + "快应用": { + "华为": "n", + "联盟": "n" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-table/readme.md b/uni_modules/uni-table/readme.md new file mode 100644 index 0000000..bb08c79 --- /dev/null +++ b/uni_modules/uni-table/readme.md @@ -0,0 +1,13 @@ + + +## Table 表单 +> 组件名:``uni-table``,代码块: `uTable`。 + +用于展示多条结构类似的数据 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + + diff --git a/uni_modules/uni-tag/changelog.md b/uni_modules/uni-tag/changelog.md new file mode 100644 index 0000000..c0c5839 --- /dev/null +++ b/uni_modules/uni-tag/changelog.md @@ -0,0 +1,21 @@ +## 2.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-tag](https://uniapp.dcloud.io/component/uniui/uni-tag) +## 2.0.0(2021-11-09) +- 新增 提供组件设计资源,组件样式调整 +- 移除 插槽 +- 移除 type 属性的 royal 选项 +## 1.1.1(2021-08-11) +- type 不是 default 时,size 为 small 字体大小显示不正确 +## 1.1.0(2021-07-30) +- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.0.7(2021-06-18) +- 修复 uni-tag 在字节跳动小程序上 css 类名编译错误的 bug +## 1.0.6(2021-06-04) +- 修复 未定义 sass 变量 "$uni-color-royal" 的bug +## 1.0.5(2021-05-10) +- 修复 royal 类型无效的bug +- 修复 uni-tag 宽度不自适应的bug +- 新增 uni-tag 支持属性 custom-style 自定义样式 +## 1.0.4(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-tag/components/uni-tag/uni-tag.vue b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue new file mode 100644 index 0000000..418c955 --- /dev/null +++ b/uni_modules/uni-tag/components/uni-tag/uni-tag.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/uni_modules/uni-tag/package.json b/uni_modules/uni-tag/package.json new file mode 100644 index 0000000..1878088 --- /dev/null +++ b/uni_modules/uni-tag/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-tag", + "displayName": "uni-tag 标签", + "version": "2.1.0", + "description": "Tag 组件,用于展示1个或多个文字标签,可点击切换选中、不选中的状态。", + "keywords": [ + "uni-ui", + "uniui", + "", + "tag", + "标签" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tag/readme.md b/uni_modules/uni-tag/readme.md new file mode 100644 index 0000000..6e78ff5 --- /dev/null +++ b/uni_modules/uni-tag/readme.md @@ -0,0 +1,13 @@ + + +## Tag 标签 +> **组件名:uni-tag** +> 代码块: `uTag` + + +用于展示1个或多个文字标签,可点击切换选中、不选中的状态 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tag) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + diff --git a/uni_modules/uni-title/changelog.md b/uni_modules/uni-title/changelog.md new file mode 100644 index 0000000..7626216 --- /dev/null +++ b/uni_modules/uni-title/changelog.md @@ -0,0 +1,10 @@ +## 1.1.1(2022-05-19) +- 修改组件描述 +## 1.1.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-title](https://uniapp.dcloud.io/component/uniui/uni-title) +## 1.0.2(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的Bug +## 1.0.1(2021-02-05) +- 调整为uni_modules目录规范 diff --git a/uni_modules/uni-title/components/uni-title/uni-title.vue b/uni_modules/uni-title/components/uni-title/uni-title.vue new file mode 100644 index 0000000..bf4f926 --- /dev/null +++ b/uni_modules/uni-title/components/uni-title/uni-title.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/uni_modules/uni-title/package.json b/uni_modules/uni-title/package.json new file mode 100644 index 0000000..2249f5a --- /dev/null +++ b/uni_modules/uni-title/package.json @@ -0,0 +1,88 @@ +{ + "id": "uni-title", + "displayName": "uni-title 章节标题", + "version": "1.1.1", + "description": "章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题", + "keywords": [ + "uni-ui", + "uniui", + "标题", + "章节", + "章节标题", + "" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-title/readme.md b/uni_modules/uni-title/readme.md new file mode 100644 index 0000000..0e60b1b --- /dev/null +++ b/uni_modules/uni-title/readme.md @@ -0,0 +1,14 @@ + + +## Title 标题 +> **组件名:uni-title** +> 代码块: `uTitle` + + +章节标题,通常用于记录页面标题,使用当前组件,uni-app 如果开启统计,将会自动统计页面标题 。 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-title) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 + + + diff --git a/uni_modules/uni-tooltip/changelog.md b/uni_modules/uni-tooltip/changelog.md new file mode 100644 index 0000000..00f1572 --- /dev/null +++ b/uni_modules/uni-tooltip/changelog.md @@ -0,0 +1,10 @@ +## 0.2.1(2022-05-09) +- 修复 content 为空时仍然弹出的bug +## 0.2.0(2022-05-07) +**注意:破坏性更新** +- 更新 text 属性变更为 content +- 更新 移除 width 属性 +## 0.1.1(2022-04-27) +- 修复 组件根 text 嵌套组件 warning +## 0.1.0(2022-04-21) +- 初始化 diff --git a/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue new file mode 100644 index 0000000..ffbb6fa --- /dev/null +++ b/uni_modules/uni-tooltip/components/uni-tooltip/uni-tooltip.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/uni_modules/uni-tooltip/package.json b/uni_modules/uni-tooltip/package.json new file mode 100644 index 0000000..b626efb --- /dev/null +++ b/uni_modules/uni-tooltip/package.json @@ -0,0 +1,83 @@ +{ + "id": "uni-tooltip", + "displayName": "uni-tooltip", + "version": "0.2.1", + "description": "Tooltip 提示文字", + "keywords": [ + "uni-tooltip", + "uni-ui", + "tooltip", + "tip", + "文字提示" +], + "repository": "", +"engines": { + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无 ", + "data": "无", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "u" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-tooltip/readme.md b/uni_modules/uni-tooltip/readme.md new file mode 100644 index 0000000..faafa2e --- /dev/null +++ b/uni_modules/uni-tooltip/readme.md @@ -0,0 +1,8 @@ +## Badge 数字角标 +> **组件名:uni-tooltip** +> 代码块: `uTooltip` + +数字角标一般和其它控件(列表、9宫格等)配合使用,用于进行数量提示,默认为实心灰色背景, + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-tooltip) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 diff --git a/uni_modules/uni-transition/changelog.md b/uni_modules/uni-transition/changelog.md new file mode 100644 index 0000000..b1a824b --- /dev/null +++ b/uni_modules/uni-transition/changelog.md @@ -0,0 +1,20 @@ +## 1.3.1(2021-11-23) +- 修复 init 方法初始化问题 +## 1.3.0(2021-11-19) +- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource) +- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-transition](https://uniapp.dcloud.io/component/uniui/uni-transition) +## 1.2.1(2021-09-27) +- 修复 init 方法不生效的 Bug +## 1.2.0(2021-07-30) +- 组件兼容 vue3,如何创建 vue3 项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834) +## 1.1.1(2021-05-12) +- 新增 示例地址 +- 修复 示例项目缺少组件的 Bug +## 1.1.0(2021-04-22) +- 新增 通过方法自定义动画 +- 新增 custom-class 非 NVUE 平台支持自定义 class 定制样式 +- 优化 动画触发逻辑,使动画更流畅 +- 优化 支持单独的动画类型 +- 优化 文档示例 +## 1.0.2(2021-02-05) +- 调整为 uni_modules 目录规范 diff --git a/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/uni_modules/uni-transition/components/uni-transition/createAnimation.js new file mode 100644 index 0000000..5f54365 --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/createAnimation.js @@ -0,0 +1,128 @@ +// const defaultOption = { +// duration: 300, +// timingFunction: 'linear', +// delay: 0, +// transformOrigin: '50% 50% 0' +// } +// #ifdef APP-NVUE +const nvueAnimation = uni.requireNativePlugin('animation') +// #endif +class MPAnimation { + constructor(options, _this) { + this.options = options + this.animation = uni.createAnimation(options) + this.currentStepAnimates = {} + this.next = 0 + this.$ = _this + + } + + _nvuePushAnimates(type, args) { + let aniObj = this.currentStepAnimates[this.next] + let styles = {} + if (!aniObj) { + styles = { + styles: {}, + config: {} + } + } else { + styles = aniObj + } + if (animateTypes1.includes(type)) { + if (!styles.styles.transform) { + styles.styles.transform = '' + } + let unit = '' + if(type === 'rotate'){ + unit = 'deg' + } + styles.styles.transform += `${type}(${args+unit}) ` + } else { + styles.styles[type] = `${args}` + } + this.currentStepAnimates[this.next] = styles + } + _animateRun(styles = {}, config = {}) { + let ref = this.$.$refs['ani'].ref + if (!ref) return + return new Promise((resolve, reject) => { + nvueAnimation.transition(ref, { + styles, + ...config + }, res => { + resolve() + }) + }) + } + + _nvueNextAnimate(animates, step = 0, fn) { + let obj = animates[step] + if (obj) { + let { + styles, + config + } = obj + this._animateRun(styles, config).then(() => { + step += 1 + this._nvueNextAnimate(animates, step, fn) + }) + } else { + this.currentStepAnimates = {} + typeof fn === 'function' && fn() + this.isEnd = true + } + } + + step(config = {}) { + // #ifndef APP-NVUE + this.animation.step(config) + // #endif + // #ifdef APP-NVUE + this.currentStepAnimates[this.next].config = Object.assign({}, this.options, config) + this.currentStepAnimates[this.next].styles.transformOrigin = this.currentStepAnimates[this.next].config.transformOrigin + this.next++ + // #endif + return this + } + + run(fn) { + // #ifndef APP-NVUE + this.$.animationData = this.animation.export() + this.$.timer = setTimeout(() => { + typeof fn === 'function' && fn() + }, this.$.durationTime) + // #endif + // #ifdef APP-NVUE + this.isEnd = false + let ref = this.$.$refs['ani'] && this.$.$refs['ani'].ref + if(!ref) return + this._nvueNextAnimate(this.currentStepAnimates, 0, fn) + this.next = 0 + // #endif + } +} + + +const animateTypes1 = ['matrix', 'matrix3d', 'rotate', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scale3d', + 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'translate', 'translate3d', 'translateX', 'translateY', + 'translateZ' +] +const animateTypes2 = ['opacity', 'backgroundColor'] +const animateTypes3 = ['width', 'height', 'left', 'right', 'top', 'bottom'] +animateTypes1.concat(animateTypes2, animateTypes3).forEach(type => { + MPAnimation.prototype[type] = function(...args) { + // #ifndef APP-NVUE + this.animation[type](...args) + // #endif + // #ifdef APP-NVUE + this._nvuePushAnimates(type, args) + // #endif + return this + } +}) + +export function createAnimation(option, _this) { + if(!_this) return + clearTimeout(_this.timer) + return new MPAnimation(option, _this) +} diff --git a/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue new file mode 100644 index 0000000..0d739bd --- /dev/null +++ b/uni_modules/uni-transition/components/uni-transition/uni-transition.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/uni_modules/uni-transition/package.json b/uni_modules/uni-transition/package.json new file mode 100644 index 0000000..d15fdf0 --- /dev/null +++ b/uni_modules/uni-transition/package.json @@ -0,0 +1,87 @@ +{ + "id": "uni-transition", + "displayName": "uni-transition 过渡动画", + "version": "1.3.1", + "description": "元素的简单过渡动画", + "keywords": [ + "uni-ui", + "uniui", + "动画", + "过渡", + "过渡动画" +], + "repository": "https://github.com/dcloudio/uni-ui", + "engines": { + "HBuilderX": "" + }, + "directories": { + "example": "../../temps/example_temps" + }, + "dcloudext": { + "category": [ + "前端组件", + "通用组件" + ], + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "无", + "permissions": "无" + }, + "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui" + }, + "uni_modules": { + "dependencies": ["uni-scss"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y" + }, + "快应用": { + "华为": "u", + "联盟": "u" + }, + "Vue": { + "vue2": "y", + "vue3": "y" + } + } + } + } +} \ No newline at end of file diff --git a/uni_modules/uni-transition/readme.md b/uni_modules/uni-transition/readme.md new file mode 100644 index 0000000..2f8a77e --- /dev/null +++ b/uni_modules/uni-transition/readme.md @@ -0,0 +1,11 @@ + + +## Transition 过渡动画 +> **组件名:uni-transition** +> 代码块: `uTransition` + + +元素过渡动画 + +### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-transition) +#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 \ No newline at end of file diff --git a/uni_modules/vk-uview-ui/changelog.md b/uni_modules/vk-uview-ui/changelog.md new file mode 100644 index 0000000..95c58b1 --- /dev/null +++ b/uni_modules/vk-uview-ui/changelog.md @@ -0,0 +1,135 @@ +## 1.4.5(2022-12-05) +* 【修复】`u-row`、`u-col` 使用 `@click.stop` 会报错的问题,同时建议改用 `@click.native.stop` 来代替 `@click.stop` +## 1.4.4(2022-11-12) +* 【修复】`u-calendar` `u-modal` `u-picker` `u-popup` 组件在页面进入后马上需要弹窗时,无法正常弹窗的问题。 +## 1.4.3(2022-10-22) +* 【优化】部分组件的细节 +## 1.4.2(2022-10-15) +* 【修复】`1.4.1` 引出的 `u-subsection` 的部分问题 +## 1.4.1(2022-10-14) +* 【修复】`u-count-to` 若设置了千分位符合,会错误显示-的问题 +* 【修复】`u-subsection` 部分细节问题 +## 1.4.0(2022-10-07) +* 【修复】`u-section` 点击更多,会触发两次事件的问题 +* 【修复】`loadMore` 加载更多,icon-type为circle不会转动的问题 +* 【修复】`u-subsection` current 有转入值时,变更值,样式不更新(需用 `v-model="current"` 代替 `:current="current"`) +## 1.3.13(2022-09-28) +* 【修复】`u-avatar-cropper` 组件在vue3中会报错的问题。 +## 1.3.12(2022-08-30) +* 【优化】`u-keyboard` 组件内部细节。 +## 1.3.11(2022-08-30) +* 【修复】`u-subsection` 组件的 `list` 属性不支持动态修改的问题。 +## 1.3.10(2022-07-30) +* 【优化】上传组件部分细节 +## 1.3.9(2022-07-07) +* 【更新】省市区数据源 +* 【优化】`u-subsection` 组件支持在右上角显示数字角标 +```html + +``` + +```js +export default { + data() { + return { + list: [ + { + name: '待发货', + num: 10 + }, + { + name: '待付款', + num: 5 + }, + { + name: '待评价', + num: 15 + } + ] + } + } +} +``` +## 1.3.8(2022-06-13) +* 【优化】组件 `u-icon`,使之更方便的兼容第三方icon(满足规则自动计算customPrefix) +**规则如下:** +* 当 `name` 中包含 `-icon-` 字符串时 +* 如 `vk-icon-goods`,则组件的 `customPrefix` 属性自动识别为 `vk-icon` ,`name`属性 自动识别为 `goods` +* 如 `vk-2-icon-goods-list`,则组件的 `customPrefix` 属性自动识别为 `vk-2-icon` ,`name`属性 自动识别为 `goods-list` +## 1.3.7(2022-06-10) +* 【优化】组件 `u-action-sheet` `u-calendar` `u-dropdown-item` `u-field` `u-input` `u-keyboard` `u-modal` `u-radio-group` `u-rate` `u-search` `u-slider` `u-switch` `u-tabbar` `u-waterfall` 在 `vue3` 模式下的细节问题。 +## 1.3.6(2022-06-10) +* 【优化】组件 `u-action-sheet` `u-calendar` `u-dropdown-item` `u-field` `u-input` `u-keyboard` `u-modal` `u-radio-group` `u-rate` `u-search` `u-slider` `u-switch` `u-tabbar` `u-waterfall` 在 `vue3` 模式下的细节问题。 +## 1.3.5(2022-05-28) +* 【优化】组件 `u-mask` `u-popup` `u-select` `u-modal` `u-keyboard` `u-calendar` `u-action-sheet` `u-picker` 均新增 `blur` 属性,可用于设置弹出遮罩的模糊度,默认为0(不模糊) +* ![](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-cf0c5e69-620c-4f3c-84ab-f4619262939f/49b773a3-273f-4b1c-95e8-a42dcba1a53c.png) +## 1.3.4(2022-05-03) +* 【修复】`u-tabs` 组件细节问题。 +## 1.1.4(2022-03-22) +* 【修复】`u-field` 组件 `arrowDirection` 属性无效的问题。 +## 1.1.3(2022-03-21) +* 【优化】部分细节。 +## 1.1.2(2022-03-21) +* 【优化】部分细节。 +## 1.1.1(2022-03-17) +* 【优化】部分细节。 +## 1.1.0(2022-03-12) +* 【重要】`u-picker` 组件新增 `regionDiscern` 方法 智能识别省市区街道地址 +如将字符串 `浙江省杭州市西湖区希望路1333弄是啊我庭12号楼1203` 中识别为 +```json +{ + "province": { + "code": "330000", + "name": "浙江省" + }, + "city": { + "code": "330100", + "name": "杭州市" + }, + "area": { + "code": "330106", + "name": "西湖区" + }, + "address": "龙井路1号", + "formatted_address": "浙江省杭州市西湖区龙井路1号" +} +``` +而组件的 `addressDiscern` 方法还可以识别收货信息,如 `张三 13888888888 上海市嘉定区希望路1333弄是啊我庭12号楼1203` 中识别姓名、手机号、地址(支持多种格式) +## 1.0.13(2022-03-12) +* 【优化】部分细节。 +## 1.0.12(2022-03-09) +* 【修复】`u-radio-group` 在 vue3 模式下,设置默认值可能会无效的问题。 +## 1.0.11(2022-03-07) +* 【优化】部分细节。 +## 1.0.10(2022-03-05) +* 【修复】`u-radio` 中的值相等的判断 == 改为 === +* 【优化】部分注释的错别字。 +## 1.0.9(2022-03-03) +* 【修复】`u-parse` 在 vue3模式下编译到app无法正常显示的问题。 +## 1.0.8(2022-02-26) +* 【优化】`u-form` 组件新增2个属性 `inputAlign` 和 `clearable` 用于统一设置表单内所有 `u-input` 组件的对应属性默认值 +* 【优化】更新城市数据源信息 +## 1.0.7(2022-02-25) +* 【重要】`u-picker` 组件新增 `addressDiscern` 方法 智能识别收货信息 + +如在 `张三 13888888888 上海市嘉定区希望路1333弄是啊我庭12号楼1203` 中识别姓名、手机号、地址(支持多种格式) +即使这样的字符串也能识别 `!!!!~~~$张三~~~上海市嘉定区希望路1333弄是啊我庭12号楼1203【【【【13888888888】` +## 1.0.6(2022-02-24) +* 【优化】`u-form-item` 组件的 `prop` 属性支持 a.b 形式 +## 1.0.5(2022-01-11) +* 【修复】`u-sticky` 组件 在微信小程序中无法正常吸顶的问题 +## 1.0.4(2021-12-31) +* 【优化】`u-dropdown-item` 组件 0和"" 无法区分的问题。 +* 【修复】`u-modal` 在Vue3版本中使用了mask-close-able属性无效的问题 +## 1.0.3(2021-12-20) +【优化】u-icon在微信小程序下可能会显示null字符串的问题 +## 1.0.2(2021-12-09) +* 1、【优化】`u-button` 组件新增 `timerId` 属性 +* 之前的效果是:所有按钮一定时间内只能点击1次(`共用计算时间`)导致点击按钮A后无法马上点击按钮B +* 优化的效果是:每个按钮一定时间内只能点击1次(`分开计算时间`)且支持设置相同的 timerId 来达到指定按钮 `共用计算时间` +## 1.0.1(2021-11-22) +* 修复 u-parse 组件在微信小程序上的显示问题。 +## 1.0.0(2021-11-18) +uView Vue3.0 横空出世,继承uView1.0意志,再战江湖,风云再起!by vk 2021-11-18 diff --git a/uni_modules/vk-uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/vk-uview-ui/components/u-action-sheet/u-action-sheet.vue new file mode 100644 index 0000000..c5261a1 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-action-sheet/u-action-sheet.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.vue b/uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.vue new file mode 100644 index 0000000..48b3d85 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue b/uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue new file mode 100644 index 0000000..a48dd54 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js b/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js new file mode 100644 index 0000000..6dac900 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-avatar-cropper/weCropper.js @@ -0,0 +1,1256 @@ +/** + * we-cropper v1.3.9 + * (c) 2020 dlhandsome + * @license MIT + */ +'use strict'; + +var device = void 0; +var TOUCH_STATE = ['touchstarted', 'touchmoved', 'touchended']; + +function firstLetterUpper(str) { + return str.charAt(0).toUpperCase() + str.slice(1) +} + +function setTouchState(instance) { + var arg = [], + len = arguments.length - 1; + while (len-- > 0) arg[len] = arguments[len + 1]; + + TOUCH_STATE.forEach(function(key, i) { + if (arg[i] !== undefined) { + instance[key] = arg[i]; + } + }); +} + +function validator(instance, o) { + Object.defineProperties(instance, o); +} + +function getDevice() { + if (!device) { + device = uni.getSystemInfoSync(); + } + return device +} + +var tmp = {}; + +var ref = getDevice(); +var pixelRatio = ref.pixelRatio; + +var DEFAULT = { + id: { + default: 'cropper', + get: function get() { + return tmp.id + }, + set: function set(value) { + if (typeof(value) !== 'string') { + console.error(("id:" + value + " is invalid")); + } + tmp.id = value; + } + }, + width: { + default: 750, + get: function get() { + return tmp.width + }, + set: function set(value) { + if (typeof(value) !== 'number') { + console.error(("width:" + value + " is invalid")); + } + tmp.width = value; + } + }, + height: { + default: 750, + get: function get() { + return tmp.height + }, + set: function set(value) { + if (typeof(value) !== 'number') { + console.error(("height:" + value + " is invalid")); + } + tmp.height = value; + } + }, + pixelRatio: { + default: pixelRatio, + get: function get() { + return tmp.pixelRatio + }, + set: function set(value) { + if (typeof(value) !== 'number') { + console.error(("pixelRatio:" + value + " is invalid")); + } + tmp.pixelRatio = value; + } + }, + scale: { + default: 2.5, + get: function get() { + return tmp.scale + }, + set: function set(value) { + if (typeof(value) !== 'number') { + console.error(("scale:" + value + " is invalid")); + } + tmp.scale = value; + } + }, + zoom: { + default: 5, + get: function get() { + return tmp.zoom + }, + set: function set(value) { + if (typeof(value) !== 'number') { + console.error(("zoom:" + value + " is invalid")); + } else if (value < 0 || value > 10) { + console.error("zoom should be ranged in 0 ~ 10"); + } + tmp.zoom = value; + } + }, + src: { + default: '', + get: function get() { + return tmp.src + }, + set: function set(value) { + if (typeof(value) !== 'string') { + console.error(("src:" + value + " is invalid")); + } + tmp.src = value; + } + }, + cut: { + default: {}, + get: function get() { + return tmp.cut + }, + set: function set(value) { + if (typeof(value) !== 'object') { + console.error(("cut:" + value + " is invalid")); + } + tmp.cut = value; + } + }, + boundStyle: { + default: {}, + get: function get() { + return tmp.boundStyle + }, + set: function set(value) { + if (typeof(value) !== 'object') { + console.error(("boundStyle:" + value + " is invalid")); + } + tmp.boundStyle = value; + } + }, + onReady: { + default: null, + get: function get() { + return tmp.ready + }, + set: function set(value) { + tmp.ready = value; + } + }, + onBeforeImageLoad: { + default: null, + get: function get() { + return tmp.beforeImageLoad + }, + set: function set(value) { + tmp.beforeImageLoad = value; + } + }, + onImageLoad: { + default: null, + get: function get() { + return tmp.imageLoad + }, + set: function set(value) { + tmp.imageLoad = value; + } + }, + onBeforeDraw: { + default: null, + get: function get() { + return tmp.beforeDraw + }, + set: function set(value) { + tmp.beforeDraw = value; + } + } +}; + +var ref$1 = getDevice(); +var windowWidth = ref$1.windowWidth; + +function prepare() { + var self = this; + + // v1.4.0 版本中将不再自动绑定we-cropper实例 + self.attachPage = function() { + var pages = getCurrentPages(); + // 获取到当前page上下文 + var pageContext = pages[pages.length - 1]; + // 把this依附在Page上下文的wecropper属性上,便于在page钩子函数中访问 + Object.defineProperty(pageContext, 'wecropper', { + get: function get() { + console.warn( + 'Instance will not be automatically bound to the page after v1.4.0\n\n' + + 'Please use a custom instance name instead\n\n' + + 'Example: \n' + + 'this.mycropper = new WeCropper(options)\n\n' + + '// ...\n' + + 'this.mycropper.getCropperImage()' + ); + return self + }, + configurable: true + }); + }; + + self.createCtx = function() { + var id = self.id; + var targetId = self.targetId; + + if (id) { + self.ctx = self.ctx || uni.createCanvasContext(id); + self.targetCtx = self.targetCtx || uni.createCanvasContext(targetId); + } else { + console.error("constructor: create canvas context failed, 'id' must be valuable"); + } + }; + + self.deviceRadio = windowWidth / 750; +} + +var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== + 'undefined' ? self : {}; + + + + + +function createCommonjsModule(fn, module) { + return module = { + exports: {} + }, fn(module, module.exports), module.exports; +} + +var tools = createCommonjsModule(function(module, exports) { + /** + * String type check + */ + exports.isStr = function(v) { + return typeof v === 'string'; + }; + /** + * Number type check + */ + exports.isNum = function(v) { + return typeof v === 'number'; + }; + /** + * Array type check + */ + exports.isArr = Array.isArray; + /** + * undefined type check + */ + exports.isUndef = function(v) { + return v === undefined; + }; + + exports.isTrue = function(v) { + return v === true; + }; + + exports.isFalse = function(v) { + return v === false; + }; + /** + * Function type check + */ + exports.isFunc = function(v) { + return typeof v === 'function'; + }; + /** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + */ + exports.isObj = exports.isObject = function(obj) { + return obj !== null && typeof obj === 'object' + }; + + /** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ + var _toString = Object.prototype.toString; + exports.isPlainObject = function(obj) { + return _toString.call(obj) === '[object Object]' + }; + + /** + * Check whether the object has the property. + */ + var hasOwnProperty = Object.prototype.hasOwnProperty; + exports.hasOwn = function(obj, key) { + return hasOwnProperty.call(obj, key) + }; + + /** + * Perform no operation. + * Stubbing args to make Flow happy without leaving useless transpiled code + * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/) + */ + exports.noop = function(a, b, c) {}; + + /** + * Check if val is a valid array index. + */ + exports.isValidArrayIndex = function(val) { + var n = parseFloat(String(val)); + return n >= 0 && Math.floor(n) === n && isFinite(val) + }; +}); + +var tools_7 = tools.isFunc; +var tools_10 = tools.isPlainObject; + +var EVENT_TYPE = ['ready', 'beforeImageLoad', 'beforeDraw', 'imageLoad']; + +function observer() { + var self = this; + + self.on = function(event, fn) { + if (EVENT_TYPE.indexOf(event) > -1) { + if (tools_7(fn)) { + event === 'ready' ? + fn(self) : + self[("on" + (firstLetterUpper(event)))] = fn; + } + } else { + console.error(("event: " + event + " is invalid")); + } + return self + }; +} + +function wxPromise(fn) { + return function(obj) { + var args = [], + len = arguments.length - 1; + while (len-- > 0) args[len] = arguments[len + 1]; + + if (obj === void 0) obj = {}; + return new Promise(function(resolve, reject) { + obj.success = function(res) { + resolve(res); + }; + obj.fail = function(err) { + reject(err); + }; + fn.apply(void 0, [obj].concat(args)); + }) + } +} + +function draw(ctx, reserve) { + if (reserve === void 0) reserve = false; + + return new Promise(function(resolve) { + ctx.draw(reserve, resolve); + }) +} + +var getImageInfo = wxPromise(uni.getImageInfo); + +var canvasToTempFilePath = wxPromise(uni.canvasToTempFilePath); + +var base64 = createCommonjsModule(function(module, exports) { + /*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */ + (function(root) { + + // Detect free variables `exports`. + var freeExports = 'object' == 'object' && exports; + + // Detect free variable `module`. + var freeModule = 'object' == 'object' && module && + module.exports == freeExports && module; + + // Detect free variable `global`, from Node.js or Browserified code, and use + // it as `root`. + var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal; + if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { + root = freeGlobal; + } + + /*--------------------------------------------------------------------------*/ + + var InvalidCharacterError = function(message) { + this.message = message; + }; + InvalidCharacterError.prototype = new Error; + InvalidCharacterError.prototype.name = 'InvalidCharacterError'; + + var error = function(message) { + // Note: the error messages used throughout this file match those used by + // the native `atob`/`btoa` implementation in Chromium. + throw new InvalidCharacterError(message); + }; + + var TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + // http://whatwg.org/html/common-microsyntaxes.html#space-character + var REGEX_SPACE_CHARACTERS = /[\t\n\f\r ]/g; + + // `decode` is designed to be fully compatible with `atob` as described in the + // HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob + // The optimized base64-decoding algorithm used is based on @atk’s excellent + // implementation. https://gist.github.com/atk/1020396 + var decode = function(input) { + input = String(input) + .replace(REGEX_SPACE_CHARACTERS, ''); + var length = input.length; + if (length % 4 == 0) { + input = input.replace(/==?$/, ''); + length = input.length; + } + if ( + length % 4 == 1 || + // http://whatwg.org/C#alphanumeric-ascii-characters + /[^+a-zA-Z0-9/]/.test(input) + ) { + error( + 'Invalid character: the string to be decoded is not correctly encoded.' + ); + } + var bitCounter = 0; + var bitStorage; + var buffer; + var output = ''; + var position = -1; + while (++position < length) { + buffer = TABLE.indexOf(input.charAt(position)); + bitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer; + // Unless this is the first of a group of 4 characters… + if (bitCounter++ % 4) { + // …convert the first 8 bits to a single ASCII character. + output += String.fromCharCode( + 0xFF & bitStorage >> (-2 * bitCounter & 6) + ); + } + } + return output; + }; + + // `encode` is designed to be fully compatible with `btoa` as described in the + // HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa + var encode = function(input) { + input = String(input); + if (/[^\0-\xFF]/.test(input)) { + // Note: no need to special-case astral symbols here, as surrogates are + // matched, and the input is supposed to only contain ASCII anyway. + error( + 'The string to be encoded contains characters outside of the ' + + 'Latin1 range.' + ); + } + var padding = input.length % 3; + var output = ''; + var position = -1; + var a; + var b; + var c; + var buffer; + // Make sure any padding is handled outside of the loop. + var length = input.length - padding; + + while (++position < length) { + // Read three bytes, i.e. 24 bits. + a = input.charCodeAt(position) << 16; + b = input.charCodeAt(++position) << 8; + c = input.charCodeAt(++position); + buffer = a + b + c; + // Turn the 24 bits into four chunks of 6 bits each, and append the + // matching character for each of them to the output. + output += ( + TABLE.charAt(buffer >> 18 & 0x3F) + + TABLE.charAt(buffer >> 12 & 0x3F) + + TABLE.charAt(buffer >> 6 & 0x3F) + + TABLE.charAt(buffer & 0x3F) + ); + } + + if (padding == 2) { + a = input.charCodeAt(position) << 8; + b = input.charCodeAt(++position); + buffer = a + b; + output += ( + TABLE.charAt(buffer >> 10) + + TABLE.charAt((buffer >> 4) & 0x3F) + + TABLE.charAt((buffer << 2) & 0x3F) + + '=' + ); + } else if (padding == 1) { + buffer = input.charCodeAt(position); + output += ( + TABLE.charAt(buffer >> 2) + + TABLE.charAt((buffer << 4) & 0x3F) + + '==' + ); + } + + return output; + }; + + var base64 = { + 'encode': encode, + 'decode': decode, + 'version': '0.1.0' + }; + + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof undefined == 'function' && + typeof undefined.amd == 'object' && + undefined.amd + ) { + undefined(function() { + return base64; + }); + } else if (freeExports && !freeExports.nodeType) { + if (freeModule) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = base64; + } else { // in Narwhal or RingoJS v0.7.0- + for (var key in base64) { + base64.hasOwnProperty(key) && (freeExports[key] = base64[key]); + } + } + } else { // in Rhino or a web browser + root.base64 = base64; + } + + }(commonjsGlobal)); +}); + +function makeURI(strData, type) { + return 'data:' + type + ';base64,' + strData +} + +function fixType(type) { + type = type.toLowerCase().replace(/jpg/i, 'jpeg'); + var r = type.match(/png|jpeg|bmp|gif/)[0]; + return 'image/' + r +} + +function encodeData(data) { + var str = ''; + if (typeof data === 'string') { + str = data; + } else { + for (var i = 0; i < data.length; i++) { + str += String.fromCharCode(data[i]); + } + } + return base64.encode(str) +} + +/** + * 获取图像区域隐含的像素数据 + * @param canvasId canvas标识 + * @param x 将要被提取的图像数据矩形区域的左上角 x 坐标 + * @param y 将要被提取的图像数据矩形区域的左上角 y 坐标 + * @param width 将要被提取的图像数据矩形区域的宽度 + * @param height 将要被提取的图像数据矩形区域的高度 + * @param done 完成回调 + */ +function getImageData(canvasId, x, y, width, height, done) { + uni.canvasGetImageData({ + canvasId: canvasId, + x: x, + y: y, + width: width, + height: height, + success: function success(res) { + done(res, null); + }, + fail: function fail(res) { + done(null, res); + } + }); +} + +/** + * 生成bmp格式图片 + * 按照规则生成图片响应头和响应体 + * @param oData 用来描述 canvas 区域隐含的像素数据 { data, width, height } = oData + * @returns {*} base64字符串 + */ +function genBitmapImage(oData) { + // + // BITMAPFILEHEADER: http://msdn.microsoft.com/en-us/library/windows/desktop/dd183374(v=vs.85).aspx + // BITMAPINFOHEADER: http://msdn.microsoft.com/en-us/library/dd183376.aspx + // + var biWidth = oData.width; + var biHeight = oData.height; + var biSizeImage = biWidth * biHeight * 3; + var bfSize = biSizeImage + 54; // total header size = 54 bytes + + // + // typedef struct tagBITMAPFILEHEADER { + // WORD bfType; + // DWORD bfSize; + // WORD bfReserved1; + // WORD bfReserved2; + // DWORD bfOffBits; + // } BITMAPFILEHEADER; + // + var BITMAPFILEHEADER = [ + // WORD bfType -- The file type signature; must be "BM" + 0x42, 0x4D, + // DWORD bfSize -- The size, in bytes, of the bitmap file + bfSize & 0xff, bfSize >> 8 & 0xff, bfSize >> 16 & 0xff, bfSize >> 24 & 0xff, + // WORD bfReserved1 -- Reserved; must be zero + 0, 0, + // WORD bfReserved2 -- Reserved; must be zero + 0, 0, + // DWORD bfOffBits -- The offset, in bytes, from the beginning of the BITMAPFILEHEADER structure to the bitmap bits. + 54, 0, 0, 0 + ]; + + // + // typedef struct tagBITMAPINFOHEADER { + // DWORD biSize; + // LONG biWidth; + // LONG biHeight; + // WORD biPlanes; + // WORD biBitCount; + // DWORD biCompression; + // DWORD biSizeImage; + // LONG biXPelsPerMeter; + // LONG biYPelsPerMeter; + // DWORD biClrUsed; + // DWORD biClrImportant; + // } BITMAPINFOHEADER, *PBITMAPINFOHEADER; + // + var BITMAPINFOHEADER = [ + // DWORD biSize -- The number of bytes required by the structure + 40, 0, 0, 0, + // LONG biWidth -- The width of the bitmap, in pixels + biWidth & 0xff, biWidth >> 8 & 0xff, biWidth >> 16 & 0xff, biWidth >> 24 & 0xff, + // LONG biHeight -- The height of the bitmap, in pixels + biHeight & 0xff, biHeight >> 8 & 0xff, biHeight >> 16 & 0xff, biHeight >> 24 & 0xff, + // WORD biPlanes -- The number of planes for the target device. This value must be set to 1 + 1, 0, + // WORD biBitCount -- The number of bits-per-pixel, 24 bits-per-pixel -- the bitmap + // has a maximum of 2^24 colors (16777216, Truecolor) + 24, 0, + // DWORD biCompression -- The type of compression, BI_RGB (code 0) -- uncompressed + 0, 0, 0, 0, + // DWORD biSizeImage -- The size, in bytes, of the image. This may be set to zero for BI_RGB bitmaps + biSizeImage & 0xff, biSizeImage >> 8 & 0xff, biSizeImage >> 16 & 0xff, biSizeImage >> 24 & 0xff, + // LONG biXPelsPerMeter, unused + 0, 0, 0, 0, + // LONG biYPelsPerMeter, unused + 0, 0, 0, 0, + // DWORD biClrUsed, the number of color indexes of palette, unused + 0, 0, 0, 0, + // DWORD biClrImportant, unused + 0, 0, 0, 0 + ]; + + var iPadding = (4 - ((biWidth * 3) % 4)) % 4; + + var aImgData = oData.data; + + var strPixelData = ''; + var biWidth4 = biWidth << 2; + var y = biHeight; + var fromCharCode = String.fromCharCode; + + do { + var iOffsetY = biWidth4 * (y - 1); + var strPixelRow = ''; + for (var x = 0; x < biWidth; x++) { + var iOffsetX = x << 2; + strPixelRow += fromCharCode(aImgData[iOffsetY + iOffsetX + 2]) + + fromCharCode(aImgData[iOffsetY + iOffsetX + 1]) + + fromCharCode(aImgData[iOffsetY + iOffsetX]); + } + + for (var c = 0; c < iPadding; c++) { + strPixelRow += String.fromCharCode(0); + } + + strPixelData += strPixelRow; + } while (--y) + + var strEncoded = encodeData(BITMAPFILEHEADER.concat(BITMAPINFOHEADER)) + encodeData(strPixelData); + + return strEncoded +} + +/** + * 转换为图片base64 + * @param canvasId canvas标识 + * @param x 将要被提取的图像数据矩形区域的左上角 x 坐标 + * @param y 将要被提取的图像数据矩形区域的左上角 y 坐标 + * @param width 将要被提取的图像数据矩形区域的宽度 + * @param height 将要被提取的图像数据矩形区域的高度 + * @param type 转换图片类型 + * @param done 完成回调 + */ +function convertToImage(canvasId, x, y, width, height, type, done) { + if (done === void 0) done = function() {}; + + if (type === undefined) { + type = 'png'; + } + type = fixType(type); + if (/bmp/.test(type)) { + getImageData(canvasId, x, y, width, height, function(data, err) { + var strData = genBitmapImage(data); + tools_7(done) && done(makeURI(strData, 'image/' + type), err); + }); + } else { + console.error('暂不支持生成\'' + type + '\'类型的base64图片'); + } +} + +var CanvasToBase64 = { + convertToImage: convertToImage, + // convertToPNG: function (width, height, done) { + // return convertToImage(width, height, 'png', done) + // }, + // convertToJPEG: function (width, height, done) { + // return convertToImage(width, height, 'jpeg', done) + // }, + // convertToGIF: function (width, height, done) { + // return convertToImage(width, height, 'gif', done) + // }, + convertToBMP: function(ref, done) { + if (ref === void 0) ref = {}; + var canvasId = ref.canvasId; + var x = ref.x; + var y = ref.y; + var width = ref.width; + var height = ref.height; + if (done === void 0) done = function() {}; + + return convertToImage(canvasId, x, y, width, height, 'bmp', done) + } +}; + +function methods() { + var self = this; + + var boundWidth = self.width; // 裁剪框默认宽度,即整个画布宽度 + var boundHeight = self.height; // 裁剪框默认高度,即整个画布高度 + + var id = self.id; + var targetId = self.targetId; + var pixelRatio = self.pixelRatio; + + var ref = self.cut; + var x = ref.x; + if (x === void 0) x = 0; + var y = ref.y; + if (y === void 0) y = 0; + var width = ref.width; + if (width === void 0) width = boundWidth; + var height = ref.height; + if (height === void 0) height = boundHeight; + + self.updateCanvas = function(done) { + if (self.croperTarget) { + // 画布绘制图片 + self.ctx.drawImage( + self.croperTarget, + self.imgLeft, + self.imgTop, + self.scaleWidth, + self.scaleHeight + ); + } + tools_7(self.onBeforeDraw) && self.onBeforeDraw(self.ctx, self); + + self.setBoundStyle(self.boundStyle); // 设置边界样式 + + self.ctx.draw(false, done); + return self + }; + + self.pushOrigin = self.pushOrign = function(src) { + self.src = src; + + tools_7(self.onBeforeImageLoad) && self.onBeforeImageLoad(self.ctx, self); + + return getImageInfo({ + src: src + }) + .then(function(res) { + var innerAspectRadio = res.width / res.height; + var customAspectRadio = width / height; + + self.croperTarget = res.path; + + if (innerAspectRadio < customAspectRadio) { + self.rectX = x; + self.baseWidth = width; + self.baseHeight = width / innerAspectRadio; + self.rectY = y - Math.abs((height - self.baseHeight) / 2); + } else { + self.rectY = y; + self.baseWidth = height * innerAspectRadio; + self.baseHeight = height; + self.rectX = x - Math.abs((width - self.baseWidth) / 2); + } + + self.imgLeft = self.rectX; + self.imgTop = self.rectY; + self.scaleWidth = self.baseWidth; + self.scaleHeight = self.baseHeight; + + self.update(); + + return new Promise(function(resolve) { + self.updateCanvas(resolve); + }) + }) + .then(function() { + tools_7(self.onImageLoad) && self.onImageLoad(self.ctx, self); + }) + }; + + self.removeImage = function() { + self.src = ''; + self.croperTarget = ''; + return draw(self.ctx) + }; + + self.getCropperBase64 = function(done) { + if (done === void 0) done = function() {}; + + CanvasToBase64.convertToBMP({ + canvasId: id, + x: x, + y: y, + width: width, + height: height + }, done); + }; + + self.getCropperImage = function(opt, fn) { + var customOptions = opt; + + var canvasOptions = { + canvasId: id, + x: x, + y: y, + width: width, + height: height + }; + + var task = function() { + return Promise.resolve(); + }; + + if ( + tools_10(customOptions) && + customOptions.original + ) { + // original mode + task = function() { + self.targetCtx.drawImage( + self.croperTarget, + self.imgLeft * pixelRatio, + self.imgTop * pixelRatio, + self.scaleWidth * pixelRatio, + self.scaleHeight * pixelRatio + ); + + canvasOptions = { + canvasId: targetId, + x: x * pixelRatio, + y: y * pixelRatio, + width: width * pixelRatio, + height: height * pixelRatio + }; + + return draw(self.targetCtx) + }; + } + + return task() + .then(function() { + if (tools_10(customOptions)) { + canvasOptions = Object.assign({}, canvasOptions, customOptions); + } + + if (tools_7(customOptions)) { + fn = customOptions; + } + + var arg = canvasOptions.componentContext ? [canvasOptions, canvasOptions.componentContext] : [canvasOptions]; + + return canvasToTempFilePath.apply(null, arg) + }) + .then(function(res) { + var tempFilePath = res.tempFilePath; + + return tools_7(fn) ? + fn.call(self, tempFilePath, null) : + tempFilePath + }) + .catch(function(err) { + if (tools_7(fn)) { + fn.call(self, null, err); + } else { + throw err + } + }) + }; +} + +/** + * 获取最新缩放值 + * @param oldScale 上一次触摸结束后的缩放值 + * @param oldDistance 上一次触摸结束后的双指距离 + * @param zoom 缩放系数 + * @param touch0 第一指touch对象 + * @param touch1 第二指touch对象 + * @returns {*} + */ +var getNewScale = function(oldScale, oldDistance, zoom, touch0, touch1) { + var xMove, yMove, newDistance; + // 计算二指最新距离 + xMove = Math.round(touch1.x - touch0.x); + yMove = Math.round(touch1.y - touch0.y); + newDistance = Math.round(Math.sqrt(xMove * xMove + yMove * yMove)); + + return oldScale + 0.001 * zoom * (newDistance - oldDistance) +}; + +function update() { + var self = this; + + if (!self.src) { + return + } + + self.__oneTouchStart = function(touch) { + self.touchX0 = Math.round(touch.x); + self.touchY0 = Math.round(touch.y); + }; + + self.__oneTouchMove = function(touch) { + var xMove, yMove; + // 计算单指移动的距离 + if (self.touchended) { + return self.updateCanvas() + } + xMove = Math.round(touch.x - self.touchX0); + yMove = Math.round(touch.y - self.touchY0); + + var imgLeft = Math.round(self.rectX + xMove); + var imgTop = Math.round(self.rectY + yMove); + + self.outsideBound(imgLeft, imgTop); + + self.updateCanvas(); + }; + + self.__twoTouchStart = function(touch0, touch1) { + var xMove, yMove, oldDistance; + + self.touchX1 = Math.round(self.rectX + self.scaleWidth / 2); + self.touchY1 = Math.round(self.rectY + self.scaleHeight / 2); + + // 计算两指距离 + xMove = Math.round(touch1.x - touch0.x); + yMove = Math.round(touch1.y - touch0.y); + oldDistance = Math.round(Math.sqrt(xMove * xMove + yMove * yMove)); + + self.oldDistance = oldDistance; + }; + + self.__twoTouchMove = function(touch0, touch1) { + var oldScale = self.oldScale; + var oldDistance = self.oldDistance; + var scale = self.scale; + var zoom = self.zoom; + + self.newScale = getNewScale(oldScale, oldDistance, zoom, touch0, touch1); + + // 设定缩放范围 + self.newScale <= 1 && (self.newScale = 1); + self.newScale >= scale && (self.newScale = scale); + + self.scaleWidth = Math.round(self.newScale * self.baseWidth); + self.scaleHeight = Math.round(self.newScale * self.baseHeight); + var imgLeft = Math.round(self.touchX1 - self.scaleWidth / 2); + var imgTop = Math.round(self.touchY1 - self.scaleHeight / 2); + + self.outsideBound(imgLeft, imgTop); + + self.updateCanvas(); + }; + + self.__xtouchEnd = function() { + self.oldScale = self.newScale; + self.rectX = self.imgLeft; + self.rectY = self.imgTop; + }; +} + +var handle = { + // 图片手势初始监测 + touchStart: function touchStart(e) { + var self = this; + var ref = e.touches; + var touch0 = ref[0]; + var touch1 = ref[1]; + + if (!self.src) { + return + } + + setTouchState(self, true, null, null); + + // 计算第一个触摸点的位置,并参照改点进行缩放 + self.__oneTouchStart(touch0); + + // 两指手势触发 + if (e.touches.length >= 2) { + self.__twoTouchStart(touch0, touch1); + } + }, + + // 图片手势动态缩放 + touchMove: function touchMove(e) { + var self = this; + var ref = e.touches; + var touch0 = ref[0]; + var touch1 = ref[1]; + + if (!self.src) { + return + } + + setTouchState(self, null, true); + + // 单指手势时触发 + if (e.touches.length === 1) { + self.__oneTouchMove(touch0); + } + // 两指手势触发 + if (e.touches.length >= 2) { + self.__twoTouchMove(touch0, touch1); + } + }, + + touchEnd: function touchEnd(e) { + var self = this; + + if (!self.src) { + return + } + + setTouchState(self, false, false, true); + self.__xtouchEnd(); + } +}; + +function cut() { + var self = this; + var boundWidth = self.width; // 裁剪框默认宽度,即整个画布宽度 + var boundHeight = self.height; + // 裁剪框默认高度,即整个画布高度 + var ref = self.cut; + var x = ref.x; + if (x === void 0) x = 0; + var y = ref.y; + if (y === void 0) y = 0; + var width = ref.width; + if (width === void 0) width = boundWidth; + var height = ref.height; + if (height === void 0) height = boundHeight; + + /** + * 设置边界 + * @param imgLeft 图片左上角横坐标值 + * @param imgTop 图片左上角纵坐标值 + */ + self.outsideBound = function(imgLeft, imgTop) { + self.imgLeft = imgLeft >= x ? + x : + self.scaleWidth + imgLeft - x <= width ? + x + width - self.scaleWidth : + imgLeft; + + self.imgTop = imgTop >= y ? + y : + self.scaleHeight + imgTop - y <= height ? + y + height - self.scaleHeight : + imgTop; + }; + + /** + * 设置边界样式 + * @param color 边界颜色 + */ + self.setBoundStyle = function(ref) { + if (ref === void 0) ref = {}; + var color = ref.color; + if (color === void 0) color = '#04b00f'; + var mask = ref.mask; + if (mask === void 0) mask = 'rgba(0, 0, 0, 0.3)'; + var lineWidth = ref.lineWidth; + if (lineWidth === void 0) lineWidth = 1; + + var half = lineWidth / 2; + var boundOption = [{ + start: { + x: x - half, + y: y + 10 - half + }, + step1: { + x: x - half, + y: y - half + }, + step2: { + x: x + 10 - half, + y: y - half + } + }, + { + start: { + x: x - half, + y: y + height - 10 + half + }, + step1: { + x: x - half, + y: y + height + half + }, + step2: { + x: x + 10 - half, + y: y + height + half + } + }, + { + start: { + x: x + width - 10 + half, + y: y - half + }, + step1: { + x: x + width + half, + y: y - half + }, + step2: { + x: x + width + half, + y: y + 10 - half + } + }, + { + start: { + x: x + width + half, + y: y + height - 10 + half + }, + step1: { + x: x + width + half, + y: y + height + half + }, + step2: { + x: x + width - 10 + half, + y: y + height + half + } + } + ]; + + // 绘制半透明层 + self.ctx.beginPath(); + self.ctx.setFillStyle(mask); + self.ctx.fillRect(0, 0, x, boundHeight); + self.ctx.fillRect(x, 0, width, y); + self.ctx.fillRect(x, y + height, width, boundHeight - y - height); + self.ctx.fillRect(x + width, 0, boundWidth - x - width, boundHeight); + self.ctx.fill(); + + boundOption.forEach(function(op) { + self.ctx.beginPath(); + self.ctx.setStrokeStyle(color); + self.ctx.setLineWidth(lineWidth); + self.ctx.moveTo(op.start.x, op.start.y); + self.ctx.lineTo(op.step1.x, op.step1.y); + self.ctx.lineTo(op.step2.x, op.step2.y); + self.ctx.stroke(); + }); + }; +} + +var version = "1.3.9"; + +var WeCropper = function WeCropper(params) { + var self = this; + var _default = {}; + + validator(self, DEFAULT); + + Object.keys(DEFAULT).forEach(function(key) { + _default[key] = DEFAULT[key].default; + }); + Object.assign(self, _default, params); + + self.prepare(); + self.attachPage(); + self.createCtx(); + self.observer(); + self.cutt(); + self.methods(); + self.init(); + self.update(); + + return self +}; + +WeCropper.prototype.init = function init() { + var self = this; + var src = self.src; + + self.version = version; + + typeof self.onReady === 'function' && self.onReady(self.ctx, self); + + if (src) { + self.pushOrign(src); + } else { + self.updateCanvas(); + } + setTouchState(self, false, false, false); + + self.oldScale = 1; + self.newScale = 1; + + return self +}; + +Object.assign(WeCropper.prototype, handle); + +WeCropper.prototype.prepare = prepare; +WeCropper.prototype.observer = observer; +WeCropper.prototype.methods = methods; +WeCropper.prototype.cutt = cut; +WeCropper.prototype.update = update; + +export default WeCropper; diff --git a/uni_modules/vk-uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/vk-uview-ui/components/u-avatar/u-avatar.vue new file mode 100644 index 0000000..ab21c46 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-avatar/u-avatar.vue @@ -0,0 +1,263 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/vk-uview-ui/components/u-back-top/u-back-top.vue new file mode 100644 index 0000000..7970fc7 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-back-top/u-back-top.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-badge/u-badge.vue b/uni_modules/vk-uview-ui/components/u-badge/u-badge.vue new file mode 100644 index 0000000..fc99562 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-badge/u-badge.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-button/u-button.vue b/uni_modules/vk-uview-ui/components/u-button/u-button.vue new file mode 100644 index 0000000..2647afc --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-button/u-button.vue @@ -0,0 +1,602 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-calendar/u-calendar.vue b/uni_modules/vk-uview-ui/components/u-calendar/u-calendar.vue new file mode 100644 index 0000000..fe9f2dc --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-calendar/u-calendar.vue @@ -0,0 +1,666 @@ + + + + diff --git a/uni_modules/vk-uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/uni_modules/vk-uview-ui/components/u-car-keyboard/u-car-keyboard.vue new file mode 100644 index 0000000..e55db26 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-car-keyboard/u-car-keyboard.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-card/u-card.vue b/uni_modules/vk-uview-ui/components/u-card/u-card.vue new file mode 100644 index 0000000..03f9924 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-card/u-card.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-cell-group/u-cell-group.vue b/uni_modules/vk-uview-ui/components/u-cell-group/u-cell-group.vue new file mode 100644 index 0000000..3fbca72 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-cell-group/u-cell-group.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-cell-item/u-cell-item.vue b/uni_modules/vk-uview-ui/components/u-cell-item/u-cell-item.vue new file mode 100644 index 0000000..b512d80 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-cell-item/u-cell-item.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/uni_modules/vk-uview-ui/components/u-checkbox-group/u-checkbox-group.vue new file mode 100644 index 0000000..18c39e7 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-checkbox-group/u-checkbox-group.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue b/uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue new file mode 100644 index 0000000..a0498fe --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-checkbox/u-checkbox.vue @@ -0,0 +1,322 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-circle-progress/u-circle-progress.vue b/uni_modules/vk-uview-ui/components/u-circle-progress/u-circle-progress.vue new file mode 100644 index 0000000..46e7c18 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-circle-progress/u-circle-progress.vue @@ -0,0 +1,220 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-col/u-col.vue b/uni_modules/vk-uview-ui/components/u-col/u-col.vue new file mode 100644 index 0000000..fc47dfa --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-col/u-col.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-collapse-item/u-collapse-item.vue b/uni_modules/vk-uview-ui/components/u-collapse-item/u-collapse-item.vue new file mode 100644 index 0000000..963e98f --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-collapse-item/u-collapse-item.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-collapse/u-collapse.vue b/uni_modules/vk-uview-ui/components/u-collapse/u-collapse.vue new file mode 100644 index 0000000..f6e4bf0 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-collapse/u-collapse.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-column-notice/u-column-notice.vue b/uni_modules/vk-uview-ui/components/u-column-notice/u-column-notice.vue new file mode 100644 index 0000000..709ca5c --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-column-notice/u-column-notice.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-count-down/u-count-down.vue b/uni_modules/vk-uview-ui/components/u-count-down/u-count-down.vue new file mode 100644 index 0000000..0d7cc21 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-count-down/u-count-down.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-count-down/utils.js b/uni_modules/vk-uview-ui/components/u-count-down/utils.js new file mode 100644 index 0000000..8c75005 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-count-down/utils.js @@ -0,0 +1,62 @@ +// 补0,如1 -> 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/uni_modules/vk-uview-ui/components/u-count-to/u-count-to.vue b/uni_modules/vk-uview-ui/components/u-count-to/u-count-to.vue new file mode 100644 index 0000000..1825072 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-count-to/u-count-to.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-divider/u-divider.vue b/uni_modules/vk-uview-ui/components/u-divider/u-divider.vue new file mode 100644 index 0000000..6f8d7e6 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-divider/u-divider.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/uni_modules/vk-uview-ui/components/u-dropdown-item/u-dropdown-item.vue new file mode 100644 index 0000000..6ed9301 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-dropdown-item/u-dropdown-item.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-dropdown/u-dropdown.vue b/uni_modules/vk-uview-ui/components/u-dropdown/u-dropdown.vue new file mode 100644 index 0000000..b9438b4 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-dropdown/u-dropdown.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-empty/u-empty.vue b/uni_modules/vk-uview-ui/components/u-empty/u-empty.vue new file mode 100644 index 0000000..2c77b24 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-empty/u-empty.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/uni_modules/vk-uview-ui/components/u-field/u-field.vue b/uni_modules/vk-uview-ui/components/u-field/u-field.vue new file mode 100644 index 0000000..efa31e6 --- /dev/null +++ b/uni_modules/vk-uview-ui/components/u-field/u-field.vue @@ -0,0 +1,402 @@ +

    =9!F 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 literal 0 HcmV?d00001 diff --git a/static/images/banner/banner03.jpg b/static/images/banner/banner03.jpg new file mode 100644 index 0000000000000000000000000000000000000000..092a5fc234fddbcdcc6ed598c30f6e603aa9b9f5 GIT binary patch literal 38123 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 R*v*>&Z4G_(GF7{X{{tt!qJjVb literal 0 HcmV?d00001 diff --git a/static/images/banner/icon3.png b/static/images/banner/icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..ddbe0f7eafae8e08f4aeb01e6e6aa0150fe6bb79 GIT binary patch literal 25684 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 MuPRq0Yx?Ma0sgW+1poj5 literal 0 HcmV?d00001 diff --git a/static/images/banner/icon4.png b/static/images/banner/icon4.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7a396bcd82e2c7fac560df4bb63a0aea0e1af0 GIT binary patch literal 29202 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 literal 0 HcmV?d00001 diff --git a/static/images/banner/icon5.png b/static/images/banner/icon5.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5546c366f805b87a2947491047472b9ebd4d03 GIT binary patch literal 24936 zcmeI4cQl+`*YGbbdaof$^ys4-C2Eimy%Pq5(aY#jLPQWfA-ZTm5E3nVL>EM_(Q9;q zsQD&$?vmScKfbrE?_2L$X00)^&pvzabAJ0=`<(N~2vNN&kBdc#1pol9qJpeC;!_v# zzK3xI@%QD&{u_u7Oh*Mh7XZK}{_#cv5|b$a081GrBcrNn-J1HcxFr-v`R_~r@HYX<-sa2(`fBx;@c z9$2NytOL+R1Jm?GOV~(J>OdQpW*Z66MgbISyfw!Ho&tca=Y45H5`28`sz zPLKm58Q1bKfN&%rfmNOnS+W{1(R!fHf!xptq!&oibD=gAA^Gc-^U5Rp*P;P#5xP0vbA>b;aN5<0Gkj_KDJcXKQ-) z`fQ_Zi8O@#27v|UJbiL}5(BZq5{gnc4ggRd_P#$8z8ST&I6t#!v1GgXwK?O=X3K$I z;`;W~StlWLIt=p^K9QtJ zeWBVWMtuzn8+)C}^hGVtT$sdnz8Qz}M=W)s zN`veVmKe@jgZxe-ZuHLbml$%8hHmSIRI1V|w|c%)kCwgO{%n?L#gBKJHtrNN)*Tlp zc%;&Bw;a8!)3(8P0|_|{Pq)tvko4WuJ^LictKy3YCq$E2M&=sFG2LLt8 z6o$D^$(33#06;eV0b8*YI?j8Nf(E?g_tZ5F4P_F zCG^71d8q>!`H#VA`igexZmQfG!Fj~|u8B-tNn|peS)7@J zpAun~umdaZ6?hfq=Rg{{_)qbDHp}QMODln2-EnXq;Rd!Un6h5Ax$1rOB}K(m?gXVA zwEp;nHcg&kUaADk=lIVZv~=0_+3u4@cMv@TKhu8Z`)ny+Q_Dr`=AdUjw&p7>{8#t1 zeR6JTy;Ysd!yF)cHJC@ORh=hT)UEEW9;w=+W}I1Pd>U|MhWqAG(5>`G3YnT_6)ji8 zuamX#Lbr9Lhn%%hRyk~*E1Md;Ib2h6Lp!E&ALee+4}0(rmJI$WC};h9@q|i;EGu# zSfy4KR5k9}^F^ZHY}IoGbFX6$Z{>5Z{GQ#{%suiin?swuv_d@m7=lq(Z9&3jTOXs$ zmTjKHDtosc&g2qyT2)0iS!MPrX0lW=ZvH5jn<5xga>8IB{$y=6AWvO8;iT& zi590EcTn(LTSD7Ydry0~Kyk=$m1EUzNXJ%{N+$^?37phfo?Dny*yNUEH$^f_5_zNV z#-4`#7-;Qe4QnlN?aI2yK4hP1-)_H$`r|bs>LF3M=zV9n>qj?R$C}lw8U7D>O?e+y zbS$YXU$~^~3XtdAiRvVZcZ(<2uzMN$(mu_r^VtIBMpa)~|6XQNb<#xPsNKNlkK)Zf zua1?ulBn8^K8SBhecd|Hopt&+m+~^{W#ewt68Al~dwTbdYiU&8CNrlF@z}MEHyKRV zc6ytDCB&ge-76>(EfUCSUTMK~Id$|?;&lwZL%s>V=qIViqDP&lk>BcPJa@>p@1mI? zy+>L=s(nED;4O*`3N2~^YBst6S~yzu6>b~}QfVAaTs>OnSceAk9jZe!z6nc?#9q=4 zj1*FRsw19{%t|yvgb|N=Fs2B69dZtpRz8+vJf4=feOyTkyP80L=tFXYjW?g`i(07$ z+zEcbF;p&@<{Z$|>?R`Dt>dIxZ}(lzo_|g0(`$f}K4UciwZ+u7fHzxZ_}+;m~Dw zoYXc*sW-D!y+{?0Oo=;}-NS&wz@t*3RzZJ&Z_48A%OL}H0NMT8sAAR1;%c2B1g*-FY+O&=zG|={ABY$RG;8>7b^sV?-<>IW)UE{&~d!BYaV!^s_nhkTi|!8-AG)Rz{3`Y^Ruw$i`@r?C1)Q07>EbVHH@Sg_swm8o!lL3LutauE7IfjN!{4#7xW|iFMg$G zCC~=D>2D?tCOseY@Hg==gHz9*e(w*S>68B`Kge*4Av`jLmX->avUbP3J9g&fo0r5r z9lqM%Jy%^`Elr)y9^dKFJsH`;J`C%rFY?UWb>4iH_Zr;F&`Mj=?J2&Ub5htn?z36B zSvA#KOPj!YB6+5|+k0fz`tp;?fyC1NvlH%vhr7p2eQA6EARY$O)P?IRD}l`%?6@H2 z4yI5p4?9Q1F%$sAZhAOE%xs`=I#Z}6%wC*+v$~$14rVS+uOpz$qwFXHwSp;lIYTwP z?rNHO*_er#)8CZ967v8f9N0nO5IPS#TYDF3-`1w-Kk8`Vo*$ zS6P)##=#j%C%`4ZX~qNMrxOz40ttZlg+Uy2ygVR2ZXP~v5FaOq7tA991_{vp{-T$_ zLVOc*Hn#w)%ij7u96}POw}QhR!Q9;L?(SUfd|VFBmfRo_5fN@4UT$7qPDBq*7f*XQ z#Dmk`h2f`@Km5o-UCf+ej&PWRJ>3t#5K{+NxHvuik3fIEexH|}k-6EQHjb{&w!aO{+>9G)3$=sV!(9+|pntS;{Nw2Vr}^JP{;B@Afe|@T zR{m$>KgMfk_m81n;BsyV1ivHwTi8D=T{Jx%q1@_F7YA2oGpL*!Vk!*(GNmH4^J{<=LOE>EmFFneL*?EM)JUqWR`PuWF4`l~) zn1$!R_}~YFc)$XG^YKg1^F9!djyVJl`44&dweK%}%+0_S4$gKExCG1&VhQDTw6_%F z{;Tnqo_{VVu#AJPgEL}SPzgRU?tg0jM=QhyRrTlnRKi7FUYbr(PDT(UA}Gko%LV$? z%`g4_(T}Wynd^@yL(1L^>Vn9p%P)CGWc#;gUm9Zh_trlYwlImGmB-w{3}z1gYw#9A zLP8ci<~*DN!U7;p5kY=FP6)4nIj5<)sjv{g0LYY|7ct5o&p*P&U*r1W_qW!+NBng@ z7mfGFa#B_XE84rjA&BWH%1R&_xL}Bp3GoQ=^Fu6zIeDSxAWm}&elt!}L8u6)nYo3a zxj8RX5Gsrq&%c=eHL~Ab{}KIn*X9V<7Usf277#Nir+^T|jMKuDUxd>XBFM{W&SxRW z$H#|oENJ?N>tD?O#kGnv;vQlTvHhjbkJ0~UL;QoAe+i`k`;lqSbKrkuLj&sc_tw8M z{adwmggCoEf7Bvz`ag=%pXD9V_0N~sZ#4}JG5b;HCCq-53aGgl_upFo8rFF;*uN(5 zKSued|6k1ieGGRisQpFt=BKOQdi{GRE)EuOcZf4o$`bJe{a>o!PltcEIPdwN9|;7W z-yTC-*ncMn4)$(P=l@I=5V?jRjuTKsNw9Esu%m-GI@-d_AU`t7?PhQO`+ofAGfxM1 zp!=oh{haPEKK>uh)dk}A-&<`0e0=8S79ev@esf-PPC;INeohF#DGw*F5JW`Slow>d zZ(;GrYW}aSHhwS<2+Yg-$L{w3WwrfSS3d)rSwZYAq2?0Ye@yC+hW|}T`;XQ5pA-JC zChc#>iT~Y6`&n!LUhx0er~Y+=5c_d{1S2*VM4|hw1V|wE%YSM6Yq|XFulr+@uyy@y z6AD1JBmnWkTEO~38WKU)!Z zGQ@R|`_KE}zii!qZmj>4U;diW|D@M*zAl5D19Gu=iR)rM=d_o&&H=etyu@`epL5zv zT<3sXEMDTen9n)wC9ZQoE*39wUCig4_7c}QAQy|5xGv^%PJ4;#9FU8}OI#Q8Ij6nE zbq>hI;w7$&`JB^U;yMT9V(}8!#eB|bFL9j%ata6Vw3oQf0l8Sb#C0*BbJ|N> z=YU)+UgEl#&pGWSu5&;x7B6vK%;%i;64yB(7mJs;F6MJidx`5Dkc-7jTo>~>r@h2= z4#>sgC9aG4oYP+7ItS!p@e~otc8VG5~ln0f2uX z033cte69e1D-QsCF#!PZa{wTBh%s)y1ppLhin3Cg9%BJt=ea-}NWt(z$Vm1vQLje4s0 z$r_;MxXP6yju09idPybxf&{d$Z~eCyHCL%RCh-9hvvo4tn>3A0vnMu-wWJ~6k+!ns z{j`gyS{mx!*!#|jBw%(@8-&cYXwQxVLot=t3LIkb7>}r+$vxJbU7v4cU(rC@+G_1- zb{PoF5y*W&Q^3S`pXIYFY8Zb*Uw=5jh}yKkI9zn!eRZ6D%IKO9@kkqvzqg1#F7O(& zoYdo^(!zX;zz&1UhHHJOpE8wyP+r20tyo$vm7x$e<7wTMwg(QUkEbbPsI-kHs!mj{ zY~`_oz~wQ<=!Yo49VwKErH?$poR-#-4`Y;vO+q31xH(Cj3cf*lJaU;TWZOJ`h>hBu!M|f24LLvS(T|c~d|mCOnDU%#|pa z94A|rUrgtY&vyc7GR2o}Zb}ImdR0|qHiCwIKGa2Vy6d(zXM_Y5HG6NOgXGbsOSGQj zPvfz2E7g=&8{ijwqXJ2?IJ4SS14|4Z68i2cCY)xoN6AY@MtqyFMAw zONHu^rSKT?7_Zh*KT+QAkCDa7u`*RBk*C)l;>jWjcM{)Bsg--al01n*;;#d;hS9m$ z=4CU{u$9y$#_?ap`4k>aD<?5my5lP5Ha*k@RIo03st zdqTqx(87n^`tJ?0<$25v@f5!0&ACHC$x|PUq%Kfegy(W_qpX2JLG&3MYjAV$n-OM^ zNZKsNL|!zu!u`F+0Af&^Oy7DLXLrbFJoto5kIr707c0mKo=$(`^1mvB!=&no&62Ju zIXmq!tKEw9#j3G>Dx`_OR6~g1!KXQnx3^iGYWBsPzWB^fu*<(rR`YMw-j+q4D)zs^ z?$X~mmRd{KXmu|M-{|*ue1To znIR9Xp6%pE6I3m#=p47Gw5I*vZMrNM2eLOsQ{JDJ!FMjR%BtE#FGUw(TYit6}D{68jjOw*#P0-=)!`MJ< zAS{B3>nND;nhP?6)~F)HC%8wWUxAMJp6C~1BHC-If$gsXOA=*E>j8)oabmLKw1C$1 zXIiQhH#XY!xfEJk#6M$`{6tSVDBFdT`0%K#Q2~V(*rdjq?w<;c#Y}EDyfP-Wci%=J zTL_J z?g{p`rR0VxdtlFgtsr||*lIIL2TB~EFc|X0QRb6-N0TGXAOVeP4 zJ$c$|Ag*A#0L`PfqzvNKxtE+Ht>M{@?by;AlE+BoaBU<&F}aAJhNPuLuaSw!bl>on zokh3B;Ct}F(n>^m2hoNsvA_$-w`bbqX!nGk#8PEy;VCZX=8XBPiekfOgx}>`aM$T) zZ@+t#QAq9o6%_sIae9~v^&@)iPnwJY`vTWrdiA^tSs31-P+|zyvu-KsHew0L61>{J zOTgSdv-0pk5++(4o(y5wt}lwRI*hUdtSEh32FYWnoe#c4V!`~#Joc93;L@D|%i{qP zqU58D_ehU!E7GI)@2E3|^CQvUz{Wu>wj&C0X*Bk~)fk*~>+TD_mINPK zZ+BMTcU9p=+-#+NS;$2BILwCT(%<}_0Il`695+ZgpLA12(LZsC%OYC8b0={KP>uvZ z;<)8ieq}j6DCJ(uOyRg-e&^?l>N%~TIu)l6ODsGBG@jLZ6odRu4t%TKp>DORGY3g5 zP76y{FuJ-hcXzEbNR+DR6fw;?F#|n_-zA zCazT86?rR_AH5&-=B9ddTOwWiZatgadA!X(skiEp{^F+zM!QVcpilfrJOFG89n z$&$fN@<(|tDsQ|J>jcLmjL(Xj`0#b28U@fT;#%+WjSS2`#R6?+8EJnqD|f3ffvlC_ z9=00hP%uf^?D>%TM6y+?Od2<5J!_$Qxo*{d1gIMmh=xeJ*V)~=DrS@iyKi636w6lN zux91zo4JJR z`qyCuD@z`WGg!y&Hm7x1~_|-KUX z^o?x8quNg6W>iDJWcMGFzh1PiFyzleLflse*&le{r-6Q~CC&AaPy<%R?mhy$Zjwe; zv+HU0ZgiHUCuvM-a&2PF6Yz7f4EcVnHu_YhAgtJh3`iQ*()E^KN^X9qLn8G`txRnw zJ8X8Aqdyh)02U(-n&Ym^lpn~&DvP$&BoC-l{Pv`R6lT&d#kRO|he&wWaK-8!{%1qM zDilnUUQknZn)Qqk?Q4|8mo&M>8{N!p===0#_pO3MBf?F*-#X&^+iWr3(IeVcOkAr| zphTQSW+TKyDwi1;bZf*`9ozj3>qi2bo8E15Qi=rcxyQTuKFG6W^l$DAardb~BhoEK z{k9re4zQ;B7B?PM)3<2^`ycDXhbPz)qwpUFKM(6I5}J6m3>$kxp?!xLnc$(iQOBnn z_|M~dB_jJLIfU&7S@+k6KBd4tu-jV+W$UE1qbP|6{; z#HNkug(SIFJeowYQhE}iTP{*KB>p@B2naL14utZXo$>{ zJN8B)9||fI<5pS(?Wl*^L2f1E&xB$ko-35UF*>nMVW4dlKXwfAt{WG;Mzan(Go9^I z2{-YLoUB}6A+)T0+kNze_Tz#EWi+!=Lrp#?E0k{6wmvZxDd#@tJ0b8Jr->GMwu!xU zw;U5|v*&LKJbGRlJg-ha5ZPZ>7jrUxrXXVR>YI#xq9W?2^u8I^#xL!tfUCv>cT3~h7f&1oEX60!TQ-0szqE#Hu zH+6!+EUVqUPn1Km0?soiEEAB-s}^<(mG-VFA03In+db7yCEd!`vimTI2f!?SDzS{{{ z6~478rqdiA8`9IWDy79+&nKrNz7tli*WXrBu39B$#2#u!Q#0Lvt(v$NZ+u3&GY|1n z!JC^uQy3xrVy)eBtjlnRWi-f_uZ>__kj?k#nVU;15kclIN&J0h^RavLGRF@L>U&$} zUo1BSxzS# zWlY9+%O|Ozg}7D*Y?iar#TH_lR78PR7v5B!js~+oU7tb1yHD=iU*@{Pj|_FLxpFXl zFNj2PCinWMKuoRJFCjczZ-keaO|OXP4cO~@v7eZl_|sOxtl8UMN-oLSWlF}REniC} zkksOx$9jY&JR_U;Iy)XYS!|x;AQB5EA{maRfkDRgdYuEDDq785k$bHrzn?|{?Xjib zjsrUSlF7m0W_C7x_^}K|%tG1wvBGka=6&Uc#LZ{V!TiDvg(5WRM<#^Vp^~G->ZxAME zFMpi+ia)&bMu83mEJf(^j(N~}5_`=V;y&QP3333@p>=5v-(o;hRJ!&U(Df1b%pEEd z97q;U*L5)qLh&Y5|D+2=je{qzrZ`!U@V_m)+MXlcVNb6G4RP3Oa;z#O?Wy+q+Nx?; z;0p~KerGX9U1pb~g_~^5oSpwEl=W2=V~zpN5PD+31jySD?l5^ zUtQK{lQa1puVXShM1!SCT%fBvu>0NV{GuOqeUq`*%fbEra)$g_V}%o38NI<_)T9|l z-KDTGb!!4;+Cp#E4IgW5#u5#hhvkB8MMiS`cW*a|vM9SBz15_P?)!qrj5|aXij$$( z^L8}k?Y-$tP04y5YTy1A{m3c4LmL7ifztH$`SG2)5yvqxF8wkVZmcCZRyymfOPL_l zQK@ey%}Jv!H;s6yc*NPHs^@lR8VebEjoi>vLh9$?^8x(q%P>Nc_{gmTtEe2~2U$m_ zuI`bqQ-&hH&e`TLZ>>bXt9;y`KCYD@bQZMlr(@SO7NVBExF~H#RS*!}v`z%dpA%sw zA^f1H%%DKLuWwA}OHLdgkfks&&@Nhq>@=9uemrK>aI#;sL3t2ITC|Q{ol1td4PQ$^ zxA(N&k<SQ2^&M|^dl^hpey%U{B8?`I1O;qe z1>Ka;#aNMl?OljWsN+D4i+5L+x>DkMXF5fbUQyNeCiCKatnc5x)y|Crj<#Bx4<(IP zCaUG$MT)mYh(3*>MzY}}cPfhg zh^`?mk_cVbxxG0z7;@#NLoT6OZ1UrA-oa7+_;u}C-_y_NItNLx1hVO%PE#+BS9PR=58a$Fk0C#J zgjBztK;!8P7nVCsI-vpvX~{<BDK|gzhn~^jQb)?A*Vl`#Su7~uB78msDQ=GmIknH^4XAro8CC83x`q18>L4Ui z^!wlp53T1+Ui-oN=wxaKmYg_D`Y2SF$zJiDpNgkdYfj#)S6BzcC5jAI%CDK2b}~q! zH^p>u5(TtSI0}}~r&(X{B;WhyC{$xS=NW#xWNfILzNa6<`a1JxyNKp~Ijz|`P8B7? zGH-)p)g{|+5a;60g$Af%m9HuN5Hahy?-WEtGnnNCS*RFyhCnF!O4Q5O=y@{V>JB!QpZGQ(kd35sk$RPIZew`0u51Kv=P@yQYHogSjz*}e7v7Qj&Yy`ev6HLho!qw-GkGIgB(VEl~co$`1KL!}Sp zM02@Y>Ut~t*0(F}hU=)TPpX}I_3ZCQJev7>#W7udqruNQ7}=HmfpqXwuPB>(wFg_( zbt`9|7xqu9JI6JhymfPOP>f3N4ttV}Fd=7^2aVR`=#}3U^%u=-r2}ky-#!^%_nP1@ zeVK5DR*1kYJN|QkI9$@TgnS(+a-)36l`d$UMq@|~Z?OCrfW&HZT<}pFk2J#~xW#U8 z&YrsKPCtZ&X4Hp(x7Z7LJb1yH>z_L83^hZ5#Z){*U@(h5l>O2{N;qf8Nf zpe*`jH$Uipa(5P5Qif_PA*a!S{wOChWAJd4{MIKJP~H${#8Jr|RgGM;qN5tSG=N9` z$t`ZYn@b(cC~L9G6*u;P=0s)u^y%W%-RUnm#?<$6Z3{;N@1PV>Kb-ABo$dq11tUA3 z1nxQBFa`UXqGPoqrLKDyTjOJQ7YZ%Se3&zlC;lwlL30)sMxzMpc3xd?djF1eiKI7{ z#tYfjzl%G4jovOFFJvX2SWeT(ivGKzuO8k&g4Lss8=`>42|#i&B@GP zQ#x-fbdpTpt;{}cc{#3z(!3w(sBO-w?N zBCplzKY}Tr`e-48soGpJ%yYpSR~0 z=ogx;%cMYL%=l&)iwr68$&5tu%Sg(7*Z@FrG}!c2@K)sV(&GG**|PQ4UfZ*;R@*QJ zar&LvueDDQkpcWW{acepA3u&F*>xb4IyYG5>jRV8fW_>QAh92gC$5E)e;Hd;n zTBcg3C^Z!(7S`r9lgv8K5251Uc;;bqp*{z2?bj)fZNNTBBC)tJE8xr?Wb0C*9=_a- zEX8GexXk#qBhdFOoOy78x6FW*BxFbDakUzQN{9Pv^(YzouGj^_RbTEM+PE`}XjdGd zC`h&OP9@r_ZtF&$PY8&ixH>~FfP~L3+Y<_`C;;D_m)rdi0HPa?A|zN4fZq7*4**cR zLT->3L#Eu04gfM44{nx9qG2}?7d7IhG*QT`F%Qb` zBE3U&mUx{Z4)z=5!Zmv`0Wx?J zENlE&hvIq%DfpufpLPTvm|91`g@m#(4YY-R6*1J0XaoKJL;PlI|Hw!=9c3NqylWeb z6@)eD_b>t;ay8#zh|W{3xaL84)aqs;To$QwyXg8SdK&t)Yxi&95*bCyU&ZZux_AeZ z{#qor0+xc6{FFRfwnn!25I!_T`TBaKP1npKdbwW_U3^qkBwnQI)03{2#VTUqwnq!f z7|*V%XU7mK@p#{gPQw_%Z02P1tKR6${}_x@9u#;xBS=0=6I|7P zC5)c5og1>FBQ@%vjkL~cm7rpxUw*Wq?1FMa>B8ZutRd}KU{+)nWtO^R-;03TUN*Na zG?Aj%N8g9j=gEe|c8jfS)Uw#D*r!-v(qpoI(qz+NlXP=^a?9B+RU(x&bzj&<_|O@n zhQH=+O<>KGbN`z7FnHa46=VPHKJM!KLAiaKy{vt*wXM;uL0SP$UUdG*E7n|s;O(AB z@QPIew0dy+;d~xJw?$1z{(nKk&JciJKL{s7#7@XCTv7q979}_f&Rk zcH3e-b8n1Ql3C4Q#jsOPPbcei(RfkUM!3*Oid7n@exi2jG%WDBY)YGAD1T^2++>_r zH%gpJ++k6Iwz#&t_P+L5k;16KI_tX4=sjyS%6rM!$->Fqm3hU<#jP&MHnYSF#1YIx z%=;R)lUy688<-nO8>pK?2cUy%2Q~-&)IC&$)T1I!B3=$o&OI*HcD3u-^Smwjt@$mh z_sl8HGaXZR`N(pVBD)FWUE;|!Y;r?#ZPPuvV?R=Ssu_AUyq}f)CV9Ge!sgxk9 z!V?wtWXdkX7O^eKz3oGt1^b>4skzCy&AXAy9QR%B>)t=9qfvdCay@O7)24H(Re!Fo z+tXNBTnuvDw~8d*E{>S)kse&1Q_nCfR?p}&>XYb$cA9n~a@>6u@ugwj{WIy#9Ta1P zCWMa&bq^>WyhO4>qD4+bevZb65{B{yl>=LxL<$=NN0-(i8rDemneqtCGi}bAG)VFm zJ(Wa{@|d&dx-!iuL3mI<`YgT=EaymhwWkvO(VU$1qiR~{l|-^5Z(`<~+y(4wcPliU z?41r-M~fD9Pt5DWcOvqiycU_VtaNZOFS4{&w+3${SNl~LR6lSF{vx{*Pv}H+6=U=9 zV(WOT*y9h5h|AVVJSmGwnsH9xl8@8RUXv}Y_I0PZit6&|MtTVbCJ@G#-})FpC#A+g zuKF?8R)w1A^TXsoRoVJyVbAWCRaGmBK3z)Hjy({3FXAnIY!Re-+qsNwE23YIa>DyAw`GZvO;oJIE~o41tF!EX;28IK%y zr%0>=l?Ssb)JxQGNtHSBSlsl<_1&uF>*V#`@ywciT{~jL@+bAGi!4>EE`2#(?WVgk z$Iu}AhLkZ>gUpqk%TT?>)D5~lcw_Tp zy1H#k_ViwZNkFltT3eR!Bl_CDH_2j+itLK=O1_ldu3lQWcgJYNYv0{wa&kto>h0#b z{Cf7fZPB4_!wbbaOUaReplzID%AK%}ltwm+GftTvmiyto6}@kJk@!G-oBBPKMN^+M z`Lhl@Qhg1(waczp3gne4rI61EuCQ2(=Qqt$}w!z`NL@Bh3!5j`@trYH%z-PX#JtW@gz)N=Jz z-+Z>XK7gG&_#*D5Wu!8R?Hn!oM}NpQ%}q`kh0C*N3nxnbI;Z2?SVy7#4JGdRyAE50`7eY!7&~Zd``pELa!!l;ro6YR zw`yiP>Sz<0P9?so?G7G;J8}n955?X$W!>=&>`}bxJ2D%?zoUFtcB)|A_Yyn)}cgwIoSzwaJagxxP*j+I5@dExVhQjJ=h%G zZJj`FY_^V!Kb`#PM+V{uc7WPBL1DIZ-~ED2V9rir3=H1`{q_1|UN&}r1+sPggB_eA zha1R_gNvP$J(a!GAqyJy#e+&7S`rihI z=R`&2pN;<23$%P=`3eoE^XrSr_)gISCJTxGxRp5Ql6O!uI+ zrZ87WW>Jpwy?>?pmm`P_$O$6O&B@Kn#>vITC7{X0Bh1Sy%)`sVDJaaz`J0oUJ4ULH0OH=ik+iK&U8052bx2`@K%l;8J1+{LePefRsL_3sgX zpU*|({l1)3RD>059i2e%=_tsE!yDM4@R13c^23Xr85f%gL=eKp%g+mD6M_gq*aUgF zI5`C%e4M5NKiAmb&3}#T57&Q2|HHK@+%=aV4SBh1Xn732VsG>7k?|4SA8>G1Cs=RN=P zmVo2=u??-E|4j~Hwk{Bd|4A0$xdy?H6A*YwFmr&}(1Gmitf64g_l$D5*qZ)vJ^pLY z(>cNDek*!Er~8|a|A%vR1iAcotL;B47yr#_J9lOJ|FYV?udAPd!4@D}bBL)p$DdpD z&xZdjX+M|k-)qO8CGTHrjp+BIh%mfP!S~FM)g%tT6#PruugE|9>wK>_*3Libi2yez z{KWw;-QQ0JKTLmDpEuRL*z|YxdDCB(TDDLpaqd5&oooKh>ic===M`N8ezb>tpW6AR z^S#xeZV+o787TZJ?D)M}3JU&Vb6)X}hPuBDg?N8A{7vzP;mVLMvkN5C9 z3y!~TE&k;y@K=rg-~94xM*o{$&-uCxat_GF;w7$&`JB^U;yMT9V(}8!#eB|bFL9j% zata6Vw3oQf0l8Sb#C0*BbJ|N>=YU)+UgEl#&pGWSu5&;x7B6vK%;%i;64yB( z7mJs;F6MJidx`5Dkc-7jTo>~>r@h2=4#>sgC9aG4oYP+7ItS!p@ezp$EuF zBjB{;_yx{&nn*RG$Z$6WmSSVi32QSy;R(zV#MR)&($kdGedbSx9~Gt56gUDRuxnDF zGa<&8dPGlvs8F-z-GAy;zbDf>4;_E41TkCUec;nUYI5yJC_od>+~3cAVw<&aJZc=vzxCx_5xe} z`SPly>0^qv4~c4(%gr+>c8ra7qCPakQ%B1~?n*J$6muVyUQ{1HR-u@iKXN=o*j5E* zu_QjXU0Dwy)AO@od%D@rmqFSwbTT!I$sMqQchW%e)E2YFDh63Hx7Ag`3$zNkcV-fe z2#-ExgtQ$BkUc=HM`Rj}D~?-FdIfHq-Sm?^GLYnn(pH??4MAYyWqJ0cn2rO@{$S{Z z(b2RfLR`M%#xx2*i{!43D1eAx%p(rskZBXQ@iS>`oh9aOpv`I<(tF{Kt4r zXpZt#$FMm8K4Gf@KuamUAApq;qS{X?D(d@*&JPPAMN21lGIWgMT1|1FgBd1I8)s*n_BD6p`(B| z*N13N`N(~yVA9^EH%hmg)yJ}9{wSJNXe7u2EWs}j@_=ChmhG!AfWJcTgNx%Tmn1Km zChkhpI2F_{2pO$F{4tA1ln7LsI`nHwV~FhFe816h#hcrGT|;s0eub6l&F&QaW5knC z^fo%CA_Jrb&y8LCoDuxymTfV4sa?{A34CoO{QM;%w;W$+_Nc_$-OtGQLe;|c955*w8$b`p!j_;#_^dRHxV?SX zkqq&HV^^|bN;OWhzD_rmVZQ)B3A9-x%##Ew zM;A@{%z6#S21#9|+VAL_{?L+}I&jY~I3no{QlnD)XG`x1{f=uW+p>=!>`ZmRrp6yK zxdg5T+U&F|aC+fYDG3B7+N$$rabb7&aroS$Cx=CviiZnOmNp=uaL|11Tou{t_h%;a zo4)C2iEFOo5xHHrPTHH&SMdBUsu~GJ^*fGEHM)WT4)baL=z{0b}uy`lZ8 zZL@i~98*gPYsEuP+4XNN4w`H-SAy-HT*nx+qn|mjCS5GvZuD-fqDG$B#F5aFjK76Z zcjB`mhUZV8uST&R7jrYA^Qtc!%9*EJ-z&`29kOia_9P1iHvP{$K=`ImG^I~Rl!)|e zsy+8&durWS6Ep<5SJ(}#FsnJq-1+Os#?T>2!ttF~k$AOeqQ>c!vv=cJ1Ku2?&h6Y# zq-J<%&ShEZG}l1U^tQDb(9C}1_D=r!s&I#Cf*s(h>oMQfu*nyFk`bYyJW9+q?59+C zO{N6v&Ydunz~_*1i{s}skA(&v;PN&eQirZJ_q!mI0o5HPd3`5W7hzdj9T-X7 z5v7@i^)u(+JN~kjFk6kdikE5f)94B;1f3#_1ZtBT5dq4u02y?u5m8s2V~%DgW4P^@g~a8HS9l zEGii$ZBko;>r7@IX+74shtl3jlQgcxhu)KB?`6`JV%LYtxEYG!#_xjCo{~LFc-Wyh zp11yXhiak<4R@(zb3bUiYM7#$RhA+yE=o#ppNyk}8l`UrWB8by+%Lrrdv6XYV{8Wd zun+#%KihhCrE|q}vy7&}GjiEjU++c~h6 zHh&|->%=`#)P~0S31`_St99i;!wi(QAoEUtS3k5*p|_T$4`wOdhVR>r&7#(Ql%vPS z>v}Ro9z34WEbj}ZF+XpOMA7HS6HJ$z1_+%RTXW+PI&4G@ zARPvtyp0_&Pv324cy#r_WH}#~@6sBT1OQa7=!Iq|FxE|K-X@x9DPRtcM~t|sc6PQ( zGd+0M*c3T=C_uzIcr67FL0VeK->-`)YpE%r{^inQamC}N5`@v3G_2$U4`h<3>qceI zGVY6C1wJ(h>>a%#*Zl%|lC}e_KB1Y(mT2#x-%f=E3#*u@PrO^;3%%Mb=iRCewN9DV zDqz*tvbJQT#*LGw5>v|n!jph`-gt=e4Mds6O)X*=0@TTcHPyEUsm$%>P(YIQR)NA5eO%L_ zI*p*f#jSis(ay~om*is3FFV6()GnO-ULP^5{?CVfr>HM*NCX4n$n{Pd!uj$_;Jv($1*f;<2g;Ci4Y%Tu)$=x~^ zPivRa$K-D7$#0?s`Ci=C7w;+L)08y{x_QO?Roe`^#>bu(ig!MIAFZ?!-rmbWF)O{X zX;C>t_)^^cI%r6h#KhklfzA*rt*C_3r)J?bY4kg@XGHJp3Y71gNtP z66uKiXtF3QyjP>@R}wiVlA#Nqk{GNxY&KSmGf>Gqo24jL=adat{e(I09qg3N$I%{b zy_!(&(c2S9a9{8|Ihdi))pmrI<%!)C3Br*nM(2XE`QNq<=VSX|V$+WR9!L;{xrW=S ztA8l0H69svJgoOmmQc@GVe0s%*W;eRiII0#_Rvy~^);o6f4;_DjeB7>W@b$)XQYl< z&jt6s5wxfjYeCvwBFbkzq!jeMcd#oSe1?6m!s2b$$dQhVecjMjwM$L{jTcFoc^@zP z(;U~Fnbe3r4UP9JP0m(9*W5;H7>n_zVLlRfjZ#Um`aY&x8&BX(*rOCGC@T|$?Fb5n z?Y7k;@ClbSD?@4|bgyS?jG3RbRZLeaqddKaFfuLNVb97Rm+WEhP>FIY?vZ9fQWPkM z3yP{7iK>vjMOriru77nx`es6DlU@#+yroGDN^ny?%t`ruv~Z;XiKk~4k`plDn?xrV zwoL(IQE^EOPk(1EJ-kGr``o-KRTeWr=LSCmnw+r+`EES%o)9)a(#>Iv^8E3P_jxi- zl|ovd3{_rol@Rb{Xvg-Y@w0=pddnY|zTj23L-Z{?QE;=OKo@&A?+W|YMAyerby9C1 zUE)6K*oP8rC`rb%0iaae7LwulzNEnGeftp3$I!IZ2#FVo26|T*@}=)uIbuWYUSPVr z7xl}US1m=HA>GTxSR^xgi%KFvDpJar7Z#G3NnZT6S-Q&JE*pbSnw5EnQ$y5}zh9pH zvEQ32Ux44Q>+)ZbhyP$be5TDl+7Oj3Nnc_7ce$+tywY_ zx$}0sm?jzzN9)75DPci5FG4w{UrtNAW5c5+)l`&39#2K%9)oRm?2Rfi3P+buSk=Xl zZZ3~5k_;<^SW_k9E=xVCse&i1W_o+dek<0WD5yX9>x)80@XR5eh+5-Qd)Rx38nb8h+^JwuH49^ zZI)#53s<}0Cumeu*gE`nlC1P=cf84B$E~J;E-bap&&RhgN_&mio7xLYf;|@wjYj~q zo23PaI5C-e>P^q7zCasZO6aL{d(O{6t}Z{%S%0^VPpQHi*3J+UK?h<`Gbnk0MWP5H*e|ubOO^Z z66YXhuXl2`ScAd9jt&QKEAQ1FXKZ+<8exb8R_p7lBkC>j4m764DYIE}UJ~7E{N%5X zg2`X6BVeaGiJJ9z>Kiq^cYDt^Zr6(=(d}+biKtC7Zh>sqOKyYAiJgt*U-pEVU{HCH zEHE(LHT`D5tv(oCjvOh}LH?{=upSgn_zV(AwEvE-7+|6g!<;nvs?G)!d9`%KHv|pR zz7NRMP?Z2z327j@>^(>awFtZj^z?X+R(=;H)CSNhoxbS+t1wZRqF?ltdrn&CJ~Deh*u=xK^I3p2>u5OrWJ9CX(O2sM4qhp5EsAt@2Bx~- z+i#TfufFcTR$i2|S$!$WyfA0PA++rH#)aa!jdDhS0mimb2&UYc9%RytRRHB!m3UeI zRv-zlA9n75;;>-xmZrU*BcMMoz;%2!#pQ8$MlK9RFzdNxO-NJp7$+3g8q_A>VO)T& zmK}(yqeU}aKmc6DXFyM1Q&P-h5-NMUmK1aBmQQOm9GygZ-|IQyaul)3ht@UyU}Cd3 z@dJCgh*6|e*Pgfw0Sj4J+@~dUQWnu_m2*^?Z2p9eE|`W52$bygR9UXmp_xPxa^QZ$ zsbE9bnNXa2-ekwqmaymcU2^8yd~~toXg5}a3DKIb3Gr|=X@djzJrH<5r7$?DdD$2s z-TM95gM4dT#Tj#>x2o(7fh^*QBn z%;s;YJk#{6q+7^fLwmHlOUSNQzq}Ro=2OSY`@{GV;vqTY>oJNcHy4;Q2rM!_Un@f9 z49Q=AJrI5fyZ0CweY+>4f@dPL@ramjO92=DqW~1wySo#2TRs5#?|&(1~8je!6^-O#f*B1 zCQz#f`<9-rLTwCKynZ>D7miq}^+p(m$-!$2%d^Yhqq=?15dVoD`(}SefwA2q{0D-x z3VFf+-j0GnD_nr+R-ErkOj6PXZ78-M5>96$U|NcB z#X^E&$=tY64h0D*^1+Ny*71&}Ry^$X0B?rRxF44jR?GE)io5Y! z_zpr2cSp(x`-lzJ-^f1y5QREK$`f?mT8H#$NCi)<*2r3Na={zTtr}PvTapUNT!q@S zhH5&a$W{f5%vWJ&l+cG}8v`#%a~x`=vnFcvh5^2j-O|F(qz2fcg-ur!2Lz1;atb!d zObasozFeidj{NbC4%6IZcbZp%EO}`H8R;WeFxva49WyOjg=2^oL8h~^l0j7lC5Dc6x?i!2uW{5@ z+)wv9K2xhpjx}9P)r~xe3PUctxqLVieUGkiF@cblUsTTQ6ZT_CX{mBL*@yT?B(Z*B zpZUJJ(`pe9K5)|m#~zkeIL&JTg$l@i`W{s$BUxL^1taS!Y+!Xmis(&PLBMIb{z3Av zv(sKuwlIOXG~*B}Y|?4?;caw#X3Gu}Vmhfj1huQ7JjBt?S~wqS3z9xOT`XPL-4Wsr zhM6cGS~3zbs)SqDwu^0VuNs`4cE9(Z3X4VxVc>t5)tmEmt9)0`{6N}mWNDe<$zG^@ z-`axj4g4-;KGl`H#fh4Vsq~;L#5qx;&t`=_myO5elpBq0kvzpJi^E*|nBh;jVb+&c zc)yj_=u55VN>noQP{r7citpVlC9K;B<>=F&Z}>c7tNQZ1*0v)8nq?m&fZM=kodVOQ z)JK&gbw!EcWRJbRC#H|~7R}O=d}I;++q)TRm>Ij+vNJ0$A4$nL3^rQgDYkWX9!{6f zdR-~hzD1TJ$X30Qi{kiX!C;mtMYFcl_Lb-2V1Kt&m44BS88ZS@R9qY%>MnxzVuYa( zUhNnc`Nu@cIMD|01UTO=GuoR~+>tOInx^|4pZe_J+i)jcfZh0bEfPyw-87r;0@u^x zfwoTEG1~}e1Jg4ij_B+f5*FVu5|&#n4dWi3)`x3ZoV*{<04daygHMIPK$3~DRoA8Zc^o2DqzTj;f!$0+h$MLRw*w;dtrFW&x)rLkSs zQIrmUUO_cZrL$rd076Hp5Ew}cl*v|7mQjk)wP3AlJx@xW=6zllnU>$h>-B6`#T~bA zOkEMq9r1sK`lY&&Orj$cic}HLd=moj>b-bTX4!!%3+}Q+phB{SX-};lR~P|fvtFWh zY`$UhWeNz?5|4~?9ox-)UTr#Q_iYgBq$1~SZV&kAlzKakp&FZ$MD0k$`=^IuRlOq5 z4IC9^o{0}{bcNsC80Hq9i7^}JHaG3#71PE)u6VWI}ic&4L^BZCEo#*73S>&Jy2xhV6PM zeK5FJh*YiDQg9>07-yQvi`S~Jm?D^)zb&|O-e?SATN`IlAHbtPn|g^tX$x=` z=IEERSP6m>B$ao*6)#8)UYZoH=!X_NZm}c=tkb=rsD8{) rs>bPb3q%sp&ETS`{(x}miv&3InK#Sq4XeWc(*!8U-jOMhGWP#JQscvq literal 0 HcmV?d00001 diff --git a/static/images/banner/icon7.png b/static/images/banner/icon7.png new file mode 100644 index 0000000000000000000000000000000000000000..a9be572bdae9030281546089498c9cea4bbdfef9 GIT binary patch literal 24795 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 + + + + + + + + + + + \ No newline at end of file diff --git a/static/images/banner/logo-banner.png b/static/images/banner/logo-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..518b616408d2c6caddc571c3132ce98231f51a8f GIT binary patch literal 108504 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�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 BKd=A* literal 0 HcmV?d00001 diff --git a/static/images/banner/u2335.svg b/static/images/banner/u2335.svg new file mode 100644 index 0000000..d2045d9 --- /dev/null +++ b/static/images/banner/u2335.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/banner/u2450.svg b/static/images/banner/u2450.svg new file mode 100644 index 0000000..76bdcd4 --- /dev/null +++ b/static/images/banner/u2450.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/banner/u253_selected.svg b/static/images/banner/u253_selected.svg new file mode 100644 index 0000000..1de51e0 --- /dev/null +++ b/static/images/banner/u253_selected.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/images/bg.jpg b/static/images/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df2ff6763eff80505125a6220d1e103f4991368b GIT binary patch literal 176594 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%0DhU#n?ioy`d|OqI_>#0 literal 0 HcmV?d00001 diff --git a/static/images/icon1.png b/static/images/icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2ffd475ce9aef9187e7a645a22b981b2a3d8d7e GIT binary patch literal 22900 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 \ No newline at end of file diff --git a/static/images/icon2.png b/static/images/icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..eedf475a804a892536a6bd5e3bc5d48830b784c2 GIT binary patch literal 22761 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 z \ No newline at end of file diff --git a/static/images/icon3.png b/static/images/icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..e640911e3d3e8f961a7e890a27c3c0cc93286244 GIT binary patch literal 22431 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 literal 0 HcmV?d00001 diff --git a/static/images/icon3.svg b/static/images/icon3.svg new file mode 100644 index 0000000..38e3fbf --- /dev/null +++ b/static/images/icon3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/icon4.svg b/static/images/icon4.svg new file mode 100644 index 0000000..811c086 --- /dev/null +++ b/static/images/icon4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/icon5.svg b/static/images/icon5.svg new file mode 100644 index 0000000..61cc90a --- /dev/null +++ b/static/images/icon5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/images/icon6.png b/static/images/icon6.png new file mode 100644 index 0000000000000000000000000000000000000000..761a86b8addf88c8fa7b94321129a11fb1234a65 GIT binary patch literal 22827 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 WD3Q1k@7sT!Q#+@nTzu9h^uGW&{uqh? literal 0 HcmV?d00001 diff --git a/static/images/icon7.png b/static/images/icon7.png new file mode 100644 index 0000000000000000000000000000000000000000..40c58cb61ed7f0a94786738320137e71e7f4485a GIT binary patch literal 22004 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 H_Tm2p-l_X> literal 0 HcmV?d00001 diff --git a/static/images/icon8.png b/static/images/icon8.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0dba3114e93e5b4cd66a73518ba9b7761bed1e GIT binary patch literal 22958 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