From a7c88e15f38c6ac4ea4cb526e980ba76d4bab0e8 Mon Sep 17 00:00:00 2001 From: cai <864601551@qq.com> Date: Wed, 14 May 2025 17:29:19 +0800 Subject: [PATCH] init --- .gitignore | 14 + README.en.md | 36 + README.md | 132 + api/api.js | 947 ++++++ app.js | 15 + app.json | 170 ++ app.wxss | 1243 ++++++++ components/bankLink/bankLink.js | 239 ++ components/bankLink/bankLink.json | 8 + components/bankLink/bankLink.wxml | 50 + components/bankLink/bankLink.wxss | 40 + components/region/region.js | 194 ++ components/region/region.json | 6 + components/region/region.wxml | 13 + components/region/region.wxss | 35 + components/statusBar/statusBar.js | 69 + components/statusBar/statusBar.json | 4 + components/statusBar/statusBar.wxml | 11 + components/statusBar/statusBar.wxss | 47 + custom-tab-bar/index.js | 78 + custom-tab-bar/index.json | 3 + custom-tab-bar/index.wxml | 8 + custom-tab-bar/index.wxss | 40 + home/components/finish/finish.js | 918 ++++++ home/components/finish/finish.json | 5 + home/components/finish/finish.wxml | 153 + home/components/finish/finish.wxss | 7 + home/components/finishHR/finishHR.js | 938 ++++++ home/components/finishHR/finishHR.json | 5 + home/components/finishHR/finishHR.wxml | 182 ++ home/components/finishHR/finishHR.wxss | 12 + home/components/infor/infor.js | 69 + home/components/infor/infor.json | 6 + home/components/infor/infor.wxml | 380 +++ home/components/infor/infor.wxss | 2 + home/components/install/install.js | 34 + home/components/install/install.json | 4 + home/components/install/install.wxml | 150 + home/components/install/install.wxss | 2 + home/components/installHR/installHR.js | 43 + home/components/installHR/installHR.json | 4 + home/components/installHR/installHR.wxml | 149 + home/components/installHR/installHR.wxss | 6 + home/components/onGrid/onGrid.js | 177 ++ home/components/onGrid/onGrid.json | 6 + home/components/onGrid/onGrid.wxml | 282 ++ home/components/onGrid/onGrid.wxss | 7 + home/components/survey/survey.js | 600 ++++ home/components/survey/survey.json | 5 + home/components/survey/survey.wxml | 795 +++++ home/components/survey/survey.wxss | 1 + home/components/surveyHR/surveyHR.js | 701 +++++ home/components/surveyHR/surveyHR.json | 5 + home/components/surveyHR/surveyHR.wxml | 618 ++++ home/components/surveyHR/surveyHR.wxss | 5 + home/components/userInfo/userInfo.js | 56 + home/components/userInfo/userInfo.json | 4 + home/components/userInfo/userInfo.wxml | 42 + home/components/userInfo/userInfo.wxss | 4 + home/img/addr.png | Bin 0 -> 1499 bytes home/img/arrow.png | Bin 0 -> 498 bytes home/img/attention.png | Bin 0 -> 2237 bytes home/img/bank-card-1.png | Bin 0 -> 5593 bytes home/img/canvas-date.png | Bin 0 -> 1257 bytes home/img/canvas-location.png | Bin 0 -> 1455 bytes home/img/canvas-people.png | Bin 0 -> 1455 bytes home/img/content-function-acceptance-img.png | Bin 0 -> 1807 bytes home/img/content-function-phone-img.png | Bin 0 -> 2058 bytes home/img/content-function-watch-img.png | Bin 0 -> 1845 bytes home/img/content-list-info-address-img.png | Bin 0 -> 503 bytes home/img/content-list-info-top-deg-img.png | Bin 0 -> 1756 bytes home/img/content-list-info-top-house-img.png | Bin 0 -> 2103 bytes home/img/content-list-info-top-name-img.png | Bin 0 -> 1927 bytes home/img/content-list-num-img.png | Bin 0 -> 276 bytes home/img/content-list-type-1.png | Bin 0 -> 649 bytes home/img/content-list-type-10.png | Bin 0 -> 583 bytes home/img/content-list-type-11.png | Bin 0 -> 648 bytes home/img/content-list-type-12.png | Bin 0 -> 540 bytes home/img/content-list-type-13.png | Bin 0 -> 1104 bytes home/img/content-list-type-14.png | Bin 0 -> 1493 bytes home/img/content-list-type-15.png | Bin 0 -> 1569 bytes home/img/content-list-type-16.png | Bin 0 -> 1513 bytes home/img/content-list-type-17.png | Bin 0 -> 1542 bytes home/img/content-list-type-18.png | Bin 0 -> 1290 bytes home/img/content-list-type-19.png | Bin 0 -> 1657 bytes home/img/content-list-type-2.png | Bin 0 -> 735 bytes home/img/content-list-type-20.png | Bin 0 -> 1737 bytes home/img/content-list-type-21.png | Bin 0 -> 1371 bytes home/img/content-list-type-22.png | Bin 0 -> 1534 bytes home/img/content-list-type-23.png | Bin 0 -> 1556 bytes home/img/content-list-type-24.png | Bin 0 -> 1504 bytes home/img/content-list-type-25.png | Bin 0 -> 1345 bytes home/img/content-list-type-26.png | Bin 0 -> 1452 bytes home/img/content-list-type-27.png | Bin 0 -> 1540 bytes home/img/content-list-type-28.png | Bin 0 -> 1695 bytes home/img/content-list-type-29.png | Bin 0 -> 1395 bytes home/img/content-list-type-3.png | Bin 0 -> 1058 bytes home/img/content-list-type-30.png | Bin 0 -> 1748 bytes home/img/content-list-type-31.png | Bin 0 -> 2167 bytes home/img/content-list-type-32.png | Bin 0 -> 2547 bytes home/img/content-list-type-33.png | Bin 0 -> 617 bytes home/img/content-list-type-34.png | Bin 0 -> 759 bytes home/img/content-list-type-35.png | Bin 0 -> 587 bytes home/img/content-list-type-36.png | Bin 0 -> 604 bytes home/img/content-list-type-37.png | Bin 0 -> 694 bytes home/img/content-list-type-38.png | Bin 0 -> 759 bytes home/img/content-list-type-39.png | Bin 0 -> 827 bytes home/img/content-list-type-4.png | Bin 0 -> 938 bytes home/img/content-list-type-40.png | Bin 0 -> 926 bytes home/img/content-list-type-42.png | Bin 0 -> 978 bytes home/img/content-list-type-43.png | Bin 0 -> 779 bytes home/img/content-list-type-44.png | Bin 0 -> 978 bytes home/img/content-list-type-45.png | Bin 0 -> 787 bytes home/img/content-list-type-46.png | Bin 0 -> 594 bytes home/img/content-list-type-5.png | Bin 0 -> 1029 bytes home/img/content-list-type-6-.png | Bin 0 -> 603 bytes home/img/content-list-type-6.png | Bin 0 -> 612 bytes home/img/content-list-type-7.png | Bin 0 -> 889 bytes home/img/content-list-type-8.png | Bin 0 -> 857 bytes home/img/content-list-type-9.png | Bin 0 -> 713 bytes home/img/content-list-type-dfq.png | Bin 0 -> 732 bytes home/img/content-list-type-dgz.png | Bin 0 -> 538 bytes home/img/content-list-type-dsc.png | Bin 0 -> 585 bytes home/img/content-list-type-gwddr.png | Bin 0 -> 563 bytes home/img/content-list-type-gwdsq.png | Bin 0 -> 648 bytes home/img/content-list-type-gzz.png | Bin 0 -> 465 bytes home/img/content-list-type-qsz.png | Bin 0 -> 1774 bytes home/img/content-list-type-wsc.png | Bin 0 -> 513 bytes home/img/content-list-type-ycx.png | Bin 0 -> 637 bytes home/img/content-list-type-ygq.png | Bin 0 -> 552 bytes home/img/content-list-type-yjq.png | Bin 0 -> 1833 bytes home/img/content-list-type-ysc.png | Bin 0 -> 486 bytes home/img/content-list-type-zf.png | Bin 0 -> 1543 bytes home/img/content-list-type-zfshbh.png | Bin 0 -> 3304 bytes home/img/copy.png | Bin 0 -> 1176 bytes home/img/delete.png | Bin 0 -> 3526 bytes home/img/icon-filter.png | Bin 0 -> 1763 bytes home/img/icon-search-white.png | Bin 0 -> 2163 bytes home/img/id-card-0.png | Bin 0 -> 1529 bytes home/img/id-card-1.png | Bin 0 -> 1635 bytes home/img/img-account.png | Bin 0 -> 5409 bytes home/img/img-add.png | Bin 0 -> 1278 bytes home/img/img-base.png | Bin 0 -> 711 bytes home/img/img-fly-1.png | Bin 0 -> 1372 bytes home/img/img-fly-2.png | Bin 0 -> 1315 bytes home/img/img-fwzm.png | Bin 0 -> 1468 bytes home/img/img-houseCertificates.png | Bin 0 -> 4675 bytes home/img/img-inside.png | Bin 0 -> 7896 bytes home/img/img-nbqwzImg.png | Bin 0 -> 1748 bytes home/img/img-outward.png | Bin 0 -> 8078 bytes home/img/img-pdxwzImg.png | Bin 0 -> 1688 bytes home/img/img-phone-1.png | Bin 0 -> 1219 bytes home/img/img-phone-2.png | Bin 0 -> 1250 bytes home/img/img-phone-3.png | Bin 0 -> 1177 bytes home/img/img-phone-4.png | Bin 0 -> 1209 bytes home/img/img-record.png | Bin 0 -> 5616 bytes home/img/img-recordList.png | Bin 0 -> 6071 bytes home/img/img-roof.png | Bin 0 -> 1804 bytes home/img/img-roofVideo.png | Bin 0 -> 4748 bytes home/img/img-shxx1.png | Bin 0 -> 1632 bytes home/img/img-shxx2.png | Bin 0 -> 1721 bytes home/img/img-visa.png | Bin 0 -> 7096 bytes home/img/img-zaw.png | Bin 0 -> 1722 bytes home/img/img-zjcsImg.png | Bin 0 -> 1803 bytes home/img/img-zjhsImg.png | Bin 0 -> 1776 bytes home/img/img-zjpbImg.png | Bin 0 -> 1604 bytes home/img/img-zjzxImg.png | Bin 0 -> 1764 bytes home/img/left.png | Bin 0 -> 2144 bytes home/img/local.png | Bin 0 -> 5309 bytes home/img/map-bg.png | Bin 0 -> 2317 bytes home/img/navigation.png | Bin 0 -> 1771 bytes home/img/scan-code.png | Bin 0 -> 2929 bytes home/img/tel.png | Bin 0 -> 2192 bytes home/img/watermark.png | Bin 0 -> 4659 bytes home/pages/3days/3days.js | 40 + home/pages/3days/3days.json | 8 + home/pages/3days/3days.wxml | 29 + home/pages/3days/3days.wxss | 10 + home/pages/acceptance/acceptance.js | 630 ++++ home/pages/acceptance/acceptance.json | 7 + home/pages/acceptance/acceptance.wxml | 185 ++ home/pages/acceptance/acceptance.wxss | 128 + home/pages/acceptanceAZ/acceptanceAZ.js | 234 ++ home/pages/acceptanceAZ/acceptanceAZ.json | 14 + home/pages/acceptanceAZ/acceptanceAZ.wxml | 56 + home/pages/acceptanceAZ/acceptanceAZ.wxss | 33 + home/pages/acceptanceBW/acceptanceBW.js | 616 ++++ home/pages/acceptanceBW/acceptanceBW.json | 13 + home/pages/acceptanceBW/acceptanceBW.wxml | 43 + home/pages/acceptanceBW/acceptanceBW.wxss | 43 + home/pages/bankCardDetail/bankCardDetail.js | 83 + home/pages/bankCardDetail/bankCardDetail.json | 6 + home/pages/bankCardDetail/bankCardDetail.wxml | 41 + home/pages/bankCardDetail/bankCardDetail.wxss | 6 + home/pages/bwForm/bwForm.js | 724 +++++ home/pages/bwForm/bwForm.json | 10 + home/pages/bwForm/bwForm.wxml | 345 +++ home/pages/bwForm/bwForm.wxss | 81 + home/pages/completion/completion.js | 1891 ++++++++++++ home/pages/completion/completion.json | 9 + home/pages/completion/completion.wxml | 195 ++ home/pages/completion/completion.wxss | 293 ++ home/pages/completionHR/completionHR.js | 1937 ++++++++++++ home/pages/completionHR/completionHR.json | 9 + home/pages/completionHR/completionHR.wxml | 232 ++ home/pages/completionHR/completionHR.wxss | 296 ++ home/pages/converge/converge.js | 155 + home/pages/converge/converge.json | 11 + home/pages/converge/converge.wxml | 61 + home/pages/converge/converge.wxss | 49 + home/pages/customDetails/customDetails.js | 493 ++++ home/pages/customDetails/customDetails.json | 14 + home/pages/customDetails/customDetails.wxml | 124 + home/pages/customDetails/customDetails.wxss | 66 + home/pages/customList/customList.js | 120 + home/pages/customList/customList.json | 9 + home/pages/customList/customList.wxml | 32 + home/pages/customList/customList.wxss | 35 + home/pages/dataScreening/dataScreening.js | 110 + home/pages/dataScreening/dataScreening.json | 4 + home/pages/dataScreening/dataScreening.wxml | 29 + home/pages/dataScreening/dataScreening.wxss | 91 + .../dataScreeningDetails.js | 292 ++ .../dataScreeningDetails.json | 5 + .../dataScreeningDetails.wxml | 65 + .../dataScreeningDetails.wxss | 91 + home/pages/dispatch/dispatch.js | 130 + home/pages/dispatch/dispatch.json | 10 + home/pages/dispatch/dispatch.wxml | 39 + home/pages/dispatch/dispatch.wxss | 41 + home/pages/entryInfo/entryInfo.js | 2396 +++++++++++++++ home/pages/entryInfo/entryInfo.json | 7 + home/pages/entryInfo/entryInfo.wxml | 602 ++++ home/pages/entryInfo/entryInfo.wxss | 132 + home/pages/entryInfoAudit/entryInfoAudit.js | 1586 ++++++++++ home/pages/entryInfoAudit/entryInfoAudit.json | 7 + home/pages/entryInfoAudit/entryInfoAudit.wxml | 994 +++++++ home/pages/entryInfoAudit/entryInfoAudit.wxss | 190 ++ .../entryInfoAuditHR/entryInfoAuditHR.js | 1579 ++++++++++ .../entryInfoAuditHR/entryInfoAuditHR.json | 7 + .../entryInfoAuditHR/entryInfoAuditHR.wxml | 706 +++++ .../entryInfoAuditHR/entryInfoAuditHR.wxss | 3 + home/pages/entryInfoBT/entryInfoBT.js | 2542 ++++++++++++++++ home/pages/entryInfoBT/entryInfoBT.json | 9 + home/pages/entryInfoBT/entryInfoBT.wxml | 767 +++++ home/pages/entryInfoBT/entryInfoBT.wxss | 160 + .../entryInfoDetails/entryInfoDetails.js | 458 +++ .../entryInfoDetails/entryInfoDetails.json | 5 + .../entryInfoDetails/entryInfoDetails.wxml | 696 +++++ .../entryInfoDetails/entryInfoDetails.wxss | 66 + home/pages/filesForm/filesForm.js | 1039 +++++++ home/pages/filesForm/filesForm.json | 10 + home/pages/filesForm/filesForm.wxml | 361 +++ home/pages/filesForm/filesForm.wxss | 55 + .../infoRegistration/infoRegistration.js | 1848 ++++++++++++ .../infoRegistration/infoRegistration.json | 13 + .../infoRegistration/infoRegistration.wxml | 721 +++++ .../infoRegistration/infoRegistration.wxs | 4 + .../infoRegistration/infoRegistration.wxss | 414 +++ home/pages/install/install.js | 665 +++++ home/pages/install/install.json | 8 + home/pages/install/install.wxml | 206 ++ home/pages/install/install.wxss | 135 + home/pages/installHR/installHR.js | 729 +++++ home/pages/installHR/installHR.json | 8 + home/pages/installHR/installHR.wxml | 205 ++ home/pages/installHR/installHR.wxss | 138 + home/pages/installOwn/installOwn.js | 154 + home/pages/installOwn/installOwn.json | 5 + home/pages/installOwn/installOwn.wxml | 47 + home/pages/installOwn/installOwn.wxss | 97 + .../installSelfAudit/installSelfAudit.js | 231 ++ .../installSelfAudit/installSelfAudit.json | 14 + .../installSelfAudit/installSelfAudit.wxml | 47 + .../installSelfAudit/installSelfAudit.wxss | 33 + home/pages/ownerForm/ownerForm.js | 127 + home/pages/ownerForm/ownerForm.json | 9 + home/pages/ownerForm/ownerForm.wxml | 138 + home/pages/ownerForm/ownerForm.wxss | 3 + home/pages/surveyForm/surveyForm.js | 2616 +++++++++++++++++ home/pages/surveyForm/surveyForm.json | 10 + home/pages/surveyForm/surveyForm.wxml | 1301 ++++++++ home/pages/surveyForm/surveyForm.wxss | 271 ++ home/pages/surveyFormHr/surveyFormHr.js | 2233 ++++++++++++++ home/pages/surveyFormHr/surveyFormHr.json | 13 + home/pages/surveyFormHr/surveyFormHr.wxml | 961 ++++++ home/pages/surveyFormHr/surveyFormHr.wxss | 273 ++ home/pages/uploadContract/uploadContract.js | 230 ++ home/pages/uploadContract/uploadContract.json | 5 + home/pages/uploadContract/uploadContract.wxml | 47 + home/pages/uploadContract/uploadContract.wxss | 1 + home/pages/viewSchema/viewSchema.js | 222 ++ home/pages/viewSchema/viewSchema.json | 4 + home/pages/viewSchema/viewSchema.wxml | 112 + home/pages/viewSchema/viewSchema.wxss | 40 + home/pages/webView/webView.js | 27 + home/pages/webView/webView.json | 3 + home/pages/webView/webView.wxml | 2 + home/pages/webView/webView.wxss | 1 + img/about-address.png | Bin 0 -> 2078 bytes img/about-mailbox.png | Bin 0 -> 1741 bytes img/about-service.png | Bin 0 -> 2019 bytes img/add.png | Bin 0 -> 1241 bytes img/arrow.png | Bin 0 -> 498 bytes img/banner.png | Bin 0 -> 92326 bytes img/bj.jpg | Bin 0 -> 218264 bytes img/canvas-location.png | Bin 0 -> 2439 bytes img/content-list-info-address-img.png | Bin 0 -> 503 bytes img/fix-1.png | Bin 0 -> 3227 bytes img/fix-2.png | Bin 0 -> 2339 bytes img/fix-3.png | Bin 0 -> 2523 bytes img/fix-4.png | Bin 0 -> 2490 bytes img/home-se.png | Bin 0 -> 1784 bytes img/home.png | Bin 0 -> 331 bytes img/home_dash.png | Bin 0 -> 2130 bytes img/home_dzda.png | Bin 0 -> 1307 bytes img/home_gwsq.png | Bin 0 -> 1762 bytes img/icon-search-white.png | Bin 0 -> 2163 bytes img/interconnection-1.png | Bin 0 -> 2461 bytes img/interconnection-2.png | Bin 0 -> 2654 bytes img/interconnection-3.png | Bin 0 -> 3096 bytes img/jrnbq.png | Bin 0 -> 2410 bytes img/left-black.png | Bin 0 -> 2225 bytes img/left.png | Bin 0 -> 2144 bytes img/login-bg.jpg | Bin 0 -> 197492 bytes img/login.png | Bin 0 -> 2047 bytes img/login2.png | Bin 0 -> 2171 bytes img/min.png | Bin 0 -> 1230 bytes img/mine-se.png | Bin 0 -> 1810 bytes img/mine.png | Bin 0 -> 453 bytes img/mine_i_contactus.png | Bin 0 -> 1924 bytes img/mine_i_order.png | Bin 0 -> 2192 bytes img/mine_i_setting.png | Bin 0 -> 2277 bytes img/over-1.png | Bin 0 -> 2210 bytes img/over-2.png | Bin 0 -> 3117 bytes img/pend-se.png | Bin 0 -> 1317 bytes img/pend-tips.png | Bin 0 -> 4407 bytes img/pend.png | Bin 0 -> 1159 bytes img/personal_center_bg.jpg | Bin 0 -> 12247 bytes img/personal_default_head.png | Bin 0 -> 12856 bytes img/personal_info_bg.png | Bin 0 -> 7944 bytes img/plan-1.png | Bin 0 -> 3366 bytes img/plan-2.png | Bin 0 -> 3355 bytes img/plan-3.png | Bin 0 -> 3228 bytes img/plan-4.png | Bin 0 -> 2652 bytes img/shbh.png | Bin 0 -> 771 bytes img/shtg.png | Bin 0 -> 797 bytes img/swichBtn.png | Bin 0 -> 924 bytes img/swichUser.png | Bin 0 -> 4099 bytes mine/pages/contactUs/contactUs.js | 21 + mine/pages/contactUs/contactUs.json | 6 + mine/pages/contactUs/contactUs.wxml | 61 + mine/pages/contactUs/contactUs.wxss | 189 ++ mine/pages/customerService/customerService.js | 66 + .../customerService/customerService.json | 6 + .../customerService/customerService.wxml | 8 + .../customerService/customerService.wxss | 24 + .../@vant/weapp/action-sheet/index.d.ts | 1 + .../@vant/weapp/action-sheet/index.js | 74 + .../@vant/weapp/action-sheet/index.json | 8 + .../@vant/weapp/action-sheet/index.wxml | 69 + .../@vant/weapp/action-sheet/index.wxss | 1 + miniprogram_npm/@vant/weapp/area/index.d.ts | 1 + miniprogram_npm/@vant/weapp/area/index.js | 235 ++ miniprogram_npm/@vant/weapp/area/index.json | 6 + miniprogram_npm/@vant/weapp/area/index.wxml | 20 + miniprogram_npm/@vant/weapp/area/index.wxs | 8 + miniprogram_npm/@vant/weapp/area/index.wxss | 1 + miniprogram_npm/@vant/weapp/button/index.d.ts | 1 + miniprogram_npm/@vant/weapp/button/index.js | 67 + miniprogram_npm/@vant/weapp/button/index.json | 7 + miniprogram_npm/@vant/weapp/button/index.wxml | 56 + miniprogram_npm/@vant/weapp/button/index.wxs | 39 + miniprogram_npm/@vant/weapp/button/index.wxss | 1 + .../@vant/weapp/calendar/calendar.wxml | 68 + .../calendar/components/header/index.d.ts | 1 + .../weapp/calendar/components/header/index.js | 45 + .../calendar/components/header/index.json | 3 + .../calendar/components/header/index.wxml | 16 + .../calendar/components/header/index.wxss | 1 + .../calendar/components/month/index.d.ts | 6 + .../weapp/calendar/components/month/index.js | 158 + .../calendar/components/month/index.json | 3 + .../calendar/components/month/index.wxml | 39 + .../weapp/calendar/components/month/index.wxs | 71 + .../calendar/components/month/index.wxss | 1 + .../@vant/weapp/calendar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/calendar/index.js | 379 +++ .../@vant/weapp/calendar/index.json | 10 + .../@vant/weapp/calendar/index.wxml | 26 + .../@vant/weapp/calendar/index.wxs | 37 + .../@vant/weapp/calendar/index.wxss | 1 + .../@vant/weapp/calendar/utils.d.ts | 12 + miniprogram_npm/@vant/weapp/calendar/utils.js | 97 + .../@vant/weapp/calendar/utils.wxs | 25 + miniprogram_npm/@vant/weapp/card/index.d.ts | 1 + miniprogram_npm/@vant/weapp/card/index.js | 51 + miniprogram_npm/@vant/weapp/card/index.json | 6 + miniprogram_npm/@vant/weapp/card/index.wxml | 56 + miniprogram_npm/@vant/weapp/card/index.wxss | 1 + .../@vant/weapp/cascader/index.d.ts | 1 + miniprogram_npm/@vant/weapp/cascader/index.js | 222 ++ .../@vant/weapp/cascader/index.json | 8 + .../@vant/weapp/cascader/index.wxml | 53 + .../@vant/weapp/cascader/index.wxs | 24 + .../@vant/weapp/cascader/index.wxss | 1 + .../@vant/weapp/cell-group/index.d.ts | 1 + .../@vant/weapp/cell-group/index.js | 13 + .../@vant/weapp/cell-group/index.json | 3 + .../@vant/weapp/cell-group/index.wxml | 11 + .../@vant/weapp/cell-group/index.wxss | 1 + miniprogram_npm/@vant/weapp/cell/index.d.ts | 1 + miniprogram_npm/@vant/weapp/cell/index.js | 40 + miniprogram_npm/@vant/weapp/cell/index.json | 6 + miniprogram_npm/@vant/weapp/cell/index.wxml | 47 + miniprogram_npm/@vant/weapp/cell/index.wxs | 17 + miniprogram_npm/@vant/weapp/cell/index.wxss | 1 + .../@vant/weapp/checkbox-group/index.d.ts | 1 + .../@vant/weapp/checkbox-group/index.js | 39 + .../@vant/weapp/checkbox-group/index.json | 3 + .../@vant/weapp/checkbox-group/index.wxml | 5 + .../@vant/weapp/checkbox-group/index.wxss | 1 + .../@vant/weapp/checkbox/index.d.ts | 1 + miniprogram_npm/@vant/weapp/checkbox/index.js | 79 + .../@vant/weapp/checkbox/index.json | 6 + .../@vant/weapp/checkbox/index.wxml | 31 + .../@vant/weapp/checkbox/index.wxs | 20 + .../@vant/weapp/checkbox/index.wxss | 1 + .../@vant/weapp/circle/canvas.d.ts | 4 + miniprogram_npm/@vant/weapp/circle/canvas.js | 47 + miniprogram_npm/@vant/weapp/circle/index.d.ts | 1 + miniprogram_npm/@vant/weapp/circle/index.js | 207 ++ miniprogram_npm/@vant/weapp/circle/index.json | 3 + miniprogram_npm/@vant/weapp/circle/index.wxml | 9 + miniprogram_npm/@vant/weapp/circle/index.wxss | 1 + miniprogram_npm/@vant/weapp/col/index.d.ts | 1 + miniprogram_npm/@vant/weapp/col/index.js | 11 + miniprogram_npm/@vant/weapp/col/index.json | 3 + miniprogram_npm/@vant/weapp/col/index.wxml | 9 + miniprogram_npm/@vant/weapp/col/index.wxs | 18 + miniprogram_npm/@vant/weapp/col/index.wxss | 1 + .../@vant/weapp/collapse-item/animate.d.ts | 2 + .../@vant/weapp/collapse-item/animate.js | 43 + .../@vant/weapp/collapse-item/index.d.ts | 1 + .../@vant/weapp/collapse-item/index.js | 62 + .../@vant/weapp/collapse-item/index.json | 6 + .../@vant/weapp/collapse-item/index.wxml | 45 + .../@vant/weapp/collapse-item/index.wxss | 1 + .../@vant/weapp/collapse/index.d.ts | 1 + miniprogram_npm/@vant/weapp/collapse/index.js | 48 + .../@vant/weapp/collapse/index.json | 3 + .../@vant/weapp/collapse/index.wxml | 3 + .../@vant/weapp/collapse/index.wxss | 1 + miniprogram_npm/@vant/weapp/common/color.d.ts | 7 + miniprogram_npm/@vant/weapp/common/color.js | 10 + .../@vant/weapp/common/component.d.ts | 4 + .../@vant/weapp/common/component.js | 49 + miniprogram_npm/@vant/weapp/common/index.wxss | 1 + .../@vant/weapp/common/relation.d.ts | 15 + .../@vant/weapp/common/relation.js | 65 + .../@vant/weapp/common/style/clearfix.wxss | 1 + .../@vant/weapp/common/style/ellipsis.wxss | 1 + .../@vant/weapp/common/style/hairline.wxss | 1 + .../weapp/common/style/mixins/clearfix.wxss | 0 .../weapp/common/style/mixins/ellipsis.wxss | 0 .../weapp/common/style/mixins/hairline.wxss | 0 .../@vant/weapp/common/style/var.wxss | 0 miniprogram_npm/@vant/weapp/common/utils.d.ts | 20 + miniprogram_npm/@vant/weapp/common/utils.js | 107 + .../@vant/weapp/common/validator.d.ts | 9 + .../@vant/weapp/common/validator.js | 43 + .../@vant/weapp/common/version.d.ts | 9 + miniprogram_npm/@vant/weapp/common/version.js | 70 + .../@vant/weapp/config-provider/index.d.ts | 1 + .../@vant/weapp/config-provider/index.js | 11 + .../@vant/weapp/config-provider/index.json | 3 + .../@vant/weapp/config-provider/index.wxml | 5 + .../@vant/weapp/config-provider/index.wxs | 29 + .../@vant/weapp/count-down/index.d.ts | 1 + .../@vant/weapp/count-down/index.js | 104 + .../@vant/weapp/count-down/index.json | 3 + .../@vant/weapp/count-down/index.wxml | 4 + .../@vant/weapp/count-down/index.wxss | 1 + .../@vant/weapp/count-down/utils.d.ts | 10 + .../@vant/weapp/count-down/utils.js | 64 + .../@vant/weapp/datetime-picker/index.d.ts | 1 + .../@vant/weapp/datetime-picker/index.js | 329 +++ .../@vant/weapp/datetime-picker/index.json | 6 + .../@vant/weapp/datetime-picker/index.wxml | 16 + .../@vant/weapp/datetime-picker/index.wxss | 1 + .../@vant/weapp/definitions/index.d.ts | 28 + .../@vant/weapp/definitions/index.js | 2 + .../@vant/weapp/dialog/dialog.d.ts | 55 + miniprogram_npm/@vant/weapp/dialog/dialog.js | 92 + miniprogram_npm/@vant/weapp/dialog/index.d.ts | 1 + miniprogram_npm/@vant/weapp/dialog/index.js | 131 + miniprogram_npm/@vant/weapp/dialog/index.json | 9 + miniprogram_npm/@vant/weapp/dialog/index.wxml | 122 + miniprogram_npm/@vant/weapp/dialog/index.wxss | 1 + .../@vant/weapp/divider/index.d.ts | 1 + miniprogram_npm/@vant/weapp/divider/index.js | 14 + .../@vant/weapp/divider/index.json | 4 + .../@vant/weapp/divider/index.wxml | 9 + miniprogram_npm/@vant/weapp/divider/index.wxs | 18 + .../@vant/weapp/divider/index.wxss | 1 + .../@vant/weapp/dropdown-item/index.d.ts | 1 + .../@vant/weapp/dropdown-item/index.js | 136 + .../@vant/weapp/dropdown-item/index.json | 8 + .../@vant/weapp/dropdown-item/index.wxml | 50 + .../@vant/weapp/dropdown-item/index.wxss | 1 + .../@vant/weapp/dropdown-item/shared.d.ts | 5 + .../@vant/weapp/dropdown-item/shared.js | 2 + .../@vant/weapp/dropdown-menu/index.d.ts | 1 + .../@vant/weapp/dropdown-menu/index.js | 122 + .../@vant/weapp/dropdown-menu/index.json | 3 + .../@vant/weapp/dropdown-menu/index.wxml | 23 + .../@vant/weapp/dropdown-menu/index.wxs | 16 + .../@vant/weapp/dropdown-menu/index.wxss | 1 + miniprogram_npm/@vant/weapp/empty/index.d.ts | 1 + miniprogram_npm/@vant/weapp/empty/index.js | 12 + miniprogram_npm/@vant/weapp/empty/index.json | 4 + miniprogram_npm/@vant/weapp/empty/index.wxml | 22 + miniprogram_npm/@vant/weapp/empty/index.wxs | 15 + miniprogram_npm/@vant/weapp/empty/index.wxss | 1 + miniprogram_npm/@vant/weapp/field/index.d.ts | 1 + miniprogram_npm/@vant/weapp/field/index.js | 137 + miniprogram_npm/@vant/weapp/field/index.json | 7 + miniprogram_npm/@vant/weapp/field/index.wxml | 56 + miniprogram_npm/@vant/weapp/field/index.wxs | 18 + miniprogram_npm/@vant/weapp/field/index.wxss | 1 + miniprogram_npm/@vant/weapp/field/input.wxml | 29 + miniprogram_npm/@vant/weapp/field/props.d.ts | 4 + miniprogram_npm/@vant/weapp/field/props.js | 67 + .../@vant/weapp/field/textarea.wxml | 30 + miniprogram_npm/@vant/weapp/field/types.d.ts | 8 + miniprogram_npm/@vant/weapp/field/types.js | 2 + .../weapp/goods-action-button/index.d.ts | 1 + .../@vant/weapp/goods-action-button/index.js | 42 + .../weapp/goods-action-button/index.json | 6 + .../weapp/goods-action-button/index.wxml | 33 + .../weapp/goods-action-button/index.wxss | 1 + .../@vant/weapp/goods-action-icon/index.d.ts | 1 + .../@vant/weapp/goods-action-icon/index.js | 29 + .../@vant/weapp/goods-action-icon/index.json | 7 + .../@vant/weapp/goods-action-icon/index.wxml | 41 + .../@vant/weapp/goods-action-icon/index.wxss | 1 + .../@vant/weapp/goods-action/index.d.ts | 1 + .../@vant/weapp/goods-action/index.js | 17 + .../@vant/weapp/goods-action/index.json | 3 + .../@vant/weapp/goods-action/index.wxml | 5 + .../@vant/weapp/goods-action/index.wxss | 1 + .../@vant/weapp/grid-item/index.d.ts | 1 + .../@vant/weapp/grid-item/index.js | 54 + .../@vant/weapp/grid-item/index.json | 6 + .../@vant/weapp/grid-item/index.wxml | 27 + .../@vant/weapp/grid-item/index.wxs | 32 + .../@vant/weapp/grid-item/index.wxss | 1 + miniprogram_npm/@vant/weapp/grid/index.d.ts | 1 + miniprogram_npm/@vant/weapp/grid/index.js | 57 + miniprogram_npm/@vant/weapp/grid/index.json | 3 + miniprogram_npm/@vant/weapp/grid/index.wxml | 8 + miniprogram_npm/@vant/weapp/grid/index.wxs | 13 + miniprogram_npm/@vant/weapp/grid/index.wxss | 1 + miniprogram_npm/@vant/weapp/icon/index.d.ts | 1 + miniprogram_npm/@vant/weapp/icon/index.js | 23 + miniprogram_npm/@vant/weapp/icon/index.json | 6 + miniprogram_npm/@vant/weapp/icon/index.wxml | 20 + miniprogram_npm/@vant/weapp/icon/index.wxs | 43 + miniprogram_npm/@vant/weapp/icon/index.wxss | 1 + miniprogram_npm/@vant/weapp/image/index.d.ts | 1 + miniprogram_npm/@vant/weapp/image/index.js | 66 + miniprogram_npm/@vant/weapp/image/index.json | 7 + miniprogram_npm/@vant/weapp/image/index.wxml | 35 + miniprogram_npm/@vant/weapp/image/index.wxs | 32 + miniprogram_npm/@vant/weapp/image/index.wxss | 1 + .../@vant/weapp/index-anchor/index.d.ts | 1 + .../@vant/weapp/index-anchor/index.js | 28 + .../@vant/weapp/index-anchor/index.json | 3 + .../@vant/weapp/index-anchor/index.wxml | 14 + .../@vant/weapp/index-anchor/index.wxss | 1 + .../@vant/weapp/index-bar/index.d.ts | 1 + .../@vant/weapp/index-bar/index.js | 243 ++ .../@vant/weapp/index-bar/index.json | 3 + .../@vant/weapp/index-bar/index.wxml | 22 + .../@vant/weapp/index-bar/index.wxss | 1 + miniprogram_npm/@vant/weapp/info/index.d.ts | 1 + miniprogram_npm/@vant/weapp/info/index.js | 10 + miniprogram_npm/@vant/weapp/info/index.json | 3 + miniprogram_npm/@vant/weapp/info/index.wxml | 7 + miniprogram_npm/@vant/weapp/info/index.wxss | 1 + .../@vant/weapp/loading/index.d.ts | 1 + miniprogram_npm/@vant/weapp/loading/index.js | 18 + .../@vant/weapp/loading/index.json | 3 + .../@vant/weapp/loading/index.wxml | 19 + miniprogram_npm/@vant/weapp/loading/index.wxs | 22 + .../@vant/weapp/loading/index.wxss | 1 + miniprogram_npm/@vant/weapp/mixins/basic.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/basic.js | 14 + .../@vant/weapp/mixins/button.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/button.js | 54 + miniprogram_npm/@vant/weapp/mixins/link.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/link.js | 27 + .../@vant/weapp/mixins/page-scroll.d.ts | 6 + .../@vant/weapp/mixins/page-scroll.js | 47 + miniprogram_npm/@vant/weapp/mixins/touch.d.ts | 1 + miniprogram_npm/@vant/weapp/mixins/touch.js | 40 + .../@vant/weapp/mixins/transition.d.ts | 1 + .../@vant/weapp/mixins/transition.js | 124 + .../@vant/weapp/nav-bar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/nav-bar/index.js | 68 + .../@vant/weapp/nav-bar/index.json | 6 + .../@vant/weapp/nav-bar/index.wxml | 42 + miniprogram_npm/@vant/weapp/nav-bar/index.wxs | 13 + .../@vant/weapp/nav-bar/index.wxss | 1 + .../@vant/weapp/notice-bar/index.d.ts | 1 + .../@vant/weapp/notice-bar/index.js | 125 + .../@vant/weapp/notice-bar/index.json | 6 + .../@vant/weapp/notice-bar/index.wxml | 38 + .../@vant/weapp/notice-bar/index.wxs | 15 + .../@vant/weapp/notice-bar/index.wxss | 1 + miniprogram_npm/@vant/weapp/notify/index.d.ts | 1 + miniprogram_npm/@vant/weapp/notify/index.js | 68 + miniprogram_npm/@vant/weapp/notify/index.json | 6 + miniprogram_npm/@vant/weapp/notify/index.wxml | 21 + miniprogram_npm/@vant/weapp/notify/index.wxs | 22 + miniprogram_npm/@vant/weapp/notify/index.wxss | 1 + .../@vant/weapp/notify/notify.d.ts | 22 + miniprogram_npm/@vant/weapp/notify/notify.js | 67 + .../@vant/weapp/overlay/index.d.ts | 1 + miniprogram_npm/@vant/weapp/overlay/index.js | 32 + .../@vant/weapp/overlay/index.json | 6 + .../@vant/weapp/overlay/index.wxml | 7 + .../@vant/weapp/overlay/index.wxss | 1 + .../@vant/weapp/overlay/overlay.wxml | 10 + miniprogram_npm/@vant/weapp/panel/index.d.ts | 1 + miniprogram_npm/@vant/weapp/panel/index.js | 11 + miniprogram_npm/@vant/weapp/panel/index.json | 6 + miniprogram_npm/@vant/weapp/panel/index.wxml | 19 + miniprogram_npm/@vant/weapp/panel/index.wxss | 1 + .../@vant/weapp/picker-column/index.d.ts | 1 + .../@vant/weapp/picker-column/index.js | 122 + .../@vant/weapp/picker-column/index.json | 3 + .../@vant/weapp/picker-column/index.wxml | 23 + .../@vant/weapp/picker-column/index.wxs | 36 + .../@vant/weapp/picker-column/index.wxss | 1 + miniprogram_npm/@vant/weapp/picker/index.d.ts | 1 + miniprogram_npm/@vant/weapp/picker/index.js | 161 + miniprogram_npm/@vant/weapp/picker/index.json | 7 + miniprogram_npm/@vant/weapp/picker/index.wxml | 37 + miniprogram_npm/@vant/weapp/picker/index.wxs | 42 + miniprogram_npm/@vant/weapp/picker/index.wxss | 1 + .../@vant/weapp/picker/shared.d.ts | 21 + miniprogram_npm/@vant/weapp/picker/shared.js | 24 + .../@vant/weapp/picker/toolbar.wxml | 23 + miniprogram_npm/@vant/weapp/popup/index.d.ts | 1 + miniprogram_npm/@vant/weapp/popup/index.js | 99 + miniprogram_npm/@vant/weapp/popup/index.json | 7 + miniprogram_npm/@vant/weapp/popup/index.wxml | 21 + miniprogram_npm/@vant/weapp/popup/index.wxs | 18 + miniprogram_npm/@vant/weapp/popup/index.wxss | 1 + miniprogram_npm/@vant/weapp/popup/popup.wxml | 14 + .../@vant/weapp/progress/index.d.ts | 1 + miniprogram_npm/@vant/weapp/progress/index.js | 55 + .../@vant/weapp/progress/index.json | 3 + .../@vant/weapp/progress/index.wxml | 20 + .../@vant/weapp/progress/index.wxs | 36 + .../@vant/weapp/progress/index.wxss | 1 + .../@vant/weapp/radio-group/index.d.ts | 1 + .../@vant/weapp/radio-group/index.js | 24 + .../@vant/weapp/radio-group/index.json | 3 + .../@vant/weapp/radio-group/index.wxml | 5 + .../@vant/weapp/radio-group/index.wxss | 1 + miniprogram_npm/@vant/weapp/radio/index.d.ts | 1 + miniprogram_npm/@vant/weapp/radio/index.js | 68 + miniprogram_npm/@vant/weapp/radio/index.json | 6 + miniprogram_npm/@vant/weapp/radio/index.wxml | 30 + miniprogram_npm/@vant/weapp/radio/index.wxs | 33 + miniprogram_npm/@vant/weapp/radio/index.wxss | 1 + miniprogram_npm/@vant/weapp/rate/index.d.ts | 1 + miniprogram_npm/@vant/weapp/rate/index.js | 93 + miniprogram_npm/@vant/weapp/rate/index.json | 6 + miniprogram_npm/@vant/weapp/rate/index.wxml | 35 + miniprogram_npm/@vant/weapp/rate/index.wxss | 1 + miniprogram_npm/@vant/weapp/row/index.d.ts | 1 + miniprogram_npm/@vant/weapp/row/index.js | 26 + miniprogram_npm/@vant/weapp/row/index.json | 3 + miniprogram_npm/@vant/weapp/row/index.wxml | 5 + miniprogram_npm/@vant/weapp/row/index.wxs | 18 + miniprogram_npm/@vant/weapp/row/index.wxss | 1 + miniprogram_npm/@vant/weapp/search/index.d.ts | 1 + miniprogram_npm/@vant/weapp/search/index.js | 100 + miniprogram_npm/@vant/weapp/search/index.json | 6 + miniprogram_npm/@vant/weapp/search/index.wxml | 54 + miniprogram_npm/@vant/weapp/search/index.wxss | 1 + .../@vant/weapp/share-sheet/index.d.ts | 1 + .../@vant/weapp/share-sheet/index.js | 57 + .../@vant/weapp/share-sheet/index.json | 7 + .../@vant/weapp/share-sheet/index.wxml | 46 + .../@vant/weapp/share-sheet/index.wxs | 12 + .../@vant/weapp/share-sheet/index.wxss | 1 + .../@vant/weapp/share-sheet/options.d.ts | 1 + .../@vant/weapp/share-sheet/options.js | 27 + .../@vant/weapp/share-sheet/options.json | 3 + .../@vant/weapp/share-sheet/options.wxml | 20 + .../@vant/weapp/share-sheet/options.wxs | 14 + .../@vant/weapp/share-sheet/options.wxss | 1 + .../@vant/weapp/sidebar-item/index.d.ts | 1 + .../@vant/weapp/sidebar-item/index.js | 32 + .../@vant/weapp/sidebar-item/index.json | 6 + .../@vant/weapp/sidebar-item/index.wxml | 18 + .../@vant/weapp/sidebar-item/index.wxss | 1 + .../@vant/weapp/sidebar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/sidebar/index.js | 36 + .../@vant/weapp/sidebar/index.json | 3 + .../@vant/weapp/sidebar/index.wxml | 3 + .../@vant/weapp/sidebar/index.wxss | 1 + .../@vant/weapp/skeleton/index.d.ts | 1 + miniprogram_npm/@vant/weapp/skeleton/index.js | 48 + .../@vant/weapp/skeleton/index.json | 4 + .../@vant/weapp/skeleton/index.wxml | 29 + .../@vant/weapp/skeleton/index.wxss | 1 + miniprogram_npm/@vant/weapp/slider/index.d.ts | 1 + miniprogram_npm/@vant/weapp/slider/index.js | 206 ++ miniprogram_npm/@vant/weapp/slider/index.json | 3 + miniprogram_npm/@vant/weapp/slider/index.wxml | 68 + miniprogram_npm/@vant/weapp/slider/index.wxs | 14 + miniprogram_npm/@vant/weapp/slider/index.wxss | 1 + .../@vant/weapp/stepper/index.d.ts | 1 + miniprogram_npm/@vant/weapp/stepper/index.js | 203 ++ .../@vant/weapp/stepper/index.json | 3 + .../@vant/weapp/stepper/index.wxml | 43 + miniprogram_npm/@vant/weapp/stepper/index.wxs | 22 + .../@vant/weapp/stepper/index.wxss | 1 + miniprogram_npm/@vant/weapp/steps/index.d.ts | 1 + miniprogram_npm/@vant/weapp/steps/index.js | 35 + miniprogram_npm/@vant/weapp/steps/index.json | 6 + miniprogram_npm/@vant/weapp/steps/index.wxml | 54 + miniprogram_npm/@vant/weapp/steps/index.wxss | 1 + miniprogram_npm/@vant/weapp/sticky/index.d.ts | 1 + miniprogram_npm/@vant/weapp/sticky/index.js | 126 + miniprogram_npm/@vant/weapp/sticky/index.json | 3 + miniprogram_npm/@vant/weapp/sticky/index.wxml | 8 + miniprogram_npm/@vant/weapp/sticky/index.wxs | 25 + miniprogram_npm/@vant/weapp/sticky/index.wxss | 1 + .../@vant/weapp/submit-bar/index.d.ts | 1 + .../@vant/weapp/submit-bar/index.js | 58 + .../@vant/weapp/submit-bar/index.json | 7 + .../@vant/weapp/submit-bar/index.wxml | 44 + .../@vant/weapp/submit-bar/index.wxss | 1 + .../@vant/weapp/swipe-cell/index.d.ts | 1 + .../@vant/weapp/swipe-cell/index.js | 135 + .../@vant/weapp/swipe-cell/index.json | 3 + .../@vant/weapp/swipe-cell/index.wxml | 20 + .../@vant/weapp/swipe-cell/index.wxss | 1 + miniprogram_npm/@vant/weapp/switch/index.d.ts | 1 + miniprogram_npm/@vant/weapp/switch/index.js | 38 + miniprogram_npm/@vant/weapp/switch/index.json | 6 + miniprogram_npm/@vant/weapp/switch/index.wxml | 16 + miniprogram_npm/@vant/weapp/switch/index.wxs | 26 + miniprogram_npm/@vant/weapp/switch/index.wxss | 1 + miniprogram_npm/@vant/weapp/tab/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tab/index.js | 58 + miniprogram_npm/@vant/weapp/tab/index.json | 3 + miniprogram_npm/@vant/weapp/tab/index.wxml | 8 + miniprogram_npm/@vant/weapp/tab/index.wxss | 1 + .../@vant/weapp/tabbar-item/index.d.ts | 1 + .../@vant/weapp/tabbar-item/index.js | 70 + .../@vant/weapp/tabbar-item/index.json | 7 + .../@vant/weapp/tabbar-item/index.wxml | 28 + .../@vant/weapp/tabbar-item/index.wxss | 1 + miniprogram_npm/@vant/weapp/tabbar/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tabbar/index.js | 68 + miniprogram_npm/@vant/weapp/tabbar/index.json | 3 + miniprogram_npm/@vant/weapp/tabbar/index.wxml | 10 + miniprogram_npm/@vant/weapp/tabbar/index.wxss | 1 + miniprogram_npm/@vant/weapp/tabs/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tabs/index.js | 327 +++ miniprogram_npm/@vant/weapp/tabs/index.json | 7 + miniprogram_npm/@vant/weapp/tabs/index.wxml | 63 + miniprogram_npm/@vant/weapp/tabs/index.wxs | 83 + miniprogram_npm/@vant/weapp/tabs/index.wxss | 1 + miniprogram_npm/@vant/weapp/tag/index.d.ts | 1 + miniprogram_npm/@vant/weapp/tag/index.js | 23 + miniprogram_npm/@vant/weapp/tag/index.json | 6 + miniprogram_npm/@vant/weapp/tag/index.wxml | 15 + miniprogram_npm/@vant/weapp/tag/index.wxs | 13 + miniprogram_npm/@vant/weapp/tag/index.wxss | 1 + miniprogram_npm/@vant/weapp/toast/index.d.ts | 1 + miniprogram_npm/@vant/weapp/toast/index.js | 31 + miniprogram_npm/@vant/weapp/toast/index.json | 9 + miniprogram_npm/@vant/weapp/toast/index.wxml | 36 + miniprogram_npm/@vant/weapp/toast/index.wxss | 1 + miniprogram_npm/@vant/weapp/toast/toast.d.ts | 28 + miniprogram_npm/@vant/weapp/toast/toast.js | 83 + .../@vant/weapp/transition/index.d.ts | 1 + .../@vant/weapp/transition/index.js | 15 + .../@vant/weapp/transition/index.json | 3 + .../@vant/weapp/transition/index.wxml | 10 + .../@vant/weapp/transition/index.wxs | 17 + .../@vant/weapp/transition/index.wxss | 1 + .../@vant/weapp/tree-select/index.d.ts | 1 + .../@vant/weapp/tree-select/index.js | 70 + .../@vant/weapp/tree-select/index.json | 8 + .../@vant/weapp/tree-select/index.wxml | 41 + .../@vant/weapp/tree-select/index.wxs | 12 + .../@vant/weapp/tree-select/index.wxss | 1 + .../@vant/weapp/uploader/index.d.ts | 1 + miniprogram_npm/@vant/weapp/uploader/index.js | 183 ++ .../@vant/weapp/uploader/index.json | 7 + .../@vant/weapp/uploader/index.wxml | 84 + .../@vant/weapp/uploader/index.wxs | 17 + .../@vant/weapp/uploader/index.wxss | 1 + .../@vant/weapp/uploader/shared.d.ts | 53 + .../@vant/weapp/uploader/shared.js | 60 + .../@vant/weapp/uploader/utils.d.ts | 24 + miniprogram_npm/@vant/weapp/uploader/utils.js | 147 + miniprogram_npm/@vant/weapp/wxs/add-unit.wxs | 12 + miniprogram_npm/@vant/weapp/wxs/array.wxs | 5 + miniprogram_npm/@vant/weapp/wxs/bem.wxs | 39 + miniprogram_npm/@vant/weapp/wxs/memoize.wxs | 55 + miniprogram_npm/@vant/weapp/wxs/object.wxs | 13 + miniprogram_npm/@vant/weapp/wxs/style.wxs | 42 + miniprogram_npm/@vant/weapp/wxs/utils.wxs | 10 + miniprogram_npm/dayjs/index.js | 13 + miniprogram_npm/dayjs/index.js.map | 1 + .../weapp-qrcode-canvas-2d/index.js | 18 + .../weapp-qrcode-canvas-2d/index.js.map | 1 + monitor/ec-canvas/ec-canvas.js | 284 ++ monitor/ec-canvas/ec-canvas.json | 4 + monitor/ec-canvas/ec-canvas.wxml | 4 + monitor/ec-canvas/ec-canvas.wxss | 4 + monitor/ec-canvas/echarts.js | 45 + monitor/ec-canvas/wx-canvas.js | 111 + monitor/pages/addMaterial/addMaterial.js | 225 ++ monitor/pages/addMaterial/addMaterial.json | 7 + monitor/pages/addMaterial/addMaterial.wxml | 62 + monitor/pages/addMaterial/addMaterial.wxss | 24 + monitor/pages/center/center.js | 56 + monitor/pages/center/center.json | 8 + monitor/pages/center/center.wxml | 39 + monitor/pages/center/center.wxss | 38 + monitor/pages/components/baseInfo/baseInfo.js | 41 + .../pages/components/baseInfo/baseInfo.json | 6 + .../pages/components/baseInfo/baseInfo.wxml | 113 + .../pages/components/baseInfo/baseInfo.wxss | 2 + .../feedBackRecord/feedBackRecord.js | 77 + .../feedBackRecord/feedBackRecord.json | 6 + .../feedBackRecord/feedBackRecord.wxml | 12 + .../feedBackRecord/feedBackRecord.wxss | 5 + monitor/pages/components/tabBar/tabBar.js | 45 + monitor/pages/components/tabBar/tabBar.json | 7 + monitor/pages/components/tabBar/tabBar.wxml | 6 + monitor/pages/components/tabBar/tabBar.wxss | 1 + .../pages/components/timePicker/timePicker.js | 566 ++++ .../components/timePicker/timePicker.json | 4 + .../components/timePicker/timePicker.wxml | 68 + .../components/timePicker/timePicker.wxss | 125 + monitor/pages/deviceDetail/deviceDetail.js | 99 + monitor/pages/deviceDetail/deviceDetail.json | 4 + monitor/pages/deviceDetail/deviceDetail.wxml | 111 + monitor/pages/deviceDetail/deviceDetail.wxss | 32 + monitor/pages/deviceList/deviceList.js | 137 + monitor/pages/deviceList/deviceList.json | 10 + monitor/pages/deviceList/deviceList.wxml | 35 + monitor/pages/deviceList/deviceList.wxss | 17 + monitor/pages/home/home.js | 70 + monitor/pages/home/home.json | 12 + monitor/pages/home/home.wxml | 74 + monitor/pages/home/home.wxss | 16 + monitor/pages/img/2.png | Bin 0 -> 22488 bytes monitor/pages/img/3.png | Bin 0 -> 21224 bytes monitor/pages/img/6.png | Bin 0 -> 23233 bytes monitor/pages/img/addr.png | Bin 0 -> 425 bytes monitor/pages/img/base.png | Bin 0 -> 1156 bytes monitor/pages/img/bj.png | Bin 0 -> 1689 bytes monitor/pages/img/bj1.png | Bin 0 -> 1750 bytes monitor/pages/img/camare.png | Bin 0 -> 1561 bytes monitor/pages/img/center.png | Bin 0 -> 1554 bytes monitor/pages/img/center1.png | Bin 0 -> 1643 bytes monitor/pages/img/customer_bg.png | Bin 0 -> 9500 bytes monitor/pages/img/date.png | Bin 0 -> 1331 bytes monitor/pages/img/date_blue.png | Bin 0 -> 1107 bytes monitor/pages/img/default_head.png | Bin 0 -> 4665 bytes monitor/pages/img/delete.png | Bin 0 -> 1336 bytes monitor/pages/img/dingwei.png | Bin 0 -> 1596 bytes monitor/pages/img/djd_status.png | Bin 0 -> 1689 bytes monitor/pages/img/drfd.png | Bin 0 -> 1286 bytes monitor/pages/img/dz_icon.png | Bin 0 -> 1174 bytes monitor/pages/img/edit.png | Bin 0 -> 1447 bytes monitor/pages/img/edit_blue.png | Bin 0 -> 556 bytes monitor/pages/img/error.png | Bin 0 -> 1947 bytes monitor/pages/img/f.png | Bin 0 -> 885 bytes monitor/pages/img/filter.png | Bin 0 -> 1147 bytes monitor/pages/img/fkjl.png | Bin 0 -> 1015 bytes monitor/pages/img/fwz_status.png | Bin 0 -> 1691 bytes monitor/pages/img/gcfk.png | Bin 0 -> 1102 bytes monitor/pages/img/gcs.png | Bin 0 -> 1562 bytes monitor/pages/img/gg_line.png | Bin 0 -> 1119 bytes monitor/pages/img/go.png | Bin 0 -> 609 bytes monitor/pages/img/head2.png | Bin 0 -> 2667 bytes monitor/pages/img/home.png | Bin 0 -> 1487 bytes monitor/pages/img/home/banner.png | Bin 0 -> 108951 bytes monitor/pages/img/home/djd.png | Bin 0 -> 711 bytes monitor/pages/img/home/fwz.png | Bin 0 -> 996 bytes monitor/pages/img/home/gdcx.png | Bin 0 -> 1023 bytes monitor/pages/img/home/tz_bg.png | Bin 0 -> 4636 bytes monitor/pages/img/home/tz_icon.png | Bin 0 -> 309 bytes monitor/pages/img/home/wdwl.png | Bin 0 -> 617 bytes monitor/pages/img/home/wlsq.png | Bin 0 -> 816 bytes monitor/pages/img/home/ywc.png | Bin 0 -> 918 bytes monitor/pages/img/home/zl_bg.png | Bin 0 -> 5244 bytes monitor/pages/img/home/zl_icon.png | Bin 0 -> 309 bytes monitor/pages/img/home1.png | Bin 0 -> 1528 bytes monitor/pages/img/indoor.png | Bin 0 -> 1079 bytes monitor/pages/img/j.png | Bin 0 -> 144 bytes monitor/pages/img/jie.png | Bin 0 -> 1639 bytes monitor/pages/img/jie1.png | Bin 0 -> 1441 bytes monitor/pages/img/jksj_bg.png | Bin 0 -> 77289 bytes monitor/pages/img/jksj_bg2.png | Bin 0 -> 32137 bytes monitor/pages/img/js.png | Bin 0 -> 1256 bytes monitor/pages/img/js_bg.png | Bin 0 -> 20236 bytes monitor/pages/img/mo.png | Bin 0 -> 1989 bytes monitor/pages/img/my_bg.png | Bin 0 -> 45151 bytes monitor/pages/img/nav_back.png | Bin 0 -> 397 bytes monitor/pages/img/order.png | Bin 0 -> 1303 bytes monitor/pages/img/order1.png | Bin 0 -> 1354 bytes monitor/pages/img/order_icon.png | Bin 0 -> 1059 bytes monitor/pages/img/pai.png | Bin 0 -> 1623 bytes monitor/pages/img/pai1.png | Bin 0 -> 1465 bytes monitor/pages/img/password.png | Bin 0 -> 1133 bytes monitor/pages/img/password_eyes.png | Bin 0 -> 591 bytes monitor/pages/img/password_eyes_open.png | Bin 0 -> 583 bytes monitor/pages/img/rg.png | Bin 0 -> 1018 bytes monitor/pages/img/sbsj.png | Bin 0 -> 1089 bytes monitor/pages/img/scan.png | Bin 0 -> 1296 bytes monitor/pages/img/search.png | Bin 0 -> 841 bytes monitor/pages/img/select.png | Bin 0 -> 402 bytes monitor/pages/img/song.png | Bin 0 -> 1449 bytes monitor/pages/img/ssgl.png | Bin 0 -> 1401 bytes monitor/pages/img/tel.png | Bin 0 -> 1320 bytes monitor/pages/img/ti.png | Bin 0 -> 404 bytes monitor/pages/img/time.png | Bin 0 -> 1175 bytes monitor/pages/img/tz.png | Bin 0 -> 1168 bytes monitor/pages/img/unselect.png | Bin 0 -> 275 bytes monitor/pages/img/user.png | Bin 0 -> 1208 bytes monitor/pages/img/wd.png | Bin 0 -> 1779 bytes monitor/pages/img/weid.png | Bin 0 -> 1557 bytes monitor/pages/img/weixin.png | Bin 0 -> 2861 bytes monitor/pages/img/wl_icon.png | Bin 0 -> 1034 bytes monitor/pages/img/ywc_status.png | Bin 0 -> 1724 bytes monitor/pages/img/ywg_status.png | Bin 0 -> 1036 bytes monitor/pages/img/zhifubao.png | Bin 0 -> 3107 bytes monitor/pages/img/zl.png | Bin 0 -> 1070 bytes monitor/pages/lookImg/lookImg.js | 64 + monitor/pages/lookImg/lookImg.json | 3 + monitor/pages/lookImg/lookImg.wxml | 4 + monitor/pages/lookImg/lookImg.wxss | 4 + monitor/pages/materialApply/materialApply.js | 273 ++ .../pages/materialApply/materialApply.json | 6 + .../pages/materialApply/materialApply.wxml | 55 + .../pages/materialApply/materialApply.wxss | 52 + .../pages/materialDetail/materialDetail.js | 62 + .../pages/materialDetail/materialDetail.json | 4 + .../pages/materialDetail/materialDetail.wxml | 57 + .../pages/materialDetail/materialDetail.wxss | 10 + monitor/pages/materialList/materialList.js | 140 + monitor/pages/materialList/materialList.json | 6 + monitor/pages/materialList/materialList.wxml | 36 + monitor/pages/materialList/materialList.wxss | 95 + monitor/pages/materialUse/materialUse.js | 270 ++ monitor/pages/materialUse/materialUse.json | 4 + monitor/pages/materialUse/materialUse.wxml | 91 + monitor/pages/materialUse/materialUse.wxss | 24 + monitor/pages/myMaterial/myMaterial.js | 131 + monitor/pages/myMaterial/myMaterial.json | 6 + monitor/pages/myMaterial/myMaterial.wxml | 58 + monitor/pages/myMaterial/myMaterial.wxss | 49 + monitor/pages/notice/notice.js | 79 + monitor/pages/notice/notice.json | 6 + monitor/pages/notice/notice.wxml | 22 + monitor/pages/notice/notice.wxss | 17 + monitor/pages/noticeDetail/noticeDetail.js | 59 + monitor/pages/noticeDetail/noticeDetail.json | 3 + monitor/pages/noticeDetail/noticeDetail.wxml | 6 + monitor/pages/noticeDetail/noticeDetail.wxss | 20 + monitor/pages/settlement/settlement.js | 125 + monitor/pages/settlement/settlement.json | 6 + monitor/pages/settlement/settlement.wxml | 76 + monitor/pages/settlement/settlement.wxss | 50 + monitor/pages/station/station.js | 121 + monitor/pages/station/station.json | 10 + monitor/pages/station/station.wxml | 28 + monitor/pages/station/station.wxss | 42 + monitor/pages/stationDetail/stationDetail.js | 179 ++ .../pages/stationDetail/stationDetail.json | 6 + .../pages/stationDetail/stationDetail.wxml | 85 + .../pages/stationDetail/stationDetail.wxss | 37 + .../pages/technicaDetail/technicaDetail.js | 29 + .../pages/technicaDetail/technicaDetail.json | 3 + .../pages/technicaDetail/technicaDetail.wxml | 6 + .../pages/technicaDetail/technicaDetail.wxss | 19 + monitor/pages/technicalData/technicalData.js | 133 + .../pages/technicalData/technicalData.json | 3 + .../pages/technicalData/technicalData.wxml | 15 + .../pages/technicalData/technicalData.wxss | 3 + .../pages/workOrder/backDetail/backDetail.js | 62 + .../workOrder/backDetail/backDetail.json | 6 + .../workOrder/backDetail/backDetail.wxml | 16 + .../workOrder/backDetail/backDetail.wxss | 4 + monitor/pages/workOrder/order/order.js | 235 ++ monitor/pages/workOrder/order/order.json | 10 + monitor/pages/workOrder/order/order.wxml | 62 + monitor/pages/workOrder/order/order.wxss | 151 + .../workOrder/orderDetail/orderDetail.js | 103 + .../workOrder/orderDetail/orderDetail.json | 9 + .../workOrder/orderDetail/orderDetail.wxml | 83 + .../workOrder/orderDetail/orderDetail.wxss | 144 + .../workOrder/orderDetail2/orderDetail2.js | 606 ++++ .../workOrder/orderDetail2/orderDetail2.json | 8 + .../workOrder/orderDetail2/orderDetail2.wxml | 220 ++ .../workOrder/orderDetail2/orderDetail2.wxss | 30 + other/components/userInfo/userInfo.js | 55 + other/components/userInfo/userInfo.json | 4 + other/components/userInfo/userInfo.wxml | 38 + other/components/userInfo/userInfo.wxss | 54 + other/img/addr.png | Bin 0 -> 1499 bytes other/img/arrow.png | Bin 0 -> 498 bytes other/img/content-list-info-address-img.png | Bin 0 -> 503 bytes other/img/content-list-info-top-name-img.png | Bin 0 -> 608 bytes other/img/content-list-type-11.png | Bin 0 -> 648 bytes other/img/content-list-type-35.png | Bin 0 -> 587 bytes other/img/content-list-type-3letter.png | Bin 0 -> 1734 bytes other/img/content-list-type-6letter.png | Bin 0 -> 1753 bytes other/img/content-list-type-dys.png | Bin 0 -> 755 bytes other/img/content-list-type-dzg.png | Bin 0 -> 731 bytes other/img/content-list-type-dzgys.png | Bin 0 -> 1002 bytes other/img/content-list-type-wfys.png | Bin 0 -> 843 bytes other/img/content-list-type-ystg.png | Bin 0 -> 855 bytes other/img/content-list-type-zgysbh.png | Bin 0 -> 1087 bytes other/img/copy.png | Bin 0 -> 1176 bytes other/img/icon-search-white.png | Bin 0 -> 2381 bytes other/img/navigation.png | Bin 0 -> 1697 bytes other/img/tel.png | Bin 0 -> 2192 bytes other/pages/dispatch/dispatch.js | 149 + other/pages/dispatch/dispatch.json | 10 + other/pages/dispatch/dispatch.wxml | 42 + other/pages/dispatch/dispatch.wxss | 42 + other/pages/infoList/infoList.js | 160 + other/pages/infoList/infoList.json | 9 + other/pages/infoList/infoList.wxml | 85 + other/pages/infoList/infoList.wxss | 236 ++ other/pages/qualityAccept/qualityAccept.js | 419 +++ other/pages/qualityAccept/qualityAccept.json | 7 + other/pages/qualityAccept/qualityAccept.wxml | 336 +++ other/pages/qualityAccept/qualityAccept.wxss | 140 + .../qualityAcceptDetail.js | 77 + .../qualityAcceptDetail.json | 7 + .../qualityAcceptDetail.wxml | 38 + .../qualityAcceptDetail.wxss | 6 + .../qualityAcceptList/qualityAcceptList.js | 253 ++ .../qualityAcceptList/qualityAcceptList.json | 6 + .../qualityAcceptList/qualityAcceptList.wxml | 101 + .../qualityAcceptList/qualityAcceptList.wxss | 31 + other/pages/rectification/rectification.js | 167 ++ other/pages/rectification/rectification.json | 9 + other/pages/rectification/rectification.wxml | 96 + other/pages/rectification/rectification.wxss | 195 ++ other/pages/rectifyForm/rectifyForm.js | 305 ++ other/pages/rectifyForm/rectifyForm.json | 8 + other/pages/rectifyForm/rectifyForm.wxml | 127 + other/pages/rectifyForm/rectifyForm.wxss | 142 + other/pages/unableAccept/unableAccept.js | 210 ++ other/pages/unableAccept/unableAccept.json | 6 + other/pages/unableAccept/unableAccept.wxml | 18 + other/pages/unableAccept/unableAccept.wxss | 65 + package-lock.json | 66 + package.json | 19 + pages/appRecord/appRecord.js | 69 + pages/appRecord/appRecord.json | 4 + pages/appRecord/appRecord.wxml | 48 + pages/appRecord/appRecord.wxss | 16 + pages/forgotPassword/forgotPassword.js | 167 ++ pages/forgotPassword/forgotPassword.json | 6 + pages/forgotPassword/forgotPassword.wxml | 26 + pages/forgotPassword/forgotPassword.wxss | 81 + pages/home/components/title/title.js | 23 + pages/home/components/title/title.json | 4 + pages/home/components/title/title.wxml | 5 + pages/home/components/title/title.wxss | 22 + pages/home/components/titleItem/titleItem.js | 121 + .../home/components/titleItem/titleItem.json | 6 + .../home/components/titleItem/titleItem.wxml | 99 + .../home/components/titleItem/titleItem.wxss | 120 + pages/home/home.js | 317 ++ pages/home/home.json | 7 + pages/home/home.wxml | 6 + pages/home/home.wxss | 10 + pages/index/index.js | 237 ++ pages/index/index.json | 11 + pages/index/index.wxml | 38 + pages/index/index.wxss | 102 + pages/map/map.js | 134 + pages/map/map.json | 5 + pages/map/map.wxml | 9 + pages/map/map.wxss | 9 + pages/mine/mine.js | 71 + pages/mine/mine.json | 6 + pages/mine/mine.wxml | 34 + pages/mine/mine.wxss | 186 ++ pages/pend/pend.js | 126 + pages/pend/pend.json | 5 + pages/pend/pend.wxml | 19 + pages/pend/pend.wxss | 11 + pages/scanCode/scanCode.js | 268 ++ pages/scanCode/scanCode.json | 6 + pages/scanCode/scanCode.wxml | 16 + pages/scanCode/scanCode.wxss | 11 + pages/startPage/startPage.js | 141 + pages/startPage/startPage.json | 4 + pages/startPage/startPage.wxml | 4 + pages/startPage/startPage.wxss | 31 + pages/traderList/traderList.js | 135 + pages/traderList/traderList.json | 8 + pages/traderList/traderList.wxml | 32 + pages/traderList/traderList.wxss | 42 + project.config.json | 57 + project.private.config.json | 9 + sitemap.json | 10 + utils/addWatermark.js | 173 ++ utils/addWatermark2.js | 116 + utils/getLocation.js | 61 + utils/permission.js | 38 + utils/route.js | 41 + utils/util.js | 693 +++++ wxs/util.wxs | 128 + 1135 files changed, 76149 insertions(+) create mode 100644 .gitignore create mode 100644 README.en.md create mode 100644 README.md create mode 100644 api/api.js create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 components/bankLink/bankLink.js create mode 100644 components/bankLink/bankLink.json create mode 100644 components/bankLink/bankLink.wxml create mode 100644 components/bankLink/bankLink.wxss create mode 100644 components/region/region.js create mode 100644 components/region/region.json create mode 100644 components/region/region.wxml create mode 100644 components/region/region.wxss create mode 100644 components/statusBar/statusBar.js create mode 100644 components/statusBar/statusBar.json create mode 100644 components/statusBar/statusBar.wxml create mode 100644 components/statusBar/statusBar.wxss create mode 100644 custom-tab-bar/index.js create mode 100644 custom-tab-bar/index.json create mode 100644 custom-tab-bar/index.wxml create mode 100644 custom-tab-bar/index.wxss create mode 100644 home/components/finish/finish.js create mode 100644 home/components/finish/finish.json create mode 100644 home/components/finish/finish.wxml create mode 100644 home/components/finish/finish.wxss create mode 100644 home/components/finishHR/finishHR.js create mode 100644 home/components/finishHR/finishHR.json create mode 100644 home/components/finishHR/finishHR.wxml create mode 100644 home/components/finishHR/finishHR.wxss create mode 100644 home/components/infor/infor.js create mode 100644 home/components/infor/infor.json create mode 100644 home/components/infor/infor.wxml create mode 100644 home/components/infor/infor.wxss create mode 100644 home/components/install/install.js create mode 100644 home/components/install/install.json create mode 100644 home/components/install/install.wxml create mode 100644 home/components/install/install.wxss create mode 100644 home/components/installHR/installHR.js create mode 100644 home/components/installHR/installHR.json create mode 100644 home/components/installHR/installHR.wxml create mode 100644 home/components/installHR/installHR.wxss create mode 100644 home/components/onGrid/onGrid.js create mode 100644 home/components/onGrid/onGrid.json create mode 100644 home/components/onGrid/onGrid.wxml create mode 100644 home/components/onGrid/onGrid.wxss create mode 100644 home/components/survey/survey.js create mode 100644 home/components/survey/survey.json create mode 100644 home/components/survey/survey.wxml create mode 100644 home/components/survey/survey.wxss create mode 100644 home/components/surveyHR/surveyHR.js create mode 100644 home/components/surveyHR/surveyHR.json create mode 100644 home/components/surveyHR/surveyHR.wxml create mode 100644 home/components/surveyHR/surveyHR.wxss create mode 100644 home/components/userInfo/userInfo.js create mode 100644 home/components/userInfo/userInfo.json create mode 100644 home/components/userInfo/userInfo.wxml create mode 100644 home/components/userInfo/userInfo.wxss create mode 100644 home/img/addr.png create mode 100644 home/img/arrow.png create mode 100644 home/img/attention.png create mode 100644 home/img/bank-card-1.png create mode 100644 home/img/canvas-date.png create mode 100644 home/img/canvas-location.png create mode 100644 home/img/canvas-people.png create mode 100644 home/img/content-function-acceptance-img.png create mode 100644 home/img/content-function-phone-img.png create mode 100644 home/img/content-function-watch-img.png create mode 100644 home/img/content-list-info-address-img.png create mode 100644 home/img/content-list-info-top-deg-img.png create mode 100644 home/img/content-list-info-top-house-img.png create mode 100644 home/img/content-list-info-top-name-img.png create mode 100644 home/img/content-list-num-img.png create mode 100644 home/img/content-list-type-1.png create mode 100644 home/img/content-list-type-10.png create mode 100644 home/img/content-list-type-11.png create mode 100644 home/img/content-list-type-12.png create mode 100644 home/img/content-list-type-13.png create mode 100644 home/img/content-list-type-14.png create mode 100644 home/img/content-list-type-15.png create mode 100644 home/img/content-list-type-16.png create mode 100644 home/img/content-list-type-17.png create mode 100644 home/img/content-list-type-18.png create mode 100644 home/img/content-list-type-19.png create mode 100644 home/img/content-list-type-2.png create mode 100644 home/img/content-list-type-20.png create mode 100644 home/img/content-list-type-21.png create mode 100644 home/img/content-list-type-22.png create mode 100644 home/img/content-list-type-23.png create mode 100644 home/img/content-list-type-24.png create mode 100644 home/img/content-list-type-25.png create mode 100644 home/img/content-list-type-26.png create mode 100644 home/img/content-list-type-27.png create mode 100644 home/img/content-list-type-28.png create mode 100644 home/img/content-list-type-29.png create mode 100644 home/img/content-list-type-3.png create mode 100644 home/img/content-list-type-30.png create mode 100644 home/img/content-list-type-31.png create mode 100644 home/img/content-list-type-32.png create mode 100644 home/img/content-list-type-33.png create mode 100644 home/img/content-list-type-34.png create mode 100644 home/img/content-list-type-35.png create mode 100644 home/img/content-list-type-36.png create mode 100644 home/img/content-list-type-37.png create mode 100644 home/img/content-list-type-38.png create mode 100644 home/img/content-list-type-39.png create mode 100644 home/img/content-list-type-4.png create mode 100644 home/img/content-list-type-40.png create mode 100644 home/img/content-list-type-42.png create mode 100644 home/img/content-list-type-43.png create mode 100644 home/img/content-list-type-44.png create mode 100644 home/img/content-list-type-45.png create mode 100644 home/img/content-list-type-46.png create mode 100644 home/img/content-list-type-5.png create mode 100644 home/img/content-list-type-6-.png create mode 100644 home/img/content-list-type-6.png create mode 100644 home/img/content-list-type-7.png create mode 100644 home/img/content-list-type-8.png create mode 100644 home/img/content-list-type-9.png create mode 100644 home/img/content-list-type-dfq.png create mode 100644 home/img/content-list-type-dgz.png create mode 100644 home/img/content-list-type-dsc.png create mode 100644 home/img/content-list-type-gwddr.png create mode 100644 home/img/content-list-type-gwdsq.png create mode 100644 home/img/content-list-type-gzz.png create mode 100644 home/img/content-list-type-qsz.png create mode 100644 home/img/content-list-type-wsc.png create mode 100644 home/img/content-list-type-ycx.png create mode 100644 home/img/content-list-type-ygq.png create mode 100644 home/img/content-list-type-yjq.png create mode 100644 home/img/content-list-type-ysc.png create mode 100644 home/img/content-list-type-zf.png create mode 100644 home/img/content-list-type-zfshbh.png create mode 100644 home/img/copy.png create mode 100644 home/img/delete.png create mode 100644 home/img/icon-filter.png create mode 100644 home/img/icon-search-white.png create mode 100644 home/img/id-card-0.png create mode 100644 home/img/id-card-1.png create mode 100644 home/img/img-account.png create mode 100644 home/img/img-add.png create mode 100644 home/img/img-base.png create mode 100644 home/img/img-fly-1.png create mode 100644 home/img/img-fly-2.png create mode 100644 home/img/img-fwzm.png create mode 100644 home/img/img-houseCertificates.png create mode 100644 home/img/img-inside.png create mode 100644 home/img/img-nbqwzImg.png create mode 100644 home/img/img-outward.png create mode 100644 home/img/img-pdxwzImg.png create mode 100644 home/img/img-phone-1.png create mode 100644 home/img/img-phone-2.png create mode 100644 home/img/img-phone-3.png create mode 100644 home/img/img-phone-4.png create mode 100644 home/img/img-record.png create mode 100644 home/img/img-recordList.png create mode 100644 home/img/img-roof.png create mode 100644 home/img/img-roofVideo.png create mode 100644 home/img/img-shxx1.png create mode 100644 home/img/img-shxx2.png create mode 100644 home/img/img-visa.png create mode 100644 home/img/img-zaw.png create mode 100644 home/img/img-zjcsImg.png create mode 100644 home/img/img-zjhsImg.png create mode 100644 home/img/img-zjpbImg.png create mode 100644 home/img/img-zjzxImg.png create mode 100644 home/img/left.png create mode 100644 home/img/local.png create mode 100644 home/img/map-bg.png create mode 100644 home/img/navigation.png create mode 100644 home/img/scan-code.png create mode 100644 home/img/tel.png create mode 100644 home/img/watermark.png create mode 100644 home/pages/3days/3days.js create mode 100644 home/pages/3days/3days.json create mode 100644 home/pages/3days/3days.wxml create mode 100644 home/pages/3days/3days.wxss create mode 100644 home/pages/acceptance/acceptance.js create mode 100644 home/pages/acceptance/acceptance.json create mode 100644 home/pages/acceptance/acceptance.wxml create mode 100644 home/pages/acceptance/acceptance.wxss create mode 100644 home/pages/acceptanceAZ/acceptanceAZ.js create mode 100644 home/pages/acceptanceAZ/acceptanceAZ.json create mode 100644 home/pages/acceptanceAZ/acceptanceAZ.wxml create mode 100644 home/pages/acceptanceAZ/acceptanceAZ.wxss create mode 100644 home/pages/acceptanceBW/acceptanceBW.js create mode 100644 home/pages/acceptanceBW/acceptanceBW.json create mode 100644 home/pages/acceptanceBW/acceptanceBW.wxml create mode 100644 home/pages/acceptanceBW/acceptanceBW.wxss create mode 100644 home/pages/bankCardDetail/bankCardDetail.js create mode 100644 home/pages/bankCardDetail/bankCardDetail.json create mode 100644 home/pages/bankCardDetail/bankCardDetail.wxml create mode 100644 home/pages/bankCardDetail/bankCardDetail.wxss create mode 100644 home/pages/bwForm/bwForm.js create mode 100644 home/pages/bwForm/bwForm.json create mode 100644 home/pages/bwForm/bwForm.wxml create mode 100644 home/pages/bwForm/bwForm.wxss create mode 100644 home/pages/completion/completion.js create mode 100644 home/pages/completion/completion.json create mode 100644 home/pages/completion/completion.wxml create mode 100644 home/pages/completion/completion.wxss create mode 100644 home/pages/completionHR/completionHR.js create mode 100644 home/pages/completionHR/completionHR.json create mode 100644 home/pages/completionHR/completionHR.wxml create mode 100644 home/pages/completionHR/completionHR.wxss create mode 100644 home/pages/converge/converge.js create mode 100644 home/pages/converge/converge.json create mode 100644 home/pages/converge/converge.wxml create mode 100644 home/pages/converge/converge.wxss create mode 100644 home/pages/customDetails/customDetails.js create mode 100644 home/pages/customDetails/customDetails.json create mode 100644 home/pages/customDetails/customDetails.wxml create mode 100644 home/pages/customDetails/customDetails.wxss create mode 100644 home/pages/customList/customList.js create mode 100644 home/pages/customList/customList.json create mode 100644 home/pages/customList/customList.wxml create mode 100644 home/pages/customList/customList.wxss create mode 100644 home/pages/dataScreening/dataScreening.js create mode 100644 home/pages/dataScreening/dataScreening.json create mode 100644 home/pages/dataScreening/dataScreening.wxml create mode 100644 home/pages/dataScreening/dataScreening.wxss create mode 100644 home/pages/dataScreeningDetails/dataScreeningDetails.js create mode 100644 home/pages/dataScreeningDetails/dataScreeningDetails.json create mode 100644 home/pages/dataScreeningDetails/dataScreeningDetails.wxml create mode 100644 home/pages/dataScreeningDetails/dataScreeningDetails.wxss create mode 100644 home/pages/dispatch/dispatch.js create mode 100644 home/pages/dispatch/dispatch.json create mode 100644 home/pages/dispatch/dispatch.wxml create mode 100644 home/pages/dispatch/dispatch.wxss create mode 100644 home/pages/entryInfo/entryInfo.js create mode 100644 home/pages/entryInfo/entryInfo.json create mode 100644 home/pages/entryInfo/entryInfo.wxml create mode 100644 home/pages/entryInfo/entryInfo.wxss create mode 100644 home/pages/entryInfoAudit/entryInfoAudit.js create mode 100644 home/pages/entryInfoAudit/entryInfoAudit.json create mode 100644 home/pages/entryInfoAudit/entryInfoAudit.wxml create mode 100644 home/pages/entryInfoAudit/entryInfoAudit.wxss create mode 100644 home/pages/entryInfoAuditHR/entryInfoAuditHR.js create mode 100644 home/pages/entryInfoAuditHR/entryInfoAuditHR.json create mode 100644 home/pages/entryInfoAuditHR/entryInfoAuditHR.wxml create mode 100644 home/pages/entryInfoAuditHR/entryInfoAuditHR.wxss create mode 100644 home/pages/entryInfoBT/entryInfoBT.js create mode 100644 home/pages/entryInfoBT/entryInfoBT.json create mode 100644 home/pages/entryInfoBT/entryInfoBT.wxml create mode 100644 home/pages/entryInfoBT/entryInfoBT.wxss create mode 100644 home/pages/entryInfoDetails/entryInfoDetails.js create mode 100644 home/pages/entryInfoDetails/entryInfoDetails.json create mode 100644 home/pages/entryInfoDetails/entryInfoDetails.wxml create mode 100644 home/pages/entryInfoDetails/entryInfoDetails.wxss create mode 100644 home/pages/filesForm/filesForm.js create mode 100644 home/pages/filesForm/filesForm.json create mode 100644 home/pages/filesForm/filesForm.wxml create mode 100644 home/pages/filesForm/filesForm.wxss create mode 100644 home/pages/infoRegistration/infoRegistration.js create mode 100644 home/pages/infoRegistration/infoRegistration.json create mode 100644 home/pages/infoRegistration/infoRegistration.wxml create mode 100644 home/pages/infoRegistration/infoRegistration.wxs create mode 100644 home/pages/infoRegistration/infoRegistration.wxss create mode 100644 home/pages/install/install.js create mode 100644 home/pages/install/install.json create mode 100644 home/pages/install/install.wxml create mode 100644 home/pages/install/install.wxss create mode 100644 home/pages/installHR/installHR.js create mode 100644 home/pages/installHR/installHR.json create mode 100644 home/pages/installHR/installHR.wxml create mode 100644 home/pages/installHR/installHR.wxss create mode 100644 home/pages/installOwn/installOwn.js create mode 100644 home/pages/installOwn/installOwn.json create mode 100644 home/pages/installOwn/installOwn.wxml create mode 100644 home/pages/installOwn/installOwn.wxss create mode 100644 home/pages/installSelfAudit/installSelfAudit.js create mode 100644 home/pages/installSelfAudit/installSelfAudit.json create mode 100644 home/pages/installSelfAudit/installSelfAudit.wxml create mode 100644 home/pages/installSelfAudit/installSelfAudit.wxss create mode 100644 home/pages/ownerForm/ownerForm.js create mode 100644 home/pages/ownerForm/ownerForm.json create mode 100644 home/pages/ownerForm/ownerForm.wxml create mode 100644 home/pages/ownerForm/ownerForm.wxss create mode 100644 home/pages/surveyForm/surveyForm.js create mode 100644 home/pages/surveyForm/surveyForm.json create mode 100644 home/pages/surveyForm/surveyForm.wxml create mode 100644 home/pages/surveyForm/surveyForm.wxss create mode 100644 home/pages/surveyFormHr/surveyFormHr.js create mode 100644 home/pages/surveyFormHr/surveyFormHr.json create mode 100644 home/pages/surveyFormHr/surveyFormHr.wxml create mode 100644 home/pages/surveyFormHr/surveyFormHr.wxss create mode 100644 home/pages/uploadContract/uploadContract.js create mode 100644 home/pages/uploadContract/uploadContract.json create mode 100644 home/pages/uploadContract/uploadContract.wxml create mode 100644 home/pages/uploadContract/uploadContract.wxss create mode 100644 home/pages/viewSchema/viewSchema.js create mode 100644 home/pages/viewSchema/viewSchema.json create mode 100644 home/pages/viewSchema/viewSchema.wxml create mode 100644 home/pages/viewSchema/viewSchema.wxss create mode 100644 home/pages/webView/webView.js create mode 100644 home/pages/webView/webView.json create mode 100644 home/pages/webView/webView.wxml create mode 100644 home/pages/webView/webView.wxss create mode 100644 img/about-address.png create mode 100644 img/about-mailbox.png create mode 100644 img/about-service.png create mode 100644 img/add.png create mode 100644 img/arrow.png create mode 100644 img/banner.png create mode 100644 img/bj.jpg create mode 100644 img/canvas-location.png create mode 100644 img/content-list-info-address-img.png create mode 100644 img/fix-1.png create mode 100644 img/fix-2.png create mode 100644 img/fix-3.png create mode 100644 img/fix-4.png create mode 100644 img/home-se.png create mode 100644 img/home.png create mode 100644 img/home_dash.png create mode 100644 img/home_dzda.png create mode 100644 img/home_gwsq.png create mode 100644 img/icon-search-white.png create mode 100644 img/interconnection-1.png create mode 100644 img/interconnection-2.png create mode 100644 img/interconnection-3.png create mode 100644 img/jrnbq.png create mode 100644 img/left-black.png create mode 100644 img/left.png create mode 100644 img/login-bg.jpg create mode 100644 img/login.png create mode 100644 img/login2.png create mode 100644 img/min.png create mode 100644 img/mine-se.png create mode 100644 img/mine.png create mode 100644 img/mine_i_contactus.png create mode 100644 img/mine_i_order.png create mode 100644 img/mine_i_setting.png create mode 100644 img/over-1.png create mode 100644 img/over-2.png create mode 100644 img/pend-se.png create mode 100644 img/pend-tips.png create mode 100644 img/pend.png create mode 100644 img/personal_center_bg.jpg create mode 100644 img/personal_default_head.png create mode 100644 img/personal_info_bg.png create mode 100644 img/plan-1.png create mode 100644 img/plan-2.png create mode 100644 img/plan-3.png create mode 100644 img/plan-4.png create mode 100644 img/shbh.png create mode 100644 img/shtg.png create mode 100644 img/swichBtn.png create mode 100644 img/swichUser.png create mode 100644 mine/pages/contactUs/contactUs.js create mode 100644 mine/pages/contactUs/contactUs.json create mode 100644 mine/pages/contactUs/contactUs.wxml create mode 100644 mine/pages/contactUs/contactUs.wxss create mode 100644 mine/pages/customerService/customerService.js create mode 100644 mine/pages/customerService/customerService.json create mode 100644 mine/pages/customerService/customerService.wxml create mode 100644 mine/pages/customerService/customerService.wxss create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.js create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.json create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/action-sheet/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/area/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/area/index.js create mode 100644 miniprogram_npm/@vant/weapp/area/index.json create mode 100644 miniprogram_npm/@vant/weapp/area/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/area/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/area/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/button/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/button/index.js create mode 100644 miniprogram_npm/@vant/weapp/button/index.json create mode 100644 miniprogram_npm/@vant/weapp/button/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/button/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/button/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/calendar.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.json create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.json create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.json create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/calendar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/calendar/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/calendar/utils.js create mode 100644 miniprogram_npm/@vant/weapp/calendar/utils.wxs create mode 100644 miniprogram_npm/@vant/weapp/card/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/card/index.js create mode 100644 miniprogram_npm/@vant/weapp/card/index.json create mode 100644 miniprogram_npm/@vant/weapp/card/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/card/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.js create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.json create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/cascader/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.js create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.json create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/cell-group/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/cell/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/cell/index.js create mode 100644 miniprogram_npm/@vant/weapp/cell/index.json create mode 100644 miniprogram_npm/@vant/weapp/cell/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/cell/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/cell/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.js create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.json create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/checkbox-group/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.js create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.json create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/checkbox/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/circle/canvas.d.ts create mode 100644 miniprogram_npm/@vant/weapp/circle/canvas.js create mode 100644 miniprogram_npm/@vant/weapp/circle/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/circle/index.js create mode 100644 miniprogram_npm/@vant/weapp/circle/index.json create mode 100644 miniprogram_npm/@vant/weapp/circle/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/circle/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/col/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/col/index.js create mode 100644 miniprogram_npm/@vant/weapp/col/index.json create mode 100644 miniprogram_npm/@vant/weapp/col/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/col/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/col/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/animate.d.ts create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/animate.js create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/collapse-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.js create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.json create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/collapse/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/color.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/color.js create mode 100644 miniprogram_npm/@vant/weapp/common/component.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/component.js create mode 100644 miniprogram_npm/@vant/weapp/common/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/relation.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/relation.js create mode 100644 miniprogram_npm/@vant/weapp/common/style/clearfix.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/hairline.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/style/var.wxss create mode 100644 miniprogram_npm/@vant/weapp/common/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/utils.js create mode 100644 miniprogram_npm/@vant/weapp/common/validator.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/validator.js create mode 100644 miniprogram_npm/@vant/weapp/common/version.d.ts create mode 100644 miniprogram_npm/@vant/weapp/common/version.js create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.js create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.json create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/config-provider/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.js create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.json create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/count-down/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/count-down/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/count-down/utils.js create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.js create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.json create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/datetime-picker/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/definitions/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/definitions/index.js create mode 100644 miniprogram_npm/@vant/weapp/dialog/dialog.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dialog/dialog.js create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.js create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.json create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/dialog/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/divider/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/divider/index.js create mode 100644 miniprogram_npm/@vant/weapp/divider/index.json create mode 100644 miniprogram_npm/@vant/weapp/divider/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/divider/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/divider/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/shared.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dropdown-item/shared.js create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.js create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.json create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/empty/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/empty/index.js create mode 100644 miniprogram_npm/@vant/weapp/empty/index.json create mode 100644 miniprogram_npm/@vant/weapp/empty/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/empty/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/empty/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/field/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/field/index.js create mode 100644 miniprogram_npm/@vant/weapp/field/index.json create mode 100644 miniprogram_npm/@vant/weapp/field/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/field/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/field/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/field/input.wxml create mode 100644 miniprogram_npm/@vant/weapp/field/props.d.ts create mode 100644 miniprogram_npm/@vant/weapp/field/props.js create mode 100644 miniprogram_npm/@vant/weapp/field/textarea.wxml create mode 100644 miniprogram_npm/@vant/weapp/field/types.d.ts create mode 100644 miniprogram_npm/@vant/weapp/field/types.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.json create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/goods-action-button/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.json create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/goods-action-icon/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.js create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.json create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/goods-action/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/grid-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/grid/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/grid/index.js create mode 100644 miniprogram_npm/@vant/weapp/grid/index.json create mode 100644 miniprogram_npm/@vant/weapp/grid/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/grid/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/grid/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/icon/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/icon/index.js create mode 100644 miniprogram_npm/@vant/weapp/icon/index.json create mode 100644 miniprogram_npm/@vant/weapp/icon/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/icon/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/icon/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/image/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/image/index.js create mode 100644 miniprogram_npm/@vant/weapp/image/index.json create mode 100644 miniprogram_npm/@vant/weapp/image/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/image/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/image/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.js create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.json create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/index-anchor/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/index-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/info/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/info/index.js create mode 100644 miniprogram_npm/@vant/weapp/info/index.json create mode 100644 miniprogram_npm/@vant/weapp/info/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/info/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/loading/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/loading/index.js create mode 100644 miniprogram_npm/@vant/weapp/loading/index.json create mode 100644 miniprogram_npm/@vant/weapp/loading/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/loading/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/loading/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/mixins/basic.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/basic.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/button.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/button.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/link.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/link.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/page-scroll.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/page-scroll.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/touch.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/touch.js create mode 100644 miniprogram_npm/@vant/weapp/mixins/transition.d.ts create mode 100644 miniprogram_npm/@vant/weapp/mixins/transition.js create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/nav-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/notice-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/notify/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/notify/index.js create mode 100644 miniprogram_npm/@vant/weapp/notify/index.json create mode 100644 miniprogram_npm/@vant/weapp/notify/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/notify/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/notify/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/notify/notify.d.ts create mode 100644 miniprogram_npm/@vant/weapp/notify/notify.js create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.js create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.json create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/overlay/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/overlay/overlay.wxml create mode 100644 miniprogram_npm/@vant/weapp/panel/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/panel/index.js create mode 100644 miniprogram_npm/@vant/weapp/panel/index.json create mode 100644 miniprogram_npm/@vant/weapp/panel/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/panel/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.js create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.json create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/picker-column/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/picker/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/picker/index.js create mode 100644 miniprogram_npm/@vant/weapp/picker/index.json create mode 100644 miniprogram_npm/@vant/weapp/picker/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/picker/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/picker/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/picker/shared.d.ts create mode 100644 miniprogram_npm/@vant/weapp/picker/shared.js create mode 100644 miniprogram_npm/@vant/weapp/picker/toolbar.wxml create mode 100644 miniprogram_npm/@vant/weapp/popup/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/popup/index.js create mode 100644 miniprogram_npm/@vant/weapp/popup/index.json create mode 100644 miniprogram_npm/@vant/weapp/popup/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/popup/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/popup/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/popup/popup.wxml create mode 100644 miniprogram_npm/@vant/weapp/progress/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/progress/index.js create mode 100644 miniprogram_npm/@vant/weapp/progress/index.json create mode 100644 miniprogram_npm/@vant/weapp/progress/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/progress/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/progress/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.js create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.json create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/radio-group/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/radio/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/radio/index.js create mode 100644 miniprogram_npm/@vant/weapp/radio/index.json create mode 100644 miniprogram_npm/@vant/weapp/radio/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/radio/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/radio/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/rate/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/rate/index.js create mode 100644 miniprogram_npm/@vant/weapp/rate/index.json create mode 100644 miniprogram_npm/@vant/weapp/rate/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/rate/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/row/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/row/index.js create mode 100644 miniprogram_npm/@vant/weapp/row/index.json create mode 100644 miniprogram_npm/@vant/weapp/row/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/row/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/row/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/search/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/search/index.js create mode 100644 miniprogram_npm/@vant/weapp/search/index.json create mode 100644 miniprogram_npm/@vant/weapp/search/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/search/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.js create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.json create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.d.ts create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.js create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.json create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.wxml create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.wxs create mode 100644 miniprogram_npm/@vant/weapp/share-sheet/options.wxss create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/sidebar-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.js create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.json create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/sidebar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.js create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.json create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/skeleton/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/slider/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/slider/index.js create mode 100644 miniprogram_npm/@vant/weapp/slider/index.json create mode 100644 miniprogram_npm/@vant/weapp/slider/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/slider/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/slider/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.js create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.json create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/stepper/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/steps/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/steps/index.js create mode 100644 miniprogram_npm/@vant/weapp/steps/index.json create mode 100644 miniprogram_npm/@vant/weapp/steps/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/steps/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.js create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.json create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/sticky/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.js create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.json create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/submit-bar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.js create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.json create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/swipe-cell/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/switch/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/switch/index.js create mode 100644 miniprogram_npm/@vant/weapp/switch/index.json create mode 100644 miniprogram_npm/@vant/weapp/switch/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/switch/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/switch/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tab/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tab/index.js create mode 100644 miniprogram_npm/@vant/weapp/tab/index.json create mode 100644 miniprogram_npm/@vant/weapp/tab/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tab/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.js create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.json create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tabbar-item/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.js create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.json create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tabbar/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.js create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.json create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/tabs/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tag/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tag/index.js create mode 100644 miniprogram_npm/@vant/weapp/tag/index.json create mode 100644 miniprogram_npm/@vant/weapp/tag/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tag/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/tag/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/toast/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/toast/index.js create mode 100644 miniprogram_npm/@vant/weapp/toast/index.json create mode 100644 miniprogram_npm/@vant/weapp/toast/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/toast/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/toast/toast.d.ts create mode 100644 miniprogram_npm/@vant/weapp/toast/toast.js create mode 100644 miniprogram_npm/@vant/weapp/transition/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/transition/index.js create mode 100644 miniprogram_npm/@vant/weapp/transition/index.json create mode 100644 miniprogram_npm/@vant/weapp/transition/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/transition/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/transition/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.js create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.json create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/tree-select/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.d.ts create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.js create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.json create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.wxml create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.wxs create mode 100644 miniprogram_npm/@vant/weapp/uploader/index.wxss create mode 100644 miniprogram_npm/@vant/weapp/uploader/shared.d.ts create mode 100644 miniprogram_npm/@vant/weapp/uploader/shared.js create mode 100644 miniprogram_npm/@vant/weapp/uploader/utils.d.ts create mode 100644 miniprogram_npm/@vant/weapp/uploader/utils.js create mode 100644 miniprogram_npm/@vant/weapp/wxs/add-unit.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/array.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/bem.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/memoize.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/object.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/style.wxs create mode 100644 miniprogram_npm/@vant/weapp/wxs/utils.wxs create mode 100644 miniprogram_npm/dayjs/index.js create mode 100644 miniprogram_npm/dayjs/index.js.map create mode 100644 miniprogram_npm/weapp-qrcode-canvas-2d/index.js create mode 100644 miniprogram_npm/weapp-qrcode-canvas-2d/index.js.map create mode 100644 monitor/ec-canvas/ec-canvas.js create mode 100644 monitor/ec-canvas/ec-canvas.json create mode 100644 monitor/ec-canvas/ec-canvas.wxml create mode 100644 monitor/ec-canvas/ec-canvas.wxss create mode 100644 monitor/ec-canvas/echarts.js create mode 100644 monitor/ec-canvas/wx-canvas.js create mode 100644 monitor/pages/addMaterial/addMaterial.js create mode 100644 monitor/pages/addMaterial/addMaterial.json create mode 100644 monitor/pages/addMaterial/addMaterial.wxml create mode 100644 monitor/pages/addMaterial/addMaterial.wxss create mode 100644 monitor/pages/center/center.js create mode 100644 monitor/pages/center/center.json create mode 100644 monitor/pages/center/center.wxml create mode 100644 monitor/pages/center/center.wxss create mode 100644 monitor/pages/components/baseInfo/baseInfo.js create mode 100644 monitor/pages/components/baseInfo/baseInfo.json create mode 100644 monitor/pages/components/baseInfo/baseInfo.wxml create mode 100644 monitor/pages/components/baseInfo/baseInfo.wxss create mode 100644 monitor/pages/components/feedBackRecord/feedBackRecord.js create mode 100644 monitor/pages/components/feedBackRecord/feedBackRecord.json create mode 100644 monitor/pages/components/feedBackRecord/feedBackRecord.wxml create mode 100644 monitor/pages/components/feedBackRecord/feedBackRecord.wxss create mode 100644 monitor/pages/components/tabBar/tabBar.js create mode 100644 monitor/pages/components/tabBar/tabBar.json create mode 100644 monitor/pages/components/tabBar/tabBar.wxml create mode 100644 monitor/pages/components/tabBar/tabBar.wxss create mode 100644 monitor/pages/components/timePicker/timePicker.js create mode 100644 monitor/pages/components/timePicker/timePicker.json create mode 100644 monitor/pages/components/timePicker/timePicker.wxml create mode 100644 monitor/pages/components/timePicker/timePicker.wxss create mode 100644 monitor/pages/deviceDetail/deviceDetail.js create mode 100644 monitor/pages/deviceDetail/deviceDetail.json create mode 100644 monitor/pages/deviceDetail/deviceDetail.wxml create mode 100644 monitor/pages/deviceDetail/deviceDetail.wxss create mode 100644 monitor/pages/deviceList/deviceList.js create mode 100644 monitor/pages/deviceList/deviceList.json create mode 100644 monitor/pages/deviceList/deviceList.wxml create mode 100644 monitor/pages/deviceList/deviceList.wxss create mode 100644 monitor/pages/home/home.js create mode 100644 monitor/pages/home/home.json create mode 100644 monitor/pages/home/home.wxml create mode 100644 monitor/pages/home/home.wxss create mode 100644 monitor/pages/img/2.png create mode 100644 monitor/pages/img/3.png create mode 100644 monitor/pages/img/6.png create mode 100644 monitor/pages/img/addr.png create mode 100644 monitor/pages/img/base.png create mode 100644 monitor/pages/img/bj.png create mode 100644 monitor/pages/img/bj1.png create mode 100644 monitor/pages/img/camare.png create mode 100644 monitor/pages/img/center.png create mode 100644 monitor/pages/img/center1.png create mode 100644 monitor/pages/img/customer_bg.png create mode 100644 monitor/pages/img/date.png create mode 100644 monitor/pages/img/date_blue.png create mode 100644 monitor/pages/img/default_head.png create mode 100644 monitor/pages/img/delete.png create mode 100644 monitor/pages/img/dingwei.png create mode 100644 monitor/pages/img/djd_status.png create mode 100644 monitor/pages/img/drfd.png create mode 100644 monitor/pages/img/dz_icon.png create mode 100644 monitor/pages/img/edit.png create mode 100644 monitor/pages/img/edit_blue.png create mode 100644 monitor/pages/img/error.png create mode 100644 monitor/pages/img/f.png create mode 100644 monitor/pages/img/filter.png create mode 100644 monitor/pages/img/fkjl.png create mode 100644 monitor/pages/img/fwz_status.png create mode 100644 monitor/pages/img/gcfk.png create mode 100644 monitor/pages/img/gcs.png create mode 100644 monitor/pages/img/gg_line.png create mode 100644 monitor/pages/img/go.png create mode 100644 monitor/pages/img/head2.png create mode 100644 monitor/pages/img/home.png create mode 100644 monitor/pages/img/home/banner.png create mode 100644 monitor/pages/img/home/djd.png create mode 100644 monitor/pages/img/home/fwz.png create mode 100644 monitor/pages/img/home/gdcx.png create mode 100644 monitor/pages/img/home/tz_bg.png create mode 100644 monitor/pages/img/home/tz_icon.png create mode 100644 monitor/pages/img/home/wdwl.png create mode 100644 monitor/pages/img/home/wlsq.png create mode 100644 monitor/pages/img/home/ywc.png create mode 100644 monitor/pages/img/home/zl_bg.png create mode 100644 monitor/pages/img/home/zl_icon.png create mode 100644 monitor/pages/img/home1.png create mode 100644 monitor/pages/img/indoor.png create mode 100644 monitor/pages/img/j.png create mode 100644 monitor/pages/img/jie.png create mode 100644 monitor/pages/img/jie1.png create mode 100644 monitor/pages/img/jksj_bg.png create mode 100644 monitor/pages/img/jksj_bg2.png create mode 100644 monitor/pages/img/js.png create mode 100644 monitor/pages/img/js_bg.png create mode 100644 monitor/pages/img/mo.png create mode 100644 monitor/pages/img/my_bg.png create mode 100644 monitor/pages/img/nav_back.png create mode 100644 monitor/pages/img/order.png create mode 100644 monitor/pages/img/order1.png create mode 100644 monitor/pages/img/order_icon.png create mode 100644 monitor/pages/img/pai.png create mode 100644 monitor/pages/img/pai1.png create mode 100644 monitor/pages/img/password.png create mode 100644 monitor/pages/img/password_eyes.png create mode 100644 monitor/pages/img/password_eyes_open.png create mode 100644 monitor/pages/img/rg.png create mode 100644 monitor/pages/img/sbsj.png create mode 100644 monitor/pages/img/scan.png create mode 100644 monitor/pages/img/search.png create mode 100644 monitor/pages/img/select.png create mode 100644 monitor/pages/img/song.png create mode 100644 monitor/pages/img/ssgl.png create mode 100644 monitor/pages/img/tel.png create mode 100644 monitor/pages/img/ti.png create mode 100644 monitor/pages/img/time.png create mode 100644 monitor/pages/img/tz.png create mode 100644 monitor/pages/img/unselect.png create mode 100644 monitor/pages/img/user.png create mode 100644 monitor/pages/img/wd.png create mode 100644 monitor/pages/img/weid.png create mode 100644 monitor/pages/img/weixin.png create mode 100644 monitor/pages/img/wl_icon.png create mode 100644 monitor/pages/img/ywc_status.png create mode 100644 monitor/pages/img/ywg_status.png create mode 100644 monitor/pages/img/zhifubao.png create mode 100644 monitor/pages/img/zl.png create mode 100644 monitor/pages/lookImg/lookImg.js create mode 100644 monitor/pages/lookImg/lookImg.json create mode 100644 monitor/pages/lookImg/lookImg.wxml create mode 100644 monitor/pages/lookImg/lookImg.wxss create mode 100644 monitor/pages/materialApply/materialApply.js create mode 100644 monitor/pages/materialApply/materialApply.json create mode 100644 monitor/pages/materialApply/materialApply.wxml create mode 100644 monitor/pages/materialApply/materialApply.wxss create mode 100644 monitor/pages/materialDetail/materialDetail.js create mode 100644 monitor/pages/materialDetail/materialDetail.json create mode 100644 monitor/pages/materialDetail/materialDetail.wxml create mode 100644 monitor/pages/materialDetail/materialDetail.wxss create mode 100644 monitor/pages/materialList/materialList.js create mode 100644 monitor/pages/materialList/materialList.json create mode 100644 monitor/pages/materialList/materialList.wxml create mode 100644 monitor/pages/materialList/materialList.wxss create mode 100644 monitor/pages/materialUse/materialUse.js create mode 100644 monitor/pages/materialUse/materialUse.json create mode 100644 monitor/pages/materialUse/materialUse.wxml create mode 100644 monitor/pages/materialUse/materialUse.wxss create mode 100644 monitor/pages/myMaterial/myMaterial.js create mode 100644 monitor/pages/myMaterial/myMaterial.json create mode 100644 monitor/pages/myMaterial/myMaterial.wxml create mode 100644 monitor/pages/myMaterial/myMaterial.wxss create mode 100644 monitor/pages/notice/notice.js create mode 100644 monitor/pages/notice/notice.json create mode 100644 monitor/pages/notice/notice.wxml create mode 100644 monitor/pages/notice/notice.wxss create mode 100644 monitor/pages/noticeDetail/noticeDetail.js create mode 100644 monitor/pages/noticeDetail/noticeDetail.json create mode 100644 monitor/pages/noticeDetail/noticeDetail.wxml create mode 100644 monitor/pages/noticeDetail/noticeDetail.wxss create mode 100644 monitor/pages/settlement/settlement.js create mode 100644 monitor/pages/settlement/settlement.json create mode 100644 monitor/pages/settlement/settlement.wxml create mode 100644 monitor/pages/settlement/settlement.wxss create mode 100644 monitor/pages/station/station.js create mode 100644 monitor/pages/station/station.json create mode 100644 monitor/pages/station/station.wxml create mode 100644 monitor/pages/station/station.wxss create mode 100644 monitor/pages/stationDetail/stationDetail.js create mode 100644 monitor/pages/stationDetail/stationDetail.json create mode 100644 monitor/pages/stationDetail/stationDetail.wxml create mode 100644 monitor/pages/stationDetail/stationDetail.wxss create mode 100644 monitor/pages/technicaDetail/technicaDetail.js create mode 100644 monitor/pages/technicaDetail/technicaDetail.json create mode 100644 monitor/pages/technicaDetail/technicaDetail.wxml create mode 100644 monitor/pages/technicaDetail/technicaDetail.wxss create mode 100644 monitor/pages/technicalData/technicalData.js create mode 100644 monitor/pages/technicalData/technicalData.json create mode 100644 monitor/pages/technicalData/technicalData.wxml create mode 100644 monitor/pages/technicalData/technicalData.wxss create mode 100644 monitor/pages/workOrder/backDetail/backDetail.js create mode 100644 monitor/pages/workOrder/backDetail/backDetail.json create mode 100644 monitor/pages/workOrder/backDetail/backDetail.wxml create mode 100644 monitor/pages/workOrder/backDetail/backDetail.wxss create mode 100644 monitor/pages/workOrder/order/order.js create mode 100644 monitor/pages/workOrder/order/order.json create mode 100644 monitor/pages/workOrder/order/order.wxml create mode 100644 monitor/pages/workOrder/order/order.wxss create mode 100644 monitor/pages/workOrder/orderDetail/orderDetail.js create mode 100644 monitor/pages/workOrder/orderDetail/orderDetail.json create mode 100644 monitor/pages/workOrder/orderDetail/orderDetail.wxml create mode 100644 monitor/pages/workOrder/orderDetail/orderDetail.wxss create mode 100644 monitor/pages/workOrder/orderDetail2/orderDetail2.js create mode 100644 monitor/pages/workOrder/orderDetail2/orderDetail2.json create mode 100644 monitor/pages/workOrder/orderDetail2/orderDetail2.wxml create mode 100644 monitor/pages/workOrder/orderDetail2/orderDetail2.wxss create mode 100644 other/components/userInfo/userInfo.js create mode 100644 other/components/userInfo/userInfo.json create mode 100644 other/components/userInfo/userInfo.wxml create mode 100644 other/components/userInfo/userInfo.wxss create mode 100644 other/img/addr.png create mode 100644 other/img/arrow.png create mode 100644 other/img/content-list-info-address-img.png create mode 100644 other/img/content-list-info-top-name-img.png create mode 100644 other/img/content-list-type-11.png create mode 100644 other/img/content-list-type-35.png create mode 100644 other/img/content-list-type-3letter.png create mode 100644 other/img/content-list-type-6letter.png create mode 100644 other/img/content-list-type-dys.png create mode 100644 other/img/content-list-type-dzg.png create mode 100644 other/img/content-list-type-dzgys.png create mode 100644 other/img/content-list-type-wfys.png create mode 100644 other/img/content-list-type-ystg.png create mode 100644 other/img/content-list-type-zgysbh.png create mode 100644 other/img/copy.png create mode 100644 other/img/icon-search-white.png create mode 100644 other/img/navigation.png create mode 100644 other/img/tel.png create mode 100644 other/pages/dispatch/dispatch.js create mode 100644 other/pages/dispatch/dispatch.json create mode 100644 other/pages/dispatch/dispatch.wxml create mode 100644 other/pages/dispatch/dispatch.wxss create mode 100644 other/pages/infoList/infoList.js create mode 100644 other/pages/infoList/infoList.json create mode 100644 other/pages/infoList/infoList.wxml create mode 100644 other/pages/infoList/infoList.wxss create mode 100644 other/pages/qualityAccept/qualityAccept.js create mode 100644 other/pages/qualityAccept/qualityAccept.json create mode 100644 other/pages/qualityAccept/qualityAccept.wxml create mode 100644 other/pages/qualityAccept/qualityAccept.wxss create mode 100644 other/pages/qualityAcceptDetail/qualityAcceptDetail.js create mode 100644 other/pages/qualityAcceptDetail/qualityAcceptDetail.json create mode 100644 other/pages/qualityAcceptDetail/qualityAcceptDetail.wxml create mode 100644 other/pages/qualityAcceptDetail/qualityAcceptDetail.wxss create mode 100644 other/pages/qualityAcceptList/qualityAcceptList.js create mode 100644 other/pages/qualityAcceptList/qualityAcceptList.json create mode 100644 other/pages/qualityAcceptList/qualityAcceptList.wxml create mode 100644 other/pages/qualityAcceptList/qualityAcceptList.wxss create mode 100644 other/pages/rectification/rectification.js create mode 100644 other/pages/rectification/rectification.json create mode 100644 other/pages/rectification/rectification.wxml create mode 100644 other/pages/rectification/rectification.wxss create mode 100644 other/pages/rectifyForm/rectifyForm.js create mode 100644 other/pages/rectifyForm/rectifyForm.json create mode 100644 other/pages/rectifyForm/rectifyForm.wxml create mode 100644 other/pages/rectifyForm/rectifyForm.wxss create mode 100644 other/pages/unableAccept/unableAccept.js create mode 100644 other/pages/unableAccept/unableAccept.json create mode 100644 other/pages/unableAccept/unableAccept.wxml create mode 100644 other/pages/unableAccept/unableAccept.wxss create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pages/appRecord/appRecord.js create mode 100644 pages/appRecord/appRecord.json create mode 100644 pages/appRecord/appRecord.wxml create mode 100644 pages/appRecord/appRecord.wxss create mode 100644 pages/forgotPassword/forgotPassword.js create mode 100644 pages/forgotPassword/forgotPassword.json create mode 100644 pages/forgotPassword/forgotPassword.wxml create mode 100644 pages/forgotPassword/forgotPassword.wxss create mode 100644 pages/home/components/title/title.js create mode 100644 pages/home/components/title/title.json create mode 100644 pages/home/components/title/title.wxml create mode 100644 pages/home/components/title/title.wxss create mode 100644 pages/home/components/titleItem/titleItem.js create mode 100644 pages/home/components/titleItem/titleItem.json create mode 100644 pages/home/components/titleItem/titleItem.wxml create mode 100644 pages/home/components/titleItem/titleItem.wxss create mode 100644 pages/home/home.js create mode 100644 pages/home/home.json create mode 100644 pages/home/home.wxml create mode 100644 pages/home/home.wxss create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/map/map.js create mode 100644 pages/map/map.json create mode 100644 pages/map/map.wxml create mode 100644 pages/map/map.wxss create mode 100644 pages/mine/mine.js create mode 100644 pages/mine/mine.json create mode 100644 pages/mine/mine.wxml create mode 100644 pages/mine/mine.wxss create mode 100644 pages/pend/pend.js create mode 100644 pages/pend/pend.json create mode 100644 pages/pend/pend.wxml create mode 100644 pages/pend/pend.wxss create mode 100644 pages/scanCode/scanCode.js create mode 100644 pages/scanCode/scanCode.json create mode 100644 pages/scanCode/scanCode.wxml create mode 100644 pages/scanCode/scanCode.wxss create mode 100644 pages/startPage/startPage.js create mode 100644 pages/startPage/startPage.json create mode 100644 pages/startPage/startPage.wxml create mode 100644 pages/startPage/startPage.wxss create mode 100644 pages/traderList/traderList.js create mode 100644 pages/traderList/traderList.json create mode 100644 pages/traderList/traderList.wxml create mode 100644 pages/traderList/traderList.wxss create mode 100644 project.config.json create mode 100644 project.private.config.json create mode 100644 sitemap.json create mode 100644 utils/addWatermark.js create mode 100644 utils/addWatermark2.js create mode 100644 utils/getLocation.js create mode 100644 utils/permission.js create mode 100644 utils/route.js create mode 100644 utils/util.js create mode 100644 wxs/util.wxs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14ea590 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Windows +[Dd]esktop.ini +Thumbs.db +$RECYCLE.BIN/ + +# macOS +.DS_Store +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes + +# Node.js +node_modules/ diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..fede84b --- /dev/null +++ b/README.en.md @@ -0,0 +1,36 @@ +# 阳光系统-小程序 + +#### Description +阳光新系统的小程序 + +#### Software Architecture +Software architecture description + +#### Installation + +1. xxxx +2. xxxx +3. xxxx + +#### Instructions + +1. xxxx +2. xxxx +3. xxxx + +#### Contribution + +1. Fork the repository +2. Create Feat_xxx branch +3. Commit your code +4. Create Pull Request + + +#### Gitee Feature + +1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md +2. Gitee blog [blog.gitee.com](https://blog.gitee.com) +3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) +4. The most valuable open source project [GVP](https://gitee.com/gvp) +5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) +6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md new file mode 100644 index 0000000..7374eb0 --- /dev/null +++ b/README.md @@ -0,0 +1,132 @@ +# 阳光系统-小程序 + +#### 介绍 +阳光新系统的小程序 + +#### 软件架构 +软件架构说明 + + +#### 安装教程 + +1. xxxx +2. xxxx +3. xxxx + +#### 使用说明 + +1. xxxx +2. xxxx +3. xxxx + +#### 参与贡献 + +1. Fork 本仓库 +2. 新建 Feat_xxx 分支 +3. 提交代码 +4. 新建 Pull Request + + +#### 特技 + +1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md +2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) +3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 +4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 +5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) +6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) + + +### 登录角色判断userType +userType TRADER:代理商,TRADER_EMP:代理商员工,PLATFORM_EMP:平台,暂不用(SYS_EMP:系统工程师。PRO_EMP:项目工程师) +### 首页菜单权限字段 + * "新增信息登记"按钮 HYXCX_XZXXDJ_B + * 信息采集 HYXCX_XXCJ_T + * 1.信息登记 HYXCX_XXDJ_T + * 2.信息授权 HYXCX_XXSQ_T + * 3.开二类卡 HYXCX_KELK_T + * 4.农户合同 HYXCX_NHHT_T + * 勘测设计 HYXCX_KCSJ_T + * 1.电站初勘 HYXCX_DZCK_T + * 2.设计审核 HYXCX_SJSH_T + * 安装阶段 HYXCX_AZJD_T + * 1.物料下单 HYXCX_WLXD_T + * 2.电站安装 HYXCX_DZAZ_T + * 3.安装验收 HYXCX_AZYS_T + * 并网阶段 HYXCX_BWJD_T + * 1.电站并网 HYXCX_DZBW_T + * 2.合同签署 HYXCX_HTQS_T + * 3.并网验收 HYXCX_BWYS_T + * 4.项目存档 HYXCX_XMCD_T + * 5.项目查询 HYXCX_XMCX_T + * 6.电站整改 HYXCX_DZZG_T +### 按钮权限字段 +1. 信息登记: +查看:XXDJ_VIEW_B + +删除:XXDJ_DELETE_B +预审查询:XXDJ_YSCX_B + +2. 信息授权: +查看:XXSQ_VIEW_B +授权:XXSQ_AUTH_B +授权链接:XXSQ_AUTHLINK_B +查看:XXSQ_AUTHLINK_LOOK_B (查看授权书) + +3. 开二类卡: +查看:KELK_VIEW_B +开卡:KELK_ADD_B +重新开卡:KELK_READD_B +卡信息:KELK_INFO_B + +4. 电站初勘: +查看:DZCK_VIEW_B +勘测:DZCK_ADD_B +修改业主信息:DZCK_EDIT_B + +5. 农户合同: +查看:NHHT_VIEW_B +签约:NHHT_QY_B +共签:NHHT_GQ_B +重签:NHHT_CQ_B +NHHT_SCLJ_B 生成链接 +NHHT_YL_B 预览 +NHHT_HTLZ_B 合同落章 +NHHT_ZF_B 作废 + +6. 设计审核: +查看:SJSH_VIEW_B + +7. 物料下单: +查看:WLXD_VIEW_B +下单:WLXD_XD_B + +8. 电站安装: +查看:DZAZ_VIEW_B +安装:DZAZ_AZ_B +完工:DZAZ_WG_B + +9. 安装验收: +查看:AZYS_VIEW_B + +10. 电站并网: +查看:DZBW_VIEW_B +并网:DZBW_BW_B + +11. 合同签署: +查看:HTQS_VIEW_B +签署:HTQS_SIGN_B + +12. 并网验收: +查看:BWYS_VIEW_B + +13. 项目存档: +查看:XMCD_VIEW_B + +14. 项目查询: +查看:XMCX_VIEW_B + +15. 电站整改: +查看:DZZG_VIEW_B +发起:DZZG_ADD_B diff --git a/api/api.js b/api/api.js new file mode 100644 index 0000000..7416b73 --- /dev/null +++ b/api/api.js @@ -0,0 +1,947 @@ +/** + * 请求api + * @author + */ + +/** + * 注意 + * 注意 + * 注意 + * 注意 + * 注意 + * 注意 + * 注意 + * + * + * 发布正式版时将DEV设置为false + * + * + */ +const DEV = false +// const DEV = true + + +//打印日志开关 +const DEBUG = false; +// const DEBUG = true; + +// const API_BASE_URL = 'https://www.xingyuancrm.com/redsun-api/miniapp/cloud/a/'; //生产环境 +// const API_BASE_URL = 'http://192.168.2.44:8083/a/'; //冬青 +// const API_BASE_URL = 'http://192.168.2.8:8080/cloud_war_exploded/a/'; //洪雪 +// const API_BASE_URL = 'http://116.162.216.30:8082/cloud/a/'; //李宗平 +// const API_BASE_URL = 'http://192.168.2.185:8080/nenghui/a/'; //贺 +// const API_BASE_URL = 'http://192.168.2.28:8080/nenghui/a/'; //王文军 +// const API_BASE_URL = 'http://192.168.2.244:8080/nenghui/a/'; //倪 +// const API_BASE_URL = 'http://192.168.2.99:7380/nenghui/a/'; //黄赵 +// const API_BASE_URL = 'http://192.168.2.187:8088/nenghui/a/'; //王楠 +// const API_BASE_URL = 'http://192.168.2.223:8080/cloud_war_exploded/a/'; //程礼坤 + +// const API_MONIT_URL = 'http://192.168.2.8:8099/'; //洪雪-监控接口 +// const API_MONIT_URL = 'http://192.168.2.181:8099/'; //李宗平-监控接口 + + + + +//测试环境 +const API_BASE_URL = 'http://47.100.121.41:8089/nenghui_uat/a/'; //接口 +const IMG_BASE_URL = 'https://nhet-test.oss-cn-shanghai.aliyuncs.com/' //测试环境和生产环境 图片前缀 +// const API_MONIT_URL = 'https://www.nhhyy.com/nenghui-uat-api/'; //监控接口 + + +//线上 +// const API_BASE_URL = 'https://www.nhhyy.com/nhet/a/'; +// const IMG_BASE_URL = 'https://nhet.oss-cn-shanghai.aliyuncs.com/' //线上 图片前缀 +const API_MONIT_URL = 'https://www.nhhyy.com/monitor-api/'; //监控接口 + + + +// const IMG_BASE_URL = 'https://entry-imgs.oss-cn-beijing.aliyuncs.com/' //本地 +const WU_TU_PIAN_URL = "https://obs-hncs2.cucloud.cn/entry-imgs/prohibit_delete/wutupian.png"; //无图片显示 +const UP_MONIT_IMG = API_MONIT_URL + 'blade-resource/oss/endpoint/put-file?code=aliyun'; //监控上传图片路径,每个平台的code可能不同 +const IMG_MONIT_URL = ''; //监控图片,暂时不用 + + +/** + * + * base请求 + * @param {String} host 域名 + * @param {String} url 请求路径 + * @param {String} method 请求方法 GET/POST + * @param {Object} data 请求参数 {"key":"value"} + * @param {String} contentType + * + */ + +var requestWithHost = function requestWithHost(host, url, method, data, contentType, consoleText) { + var _url = host.length > 0 ? host : API_BASE_URL + url; + + var _header = { + 'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded', + } + + return new Promise(function (resolve, reject) { + var result; + var bool; + wx.request({ + url: _url, + method: method, + data: data, + header: _header, + success: (res) => { + if (DEBUG) { + bool = true + result = res.data + } + resolve(res.data) + }, + fail: (res) => { + if (DEBUG) { + bool = false + result = res + } + resolve(res) + }, + + complete: () => { + if (DEBUG) { + console.log('\n') + console.log('start ---------------------------------------------------------------------- >>') + if (method.toUpperCase() == "GET") { + var params = '' + if (data) { + Object.keys(data).forEach(key => { + params = params ? `${params}&${key}=${data[key]}` : `?${key}=${data[key]}` + }); + } + console.log(`请求URL: ${method.toUpperCase()} ${_url + params}`) + } else { + console.log(`请求URL: ${method.toUpperCase()} ${_url} \n请求参数:\n${JSON.stringify(data,function (key,value) { + if (value === undefined) { + return 'undefined'; + } else if (value === null) { + return 'null' + } + return value; + },4)}`) + } + console.log(bool ? '回调参数:success' : '回调参数:fail', result) + console.log('<< ---------------------------------------------------------------------- end') + console.log('\n') + } + } + }) + }) +} + + +/** + * host:API_BASE_URL 的请求 + * @param {String} url 请求路径 + * @param {String} method 请求方法 GET/POST + * @param {Object} data 请求参数 {"key":"value"} + */ + +var request = function request(url, method, data, contentType, consoleText) { + return requestWithHost('', url, method, data, contentType, consoleText) +} + +module.exports = { + API_BASE_URL, + IMG_BASE_URL, + WU_TU_PIAN_URL, + DEV, + API_MONIT_URL, + IMG_MONIT_URL, + UP_MONIT_IMG, + /** + * + * post请求接口示例 + * + * @param {*} data + */ + postRequest: function postRequest(data) { + return request('/api/postRequest', 'post', data, "1"); + }, + + /** + * + * get请求接口示例 + * + * @param {*} data + */ + getRequest: function getRequest(data) { + return request('/api/getRequest', 'get', data); + }, + + /** + * + * 获取电站列表 + * + * @param {*} data + */ + ajaxForWaitOrder: function ajaxForWaitOrder(data) { + return request('main/projectManage/ajaxForWaitOrder', 'get', data); + }, + + /** + * + * 获取农户合同列表 + * + * @param {*} data + */ + ajaxForWaitOrder2: function ajaxForWaitOrder2(data) { + return request('main/projectManage/contractListDate', 'get', data); + }, + + + /** + * + * 获取电站整改数据 + * + * @param {*} data + */ + findRetrialPage: function findRetrialPage(data) { + return request('main/projectManage/findRetrialPage', 'get', data); + }, + + + + /** + * + * 获取产品编号 + * + * @param {*} data + */ + projectList: function projectList(data) { + return request('main/projectManage/projectList', 'get', data); + }, + + /** + * + * 获取自定义字段 + * + * @param {*} data + */ + getFormSet: function getFormSet(data) { + return request('main/projectManage/getFormSet', 'get', data); + }, + + /** + * + * 电站安装示例图 + * + * @param {*} data + */ + findTypeReferenceList: function findTypeReferenceList(data) { + return request('main/projectManage/findTypeReferenceList', 'get', data); + }, + + /** + * + * 电站安装示例图2 + * + * @param {*} data + */ + findTypeReferenceListNew: function findTypeReferenceListNew(data) { + return request('main/projectManage/findTypeReferenceListNew', 'get', data); + }, + + /** + * + * 获取组件、逆变器、并网箱列表 + * + * @param {*} data + */ + getElectricPlanAll: function getElectricPlanAll(data) { + return request('main/projectManage/getElectricPlanAll', 'get', data); + }, + + + + /** + * + * 获取方案类型和名称 + * + * @param {*} data + */ + findAllPlan: function findAllPlan(data) { + return request('main/projectManage/findAllPlan', 'get', data); + }, + + + login(data) { + return request('main/login/toLogin', 'get', data); + }, + + + sendMsg(data) { + return request('main/customer/sendMsg', 'get', data); + }, + + checkConfirmCode(data) { + return request('main/customer/checkConfirmCode', 'get', data); + }, + + /** + * + * 客户管理 + * + * @param {*} data + */ + saveOrEditCustomerEntry: function saveOrEditCustomerEntry(data) { + return request('main/projectManage/saveOrEditCustomerEntry?userId=' + data.userId, 'post', data.CustomerEntry, "1"); + }, + + + /** + * + * 信息校验 + * + * @param {*} data + */ + lookCreditResult: function lookCreditResult(data) { + return request('main/projectManage/lookCreditResult', 'get', data); + }, + + + /** + * + * 获取电站详细 + * + * @param {*} data + */ + entryDetail: function entryDetail(data) { + return request('main/projectManage/entryDetail', 'get', data); + }, + + + /** + * + * 获取首页统计 + * + * @param {*} data + */ + getHomeStatistics: function getHomeStatistics(data) { + return request('main/projectManage/getHomeStatistics', 'get', data); + }, + + + /** + * + * 提交完工 + * + * @param {*} data + */ + install: function install(data) { + return request('main/projectManage/install?userId=' + data.userId, 'post', data.addReportReq, "1"); + }, + + + + /** + * + * 提交完工 + * + * @param {*} data + */ + installZc: function install(data) { + return request('main/projectManage/installZc?userId=' + data.userId, 'post', data.addReportReq, "1"); + }, + + + + + + /** + * + * 提交并网 + * + * @param {*} data + */ + accept: function accept(data) { + return request('main/projectManage/accept?userId=' + data.userId, 'post', data.addReportReq, "1"); + }, + + + + + /** + * + * 使用物料 + * + * @param {*} data + */ + usedMaterial: function usedMaterial(data) { + return request('main/projectManage/usedMaterial', 'get', data); + }, + + + + /** + * + * 获取使用物料列表 + * + * @param {*} data + */ + getUsedMaterialInfo: function getUsedMaterialInfo(data) { + return request('main/projectManage/getUsedMaterialInfo', 'get', data); + }, + + + /** + * + * 删除物料 + * + * @param {*} data + */ + deleteUsedRocerd: function deleteUsedRocerd(data) { + return request('main/projectManage/deleteUsedRecord', 'get', data); + }, + + + /** + * + * 查询安装组件信息 + * + * @param {*} data + */ + getActualCapacity: function getActualCapacity(data) { + return request('main/projectManage/getActualCapacity', 'get', data); + }, + + + /** + * + * 审核不通过 + * + * @param {*} data + */ + appletsFailed: function appletsFailed(data) { + return request('main/projectManage/appletsFailed', 'get', data); + }, + + /** + * + * 审核通过 + * + * @param {*} data + */ + appletsToExamine: function appletsToExamine(data) { + return request('main/projectManage/appletsToExamine?userId=' + data.userId, 'post', data.CustomerEntry, "1"); + }, + + + /** + * + * 获取变更类型 + * + * @param {*} data + */ + getRectificationList: function getRectificationList(data) { + return request('main/projectManage/getRectificationList', 'get', data); + }, + + + /** + * + * 审核电站整改 + * + * @param {*} data + */ + rectificationAudit: function rectificationAudit(data) { + return request('main/projectManage/rectificationAudit', 'get', data); + }, + + /** + * + * 邀请签约 + * + * @param {*} data + */ + askToContract: function askToContract(data) { + return request('main/projectManage/askToContract', 'get', data); + }, + + + /** + * + * 根据经纬度 获取 地址 + * + * @param {*} data + */ + getAddressByLonLat: function getAddressByLonLat(data) { + return request('main/address/getAddressByLonLat', 'get', data); + }, + + + + /** + * + * 根据地址 获取 经纬度 + * + * @param {*} data + */ + getAddressLonLat: function getAddressLonLat(data) { + return request('main/address/getAddressLonLat', 'get', data); + }, + + /** + * + * 获取仓库信息 + * + * @param {*} data + */ + getWarehouseList: function getWarehouseList(data) { + return request('main/projectManage/getWarehouseList', 'get', data); + }, + + /** + * + * 保存仓库信息 + * + * @param {*} data + */ + saveWarehouse: function saveWarehouse(data) { + return request('main/projectManage/saveWarehouse', 'get', data); + }, + + + /** + * + * 获取代理商下员工人数 + * + * @param {*} data + */ + etEmpCountByRole: function etEmpCountByRole(data) { + return request('main/projectManage/getEmpCountByRole', 'get', data); + }, + + + + /** + * + * 开卡 + * + * @param {*} data + */ + bankCardPage: function bankCardPage(data) { + return request('main/yueXiuBankCard/bankCardPage', 'get', data); + }, + + + /** + * + * 签约或重新签约 + * + * @param {*} data + */ + toContractPage: function toContractPage(data) { + return request('main/yueXiuContract/toContractPage', 'get', data); + }, + /** + * + * 华融签约或重新签约 + * + * @param {*} data + */ + huaRongContractPage: function toContractPage(data) { + return request('main/HuaRongContract/getContractSignUrl', 'get', data); + }, + + /** 上传合同 **/ + submitContract: function submitContract(data) { + return request('main/HuaRongContract/submitContract', 'post', data, "1"); + }, + /** 生成合同 **/ + getSignContractUrl: function getSignContractUrl(data) { + return request('main/GFContract/getSignContractUrl', 'get', data); + }, + /** 合同落章 **/ + doSealContract: function doSealContract(data) { + return request('main/GFContract/doSealContract', 'get', data); + }, + /** + * + * 授权 + * + * @param {*} data + */ + toAuthContrac: function toAuthContrac(data) { + return request('main/EsignAuth/toAuthContract', 'get', data); + }, + + /** + * + * 查看 + * + * @param {*} data + */ + getContractUrlToLook: function getContractUrlToLook(data) { + return request('main/yueXiuContract/getContractUrlToLook', 'get', data); + }, + /** 华融合同查看 **/ + getContractUrlToLookHr: function getContractUrlToLook(data) { + return request('main/HuaRongContract/getContractUrl', 'get', data); + }, + + /** + * + * 删除电站 + * + * @param {*} data + */ + deleteCustomerEntry: function deleteCustomerEntry(data) { + return request('main/projectManage/deleteCustomerEntry', 'get', data); + }, + + + + /** + * + * 获取所有省 + * + * @param {*} data + */ + getProvinceList: function getProvinceList(data) { + return request('main/redirect/getProvinceList', 'get', data); + }, + + /** + * + * 根据省查询市 + * + * @param {*} data + */ + getCitysByProId: function getCitysByProId(data) { + return request('main/redirect/getCitysByProId', 'get', data); + }, + /** + * + * 根据市查询区 + * + * @param {*} data + */ + getAreaByCityId: function getAreaByCityId(data) { + return request('main/redirect/getAreaByCityId', 'get', data); + }, + + /** + * + * 获取并网箱和支架列表 + * @param {*} data + */ + getMateriallist: function getMateriallist(data) { + return request('main/projectManage/getMateriallist', 'get', data); + }, + + + /** + * + * 使用并网箱和支架 + * @param {*} data + */ + usedMaterialOther: function usedMaterialOther(data) { + return request('main/projectManage/usedMaterialOther', 'post', data, "1"); + }, + + + + /** + * + * 获取签约状态 + * @param {*} data + */ + ecordClickSign: function ecordClickSign(data) { + return request('main/yueXiuContract/ecordClickSign', 'get', data); + }, + + + /** + * + * 获取电力公司 + * @param {*} data + */ + getProviceCodeList: function getProviceCodeList(data) { + return request('main/order/getProviceCodeList', 'get', data); + }, + /** + * + * 获取联行号列表数据 + * @param {*} data + */ + findLinkNumberList: function findLinkNumberList(data) { + return request('main/projectManage/findLinkNumberList', 'get', data); + }, + /** + * + * 获取客户管理预审查询结果 + * @param {*} data + */ + findResult: function findResult(data) { + // return request('/main/projectManage/findResult', 'get', data); + return request('/main/projectManage/findPreauditStatus', 'get', data); + }, + + /** + * + * 修改业主信息接口 + * @param {*} data + */ + editCustomerEntryBy: function editCustomerEntryBy(data) { + return request('/main/projectManage/editCustomerEntryBy?userId=' + data.userId, 'post', data.CustomerEntry,"1"); + }, + //并网验收通过或不通过 + twoMergeAcceptRefuse: function twoMergeAcceptRefuse(data) { + return request('/main/projectManage/twoMergeAcceptRefuse', 'get', data); + }, + //安装验收通过或不通过 + toNetAccept: function toNetAccept(data) { + return request('/main/projectManage/toNetAccept', 'get', data); + }, + //二类卡信息 + bankCardDetail: function bankCardDetail(data) { + return request('/main/yueXiuBankCard/bankCardDetail', 'get', data); + }, + //获取信息授权签约链接 + getEsignUrl: function getEsignUrl(data) { + return request('/main/EsignAuth/getEsignUrl', 'get', data); + }, + //获取小程序二维码 + createQrcode: function createQrcode(data) { + return request('/main/projectManage/createQrcode', 'get', data); + }, + //校验代理商员工角色登录权限字段接口 + checkTraderEmpAuth: function checkTraderEmpAuth(data) { + return request('/main/projectManage/checkTraderEmpAuth', 'get', data); + }, + //修改手机号,并重新发起授权合同 + resetMobileVsAuthPc: function resetMobileVsAuthPc(data) { + return request('/main/EsignAuth/resetMobileVsAuth', 'get', data); + }, + //列表tab统计 + customerManagementStatic: function customerManagementStatic(data) { + return request('/main/projectManage/customerManagementStatic', 'get', data); + }, + //查看信息授权书 + lookAuthBook: function lookAuthBook(data) { + return request('/main/projectManage/lookAuthBook', 'get', data); + }, + //档案表单保存接口 + saveArchives: function saveArchives(data) { + return request('/main/projectManage/saveArchives?userId=' + data.userId, 'post', data.CustomerEntry,"1"); + }, + //档案审核 + auditArchives: function auditArchives(data) { + return request('/main/projectManage/auditArchives', 'post', data,'1'); + }, + //派工 + dispatch: function dispatch(data) { + return request('/main/projectManage/dispatch', 'post', data,'1'); + }, + //经销商的已启用员工列表 + selectDispatchEngineer: function selectDispatchEngineer(data) { + return request('/main/projectManage/selectDispatchEngineer', 'get', data); + }, + //逆变器添加编码 + saveMaterialSN: function saveMaterialSN(data) { + return request('/main/projectManage/saveMaterialSN', 'post', data, '1'); + }, + //获取客户列表 + getTenantList: function getTenantList(data) { + return request('/main/projectManage/getTenantList', 'get', data); + }, + //客户详情 + getTenantDetail: function getTenantDetail(data) { + return request('/main/projectManage/getTenantDetail', 'get', data); + }, + //近三天发电量 + getDataInThreeDays: function getDataInThreeDays(data) { + return request('/main/projectManage/getDataInThreeDays', 'get', data); + }, + //待办 + getNeedToDealList: function getNeedToDealList(data) { + return request('/main/itemManagement/needToDeal/getNeedToDealList', 'get', data); + }, + //投资方 + getCapital: function getCapital(data) { + return request('/main/projectManage/getCapital', 'get', data); + }, + //接入逆变器--接入 + insertInterFace: function insertInterFace(data) { + return request('/main/projectManage/insertInterFace', 'get', data); + }, + //开二类卡--销卡 + cancelBankCard: function cancelBankCard(data) { + return request('/main/yueXiuBankCard/cancelBankCard', 'get', data); + }, + //项目信息--所属项目公司 + getCompany: function getCompany(data) { + return request('main/projectManage/getCompany', 'get',data); + }, + //代理商列表 + getTraderList: function getTraderList(data) { + return request('main/projectManage/getTraderList', 'get',data); + }, + //根据身份证号判断客户是否已存在 + isByIdCode: function isByIdCode(data) { + return request('main/projectManage/isByIdCode', 'get',data); + }, + //国网授权--导入接口 传值powerGenerationNo(发电户号) + addUserInfo: function addUserInfo(data) { + return request('main/stategrid/addUserInfo', 'get',data); + }, + //审批记录 + getOptList: function getOptList(data) { + return request('main/projectManage/getOptList', 'get',data); + }, + //勘测-提交设计 + surveyToDesign: function surveyToDesign(data) { + return request('main/projectManage/surveyToDesign?userId=' + data.userId, 'post', data.CustomerEntry, "1"); + }, + //电站初勘-撤回勘测 + backToSurvey: function backToSurvey(data) { + return request('main/projectManage/backToSurvey', 'post', data,'1'); + }, + //电站初勘-设计暂存、设计提交接口 + designCustomerEntry: function designCustomerEntry(data) { + return request('main/projectManage/designCustomerEntry?userId=' + data.userId, 'post', data.CustomerEntry, "1"); + }, + //根据地址查询产品 + getProjectByArea: function getProjectByArea(data) { + return request('main/projectManage/getProjectByArea', 'get', data); + }, + //根据资方获取共签人信息 + getPartnerSet: function getPartnerSet(data) { + return request('main/yueXiuCommon/getPartnerSet', 'get', data); + }, + //获取指定字典 + getDictionaryList: function getDictionaryList(data) { + return request('main/projectManage/getDictionaryList', 'get', data); + }, + //获取全部表单设置 + getAllConditionList: function getAllConditionList(data) { + return request('main/projectManage/getAllConditionList', 'post', data); + }, + //获取所有字典 + getAllDictionarySelect: function getAllDictionarySelect(data) { + return request('main/projectManage/getAllDictionarySelect', 'get', data); + }, + //电站并网--国网授权 + mergeTmp: function mergeTmp(data) { + return request('main/projectManage/mergeTmp?userId=' + data.userId, 'post', data.addReportReq, "1"); + }, + // 设计自审暂存/保存 + updateCustomerEntry: function updateCustomerEntry(data) { + return request('main/projectManage/updateCustomerEntry?userId=' + data.userId, 'post', data.CustomerEntry, "1"); + }, + // 自审驳回 + auditBack: function auditBack(data) { + return request('main/projectManage/auditBack?userId=' + data.userId, 'post', data, "1"); + }, + // 安装自审驳回 + acceptZSRefuse: function acceptZSRefuse(data) { + return request('main/projectManage/acceptZSRefuse', 'get', data); + }, + // 安装自审通过 + acceptZS: function acceptZS(data) { + return request('main/projectManage/acceptZS', 'get', data); + }, + // 发起合同 + createContract: function createContract(data) { + return request('main/HuaRongContract/createContract', 'get', data); + }, + //校验条码是否存在系统 + checkMaterialCode: function checkMaterialCode(data) { + return request('main/projectManage/checkMaterialCode', 'get', data); + }, + //选择整村汇流-获取数据 + choseBoxGroupData: function choseBoxGroupData(data) { + return request('main/boxSet/choseBoxGroupData', 'get', data); + }, + //选择汇流组保存、或者新增保存 + saveOneOwner: function saveOneOwner(data) { + return request('main/boxSet/saveOneOwner', 'get', data); + }, + //质量验收列表 + qualityListData: function qualityListData(data) { + return request('main/quality/qualityListData', 'get', data); + }, + + //质量验收--派工人员 + getDispatchEmp: function getDispatchEmp(data) { + return request('main/quality/getDispatchEmp', 'get', data); + }, + + //质量验收--保存派工 + saveDispatch: function saveDispatch(data) { + return request('main/quality/saveDispatch', 'get', data); + }, + //质量验收--详情 + qualityDetailData: function qualityDetailData(data) { + return request('main/quality/qualityDetailData', 'get', data); + }, + //质量验收--添加抽检 + addSample: function addSample(data) { + return request('main/quality/addSample', 'get', data); + }, + //质量验收--无法验收 + canNotAcceptance: function canNotAcceptance(data) { + return request('main/quality/canNotAcceptance', 'get', data); + }, + //质量验收--无法验收的查看 + canNotAcceptanceDetail: function canNotAcceptanceDetail(data) { + return request('main/quality/canNotAcceptanceDetail', 'get', data); + }, + //质量验收--撤回 + cancelAccept: function cancelAccept(data) { + return request('main/quality/cancelAccept', 'get', data); + }, + //质量验收--验收页面的验收项+暂存的信息 + acceptItems: function acceptItems(data) { + return request('main/quality/acceptItems', 'get', data); + }, + //质量验收--定位排序 + listSorting: function listSorting(data) { + return request('main/quality/listSorting', 'get', data); + }, + //质量验收--保存验收结果 + saveAcceptItem: function saveAcceptItem(data) { + return request('main/quality/saveAcceptItem', 'post', data, '1'); + }, + //质量整改-列表 + getQualityRectificationList: function getQualityRectificationList(data) { + return request('main/quality/rectification/getQualityRectificationList', 'get', data); + }, + //质量整改-派工人员列表 + getDispatchEmpList: function getDispatchEmpList(data) { + return request('main/quality/rectification/getDispatchEmpList', 'get', data); + }, + //质量整改-派工 + saveDispatchEmp: function saveDispatchEmp(data) { + return request('main/quality/rectification/saveDispatchEmp', 'post', data,'1'); + }, + //质量整改-详情 + qualityRectificationDetail: function qualityRectificationDetail(data) { + return request('main/quality/rectification/qualityRectificationDetail', 'get', data); + }, + //质量整改-整改保存 + saveChangingQuality: function saveChangingQuality(data) { + return request('main/quality/rectification/saveChangingQuality', 'post', data,'1'); + }, + //质量整改-驳回/通过 + saveAcceptQuality: function saveAcceptQuality(data) { + return request('main/quality/rectification/saveAcceptQuality', 'post', data); + }, + //广发--根据屋顶类型获取相关数据 + getKcFormSet: function getKcFormSet(data) { + return request('main/GFCommon/getKcFormSet', 'get', data); + }, + //华融--提交预审 + batchAdmit: function batchAdmit(data) { + return request('main/projectManage/batchAdmit', 'get', data); + }, + //获取风雪压等级 + getPressureLevel: function getPressureLevel(data) { + return request('main/projectManage/getPressureLevel', 'get', data); + }, +} \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..e09706e --- /dev/null +++ b/app.js @@ -0,0 +1,15 @@ +const api = require('./api/api.js'); + +App({ + + onLaunch() { + + }, + globalData: { + userInfo: null, + imgUrl: api.IMG_BASE_URL, //图片地址 + url: api.API_BASE_URL, //接口地址 + monitUrl: api.API_MONIT_URL, //监控接口地址 + monitUpload: api.UP_MONIT_IMG, //监控上传图片路径 + }, +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..f406130 --- /dev/null +++ b/app.json @@ -0,0 +1,170 @@ +{ + "pages": [ + "pages/startPage/startPage", + "pages/index/index", + "pages/mine/mine", + "pages/home/home", + "pages/forgotPassword/forgotPassword", + "pages/map/map", + "pages/pend/pend", + "pages/traderList/traderList", + "pages/appRecord/appRecord", + "pages/scanCode/scanCode" + ], + "subpackages": [ + { + "root": "home", + "name": "home", + "pages": [ + "pages/entryInfo/entryInfo", + "pages/dataScreening/dataScreening", + "pages/dataScreeningDetails/dataScreeningDetails", + "pages/viewSchema/viewSchema", + "pages/infoRegistration/infoRegistration", + "components/infor/infor", + "components/survey/survey", + "components/install/install", + "components/installHR/installHR", + "components/finish/finish", + "components/finishHR/finishHR", + "components/onGrid/onGrid", + "pages/entryInfoDetails/entryInfoDetails", + "pages/customDetails/customDetails", + "pages/install/install", + "pages/installHR/installHR", + "pages/completion/completion", + "pages/completionHR/completionHR", + "pages/bwForm/bwForm", + "pages/installOwn/installOwn", + "pages/entryInfoAudit/entryInfoAudit", + "pages/entryInfoAuditHR/entryInfoAuditHR", + "pages/acceptance/acceptance", + "pages/acceptanceBW/acceptanceBW", + "pages/acceptanceAZ/acceptanceAZ", + "pages/entryInfoBT/entryInfoBT", + "pages/surveyForm/surveyForm", + "pages/surveyFormHr/surveyFormHr", + "pages/filesForm/filesForm", + "pages/ownerForm/ownerForm", + "pages/bankCardDetail/bankCardDetail", + "pages/dispatch/dispatch", + "pages/webView/webView", + "pages/customList/customList", + "pages/3days/3days", + "pages/uploadContract/uploadContract", + "pages/installSelfAudit/installSelfAudit", + "pages/converge/converge" + ] + }, + { + "root": "mine", + "name": "mine", + "pages": [ + "pages/customerService/customerService", + "pages/contactUs/contactUs" + ] + }, + { + "root": "monitor", + "name": "monitor", + "pages": [ + "pages/home/home", + "pages/workOrder/order/order", + "pages/workOrder/backDetail/backDetail", + "pages/workOrder/orderDetail/orderDetail", + "pages/workOrder/orderDetail2/orderDetail2", + "pages/center/center", + "pages/station/station", + "pages/notice/notice", + "pages/noticeDetail/noticeDetail", + "pages/technicalData/technicalData", + "pages/technicaDetail/technicaDetail", + "pages/lookImg/lookImg", + "pages/settlement/settlement", + "pages/stationDetail/stationDetail", + "pages/deviceList/deviceList", + "pages/deviceDetail/deviceDetail", + "pages/materialApply/materialApply", + "pages/myMaterial/myMaterial", + "pages/addMaterial/addMaterial", + "pages/materialDetail/materialDetail", + "pages/materialUse/materialUse", + "pages/materialList/materialList" + ] + }, + { + "root": "other", + "name": "other", + "pages": [ + "pages/infoList/infoList", + "pages/dispatch/dispatch", + "pages/qualityAcceptList/qualityAcceptList", + "pages/qualityAcceptDetail/qualityAcceptDetail", + "pages/qualityAccept/qualityAccept", + "pages/unableAccept/unableAccept", + "pages/rectification/rectification", + "pages/rectifyForm/rectifyForm" + ] + } + ], + "preloadRule": { + "pages/home/home": { + "network": "all", + "packages": [ + "home" + ] + }, + "pages/mine/mine": { + "network": "all", + "packages": [ + "mine" + ] + } + }, + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "能辉新能源", + "navigationBarTextStyle": "black" + }, + "tabBar": { + "custom": true, + "selectedColor": "#0a6597", + "color": "#999999", + "borderStyle": "black", + "backgroundColor": "#ffffff", + "list": [ + { + "pagePath": "pages/home/home", + "text": "首页", + "iconPath": "/img/home.png", + "selectedIconPath": "/img/home-se.png" + }, + { + "pagePath": "pages/pend/pend", + "text": "待办", + "iconPath": "/img/pend.png", + "selectedIconPath": "/img/pend-se.png" + }, + { + "pagePath": "pages/mine/mine", + "text": "我的", + "iconPath": "/img/mine.png", + "selectedIconPath": "/img/mine-se.png" + } + ] + }, + "sitemapLocation": "sitemap.json", + "useExtendedLib": { + "weui": true + }, + "permission": { + "scope.userLocation": { + "desc": "你的位置信息将用于获取实时地理位置信息" + } + }, + "requiredPrivateInfos": [ + "getLocation" + ], + "lazyCodeLoading": "requiredComponents" +} \ No newline at end of file diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..2747089 --- /dev/null +++ b/app.wxss @@ -0,0 +1,1243 @@ +view { + box-sizing: border-box; word-break: break-word; +} + +.box { + padding-left: 20rpx; + padding-right: 20rpx; + width: 100%; +} + +.copy { + width: 24rpx; + height: 24rpx; + margin-left: 10rpx; +} + +.btm { + height: 120rpx; + background: #ffffff; + position: fixed; + bottom: 0; + left: 0; + z-index: 100; + width: 100vw; + display: flex; + justify-content: space-between; + padding: 0 30rpx; + align-items: center; +} + +.uploadImg { + height: 150rpx; + width: 150rpx; + border: 2rpx dashed #dddddd; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 28rpx; + color: #dddddd; + align-items: center; +} + +.parallelogram { + width: 90rpx; + height: 28rpx; + text-align: center; + line-height: 28rpx; + position: relative; + margin-right: 10rpx; +} + +.parallelogram>view { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} + +.para { + background: #ff960f; + transform: skew(-10deg); + z-index: 1; +} + +.para1 { + background: #5e6488; + transform: skew(-10deg); + z-index: 1; +} + +.text { + font-size: 20rpx; + z-index: 100; + color: #ffffff; +} + +.top { + display: flex; + justify-content: space-between; + padding: 20rpx; + background: linear-gradient(#fef5e6, #ffffff); +} + +.headBox { + display: flex; + justify-content: flex-start; +} + +.head { + height: 104rpx; + width: 104rpx; + border-radius: 50%; + overflow: hidden; + flex-shrink: 0; +} + +.name { + font-size: 34rpx; + color: #333333; + font-weight: 500; + margin-left: 10rpx; + padding-top: 10rpx; + font-weight: 700; +} + +.id { + margin-left: 10rpx; + padding-top: 15rpx; +} + +.id image { + height: 26rpx; +} + +.inputBtn { + color: #ffffff; + font-size: 28rpx; + height: 56rpx; + display: flex; + justify-content: center; + align-items: center; + background: linear-gradient(#fe7c04, #ffa739); + width: 240rpx; + border-radius: 10rpx; + margin-top: 50rpx; +} + +.inputBtn image { + width: 28rpx; + height: 28rpx; + margin-right: 10rpx; +} + +.orderBox { + display: flex; + justify-content: space-between; + box-shadow: #f3f3f1 0px 0px 10px; + height: 140rpx; + border-radius: 20rpx; + padding: 40rpx 30rpx 10rpx; +} + +.orderBox image { + width: 40rpx; + height: 40rpx; +} + +.item { + display: flex; + flex-direction: column; + text-align: center; + align-items: center; +} + +.orderBox text { + color: #666666; + font-size: 24rpx; + line-height: 50rpx; +} + +.tabbar { + display: flex; + justify-content: flex-start; + height: 80rpx; + line-height: 74rpx; +} + +.tabbar>view { + min-width: 160rpx; + display: flex; + flex-direction: column; + text-align: center; + align-items: center; +} + +.tabbar text { + color: #676767; + font-size: 28rpx; +} + +.line { + width: 40rpx; + height: 6rpx; + background: #ffffff; + border-radius: 10rpx; +} + +.active text { + color: #333333; + font-size: 40rpx; +} + +.active .line { + background: #fe960f; +} + +.itemName { + height: 130rpx; + padding: 30rpx 20rpx 0; + display: flex; + justify-content: flex-start; +} + +.itemIcon { + height: 90rpx; + width: 90rpx; + border-radius: 50%; + overflow: hidden; + flex-shrink: 0; +} + +.itemIcon image { + width: 100%; + height: 100%; +} + +.itemNum { + width: calc(100% - 120rpx); +} + +.itemNum view { + color: #333333; + line-height: 45rpx; + padding-left: 20rpx; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.orderList { + padding: 20rpx; +} + +.detail { + padding: 20rpx; + background: #fafafa; + border-radius: 10rpx; + line-height: 50rpx; +} + +.detail image { + width: 26rpx; + height: 26rpx; + margin-right: 10rpx; + flex-shrink: 0; +} + +.detail view { + font-size: 26rpx; + white-space: nowrap; + color: #333333; +} + +.detail>view { + display: flex; + justify-content: flex-start; + +} + +.itemDetail { + display: flex; + justify-content: flex-start; + align-items: center; + /* white-space: nowrap; */ +} + +.detailAddr { + white-space: break-spaces; +} + +.operate { + display: flex; + justify-content: space-between; + margin-top: 20rpx; +} + +.sureBtn { + height: 60rpx; + padding: 0 20rpx; + background: #ff960f; + color: #ffffff; + font-size: 28rpx; + text-align: center; + line-height: 60rpx; + border-radius: 10rpx; +} + +.operateLeft { + display: flex; + justify-content: flex-start; + align-items: center; +} + +.operate image { + width: 22rpx; + height: 24rpx; + margin-right: 10rpx; +} + +.operateItem { + display: flex; + justify-content: flex-start; + align-items: center; + color: #333333; + font-size: 24rpx; + margin: 0 15rpx; +} + +.checkbox { + display: flex; + justify-content: flex-start; + align-items: center; + margin-bottom: 15rpx; +} + +.detailNum { + color: #333333; + font-size: 28rpx; + font-weight: 600; +} + +.label { + padding: 20rpx; + background: #ffffff; + margin-bottom: 20rpx; + border-radius: 10rpx; +} + +radio .wx-radio-input { + border-radius: 50%; + /* 圆角 */ + width: 32rpx; + height: 32rpx; + border: 1rpx solid #0A6597; +} + +/* 选中后的 背景样式 (红色背景 无边框 可根据UI需求自己修改) */ +radio .wx-radio-input.wx-radio-input-checked { + border: 1rpx solid #0A6597; + background: #0A6597; +} + +/* 选中后的 对勾样式 (白色对勾 可根据UI需求自己修改) */ +radio .wx-radio-input.wx-radio-input-checked::before { + border-radius: 50%; + /* 圆角 */ + width: 32rpx; + /* 选中后对勾大小,不要超过背景的尺寸 */ + height: 32rpx; + /* 选中后对勾大小,不要超过背景的尺寸 */ + line-height: 32rpx; + text-align: center; + font-size: 30rpx; + /* 对勾大小 30rpx */ + color: #fff; + /* 对勾颜色 白色 */ + background: transparent; + transform: translate(-50%, -50%) scale(1); + -webkit-transform: translate(-50%, -50%) scale(1); +} + + +.loginBox { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + z-index: 1000; + background: #ffffff; +} + +.image-loginbj { + width: 750rpx; + height: 100vh; +} + +/* pages/denglu/denglu.wxss */ +.hander { + width: 100%; + height: 100%; +} + +.logo { + width: 410rpx; + height: 90rpx; + margin: 155rpx auto; +} + +image { + width: 100%; + height: 100%; +} + +.form { + width: 635rpx; + height: 220rpx; + margin: 0 auto; +} + +.inputBox { + width: 100%; + height: 90rpx; + display: flex; + justify-content: space-between; + padding-left: 27rpx; + align-items: center; + border: 1rpx solid #eeee; + border-radius: 20rpx; + margin-bottom: 40rpx; + background-color: white; +} + +.inputBox image { + width: 38rpx; + height: 38rpx; + +} + +.form input { + display: inline-block; + height: 100%; + font-size: 30rpx; + flex: 1; + padding-left: 20rpx; + color: #333333; +} + +button.login { + width: 600rpx !important; + height: 90rpx; + background: linear-gradient(270deg, + #00967b 0%, + #126594 100%); + margin-top: 110rpx; + color: #ffffff; + font-weight: normal; + padding: 0; + line-height: 90rpx; + font-size: 36rpx; + border-radius: 50rpx; +} + +button.cancel { + width: 635rpx !important; + height: 90rpx; + background-color: #eee; + margin-top: 40rpx; + color: #ffffff; + font-weight: normal; + padding: 0; + line-height: 90rpx; + font-size: 36rpx; + border-radius: 50rpx; +} + +.loginNow { + color: #fff; + text-align: center; + line-height: 100rpx; + font-size: 34rpx; + position: fixed; + bottom: 100rpx; + width: 370rpx; + height: 100rpx; + background-color: #126594; + border-radius: 52rpx; + left: 190rpx; +} + +.btnDefault { + height: 60rpx; + padding: 0 20rpx; + background: #ffffff; + color: #666666; + font-size: 28rpx; + border: 1rpx solid #f0f0f0; + text-align: center; + line-height: 60rpx; + border-radius: 10rpx; +} + +.btnBox { + display: flex; + justify-content: flex-end; +} + +.btnBox view { + margin-left: 20rpx; +} + +.btnBox .navBtn { + margin-left: 20rpx; +} + +.imgs { + display: flex; + justify-content: flex-start; + align-items: center; + padding-bottom: 10rpx; + padding-top: 10rpx; +} + +.red { + color: red; +} + +.applyTime { + font-size: 28rpx; + color: #999999; + line-height: 60rpx; + display: flex; + justify-content: flex-start; + align-items: center; +} + +.timeimage { + margin-right: 10rpx; +} + +.itemTop { + min-height: 120rpx; + background: linear-gradient(to right, #fef2e5, #ffffff); + display: flex; + flex-direction: column; + line-height: 40rpx; + justify-content: space-between; + padding: 20rpx; + border-radius: 10rpx; +} + +.itemTop1 { + min-height: 120rpx; + background: linear-gradient(to right, #e1e0e6, #ffffff); + display: flex; + flex-direction: column; + line-height: 40rpx; + justify-content: space-between; + padding: 20rpx; + border-radius: 10rpx; +} + +.proName { + display: flex; + justify-content: flex-start; + align-items: center; +} + +.jxs { + display: flex; + justify-content: space-between; + font-size: 24rpx; + color: #333333; +} + +.operateItem image { + width: 22rpx; + height: 24rpx; + margin-right: 10rpx; +} + +.mark { + position: fixed; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: rgba(0, 0, 0, 0.6); + z-index: 2000; + display: flex; + justify-content: center; + align-items: center; +} + +.chooseBox { + background: #ffffff; + width: 600rpx; + border-radius: 10rpx; + display: flex; + justify-content: space-between; + flex-direction: column; + align-items: center; + max-height: 90vh; + overflow-y: auto; + position: relative; +} + +.chooseTitle { + display: flex; + justify-content: center; + align-items: center; + height: 120rpx; + font-size: 30rpx; + color: #ff960f; +} + +.chooseTitle image { + width: 32rpx; + height: 32rpx; + margin-right: 10rpx; +} + +.showBox { + max-height: calc(90vh - 210rpx); + overflow-y: auto; +} + +.textarea { + width: 530rpx; + min-height: 120rpx; + border: 1rpx solid #eeeeee; + border-radius: 10rpx; + font-size: 28rpx; + color: #333333; + padding: 20rpx; + margin-bottom: 30rpx; + box-sizing: border-box; +} + +.popBox { + display: flex; + justify-content: center; + align-items: center; + border-top: 1rpx solid #efefef; + width: 100%; +} + +.popBtn { + height: 90rpx; + line-height: 90rpx; + font-size: 30rpx; + color: #333333; + width: 50%; + text-align: center; +} + +.popBtn1 { + border-right: 1rpx solid #efefef; +} + +page { + background: #EEF2F7; +} + +.pt-120 { + padding-bottom: 120rpx; +} + +.box { + background: #ffffff; + padding: 0 30rpx; + margin-bottom: 10rpx; +} + +/* .title { + height: 100rpx; + line-height: 100rpx; + display: flex; + justify-content: space-between; + border-top: 1rpx solid #f6f6f6; + border-bottom: 1rpx solid #f6f6f6; +} */ + +.titleName { + display: flex; + align-items: center; + justify-content: flex-start; + color: #333333; + font-size: 32rpx; +} + +.titleName>view { + height: 30rpx; + background: #fdac2a; + width: 6rpx; + margin-right: 10rpx; +} + +.detail1>view { + min-height: 90rpx; + border-bottom: 1rpx solid #f6f6f6; + line-height: 90rpx; + display: flex; + justify-content: flex-start; + font-size: 28rpx; +} + +.label1 { + width: 240rpx; +} + +.label1~input { + flex: 1; + height: 90rpx; + font-size: 28rpx; +} + +.imgList { + overflow: hidden; +} + +.btm .btn1 { + background: #ff960f; + color: #ffffff; + font-weight: normal; + height: 80rpx; + font-size: 28rpx; + text-align: center; + line-height: 80rpx; + border-radius: 10rpx; + padding: 0; +} + +.btn5 { + background: #ff960f; + color: #ffffff; + font-weight: normal; + height: 60rpx; + font-size: 24rpx; + text-align: center; + line-height: 60rpx; + border-radius: 10rpx; + padding: 0; + margin-bottom: 20rpx; +} + +.label1~text { + font-family: Regular; + color: #666666; + flex: 1; + font-size: 28rpx; +} + +.label1~view { + font-family: Regular; + color: #666666; + flex: 1; +} + +.uploadImgBox { + display: flex; + justify-content: flex-start; + padding-bottom: 10rpx; +} + +.uploadImgBox>view { + width: 335rpx; +} + +.imgTip { + font-size: 24rpx; + line-height: 40rpx; + color: #666666; + margin-top: 10rpx; +} + +.imgTip>text { + color: red; +} + +.mt-10 { + margin-top: 20rpx; +} + +.lh-40 { + line-height: 40rpx; +} + +.imgTip.red { + color: red; +} + +.label1~.jg { + height: 46rpx; + width: 46rpx; + margin-top: 22rpx; + display: none; +} + +.not { + color: red; +} + +.red .jg, +.not~.jg { + display: inline-block; +} + +.jg { + height: 30rpx; + width: 30rpx; + margin-left: 5rpx; + display: none; + vertical-align: text-top; +} + +.img1 { + height: 150rpx; + width: 150rpx; + border-radius: 10rpx; + position: relative; + margin-right: 10rpx; +} + +.img1 image { + width: 100%; + height: 100%; +} + +.trans { + transform: rotateZ(-90deg); +} + +.removeImg { + width: 30rpx; + height: 30rpx; + background: red; + border-radius: 50%; + color: #ffffff; + font-size: 22rpx; + text-align: center; + line-height: 25rpx; + position: absolute; + top: -11rpx; + right: -11rpx; +} + +.search { + padding: 20rpx; + height: 90rpx; + line-height: 48rpx; + box-sizing: border-box; + background: #ffffff; +} + +.searchBox { + width: 100%; + height: 100%; + border-radius: 25rpx; + border: 1rpx solid #dddddd; + background: #fafbfc; + font-size: 24rpx; + color: #dddddd; + padding-left: 20rpx; +} + +/* 物料申请 */ +.dingdanPic { + width: 25rpx; + height: 30rpx; + margin-right: 10rpx; +} + +.materApplyItem { + height: 90rpx; + display: flex; + align-items: center; + margin-left: 30rpx; + padding-right: 30rpx; + border-bottom: 1px solid #e7e7e7; +} + +.materApplyItem:last-child { + border-bottom: none; +} + +.f32Bold { + font-size: 32rpx; + font-weight: 600; +} + +.materPickW { + width: 495rpx; + margin-left: 55rpx; + position: relative; + font-size: 28rpx; +} + +.materPickW:after { + content: ''; + position: absolute; + right: 0rpx; + top: 50%; + width: 20rpx; + height: 20rpx; + margin-top: -12rpx; + border-style: solid; + border-color: #a3a3a3; + border-width: 0 1rpx 1rpx 0; + transform: rotate(-45deg); +} + +.areaInput { + width: 495rpx; + margin-left: 55rpx; + font-size: 28rpx; +} + +.materApplyItem2 { + display: flex; + align-items: center; + margin-left: 30rpx; + padding: 30rpx 30rpx 30rpx 0; +} + +.materApplyItem3 { + display: flex; + justify-content: space-between; + align-items: center; + padding: 30rpx 20rpx 30rpx 30rpx; + border-bottom: 1px solid #e7e7e7; +} + +.addApplyBtn { + padding: 0 30rpx; + font-size: 24rpx; + color: #fff; + border-radius: 8rpx; + background: #ff960f; + height: 60rpx; + line-height: 60rpx; +} + +.materApplyItem3Left { + display: flex; + align-items: center; +} + +.materApplyItem4 { + display: flex; + align-items: center; + padding: 30rpx 20rpx; + border-bottom: 1px solid #e7e7e7; +} + +.matertextFirst { + display: inline-block; + width: 139rpx; + text-align: center; + word-break: break-word; +} + +.matertextTwo { + display: inline-block; + width: 97rpx; + text-align: center; +} + +.matertextThree { + display: inline-block; + width: 125rpx; + text-align: center; +} + +.matertextFour { + display: inline-block; + flex: 1; + text-align: center; +} + +.matertextFive { + display: inline-block; + width: 135rpx; + text-align: center; +} + +.applyItView view:nth-child(2n) { + background: #f5f5f5; +} + +.materAdSerch { + width: 690rpx; + height: 70rpx; + border-radius: 10rpx; + display: flex; + align-items: center; + background: #fff; + margin: 20rpx auto; +} + +.serchpicter { + width: 44rpx; + height: 44rpx; +} + +.serimgview { + width: 65rpx; + display: flex; + justify-content: center; +} + +.xuanzhongpic { + width: 28rpx; + height: 28rpx; + position: absolute; + bottom: 0; + right: 0; +} + +.materDetailItem { + display: flex; + font-size: 28rpx; + margin-left: 40rpx; + display: flex; + align-items: center; + border-bottom: 1px solid #e7e7e7; + padding: 30rpx 0; +} + +.materdeIleft { + display: inline-block; + width: 140rpx; + text-align: right; +} + +.materdeIRight { + display: inline-block; + width: 435rpx; + margin-left: 95rpx; +} + +.materDetailItem:last-child { + border-bottom: none; +} + +.materIrightImg { + width: 150rpx; + height: 150rpx; + border-radius: 10rpx; + margin-left: 95rpx; + display: block; + background: #eee; +} + +/* 公共样式 */ +.borderBottom { + border-bottom: 1px solid #e7e7e7; +} + +.maAddBtn { + display: flex; + bottom: 0; + width: 100%; + position: fixed; + z-index: 6; +} + +.chamxtxt { + width: 250rpx; + height: 100rpx; + background: #fff; + font-size: 30rpx; + display: flex; + align-items: center; + justify-content: center; +} + +.AddSure { + background: #ff960f; + color: #fff; + height: 100rpx; + font-size: 30rpx; + display: flex; + align-items: center; + justify-content: center; + width: 500rpx; +} + +.color999 { + color: #999 +} + +.botomSub { + font-size: 30rpx; + width: 710rpx; + height: 89rpx; + background-color: #ff960f; + display: flex; + align-items: center; + justify-content: center; + border-radius: 10rpx; + position: fixed; + bottom: 20rpx; + left: 20rpx; + color: #fff; +} + +.comSubmit { + font-size: 30rpx; + width: 750rpx; + height: 100rpx; + background-color: #ff960f; + display: flex; + align-items: center; + justify-content: center; + position: fixed; + bottom: 0rpx; + left: 0rpx; + color: #fff; +} + +.lvcolor { + color: #339933; +} + +.redcolor { + color: #ff3333; +} + +.stared { + font-size: 30rpx; + color: #ff3333; +} + +.mt20 { + margin-top: 20rpx; +} + +.fs-30 { + font-size: 30rpx; +} + +.fs-28 { + font-size: 28rpx; +} + +.fs-26 { + font-size: 26rpx; +} + +.fs-24 { + font-size: 24rpx; +} + +.bg-fff { + background-color: #ffffff; +} + +.mr-30 { + margin-right: 30rpx; +} +.mr-10 { + margin-right: 10rpx; +} + +.ml-20 { + margin-left: 20rpx; +} + +.pb-20 { + padding-bottom: 20rpx; +} + +.pb-10 { + padding-bottom: 10rpx; +} + +.c-333 { + color: #333333; +} + +.lh-50 { + line-height: 50rpx; +} + +.color66 { + color: #666; +} +.txt-red{ color: #FF0000;} + +.weui-cell { + padding: 0; + min-height: 90rpx; + font-size: 28rpx; + flex: 1 +} + +.weui-cell::before { + left: 0; +} + +.weui-cells { + padding: 0; + margin: 0; +} +.content-title-flex { + flex: 1; +} + +.detail-tab{display: flex; justify-content: space-between; height: 90rpx; border-bottom: 1px solid #f0f0f0; color: #666666;} +.detail-tab>view{flex: 1; text-align: center; line-height: 82rpx; font-size: 28rpx; position: relative;} +.detail-tab>view.active{color: #333333; font-size: 32rpx;} +.detail-tab>view .actived{width: 60rpx; height: 6rpx; background-color: #0a6597; border-radius: 3rpx; margin: 0 auto;} + +.detail-sec-tab{display: flex; width: 600rpx; justify-content: space-between; height: 60rpx; line-height: 60rpx; border: solid 1px #cccccc; border-radius: 10rpx; margin: 20rpx auto; font-size: 28rpx;} +.detail-sec-tab>view{flex: 1; text-align: center;} +.detail-sec-tab>view.actived{ background-color: #0a6597; color: #FFF;} + +/** 文件上传样式 **/ +.txt-upload{flex: 1; color: blue; font-size: 24rpx; width: 100%;} +.txt-upload-list{ display: flex; justify-content: space-between; margin:4rpx 0 20rpx;} +.txt-upload-list text:first-child{flex: 1; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} +.txt-upload-list text:last-child{width: 80rpx; margin-left: 20rpx;} + + +/** 监控 **/ +.lack {height: 100%; width: 100vw; display: flex; justify-content: center; padding-top: 10vh; box-sizing: border-box; background: url()center 100rpx/400rpx 518rpx no-repeat #f4f5f6;} +.f-r { float: right;} +.red { color: #f00;} +.green { color: #2096ff;} +.yellow { color: #f2993a;} +.blue { color: #2096ff;} +.font-666 { color: #666;} +.font-333 { color: #333;} +.font-999 { color: #999;} +.load { text-align: center; height: 60rpx; line-height: 60rpx; font-size: 24rpx; color: #999;} +.lack>image {width: 560rpx; height: 482rpx;} +.opt-right{ width: 44rpx; height: 44rpx; margin-left: 10rpx;} + +/*角标状态*/ +.content-list-type-txt3{ + height: 36rpx; + position: absolute; + right: 2rpx; + font-size: 22rpx; + color: #fff; + display: flex; + align-items: center; + opacity: 0.9; + letter-spacing:1px; + font-weight: 500; +} +.content-list-type-txt6{ + height: 36rpx; + position: absolute; + right: 0rpx; + font-size: 19rpx; + color: #fff; + display: flex; + align-items: center; + opacity: 0.9; +} \ No newline at end of file diff --git a/components/bankLink/bankLink.js b/components/bankLink/bankLink.js new file mode 100644 index 0000000..4d48c44 --- /dev/null +++ b/components/bankLink/bankLink.js @@ -0,0 +1,239 @@ +// components/region/region.js +const { + findLinkNumberList +} = require('../../api/api') +Component({ + /** + * 组件的属性列表 + */ + properties: { + showRegion: { + type:Boolean, + value:false + }, + provinceName: { + type:String, + value: '' + }, + cityName: { + type:String, + value: '' + }, + }, + + /** + * 组件的初始数据 + */ + data: { + capitalId: '', //资方 + bankName:'', //支行 + bankNamed: '',//总行 + bankNameList: [{ + id: 1, + name: '中国工商银行' + },{ + id: 2, + name: '中国农业银行' + },{ + id: 3, + name: '中国银行' + },{ + id: 4, + name: '中国建设银行' + },{ + id: 5, + name: '中国邮政储蓄银行' + },{ + id: 6, + name: '交通银行' + },{ + id: 7, + name: '中信银行' + },{ + id: 8, + name: '兴业银行' + },{ + id: 9, + name: '华夏银行' + },{ + id: 10, + name: '招商银行' + },{ + id: 11, + name: '民生银行' + },{ + id: 12, + name: '农村商业' + },{ + id: 13, + name: '其他' + }], //开户银行 + provinceList:[], + page: 1, + region: [], //开户地址 + customItem: '' + }, + ready(){ + this.setData({ + capitalId: wx.getStorageSync('capitalId') + }) + }, + + pageLifetimes: { + show: function () { + // 页面被展示 + // this._bindBankChange() + }, + }, + observers: { + 'cityName': function (cityName) { + if(cityName){ + var arr = this.data.region + arr[0] = this.data.provinceName + arr[1] = this.data.cityName + this.setData({ + region: arr, + }) + } + // console.log(333, this.data.provinceName) + } + }, + /** + * 组件的方法列表 + */ + methods: { + + /** + * + * 搜索 + * + * @param {*} e + */ + _bindBankChange: function (bankName) { + var that = this; + var page = that.data.page; + var list = that.data.provinceList; + if(this.data.capitalId =='04'){ + this.setData({ + region: [] + }) + } + findLinkNumberList({ + capitals: wx.getStorageSync('capitalId'), + bankName: this.data.bankName?this.data.bankName:'', //总行名称 + bankBranch: this.data.bankNamed?this.data.bankNamed:'', //支行名称 + province: this.data.region[0]?this.data.region[0]:'', + city: this.data.region[1]?this.data.region[1]:'', + page: page, + limit: 15 + }).then((res) => { + // var resData = res.map(itm=>itm.columns) + var resData = res.data + for (var i = 0; i < resData.length; i++) { + list.push(resData[i]) + } + this.setData({ + provinceList: list + }) + }) + }, + + /** + * + * 选择 + * + * @param {*} e + */ + _chooseBank(e) { + const id = e.currentTarget.dataset.id + const name = e.currentTarget.dataset.name + var data = { + id: id, + name: name, + } + this._closeBank(); + this.triggerEvent('chooseRegion', data); + }, + + /** + * + * 关闭弹框 + * + * @param {*} e + */ + _closeBank(e) { + this.setData({ + bankNamed: '', + // region: [], + bankName: "", + provinceList:[], + showRegion: false, + }) + }, + /** + * 搜索查询 + */ + onSearch(e){ + // console.log("执行",e.detail); + let bankName = e.detail; + if(bankName.length < 2){ + wx.showToast({ + title: '请输入至少2个字符', + icon: 'none', + duration: 2000 + }); + return; + }else{ + this.setData({ + page: 1, + provinceList: [], + bankName + }) + } + this._bindBankChange(); + }, + //清空搜索框 + onSearchClear(){ + this.setData({ + page: 1, + provinceList: [], + bankName: '' + }) + this._bindBankChange(); + }, + //开户银行选择 + bindBankList(e){ + this.setData({ + page: 1, + provinceList: [], + bankName_id: this.data.bankNameList[e.detail.value].id, + bankNamed: this.data.bankNameList[e.detail.value].name, + // bankNamed: this.data.bankNameList[e.detail.value].name == '其他' ? '' : this.data.bankNameList[e.detail.value].name, + }) + this._bindBankChange(); + }, + //开户地址 + bindRegionChange(e){ + // console.log('picker发送选择改变,携带值为', e.detail.value) + this.setData({ + page: 1, + provinceList: [], + region: e.detail.value + }) + this._bindBankChange(); + }, + more: function () { + this.data.page++; + this._bindBankChange() + }, + //清空 + emptyData(e){ + this.setData({ + page: 1, + provinceList: [], + region: [] + }) + this._bindBankChange(); + }, + } +}) \ No newline at end of file diff --git a/components/bankLink/bankLink.json b/components/bankLink/bankLink.json new file mode 100644 index 0000000..bd02c74 --- /dev/null +++ b/components/bankLink/bankLink.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "@vant/weapp/popup/index", + "van-search": "@vant/weapp/search/index", + "van-empty": "@vant/weapp/empty/index" + } +} \ No newline at end of file diff --git a/components/bankLink/bankLink.wxml b/components/bankLink/bankLink.wxml new file mode 100644 index 0000000..2583c8e --- /dev/null +++ b/components/bankLink/bankLink.wxml @@ -0,0 +1,50 @@ + + + + + + 请选择 + + + + + + + + {{bankNamed}} + + + 开户银行 + + + + + + + + {{region[0]}}{{region[1]}} + 开户地址 + X + + + + + + + + + {{item.bank_name}} + + + \ No newline at end of file diff --git a/components/bankLink/bankLink.wxss b/components/bankLink/bankLink.wxss new file mode 100644 index 0000000..2473fbf --- /dev/null +++ b/components/bankLink/bankLink.wxss @@ -0,0 +1,40 @@ +/* components/region/region.wxss */ +.content-province-title { + width: 100%; + height: 100rpx; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 30rpx; + border-bottom: 3rpx solid #f2f2f2; + position: relative; +} + +.content-province-title-left { + position: absolute; + left: 0; + margin-left: 30rpx; + width: 45rpx; + height: 45rpx; +} + +.content-province-sc { + width: 100%; + height: calc(100% - 300rpx); +} + +.content-province { + width: 100%; + height: 100rpx; + display: flex; + font-size: 26rpx; + align-items: center; + justify-content: center; + border-bottom: 3rpx solid #f2f2f2; +} +.tab-box{ display: flex; align-items: center; justify-content: space-between; height: 70rpx; border-bottom: 1px solid #f0f0f0;} +.tab-box>view{flex: 1; width: 50%; text-align: center; font-size: 24rpx; height: 70rpx; line-height: 70rpx; border-left: 1px solid #f0f0f0; font-weight: 800; } +.tab-box .picker view{white-space: nowrap; text-overflow: ellipsis; overflow: hidden;} +.picker-box{position: relative;} +.picker-box .close{position: absolute; right: 0rpx; top: 0; color: #999; padding: 0 30rpx;} \ No newline at end of file diff --git a/components/region/region.js b/components/region/region.js new file mode 100644 index 0000000..047e8eb --- /dev/null +++ b/components/region/region.js @@ -0,0 +1,194 @@ +// components/region/region.js +const { + getProvinceList, + getCitysByProId, + getAreaByCityId, + getStreetByAreaId +} = require('../../api/api') +Component({ + /** + * 组件的属性列表 + */ + properties: { + showRegion: { + type:Boolean, + value:false + }, + traderId: { + type: String + } + }, + + /** + * 组件的初始数据 + */ + data: { + }, + pageLifetimes: { + show: function () { + // 页面被展示 + this._bindRegionChange() + }, + }, + /** + * 组件的方法列表 + */ + methods: { + + /** + * + * 选择用户地址 + * + * @param {*} e + */ + _bindRegionChange: function (e) { + getProvinceList({ + traderId: this.data.traderId, + }).then((res) => { + this.setData({ + provinceList: res + }) + }) + + this.setData({ + provinceShow: true + }) + }, + + /** + * + * 选择省查找市 + * + * @param {*} e + */ + _chooseProvince(e) { + const ProvinceID = e.currentTarget.dataset.id + const provinceName = e.currentTarget.dataset.name + const traderId = e.currentTarget.dataset.tid + this.setData({ + provinceShow: false, + cityShow: true, + backShow: true, + provinceName: provinceName, + }) + wx.showLoading({ + title: '加载中', + mask: true + }) + getCitysByProId({ + province: ProvinceID, + traderId: traderId?traderId:'', + }).then((res) => { + wx.hideLoading() + this.setData({ + cityList: res + }) + }) + }, + + + /** + * + * 选择市查找区 + * + * @param {*} e + */ + _chooseCity(e) { + const city = e.currentTarget.dataset.id + const cityName = e.currentTarget.dataset.name + const traderId = e.currentTarget.dataset.tid + this.setData({ + cityShow: false, + areaShow: true, + cityName: cityName + }) + wx.showLoading({ + title: '加载中', + mask: true + }) + getAreaByCityId({ + city: city, + traderId: traderId?traderId:'', + }).then((res) => { + wx.hideLoading() + this.setData({ + areaList: res + }) + }) + }, + + + /** + * + * 选择区 + * + * @param {*} e + */ + _chooseArea(e) { + const areaName = e.currentTarget.dataset.name + this.setData({ + showRegion: false, + }) + setTimeout(()=>{ + this.setData({ + provinceShow: true, + areaShow: false, + backShow: false, + areaName: areaName + }) + console.log("选择的省市区===》》》", this.data.provinceName, this.data.cityName, this.data.areaName) + var data = { + provinceName: this.data.provinceName, + cityName: this.data.cityName, + areaName: this.data.areaName, + } + this.triggerEvent('chooseRegion', data) + },200) + }, + + + + /** + * + * 市区后退 + * + * @param {*} e + */ + _backChooseRegion(e) { + if (this.data.cityShow) { + this.setData({ + cityShow: false, + provinceShow: true, + backShow: false, + }) + } else if (this.data.areaShow) { + this.setData({ + areaShow: false, + cityShow: true + }) + } + }, + + /** + * + * 关闭弹框 + * + * @param {*} e + */ + _closeRegion(e) { + this.setData({ + provinceName: "", + cityName: "", + areaName: "", + addressName: "", + provinceShow: true, + showRegion: false, + cityShow: false, + areaShow: false, + backShow: false, + }) + }, + + + } +}) \ No newline at end of file diff --git a/components/region/region.json b/components/region/region.json new file mode 100644 index 0000000..b94c3e8 --- /dev/null +++ b/components/region/region.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "@vant/weapp/popup/index" + } +} \ No newline at end of file diff --git a/components/region/region.wxml b/components/region/region.wxml new file mode 100644 index 0000000..6892a10 --- /dev/null +++ b/components/region/region.wxml @@ -0,0 +1,13 @@ + + + + + + 请选择地址 + + + {{item.columns.ProvinceName}} + {{item.columns.CityName}} + {{item.columns.DistrictName}} + + \ No newline at end of file diff --git a/components/region/region.wxss b/components/region/region.wxss new file mode 100644 index 0000000..e28b0d7 --- /dev/null +++ b/components/region/region.wxss @@ -0,0 +1,35 @@ +/* components/region/region.wxss */ +.content-province-title { + width: 100%; + height: 100rpx; + display: flex; + align-items: center; + justify-content: center; + font-weight: bold; + font-size: 30rpx; + border-bottom: 3rpx solid #f2f2f2; + position: relative; +} + +.content-province-title-left { + position: absolute; + left: 0; + margin-left: 30rpx; + width: 45rpx; + height: 45rpx; +} + +.content-province-sc { + width: 100%; + height: calc(100% - 100rpx); +} + +.content-province { + width: 100%; + height: 100rpx; + display: flex; + font-size: 26rpx; + align-items: center; + justify-content: center; + border-bottom: 3rpx solid #f2f2f2; +} \ No newline at end of file diff --git a/components/statusBar/statusBar.js b/components/statusBar/statusBar.js new file mode 100644 index 0000000..0969fcd --- /dev/null +++ b/components/statusBar/statusBar.js @@ -0,0 +1,69 @@ +// pages/components/statusBar/statusBar.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + showBackTop: Boolean, + title: String + }, + + /** + * 组件的初始数据 + */ + data: { + showBack: true + }, + + /** + * 组件的方法列表 + */ + methods: { + /** + * + *返回上一级 + * + * @param {*} e + */ + _backPage(e) { + wx.navigateBack() + }, + }, + + lifetimes: { + attached: function () { + wx.getSystemInfo({ + success: (res) => { + const isiOS = res.system.indexOf('iOS') > -1; + this.setData({ + navHeight: isiOS ? 44 : 48, + statusBarHeight: res.statusBarHeight, + windowHeight: res.windowHeight, + windowWidth: res.windowWidth, + }) + } + }) + // wx.getSystemInfo({ + // success: (res) => { + // const isiOS = res.system.indexOf('iOS') > -1; + // this.setData({ + // navHeight: isiOS ? 44 : 48, + // statusBarHeight: res.statusBarHeight, + // windowHeight: res.windowHeight, + // windowWidth: res.windowWidth, + // }) + // } + // }) + }, + }, + + pageLifetimes: { + show: function () { + if (getCurrentPages().length <= 1) { + this.setData({ + showBack: false + }) + } + }, + } +}) \ No newline at end of file diff --git a/components/statusBar/statusBar.json b/components/statusBar/statusBar.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/components/statusBar/statusBar.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/components/statusBar/statusBar.wxml b/components/statusBar/statusBar.wxml new file mode 100644 index 0000000..b3894f0 --- /dev/null +++ b/components/statusBar/statusBar.wxml @@ -0,0 +1,11 @@ + + + + + + + {{title}} + + + + diff --git a/components/statusBar/statusBar.wxss b/components/statusBar/statusBar.wxss new file mode 100644 index 0000000..e8960d3 --- /dev/null +++ b/components/statusBar/statusBar.wxss @@ -0,0 +1,47 @@ +/* pages/components/statusBar/statusBar.wxss */ +.diynavbar-content { + position: fixed; + top: 0; + z-index: 9999; +} + +.diynavbar { + display: flex; + align-items: flex-end; +} + +.diynavbar-none { + display: flex; + align-items: flex-end; + justify-content: center; +} + +.navBar-content { + width: 750rpx; + display: flex; + align-items: center; +} + +.navBar-search-container { + position: relative; + display: flex; + width: 100%; + flex-direction: row; + justify-content: center; + align-items: center; + margin-left: 20rpx; +} + + +.navBar-search-text { + font-size: 36rpx; + font-weight: bold; + color: #ffffff; +} + +.navBar-search-image { + position: absolute; + width: 65rpx; + height: 65rpx; + left: 0; +} \ No newline at end of file diff --git a/custom-tab-bar/index.js b/custom-tab-bar/index.js new file mode 100644 index 0000000..e64d3e1 --- /dev/null +++ b/custom-tab-bar/index.js @@ -0,0 +1,78 @@ +Component({ + data: { + selected: 0, + "selectedColor": "#0a6597", + "color": "#999999", + "borderStyle": "black", + "backgroundColor": "#ffffff", + navList: [] + }, + ready() { + if(wx.getStorageSync('userType') == 'PLATFORM_EMP'){//平台员工 + this.setData({ + navList: [{ + "pagePath": "/pages/home/home", + "text": "首页", + "iconPath": "/img/home.png", + "selectedIconPath": "/img/home-se.png" + }, + { + "pagePath": "/pages/pend/pend", + "text": "待办", + "iconPath": "/img/pend.png", + "selectedIconPath": "/img/pend-se.png" + }, + { + "pagePath": "/pages/mine/mine", + "text": "我的", + "iconPath": "/img/mine.png", + "selectedIconPath": "/img/mine-se.png" + }] + }); + }else if(wx.getStorageSync('userType') == 'SERVICE_PROV'){//服务商 + this.setData({ + navList: [{ + "pagePath": "/monitor/pages/home/home", + "text": "首页", + "iconPath": "/img/home.png", + "selectedIconPath": "/img/home-se.png" + }, + { + "pagePath": "/monitor/pages/workOrder/workOrder", + "text": "工单", + "iconPath": "/img/mine.png", + "selectedIconPath": "/img/mine-se.png" + }] + }); + }else{//代理商 + this.setData({ + navList: [{ + "pagePath": "/pages/home/home", + "text": "首页", + "iconPath": "/img/home.png", + "selectedIconPath": "/img/home-se.png" + }, + { + "pagePath": "/pages/mine/mine", + "text": "我的", + "iconPath": "/img/mine.png", + "selectedIconPath": "/img/mine-se.png" + }] + }); + } + }, + methods: { + switchTab(e) { + const data = e.currentTarget.dataset + const url = data.path + if(url =='/monitor/pages/home/home' || url =='/monitor/pages/workOrder/workOrder'){ + wx.navigateTo({ + url: url, //因为添加页面在分包中 因此只能使用wx.navigateTo跳转 + }) + }else{ + wx.switchTab({url}) + } + + } + } +}) \ No newline at end of file diff --git a/custom-tab-bar/index.json b/custom-tab-bar/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/custom-tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/custom-tab-bar/index.wxml b/custom-tab-bar/index.wxml new file mode 100644 index 0000000..d733d7e --- /dev/null +++ b/custom-tab-bar/index.wxml @@ -0,0 +1,8 @@ + + + + + + {{item.text}} + + diff --git a/custom-tab-bar/index.wxss b/custom-tab-bar/index.wxss new file mode 100644 index 0000000..7caca50 --- /dev/null +++ b/custom-tab-bar/index.wxss @@ -0,0 +1,40 @@ +.tab-bar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background: white; + display: flex; + box-sizing: content-box; + height: 48px; + padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); + +} + +.tab-bar-border { + background-color: rgba(0, 0, 0, 0.15); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 1px; + transform: scaleY(0.5); +} + +.tab-bar-item { + flex: 1; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.tab-bar-item image { + width: 27px; + height: 27px; +} + +.tab-bar-item view { + font-size: 10px; +} diff --git a/home/components/finish/finish.js b/home/components/finish/finish.js new file mode 100644 index 0000000..1a2e684 --- /dev/null +++ b/home/components/finish/finish.js @@ -0,0 +1,918 @@ +// home/components/finish/finish.js +const { + getFormSet,IMG_BASE_URL,WU_TU_PIAN_URL +} = require('../../../api/api') +Component({ + /** + * 组件的属性列表 + */ + properties: { + detailObj: Object, + detail: Object + }, + + /** + * 组件的初始数据 + */ + data: { + formSetObj:{}, + capture: ['album','camera'], + //安装 + photoTips: [ + { + sampleGraph: '', + showKey: 'safety_warning_img2', + must: '0', + status: '0', + key:'safetyWarningImg2', + num: 15, + title: '三级安全教育卡', + message: '' + },{ + sampleGraph: '', + showKey: 'kg_condition_files', + must: '0', + status: '0', + key:'kgConditionFiles', + num: 15, + min: 1, + title: '安全防护措施合照照片', + message: '' + }, + //华融 + { + sampleGraph: '', + showKey: 'other_imgs5', + must: '0', + status: '0', + key:'otherImgs5', + num: 15, + title: '水槽细节照片', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs6', + must: '0', + status: '0', + key:'otherImgs6', + num: 15, + title: '落水管照片', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs7', + must: '0', + status: '0', + key:'otherImgs7', + num: 15, + title: '假梁-斜梁方向', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs8', + must: '0', + status: '0', + key:'otherImgs8', + num: 15, + title: '并网箱逆变器防雨罩照片', + message: '' + }, + //广发资方 + { + sampleGraph: '', + showKey: 'safety_warning_img2_03', + must: '0', + status: '0', + key:'safetyWarningImg2', + num: 15, + title: '施工安全图-三级安全教育', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_warning_img3', + must: '0', + status: '0', + key:'safetyWarningImg3', + num: 15, + title: '施工安全图-开工前站班会(施工安全用品:安全帽、安全绳、反光衣、工作鞋)', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_warning_img', + must: '0', + status: '0', + key:'safetyWarningImg', + num: 15, + title: '施工安全图-安全警示牌', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_disclose_doc_img', + must: '0', + status: '0', + key:'safetyDiscloseDocImg', + num: 15, + title: '施工安全图-安全技术交底书', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img10', + must: '0', + status: '0', + key:'zjImg10', + num: 15, + min: 3, + title: '基础安装-螺栓孔洞防水图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img11', + must: '0', + status: '0', + key:'zjImg11', + num: 15, + title: '基础安装-柱脚防水完工图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img5_03', + must: '0', + status: '0', + key:'zjImg5', + num: 15, + title: '支架安装图-支架安装完成VR图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img8', + must: '0', + status: '0', + key:'zjImg8', + num: 15, + title: '支架安装图-支架方阵(东向西完工照)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img9', + must: '0', + status: '0', + key:'zjImg9', + num: 15, + title: '支架安装图-支架方阵(北向南完工照)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img4_03', + must: '0', + status: '0', + key:'zjImg4', + num: 15, + title: '支架安装图-立柱东西间距、南北间距(带尺寸)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img12', + must: '0', + status: '0', + key:'zjImg12', + num: 15, + title: '支架安装图-斜梁悬挑(南)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img13', + must: '0', + status: '0', + key:'zjImg13', + num: 15, + title: '支架安装图-斜梁悬挑(北)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img14', + must: '0', + status: '0', + key:'zjImg14', + num: 15, + title: '支架安装图-檀条悬挑(东)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img15', + must: '0', + status: '0', + key:'zjImg15', + num: 15, + title: '支架安装图-檀条悬挑(西)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img4_03', + must: '0', + status: '0', + key:'jdImg4', + num: 15, + title: '支架接地图-支架接地', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img3', + must: '0', + status: '0', + key:'componentImg3', + num: 15, + title: '组件航拍俯视照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img4', + must: '0', + status: '0', + key:'componentImg4', + num: 15, + title: '组件安装完成VR视图', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img1', + must: '0', + status: '0', + key:'bkImg1', + num: 15, + title: '边框接地图-边框与边框接地', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img1_03', + must: '0', + status: '0', + key:'componentImg1', + num: 15, + title: '边框接地图-组件安装倾角', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img2', + must: '0', + status: '0', + key:'bkImg2', + num: 15, + title: '边框接地图-边框与支架接地', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img3', + must: '0', + status: '0', + key:'bkImg3', + num: 15, + title: '边框接地图-其他图片', + message: '' + },{ + sampleGraph: '', + showKey: 'yk_img1', + must: '0', + status: '0', + key:'ykImg1', + num: 15, + title: '压块或背压板照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dc_imgs_03', + must: '0', + status: '0', + key:'dcImgs', + num: 15, + title: '逆变器安装图-整体外观及走线及采集器(离地高度)', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_plate_img_03', + must: '0', + status: '0', + key:'nbqPlateImg', + num: 15, + title: '逆变器安装图-铭牌', + message: '' + },{ + sampleGraph: '', + showKey: 'total_imgs_03', + must: '0', + status: '0', + key:'totalImgs', + num: 15, + title: '逆变器安装图-接地情况', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zlc_img', + must: '0', + status: '0', + key:'nbqZlcImg', + num: 15, + title: '逆变器安装图-逆变器交流侧', + message: '' + },{ + sampleGraph: '', + showKey: 'open_way_voltage_imgs_03', + must: '0', + status: '0', + key:'openWayVoltageImgs', + num: 15, + title: '逆变器安装图-组串开路电压照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zb_img_03', + must: '0', + status: '0', + key:'nbqZbImg', + num: 15, + title: '并网箱安装图-外观及走线(离地高度)', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_inner_img_03', + must: '0', + status: '0', + key:'bwInnerImg', + num: 15, + title: '并网箱安装图-并网箱内部全景', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_jd_img', + must: '0', + status: '0', + key:'bwJdImg', + num: 15, + title: '并网箱安装图-接地情况', + message: '' + },{ + sampleGraph: '', + showKey: 'fix_other_img_03', + must: '0', + status: '0', + key:'fixOtherImg', + num: 15, + title: '线缆走向(屋顶、下墙)、线缆保护管(或桥架)敷设及固定照片', + message: '' + },{ + sampleGraph: '', + showKey: 'size_measure_imgs_03', + must: '0', + status: '0', + key:'sizeMeasureImgs', + num: 15, + title: '电缆桥架内部电缆照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img8', + must: '0', + status: '0', + key:'jdImg8', + num: 15, + title: '接地极图-并网箱、逆变器安装接地极', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img5_03', + must: '0', + status: '0', + key:'jdImg5', + num: 15, + title: '接地极图-支架接地电阻阻值(近景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img11', + must: '0', + status: '0', + key:'jdImg11', + num: 15, + title: '接地极图-支架接地电阻测量照片(远景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img9', + must: '0', + status: '0', + key:'jdImg9', + num: 15, + title: '接地极图-并网箱、逆变器安装接地电阻阻值(近景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img12', + must: '0', + status: '0', + key:'jdImg12', + num: 15, + title: '接地极图-并网箱、逆变器安装接地电阻测量照片 (远景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img10', + must: '0', + status: '0', + key:'jdImg10', + num: 15, + title: '接地极图-接地引下线警示做法', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img1', + must: '0', + status: '0', + key:'fsImg1', + num: 15, + title: '防水措施图-横竖向水槽', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img2', + must: '0', + status: '0', + key:'fsImg2', + num: 15, + title: '防水措施图-落水管走向及其固定', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img3', + must: '0', + status: '0', + key:'fsImg3', + num: 15, + title: '防水措施图-其他图片', + message: '' + },{ + sampleGraph: '', + showKey: 'water_mud_clamp_imgs', + must: '0', + status: '0', + key:'waterMudClampImgs', + num: 15, + title: '导水排泥夹照片', + message: '' + }, + //越秀 + { + sampleGraph: '', + showKey: 'dzjc1', + must: '1', + status: '0', + key:'dzjc1', + num: 15, + title: '电站基础-主屋', + message: '' + },{ + sampleGraph: '', + showKey: 'dzjc2', + must: '0', + status: '0', + key:'dzjc2', + num: 15, + title: '电站基础-副屋', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img1', + must: '0', + status: '0', + key:'zjImg1', + num: 15, + title: '支架正面照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img2', + must: '0', + status: '0', + key:'zjImg2', + num: 15, + title: '支架侧视图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img3', + must: '0', + status: '0', + key:'zjImg3', + num: 15, + title: '支架北侧照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img4', + must: '0', + status: '0', + key:'zjImg4', + num: 15, + title: '支架型号照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img5', + must: '0', + status: '0', + key:'zjImg5', + num: 15, + title: '航拍图照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img1', + must: '0', + status: '0', + key:'componentImg1', + num: 15, + title: '组件倾角照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img2', + must: '0', + status: '0', + key:'componentImg2', + num: 15, + title: '组件方位角照片', + message: '' + },{ + sampleGraph: '', + showKey: 'size_measure_imgs', + must: '0', + status: '0', + key:'sizeMeasureImgs', + num: 15, + title: '屋顶线缆安装照片', + message: '' + },{ + sampleGraph: '', + showKey: 'fix_other_img', + must: '0', + status: '0', + key:'fixOtherImg', + num: 15, + title: '线缆下墙照片', + message: '' + },{ + sampleGraph: '', + showKey: 'total_imgs', + must: '0', + status: '0', + key:'totalImgs', + num: 15, + title: '逆变器组串接入照片', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_inner_img', + must: '0', + status: '0', + key:'bwInnerImg', + num: 15, + title: '并网箱内部照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dc_imgs', + must: '0', + status: '0', + key:'dcImgs', + num: 15, + title: '逆变器安装照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zb_img', + must: '0', + status: '0', + key:'nbqZbImg', + num: 15, + title: '并网箱逆变器整体照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dqsb_an_img_one', + must: '0', + status: '0', + key:'dqsbAnImgOne', + num: 15, + title: '逆变器注册截图照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_plate_img', + must: '0', + status: '0', + key:'nbqPlateImg', + num: 15, + title: '逆变器铭牌照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_plate_img', + must: '0', + status: '0', + key:'zjPlateImg', + num: 15, + title: '组件铭牌照片', + message: '' + },{ + sampleGraph: '', + showKey: 'open_way_voltage_imgs', + must: '0', + status: '0', + key:'openWayVoltageImgs', + num: 15, + title: '开路电压图', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img1', + must: '0', + status: '0', + key:'jdImg1', + num: 15, + title: '组件与组件之间接地照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img2', + must: '0', + status: '0', + key:'jdImg2', + num: 15, + title: '组件与支架接地照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img3', + must: '0', + status: '0', + key:'jdImg3', + num: 15, + title: '支架与接地扁铁连接照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img4', + must: '0', + status: '0', + key:'jdImg4', + num: 15, + title: '接地扁铁下墙照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img5', + must: '0', + status: '0', + key:'jdImg5', + num: 15, + title: '支架接地电阻照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img6', + must: '0', + status: '0', + key:'jdImg6', + num: 15, + title: '电气接地电阻照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_report', + must: '0', + status: '0', + key:'zjReport', + num:1, + title: '自检记录报告', + message: '' + },{ + sampleGraph: '', + showKey: 'other_files', + must: '0', + status: '0', + key:'otherFiles', + num:2, + title: '其它资料', + message: '' + },{ + sampleGraph: '', + showKey: 'supplement_video_url', + must: '0', + status: '0', + key:'supplementVideoUrl', + num:5, + title: '补充视频', + message: '' + }, + ], + // 安装 + photo: { + supplementVideoUrl: [], //补充视频 + contractUrl: [], //合同 + filingDocumentPhoto: [], //备案证 + otherImgs1: [], //银行印鉴留样 + otherImgs2: [], //法定代表人/负责人签字照 + otherImgs3: [], //正脸、持笔/持印、合同签署页同框 + otherImgs4: [], //签署完成照片 + //工程信息 + dzjc1: [], //电站基础-主屋照片 + dzjc2: [], //电站基础-副屋照片 + nbqPlateImg: [],//逆变器序列号照片,逆变器1铭牌照片 + txPlateImg: [],//逆变器通讯棒照片,通讯棒1铭牌照 + zjPlateImg: [],//组件铭牌照片 + zjSnImgs:[],//组件SN + zjImg1: [],//膨胀螺栓 + zjImg2: [],//基座安装固定 + zjImg3: [],//底座防水 + zjImg4: [],//支架基础距离房檐的距离 + zjImg5: [],//支架东向西拍摄 + zjImg6: [],//支架西向东拍摄--- + zjImg7: [],//支架南向北拍摄--- + zjImg8: [],//支架北向南拍摄--- + zjImg9: [],//支架角度---- + fixOtherImg: [], //线缆下墙照片 + componentImg1: [],//支架节点(斜支撑) + componentImg2: [],//支架距照片(南北) + componentImg3: [],//支架距照片(东西) + componentImg4: [],//防风加固,1-3张 + sizeMeasureImgs: [],//方管尺寸测量---,9张 + totalImgs: [],//并网箱、逆变器外部安装照片、接地引下线,逆变器、并网箱整体安装照片, 存在字段名逆变器和并网箱接地照 + bwInnerImg: [],//并网箱内部整体照片 + dcImgs: [], //逆变器安装照片 + nbqZbImg: [],//并网箱逆变器整体照片 + dqsbAnImgOne: [],//直流线缆保护 + dqsbAnImgTwo: [],//直流线缆固定 + zjJdImgs: [],//引下线与支架连接点、南北坡接地连接点,2张---- + groundResistanceImgs: [],//接地电阻,1-2张----- + zujianJdImg: [],//组件边框接地 + openWayVoltageImgs: [],//开路电压,1-6张----- + directionAirImg1: [],//东向西航拍---- + directionAirImg2: [],//西向东航拍---- + directionAirImg3: [],//南向北航拍---- + directionAirImg4: [],//北向南航拍---- + zjNearImg: [],//组件近景---- + zjAngleImg: [],//组件角度---- + zjItemImg: [],//檩条出组件照片---- + waterChannelImg: [],//水槽照片---- + mediumFixImg: [],//中压固定照片---- + safetyWarningImg: [],//安全警示牌---- + safetyDiscloseDocImg: [],//现场安全交底文件---- + discloseDocImg: [],//现场交底照片---- + recordDocImg: [],//记录表---- + jdImg1: [],//组件与组件之间接地照片 + jdImg2: [],//组件与支架接地照片 + jdImg3: [],//支架与接地扁铁连接照片 + jdImg4: [],//接地扁铁下墙照片 + jdImg5: [],//支架接地电阻照片 + jdImg6: [],//电气接地电阻照片 + zjReport:[],//自检记录报告 + otherFiles: [], //其他资料 + kgConditionFiles: [], //安全防护措施合照照片 + //广发 + safetyWarningImg2:[],//施工安全图-三级安全教育 + safetyWarningImg3:[],//施工安全图-开工前站班会(施工安全用品:安全帽、安全绳、反光衣、工作鞋) + safetyWarningImg:[],// 施工安全图-安全警示牌 + safetyDiscloseDocImg:[],// 施工安全图-安全技术交底书 + zjImg10:[],// 基础安装-螺栓孔洞防水图 + zjImg11:[],// 基础安装-柱脚防水完工图 + zjImg8:[],// 支架安装图-支架方阵(东向西完工照) + zjImg9:[],// 支架安装图-支架方阵(北向南完工照) + zjImg12:[],// 支架安装图-斜梁悬挑(南) + zjImg13:[],// 支架安装图-斜梁悬挑(北) + zjImg14:[],// 支架安装图-檀条悬挑(东) + zjImg15:[],// 支架安装图-檀条悬挑(西) + componentImg3:[],// 组件航拍俯视照片 + componentImg4:[],// 组件安装完成VR视图 + bkImg1:[],// 边框接地图-边框与边框接地 + bkImg2:[],// 边框接地图-边框与支架接地 + bkImg3:[],// 边框接地图-其他图片 + ykImg1:[],// 压块或背压板照片 + nbqZlcImg:[],// 逆变器安装图-逆变器交流侧 + bwJdImg:[],// 并网箱安装图-接地情况 + jdImg8:[],// 接地极图-并网箱、逆变器安装接地极 + jdImg11:[],// 接地极图-支架接地电阻测量照片(远景) + jdImg9:[],// 接地极图-并网箱、逆变器安装接地电阻阻值(近景) + jdImg12:[],// 接地极图-并网箱、逆变器安装接地电阻测量照片 (远景) + jdImg10:[],// 接地极图-接地引下线警示做法 + fsImg1:[],// 防水措施图-横竖向水槽 + fsImg2:[],// 防水措施图-落水管走向及其固定 + fsImg3:[],// 防水措施图-其他图片 + waterMudClampImgs: [], //导水排泥夹照片 + //华融 + otherImgs5:[], //水槽细节照片 + otherImgs6:[], //落水管照片 + otherImgs7:[], //假梁-斜梁方向 + otherImgs8:[], //并网箱逆变器防雨罩照片 + }, + }, + ready(){ + this.getFormSet() + console.log('安装组件', this.data) + }, + + /** + * 组件的方法列表 + */ + methods: { + /** 获取自定义字段 */ + getFormSet() { + getFormSet({ + stage: '03', //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网 + partner: this.data.detail.management, + }).then((res) => { + let photoTips = this.data.photoTips; + let keyList = Object.keys(res.data.columns) + photoTips.forEach((item)=>{ + keyList.forEach((item3)=>{ + if(item.showKey === item3){ + item.status = res.data.columns[item3].status + item.must = res.data.columns[item3].mustFillFlag + } + }) + }) + let resp = this.data.detail + if (resp.contract_url) {//合同 + let contractUrl = resp.contract_url ? resp.contract_url .split(",") : []; + contractUrl.forEach(itm=>{ + this.data.photo.contractUrl.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.contractUrl`]:resp.contract_url ? this.data.photo.contractUrl: [], + }) + } + if (resp.filing_document_photo) {//备案证 + let filingDocumentPhoto = resp.filing_document_photo ? resp.filing_document_photo.split(",") : []; + filingDocumentPhoto.forEach(itm=>{ + this.data.photo.filingDocumentPhoto.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + // [`photo.filingDocumentPhoto[0].url`]:resp.filing_document_photo ? IMG_BASE_URL + resp.filing_document_photo : WU_TU_PIAN_URL,//备案证 + [`photo.filingDocumentPhoto`]: this.data.photo.filingDocumentPhoto, + }) + } + if (resp.report) { + for(let i in this.data.photo){ + if (resp.report[i]) { + let arr = resp.report[i].split(","),arr2=[]; + arr.forEach(itm=>{ + arr2.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.${i}`]: arr2, + }); + } + } + } + this.setData({ + formSetObj: res.data.columns, + photoTips + }) + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if (suffix == 'pdf') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + showMenu: true, + success: function (res) {} + }) + } + }) + } else { + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + } +}) \ No newline at end of file diff --git a/home/components/finish/finish.json b/home/components/finish/finish.json new file mode 100644 index 0000000..f227f84 --- /dev/null +++ b/home/components/finish/finish.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + } +} \ No newline at end of file diff --git a/home/components/finish/finish.wxml b/home/components/finish/finish.wxml new file mode 100644 index 0000000..3585654 --- /dev/null +++ b/home/components/finish/finish.wxml @@ -0,0 +1,153 @@ + + + + + + 项目备案代码 + + + + + + + + + 备案证(1-4张) + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + + + 银行印鉴留样(1-4张) + + + + + + + + + + + + + + 签约现场照片-法定代表人/负责人签字照(1-4张) + + + + + + + + + + + + + + 签约现场照片-正脸、持笔/持印、合同签署页同框(1-4张) + + + + + + + + + + + + + + 签署完成照片(1-4张) + + + + + + + + + + + + + + + + 合同 + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + 工程信息 + + + + + + + + + {{child.title}} + ({{child.min}}-{{child.num}}张) + (1-{{child.num}}张) + + + + + {{util.formartFileName(childs.name)}} + + + + + + + + + + + + + + + + + + + 完工备注 + {{detail.report.completeRemark}} + + + + \ No newline at end of file diff --git a/home/components/finish/finish.wxss b/home/components/finish/finish.wxss new file mode 100644 index 0000000..5d16aab --- /dev/null +++ b/home/components/finish/finish.wxss @@ -0,0 +1,7 @@ +/* home/components/finish/finish.wxss */ +@import "../../pages/completion/completion.wxss"; +/** 文件上传样式 **/ +.txt-upload{flex: 1; color: blue; font-size: 24rpx; width: 100%;} +.txt-upload-list{ display: flex; justify-content: space-between; margin:4rpx 0 20rpx;} +.txt-upload-list text:first-child{flex: 1; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} +.txt-upload-list text:last-child{width: 80rpx; margin-left: 20rpx;} \ No newline at end of file diff --git a/home/components/finishHR/finishHR.js b/home/components/finishHR/finishHR.js new file mode 100644 index 0000000..eb71ba0 --- /dev/null +++ b/home/components/finishHR/finishHR.js @@ -0,0 +1,938 @@ +// home/components/finish/finish.js +const { + getFormSet,IMG_BASE_URL,WU_TU_PIAN_URL +} = require('../../../api/api') +Component({ + /** + * 组件的属性列表 + */ + properties: { + detailObj: Object, + detail: Object + }, + + /** + * 组件的初始数据 + */ + data: { + formSetObj:{}, + capture: ['album','camera'], + //安装 + photoTips: [ + // { + // sampleGraph: '', + // showKey: 'safety_warning_img2', + // must: '0', + // status: '0', + // key:'safetyWarningImg2', + // num: 15, + // title: '三级安全教育卡', + // message: '' + // },{ + // sampleGraph: '', + // showKey: 'kg_condition_files', + // must: '0', + // status: '0', + // key:'kgConditionFiles', + // num: 15, + // min: 1, + // title: '安全防护措施合照照片', + // message: '' + // }, + //华融 + { + sampleGraph: '', + showKey: 'other_imgs5', + must: '0', + status: '0', + key:'otherImgs5', + num: 15, + title: '水槽细节照片', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs6', + must: '0', + status: '0', + key:'otherImgs6', + num: 15, + title: '落水管照片', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs7', + must: '0', + status: '0', + key:'otherImgs7', + num: 15, + title: '假梁-斜梁方向', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs8', + must: '0', + status: '0', + key:'otherImgs8', + num: 15, + title: '并网箱逆变器防雨罩照片', + message: '' + }, + //广发资方 + { + sampleGraph: '', + showKey: 'safety_warning_img2_03', + must: '0', + status: '0', + key:'safetyWarningImg2', + num: 15, + title: '施工安全图-三级安全教育', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_warning_img3', + must: '0', + status: '0', + key:'safetyWarningImg3', + num: 15, + title: '施工安全图-开工前站班会(施工安全用品:安全帽、安全绳、反光衣、工作鞋)', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_warning_img', + must: '0', + status: '0', + key:'safetyWarningImg', + num: 15, + title: '施工安全图-安全警示牌', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_disclose_doc_img', + must: '0', + status: '0', + key:'safetyDiscloseDocImg', + num: 15, + title: '施工安全图-安全技术交底书', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img10', + must: '0', + status: '0', + key:'zjImg10', + num: 15, + min: 3, + title: '基础安装-螺栓孔洞防水图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img11', + must: '0', + status: '0', + key:'zjImg11', + num: 15, + title: '基础安装-柱脚防水完工图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img5_03', + must: '0', + status: '0', + key:'zjImg5', + num: 15, + title: '支架安装图-支架安装完成VR图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img8', + must: '0', + status: '0', + key:'zjImg8', + num: 15, + title: '支架安装图-支架方阵(东向西完工照)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img9', + must: '0', + status: '0', + key:'zjImg9', + num: 15, + title: '支架安装图-支架方阵(北向南完工照)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img4_03', + must: '0', + status: '0', + key:'zjImg4', + num: 15, + title: '支架安装图-立柱东西间距、南北间距(带尺寸)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img12', + must: '0', + status: '0', + key:'zjImg12', + num: 15, + title: '支架安装图-斜梁悬挑(南)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img13', + must: '0', + status: '0', + key:'zjImg13', + num: 15, + title: '支架安装图-斜梁悬挑(北)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img14', + must: '0', + status: '0', + key:'zjImg14', + num: 15, + title: '支架安装图-檀条悬挑(东)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img15', + must: '0', + status: '0', + key:'zjImg15', + num: 15, + title: '支架安装图-檀条悬挑(西)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img4_03', + must: '0', + status: '0', + key:'jdImg4', + num: 15, + title: '支架接地图-支架接地', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img3', + must: '0', + status: '0', + key:'componentImg3', + num: 15, + title: '组件航拍俯视照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img4', + must: '0', + status: '0', + key:'componentImg4', + num: 15, + title: '组件安装完成VR视图', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img1', + must: '0', + status: '0', + key:'bkImg1', + num: 15, + title: '边框接地图-边框与边框接地', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img1_03', + must: '0', + status: '0', + key:'componentImg1', + num: 15, + title: '边框接地图-组件安装倾角', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img2', + must: '0', + status: '0', + key:'bkImg2', + num: 15, + title: '边框接地图-边框与支架接地', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img3', + must: '0', + status: '0', + key:'bkImg3', + num: 15, + title: '边框接地图-其他图片', + message: '' + },{ + sampleGraph: '', + showKey: 'yk_img1', + must: '0', + status: '0', + key:'ykImg1', + num: 15, + title: '压块或背压板照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dc_imgs_03', + must: '0', + status: '0', + key:'dcImgs', + num: 15, + title: '逆变器安装图-整体外观及走线及采集器(离地高度)', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_plate_img_03', + must: '0', + status: '0', + key:'nbqPlateImg', + num: 15, + title: '逆变器安装图-铭牌', + message: '' + },{ + sampleGraph: '', + showKey: 'total_imgs_03', + must: '0', + status: '0', + key:'totalImgs', + num: 15, + title: '逆变器安装图-接地情况', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zlc_img', + must: '0', + status: '0', + key:'nbqZlcImg', + num: 15, + title: '逆变器安装图-逆变器交流侧', + message: '' + },{ + sampleGraph: '', + showKey: 'open_way_voltage_imgs_03', + must: '0', + status: '0', + key:'openWayVoltageImgs', + num: 15, + title: '逆变器安装图-组串开路电压照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zb_img_03', + must: '0', + status: '0', + key:'nbqZbImg', + num: 15, + title: '并网箱安装图-外观及走线(离地高度)', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_inner_img_03', + must: '0', + status: '0', + key:'bwInnerImg', + num: 15, + title: '并网箱安装图-并网箱内部全景', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_jd_img', + must: '0', + status: '0', + key:'bwJdImg', + num: 15, + title: '并网箱安装图-接地情况', + message: '' + },{ + sampleGraph: '', + showKey: 'fix_other_img_03', + must: '0', + status: '0', + key:'fixOtherImg', + num: 15, + title: '线缆走向(屋顶、下墙)、线缆保护管(或桥架)敷设及固定照片', + message: '' + },{ + sampleGraph: '', + showKey: 'size_measure_imgs_03', + must: '0', + status: '0', + key:'sizeMeasureImgs', + num: 15, + title: '电缆桥架内部电缆照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img8', + must: '0', + status: '0', + key:'jdImg8', + num: 15, + title: '接地极图-并网箱、逆变器安装接地极', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img5_03', + must: '0', + status: '0', + key:'jdImg5', + num: 15, + title: '接地极图-支架接地电阻阻值(近景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img11', + must: '0', + status: '0', + key:'jdImg11', + num: 15, + title: '接地极图-支架接地电阻测量照片(远景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img9', + must: '0', + status: '0', + key:'jdImg9', + num: 15, + title: '接地极图-并网箱、逆变器安装接地电阻阻值(近景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img12', + must: '0', + status: '0', + key:'jdImg12', + num: 15, + title: '接地极图-并网箱、逆变器安装接地电阻测量照片 (远景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img10', + must: '0', + status: '0', + key:'jdImg10', + num: 15, + title: '接地极图-接地引下线警示做法', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img1', + must: '0', + status: '0', + key:'fsImg1', + num: 15, + title: '防水措施图-横竖向水槽', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img2', + must: '0', + status: '0', + key:'fsImg2', + num: 15, + title: '防水措施图-落水管走向及其固定', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img3', + must: '0', + status: '0', + key:'fsImg3', + num: 15, + title: '防水措施图-其他图片', + message: '' + }, + //越秀 + { + sampleGraph: '', + showKey: 'dzjc1', + must: '1', + status: '0', + key:'dzjc1', + num: 15, + title: '电站基础-主屋', + message: '' + },{ + sampleGraph: '', + showKey: 'dzjc2', + must: '0', + status: '0', + key:'dzjc2', + num: 15, + title: '电站基础-副屋', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img1', + must: '0', + status: '0', + key:'zjImg1', + num: 15, + title: '支架正面照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img2', + must: '0', + status: '0', + key:'zjImg2', + num: 15, + title: '支架侧视图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img3', + must: '0', + status: '0', + key:'zjImg3', + num: 15, + title: '支架北侧照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img4', + must: '0', + status: '0', + key:'zjImg4', + num: 15, + title: '支架型号照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img5', + must: '0', + status: '0', + key:'zjImg5', + num: 15, + title: '航拍图照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img1', + must: '0', + status: '0', + key:'componentImg1', + num: 15, + title: '组件倾角照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img2', + must: '0', + status: '0', + key:'componentImg2', + num: 15, + title: '组件方位角照片', + message: '' + },{ + sampleGraph: '', + showKey: 'size_measure_imgs', + must: '0', + status: '0', + key:'sizeMeasureImgs', + num: 15, + title: '屋顶线缆安装照片', + message: '' + },{ + sampleGraph: '', + showKey: 'fix_other_img', + must: '0', + status: '0', + key:'fixOtherImg', + num: 15, + title: '线缆下墙照片', + message: '' + },{ + sampleGraph: '', + showKey: 'total_imgs', + must: '0', + status: '0', + key:'totalImgs', + num: 15, + title: '逆变器组串接入照片', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_inner_img', + must: '0', + status: '0', + key:'bwInnerImg', + num: 15, + title: '并网箱内部照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dc_imgs', + must: '0', + status: '0', + key:'dcImgs', + num: 15, + title: '逆变器安装照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zb_img', + must: '0', + status: '0', + key:'nbqZbImg', + num: 15, + title: '并网箱逆变器整体照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dqsb_an_img_one', + must: '0', + status: '0', + key:'dqsbAnImgOne', + num: 15, + title: '逆变器注册截图照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_plate_img', + must: '0', + status: '0', + key:'nbqPlateImg', + num: 15, + title: '逆变器铭牌照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_plate_img', + must: '0', + status: '0', + key:'zjPlateImg', + num: 15, + title: '组件铭牌照片', + message: '' + },{ + sampleGraph: '', + showKey: 'open_way_voltage_imgs', + must: '0', + status: '0', + key:'openWayVoltageImgs', + num: 15, + title: '开路电压图', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img1', + must: '0', + status: '0', + key:'jdImg1', + num: 15, + title: '组件与组件之间接地照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img2', + must: '0', + status: '0', + key:'jdImg2', + num: 15, + title: '组件与支架接地照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img3', + must: '0', + status: '0', + key:'jdImg3', + num: 15, + title: '支架与接地扁铁连接照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img4', + must: '0', + status: '0', + key:'jdImg4', + num: 15, + title: '接地扁铁下墙照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img5', + must: '0', + status: '0', + key:'jdImg5', + num: 15, + title: '支架接地电阻照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img6', + must: '0', + status: '0', + key:'jdImg6', + num: 15, + title: '电气接地电阻照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_report', + must: '0', + status: '0', + key:'zjReport', + num:1, + title: '自检记录报告', + message: '' + },{ + sampleGraph: '', + showKey: 'other_files', + must: '0', + status: '0', + key:'otherFiles', + num:2, + title: '其它资料', + message: '' + },{ + sampleGraph: '', + showKey: 'supplement_video_url', + must: '0', + status: '0', + key:'supplementVideoUrl', + num:5, + title: '补充视频', + message: '' + }, + ], + // 安装 + photo: { + supplementVideoUrl: [], //补充视频 + contractUrl: [], //合同 + filingDocumentPhoto: [], //备案证 + otherImgs1: [], //银行印鉴留样 + otherImgs2: [], //法定代表人/负责人签字照 + otherImgs3: [], //正脸、持笔/持印、合同签署页同框 + otherImgs4: [], //签署完成照片 + //工程信息 + dzjc1: [], //电站基础-主屋照片 + dzjc2: [], //电站基础-副屋照片 + nbqPlateImg: [],//逆变器序列号照片,逆变器1铭牌照片 + txPlateImg: [],//逆变器通讯棒照片,通讯棒1铭牌照 + zjPlateImg: [],//组件铭牌照片 + zjSnImgs:[],//组件SN + zjImg1: [],//膨胀螺栓 + zjImg2: [],//基座安装固定 + zjImg3: [],//底座防水 + zjImg4: [],//支架基础距离房檐的距离 + zjImg5: [],//支架东向西拍摄 + zjImg6: [],//支架西向东拍摄--- + zjImg7: [],//支架南向北拍摄--- + zjImg8: [],//支架北向南拍摄--- + zjImg9: [],//支架角度---- + fixOtherImg: [], //线缆下墙照片 + componentImg1: [],//支架节点(斜支撑) + componentImg2: [],//支架距照片(南北) + componentImg3: [],//支架距照片(东西) + componentImg4: [],//防风加固,1-3张 + sizeMeasureImgs: [],//方管尺寸测量---,9张 + totalImgs: [],//并网箱、逆变器外部安装照片、接地引下线,逆变器、并网箱整体安装照片, 存在字段名逆变器和并网箱接地照 + bwInnerImg: [],//并网箱内部整体照片 + dcImgs: [], //逆变器安装照片 + nbqZbImg: [],//并网箱逆变器整体照片 + dqsbAnImgOne: [],//直流线缆保护 + dqsbAnImgTwo: [],//直流线缆固定 + zjJdImgs: [],//引下线与支架连接点、南北坡接地连接点,2张---- + groundResistanceImgs: [],//接地电阻,1-2张----- + zujianJdImg: [],//组件边框接地 + openWayVoltageImgs: [],//开路电压,1-6张----- + directionAirImg1: [],//东向西航拍---- + directionAirImg2: [],//西向东航拍---- + directionAirImg3: [],//南向北航拍---- + directionAirImg4: [],//北向南航拍---- + zjNearImg: [],//组件近景---- + zjAngleImg: [],//组件角度---- + zjItemImg: [],//檩条出组件照片---- + waterChannelImg: [],//水槽照片---- + mediumFixImg: [],//中压固定照片---- + safetyWarningImg: [],//安全警示牌---- + safetyDiscloseDocImg: [],//现场安全交底文件---- + discloseDocImg: [],//现场交底照片---- + recordDocImg: [],//记录表---- + jdImg1: [],//组件与组件之间接地照片 + jdImg2: [],//组件与支架接地照片 + jdImg3: [],//支架与接地扁铁连接照片 + jdImg4: [],//接地扁铁下墙照片 + jdImg5: [],//支架接地电阻照片 + jdImg6: [],//电气接地电阻照片 + zjReport:[],//自检记录报告 + otherFiles: [], //其他资料 + kgConditionFiles: [], //安全防护措施合照照片 + //广发 + safetyWarningImg2:[],//施工安全图-三级安全教育 + safetyWarningImg3:[],//施工安全图-开工前站班会(施工安全用品:安全帽、安全绳、反光衣、工作鞋) + safetyWarningImg:[],// 施工安全图-安全警示牌 + safetyDiscloseDocImg:[],// 施工安全图-安全技术交底书 + zjImg10:[],// 基础安装-螺栓孔洞防水图 + zjImg11:[],// 基础安装-柱脚防水完工图 + zjImg8:[],// 支架安装图-支架方阵(东向西完工照) + zjImg9:[],// 支架安装图-支架方阵(北向南完工照) + zjImg12:[],// 支架安装图-斜梁悬挑(南) + zjImg13:[],// 支架安装图-斜梁悬挑(北) + zjImg14:[],// 支架安装图-檀条悬挑(东) + zjImg15:[],// 支架安装图-檀条悬挑(西) + componentImg3:[],// 组件航拍俯视照片 + componentImg4:[],// 组件安装完成VR视图 + bkImg1:[],// 边框接地图-边框与边框接地 + bkImg2:[],// 边框接地图-边框与支架接地 + bkImg3:[],// 边框接地图-其他图片 + ykImg1:[],// 压块或背压板照片 + nbqZlcImg:[],// 逆变器安装图-逆变器交流侧 + bwJdImg:[],// 并网箱安装图-接地情况 + jdImg8:[],// 接地极图-并网箱、逆变器安装接地极 + jdImg11:[],// 接地极图-支架接地电阻测量照片(远景) + jdImg9:[],// 接地极图-并网箱、逆变器安装接地电阻阻值(近景) + jdImg12:[],// 接地极图-并网箱、逆变器安装接地电阻测量照片 (远景) + jdImg10:[],// 接地极图-接地引下线警示做法 + fsImg1:[],// 防水措施图-横竖向水槽 + fsImg2:[],// 防水措施图-落水管走向及其固定 + fsImg3:[],// 防水措施图-其他图片 + //华融 + otherImgs5:[], //水槽细节照片 + otherImgs6:[], //落水管照片 + otherImgs7:[], //假梁-斜梁方向 + otherImgs8:[], //并网箱逆变器防雨罩照片 + }, + multiPhoto: [], //图片 + remarkArr:[], //完工备注 + tabIndex: '0' + }, + ready(){ + this.getFormSet() + }, + + /** + * 组件的方法列表 + */ + methods: { + /** 获取自定义字段 */ + getFormSet() { + getFormSet({ + stage: '03', //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网 + partner: this.data.detail.management, + }).then((res) => { + let photoTips = this.data.photoTips; + let keyList = Object.keys(res.data.columns) + photoTips.forEach((item)=>{ + keyList.forEach((item3)=>{ + if(item.showKey === item3){ + item.status = res.data.columns[item3].status + item.must = res.data.columns[item3].mustFillFlag + } + }) + }) + let resp = this.data.detail + if (resp.contract_url) {//合同 + let contractUrl = resp.contract_url ? resp.contract_url .split(",") : []; + contractUrl.forEach(itm=>{ + this.data.photo.contractUrl.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.contractUrl`]:resp.contract_url ? this.data.photo.contractUrl: [], + }) + } + if (resp.filing_document_photo) {//备案证 + let filingDocumentPhoto = resp.filing_document_photo ? resp.filing_document_photo.split(",") : []; + filingDocumentPhoto.forEach(itm=>{ + this.data.photo.filingDocumentPhoto.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + // [`photo.filingDocumentPhoto[0].url`]:resp.filing_document_photo ? IMG_BASE_URL + resp.filing_document_photo : WU_TU_PIAN_URL,//备案证 + [`photo.filingDocumentPhoto`]: this.data.photo.filingDocumentPhoto, + }) + } + let multiPhoto = [] + resp.projectDetailList.forEach((item,index)=>{ + this.setData({ + [`remarkArr[${index}].completeRemark`]: item.acceptingReport.completeRemark, //完工备注 + [`photo.safetyWarningImg2`]: item.acceptingReport.safetyWarningImg2 ? item.acceptingReport.safetyWarningImg2.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //三级安全教育卡 + [`photo.kgConditionFiles`]: item.acceptingReport.kgConditionFiles ? item.acceptingReport.kgConditionFiles.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //安全防护措施合照照片 + }) + //图片 + let photo = {}; + if (item.acceptingReport) { + for(let key in this.data.photo){ + photo[key] = item.acceptingReport[key] ? item.acceptingReport[key].split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [] + } + } + multiPhoto.push(photo); + }) + this.setData({ + multiPhoto + }) + console.log('安装组件2', multiPhoto) + + // if (resp.report) { + // for(let i in this.data.photo){ + // if (resp.report[i]) { + // let arr = resp.report[i].split(","),arr2=[]; + // arr.forEach(itm=>{ + // arr2.push({ + // name:itm, + // url:IMG_BASE_URL + itm + // }); + // }); + // this.setData({ + // [`photo.${i}`]: arr2, + // }); + // } + // } + // } + this.setData({ + formSetObj: res.data.columns, + photoTips + }) + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if (suffix == 'pdf') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + showMenu: true, + success: function (res) {} + }) + } + }) + } else { + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + //tab切换 + changeTab(e){ + let index = e.currentTarget.dataset.index + this.setData({ + tabIndex: index + }) + } + } +}) \ No newline at end of file diff --git a/home/components/finishHR/finishHR.json b/home/components/finishHR/finishHR.json new file mode 100644 index 0000000..f227f84 --- /dev/null +++ b/home/components/finishHR/finishHR.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + } +} \ No newline at end of file diff --git a/home/components/finishHR/finishHR.wxml b/home/components/finishHR/finishHR.wxml new file mode 100644 index 0000000..a5129a8 --- /dev/null +++ b/home/components/finishHR/finishHR.wxml @@ -0,0 +1,182 @@ + + + + + + 项目备案代码 + + + + + + + + + 备案证(1-4张) + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + + + 银行印鉴留样(1-4张) + + + + + + + + + + + + + + 签约现场照片-法定代表人/负责人签字照(1-4张) + + + + + + + + + + + + + + 签约现场照片-正脸、持笔/持印、合同签署页同框(1-4张) + + + + + + + + + + + + + + 签署完成照片(1-4张) + + + + + + + + + + + + + + + + 合同 + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + 工程信息 + + + + + + * + * + 三级安全教育卡(1-15张) + + + + + + + + + + + + + + * + * + 安全防护措施合照照片(1-15张) + + + + + + + + + + + + + {{item.roofType}} + + + + + + + + + + + + {{child.title}} + ({{child.min}}-{{child.num}}张) + (1-{{child.num}}张) + + + + + {{util.formartFileName(childs.name)}} + + + + + + + + + + + + + + + + + + + 完工备注 + {{remarkArr[tabIndex].completeRemark}} + + + \ No newline at end of file diff --git a/home/components/finishHR/finishHR.wxss b/home/components/finishHR/finishHR.wxss new file mode 100644 index 0000000..60224d2 --- /dev/null +++ b/home/components/finishHR/finishHR.wxss @@ -0,0 +1,12 @@ +/* home/components/finish/finish.wxss */ +@import "../../pages/completion/completion.wxss"; +/** 文件上传样式 **/ +.txt-upload{flex: 1; color: blue; font-size: 24rpx; width: 100%;} +.txt-upload-list{ display: flex; justify-content: space-between; margin:4rpx 0 20rpx;} +.txt-upload-list text:first-child{flex: 1; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} +.txt-upload-list text:last-child{width: 80rpx; margin-left: 20rpx;} + +.detail-tab{display: flex; justify-content: space-between; height: 90rpx; border-bottom: 1px solid #f0f0f0; color: #666666; position: sticky; top: 0; background: #FFF; z-index: 99; overflow: auto; background-color: #FFF;} +.detail-tab>view{flex: 1; text-align: center; line-height: 82rpx; font-size: 28rpx; position: relative; white-space: nowrap; word-break: break-all; margin: 0 20rpx;} +.detail-tab>view.active{color: #333333; font-size: 32rpx;} +.detail-tab>view .actived{width: 60rpx; height: 6rpx; background-color: #0a6597; border-radius: 3rpx; margin: 0 auto;} \ No newline at end of file diff --git a/home/components/infor/infor.js b/home/components/infor/infor.js new file mode 100644 index 0000000..1740b93 --- /dev/null +++ b/home/components/infor/infor.js @@ -0,0 +1,69 @@ +// home/components/infor/infor.js +const { + getPartnerSet,getAllConditionList +} = require('../../../api/api') +Component({ + /** + * 组件的属性列表 + */ + properties: { + // formSetObj: Object, + photo: Object, + detailObj: Object, + }, + + /** + * 组件的初始数据 + */ + data: { + isComplement: false + }, + ready(){ + this.setData({ + capitalId: wx.getStorageSync('capitalId') + }) + //当业主年龄大于65岁时,共签人信息必填,并且是开启overageFlag:是否开启超龄:1.开启 2.关闭 + this.getPartnerSet(this.data.detailObj.detail.management,()=>{ + if (this.data.detailObj.detail.overageFlag=='1' && this.data.detailObj.detail.age >= this.data.partnerSetObj.needSignerAge) { + this.setData({ + isComplement: true + }) + } + }) + this.getAllConditionList() + // console.log(1221, this.data) + }, + + /** + * 组件的方法列表 + */ + methods: { + /** + * + * 获取资方共签人 + * + * @param {*} e + */ + /*** 获取资方共签人 */ + getPartnerSet(partner, callback) { + getPartnerSet({ + partnerId: partner, + }).then((res) => { + this.setData({ + partnerSetObj: res.data + }) + if(callback) callback() + }) + }, + /** 获取自定义字段 */ + getAllConditionList() { + getAllConditionList({ //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网, 05:档案 + partner: this.data.detailObj.detail.management, + }).then((res) => { + this.setData({ + formSetObj: res.data + }) + }) + }, + } +}) \ No newline at end of file diff --git a/home/components/infor/infor.json b/home/components/infor/infor.json new file mode 100644 index 0000000..0922e68 --- /dev/null +++ b/home/components/infor/infor.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + } +} \ No newline at end of file diff --git a/home/components/infor/infor.wxml b/home/components/infor/infor.wxml new file mode 100644 index 0000000..921848f --- /dev/null +++ b/home/components/infor/infor.wxml @@ -0,0 +1,380 @@ + + + + 客户基本信息 + + + 客户类型 + 个人 + + + + + 身份证照片 + + + + + + + + + + + + 业主姓名 + {{detailObj.name}} + + + + + + 出生日期 + {{detailObj.detail.birthday_date}} + + + + + + 身份证生效日 + {{detailObj.detail.ic_validity_begin}} + + + + + + 身份证失效日 + {{detailObj.detail.ic_validity_end}} + + + + + + 性别 + {{detailObj.gender}} + + + + + + 年龄 + {{detailObj.age}} + + + + + + 身份证号 + {{detailObj.idCard}} + + + + + + 联系电话 + {{detailObj.phone}} + + + + + + 紧急联系人 + {{detailObj.detail.exigence_name}} + + + + + + 紧急联系电话 + {{detailObj.detail.exigence_phone}} + + + + + + + + + 客户基本信息 + + + 客户类型 + 单位 + + + + + 单位名称 + {{detailObj.name}} + + + + + + 统一社会信用代码 + {{detailObj.regno}} + + + + + + 营业执照 + + + + + + + + + 联系电话 + {{detailObj.phone}} + + + + + + + 负责人身份证 + + + + + + + + + + + + 负责人姓名 + {{detailObj.corp}} + + + + + + 证件号码 + {{detailObj.idCard}} + + + + + + 紧急联系人 + {{detailObj.detail.exigence_name}} + + + + + + 紧急联系电话 + {{detailObj.detail.exigence_phone}} + + + + + + + + 档案信息 + + + + 户口本复印件 + + + + + + + + + 房产证 + + + + + + + + + 信誉凭证 + + + + + + + + 银行账户名称 + {{detailObj.bankName }} + + + + + + 银行账号 + {{detailObj.bankCode}} + + + + + + 开户行 + {{detailObj.tssBankNumName }} + + + + + + 银行卡照片 + + + + + + + + + + 共签人身份证照片 + + + + + + + + + + + + 共签人名称 + {{detailObj.bpName}} + + + + + + 证件号码 + {{detailObj.bpIdCard}} + + + + + + 手机号 + {{detailObj.bpMobile}} + + + + + + 共签人与业主关系 + {{detailObj.bpRelation}} + + + + + + 共签人子女证明材料 + + + + + + + + + + + 档案信息 + + + + 村民代表大会决议书 + + + + + + + + + 村委议事章程 + + + + + + + + + 对公账户信息 + + + + + + + + + 产权证明-集体土地使用证 + + + + + + + + + 产权证明-不动产证书/查册证明/相关确权文件 + + + + + + + + + 银行账户名称 + {{detailObj.bankName }} + + + + + + 银行账号 + {{detailObj.bankCode}} + + + + + + 开户行 + {{detailObj.tssBankNumName }} + + + + + + 银行卡照片 + + + + + + \ No newline at end of file diff --git a/home/components/infor/infor.wxss b/home/components/infor/infor.wxss new file mode 100644 index 0000000..20a571f --- /dev/null +++ b/home/components/infor/infor.wxss @@ -0,0 +1,2 @@ +/* home/components/infor/infor.wxss */ +@import "../../pages/entryInfoDetails/entryInfoDetails"; \ No newline at end of file diff --git a/home/components/install/install.js b/home/components/install/install.js new file mode 100644 index 0000000..26ca880 --- /dev/null +++ b/home/components/install/install.js @@ -0,0 +1,34 @@ +// home/components/install/install.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + detailObj: Object, + cagesList: Array, + supportList: Array, + converterList: Array, + componentList: Array, + nbqList: Array, + zjMap: Object + }, + + /** + * 组件的初始数据 + */ + data: { + }, + ready(){ + this.setData({ + capitalId: this.data.detailObj.management + }) + // console.log(1212, this.data) + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) \ No newline at end of file diff --git a/home/components/install/install.json b/home/components/install/install.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/home/components/install/install.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/home/components/install/install.wxml b/home/components/install/install.wxml new file mode 100644 index 0000000..1f7ef06 --- /dev/null +++ b/home/components/install/install.wxml @@ -0,0 +1,150 @@ + + + + + + + + 并网箱 + + + + + + + 物料号 + {{item.code}} + + + 物料名称 + {{item.name}} + + + 物料规格 + {{item.spec}} + + + 使用数量 + {{item.amount}} + + + + + + + + + + 支架 + + + + + + + 物料号 + {{item.code}} + + + 物料名称 + {{item.name}} + + + 物料规格 + {{item.spec}} + + + + 使用数量 + {{item.amount}} + + + + + + + + + + + 逆变器({{pitem.materialModel}}|{{pitem.model}}+{{pitem.num}}台) + + + + + + + 物料品牌 + {{item.materialBrand}} + + + 物料规格 + {{item.spec}} + + + + + SN码 + + + + 验证码 + + + + 通讯棒SN码 + + + + + + + + + + + + + + 组件({{zjMap.materialModel}}|{{zjMap.model}}Wp+{{zjMap.num}}片) + + + + + + + + 物料规格 + {{item.spec}} + Wp + + + 物料条码 + + + {{index+1}}:{{itemList.barcode}} + + + + + + \ No newline at end of file diff --git a/home/components/install/install.wxss b/home/components/install/install.wxss new file mode 100644 index 0000000..0c069c4 --- /dev/null +++ b/home/components/install/install.wxss @@ -0,0 +1,2 @@ +/* home/components/install/install.wxss */ +@import "../../pages/install/install"; \ No newline at end of file diff --git a/home/components/installHR/installHR.js b/home/components/installHR/installHR.js new file mode 100644 index 0000000..90debb5 --- /dev/null +++ b/home/components/installHR/installHR.js @@ -0,0 +1,43 @@ +// home/components/install/install.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + detailObj: Object, + cagesList: Array, + supportList: Array, + converterList: Array, + componentList: Array, + productList: Array, + // nbqList: Array, + // zjMap: Object + }, + + /** + * 组件的初始数据 + */ + data: { + tabIndex: '0', + }, + ready(){ + this.setData({ + capitalId: this.data.detailObj.management, + projectList: this.data.detailObj.projectList, + }) + // console.log(1212, this.data) + }, + + /** + * 组件的方法列表 + */ + methods: { + //tab切换 + changeTab(e){ + let index = e.currentTarget.dataset.index + this.setData({ + tabIndex: index + }) + } + } +}) \ No newline at end of file diff --git a/home/components/installHR/installHR.json b/home/components/installHR/installHR.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/home/components/installHR/installHR.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/home/components/installHR/installHR.wxml b/home/components/installHR/installHR.wxml new file mode 100644 index 0000000..0136620 --- /dev/null +++ b/home/components/installHR/installHR.wxml @@ -0,0 +1,149 @@ + + + + + + {{item.roofType}} + + + + + + + + 并网箱 + + + + + + + 物料号 + {{item.code}} + + + 物料名称 + {{item.name}} + + + 物料规格 + {{item.spec}} + + + + 使用数量 + {{item.amount}} + + + + + + + + + + 支架 + + + + + + + 物料号 + {{item.code}} + + + 物料名称 + {{item.name}} + + + 物料规格 + {{item.spec}} + + + + 使用数量 + {{item.amount}} + + + + + + + + + + + 逆变器({{pitem.materialModel}}|{{pitem.model}}+{{pitem.num}}台) + + + + + + + 物料品牌 + {{item.materialBrand}} + + + 物料规格 + {{item.spec}} + + + + + SN码 + + + + 验证码 + + + + 通讯棒SN码 + + + + + + + + + + + + + + 组件({{productList[tabIndex].zjMap.materialModel}}|{{productList[tabIndex].zjMap.model}}Wp+{{productList[tabIndex].zjMap.num}}片) + + + + + + + 物料规格 + {{item.spec}} + Wp + + + 物料条码 + + + {{index+1}}:{{itemList.barcode}} + + + + + + \ No newline at end of file diff --git a/home/components/installHR/installHR.wxss b/home/components/installHR/installHR.wxss new file mode 100644 index 0000000..a34fd4d --- /dev/null +++ b/home/components/installHR/installHR.wxss @@ -0,0 +1,6 @@ +/* home/components/install/install.wxss */ +@import "../../pages/install/install"; +.detail-tab{display: flex; justify-content: space-between; height: 90rpx; border-bottom: 1px solid #f0f0f0; color: #666666; background-color: #FFF;} +.detail-tab>view{flex: 1; text-align: center; line-height: 82rpx; font-size: 28rpx; position: relative;} +.detail-tab>view.active{color: #333333; font-size: 32rpx;} +.detail-tab>view .actived{width: 60rpx; height: 6rpx; background-color: #0a6597; border-radius: 3rpx; margin: 0 auto;} \ No newline at end of file diff --git a/home/components/onGrid/onGrid.js b/home/components/onGrid/onGrid.js new file mode 100644 index 0000000..0f627c9 --- /dev/null +++ b/home/components/onGrid/onGrid.js @@ -0,0 +1,177 @@ +// home/components/onGrid/onGrid.js +const { + getFormSet,getProviceCodeList,IMG_BASE_URL +} = require('../../../api/api') +Component({ + + /** + * 组件的属性列表 + */ + properties: { + photo: Object, + detailObj: Object, + detail: Object, + }, + + /** + * 组件的初始数据 + */ + data: { + powerCompanyList:[], + contractFile: [], + contractVideoUrl: [], + otherAttachment: [], + }, + ready(){ + this.getProviceCodeList() + this.getFormSet() + }, + + /** + * 组件的方法列表 + */ + methods: { + /** 获取自定义字段 */ + getFormSet() { + getFormSet({ + stage: '04', //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网 + partner: this.data.detail.management, + }).then((res) => { + this.setData({ + formSetObj: res.data.columns + }) + let resp = this.data.detail + if (resp.contract) {//合同文件 + let contractUrl = resp.contract ? resp.contract.split(",") : []; + contractUrl.forEach(itm=>{ + this.data.contractFile.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + contractFile:resp.contract? this.data.contractFile: [], + }) + } + if (resp.contract_video_url) {//合同视频 + let contractVideoUrl = resp.contract_video_url ? resp.contract_video_url.split(",") : []; + contractVideoUrl.forEach(itm=>{ + this.data.contractVideoUrl.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + contractVideoUrl:resp.contract_video_url? this.data.contractVideoUrl: [], + }) + } + if (resp.other_attachment) {//补充资料 + let url = resp.other_attachment ? resp.other_attachment.split(",") : []; + url.forEach(itm=>{ + this.data.otherAttachment.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + otherAttachment:resp.other_attachment? this.data.otherAttachment: [], + }) + } + }) + }, + /** 选择电力公司 **/ + bindpowerCompanyList(e) { + this.setData({ + [`detail.powerCompanyName`]: this.data.powerCompanyList[e.detail.value].power_company, + [`detail.provinceCode`]: this.data.powerCompanyList[e.detail.value].code + }) + }, + /** 获取电力公司 **/ + getProviceCodeList(e) { + getProviceCodeList({}).then((res) => { + if (res.code == 200) { + let list = res.data.map(itm=>itm.columns); + this.setData({ + powerCompanyList: list + }) + } + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if (suffix == 'pdf') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + showMenu: true, + success: function (res) {} + }) + } + }) + } else { + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + //打开外链 + openWeb(e){ + wx.navigateTo({ + url: '../webView/webView', + success: function (res) { + // 通过eventChannel向被打开页面传送数据 + res.eventChannel.emit('acceptDataFromOpenerPage', { + data: e.currentTarget.dataset.path + }) + } + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if(suffix=='mp4'){// 开始预览多媒体内容 + wx.previewMedia({ + sources: [{ + url :IMG_BASE_URL + path, + type: 'video' + }], // 需要预览的资源列表 + }); + }else if(suffix != 'jpg' && suffix != 'png' && suffix != 'gif' && suffix != 'jpeg') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + fileType: suffix, + showMenu: true, + success: function (res) {} + }) + } + }) + }else{ + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + } +}) \ No newline at end of file diff --git a/home/components/onGrid/onGrid.json b/home/components/onGrid/onGrid.json new file mode 100644 index 0000000..0922e68 --- /dev/null +++ b/home/components/onGrid/onGrid.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + } +} \ No newline at end of file diff --git a/home/components/onGrid/onGrid.wxml b/home/components/onGrid/onGrid.wxml new file mode 100644 index 0000000..07a2559 --- /dev/null +++ b/home/components/onGrid/onGrid.wxml @@ -0,0 +1,282 @@ + + + + + + 并网机构 + + 国网 + 南网 + + + + + 购售电地址是否一致 + + + + + + + + + + + + + + 购售电地址 + + {{detail.electric_province}}{{detail.electric_city}}{{detail.electric_area}} + + + + + + + + + + + + + + + 发电户号 + + + + + + + 电表照片 + + + + + + + + + + + + 电表箱照片 + + + + + + + + + + + + 铜铝转换接头照片 + + + + + + + + + + + + + 南网营销系统档案截图(三户) + + + + + + + + + + + + 三天连续发电量监控系统截图 + + + + + + + + + + + + + 电力公司 + + {{detail.province_code_name}} + + + + + + + + 电力公司 + + {{detail.province_code_hand}} + + + + + + + 电厂编码 + + + + + + + 并网照片 + + + + + 近3天发电量 + + + + + + + + + + 补充信息 + + + + + + + + + + 补充信息2 + + + + + + + + + + + + + 购售电合同 + + + + {{util.formartFileName(child.name)}} + + + + + + + 购售电合同视频 + + + + + + + + + + + + 资方审查补充资料(1-10) + + + + {{util.formartFileName(child.name)}} + + + + + + + + + 并网调试报告 + 查看 + + + + + 保险名称 + {{detail.insuranceName}} + + + + 保险公司 + {{detail.insurance.insuranceCompany}} + + + + 第一受益人 + {{detail.insurance.firstBeneficiary}} + + + + 保险编号 + + + + + 投保金额 + + + + + 保险日期 + {{detail.insurance.insuranceDateFrom}} - {{detail.insurance.insuranceDateTo}} + + + + 保险单 + 查看 + + + + + + + + + + + + \ No newline at end of file diff --git a/home/components/onGrid/onGrid.wxss b/home/components/onGrid/onGrid.wxss new file mode 100644 index 0000000..3d36f57 --- /dev/null +++ b/home/components/onGrid/onGrid.wxss @@ -0,0 +1,7 @@ +/* home/components/onGrid/onGrid.wxss */ +@import "../../pages/bwForm/bwForm.wxss"; +/** 文件上传样式 **/ +.txt-upload{flex: 1; color: blue; font-size: 24rpx; width: 100%;} +.txt-upload-list{ display: flex; justify-content: space-between; margin:4rpx 0 20rpx;} +.txt-upload-list text:first-child{flex: 1; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;} +.txt-upload-list text:last-child{width: 80rpx; margin-left: 20rpx;} \ No newline at end of file diff --git a/home/components/survey/survey.js b/home/components/survey/survey.js new file mode 100644 index 0000000..17c45e8 --- /dev/null +++ b/home/components/survey/survey.js @@ -0,0 +1,600 @@ +const { + getAllDictionarySelect, + IMG_BASE_URL, + WU_TU_PIAN_URL, + getAllConditionList, + findAllPlan,getKcFormSet +} = require('../../../api/api') +Component({ + properties: { + entryId: String, + childObj:Object, + }, + data: { + photo: { + flyImgs: [], //无人机航拍图 + roofPhotoOne:[],//安装区域整体照片 + roofPhotoTwo:[],//安装区域东南角照片 + roofPhotoThree:[],//安装区域西南角照片 + roofPhotoFour:[],//安装区域正南照片 + roofPhotoFive:[],//安装区域细节照片 + roofPhotoFacade:[],//房屋内部结构照片 + roofPhotoInterior:[],//房屋内部环境照片 + detailSupplementOne:[],//逆变器、配电箱预安装位置照片 + houseSupplementOne:[],//房屋其他障碍物照片 + surveyVideo:[],//踏勘补充证明视频 + surveyFiles:[],//踏勘记录表 + vrRoofOne: [], //房屋整体图 + vrRoofTwo: [], //房屋整体俯视图 + vrRoofThree: [], //房屋内部结构图 + vrRoofFour: [], //入户全景照片 + houseOutlinePhoto:[], //房屋轮廓照片 + designDrawings: [], //设计图纸 + dzImgs: [], //组合图 + }, + photoTips:[ + { + showKey: 'fly_imgs', + key:'flyImgs', + num:9, + minNum:3, + title: '无人机航拍图', + },{ + showKey: 'roof_photo_one', + key:'roofPhotoOne', + num:9, + minNum:2, + title: '安装区域整体照片', + },{ + showKey: 'roof_photo_two', + key:'roofPhotoTwo', + num:9, + minNum:1, + title: '安装区域东南角照片', + },{ + showKey: 'roof_photo_four', + key:'roofPhotoFour', + num:9, + minNum:1, + title: '安装区域正南照片', + },{ + showKey: 'roof_photo_three', + key:'roofPhotoThree', + num:9, + minNum:1, + title: '安装区域西南角照片', + },{ + showKey: 'roof_photo_five', + key:'roofPhotoFive', + num:9, + minNum:1, + title: '安装区域细节照片', + },{ + showKey: 'roof_photo_interior', + key:'roofPhotoInterior', + num:9, + minNum:2, + title: '房屋内部环境照片', + },{ + showKey: 'roof_photo_facade', + key:'roofPhotoFacade', + num:9, + minNum:2, + title: '房屋内部结构照片', + },{ + showKey: 'detail_supplement_one', + key:'detailSupplementOne', + num:9, + minNum:1, + title: '逆变器、配电箱预安装位置照片', + },{ + showKey: 'house_outline_photo', + key: 'houseOutlinePhoto', + num: 9, + minNum: 1, + title: '房屋轮廓照片', + },{ + showKey: 'house_supplement_one', + key:'houseSupplementOne', + num:9, + minNum:1, + title: '房屋其他障碍物照片', + },{ + showKey: 'survey_files', + key:'surveyFiles', + num:4, + title: '踏勘记录表', + },{ + showKey: 'roof_photo_one_03', + key: 'roofPhotoOne', + num: 9, + minNum: 2, + title: '房屋屋顶照片', + },{ + showKey: 'roof_photo_two_03', + key: 'roofPhotoTwo', + num: 9, + minNum: 1, + title: '房屋屋顶东侧图片', + },{ + showKey: 'roof_photo_three_03', + key: 'roofPhotoThree', + num: 9, + minNum: 1, + title: '房屋屋顶西侧图片', + },{ + showKey: 'roof_photo_four_03', + key: 'roofPhotoFour', + num: 9, + minNum: 1, + title: '房屋屋顶南侧图片', + },{ + showKey: 'fw_img3', + key: 'fwImg3', + num: 9, + minNum: 1, + title: '房屋屋顶东南侧图片', + },{ + showKey: 'fw_img4', + key: 'fwImg4', + num: 9, + minNum: 1, + title: '房屋屋顶西南侧图片', + },{ + showKey: 'fw_img5', + key: 'fwImg5', + num: 9, + minNum: 1, + title: '遮阴物与房屋距离、高度', + },{ + showKey: 'survey_video', + key: 'surveyVideo', + num: 8, + minNum: 1, + title: '踏勘补充证明视频', + },{ + showKey: 'house_ownership', + key: 'houseOwnership', + num: 8, + minNum: 1, + title: '房产证明', + },{ + showKey: 'survey_files_03', + key: 'surveyFiles', + num: 9, + minNum: 1, + title: '户用勘察记录表(附平面草图)', + },{ + showKey: 'fw_img1', + key: 'fwImg1', + num: 9, + minNum: 1, + title: '房屋整体图', + },{ + showKey: 'vr_roof_one', + key: 'vrRoofOne', + num: 9, + minNum: 1, + title: '房屋整体图(VR全景)', + },{ + showKey: 'vr_roof_two', + key: 'vrRoofTwo', + num: 9, + minNum: 1, + title: '房屋整体俯视图(无人机)', + },{ + showKey: 'vr_roof_three', + key: 'vrRoofThree', + num: 9, + minNum: 1, + title: '房屋内部结构图(VR)', + },{ + showKey: 'fw_img2', + key: 'fwImg2', + num: 9, + minNum: 1, + title: '房屋内部结构图', + },{ + showKey: 'vr_roof_four', + key: 'vrRoofFour', + num: 9, + minNum: 1, + title: '入户全景照片(VR)', + },{ + showKey: 'fly_imgs_04', + key: 'flyImgs', + num: 9, + minNum: 3, + title: '屋顶高空俯视照片', + },{ + showKey: 'roof_photo_two_04', + key: 'roofPhotoTwo', + num: 9, + minNum: 1, + title: '屋顶东南照片', + },{ + showKey: 'roof_photo_four_04', + key: 'roofPhotoFour', + num: 9, + minNum: 1, + title: '屋顶正南照片', + },{ + showKey: 'roof_photo_three_04', + key: 'roofPhotoThree', + num: 9, + minNum: 1, + title: '屋顶西南照片', + },{ + showKey: 'vr_roof_four_04', + key: 'vrRoofFour', + num: 9, + minNum: 1, + title: '入户全景照片', + },{ + showKey: 'survey_files_04', + key: 'surveyFiles', + num: 4, + title: '现场勘测表', + }], + formSetObj: {}, //自定义字段 + standardSolutionsList:[],//标准方案初始数量 + combinedSolutionsList:[],//组合方案初始数量 + planList:[],//方案 + gridType: '0', + gfRoofTypeList: [] + }, + ready(){ + this.findAllPlan(); + this.entryDetail(); + }, + methods:{ + /** 获取自定义字段 */ + getFormSet(partner) { + getAllConditionList({ + partner: partner, + }).then((res) => { + this.setData({ + formSetObj: res.data + }) + }) + if(partner == '03'){ + getKcFormSet().then((res) => { + if(res.data){ + this.setData({ + gfRoofTypeList: res.data, //广发--屋顶类型数据集合 + }) + } + }) + } + }, + //屋顶类型对应显示字段 + roofTypeToColumn(name){ + this.data.gfRoofTypeList.forEach(item=>{ + if(name == item.roofType){ + let selectRoofType = item.forms.map(itm=>{return itm.columns}); + let roofTypeAllColumn = {} + selectRoofType.forEach(item2=>{ + roofTypeAllColumn[item2.column_key] = { + status: 1, + must_fill_flag: item2.must_fill_flag + } + }) + // console.log(555, roofTypeAllColumn) + this.setData({ + roofTypeAllColumn + }) + } + }) + }, + /*** 获取字典 */ + getDictionaryList(partner, callback) { + getAllDictionarySelect({ + capitalId: partner, + }).then((res) => { + if(res.data){ + this.setData({ + angleAzimuthSel: res.data.angle_azimuth.map(item=>item.columns), //方位角 + }) + } + if(callback) callback(res.data) + }) + }, + /** 获取电站详情 **/ + entryDetail(e) { + let that = this + let res = JSON.parse(JSON.stringify(this.data.childObj)); + // 组件,逆变器,并网箱,支架 + var componentNum = 0; + var componentList = []; + var converterList = []; + var cagesList = []; + var zhijList = []; + if (res.componentList.length > 0) { + for (let i = 0; i < res.componentList.length; i++) { + const element = res.componentList[i]; + var OB = { + id: "", + num: "", //数量 + model: "", //名称 + addType: 0, + } + if (element.item_type == 3) { + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + OB.material_model = element.material_model; + componentNum = element.num * element.model + componentNum + componentList.push(OB) + } else if (element.item_type == 1) { + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + OB.material_model = element.material_model; + converterList.push(OB) + } else if (element.item_type == 2) { + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + cagesList.push(OB) + } else if (element.item_type == 4) { + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + zhijList.push(OB) + } + } + } + //保险购买情况 + if (res.insurance_flag == 1) { + this.setData({ + insuranceName: "控制投放及续保" + }) + } else if (res.insurance_flag == 2) { + this.setData({ + insuranceName: "控制投放" + }) + } else if (res.insurance_flag == 3) { + this.setData({ + insuranceName: "其他" + }) + } + + //方案信息-方案类型 + if (res.scheme_type == 1) {//标准方案 + this.setData({ + [`standardSolutionsList[0].id`]: res.scheme_id ? res.scheme_id : '', + [`standardSolutionsList[0].type`]: res.scheme_type_name ? res.scheme_type_name : '', + [`standardSolutionsList[0].typeId`]: res.scheme_type_id ? res.scheme_type_id : '', + [`standardSolutionsList[0].name`]: res.scheme_name ? res.scheme_name : "", + }) + } else if (res.scheme_type == 2) {//组合方案 + if (res.composePlanList.length > 0) { + var combinedSolutionsList = [] + for (let i = 0; i < res.composePlanList.length; i++) { + var combinedSolutionsListOB = {} + const element = res.composePlanList[i]; + if (i == 0) { + combinedSolutionsListOB.addType = 1; + } + combinedSolutionsListOB.code = element.code; + combinedSolutionsListOB.id = element.planId; + combinedSolutionsListOB.name = element.name; + combinedSolutionsListOB.type = element.planType; + combinedSolutionsListOB.planTypeId = element.planTypeId; + for (let i = 0; i < that.data.planList.length; i++) { + const planTypeObj = that.data.planList[i]; + + if (planTypeObj.allPlan.length > 0) { + for (let j = 0; j < planTypeObj.allPlan.length; j++) { + const plan = planTypeObj.allPlan[j]; + if (plan.id == element.planId) { + combinedSolutionsListOB.pickerIndex = i + } + } + } + } + combinedSolutionsList.push(combinedSolutionsListOB) + } + this.setData({ + combinedSolutionsList: combinedSolutionsList + }) + } + } + this.setData({ + detail: res, + id: res.id, //修改数据的时候传此ID + projectId: res.project_id, + tenant_type: res.tenant_type=='1' ? '个人' : '单位',//1.个人,2单位 + //业主信息参数 + name: res.tenant_name, + phone: res.mobile, + provinceName: res.province, + cityName: res.city, + areaName: res.area, + address: res.address, + //项目信息 + capitalId: res.zfId, //资方Id + capitalName: res.zfName, //资方 + projectName: res.projectName,//产品名称 + companyName: res.project_company_name,//项目公司 + filingName: res.filing_type=='1' ? '农户备案' : '项目公司备案',//备案类型 + leaseDate: res.leaseDate ? res.leaseDate : '',//预计投放日 + repaymentMethod: res.repayment_method,//划转方式 + //如果租金划转方式是二类卡,那么二类卡的信息 显示这个 + secCardName:res.secCardName ? res.secCardName : '',//二类卡账户名 + secCardNo:res.secCardNo ? res.secCardNo : '',//二类卡账号 + secBankNumber:res.secBankNumber ? res.secBankNumber : '',//二类卡联行号 + bankName: res.bank_name ? res.bank_name : '', //卡账号名称 + bankCode: res.bank_code ? res.bank_code : '', //卡账号 + tssBankNum: res.tss_bank_num ? res.tss_bank_num : '', //卡开户行 + longitude: res.longitude, //经度 + latitude: res.latitude, //纬度 + //房屋信息 + roofType: res.roof_type, + sealRoof:res.seal_roof,//是否封屋顶,1是,2.否 + completionYear:res.completion_year ? res.completion_year : '',//房屋建成年份 + slopeGradient:res.slope_gradient ? res.slope_gradient : '',//屋面坡度 + purlineInterval:res.purline_interval ? res.purline_interval : '',//檀条间距 + waterproof:res.waterproof ? res.waterproof : '',//屋顶防水情况 + sourcePollution:res.source_pollution ? res.source_pollution : '',//是否有污染源 + opsCondition:res.ops_condition ? res.ops_condition : '',//是否具备运维空间 + voltageClasses:res.voltage_classes ? res.voltage_classes : '',//并网电压等级 + transformerCapacity:res.transformer_capacity ? res.transformer_capacity : '',//变压器容量 + restrictFlag:res.restrict_flag ? res.restrict_flag : '',//是否符合变压器容量限制要求 + dipAngle:res.dip_angle ? res.dip_angle : '',//组件倾角 + roofArea: res.roof_area, //屋顶面积 + deg: res.distance,//配电箱至并网点距离 + height: res.building_height,//建筑高度 + azimuth: res.azimuth ? res.azimuth : 1,//方位角 + directionDeg: res.angle,//方位角 + ewLength: res.ew_length, //东西长 + nsWide: res.ns_wide, //南北宽 + + roofFaceThickness: res.roof_face_thickness,//屋面板厚度 + structureType: res.structure_type,//结构类型 + siteSlope: res.site_slope,//场地坡度 + groundType: res.ground_type,//地面类型 + geologicalCondition: res.geological_condition,//地质情况 + fenceHeight: res.fence_height,//围墙高度 + + //房屋信息-图片 + [`photo.flyImgs`]:res.fly_imgs ? res.fly_imgs.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//无人机航拍图 + [`photo.roofPhotoOne`]:res.roof_photo_one ? res.roof_photo_one.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域整体照片 + [`photo.roofPhotoTwo`]:res.roof_photo_two ? res.roof_photo_two.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域东南角照片 + [`photo.roofPhotoThree`]:res.roof_photo_three ? res.roof_photo_three.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域西南角照片 + [`photo.roofPhotoFour`]:res.roof_photo_four ? res.roof_photo_four.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域正南照片 + [`photo.roofPhotoFive`]:res.roof_photo_five ? res.roof_photo_five.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域细节照片 + [`photo.roofPhotoInterior`]:res.roof_photo_interior ? res.roof_photo_interior.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋内部环境照片 + [`photo.roofPhotoFacade`]:res.roof_photo_facade ? res.roof_photo_facade.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋内部结构照片 + [`photo.detailSupplementOne`]:res.detail_supplement_one ? res.detail_supplement_one.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//逆变器、配电箱预安装位置照片 + [`photo.houseSupplementOne`]:res.house_supplement_one ? res.house_supplement_one.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋其他障碍物照片 + [`photo.surveyVideo`]:res.survey_video ? res.survey_video.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//踏勘补充证明视频 + [`photo.houseOwnership`]:res.house_ownership ? res.house_ownership.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [],//房产证 + [`photo.surveyFiles`]:res.survey_files ? res.survey_files.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [],//踏勘记录表 + [`photo.vrRoofOne`]: res.vr_roof_one ? res.vr_roof_one.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋整体图(VR全景) + [`photo.vrRoofTwo`]: res.vr_roof_two ? res.vr_roof_two.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋整体俯视图(VR) + [`photo.vrRoofThree`]: res.vr_roof_three ? res.vr_roof_three.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋内部结构图(VR) + [`photo.vrRoofFour`]: res.vr_roof_four ? res.vr_roof_four.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //入户全景照片(VR) + [`photo.houseOutlinePhoto`]: res.house_outline_photo ? res.house_outline_photo.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋轮廓照片 + //方案信息 + componentNum: (componentNum/1000).toFixed(3),//设计安装容量 + componentList: componentList,//组件 + converterList: converterList,//逆变器 + cagesList: cagesList,//并网箱 + zhijList: zhijList,//支架 + schemeType: res.scheme_type ? res.scheme_type : 1,//设计方案 + solutionRemark: res.scheme_remarks ? res.scheme_remarks : '',//方案备注 + [`photo.designDrawings`]: res.design_drawings ? res.design_drawings.split(",").map(itm => { + return { + name: itm, + url: IMG_BASE_URL + itm + } + }) : [], //设计图纸 + 'photo.zjpbImg': res.zjpb_img ? res.zjpb_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件排布图 + 'photo.zjzxImg': res.zjzx_img ? res.zjzx_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件接线图 + 'photo.zjcsImg': res.zjcs_img ? res.zjcs_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件支架图 + 'photo.zjhsImg': res.zjhs_img ? res.zjhs_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //电气图 + // [`photo.nbqwzImg[0].url`]: res.nbqwz_img ? IMG_BASE_URL + res.nbqwz_img : WU_TU_PIAN_URL, + // [`photo.pdxwzImg[0].url`]: res.pdxwz_img ? IMG_BASE_URL + res.pdxwz_img : WU_TU_PIAN_URL, + [`photo.dzImgs`]: res.dz_imgs ? res.dz_imgs.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//组合图 + //2024-9-4 广发 + 'photo.fwImg1': res.fw_img1 ? res.fw_img1.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋整体图 + 'photo.fwImg2': res.fw_img2 ? res.fw_img2.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋内部结构图 + 'photo.fwImg3': res.fw_img3 ? res.fw_img3.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋屋顶东南侧图片 + 'photo.fwImg4': res.fw_img4 ? res.fw_img4.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋屋顶西南侧图片 + 'photo.fwImg5': res.fw_img5 ? res.fw_img5.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //遮阴物与房屋距离、高度 + }); + //并网方式处理 + if(res.recordBoxHistory){ + if(res.recordBoxHistory ==''){//并网方式没选择过,默认‘单户并网’ + this.setData({ + // gridType: '0',//并网方式 + boxTotalCount: '', //总数 + boxGroupNum: '', //编号 + boxGroupName: '', //名称 + }) + }else{ + this.setData({ + gridType: res.recordBoxHistory.type,//并网方式 + gridStatus: res.recordBoxHistory.status,//状态为1不能编辑 + boxTotalCount: res.recordBoxHistory.total_count, + boxGroupNum: res.recordBoxHistory.group_number, + boxGroupName: res.recordBoxHistory.group_name, + boxGroupId: res.recordBoxHistory.box_group_id, + }) + } + } + // console.log("photo",this.data.photo); + this.getFormSet(res.management) + //下拉字典 + this.getDictionaryList(res.management, (res2)=>{ + let angleList = res2.angle_azimuth.map(item=>item.columns) + if(res.azimuth){ + let azimuthName = angleList.find(itm => itm.dict_key === res.azimuth).dict_value; + this.setData({ + azimuthName + }) + } + }); + setTimeout(()=>{ + if(res.management == '03' && res.roof_type !=''){ + this.roofTypeToColumn(res.roof_type) + } + },500) + }, + /** 获取方案类型和方案名称 **/ + findAllPlan(e) { + let that = this + findAllPlan({ + + }).then((res) => { + for (let i = 0; i < res.length; i++) { + res[i].allPlan = JSON.parse(res[i].allPlan) + for (let j = 0; j < res[i].allPlan.length; j++) { + var element = res[i].allPlan[j].columns; + res[i].allPlan[j] = element + } + } + that.setData({ + planList: res, + }) + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if(suffix=='mp4'){// 开始预览多媒体内容 + wx.previewMedia({ + sources: [{ + url :IMG_BASE_URL + path, + type: 'video' + }], // 需要预览的资源列表 + }); + }else if(suffix != 'jpg' && suffix != 'png' && suffix != 'gif' && suffix != 'jpeg') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + fileType: suffix, + showMenu: true, + success: function (res) {} + }) + } + }) + }else{ + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + } +}) \ No newline at end of file diff --git a/home/components/survey/survey.json b/home/components/survey/survey.json new file mode 100644 index 0000000..f227f84 --- /dev/null +++ b/home/components/survey/survey.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + } +} \ No newline at end of file diff --git a/home/components/survey/survey.wxml b/home/components/survey/survey.wxml new file mode 100644 index 0000000..0556e80 --- /dev/null +++ b/home/components/survey/survey.wxml @@ -0,0 +1,795 @@ + + + + + + 投资方 + {{capitalName}} + + + + + + + + 安装地址 + + {{provinceName}}{{cityName}}{{areaName}} + + + {{address}} + + + + + + + * + 风压 + {{detail.wind_pressure}}kN/㎡ + + + + * + 雪压 + {{detail.snow_pressure}}kN/㎡ + + + + * + 风雪压等级 + {{detail.pressure_level}} + + + + + + 经纬度 + + {{longitude}},{{latitude}} + + + + + + + 产品名称 + {{projectName}} + + + + + + 项目公司 + {{companyName}} + + + + + + 备案类型 + {{filingName}} + + + + + + + 预计投放日 + {{leaseDate}} + + + + + + 划转方式 + + 二类卡 + + 其他 + + + + + + + 二类卡账户名 + {{secCardName}} + + + + 二类卡号 + {{secCardNo}} + + + + 联行号 + {{secBankNumber}} + + + + + + 房屋信息 + + + + + 屋顶类型 + {{roofType}} + + + + + + 是否封屋顶 + {{sealRoof==1?'是':'否'}} + + + + + + 建筑年限 + {{completionYear}} 年 + + + + + + 方位角 + {{azimuthName}} {{directionDeg}} 度 + + + + + + 建筑高度 + {{height}} 米 + + + + + + 东西长 + {{ewLength}} 米 + + + + + + 南北宽 + {{nsWide}} 米 + + + + + + 屋面板厚度 + {{roofFaceThickness}} mm + + + + + + 结构类型 + {{structureType}} + + + + + + 场地坡度 + {{siteSlope}} + + + + + + 地面类型 + {{groundType}} + + + + + + 地质情况 + {{geologicalCondition}} + + + + + + 围墙高度 + {{fenceHeight}} 米 + + + + + + 屋顶防水情况 + + 一般 + 良好 + + + + + + + 是否有污染源 + + + 没有 + + + + + + + 是否具备运维空间 + + 具备 + 不具备 + + + + + + + 并网电压等级 + {{voltageClasses}} V + + + + + + 倾角 + {{dipAngle}} 度 + + + + + + 屋顶面积 + {{roofArea}} m2 + + + + + + 变压器容量 + {{transformerCapacity}} kVA + + + + + + 是否符合变压器容量限制要求 + + 符合 + 不符合 + + + + + + + 配电箱至并网点距离 + {{deg}} 米 + + + + + + + + 并网方式 + + + + + + 本组电站个数 + + + + + 汇流组编号 + + + + + 汇流组名称 + + + + + + + + 屋顶类型 + {{roofType}} + + + + + + 是否封屋顶 + {{sealRoof==1?'是':'否'}} + + + + + + 房屋建成年份 + {{completionYear}} 年 + + + + + + 方位角 + {{azimuthName}} {{directionDeg}} 度 + + + + + + 建筑高度 + {{height}} 米 + + + + + + 东西长 + {{ewLength}} 米 + + + + + + 南北宽 + {{nsWide}} 米 + + + + + + + 屋面坡度 + {{slopeGradient}} 度 + + + + + + 檀条间距 + {{purlineInterval}} 米 + + + + + + + 屋顶防水情况 + + 一般 + 良好 + + + + + + + 是否有污染源 + + + 没有 + + + + + + + 是否具备运维空间 + + 具备 + 不具备 + + + + + + + 并网电压等级 + {{voltageClasses}} V + + + + + + 变压器容量 + {{transformerCapacity}} kVA + + + + + + 是否符合变压器容量限制要求 + + 符合 + 不符合 + + + + + + + 配电箱至并网点距离 + {{deg}} 米 + + + + + + 组件倾角 + {{dipAngle}} 度 + + + + + + 倾角 + {{dipAngle}} 度 + + + + + + 屋顶面积 + {{roofArea}} m2 + + + + + + + + + + {{item.title}}( + + {{item.minNum ? item.minNum : 1}} - {{item.num}} + {{item.num}} + + 最多{{item.num}} + 张) + + + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + + + + + + + + + + + + + 方案信息 + + + + + + + + + 方案类型 + {{item.type}} + + + + + 方案名称 + {{item.name}} + + + + + 参考图纸 + + {{drawing.name}} + + + + + + + + + + + + + + 设计图纸 + + + + {{util.formartFileName(child.name)}} + + + + + + + 设计CAD文件 + + + + {{util.formartFileName(child.name)}} + + + + + + + 组件排布图 + + + + {{util.formartFileName(child.name)}} + + + + + + + 组串接线图 + + + + {{util.formartFileName(child.name)}} + + + + + + + 组件支架图 + + + + {{util.formartFileName(child.name)}} + + + + + + + 一次接线图/电气图 + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + + + + 设计安装容量 + {{componentNum}} + kW + + + + + + + + 组件 + + {{item.model}} + Wp + + + + + + + 组件 + + {{item.material_model}} + Wp + + + + + + 组件数量 + + + + + + + + + + + 逆变器 + + {{item.model}} + + + + + + + + 逆变器 + + {{item.material_model}} + + + + + + + 逆变器数量 + + + + + + + + + + + 并网箱 + + {{item.model}} + + + + + + + 并网箱数量 + + + + + + + + + + + 支架 + + {{item.model}} + + + + + + + 支架数量 + + + + + + + + + 方案备注 + + + + \ No newline at end of file diff --git a/home/components/survey/survey.wxss b/home/components/survey/survey.wxss new file mode 100644 index 0000000..62060ae --- /dev/null +++ b/home/components/survey/survey.wxss @@ -0,0 +1 @@ +@import "/home/pages/entryInfoAudit/entryInfoAudit.wxss"; \ No newline at end of file diff --git a/home/components/surveyHR/surveyHR.js b/home/components/surveyHR/surveyHR.js new file mode 100644 index 0000000..6e8e334 --- /dev/null +++ b/home/components/surveyHR/surveyHR.js @@ -0,0 +1,701 @@ +const { + getAllDictionarySelect, + IMG_BASE_URL, + WU_TU_PIAN_URL, + getAllConditionList, + findAllPlan +} = require('../../../api/api') +Component({ + properties: { + entryId: String, + childObj:Object, + }, + data: { + photo: { + flyImgs: [], //无人机航拍图 + roofPhotoOne:[],//安装区域整体照片 + roofPhotoTwo:[],//安装区域东南角照片 + roofPhotoThree:[],//安装区域西南角照片 + roofPhotoFour:[],//安装区域正南照片 + roofPhotoFive:[],//安装区域细节照片 + roofPhotoFacade:[],//房屋内部结构照片 + roofPhotoInterior:[],//房屋内部环境照片 + detailSupplementOne:[],//逆变器、配电箱预安装位置照片 + houseSupplementOne:[],//房屋其他障碍物照片 + surveyVideo:[],//踏勘补充证明视频 + surveyFiles:[],//踏勘记录表 + vrRoofOne: [], //房屋整体图 + vrRoofTwo: [], //房屋整体俯视图 + vrRoofThree: [], //房屋内部结构图 + vrRoofFour: [], //入户全景照片 + houseOutlinePhoto:[], //房屋轮廓照片 + designDrawings: [], //设计图纸 + dzImgs: [], //组合图 + }, + photoTips:[ + { + showKey: 'fly_imgs', + key:'flyImgs', + num:9, + minNum:3, + title: '无人机航拍图', + },{ + showKey: 'roof_photo_one', + key:'roofPhotoOne', + num:9, + minNum:2, + title: '安装区域整体照片', + },{ + showKey: 'roof_photo_two', + key:'roofPhotoTwo', + num:9, + minNum:1, + title: '安装区域东南角照片', + },{ + showKey: 'roof_photo_four', + key:'roofPhotoFour', + num:9, + minNum:1, + title: '安装区域正南照片', + },{ + showKey: 'roof_photo_three', + key:'roofPhotoThree', + num:9, + minNum:1, + title: '安装区域西南角照片', + },{ + showKey: 'roof_photo_five', + key:'roofPhotoFive', + num:9, + minNum:1, + title: '安装区域细节照片', + },{ + showKey: 'roof_photo_interior', + key:'roofPhotoInterior', + num:9, + minNum:2, + title: '房屋内部环境照片', + },{ + showKey: 'roof_photo_facade', + key:'roofPhotoFacade', + num:9, + minNum:2, + title: '房屋内部结构照片', + },{ + showKey: 'detail_supplement_one', + key:'detailSupplementOne', + num:9, + minNum:1, + title: '逆变器、配电箱预安装位置照片', + },{ + showKey: 'house_outline_photo', + key: 'houseOutlinePhoto', + num: 9, + minNum: 1, + title: '房屋轮廓照片', + },{ + showKey: 'house_supplement_one', + key:'houseSupplementOne', + num:9, + minNum:1, + title: '房屋其他障碍物照片', + },{ + showKey: 'survey_files', + key:'surveyFiles', + num:4, + title: '踏勘记录表', + },{ + showKey: 'roof_photo_one_03', + key: 'roofPhotoOne', + num: 9, + minNum: 2, + title: '房屋屋顶照片', + },{ + showKey: 'roof_photo_two_03', + key: 'roofPhotoTwo', + num: 9, + minNum: 1, + title: '房屋屋顶东侧图片', + },{ + showKey: 'roof_photo_three_03', + key: 'roofPhotoThree', + num: 9, + minNum: 1, + title: '房屋屋顶西侧图片', + },{ + showKey: 'roof_photo_four_03', + key: 'roofPhotoFour', + num: 9, + minNum: 1, + title: '房屋屋顶南侧图片', + },{ + showKey: 'fw_img3', + key: 'fwImg3', + num: 9, + minNum: 1, + title: '房屋屋顶东南侧图片', + },{ + showKey: 'fw_img4', + key: 'fwImg4', + num: 9, + minNum: 1, + title: '房屋屋顶西南侧图片', + },{ + showKey: 'fw_img5', + key: 'fwImg5', + num: 9, + minNum: 1, + title: '遮阴物与房屋距离、高度', + },{ + showKey: 'survey_video', + key: 'surveyVideo', + num: 8, + minNum: 1, + title: '踏勘补充证明视频', + },{ + showKey: 'house_ownership', + key: 'houseOwnership', + num: 8, + minNum: 1, + title: '房产证明', + },{ + showKey: 'survey_files_03', + key: 'surveyFiles', + num: 9, + minNum: 1, + title: '户用勘察记录表(附平面草图)', + },{ + showKey: 'fw_img1', + key: 'fwImg1', + num: 9, + minNum: 1, + title: '房屋整体图', + },{ + showKey: 'vr_roof_one', + key: 'vrRoofOne', + num: 9, + minNum: 1, + title: '房屋整体图(VR全景)', + },{ + showKey: 'vr_roof_two', + key: 'vrRoofTwo', + num: 9, + minNum: 1, + title: '房屋整体俯视图(无人机)', + },{ + showKey: 'vr_roof_three', + key: 'vrRoofThree', + num: 9, + minNum: 1, + title: '房屋内部结构图(VR)', + },{ + showKey: 'fw_img2', + key: 'fwImg2', + num: 9, + minNum: 1, + title: '房屋内部结构图', + },{ + showKey: 'vr_roof_four', + key: 'vrRoofFour', + num: 9, + minNum: 1, + title: '入户全景照片(VR)', + },{ + showKey: 'fly_imgs_04', + key: 'flyImgs', + num: 9, + minNum: 3, + title: '屋顶高空俯视照片', + },{ + showKey: 'roof_photo_two_04', + key: 'roofPhotoTwo', + num: 9, + minNum: 1, + title: '屋顶东南照片', + },{ + showKey: 'roof_photo_four_04', + key: 'roofPhotoFour', + num: 9, + minNum: 1, + title: '屋顶正南照片', + },{ + showKey: 'roof_photo_three_04', + key: 'roofPhotoThree', + num: 9, + minNum: 1, + title: '屋顶西南照片', + },{ + showKey: 'vr_roof_four_04', + key: 'vrRoofFour', + num: 9, + minNum: 1, + title: '入户全景照片', + },{ + showKey: 'survey_files_04', + key: 'surveyFiles', + num: 4, + title: '现场勘测表', + }], + formSetObj: {}, //自定义字段 + standardSolutionsList:[],//标准方案初始数量 + combinedSolutionsList:[],//组合方案初始数量 + planList:[],//方案 + gridType: '0', + tabIndex: '0', + productList: [], + multiPhoto: [], //多产品图片 + // multiPhotoTips: [],//多产品图片 + multiScheme:[],//多产品方案 + multiComponentList:[],//多产品组件 + }, + ready(){ + this.findAllPlan(); + this.entryDetail(); + }, + methods:{ + /** 获取自定义字段 */ + getFormSet(partner) { + getAllConditionList({ + partner: partner, + }).then((res) => { + this.setData({ + formSetObj: res.data + }) + }) + }, + /*** 获取字典 */ + getDictionaryList(partner, callback) { + getAllDictionarySelect({ + capitalId: partner, + }).then((res) => { + if(res.data){ + this.setData({ + angleAzimuthSel: res.data.angle_azimuth.map(item=>item.columns), //方位角 + }) + } + if(callback) callback(res.data) + }) + }, + /** 获取电站详情 **/ + entryDetail(e) { + let that = this + let res = JSON.parse(JSON.stringify(this.data.childObj)); + //华融资方--多产品分开显示 + let productList = res.projectDetailList //产品集合 + let multiPhoto = [] + let multiScheme = [] + //拆分成多产品 + productList.forEach((item,index)=>{ + //多产品图片处理 + multiPhoto.push(this.data.photo) + multiScheme.push({ + standardSolutionsListIndex: 0, + standardSolutionsList: [{ + projectId: item.projectId, //产品ID + type: "", //方案类型 + name: "", //方案名称 + id: "", //方案ID + code: "", //方案编号 + drawing: "", //参考图纸 + }] + }) + // 添加图片 + this.setData({ + multiComponentList: this.data.multiComponentList, + multiScheme: this.data.multiScheme, + // multiScheme, //方案信息默认值 + [`multiPhoto[${index}].dipAngle`]:item.dipAngle,//组件倾角 + [`multiPhoto[${index}].zjpbImg`]: item.zjpbImg ? item.zjpbImg.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件排布图 + [`multiPhoto[${index}].zjzxImg`]: item.zjzxImg ? item.zjzxImg.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件接线图 + [`multiPhoto[${index}].zjcsImg`]: item.zjcsImg ? item.zjcsImg.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件支架图 + [`multiPhoto[${index}].zjhsImg`]: item.zjhsImg ? item.zjhsImg.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //电气图 + [`multiPhoto[${index}].dzImgs`]: item.dzImgs ? item.dzImgs.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//组合图 + //房屋信息 + [`multiPhoto[${index}].flyImgs`]:item.flyImgs ? item.flyImgs.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//无人机航拍图 + [`multiPhoto[${index}].roofPhotoOne`]:item.roofPhotoOne ? item.roofPhotoOne.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域整体照片 + [`multiPhoto[${index}].roofPhotoTwo`]:item.roofPhotoTwo ? item.roofPhotoTwo.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域东南角照片 + [`multiPhoto[${index}].roofPhotoThree`]:item.roofPhotoThree ? item.roofPhotoThree.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域西南角照片 + [`multiPhoto[${index}].roofPhotoFour`]:item.roofPhotoFour ? item.roofPhotoFour.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域正南照片 + [`multiPhoto[${index}].roofPhotoFive`]:item.roofPhotoFive ? item.roofPhotoFive.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域细节照片 + [`multiPhoto[${index}].roofPhotoInterior`]:item.roofPhotoInterior ? item.roofPhotoInterior.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋内部环境照片 + [`multiPhoto[${index}].roofPhotoFacade`]:item.roofPhotoFacade ? item.roofPhotoFacade.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋内部结构照片 + [`multiPhoto[${index}].detailSupplementOne`]:item.detailSupplementOne ? item.detailSupplementOne.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//逆变器、配电箱预安装位置照片 + [`multiPhoto[${index}].houseSupplementOne`]:item.houseSupplementOne ? item.houseSupplementOne.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋其他障碍物照片 + [`multiPhoto[${index}].surveyVideo`]:item.surveyVideo ? item.surveyVideo.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//踏勘补充证明视频 + [`multiPhoto[${index}].surveyFiles`]:item.surveyFiles ? item.surveyFiles.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [],//踏勘记录表 + [`multiPhoto[${index}].vrRoofOne`]: item.vrRoofOne ? item.vrRoofOne.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋整体图(VR全景) + [`multiPhoto[${index}].vrRoofTwo`]: item.vrRoofTwo ? item.vrRoofTwo.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋整体俯视图(VR) + [`multiPhoto[${index}].vrRoofThree`]: item.vrRoofThree ? item.vrRoofThree.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋内部结构图(VR) + [`multiPhoto[${index}].vrRoofFour`]: item.vrRoofFour ? item.vrRoofFour.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //入户全景照片(VR) + [`multiPhoto[${index}].houseOutlinePhoto`]: item.houseOutlinePhoto ? item.houseOutlinePhoto.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋轮廓照片 + [`multiPhoto[${index}].fwImg1`]: item.fwImg1 ? item.fwImg1.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋整体图 + [`multiPhoto[${index}].fwImg2`]: item.fwImg2 ? item.fwImg2.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋内部结构图 + [`multiPhoto[${index}].fwImg3`]: item.fwImg3 ? item.fwImg3.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋屋顶东南侧图片 + [`multiPhoto[${index}].fwImg4`]: item.fwImg4 ? item.fwImg4.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋屋顶西南侧图片 + [`multiPhoto[${index}].fwImg5`]: item.fwImg5 ? item.fwImg5.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //遮阴物与房屋距离、高度 + }); + + if(item.addEntryReqDesignDetails.length>0){ + this.setData({ + [`multiPhoto[${index}].designDrawings`]: item.addEntryReqDesignDetails[0].designDrawings ? item.addEntryReqDesignDetails[0].designDrawings.split(",").map(itm => {return {name: itm, url: IMG_BASE_URL + itm} }) : [], //设计图纸 + }) + }else{ + this.setData({ + [`multiPhoto[${index}].designDrawings`]: [], //设计图纸 + }) + } + + // 组件,逆变器,并网箱,支架 + if (item.componentList.length > 0) { + var componentList = []; + var converterList = []; + var cagesList = []; + var zhijList = []; + var componentNum = 0; + for (let i = 0; i < item.componentList.length; i++) { + const element = item.componentList[i]; + var OB = { + projectId: "", //产品ID + id: "", + num: "", //数量 + model: "", //名称 + addType: 0, + } + if (element.item_type == 3) { + OB.projectId = item.projectId; + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + OB.material_model = element.material_model; + componentNum = element.num * element.model + componentNum + componentList.push(OB) + } else if (element.item_type == 1) { + OB.projectId = item.projectId; + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + OB.material_model = element.material_model; + converterList.push(OB) + } else if (element.item_type == 2) { + OB.projectId = item.projectId; + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + cagesList.push(OB) + } else if (element.item_type == 4) { + OB.projectId = item.projectId; + OB.id = element.item_id; + OB.num = element.num; + OB.model = element.model; + zhijList.push(OB) + } + } + this.setData({ + [`multiComponentList[${index}].componentList`]: componentList, + [`multiComponentList[${index}].converterList`]: converterList, + [`multiComponentList[${index}].cagesList`]: cagesList, + [`multiComponentList[${index}].zhijList`]: zhijList, + [`multiComponentList[${index}].productZj`]:item.assemblySpecs ? Number(item.assemblySpecs) : 0,//产品默认的组件值 + [`multiComponentList[${index}].componentNum`]: (componentNum/1000).toFixed(3), + }) + // console.log(126666, this.data.multiComponentList) + }else{ + this.setData({ + [`multiComponentList[${index}].componentList`]: [{ + projectId: item.projectId, //产品ID + id: res.modeId ? res.modeId : '',//默认产品信息中的组件规格id + num: '', //数量 + model: res.modeId ? item.assemblySpecs : '', //名称,默认产品信息中的组件规格 + addType: 1, + }], //组件初始数量 + [`multiComponentList[${index}].converterList`]: [{ + projectId: item.projectId, //产品ID + id: "", + num: "", //数量 + model: "", //名称 + addType: 1, + }], //逆变器初始数量 + [`multiComponentList[${index}].cagesList`]: [{ + projectId: item.projectId, //产品ID + id: "", + num: "", //数量 + model: "", //名称 + addType: 1, + }], //并网箱初始数量 + [`multiComponentList[${index}].zhijList`]: [{ + projectId: item.projectId, //产品ID + id: "", + num: "", //数量 + model: "", //名称 + addType: 1, + }], //支架初始数量 + [`multiComponentList[${index}].productZj`]: item.assemblySpecs ? Number(item.assemblySpecs) : 0,//产品默认的组件值 + [`multiComponentList[${index}].componentNum`]: 0, + }) + } + //方案信息-方案类型 + if (res.scheme_type == 1) {//标准方案 + // this.setData({ + // [`standardSolutionsList[0].id`]: res.scheme_id ? res.scheme_id : '', + // [`standardSolutionsList[0].type`]: res.scheme_type_name ? res.scheme_type_name : '', + // [`standardSolutionsList[0].typeId`]: res.scheme_type_id ? res.scheme_type_id : '', + // [`standardSolutionsList[0].name`]: res.scheme_name ? res.scheme_name : "", + // }) + if(productList[index].addEntryReqDesignDetails.length){ + for (let i = 0; i < that.data.planList.length; i++) { + const element = that.data.planList[i]; + if (productList[index].addEntryReqDesignDetails[0].schemeTypeId && (productList[index].addEntryReqDesignDetails[0].schemeTypeId == element.id)) { + this.setData({ + [`multiScheme[${index}].standardSolutionsListIndex`]: i, + }) + } + } + this.setData({ + [`multiScheme[${index}].standardSolutionsList[0].projectId`]: productList[index].projectId, + [`multiScheme[${index}].standardSolutionsList[0].id`]: productList[index].addEntryReqDesignDetails[0].schemeId ? productList[index].addEntryReqDesignDetails[0].schemeId : '', + [`multiScheme[${index}].standardSolutionsList[0].type`]: productList[index].addEntryReqDesignDetails[0].schemeTypeName ? productList[index].addEntryReqDesignDetails[0].schemeTypeName : '', + [`multiScheme[${index}].standardSolutionsList[0].typeId`]: productList[index].addEntryReqDesignDetails[0].schemeTypeId ? productList[index].addEntryReqDesignDetails[0].schemeTypeId : '', + [`multiScheme[${index}].standardSolutionsList[0].name`]: productList[index].addEntryReqDesignDetails[0].schemeName ? productList[index].addEntryReqDesignDetails[0].schemeName : "", + }) + } + } else if (res.scheme_type == 2) {//组合方案 + if (res.composePlanList.length > 0) { + var combinedSolutionsList = [] + for (let i = 0; i < res.composePlanList.length; i++) { + var combinedSolutionsListOB = {} + const element = res.composePlanList[i]; + if (i == 0) { + combinedSolutionsListOB.addType = 1; + } + combinedSolutionsListOB.code = element.code; + combinedSolutionsListOB.id = element.planId; + combinedSolutionsListOB.name = element.name; + combinedSolutionsListOB.type = element.planType; + combinedSolutionsListOB.planTypeId = element.planTypeId; + for (let i = 0; i < that.data.planList.length; i++) { + const planTypeObj = that.data.planList[i]; + + if (planTypeObj.allPlan.length > 0) { + for (let j = 0; j < planTypeObj.allPlan.length; j++) { + const plan = planTypeObj.allPlan[j]; + if (plan.id == element.planId) { + combinedSolutionsListOB.pickerIndex = i + } + } + } + } + combinedSolutionsList.push(combinedSolutionsListOB) + } + this.setData({ + combinedSolutionsList: combinedSolutionsList + }) + } + } + }) + //保险购买情况 + if (res.insurance_flag == 1) { + this.setData({ + insuranceName: "控制投放及续保" + }) + } else if (res.insurance_flag == 2) { + this.setData({ + insuranceName: "控制投放" + }) + } else if (res.insurance_flag == 3) { + this.setData({ + insuranceName: "其他" + }) + } + this.setData({ + productList, + projectList: res.projectList, + multiComponentList: this.data.multiComponentList, + multiScheme: this.data.multiScheme, + id: res.id, //修改数据的时候传此ID + detail: res, + projectId: res.project_id, + tenant_type: res.tenant_type=='1' ? '个人' : '单位',//1.个人,2单位 + //业主信息参数 + name: res.tenant_name, + phone: res.mobile, + provinceName: res.province, + cityName: res.city, + areaName: res.area, + address: res.address, + //项目信息 + capitalName: res.zfName, //资方 + projectName: res.projectName,//产品名称 + companyName: res.project_company_name,//项目公司 + filingName: res.filing_type=='1' ? '农户备案' : '项目公司备案',//备案类型 + leaseDate: res.leaseDate ? res.leaseDate : '',//预计投放日 + repaymentMethod: res.repayment_method,//划转方式 + //如果租金划转方式是二类卡,那么二类卡的信息 显示这个 + secCardName:res.secCardName ? res.secCardName : '',//二类卡账户名 + secCardNo:res.secCardNo ? res.secCardNo : '',//二类卡账号 + secBankNumber:res.secBankNumber ? res.secBankNumber : '',//二类卡联行号 + bankName: res.bank_name ? res.bank_name : '', //卡账号名称 + bankCode: res.bank_code ? res.bank_code : '', //卡账号 + tssBankNum: res.tss_bank_num ? res.tss_bank_num : '', //卡开户行 + longitude: res.longitude, //经度 + latitude: res.latitude, //纬度 + //房屋信息 + roofType: res.roof_type, + sealRoof:res.seal_roof,//是否封屋顶,1是,2.否 + completionYear:res.completion_year ? res.completion_year : '',//房屋建成年份 + slopeGradient:res.slope_gradient ? res.slope_gradient : '',//屋面坡度 + purlineInterval:res.purline_interval ? res.purline_interval : '',//檀条间距 + waterproof:res.waterproof ? res.waterproof : '',//屋顶防水情况 + sourcePollution:res.source_pollution ? res.source_pollution : '',//是否有污染源 + opsCondition:res.ops_condition ? res.ops_condition : '',//是否具备运维空间 + voltageClasses:res.voltage_classes ? res.voltage_classes : '',//并网电压等级 + transformerCapacity:res.transformer_capacity ? res.transformer_capacity : '',//变压器容量 + restrictFlag:res.restrict_flag ? res.restrict_flag : '',//是否符合变压器容量限制要求 + dipAngle:res.dip_angle ? res.dip_angle : '',//组件倾角 + roofArea: res.roof_area, //屋顶面积 + deg: res.distance,//配电箱至并网点距离 + height: res.building_height,//建筑高度 + azimuth: res.azimuth ? res.azimuth : 1,//方位角 + directionDeg: res.angle,//方位角 + //房屋信息-图片 + // [`photo.flyImgs`]:res.fly_imgs ? res.fly_imgs.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//无人机航拍图 + // [`photo.roofPhotoOne`]:res.roof_photo_one ? res.roof_photo_one.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域整体照片 + // [`photo.roofPhotoTwo`]:res.roof_photo_two ? res.roof_photo_two.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域东南角照片 + // [`photo.roofPhotoThree`]:res.roof_photo_three ? res.roof_photo_three.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域西南角照片 + // [`photo.roofPhotoFour`]:res.roof_photo_four ? res.roof_photo_four.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域正南照片 + // [`photo.roofPhotoFive`]:res.roof_photo_five ? res.roof_photo_five.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//安装区域细节照片 + // [`photo.roofPhotoInterior`]:res.roof_photo_interior ? res.roof_photo_interior.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋内部环境照片 + // [`photo.roofPhotoFacade`]:res.roof_photo_facade ? res.roof_photo_facade.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋内部结构照片 + // [`photo.detailSupplementOne`]:res.detail_supplement_one ? res.detail_supplement_one.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//逆变器、配电箱预安装位置照片 + // [`photo.houseSupplementOne`]:res.house_supplement_one ? res.house_supplement_one.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//房屋其他障碍物照片 + // [`photo.surveyVideo`]:res.survey_video ? res.survey_video.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//踏勘补充证明视频 + // [`photo.houseOwnership`]:res.house_ownership ? res.house_ownership.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [],//房产证 + // [`photo.surveyFiles`]:res.survey_files ? res.survey_files.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [],//踏勘记录表 + // [`photo.vrRoofOne`]: res.vr_roof_one ? res.vr_roof_one.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋整体图(VR全景) + // [`photo.vrRoofTwo`]: res.vr_roof_two ? res.vr_roof_two.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋整体俯视图(VR) + // [`photo.vrRoofThree`]: res.vr_roof_three ? res.vr_roof_three.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋内部结构图(VR) + // [`photo.vrRoofFour`]: res.vr_roof_four ? res.vr_roof_four.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //入户全景照片(VR) + // [`photo.houseOutlinePhoto`]: res.house_outline_photo ? res.house_outline_photo.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [], //房屋轮廓照片 + //方案信息 + // componentNum: (componentNum/1000).toFixed(2),//设计安装容量 + // componentList: componentList,//组件 + // converterList: converterList,//逆变器 + // cagesList: cagesList,//并网箱 + // zhijList: zhijList,//支架 + schemeType: res.scheme_type ? res.scheme_type : 1,//设计方案 + solutionRemark: res.scheme_remarks ? res.scheme_remarks : '',//方案备注 + // [`photo.designDrawings`]: res.design_drawings ? res.design_drawings.split(",").map(itm => { + // return { + // name: itm, + // url: IMG_BASE_URL + itm + // } + // }) : [], //设计图纸 + // 'photo.zjpbImg': res.zjpb_img ? res.zjpb_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件排布图 + // 'photo.zjzxImg': res.zjzx_img ? res.zjzx_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件接线图 + // 'photo.zjcsImg': res.zjcs_img ? res.zjcs_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //组件支架图 + // 'photo.zjhsImg': res.zjhs_img ? res.zjhs_img.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //电气图 + // // [`photo.nbqwzImg[0].url`]: res.nbqwz_img ? IMG_BASE_URL + res.nbqwz_img : WU_TU_PIAN_URL, + // // [`photo.pdxwzImg[0].url`]: res.pdxwz_img ? IMG_BASE_URL + res.pdxwz_img : WU_TU_PIAN_URL, + // [`photo.dzImgs`]: res.dz_imgs ? res.dz_imgs.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}],//组合图 + // //2024-9-4 广发 + // 'photo.fwImg1': res.fw_img1 ? res.fw_img1.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋整体图 + // 'photo.fwImg2': res.fw_img2 ? res.fw_img2.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋内部结构图 + // 'photo.fwImg3': res.fw_img3 ? res.fw_img3.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋屋顶东南侧图片 + // 'photo.fwImg4': res.fw_img4 ? res.fw_img4.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //房屋屋顶西南侧图片 + // 'photo.fwImg5': res.fw_img5 ? res.fw_img5.split(",").map(itm => {return {name: itm,url: IMG_BASE_URL + itm}}) : [], //遮阴物与房屋距离、高度 + }); + //并网方式处理 + if(res.recordBoxHistory){ + if(res.recordBoxHistory ==''){//并网方式没选择过,默认‘单户并网’ + this.setData({ + // gridType: '0',//并网方式 + boxTotalCount: '', //总数 + boxGroupNum: '', //编号 + boxGroupName: '', //名称 + }) + }else{ + this.setData({ + gridType: res.recordBoxHistory.type,//并网方式 + gridStatus: res.recordBoxHistory.status,//状态为1不能编辑 + boxTotalCount: res.recordBoxHistory.total_count, + boxGroupNum: res.recordBoxHistory.group_number, + boxGroupName: res.recordBoxHistory.group_name, + boxGroupId: res.recordBoxHistory.box_group_id, + }) + } + } + // console.log("photo",this.data.photo); + this.getFormSet(res.management) + //下拉字典 + this.getDictionaryList(res.management, (res2)=>{ + let angleList = res2.angle_azimuth.map(item=>item.columns) + if(res.azimuth){ + let azimuthName = angleList.find(itm => itm.dict_key === res.azimuth).dict_value; + this.setData({ + azimuthName + }) + } + }); + }, + /** 获取方案类型和方案名称 **/ + findAllPlan(e) { + let that = this + findAllPlan({ + + }).then((res) => { + for (let i = 0; i < res.length; i++) { + res[i].allPlan = JSON.parse(res[i].allPlan) + for (let j = 0; j < res[i].allPlan.length; j++) { + var element = res[i].allPlan[j].columns; + res[i].allPlan[j] = element + } + } + that.setData({ + planList: res, + }) + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if(suffix=='mp4'){// 开始预览多媒体内容 + wx.previewMedia({ + sources: [{ + url :IMG_BASE_URL + path, + type: 'video' + }], // 需要预览的资源列表 + }); + }else if(suffix != 'jpg' && suffix != 'png' && suffix != 'gif' && suffix != 'jpeg') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + fileType: suffix, + showMenu: true, + success: function (res) {} + }) + } + }) + }else{ + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + //tab切换 + changeTab(e){ + let index = e.currentTarget.dataset.index + this.setData({ + tabIndex: index + }) + } + } +}) \ No newline at end of file diff --git a/home/components/surveyHR/surveyHR.json b/home/components/surveyHR/surveyHR.json new file mode 100644 index 0000000..f227f84 --- /dev/null +++ b/home/components/surveyHR/surveyHR.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + } +} \ No newline at end of file diff --git a/home/components/surveyHR/surveyHR.wxml b/home/components/surveyHR/surveyHR.wxml new file mode 100644 index 0000000..0ec8b06 --- /dev/null +++ b/home/components/surveyHR/surveyHR.wxml @@ -0,0 +1,618 @@ + + + + + + 投资方 + {{capitalName}} + + + + + + + + 安装地址 + + {{provinceName}}{{cityName}}{{areaName}} + + + {{address}} + + + + + + + 风压 + {{detail.wind_pressure}}kN/㎡ + + + + 雪压 + {{detail.snow_pressure}}kN/㎡ + + + + 风雪压等级 + {{detail.pressure_level}} + + + + + + 经纬度 + + {{longitude}},{{latitude}} + + + + + + + + 项目公司 + {{companyName}} + + + + + + 备案类型 + {{filingName}} + + + + + + + 预计投放日 + {{leaseDate}} + + + + + + 划转方式 + + 二类卡 + + 其他 + + + + + + + 二类卡账户名 + {{secCardName}} + + + + 二类卡号 + {{secCardNo}} + + + + 联行号 + {{secBankNumber}} + + + + + + 产品名称 + {{item.projectName}} + + + + 产品编号 + {{item.projectCode}} + + + + 屋顶类型 + {{item.roofType}} + + + + 租金支付周期 + 按月支付 + 按季支付 + 按年支付 + + + + + + 房屋信息 + + + + 并网方式 + + + + + + 本组电站个数 + + + + + + 汇流组编号 + + + + + 汇流组名称 + + + + + + + + + 是否封屋顶 + {{sealRoof==1?'是':'否'}} + + + + + + 房屋建成年份 + {{completionYear}} 年 + + + + + + 方位角 + {{azimuthName}} {{directionDeg}} 度 + + + + + + 建筑高度 + {{height}} 米 + + + + + + + 屋面坡度 + {{slopeGradient}} 度 + + + + + + 檀条间距 + {{purlineInterval}} 米 + + + + + + + 屋顶防水情况 + + 一般 + 良好 + + + + + + + 是否有污染源 + + + 没有 + + + + + + + 是否具备运维空间 + + 具备 + 不具备 + + + + + + + 并网电压等级 + {{voltageClasses}} V + + + + + + 变压器容量 + {{transformerCapacity}} kVA + + + + + + 是否符合变压器容量限制要求 + + 符合 + 不符合 + + + + + + + 配电箱至并网点距离 + {{deg}} 米 + + + + + + + 屋顶面积 + {{roofArea}} m2 + + + + + + + + + {{item.roofType}} + + + + + + + + + 组件倾角 + {{multiPhoto[tabIndex].dipAngle}} 度 + + + + + + 倾角 + {{multiPhoto[tabIndex].dipAngle}} 度 + + + + + + + {{item.title}}( + + {{item.minNum ? item.minNum : 1}} - {{item.num}} + {{item.num}} + + 最多{{item.num}} + 张) + + + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + + + + + + + + + + + + + 方案信息 + + + + + + 方案类型 + {{item.type}} + + + + + 方案名称 + {{item.name}} + + + + + 参考图纸 + + {{drawing.name}} + + + + + + + + + + + 设计图纸 + + + + {{util.formartFileName(child.name)}} + + + + + + + 设计CAD文件 + + + + {{util.formartFileName(child.name)}} + + + + + + + 组件排布图 + + + + {{util.formartFileName(child.name)}} + + + + + + + 组串接线图 + + + + {{util.formartFileName(child.name)}} + + + + + + + 组件支架图 + + + + {{util.formartFileName(child.name)}} + + + + + + + 一次接线图/电气图 + + + + {{util.formartFileName(child.name)}} + + + + + + + + + + + + + 设计安装容量 + {{multiComponentList[tabIndex].componentNum}} + kW + + + + + + + + 组件 + + {{item.model}} + Wp + + + + + + + 组件 + + {{item.material_model}} + Wp + + + + + + 组件数量 + + + + + + + + + + + 逆变器 + + {{item.model}} + + + + + + + + 逆变器 + + {{item.material_model}} + + + + + + + 逆变器数量 + + + + + + + + + + + 并网箱 + + {{item.model}} + + + + + + + 并网箱数量 + + + + + + + + + + + 支架 + + {{item.model}} + + + + + + + 支架数量 + + + + + + + + + 方案备注 + + + + \ No newline at end of file diff --git a/home/components/surveyHR/surveyHR.wxss b/home/components/surveyHR/surveyHR.wxss new file mode 100644 index 0000000..9980852 --- /dev/null +++ b/home/components/surveyHR/surveyHR.wxss @@ -0,0 +1,5 @@ +@import "/home/pages/entryInfoAuditHR/entryInfoAuditHR.wxss"; +.detail-tab{display: flex; justify-content: space-between; height: 90rpx; border-bottom: 1px solid #f0f0f0; color: #666666;} +.detail-tab>view{flex: 1; text-align: center; line-height: 82rpx; font-size: 28rpx; position: relative;} +.detail-tab>view.active{color: #333333; font-size: 32rpx;} +.detail-tab>view .actived{width: 60rpx; height: 6rpx; background-color: #0a6597; border-radius: 3rpx; margin: 0 auto;} \ No newline at end of file diff --git a/home/components/userInfo/userInfo.js b/home/components/userInfo/userInfo.js new file mode 100644 index 0000000..55a7ebf --- /dev/null +++ b/home/components/userInfo/userInfo.js @@ -0,0 +1,56 @@ +// home/components/userInfo/userInfo.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + detail: Object, + type: String, + recordShow:Boolean, + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + ready(){ + // console.log(1212, this.data) + }, + + /** + * 组件的方法列表 + */ + methods: { + /** 用户信息跳转 **/ + userFn(e){ + // console.log('用户信息跳转', e) + wx.navigateTo({ + url: '/home/pages/ownerForm/ownerForm?projectId=' + this.data.detail.entry_id + '&type='+this.data.type, + }) + }, + /** 拨打业主联系电话 **/ + phoneFn(e) { + const phone = e.currentTarget.dataset.phone; + if (!phone) { + wx.showToast({ + title: '暂无联系方式', + icon: 'none' + }) + return + } + wx.makePhoneCall({ + phoneNumber: phone, + }) + }, + //审批记录 + goRecord(e){ + wx.navigateTo({ + url: '/pages/appRecord/appRecord?entryId=' + this.data.detail.id + '&type='+this.data.type, + }) + } + + } +}) \ No newline at end of file diff --git a/home/components/userInfo/userInfo.json b/home/components/userInfo/userInfo.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/home/components/userInfo/userInfo.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/home/components/userInfo/userInfo.wxml b/home/components/userInfo/userInfo.wxml new file mode 100644 index 0000000..1807da1 --- /dev/null +++ b/home/components/userInfo/userInfo.wxml @@ -0,0 +1,42 @@ + + + + + {{detail.tenant_name}} + + 个人 + 单位 + + + + + 联系电话 + {{detail.mobile}} + + + 拨打 + + + + 身份证号 + {{detail.id_code}} + 审批记录 + + + 统一信用代码 + {{detail.regno}} + 审批记录 + + + + + 设计自审驳回 + 设计审核驳回 + 安装验收驳回 + 并网验收驳回 + {{detail.auditRemark}} + + \ No newline at end of file diff --git a/home/components/userInfo/userInfo.wxss b/home/components/userInfo/userInfo.wxss new file mode 100644 index 0000000..286451d --- /dev/null +++ b/home/components/userInfo/userInfo.wxss @@ -0,0 +1,4 @@ +/* home/components/userInfo/userInfo.wxss */ +@import "../../pages/completion/completion"; +.txt-red{ color: #FF0000;} +.record-btn{ border: 1px solid #0a6597; color: #0a6597; border-radius: 30rpx; padding: 5rpx 15rpx; font-size: 24rpx;} \ No newline at end of file diff --git a/home/img/addr.png b/home/img/addr.png new file mode 100644 index 0000000000000000000000000000000000000000..ac20c70f84d2e6cca65c09b94581928a6197f792 GIT binary patch literal 1499 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 U^K4~3|DUfGrZy&d#`uW;070H-&Hw-a literal 0 HcmV?d00001 diff --git a/home/img/canvas-date.png b/home/img/canvas-date.png new file mode 100644 index 0000000000000000000000000000000000000000..b1bffb29f02ca0ee148def14a0ce1ab93e1141d0 GIT binary patch literal 1257 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SQ#4`o4Hz;TN;{Jni?9qx>}f8I$Ii9 z7#f(G8o9bTxxw_hM2LI{cCB_#ez!-!@Cr=|Wk6qc21L zAAjo&ofH1{xLi@OZ=BKVX841<knPAXmD?^Z zzD<1Rm<^35)#!%AFnjvQYK3*H9OJp#&G+G!f1b$y^+J(=NKbP0l+XkK?T)S# literal 0 HcmV?d00001 diff --git a/home/img/canvas-location.png b/home/img/canvas-location.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5fbab90fbf0b11ec1f2dd8770b2e569126d664 GIT binary patch literal 1455 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SQ#6bxfnY;8XB5dni?9qx;i=N@Uj$6rw__KuGB7a7 zd%8G=RNQ(q{j|1Ap~&&~U)A~->A0wIFSQZdJlRuH=s&|z`2=T0*Ro^EoxMxz9cGD& z>GUjmV=HbpX``Z7$7{pu-^1Pi?&|&hc{U@28w_TIH}>o2_5rdg2{*4R-y!{YM!Y3%QP7sR~T{q}t`yDDED^ zB*)UfgUM$1-sYS}+r}NW%O9m!owQl~(eD@IjL(~{$~H-|{}U{j&=+RTbL4CECYoin9l&wDHX1+oxUTpK+CFS}v zjz;sYxtYMpGked+9D%)yr$6mnH?`3zAk*kZU1O*L{^-C zr_JfxIJY#p1@N!RoN|8g+~5p#`xloL`1B4+S}c05|L~c4=l$;5#(f8THpw%xF;uo@ VI`VStxdc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SXsCkT9}wSn;1E}IvE{Hoy1BU; zn7BF_JG;3$yTSCjdtOyR7p2zUO;qNA3xpfA7rh=W~C*y<7a=_PeF1YhlW! zR7;~fIgQ&Kq8G3<{!9?M(@-wJE_gxFRWX{K_W@&d*EV129`z$Hm_Kvf-{-h@D${13 zWrsH$c+OezPn%uZL38~&GEXUY++l<(+8}}bLX$qwR&`=NlKC_J=7`at=taBrRO5*B$;mJ z#P}5dm%P(t#Jq7;N^a@u1g)p{%qmzFnG2mZu^4eL|C7&l^T8#D9_`3#!^KV8Ot$I< z+-~YiO=I7Y`t~TJfbZp($|soZKBx)Y$o}f|mi2K$_=S%~KiM6F4yRvvm9>mtMWpuF zpE+Odgw6UU9=bc#`lO8LiaRE3vlq;*+dSi*N!^-Lnwxe-JlJb%)|2=k{O9xr(St0R zTZ%gDO|5=0tzD(HTYk;U84CN$xY9KC`*PY`excy?_RZU)Q}##4n5=eXO_@-n&G5>> zRAV{Ql$#PCW@^mf);NECtIQlVd%2A#FQ#r<<^QRVGwu9Qz4prDQ#L!|qZB@LtiJa| z;CaBrTP~Kb7R#iHG&@yso)7uBq4}z8M`LyY6W_shoyKq5C8HPUUJ%pRAkWCgaC;W3 U(4@1A;z32Ir>mdKI;Vst09U{c=l}o! literal 0 HcmV?d00001 diff --git a/home/img/content-function-acceptance-img.png b/home/img/content-function-acceptance-img.png new file mode 100644 index 0000000000000000000000000000000000000000..c63aae1c6bd052638de63973575aea3c1663b680 GIT binary patch literal 1807 zcmbVN4NMbf7(SvdfI6IRY;3Y!PE=IdyK75J4~mwyLYK8NXhNCW^m_Ld4%)l(?yv_-=qWyu_}pA4tO?7LDLH15yKclZ50 z-}C-_@B3a;p*w$Z;**I8f-H6x*o$DFp}z4C!SB=iUWkKTf>=;0Bgn#K>Klg~ZGQqm z7A)sHUd8Krj$(wMmSzPX(1wE|L?cMf`mjhdl|Vs#pp4@!*p2={4CPo0R+8x=T%rw> za|JaLD6VmPn3_t)%wp?v(VQ>^34%bO(Qq)p%T(BcMR+MVR+n)MjX;!23uaXXqFz@a zY7-=YW@?QZhBW9}N|RVWRb<~7l?7)O ztXxq<3dcjCkT#^(3Q`$Pn$2dM(BV3r1|l?aHLuWN4KJ^lWv~O8kvLJ|1RhlxX`fJ~ zSTLyRj0r(8M$5}lH$jKtVOqpVEuoqe0kTXCCss*;h;Wv{K>!2+ugDNf#;{_!pa^og z@Hf=4?Yjg(*ScIW8TZvC7>tRK6~}gHM${qqMa!OQ5#U8Y7OEr$IJQGISE$yAluZJ( zB1j%V2+Uqo;jGH2&8A*V7Mfnd@vIP%*UUKs?6d+bn2yjH;FW0zqlYw7gqhN1ts}B1 zf|!B21eWtx-viC^K%Buyk@~x!Flty@q5l=kGL&DCf;6<53({o(7x^*_jd_x?2?0TZ zf}wW$x$91wtxyvDTmWv!MfrKC(_u4`W}{J~(~=Q&T`tPW%L>giz-hN&&_7y^V<|n6 zX=X@hrytOIjVaT>YG@N}(CB@P5$FsoVK$m(&)Ws2N{xcq^X&gTze(a?7Se$S=23G~ z4Iiq2li|fyN3*9GY>SQp92$ujie}VIuwaZD0)WM$%iIHdV1_nS4j}12#KjCu7W_(x zmVmVkdh5T09uD=#)wG>41;5wI$ljb3pM}G^p$=mO3r=Ds5Ad+gNwA+~x*m+;^h0JYxmy8}uVd*-rS6e&!=hXGqY&k?6bAP_<@SWZbZ?1Z= zE!IX3C2je-E@32mz_qCM%jMVN`)}U*>5@A=E3Nsl9TzwKo@C28`0?c0jfbxOSdi1Q z`nG9UyQT5HN&o3H3j&ULokKhOYn$8pLKC-qhUb<2x5eh{BUdZ<50>`!JRZ(Cap$+? zRLe_et$g>=)Vj3^JI`ikREO~;p{ zeewu@?cKE6k-+$eYkD%ToZHM@+I5&6pM2R`dcI@jM_rDpd7=KPcZ{vY&t4fDn>-X2dr0nI!c8*RD1UDGp~8)AL)O%H|3;D*?-P&+WSpPhkagWYVNDaef7iT z8$36gcD-GDo0#~up)v9GuGQa~YNp#$TeP{;pDx<_N74>(R1C(N8@Z9czLDPWe!lw4 Nays1hlX+YB`~^G_bVdLG literal 0 HcmV?d00001 diff --git a/home/img/content-function-phone-img.png b/home/img/content-function-phone-img.png new file mode 100644 index 0000000000000000000000000000000000000000..573530c3fee77d7bc347f2af01a802caa352eacf GIT binary patch literal 2058 zcmbVNeQXnD7%#}j7#Rw}_*%w!gaNYaeYCx{mvwWrg;nTWwgPh`j{A7qo@;xzyW84< zV8VylMgXfKL>PY%5hdtEoDu~FV=yIr1PE~kK{t&-y?K{5o*nCwXZ4~5Yb!OxVs=Jdyc zPYyJwX)=T3(P-2dH5nx(fRlE+9VaN9qA-ZS)Vheq#;}MwHR-_xR9+EfO_U;t?vdrB z8qI-1rhO@d<&@iq+Ak9n43DugP8tb4r36smQ#iRs2_=FHJPtx23?iBev1AG>2PI8X zgVF19vT?IaSX_W}FIO zHA(SFQYcxdk|brs>C_8jLuM=zBZ3rFXWnH4T&xBhC`C|aSTc;DeI(5gc80ReB5Vvn z^g+FnAo}a>gW7x$XR$M8`W`6k8iCc={{;&?;peg4S9iD1**(Oai_Td2VR>3+`k&(`)NfzX zIBUq{j5M?&t-AnuHqFCtqQ$dAazAZ+{pZ|MoTI2`#g(5Flnjvb)_cukX4zJ${yCvyKiw zalO&ek&{16%^BS^W?s+n_4OGS^6S$pw~Z-Sb?)$1k890_)B9@a&8CL;Z!}N*X4G&9 z9QU_<+QD_v#I7}`ovt3exVp)|y{&S3`!)_cG7UnHukPHD758m#tJ*d5<1Mpn@tx=9 z7vncS=~*^vgXz|^_|!X-TC4Ujc0XDIW~9V+a`s6%KtHE;eri^$Gy@P-^zv4o|HR&ADs7^b=ORa z%a+u}mKJx#(N*osnm?G6@7l8Li-Wh11)iyR_p0|YcK*9Cx3IwR=4We$?`!PM=w05B zIb+YsDL*jRCRf(q@U|2=-@0Qw)8X0Q7G0oz-!b(3V#?M0*Wk*{#rw=DJ^y&3nSE}f T2j5h!f2}?4V%JBrm#q93y|B!` literal 0 HcmV?d00001 diff --git a/home/img/content-function-watch-img.png b/home/img/content-function-watch-img.png new file mode 100644 index 0000000000000000000000000000000000000000..8d05707f6674236d8ba074ed7572f0a20f902bd4 GIT binary patch literal 1845 zcmbVN3ry5z96y$+D8eE_e4wtYGm{;6ecVxK^XJPuRR3!az22JO`REAV&=vc_mJV@6q2zllQ3c?BugQwLLNl2XrW<#hsd?{AlWD>n z(Oa&UvxN*VOIA*hD}gmEDG+TkEzS)q9A6D|q!Lt#K?gc?;xvkgf&(qfWN}t;0>9{9 zr-IUTMP7bgHBSp@ZVs|I%s>Sa&^aV51%etAcAycx3|t%A7>Yz7dbI=1GYlf-Y%$`L zRe)q#DGN{7NhFK55)@98_6&r?i7X7y!U&rMCm5V!Y&0@y{k85xNjaNlQ7v&&gXyhv8THS#{ zPooqhC8jp0jfDvY3=4A#Mp$u!QUoaQF`QDX1|r4<9s>a&fuOEIED^&hep#0_zx+3< zW5;(GfT3mCn2me-B1th5nx4NF(ijWKJ<*!CP61d6(BxW`2l;EEoAV7e3gc7(r^~8W zmILF7Djs(kaXO8}WFrg9#GoLDwDj9#fQ!?C10`|N4pU~qDK9}WIL(mRW;~n0@hFs) z1<_Y`7c|=oadwzv;tnXR8iCWfe+3IXS^LVz! z4j@^(U>7VL!P_kqmr2@aLCB&CjL6x58Z0wNNr7>47GPH>>SQ33{o=(c#@5s1o%`~WKbhq{QuG})(zI2Gho!D#)L z(!-$tn9;UTD%jmDBWJg@_&6NS4PzM_Snwk@@<0&IITa4Hs^isPm`rh}J+3@&dHvuI z$Es8EQl1~a)Y$N3MpNH=?cbj*NIXA9j}s4#pWp^ZhjS$5~S+wl=Q6wF+5gUcKk3PU^5C zt?avS1Y8o`}ac{jcC+EeX-h(^wS}pwY0S0E(Od literal 0 HcmV?d00001 diff --git a/home/img/content-list-info-address-img.png b/home/img/content-list-info-address-img.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b5da9cc5d9a71973c111995081275e605b3aa7 GIT binary patch literal 503 zcmeAS@N?(olHy`uVBq!ia0vp^!ayv+!3-qzJ@BC??gY-&* z{DK*NvEJbR{vpfc>FrH(@}*y&IA5o zWrb}(ov%Gz977~7r}jUe)NH`hlG>cPYdQE?*0GhH?9AG%KiSkbLURfVV}@g~#$vbc?7PUj;gEW~-}VpXa$6kQOm!|UH2Hnp_33A8gAQ$)`(st+ljUO6kX|Do>dxH->_oR+upUox8eNPfn8{?%J& SL`4I=&EVSY>aY^W9D*1EnL1en4E|xV$Z!~f2IsGLUDphPzqsVxd-vYw zeZIfH*IDabWh_`!U@#brZkMAD&iBG`UtSJ;mzDka44m?1SEFh$+oH&(J+b#ybWDn;UPS-9Rvke zn*!Fhd3{{lM$XEk%aGH|VL<0z7ZXd7*4wJs28@YEu9 zNdZU&Mw>X&Od*w4jHC%GWquT)2(l6Jq*v1A%62PI8XgVNtn zr;o1_0A1_xq-ESxmvA^OLe-p`pcyHL+!U?)Vlu$%fGV{r9B^)eY8LC($c$Y9tR^Ww zNeaycs&-Cg#BSFEV?j#R3nDK?)Y5r(fP>Y54W$Um3`1rjXdg*4gq5KzWrT$xh*_vd z;)Uke4N!{@;><9{^mR~}H9V`a{|e?grdd+LEVNk&vjKq1VgN*w+_DE|X(K@ZN&g`)W?`z-tVLJ_R0p89 z{!8lNP=8!6+gVfa8?8*9%`5RaIP4qxGTpG?N4n(!5%xI+HngKdON|CYMzh;d?Q?Zr z8Xv~8))eMk?%lPmV@ttU-#6oVogM2u{ZAL15Dz~;gp76NE*L1PZ9s#Uv(P=0L9I}w zAEQTiH!j@XeeT@m)4kKLZ$9;5WXCc3mwR4WGxcer^9))&nmrPbJKml+%^HV(zpX6$ z$YRTA)>GueE6z+7{WhL|VB$FQX1u*Se*QvU{@(cZebYUCJFXapAGc*}mgl{WEv9=U`h7J7S5ttSes(ZrQuc_$B#6|LRZnn@7AS z&mKB8IcVQ^wbU73aHVDUr9;Q}7mh?v#%g|A{c=rd`wQRq_6_oXo{%yxJhy1(;?ig? YfAERi4~EXZs{eo7POszOil+9z0H?EGHUIzs literal 0 HcmV?d00001 diff --git a/home/img/content-list-info-top-house-img.png b/home/img/content-list-info-top-house-img.png new file mode 100644 index 0000000000000000000000000000000000000000..2081712f5b8583a7c841c35bc07bfa6446b3f9bf GIT binary patch literal 2103 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 literal 0 HcmV?d00001 diff --git a/home/img/content-list-num-img.png b/home/img/content-list-num-img.png new file mode 100644 index 0000000000000000000000000000000000000000..55f265b34c2be3a3c68859eddf827e1dbd974bde GIT binary patch literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAIR*HHxB_Wo%0S&GMjN0hq9s9o z!3^!?-!IP6mAaR^sxBcsP?+Q6{nabBtOynWD#-D4aSYKo|Ma3KUxNWhYhu)kCs(ZY z{Eolcp*^dLX+JM#{UNrX?6!^Zq2C1`^&FVY*6$LQAoW?H>!`GM_2IU8CcKfmezSJ7 zS-d*%SK*AjqNf~tf^@r3ri`4-39k=U{(R3GH!EbV5I$@XcK5y`7w6>%JEqzK?Pc(E L^>bP0l+XkKyvkXv literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-1.png b/home/img/content-list-type-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a30c32f1831c9e42caf9c377c96b02d7ca51ae GIT binary patch literal 649 zcmV;40(Sk0P)vrtg=;M4v1^xm3n*@{;8=-%+qyydZv+md4K$+6?9 zgXp=M`ta%U*vG8`Q2YP@00eYWPE!DYfPwRxR_6c!0rE*iK~z}7&DYzKn=lXrP$iij zMR#ug|6h&9$jDv?iAr`=+Ydvz{cuVM3|4RXL0_1$8jaOxtVUxs8mrM*js8h0_H-w2wJNLM2`{ph5%jQ`tgf<8kT-%NCoD;66(Tw<7I7gauHX!DM-rL2IDFO00 z;dTsi_8&51|O|#wDsrQueQdJi&D7aRqk!? z%JGJH&NV$30H&QQ-V;~z!ug;ZT*FI%)l@n0*2)Fhu1!YedN)GL^EP^_oOr=^PG+C$ z>|fz(UOA`Z2X4}u8(i_ObKc!}g>{m4%>B4af*R#Rg&HC9t& jH8oaKV>LBaQ&sx|=x{{$%Ud>%00000NkvXXu0mjf3~ETk literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-10.png b/home/img/content-list-type-10.png new file mode 100644 index 0000000000000000000000000000000000000000..a886876431dc972174df697a8604a73d6b692e87 GIT binary patch literal 583 zcmV-N0=WH&P)hSdV`up+q_|)L&ld#6k+T@zH z%G>4au*KDg5Jk`c000DZQchC~&=S7VmE zjeao<$IZ>6+jr2`n);lh`g|OeP%|8(X$%0~P%xCOFJGNgtA}mxf-%D|S2T}EfNgax z6*EULn3`?DX>>TzcEOppLyp(twv~t5`&n_UQ z%U!+WwH&dlU#+%yE@IU8%#POrqUr0OdX;CS7T(^wFGlkLBXJsA&U!iMa`P{f^E4(+ z^_@L}(OQ3=tai8ej`O@Gu}sJLzZSEPF|Bu$F~`nt=L|;AaV@QP<0#&%vm=k?m>c(* zBai232t3ysJmFM#9dnCjIhfsZ7PEQ`SCgK{k;ijbvizUpJy-u|Gxb7e=ws*c8II+e z_h{bX!S8YJJs#R0_1@)$>(!q0%d$kiYd)1kWHlwLDOpX)YD!j9vYL|Bl&q$j_5)Ec VLZL~nQ1Ji&002ovPDHLkV1g(BCA0tl literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-11.png b/home/img/content-list-type-11.png new file mode 100644 index 0000000000000000000000000000000000000000..273934075fc210dd74067a20cca818f22d41b6cc GIT binary patch literal 648 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 literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-16.png b/home/img/content-list-type-16.png new file mode 100644 index 0000000000000000000000000000000000000000..c38a14126a8a7e4f9f05f605ddd50b28d3ba8d5e GIT binary patch literal 1513 zcmeAS@N?(olHy`uVBq!ia0vp^c|fek!VDy>bq$v=FfglShD4M^`1)8S=jZArrsOB3 z>Q&?x0Oc7NZ0suv5|gu2OB9k)(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWU zl3bOYY?-2DZ>L~WVFffGH?<^Dp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRdNJbs1V^B zpx~Tel&WB=XQrEMXkw&bZmDNzW?*S#qN8ABU}&yyV6JaytZQIsWngAyY^eYRNh+i#(Mch>H3D2mX`VkM*2oZxptE;7fp{b>bn}LCek*l$#i3LorOMY@`Zfaf$Om7N8uL(}QpyZHS z0JPa9wJ5VJHN~wcKUV?lZL3V&ZZX7Z9#n4%ZnqfW)TkrMZlyjyU%kEFk48LxJHx&=ckpFCl;kLKvJ-0Zeltxb`n!63s0un02QeO z_=LE+7x?t7J|r2M^8f#TAmiMvCokT8T6^fy-0i1;g1gV$JaXxt!6p$GpnB$#AirRS zh6Wwq`&$_pn4~;i978;g@143o@3w)!v6gLlIe0}AX z?eRlED4ccOy4GuR&;Kl1&7t+ZP)S<+#L?jGr@ZHXeqwa*aGa?86=RhhYu}i!^Zd~i z^jkIDYpdMz)3$z>iaw<82#Hwdpz4u2!GC|5tNmX* z2iuJ|w=bV=#WFW?rU!FccQPqP+IQn+|}1UPxlV|5)dOjd;0fCoyB*q z%rZa0xpaxqKOw`r+oW&Gz1q0P=7`{vyBp3=-k+quNp`<)rF9s)Ltd%uuk0kl=fXK% z7k5ePxqqK#{qwho|K{I%&&|{CgdSkLwPDW6`B9%9Tdq3dZFP9xwwOE7dh6EiSKsiQ zgKtx9Pr@6Svu{^dyjW4CcH?%>Hf7yh0_%GrY~GiQ&?x0Oc7NZ0suv5|gu2OB9k)(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWU zl3bOYY?-2DZ>L~WVFffGH?<^Dp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRdNJbs1V^B zpx~Tel&WB=XQrEMXkw&bZmDNzW?*S#qN8ABU}&yyV6JaytZQIsWngAyY^eYRNh+i#(Mch>H3D2mX`VkM*2oZxptE;22xuL6tshg9Ti;krMZlzO?A!SRm@OnrTq8#e9Pv5fLr~Ef4+ZtzH8yfYbRze?N|X+&r}lR z7tGKwTiZ_p$g%KraSZV|zIU2+{%r$+<2UmIekjN2I&R$FA+{=Gv&j|7)YTmq&pNeA z%(N;kzoXRPeyCw~U{Pb))cpzlSGrA}*cCbOPdIS>{l9V**RGAX;tqDNIe4?-*!}>y zj!zC#*caIdJbn26(|hyMhn#NPqkb!y{qVcznYBCk>K4iHC)<{Dm5I1+4_L#qZ}Rp# zx75_^yR+*$YU8f+rQfu^**rg$-)8sviluFNmL`8pBjj4{Pfoe~$?cm(NZ$&b&@7Li z7tgrIYd`7le13u>oHyTZ-^t@^-RI~FdY+b@lU;r3lcPa%W#s2& zf0VkO*gT$`{V_RPr0Atq*st%IF;Di|95`|L^ZE0OR#ikyd$`QJuIIDc^UB>9pDE>k zZeMNN&i%PPd-2Cbr2^~tMe7gUoA~}<>(}Z%*M6!z30*KPpIy}caGbl$uD|(g0aK3s zidG8Xnu=@p52q{?<|E%wrizQbb|M~@(q8L0~{an^LB{Ts5 D$ns&k literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-18.png b/home/img/content-list-type-18.png new file mode 100644 index 0000000000000000000000000000000000000000..83ececc6109dde5c7eb9b94e3fb19a56755b2d57 GIT binary patch literal 1290 zcmeAS@N?(olHy`uVBq!ia0vp^c|fek!VDy>bq$v=FfglShD4M^`1)8S=jZArrsOB3 z>Q&?x0Oc7NZ0suv5|gu2OB9k)(=+pImEP~(ucVNfVyhHx>TBRz;GCL~=}}db8eHWU zl3bOYY?-2DZ>L~WVFffGH?<^Dp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRdNJbs1V^B zpx~Tel&WB=XQrEMXkw&bZmDNzW?*S#qN8ABU}&yyV6JaytZQIsWngAyY^eYRNh+i#(Mch>H3D2mX`VkM*2oZxptE+{Pv!$!4rIUq`iLs-pn=wqUOMY@`Zfaf$Om7N8uLVxMpyZHS z0JPa9wJ5VJHN~wcKUV?lZL3V&ZZXAa9#n4%Znv1>)TkrMZl!(@%ZH|V78Dfag8Vm&QB{TPb^AhfTUp0+{AQX>?EdC7M@JC0VOQ+s0Y&H;ZH8;KBP!%A+8nJ+>VF|;{9Sqvf?Bg|W3kf+s(#$JMOaCzA zaOB!J7rT2mR!SJ2GI+P7uhEL_mBfnV1$}Q{=UrB=*W2lE{b#`8^=^OvPMq$Ycd78< zVy_2>E^b|$lY6c2_3wYhle^uHFFpBj?y(tfKW~4y^rZWVqi1_8MMKxGo^ZNv=cTJN z+wbJOo3t~hIlJZC)2rDrYj*d2R(Q4hW%Ik-6{dREMAzl3U3HxMSvBo`WZ(MNd1mIX zOYYCLSQ!>}F)O}H>&X{}qRnmla^9Ued|dU3mG0j-iB}bQ=YM|{?CpPDlwEtwY2l-N zPn0ra#V4Kpbu##y;C1nBbJ`!*M(_BiS~PjW?!T|TYwdnt{Jj5Q{k-NEJGtk7ezBM7 ze)5aGocAxk{FwcS{mDH;zKen@lmpxs^f|~jS}~QHyoh@sF=eYQ`z(E6@G^M1`njxg HN@xNA*QVpY literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-19.png b/home/img/content-list-type-19.png new file mode 100644 index 0000000000000000000000000000000000000000..2a625423b80ca3c638fa8f2a23d43b33aebac867 GIT binary patch literal 1657 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 literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-23.png b/home/img/content-list-type-23.png new file mode 100644 index 0000000000000000000000000000000000000000..d10f697f9fa624b4aa0dbef08460ee1866afafb5 GIT binary patch literal 1556 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 KT-G@yGywp;oG2y$ literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-27.png b/home/img/content-list-type-27.png new file mode 100644 index 0000000000000000000000000000000000000000..787df6aca7e95d15cea0ff14b682aeb2d84724c4 GIT binary patch literal 1540 zcmaJ=eNfYO7|zBNb%S~5JSRF9>lB@9(=>(B*y2fBut-^jinu8lnh3Er2}!U8#c>Gi z*v+qrh_t9f^xVX5dOMX>PA5*SUreX-b910D#{>s5-8q5%iopD1n7jPG@;uM`{@(XV zi8&!QXjI532!eu)bM%Q|X22_ZB>;>wrD!z-1x%$aDPoE#9=Eb~89}n?l+0=8z;_7J z%yM#s)kcYMI+Z~)TFC?NQ3*_wTFHWNlibAVs7!iJE>9)pCRnVwHmjPH%!-0FP8 zDUpDk_T`L#JGGKNT^y|a$A|>(gNQb*WVSyboMJM=I+my4a9M=ZiYgVbN-aYprFfz~rau=Dna7r0r@_>S#60AJUi8RZ=enldk%@(y1km<84*ttPjM(8gSC>Y`- zI0Ti+{Z|?QnoKW-+U&`@89^i%D`nJcB|t?+(2C^Cj;?Qq|< zaeC-n^h4_PbIBod!3;xk5s(bxZ|-x=9ykIH@-GLi3pRu1rx@UP9$4EPUr_>ni}9i% zMNDFsiVlLOpl1#?+KCL%9fHis@=+Q93Ny!B46$7NLLs-ex0hU1P*%OC?&RsF<`&t! z53-6sEhyc3@#^)x2W$WA>^$$OLjmPwF)<+t%6H93coS?eqkgt!&Z)Z14eK|VN1saT z4H(nAX8)9*nlE3Ecq6x<;@;*@d?D{I88Hvpc4W)>sjd5J0{uj8P^cT&fxIY>zYmT4D3w6Y*$upCZg17QhuD+UcE49`a?YZ%E z{Jx%4&$h2c%1H;-ah`JK%=O=Z32jL$`EvR!G{)I?4=hG{Y57^Tn95R`S0 z;ic-EUmg}7&aXzgwl6E({uZZrav&~bk#|LSY{%Mz>H|OIkN9!ejfHD$u^DNqPDP?; z)w@Lo-^3<mzFM<6CWW+pZlyv|;$k$=&x5 z_x!e~?^{i>U4e}qP}iiEmJo0EH_O(m%7Z6{rQYEKDvG9)*DAMs_D}wy-5=k1smeth z+0b#}a&p?^M|^2^D<*9a<4&HflFbM|{?V1iQ6=?PHco(7Z*&jO$*;^y&gv+`_CVCz z?&;W+`}b|$rx~g4z_xM6d}Xfa9knixQ20gbTw$yxypBbW>~EBmE{aRf$S(9+tMJ3O ze;@r0y6D%gK(nge;;C?n=Sqs#R^HqDTCz8&c~x!MgQ()bbGvjcaL?`9v)dltT3M90 zKI?($kv8veUD(P~ciTH6*SVLR8M*tpVcOjuDEixdfnQrfX<#PEXh_g|qL&o>3nbcD A$C!D0nh*)w*3IpptBM3Bjxc2?>E<5}1%m99v6B7KpIfZL&bXRsj!= zrXF=fylBgzMJx`AwrWd@ARZi2aqt#3DlJy32wE$aZV=GvlJ`z5g>@qhIt%5!u1Cb z4jcq=f*?46#eq={4-Mc0BNs?VGwKpirC2f&i=GLJtJ)&KFHUdJ5gDfW!yLIBl^RTx#-PQdVgX32u=RQ!$`wk4!oYAi z2nh&-;qY)_7zY+1VLZN&2P0yxWRxo=v}rhIphmg6H(X>~uFVcONkC8yXtw%w78MOzpGo zuDjplUE8cV5)<>}N^|##(px2&y=`?BjQB{JGLcd$Vj0=H7b@K8Nt;wGR7IXSU39_F z5jwr;W>9F4SL$IgJ0vagU?cyk*Md`c>&(i#u5L^173HiX!=AlGg(+bTg0HuJ&n$H; zDZD!HSF~qbB;~_A9H8i2vi4=G8E?K=<2bFrlJLl@K3L{lJi{)rG1~)mnqHlF zx-G7JZU?liDH#sSx2D`ExZJZP;r>`#gJpZ?$nLb{O$a^0+@8-hJHbt>3r{))BRS7D*sp@Q%KY`606Sd%$aM}ef7a}s3ev-rO?fT*IVDXX?^W?KR%iB*iPME zb4qvXcIUAw<_6y%aBfPT53xp*zAjB@$#Y@B%PXc^>kb@ND^?X0lg+!Q)_01W{inK0 zoC@o*tCwN*ubiUaQMgJ5T(YdF)z#|KU%n?*c|E9MjYo&e<)N&bCTG!9Ovoe5TzR{QRwea?`EE5y}d@wxv1M&6CX literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-29.png b/home/img/content-list-type-29.png new file mode 100644 index 0000000000000000000000000000000000000000..f63a6d1617eaf9d65d7ad9e3569e8b1b839c7fb0 GIT binary patch literal 1395 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 literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-32.png b/home/img/content-list-type-32.png new file mode 100644 index 0000000000000000000000000000000000000000..843cc7723f12a25b4a93db3c5799295a639100e4 GIT binary patch literal 2547 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 literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-35.png b/home/img/content-list-type-35.png new file mode 100644 index 0000000000000000000000000000000000000000..9ced12f6bc71ddb243aa1d52affee0523c09ca05 GIT binary patch literal 587 zcmV-R0<`^!P)&$e8)|f$_niT+!<5T&yT0YoW^9qILl*dxyYDPy?23&s|9&^F)7%tAE!-d zl$qVYf;s?k^|t49dLpi$>PK~F&SDo{K4on|oLjQan1i;Ll-^au)!7U;5i)0d;E+Di z{&1dKpA(@8^)tko#3axnzG78h_8(Sr`!;Z4`$b#5g>vViEzbERy18@0^42`$1@F66 z0k7P(=v?}eb5MHjiqCoJy&}HHr1z%yo?afmDSipLZ!%7zQ$n2*>XcBYggPbEDWOgU Z-5b@NsBRZW2qORh002ovPDHLkV1kzI9t8jZ literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-36.png b/home/img/content-list-type-36.png new file mode 100644 index 0000000000000000000000000000000000000000..c3850c793f6d3222157d2e01262669d30618f41f GIT binary patch literal 604 zcmV-i0;BzjP)Yz~vZ@P)zYX0|A&s*mc^zFBYYCZE(`Bz7uy^DzeNMy!gW^tFY4;pkJ1=@3b=em9vzWU`?Qb zgG%c-X(}(d2RgIHmxvoBUv=;-^ImiHIP>CkjC>byh|mOp1F?`S9T!`w9dACD*C!hrzd~CZ<*um2fdwP<7n&0dkzDI zdQ~S%5qU=1OnNIcCanJ`+L-COF8xRyY^}S^b-wjnX+FnV&&}p@`s?ivwcm~0uQskl qCmMC4Q70O8qEROrb)r!xitaD|v!#w_IjM#K0000yu{ literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-37.png b/home/img/content-list-type-37.png new file mode 100644 index 0000000000000000000000000000000000000000..99d2fb9b1bf11121d73d663b1c0e89b69a8798f5 GIT binary patch literal 694 zcmV;n0!jUeP)MqX00eYWPE!DYfPwRxR_6c!0z*ke zK~zY`&6dlt+#nD|aXE&!cM{HkK?*>P2msIv0Er1e%xLYMvvoHg3C*Wm<;TJ-R1%-V z<N0}o((RaC%-Vy?O_Cev zK#8c#6wHvv;&G^|w|p){+LJG6vQIlLqtjtv<18$5die@rI0*B4c1*RBm$_ zBWldYVerr=Z{lv~3+mg#YmC~q?It#|F=39F*+5Te?epZXkls6V#Z(ruaw(p=go%59Ib(KjF!rK11@rTu+;JsIbRf)xn)Un^bN1%@fzh^?F)VzzHKwxo>`g5P$KrX&7zIPWiilA=rrPkcH?gEv(G5=NSY;XUpgzvkCxi!qOpHx`}~MGRcZI&_x9 z#IGY?C?|v$76ViV_aSW&CS@XNRzlqIAW8FT!(U*E97$`Kd`gq@vrfG!7w0@ZWz6y> zrT-s4m`1<5RzKfHSAkX+lSbF1R+qMaF2Aw-YJ>UF1k*qaYa@oW5yRSuVQs{)Hey&C cF)WJt1BLu8ET_LMBme*a07*qoM6N<$f&+^`L;wH) literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-38.png b/home/img/content-list-type-38.png new file mode 100644 index 0000000000000000000000000000000000000000..0bab82b690d45c4f6e918cc2cf295bb13fbae514 GIT binary patch literal 759 zcmVoyJl zL;&w1$@~7e;v1!h36M>gF4&R#5T&+R)YIKA|BQ{>d{O`|E51?rj-LCM{GJ)MKV_dt zIw#RXzL~$H z|9(b!Og`8|E*gH_vCXw{EXv^Q{2l$@TGS<77A(r>xO#RgS`xfP^ z$i-y?d%`evAxR&t-}?N^t~@bJ55!M&jP<*1ty;!iQb^SG_ z;PBTt{yrH&&x~N>C!;>w>}k}t{u@(J@ecVRmwt-Y$qjA;F$pX*C*z8q-M{SBVgKVJ zd0*qB_+`t#ntQz5xA^Sr{`nvFZ`Jcd`TSBnKb6mK)$a%8@0Wj%uNYqx`R8i9ioB*M puPMrFit?JGyrw9xDavcP{9k0y+`dr#3%>vW002ovPDHLkV1f)nfZzZC literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-39.png b/home/img/content-list-type-39.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5001ed8f1c0296290e95da3f49bd8ede04f2b3 GIT binary patch literal 827 zcmV-B1H}A^P)(n{fB00004bW%=J0Dypj^O{!Y z0008QNklFYV;)sEBF^@e!Uec@| zmna%!?SJKdQfzQ|DW{l0OtlAC&^pDC(=^S-Uxa)XFsb`1ISz~26cfZ00^Zt(b^8pU zGXTaIt?hWgzd(YSCJyOxy!6T~RodNBIV zd?yX%(qrH>U~o|1aDu8Id3!LGF=p#AgP1NWO79K85@hBv3MLqPNq|NjfHxYwxgHJ9 zvzEMZ`F1l{vLF7DS&Vva+b6W6#b>$_243gT1k6}7PoP)M!ur_UOH5H=>Y8zHZ9RBQ zTvVmYpy#ZB6)TL5y=E!qgf}(YW5Z?BROoJrdyNssRAd;68(eWeV6LVZz+^2(Ag{8;WvB1Gaj8~(NNQ4mgpqrPVRP6qwzktWB!$h3yg7JG zhZfJ_qEX1y-JL2?^hdVN*@oIfKWSU;v|7hB<}Af!+p-wjZa|hNLhSG$$r3)qB#xLQj+i8lm?VyvB#xLQj+n%X`2#6PJL2>fS&jez002ovPDHLk FV1nsJiBA9k literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-4.png b/home/img/content-list-type-4.png new file mode 100644 index 0000000000000000000000000000000000000000..9785766810d786b1cc40391677311b421348314b GIT binary patch literal 938 zcmV;b16BNqP)~^ul8C7ILnzNF>&g}E{!`kC#s=oI5`&FX2;_dOD#?#H= z=(p6~g}BKGO1|;{000AYQchCm%z~)PpdaenG!u)OiABxCqGn=IGqI?dSkyBMh1^ceuHIz4 z`dis;yEi!F+DX=WfO*V|!F3gk8h`4)jk@(E)k{NPmD3^vt-2FB`|l=?xH7_bXLOYDtP|nuU*+phmrNE zI$S%+4d(SD$z_=+AP{j}kDys}hZ$K8W;wJSJY$Xff^q(eL%5527=jiUE%~HsgLer_ zudT9JkAuWBr)lzv^$SM7QhfE`IrE{xM2f^J+{!w8UiniTJ=Sr|&BMad>o|B8!Mype zB&=4-LLo0LgOhc-lT!uQZ=T65G9h(q%nOXJ3e8FW zWg#F%Wdl~?#zXabVzH^;OD_8cdNZ)q>Q69Vo)HTb0Nz?OZOZAcP){uD)w*>k!Y? z;IZna9oQe1_OoZaugEqLPuE9P;O$2P$8t^3MJZFa8#eQX`=;lyx0C$n84btz%Q*nX zssky0UfQp0Q|+&S%lsL}0NkIoq5Q>dr!(=D zZDX`;rt)eguhIU$e!cW_`F_pBvdqM?%*3+H#Inr9vdqM?%*3+H#Igv>Z?<(!S7QxOR{#J2 M07*qoM6N<$g8Q4&YXATM literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-40.png b/home/img/content-list-type-40.png new file mode 100644 index 0000000000000000000000000000000000000000..009f7e6bddaa910a829f2362bd1c7c958e0b8221 GIT binary patch literal 926 zcmV;P17ZA$P)A$JC3;A{c0007XQchCJOBK@|Ghh(VW@Zk&xwv=Y-qtePYmc0 z1A4@O9x+q$JB)N@>H;H#6f$cu9#Ih^h9^n>JBcGg=*)_vbMRFoRhZTpUN0Dh z%|d1hW0x{&fno9)(M);n;w|5lVs<->nx^Tw!eFK_IFeu_^2wV)k{!5N*1#Ua@zf~T z@5#rQ!gSNbtI%vQyjo&J=SU8vwTaWfL=3rI$1H0G2fXQQs~jo&1?m-?; zZ-EWGK2P15ix`$=*}lRkF=2VUg;x5++$7Xj-YJh!h3`P%LOO!L40|bQSiSIjqS;g! zCB`RK;GlqP-!Ey1wtgu;fJd_fnx%*t+ttj;>fwR71Q@To|9PV(t$L?=W`-(|Hq8bI$XxXf#F|=haQKido9B z0P1Skf7F{OGx^M}Qdv1^92Ip1t21>c$KqHxS7KRGw(iaB#2k`QfHO7u^CgXai;BVw zaG@Nom!B2Ip^Y686IE;8eDciT8fGXsCp4`X=|8y`Y!dU@QQ4X|a$TH}d;!0{K?@^a@>WiV60LUS-N%LTZw{il~%*oM>-GEpWciWbFCk`sN zDqc4*d2M@Gi&nM1-?Vc0#So?9R)QHkf*IQaj*~{{)c{|5?$b=fJG!!o0&M*hLp^LS zy1h6o)LtBj-FFKYRThi3vxc=j`1Z<{{{MVnG=1)LeS9??1#}%uG#!(49oqgmeqemp zgL$b1qd|?8vp@riAw9-rA63{Py$Zw3+hR%(GBX>A$He>8W}E0007XQchCrL%o6j?{rx-5g?iR+=syjTd?s_@@QZ2lU z@Uwk*`0*qIwFz2Oww(&Yo%!PoQi6@^s9Ah25iLNB5k<}Dpo>8&Fv6LK z6Sw2~aiaOY-?8!1R_#OHVusQ9oG$K%8U;-Q&@C=zzrs{uy3cD36h6~XXFD<5xW(Xj zuNC>5)b}&k&~QH~&eiLDmL@P&n0DVo=wc_T@rFKEW0ijn`Bvbx%e zOEWEwZwKstwe%J3h_+FB0R2sO1B&2u3R+8T7@j+E5yQ5>B`}p3uW1&v=4^0GyX+JD zLlt@xObT8bOiQi5ad5?4ud`uGV1yWBl*LX46Y`Zsxx!HY4fQ?5^z3B(%^xM8HuQRY z3vd!3rWNfA%q)R_z%@&$Yi2+wG^lmvz$)I2NxLAVd6v}bdUr4d^9V=KJ56Bbr>P7s z*D+>MW*CckgE<1RZ5>B(?zMI54f_^gOrOCxjPj|=eZm}M8fM-Yc5?(ZdoW7Y@OR`w zue*qupGpeG7U&!kgTPeY)P~lTQ5>Pse33Z0&lWLrITY5d5@Wa`=reCZ-!dk4;_*>0 z2y--hF;XjYjM^wMYEuM#=FOyUt&z6rByjw2=>@vYv)Duz4wljnF>B`~=Clg>%$qN& zWnu+Dl`$E5iN@06nZrO~d=qd?%nC->ew;V#T%0*Y4*qxWz(_BiU}kc(bmDBWDq-`3 ziqSGzJV4DjMoTYrHU$dUbud$xPk1TE*pI1sM?PcLpyC}ZO?bCh6E_vRiIHY-{NYkf zbI(nd>kXG<5Mtx1S0vXQ)Zy{b$Cw`LMz=#kix!yaxlUOb@H=#&h<4uc<+n4qVa3=N z#a8W#T5Ph8bv#slu!q32Oe^cPv9nOp|DOkpq{p4Chp(hp0a-65l3tT!y|n#v`-SbN z9Ly^z7ztt&Ibsw!ViY-I6ggrPIbsw!ViYdsFRP!@Z$CDUQvd(}07*qoM6N<$g3O1- A^Z)<= literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-43.png b/home/img/content-list-type-43.png new file mode 100644 index 0000000000000000000000000000000000000000..75a9975a3798ad2f62ed13f44135d2c9f90b88b3 GIT binary patch literal 779 zcmV+m1N8ifP)=oBLDyY*tCc3-pu##=i9_AhPx5N-H73C#Beua_>Gtt|K9tq_;4NeX8s>r zY)|>%YJjm~#5)hBR}6IhZ&{iV$*`TS1{j-}3i1Ld^rS|Ql3*gIiD6yKRsG`*=9-!F z2c%+?LKmkPVv1iYF5h%Wg;^@%^bTfV({hFyLdHX@04GRnKcT)w9@k>EPqQh(D*_X} zG?;-+!M2U1AIvzZVWf!EU`LSt6ggeseLu)c62PZ8N69KzmBa7BwF*my@)7B~)3QW47&v;QJA1g#Vx|sKvJ~vFP{ZMWr){P8* zy~W@TFoltudb#E%n2F>fSl6J?Vw0l%_!%2c6GUq;WQW1n+$?jEG|+~CT~(`da~zi+ zVPvNrT}Ts?dpy$ZN`F>&;o z%wHH#v-zpX5IO(=002ov JPDHLkV1hrmY3Kj| literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-44.png b/home/img/content-list-type-44.png new file mode 100644 index 0000000000000000000000000000000000000000..ca279e90194803e0157037dc8fc77c34842daffd GIT binary patch literal 978 zcmV;@11_T}B{#lROm0@f&#j2-iRgOCUg5LYx_ANo3S5J=3boFnZKw>74esEaTrL z^*z2WUB6%My@8;esctk2@1oF<{CMuolMu_&aSQ$=Mv8UE2U0&Sif&1Gn32?G7=67?L6?#G5NVge07w0_5BNF@wA6Jr|tcCmpyc(D@LH z5i?YVCIbrcV2J8&5HN6(SYu`dUS`;~3uT=F(cPHFjFo9Sm@VA8E{;Lrl&6_Q6tAUPO-4^Rj#$E6gqgl7Sr)Us-@i#IX6f#_SnbNR6?B zY|?B+W&4w?f-f-dliCQ0k6oW+vHalG-hu#<)AT;7hceb%4Ooss|AC$$CPzZ zV_})Nd>*O#{uJYJ-f*6;_%UMICFF=fgN5~W1t-Hy5zG@NSdYb2z3&=kOv={t9Yly} z7zAnzDkIAl!U5x@C%T5YL@Qpy{K$%iV^YpEf1N1b0OfYPTPPQO#@?H0-%nJtY@_VA zKU3dpY_kzV;@OAwrmg7LOHNr`qG9@_v%}TpJYHe8AyXJE1V6rEKOpglsWV$_cTFXN zBMz&{l@D(6USsm$QUDE>zgi3+vJsP4&`7tfE*@f?I7~925^F;@xCeav0s^2}A7I9P zqNzsAgZ^1xVpWa07&eM0sd|$##>*t>4p#Ue=aCwreFIQ{L`}|T#+4C{6~+!aH<92x zTiMOF4du=Krk6v5?LG$o2NLRFtxbTK_6=@HKDMzIC%;(|R;qZ+u5F^9`Z6ol$6nnP z?w@ukzkB@j72ey0YP-NYx1-hYU~zp*|7$)lhCX+uKE8&I0;UcohK@<54sE|3|6zPH zgSl-4V?c~$MvP@fjAcfQWk!r;MvP@fjMaOCSC;Z5;l;|P|=3_D#Mh3&kU>F$;BZI!o{eYM)%!e0y zfNRA3)*SEp@!V|XV@8>VYUcLG!#DL-Tq6)>=9E}W>|?Aqr$#VGv-37%`*FHpWK(t+F=jKBS7R`410NF92Dr5=1#QtH6m0RGFgFU_==6A^7URg2jqWF!%~94s z^}x%6C^OA>vf;JlY%J#MgxNuy8U>a{OgYyh|G%1G>tXzCK2MlR#)WE&HDMlB=5m2}Y97qOp>t3w#N9&|_TK>UC~XI3RyTvjW8 z!ToGp9k!udbYq?xhz&&yIXsC0|B{WXLm1A)T*NN`*Bo&J)c6muI9sW+Y@7yUOxlk& zNyVJ)?EVr@g+e+Jrz@4sBfi}zQZ);{3SRd$h@oUoK4eJ^?GCQIE=Ff7JKMGtM(sog z>it&5qL+Nh$lkSi2V-@L4ZYNB($D3yuDs(ImTKR78tgt@8_ew=w)Fqw1{3IZ7wYC4 z=usflgGr#rq)-oS|2%%t_!$QCB?u;fOcX{Y3L_JRk%_{{L}6s2Ffx&n`3;HKLPMlk RJr)1}002ovPDHLkV1ly)bzcAg literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-46.png b/home/img/content-list-type-46.png new file mode 100644 index 0000000000000000000000000000000000000000..8f973a6d82903200dca6fda2481e5dd64aa005b0 GIT binary patch literal 594 zcmV-Y0K>W{WFRkZVK<2ob-RO`+7S~Y9(SV-m^xtUfT;tf4$gGXC4iT7Mk#xd^Dfua#XEqp z9ifnBFvdL855b#uxrWZy@SSfK`71yg0U%;PPm7?BYw8X&h-oltngVyAVG=lZ(!(`$ zipG9qX^=fxOERfBIP`E$T@m?7{e1uvkWtO4o;XLXzv4x?{l2_((@bH4pJnx~!?kkv z0_h4}oA1q1Qq&4DNip#1r+-|#R22G|Yr7Of3X>9=t@m*tjfu4}r^I$kWgNMi{Vg(t z+_p7!&-2jH#i6_FigPKMUcr4)aMhQrEw|TMmiBY)IMXcjskRK7(sGnPNRwW!E&QRu zetC+M@}dy>xweo7Z)QhMQP~|L$Eo4GTh6D2P;mwIZDkTyl!JBVf-B|~r)h#1;n*Fj zYsbl5#o-LLhzr+^F03ONR`c5u(B&RO4{70gy1cM%9p{!G$mC!(TPjMK^se`Y&|lJJ zRo9_>wAbyro^n34Fa66t$lZ6@`#kqtVV`5%bCZ2eU*F!Ty)n6a9>>uMrcN+*f~gZs gonYz&QzxA67rK$9Ux-pJ_y7O^07*qoM6N<$f;Yk%r2qf` literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-5.png b/home/img/content-list-type-5.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8f5ec79c07cf3171b8dcc4e5b87d94cc5832fd GIT binary patch literal 1029 zcmV+g1p51lP)PzlpRr@zXHokxG95p>9 zFezB)QN;IUk|?r!9{`?u?~*+-7EoO6IWz1CgDR5cpt%XARSUBCp1{8LWibA_OgrR< zWir?md9_H$ZCn&B#iC`U1wnqjw1+bd>n|_?{sT-vjMhpNkI-;+J*?yy z9B>&mw=G!p#bX&jUSOVRdSsYphS3P(4nq`lZncPfMX?W%l4h8S>`?Z$B7s=F8Zh+= zbElb|Riqil1;{&0VG51`Z~XfinZ20UvcvOkP83d%ydT@91}x0?8|Cb5HxrCY2<}5< zlx#`hE_d;e#uj>99w7{1GX1_kLR>b-(qVMqRr>(b05kQ(=u(4;I#wM0f((3L+}|+q zU=AiK?)l;B4g=P4ng@axpJ2pL9!~`Zq%1$)-G-%Xas0(&r%~PSP7~`>ue+Q7AGImg zPN~DRnv^w)yV#fE$R;(hSXAnpx{tDp01P`8H7Ti)UsYi~TiEsyciiS>g z`UTfxuEXIjHCj%4)9?YK7mDrnIgQOVec52s*0(K~GZn>lJ1!@kgKqsf`#w(`I#;`a z!!=Bqrt*xlVKeW{X$pMc&bS}zq^_pN<2qxGeF0iF z^^jmr7ZXPsc)VpN#<$Hr(s}4YxRRe&gAIXQHrCiVYd8CrIp1>~?kEqhl+wZko%nyP zt>=V3@=$50nY3-=1MlBMeEWBMF8#_Jl+Io8oR{7!;(JVbZ;J2f@7q7JcOmyz#!2Lq pP)-Tulu%9y<&;oP3FVZR`vf$BrhI7Uu4VuL002ovPDHLkV1h-TCSd>o literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-6.png b/home/img/content-list-type-6.png new file mode 100644 index 0000000000000000000000000000000000000000..cbda8f8811c89025ae71f614a350e0184ddc9b49 GIT binary patch literal 612 zcmV-q0-ODbP)H}nSm0luHU6Yq{>EW{OjD$W?Yrg5LN1EL)e?SNd`ep|-ehgLb%{&wfD z{K5&o7QBwR)UMZ+zn34l9?P$rJolYfVI9Y3V>q@*Y0Qjz*}%TZ=P6a?n~IxJp6kE| z^utDwWqw^I%&Qwio=z6>>hm)D}`_g~e2dVomd7r1AE97&GdTx@>>3@%( y7(a;I7aB*gV?;Yfv|~g&Mzmu@J4Uo)-tG^<=>rTd?Pk6J0000zyUptG^pmj0u*KE!_4t~$ z%FWv3ztG*c4YMi$000DZQchC~&RZ0FRBlBbt3^i@Y(_`=Km9i8n3S63HW|v4VQHE*HoOz6@rSpiP z%Q!V~MFs&*icSbOU4VTMl(H?bf|Ja2rcHJU2_m*V(>Kj+A-NvBL|#<}VSq*EG&e0O zVuFM;;@vM}W1hjQlgrF5WstJf6fl&)-1c5|ya!OYNK+*k0Qw93kPa>nMlhDO&VdbD zGISot#)lYCs(z3;rKPYq4^{>-N9N8tg0pf7mY0&ceenvBkxb@~m?@D3{)b<`g4D>AnqraUsUO{XYX;^m5TBZ(SV*aS-#ng)6l$vwIWxkJ1l|iuXNoK4CxlAiYp2?h$@~5>F zrhe1(-rQpY;v}=MX^|nDw`4kO3In>`vNf+KkVb50nb~GcdxL*VMs~*cHARtXiRVXi zk*4*Ha!h;aN0}Qtcb8dK;6(9Iy4;xtKcs24nPXs>4C6Z)6v3DFr3Mxf{d+S_WV4b1 z!n`_79SfOQ&eg>0G_7oODJ*S?GO%wuPU-0vaqTT;-b&L>4+q;ms(jvN-^bfys|WwR zUWx4WvS_c@X#bzTo!`gj*~#VD$>rF|<=DyP*vaMC$>rF|<=DyP7%u++uZ~^gdKj8r P00000NkvXXu0mjfi}bJ$ literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-8.png b/home/img/content-list-type-8.png new file mode 100644 index 0000000000000000000000000000000000000000..a91c5bfd361dfa679c01151d24b5055420b20199 GIT binary patch literal 857 zcmV-f1E&0mP)uUIu40xCt{ha$3@(J8S~EhQ9v zXqM+LG=CT|^WX1a`gIYwB13$RjL+a3^vMrPS<JAq$t%XjSlcSr!gpO zY}_qXHYOc%a3ze!v4L)2dMpMo9PgI+2BTp(u7~5@)z`CH0g@=yCS&G;m+G--FtM5s z!Shyqfmt93_yFI}YI$7a>m#=m(W4BT^~|y}%RayLjE?CW1j@1qJfxmat;dg8luC8% z=Q$mqIH_G`&q&jS3BYx{%+upj5k{76YGK;-W#3Ozisu|=_;M!fJWli_TPB%CvK$t9 zE5a;%H04;sbk{lq%?-{{1x(T$?FCS$_|TN~*EV(6U5(PRs_z+r6^J%&mb?W%s5k^9rcQ9Et-7Ponw9!}(mXOYDRl;;=Qe~LtB}}l}=?QzgBcz${?n^J(Y_J+8 z)3h*r^M2bV4+!ON77Lx$XROtH_lC~ZF8KY;jWWZ~s$REA2>>C_B*W)wXbb533MruX z2(toWYhW@>3lozR@ldO|@{DwVz03hScMw#wV( z?7z_6u*KEQ+TiJPB3Vg&a5V}LY=oiygqqZ8g)u^pTZ8d7EQB^Zxpd5M7 zK7Jf&7b})>2IdQ{IyS+249M{(L)$P`#YgxHuA)uoiJV!2UO!!CentwHw;l1&#c<^A zH3zue@g;Mz&z2LE97|f!VlJiSB}n>dGxutdDRmx<2?)mMwh4hX=E&V?vuZQ@UGEBK zz=dNxlh^ljkvomXMe_->DZMjJ+vAL8LNGbmW)=uD=^k#`SNs`wqtQI;SqC}%D+IgH zGyQY4K^F#zPExzN9iq3qiG6bVH9&NcUabV8BOlNkT{)j}_nO!4eTVI?dj`C1#@C*A>Z7lcm2vGKo&(;33~4%h9md)u97|C!Z9{6SG}_kaLC07TGbIu zNAAvJ1co6iYY;`;Rqs+_u#ZMhGC7)%{0VpGxrsOr$GTF?i{3Hp!qG4UKs?Plz*FwF zo|!XGO%Jfo-0$Mck(F{zxTY)nY6#-ebNipZ+op@mRscCD}TBc vX{&W@wXUt!wbi<|TGv+V+G<@}tt;Ap<@iR^LTvpl00000NkvXXu0mjfm=9uH literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-dfq.png b/home/img/content-list-type-dfq.png new file mode 100644 index 0000000000000000000000000000000000000000..fd895ea5104e994330b23f11147d0303599f708c GIT binary patch literal 732 zcmV<20wev2P)O#>zHuD_hHq zO+DQ$anQs;69-KkG;z3wdyoR1;p)$PiKTq_<56@~Tv7ntv3T-7pnrJRl3wz7oby1{ zRd78EFM0of?+{}fgQXYA80|4SEVE5TSH+!}h!`1R+UH0DoLMQ{Npvy$5{7%Ku7dMe zfzRRP`~4?Ceu#`*QA#K>s?b$*Rb0R6JeFCBN{>Q&pCBRDo}QxHR95Ac$whrUMaD|A zv0f>Kr}XX<2D9?*F*v{9;=)RvAJ5{dP8}7;ejQ3H#3G%S&UQv?`J94PbXP{D+mt`Q z+&2NnSM-W$Mj0qYEWku|bfA4E3& zZQw%GngtKH<_$<)i=Q^&u(YP{VkCU3P4GJOV#cN-nEl2?ubkSO=S)`ra|}UA7Vr{w zEF!Rp32zq1)4I8qI=2u!fgRb2{e${GVdf3{cH@c;5W6*RdLuR^;tS-%f&KK`F6Up1 z+I=f@j8UF>al#HDQVpWOSxxP*?ws&N341YZCI{}Z9HH+x6F+jq)7o?Cznp`*=dSiS zuY0d(-($M>ruIGk@Ai)Dt)}jdo=yj6XyOb_oS}&`G;xL|&d|ge689UCfFL;(v1d~N O0000^)>X8Z(;x^p@oTj7{+d zFU5?p6ODUO4v2CXIylMr|agAAeMPE}XVBG1pk4O1~aI5^KG^Mb3^&O;k=#t8kC>-N{Lwu z3R{S6cc2$+Pp=ldDgnx+I+yMz_ig645=0KImbs>r*ciUw&y`@*!$u@-R6;i}RMt80 zS>&J{R~$MgTPL^!UnfqP6<03F!9G%H{VvFLgG48D{F(ha>wO!!xc#7AL=L$^P{s44 z3ua?vb^rTZ`j>N%dhU|XdFs7FzQ?HdCi$LzKE5%&h}=7kqsTF$93#pxq8ua2F`^tJ c%CRK(1Mk!NOT`?JcK`qY07*qoM6N<$f^l2%cK`qY literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-dsc.png b/home/img/content-list-type-dsc.png new file mode 100644 index 0000000000000000000000000000000000000000..24a7bf338359c5afb9259c8fb0ee5a490aa079c3 GIT binary patch literal 585 zcmV-P0=E5$P)8G3=KZE4ZCBlsrq}J@M~tZ~wX^6baU8+N z&pa3yo9zz%WDCabY1|*>fG7tP-m&w)A!E0}x`csnb zd;Ih$V&rT(<8nFQ3cdJunCBjmd+Mh(T*lpRqH=9R@-IY4PlX%Axds;#YMX~m?gE&{ zN#zW<<;B0m;rk(v%eGW%Df-bIS5R`7^U4*aQngFIO_y;gz{7;kTp>419M1PHf3T+P?mqmTj<@_O0s)AX&dXwpUyMU_!&IMO1FS{CJwI;A^5{cuk;COSe z+Bg2__1-z+?R*O1YUg-bR~=J^G*?61J-3M)kDr&f!;|VnCI{4RpAawjc(i&OGvorjgM!Ikn`Fl{-JvEsBpiT*?A?0XVhQ(wfxJdTHSl=GKcD4a zmW3GN1)d5o6C0lHNgOb7z{CL)2TUByaAgY+RkL~Jl5UJMIlwk`Z?_EN1BX?$pc~<0 z4V^9C?Fpbz7zvI?`?+q6yB@%}*}B&uA|~BV#UmuF)C|I z%2T^k`wuD9)%w2Ndz)p8>#UWJ%57KcQ(yGKm51BMUe|Tjp6p#aE3rJKUiaPUWdCoR z;tU)no76v+>kP}W&jn{+wb$KMcqYOo;dF5hzZB9LECD$>gyA`&@{dV(OX#i8RAX1& zuAW<`!{g`7%Z=HS2}4!nYkfkxws6k;fSA~BBfDbiUdH`U4uoDw+7)Kk z_ZG3HJwiE>xiy!`=^Dmycp69MuIx(?yA<}$ew zBbw>FE-mM>K;Org?&a95BQck2!b0%F3==;&ZgR zYN{eSI0OvQM;J`Tt!j4!e?m4xs>QN(py@}tg#PB%tx}>6Y%y_^PAY|?WH!lpo7Lf_ zRf>-PUb%iV$KxFZSW{BUI;;ClXWAuY>5BqwlZs7TkF(Kj)opUWu&FLVX^&?vW$Sc{ zR7E=**z(hdMyHstcb-x+w;_1S&?7>G86#}vJ73<0kouzeT4y}Q$KI1MX2d|vQ#W_rF=8oPDiNsa$n|nii zS-6tYWX9+3ea@&%30~$|arAN9USf(`-yqy#JiI!7O zA63B}xL|KQU*7rD?YZ<{=Ad-$is!uaT@k-y(sxt*PXD`ol6?rd2N@@kQ$jfX0000=oBLDyY*tCc2+{og{srK&V%zh#wvu1Vx000AYQchCTh$#olGD#82}LmG?E&pJBb4#4v07);(&;Q1UHY{a;ATN@4HloaYF^bgKpmdh>Q+rcfUbfyAAhN)FGS* z&K)#TEz+){4&gqebCuEtI6MKA-OO5RUYm~*>wXv0pRBbqu3YOU3?Yh0hqG(_$*ZYJ zunLB5J569+gloO;Es7wkOIjsVK!gfqbumtcx;%{6;=UDh*Ibw`Q1O_Ii6c6gf{js} z>oh65N^$N&>wtK6Gb#d`p59MmGJsGhUWuP@#^)F%0%yH`n5ru})z z>TKt1O}QTEYox}3$A~ya#4#d{5pj%&V-EKXrvCuZR$xr700000NkvXX Hu0mjf#T?WF literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-qsz.png b/home/img/content-list-type-qsz.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f18bff99df3ba5d3da0b66a6f0eebb5eecf376 GIT binary patch literal 1774 zcmVy0xvyGYiP^6veGH z#m$EUyKkrBRBRq;f!Uk5+*io|=QGPT{`d_hB6DcFn;l)V(TTm%OXmwd8E+tpwzt*u zeS4u3aVj=TlV=uixvx+=J|gz!O3U%$RvIn;jETq`0D-v$0&@#3?Q-c)s1`HEcB2zZ z*;VvP2>^fW4FpkQckRB>E|gqEua+rgz6QV-j1Q&rFGD+VDt(yKLf`)h0510xyn$%T zacysl@DFbr+h%P5T!Lu2zxe#$Mric~;|QWee)ZFr_fIZzTqzs-!pgGcJw}y_#HsW_ zT3A^|5G5*wESq2a9%(v7^wuvaWmnn$*GB;O!buWKE7XpUSpW2Qoahy1-g+NzAj3vpV0qjleD_&XaOtwN&N`7S~1Xfz6C=*5*9siuo>AF* z-n5eZ?yJuL@W@fF&cBBsO6b)xy0&k$(ei7Qva1}Ha+cTE@@v%es%a;Ml8e;zqZT>3 zR-mR=Nc{BI_=0h^wSws?cX#c6Q@CvqR+b4R7uz1UoAcsS`k1Hb+8&t)e`wjS<=2Va z_!<7F0zfIdia)B5SX!Z!T_yMUFP!KVBa~i5B=xT42=PcE5=+gCq5X|Vc!O~~QmDSD zu}DoujkDrZ2Ao_Az990CG|ef%eT|AT#`Ax>q0(tP10a^gqE2&)|* zwS<~#F~c{Xe?VASCNO)GP;!yL>`e}G>lD@>G)?s5f)|h6-Kx+Ro;5<){>CH9J5TV1 zlR!Ouj{3-RGeBw5bc)IA?=(%~l|q)nvxl7MRioq1qUAR@EPhL1ZUJu~ia)C0k18CN zciDaV1?BBD9y!_)0?jZBl>o2J&hy&rys>RHUyTxOU~Et~JJG8~Dp1@?qig#lmR35> zp|bz{BQ8NC@cJ!0Qiv113cz78%kz65TAnA$Q}|;kJW>c~{;`;$YlW75g4b{Q!xFsy zj*i>S*y*bacY)vZff8O}sGhDW}NFOs?8&$G=HB3=fU{6g=C+*azp2Nx1Udi!00MMUPE!DYn=4Kj0004yNklK@7odf|E?gn5v(cu_A#R-{k= z*uUdpY={?lDsC8C(6}e%fG7tt z!*&~N8=fv#E;*!pj`1}U8P}at~&&*?*0X!*ANC-1?~?aC^<5#qW7Kz( z{7(NpJ~0kN?v=(-$bSTWMoN|uf;TA**) zlP$%RYNyEoxj{Y%`264fM;#e!V+8Mt4r6CD?wxW#lmnt15aoa<2d~KGHRL}bzQgpY z#>ZqjdDV#=MOkXRd`=pJTeY&DJ4uuE%-ZMcF>~ zT=NI^Hd}$?d?q8IM6b>x-66No1-S32vyMrdA>Y7 zL(a1hDy&%veC=_AqoTbzn7k~V`_l|i!p=*N82vMKy=&#?-iB@Y6~m{sO9; zy=5Smy6Q;5eT!~05*5HMs6v~00{m3%Y0@Q z1;AjX_0HuQxsaA&enExHDN32cwX$0zMHmkDUd8S0pJqAS=I&%?xdoe-+9xF?6J5?R zGfQg@l2B`{n6CEO;T$<0H(bjXqgN~q=hn{UmKA3$>GDIRRmW#k2>TCX9HFl)v z8$?pthE?(Y`S=1+?>T}C(>m{F2)%&r+hi>ts5PaqKv0iA@@6r6S#RDurefDbOvHDxv|krKk!L2nh*9wOdtaPdz}V zaNw{)D;6ZU&;#1lRx2WHr2;C59tx3~L{w^mYD!3ywn<26;@EZKPBMzK2je0BmyGRk z982>#d7j_K$kmhVTfT>*I?&WhC%T+b+r*fx{gp z2q&R)PqX{>A-cVJ*;q@sOjOj?Yp&P4)s}Ew)p`t5xj=MD#?vjOAE0Ksct=4`v>;0Y`? z2a$;pZk;=Y&DV+N$Vo!}J|;hVN3FlU`!vxdnV&y+mF37BJ6?Go(e35-`F9hBY(2>2 zRZ0}t5wTP^U~TNcEIM?tCpI+WYVX3;-i5uXEtcl?s%hm;cTRS#jUBk!W9zw-7ybc2 zc<2&Jcn*708)nggS#%(5_Yz%_nZEoVmLqcj%zXP_09=nB&-d|CNY~>eHo$wVYIz!0 zdzWslF?j7uB4e?hENu5uyZ<;Le;=XimjRF`Zm4KmC%Ip{bOMwaIM~8^q_N!?C z)8G6nR+oD>4|ctd#pXZ>&!GgT)I1Bry@dRIEKc9b`}vYd7EYo>T>fN~*|CHd3!sE% z(l&~C56VPjY*4kO%#LyA->LIzWTc;MhyJSe?vTF^ds7?r-KPop`QJgT ztA&#&f@s3_{JhItxPAWJwCVOePpU#>!cyHpRm;u+b%%nX8{C zgeCI$Afq3>M$N$!I9m?jYVX3?a)9v2bplr}=<1Yhp~%By$lr$&nkk6w_{+-&o3E2? z2VTTt``w9(OpFj1_=2cBkF~KQrA%aO5P518XX_zEw-fJJg zrTEYzDQOGCz5MjvOX@sj79A;bq)Dj6EL0|VlyT&V8!SiW2oCgMscuMdpmHTX$CaFT zX3>FZt6hB&p`j}%_hty+>?bPEuerjK?eG~FP4G11Y(Gr+X1_Yz37%%vlbjsrNhnwM z{F^-3^*ZC9{T+FHP&d&a(W@*e@v0tumfHQt)m{}G=pp#qi%U1}tR|CJ8E19Ox0>bq z_pmp$A$oSH!pY-7avWDO;+X_10P@sm)@5^@Qd0PBuFs%g%>odD{}joxHht2_goEl7y_ z2)yvjMxBT%JoSWg3s5OO(Lk^XelJQF(#cZ$C}=U+^?*-pE|OA1=tgpm(7A>Jk+*OSbKcts|kZwCzVib%d+>loq{2|d1# zGsG(bdVP^>}U1paRwX9SwJdVS@P)kSPrQqb|E>K$1*x9VOy3%t3XaE2J19VbOQviX1LQ&pg0004T zNklfA)$J9UR-$O=+kvj$AC4>*@2 z^`8vV$A4}dGiLMxPier|D~)^74v2O@v;(3Y5bfZ$-K92%MGkPDaHCzkG3p;>X5JSZ z!gRuoc9AebTvNhgjX5j3@Us`@#FtWuQU`~d$qsRG8gx-4Hs=&GoaKU*PVpPX>DbA9 zj;pvn*DmMw4slAWhFEZ=M0?Ig&dpA4ow~G1Wl#ui%6yF#kBXe@LnS%HYj<8yG39Zl z?;in&h~MUN=V_=XhvJ~WwgqpTKCWt`e+O?}a=VWf*H)`o-RlE1HR8JZl=u2>x@>XF z6GSO^=WO7r9C15w7A1J+TAI%8aeigN*M}K^DFa6gZr0!kvo~Pa`;IZ<6on$MviAL*(9Q9L0_i?HJLH5$zb!juGt` c(T;U?e%0%N!){%@X%uR69nGh4B#w=UrvSl$YTU@evNHXJ+ zecBTDVa_hvrqC+D?3=vgY!iiU$h$<~9#3N2bm6kN-Do#X|mQ>~< zPDGWKbYc}JqDoT)v4|5*D& zZ>_@e+F_~9VB1D!u?_u-wX*g#_0WahV#Qcifi|Z|*4Xio7R5dy3X%qpz2Rj5MjSV# zHpAM@01WX`U%FywyymrgU*(;9RCb0LyA5rs)h z)f+KwcmaUH=AQv?24kf}c1a?RC{5kIAsw86WIr;{I&_ z1WRecvMU&&#EB?Snl`6M%C`PXrvuu0e)@vk=XR5B&ZoQnM94VfgS}z<$*|fnZLVhU zdIO^!O=MW@tlV=HS9=S6=j$-owqe=%E)P1}==dd;1i)LQ_=W?{=0@q>GxL~W z%)CzpL$H*hH5hUCI;0qS%bK8ZT{o}b?z)A}RDjM@5LcGRicg$~LZtzi%WDAWzw$lH zUpfdt_QoA(bOIh{9|M<91st<-&(WZ@XbncGlJ(r{=5E91e#bq1@KYv6h7z7_5I6u|H1dLF2!Q8ax8J(3 z+zPxdJCOvKjE}ufMlv23Y`zN~7_|<%zenf)JoGc1? zGqWlj`oeXiFs=khSg=HoAUv`lAT=mZ{gwvnnglE3Q%GK+0^oPBhi{g70>k?f5-Fm9}rs!Q)Qmzm6B8>`>`(mO}` z&vj{fEKx-BJPsDAJl|z22-zVS=I;Cr;AiP4TG1WPH|>nqU+`h-aXNQvRw0TG4BQ;Gd8uP35lSqRMKy-HP{ z0+{QY%&NR36VJB;s=Oo;@7Fr2yd)vV_i?JcBp}xpsj9pL6U#VGWgc<-sr4;BiemR# zIWkTqvD5-$%A-fo2v(VI8g}jSErt_P%i}3XHRBczk~C1oEfoBufhukx5FiayaY`qs tG*HDUnUK;z6{l3fN&{7#5{W1c;C}@3>n`BIZqxt(002ovPDHLkV1kef?hOC{ literal 0 HcmV?d00001 diff --git a/home/img/content-list-type-zfshbh.png b/home/img/content-list-type-zfshbh.png new file mode 100644 index 0000000000000000000000000000000000000000..92ea9664901ea1be89955254c2c4af090529431a GIT binary patch literal 3304 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 literal 0 HcmV?d00001 diff --git a/home/img/delete.png b/home/img/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab9a64aa70f29f381b879c1f1287628349d5ea7 GIT binary patch literal 3526 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 literal 0 HcmV?d00001 diff --git a/home/img/id-card-0.png b/home/img/id-card-0.png new file mode 100644 index 0000000000000000000000000000000000000000..eb145555030958a76fed78ee3414a0cf00af90ff GIT binary patch literal 1529 zcmVhk{m%fgbm_CkR2V6XR&%lV|t`fl~F*8l(olSxEDRCwC$oy~LFMi|B= zTX-0sBqTC|lUZ^QoDgtudlDISroF`n?w#pO|Agim)XbFjRMSh`Q;d7apV{3N2=P%8 zq}|m*pC^v6Y{vfazR$k1cm%8Oi<`0lBgqkbt4m+p zlm!?`PVrk^JSeS^#FraE>%3a=7kZN716D;IEZ)^AieT{ptL(nG^ng{^h+5Ww)ldWI zRqw&((K6^(??Fe>q)FVo_}F;Wv5n~KC24Ku=)_%z)h%21wHfC~hV@w8YKk7p2w$U? zvcf8IjoK3)K+)Gpga=Ucl_p#CBERr!bxpAemTQc0DSj zu@n!!5(hYt;=xylpgw?ODXsVh9zwkGmTbjJHf8ckMbK0L7@g|D&E9X8HIWZ!t@(=W zo~OWq)~SFu`Q7uR?@kxTr6R~Smz1gvU$Gq=Egg4o+}ej#_9mFQCR}hIR-Ok-)YcSiwA@t2!bF8f*=Tj zAP9mWE~2>r2tWV=5P$##;6cs#@#E?&(GM_WOo5%A^jf6%lxl-I|9fynk2xjk0o@F6 zwz^YnK~H~wdU_eLlY9ES++Ae8azF~U1`K9CjZw&Q9;EL*`Q{^g$_szviNlZg$^pB6 z21q)MEUw;eHrJ6>2gqWTbkfAF0r^RC5U1Bx4al73clf>#PI^WRkVOIUzH07!R|1jHRQ>cG+zR#ECR$BP(8Y{pyeI1GcL)K?xh58?-&A#G4rh|n( zbtE%kxFnT%Fucz<5@*z+rF-nZzaC8%X}|F}B)xPjRt;dX)ru27s_8fS4f33%sqMDO z%qP{Qc)!fdmUnMxsMwF2y?EYZMzRO^y8XByF>kn!%zLlb!_&&j%x+H-(obfC ztUKvCbyA@R4*=e|jB2r(sPxQR-qBSHxGB^W;n`WHfPI?gVB(Sw&az5CI&Rq%YFhdF z_Ip1F2NZ7BpnM)p^PkRV`aL?dVSm(uKBxrjjvcZo)PIG3FsTRiM>h!Tv_AJukGJ4w zHm$2>JjmN<=E0dWm+Ik>)%Y!)B#pJ8nVfB*y_ f009WV^8x%9a7KxW44dSx00000NkvXXu0mjfYTxw5 literal 0 HcmV?d00001 diff --git a/home/img/id-card-1.png b/home/img/id-card-1.png new file mode 100644 index 0000000000000000000000000000000000000000..537f45d275a1a4acaf4624f0a0ac0dfa84019836 GIT binary patch literal 1635 zcmV-p2AuhcP)$62ImWx$&Hmdk z1A^hhNCpkl_I8)bmh7?h`0bwV`GE1OZw%P>-76$SLL@{&Bt$|aL_#D)LL@{&Bt$|a zL_#FY&3sqbC=j2ExBKHI658Vu{&^yy)%LfHU_ZS3{bUWH6Iw`!UPeOnG7>huY#CJL z!y2riWiX{i=}XSfsH445n%5(={@g|6X{IJD5qnT8a4UuMP&jzc7THZ=vk ze4?ceF^EdSFteEd!WN5KdmY`9XU;bs7#C%24L5f0GM zKGIabhGwm;>Ns?sOn9uVb}xJNwh=T!x6v3{#x@&-F|fLv91~o-hT$_LTzyT17HWuu zrxQk`V*~~v4#jWrL}Fx#s%&Eu@r8bbhtWTu2AHY{``6{9T8KS}gi(!9O{ zExR$e(XF9d@4Ko9H+{$0Zb(Vp?a(xg9d(4~i9?lyl7>n5ngi(|tkWkEtg2_%i<}Lx zE|c24B>+~J%|+ zI<^dDH&>&gm&ff3!bsfwyPa95>~Df5rpy;1q47GR<06>Q##r@ z=+&rUg>c2k*w6^gu*(7fgh?mi3P2o=KsZptPQWrDB4KaBP=6fSBM=%$sF~0MABP@% zFDISGaNPz5A+8@HA;uwk83~*F%OAhgAH=ba9e6ROhWVb9Z1It)QrLFemO8>sAHoPV zY}sE1?B!1{lTd#gnvmiUYYGzL_z=B}afli|i&Km!a6)U4h7`J&tx--Sdpcox?i?NE zRJX(Xo_?wuD+tGMGaGhxpL!83X3!xTTIvsIEOSlIb2vesaw%!398pe&JrWo(roSf(sgHPJL%PQe8QCMK)BpaQC z#s{rOB;;!C<_DcJLh+)V@SydGggm;Yb8&!89&7%5!teWOCtOTNC%g|ycq{zs7le;^ zS)64f{+6Fd&o%{N=4DPnnuOAsL2w9{JBiTsmy_(1cEZxj+Z%|4X+GR+K9b-D4&nY+ znebZF6qmf&9SHgDhU*+H?d2K>$#l-E$X*b-WVzp0z08SkGQzBzj7<19nfYbL{>%AI z{-z-OFCQwTXtVU`*n|(fdK4M^UuVX1;`A;XIe>`6;8yM_PB=+(cr<-)hA|YvU8OJY zMBTl z{_7NAA-Xak!ZKq|cmnzWi!dFw<@xGY~|r?%QIZJK|&-% hLL@{&Bz&HP{{s{R_XhMzV8j3b002ovPDHLkV1nyb7<~W$ literal 0 HcmV?d00001 diff --git a/home/img/img-account.png b/home/img/img-account.png new file mode 100644 index 0000000000000000000000000000000000000000..22e3c3c7db437388986e971bd2a5f293a1327dc8 GIT binary patch literal 5409 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 literal 0 HcmV?d00001 diff --git a/home/img/img-base.png b/home/img/img-base.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd073cd6f9bea201d4379e94cf8596cf3a58b70 GIT binary patch literal 711 zcmV;&0yzDNP)g?_HBNg}B00006bW%=J1b=vghfh)L zO}+pC0!&FnK~!ko?U=nz0znXfw;?gHw!t^B*XMxJSQ?Mxws#M0td0X~Ilzj<0CpxO z3x=2T4!OS&#<|@=LzsaCsxRDpJ2N{7(F}tn<@-{InsjJGH^d1s(veT%nwsgnhzoM& zo2ZjBKgAU}^H!XbGbek==b_J0&_s*Xi;E35-}s?kA9-7IyBznblz{iwlE3Bcz5$G#+eOByvOOxzGD&!dzY&u z;v}xph*P`%)TWN+YIpR_n683iVB|dlnH>}Fo`Pd);5~ly-e|nzH3SY7;Ju}MKyEjy zgDQ?%P#wyMp6P(hIyn>YZp;L{mzmx$>`igZ2{NBw>m&J!%qNQ3-YQ6IrtEH*z9#d& z9!TBNII{Jg%;Jtt&UxOQZN0l`7mD&KxAi_tn~;}ZL~I@96FAEHiY3#_pV-aXrlt3G z-haL9h+2AY6=rePHZ8pu3kt);cwZElQF`hv9W4qs*%=wL>hG*0^66K~C&s&5x`PEI z-rdsq3`o4oQXOd$M{*DKp7f-D=6lTQOdT(7$v#z|m&@(- z$a=n4otytP-%}{|9)i5r$@g%q58z%`fjQaBJ^7EB(B7epyeGG$(XN2@Bfz`-WslP) z`@8AB3GMG~SW literal 0 HcmV?d00001 diff --git a/home/img/img-fly-1.png b/home/img/img-fly-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1cac01ad85926f8905e0a81efb63b4d2991b2444 GIT binary patch literal 1372 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 Z{sr!bj#>lqm7@Rv002ovPDHLkV1k_)xj+B_ literal 0 HcmV?d00001 diff --git a/home/img/img-fwzm.png b/home/img/img-fwzm.png new file mode 100644 index 0000000000000000000000000000000000000000..641abda3755a3362fb9871aef9774d0854cfb09f GIT binary patch literal 1468 zcmV;t1w;CYP)hr_K*hg?o&CuWT^!li(z0c9z1vyDXK~!ko?V3$<+e8?Eb)y5<@=H<<9HD=J9@dhzPHtX*`zEX;*e=G!*r1Q1qTjt$h71Zw+srms>1}h#SD|-Kd`Sp?L<=6+U4vIGw(?kgfoAT-WSfi zBE2V^`ROZJ&qZMt-v6JmRCq7;d*OX?V@Y*MFglhf?;{e8mMHIf%&ZCWj>*)p#W<1) z+3I=Y8X=k(MSGBF47D(a*m#5;D$i*UY7IyR^GCouL1x&9;=yM)|*NZ(*1h7@0S>x301=v%F6;@fw8WOPhts>RmrwIrzQrhnwd_7!yM+{&NDg z*cRpeCkms2b}9Nul=nd}-HlTmuXmM@rav1JVu|s-63r;-Sd1f+w8O8B!?elkNRRWc z8HOk?a}p=g719;seJc3NA&S#Go?@zD6UONsM*+mfWbr@;+yL zGVS*{_t6{M?@ClOXbCX{`#LPXuVe2OS^K(qn6JB^&wK93ax@^FUg~hu z&quHO9GCaJnR$NKvyioX=Xbo5j{H04`F-J@*Uif;p3}bljtcK@yZ43P?}{bf`!IN* zAcsY5wp1t^(Xg4k!#50T^yL;pr7*Eqq2LFjjVf`*H<%oirb=U}=3k9I%ak2D+~48V zU~*Jy__wPAGbp(xWdi$l173rs;(*VK^g*Go(+cJJZ+n)TWBoMzsK zA5_52Txat>v!18gjgUD`Z$}cnd+WL5UqiUIy;b@beJf@@>$iJ7;;lK8cldX%Hhax* zT;4D;Kx3+=n!0S=fDpN7ZmI8Gun(YsmQ*dSN^*fy&ZkM5o@uVvFV}Y6 zCQ^DgC~wq^4hlwP`pl7$Lz29I*^)a3WOcfxUmShs1jA6{6PH1+GtS#Av1A|+;#V&_ zr8xG3d|Y{6^mT8%uakphvQDc9&8G@dH0~bEq~?FL;XvC)ztVu!aGjg^GeQqt?^+%D zf&a15U0&}>9il&Cmgyf&gVVbV$wZHs0~+ef8mD&;0L&6yPiMaw{x>|{M^?ZbZLK2b zDO|AH;$(V@2TVHY{o(Z^N}bcYjzVV8f6{)W$>}{}>a;RD*u&L0y~j*&gnnaSp6fkg zLi9Umje&WtqoEx!pHb$Bh8AveI*Po*<3MHf`Aa(b_9dhKD|yS&4l zgW)DBAM@{b)$797ueDV2m#sF?vc>5=5>jyt1#0ADUmI7Rznhd%Ihmu=*-|<0H?7Xk z^Xi$^un?#B;<-)nysq&6pNXY!UV-;dqz`PtNc@>}>1)Bv&o4_$A8(eo1%7T{T>2M_ Wklm3R55=wk0000?&~_|bIx%tc^NIYdEx(Je>%54Gunh)^QWWrt2Ks>*= zu#fB!ZwwxOt+=^=0=C6@^a0}Ux1MY?&wNq0h2lj3EAj$N9QC;t(z_82g7JVltE1{E zYv|9L64;EjimEs{(;69o1}#hqb>*}OUw!(b?*f0JP2v+)d6tE$_cp%o$9%q5gGAEB zPJ%;ccAU$-;&zY~_{sUi4G%Vcv8zT#rNDdYXXIdVA3rQpei8Fi@5>sw{q(Mb!K|Kn zw%H%IezvJ-4pSa@-=%X70BChev9E0F?Vo%Hzm68%i(sJ#z~ycy48I?RgBxOg+!lQ- zVb9K1nZy{HV}LCpjC?RONJtS&)`2kGg>&o677G6xVlKVY9Tb_#Eh)yzFCl6uP(H1( zW~?P(SC$4h@zE?V$mD+8%W9}a17d%Hc9Nk1m*vvKw->EV{{>>A{|DZRV#UN*(IHxv znNZqfG?4utFaj?De^Ckw2}$1jk>M9y0E(|N5kpw4N?1L2XiS)R^Xx3|xDwWkL9I(DBvCTE(V>XpzbNi$AwdXCD zAkU3F9;P>Y_2F<7!TpVULnXEAw^#DUUeYH(ZBsD?7#j-=p7}F*Zm!X{{!e4!d%O?r zxuGVn1a3Ir)>^W>Mq4>C@%9Hy6w_ggQ6;_H)!@Zo1J19uRm!T$N0Nz7M_VD>>OJmE z4>ZnrJrRqDJ#bJfdFUzu_pNn{oM5cLtNxk?r46C&!_8|+i7p|D25hdWUw5&P|b+Ih|Lt4$Vk`gJkSfFF@MJF@I;(6XWWSl{NM(@tYyz04^&u}GYyAd6bu6Mn$TcIn>#>T+iV!#IU$#A2M^J8AVhCA-?pa15-AlmthzJ0n zPd2aM2i8sAwb$?Y(xv_S%t~lG8;ucX88~%Hc8nR5P0JpP-s$SCNzs~OivQh<(QI|< zdT`1Y8yB9bFY^>9dzJ&s!c?+d1#`Q5H_P+8nz<8&=Q64{;$-0;GC6@k(Blf;hdt^@ zQ#EcUM{D{}qnrxl2I{Itoz(Y@jy%=FcKE$~IPAS5n4M!396_f3^E;BVE=**4ZXe95 zI<$z93Ad066U;U(!)14|CS#ejljHkIDUWenN!SMl}t zH7=`-(M641w2oyR9!J_vE$i*4hFdEr<}iKE9TCN@YkE1B4SUB=M7IKkD)R>P_|lTn zqe=s(G1C{VrL|g}^cC_0eQSqI_Zts?jeC_%9S(Vhz9+2xHZN*t>)WrTlT*)lGpaU@B2REtLCgD`=Tkhy~q8XFL|RSH@jG1J$EkbUbApaTZ!QQk>Oj8k5QL-exsZd zCj7pI>GRa>rd%VF6A7E4f$EP_Qpf{;?o{x5%H0If|GXj+f0uKA{v_7m6KKFgNLcq{ zyNJLF*eD4>0rZ=gecjlsf>7tNqO+}2zMi_|63h9W%^C1)+;(_tL!(m0i&b=Ss&#<* z!5{JIqmGm?$<1PyP#Wsp>?^fFAC-p6ejz`{D?So7mTBuMTN$bB^HXeR zKeeq>sfVAL!41z8MvpEY^m-r@kL%6RfQ&BI+`e=dcv6tqEDxCQWZ3&lM~9H=W@PVU zA%HUf1``~_fC=Yx+JgM1KrAnxop1z4mj=r+VNJg%p_6fLn?`HmOo^b~BtDR`Y@0(o z;=1T%sf5Bzv6?g&Tl9CE9j(Ev`9k8&vp&xCoa@TBqSOX@?zl;j)Q!^YE0dm$>Nq%% z!bSAmD|-Fqc!iS9@-cERgifd=LXeVIu}u$l)UtwbF6GsOwej+7E61{RP^gCo-MoR& zUJmJc?m*&Hb8O?JQjsOPx~2yH%N4{vp<6AO#`K{|+9|fU-|p6}b?94odiP<=?>%`A zgt_bK#UBcxy__hcM|IYUV`I}L;9hf@3SF>s2*u72Z6bjM)8Fa+STc<*ojT#N(`|7hJ9? zkhZudC}NlMU`Fi*g29FFua}_1cwdC^5@YsPdSkvVUWhpTno$|$G`@jV0S8UftYj;^ z{GrQZ6fmR2FOw!hc_ZO6;Tb}ByI84NY4E^#Ld8ybXL_YNP9i|l=gQ{6`Ms1YrQzAEe-fXzUR zCWaud?jXg@!yh9v)e-`rxkoX<`B=oCud8(Wq4gF7bpIcx_8n1PW0$*l_Eysr;_1x( z8$x?@Q(~=-(U0$4!bpMT1m8{jjE}KNt05Cp;L}H1oU}dm^;Nw(rRhLM&`<8&P&t3X z%AeLNo=S!HezJ-8Pm~qsYI>xtL5!_m^?-=3MT9$3Adfip#|Y(=paX8R*RvOnO|A*( z!*VoWIgKMP%>rtP)|qusVhk}Rtf#u^)I~V%aMZX!-14uVL=@a29H`lz1}XW)q*
+Ix;ZoA~JY+4HtsP#~DKGP=~5!BxP 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 literal 0 HcmV?d00001 diff --git a/home/img/img-pdxwzImg.png b/home/img/img-pdxwzImg.png new file mode 100644 index 0000000000000000000000000000000000000000..980fffe7deeb1b960a267029ed513ae546413495 GIT binary patch literal 1688 zcmV;J250$+P)FV>v z$JxWi*hg?o)Yjzl^!li(z0c9z;^ghY#MRi^<-NYm?e6ukvc$N#$sQ^>MgRZ+1$0tQ zQ-XMh08gdgJTw3R1{Fy}K~!ko?V3$<+e8?EeSrVaVL0*+QV!f0dVnJw){<={x2)w4 z`Gn+rawub2X_H^7y&%lmWew<0g^=8&1?@*>_%T-w-p{A9`t-Ui`=pXI%W&%F#uYx^SNtm=o%3;|f&|WopCySNEnUtM|Z0>TjE@-UE|A<)Ik8O95uuE5aDP1G7F4Gm4{NKLt)qG|J@T zeGsg{N_@P}IX@$<_c_8cg~kdL0tIuDes-|ABj5C-JZAqSuO1>$-WE z|8_mU=(%GS)5J7Ry=hNk#<;&hg`W z%WXe~dQXxayhL-`D03My=$e*;dsWB{NI6c+G3}Lwt+rw{+NW zF}Q>`n?7H_SueBE{`P28vx!|bRFxxg1Fc^zmoK2> zaCvE9V<%_ma;SHS^mBKTnNm)1#mu9DO2esYUgp%MJ+vM5E_nY;nX67bn=0Cqky+Pj zNbl1le8o}ovlAba#Ai3uyO3*}n^TxlJ(DH%XWA)GoHPvYBAFqB7QAhQdKctPU6A4C z)lnwQvaBE!F}k@K34$Ntkc;f!Ke*SaOJSjv%NT~f6~5jD`GPQ4$Kxqj1I21NOtDUw4RT4( z$&=6O$Gm5Yoi<@g##lVHoEJ|TNc{y$(UsbyzDB0}gm+ckAx!Ewz?6EpCMcHGcA1?b zTA`2dntzg6HL^4(ypu1F87MR%poOk8cFKf~C239DTqA-;meIJQ5_Dx6^YC?ca8WXh z9hV7HOQ+9Bn)DZSS|n!5M!M|oA!{)7&FtPqAfCX4Wfj64_wJ27xr**K+`Ue#ofR_K zbQku!O_wR;kV$Lr=F#NX$GrPYXJihusp@^Qjso$NY}B*E9F2LWb4@QIcVx)yleMp= zD}?Fy(;ysdS@r32Y0Nu~XNQpMfm4DVTZp>;T-W`C(04uBR}20~f7|Fjt9MZ*4@P`u3cl4VjNS#ZnP@)Kgf+XYGJ2-~!c0Ou zt+Tv$8x}{My36eBZy@U#>2SKp$fUs|Ot>ijPOBJEX7sKhk4aoPyIr2qyU#p?`o(g( zm}T_tGs&E{&~Fi#S9_cSe9tLsG(U)bp!TCOvC_l0Dvibzg?yN))dJ^B8$ z9hH&U8Q(3%tN!cS)%$#UA{zBLzsJvQV(+ncw|$%Vggf)I#QQd9r1WLt=GUB=JGT-` iAJtL^9AEqIE&T%&xDf2G4L|w-0000 literal 0 HcmV?d00001 diff --git a/home/img/img-phone-1.png b/home/img/img-phone-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1dd026e4f6a0cc024464016030470b4d15115e57 GIT binary patch literal 1219 zcmV;!1U&nRP)v|0 z>hsy#=fA?$)Yjyvs=f2{`qI?kz{Atv;q2}1^|ZFfOvHgP00005bW%=Jgn|TkPsh<| zZ~y=VNl8RORA}DqnZIw-KorNl!i@L>Dh9+qz)Tk;_N(n=LZau~d11g#DI1cLYrU|< zZMuP!YiMV;75sDD^KU@0FMd}F)YqtSJACx+ec!J;TRShrY;E%MXvccOso5oWt*3^O zlz+5dnr6~>)^p>`Pu2tD%+JF3WDWLu!NG0#csn)P8W+L>-2-6JxdZd~c+ z&9~{E)*x(9ij+Xnr4 zStidnV@wXcc%1!`rkKji@u4azX>BN4_o#S0uS*#}bi z|K0ta(k7%ys%q-MMZX=AWMDThASro6j9>%)aNNHs-4R95?EtyVuSP zd!65dHl*F}{C*K{M&8JKa$mPCbGWA+bRTpdbgvhy=MQ!U9|OAk^>y#Wru(i5-GjPK zXfeC|$)WAqS@+FMHo;^+-}M%Dp5d5r9FZ87sF~haB6SbS%}#`ffXSosK+{)uPG(G$ z=T`#EMLpH`)ZHITmXC1WboxOt$K)EDN0CceITlLLo!An|^oS#3B19aP8aa}pnawMH z&6w}dozLM-lnVJ!o2irUpi!}3-%P%H??Ize*;c=30Q?!|0byP~sc4s+cd%u8MoHz%sYs~*oN z3(?Gl3Zkzve@lL&0xRS$nkk?hWwyrZho_PXtnSQ(i;;|Zqi7STN(oYT4@yvwRvk{V+IS-iXVfsCr8JUY@2DD^?R{6|m zBXzHs!E#AOZlaCUy=E#4V~F}rW~c5I6Jkl^f7)1o%8EHxc0w3%*OcyHp30*U#p}Kw zHkdI#Q?h$|NZtKe)+yc0yf~Vv*4~vz-TA%;Gxzk6o*axAxt7eq=X)i{S|sd+YGu7x)v|0 z>hsy#=fA?$)Yjzl^!li(z0%a+!o=3#;_U72^}M~!u(HJIgaCv9000GaQchEZf&_R^ z$I)qU000DKNkl})}6o9?L41b`^5=VxosIq*hlAqZ6^e``HRNb(lMVlziZ3;fa_Mb4)%;lZ)Ae-rOzDPX(b!MLT@0mND&bk>h&wHB5 zwqZ)13lpZP_i!@Ls}|#Vlq{al)|d=x@g=Q&&w%tk zFViHRzk->LXT>0%f6V)w^V4X(&$*8N*m|eBXc*-svz#pR=Sz4$Fv_21OgVUelaSr9 z9y&hHt9s;{)+59EK3Cl|t?w@;$TOS!C8nTf!X{JJ%(acy->|PUXPWNo=3)Ns{rq^A zHh*j%vdSE{j!|iP3x%f}+>*j0a zJ#Fc|^j>=Z?iw_`|JZF=@xJP(@^7zh#d|m{6E4)ts0yzF6Hf+ZS7Dm4TTWUR!=xJ1 znDldWhVCbgI0R4>FblIe2UIW9XF0Fzw`+8}u5v<-ntqM%YOVitO5$M8v%oRX@a z&oARq<5L0CD9_L0smy!JSnqTln7cwTWe$-)*m#oFnqkyc7iJCHtyu;8#I9{>ygh`trHlA=!f~x>A z8T;#i^1RQL3~Mp%C;4+yG78dXxv%@}`z3c;%XegjUxRr-12nTIC((PDNV3AqS~m!o zhi0C@J)P=nEWg;PAX`}P)Psu=&8)~@dtIb=7w$wt&5UF)R|BMX1pwwU#Pg_{{2NR> z2MKeq(UeT+uvC#W~eQ%--l|Q$BmQj(+!PRU@>u4suI#Sjx z>w9@`Q+hAGYwr)OGaoy5gk>aq=iJ(~%-p^2EZrMcI&FL3of}Kv0A$~nu@G<*VgLXD M07*qoM6N<$f-4MzyZ`_I literal 0 HcmV?d00001 diff --git a/home/img/img-phone-3.png b/home/img/img-phone-3.png new file mode 100644 index 0000000000000000000000000000000000000000..856cb157113ca0f2f4053918696a75c739150380 GIT binary patch literal 1177 zcmV;K1ZMk*P)yJ$JNB+85HMR{ycUtfQ`-YO>DD{r zBs(}}^I)g#(^Uclq^Ut5IjQf^IW~Cs{9B*&>z9%!gVWo&F7xqjpd3RWxt%F*Wh3Da z<-Kes_^iB=&Ri=;(wX0s6Y0!Pdx-PPUi$M;m`8hX)O+u}_uhN&z4!ewO;ogvEbnT` z9Ln+@mdueX@2JuwdDjtIcxk&pXfDT*T1Lmyp8Q5NyD)=#rrpJRh@6S{Fi9JE%^vI~-u>n4ydxCt z?rUTBpsMp;8A4B+wwqb!y(@ElFihV5oZjA^^D*nayMN6oi<8M0C(g#XCDFUVCQl^K z5yd$%efDKB=~_$#O)G&4dk^zVtxR#E-booU&aSpaAtLJCD6X{P%Zqvski*`KS=tnJ z6qflnU>z#TjLTtZu#iQ)SJob#p+vnuUf-p7hm}g!WHU+Bd&@Z2e9Tt;`C{I2b$nWK zytkZ3FE-y{v1s5TDGTT1FgLGr*fot?*Lp<)JB=bK2f}@4fe4X;=Ay4P*y555BPXfYtEUj5NZFeG%^_T_Zz_KKsD1X&pM8`t{5v z??$;=_#lX4&$}E3ZauTfQ5t8w%;LmuOg=@JnXR9BJresdw0M{e-l>)NCRGCwAG6Ur zF3S#`o7oU2c9OKkHmP;^n2qxtN03zUj<4EeugTk=jZA=m=>WnEu{>tD(Z`fI#ge?^ z=y#mN&OKoQEX#Y8nzvgqkDAAOKz>>5JSqIo`NnjTJ>;9LzPRoT%y$SG0eFLB?T!RHZ1<}RM0SUQvp)Jf@0q`q3OiU<~R1J5c-f2{* zWa@SnxsZ2_)*!fGhGe!IuAq0-&6z6g&ujWSA3YNEu5K7}F#(A|12%_(j?&JfOmg8R zq`aGeCh^UA9x!J9rza#QjRn0IOgx)`1g1Dk(0j>D$NY+m$r~pf{YiFf33}g_%q3w4 zbZCubd8gr#c{Bv#-itAxF=rz(wT6P;jd{ACvD5I9Fxt)==TY-~AEx`6b1=OanrI2k zQ5L#To@YXg)dt>^*A3YEqIv%AUl~buz-$-U&ohgG;x&O|!cs=+7J^p>97f$0300000NkvXXu0mjfJXK!D literal 0 HcmV?d00001 diff --git a/home/img/img-phone-4.png b/home/img/img-phone-4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc3025b92d492bc63df768412d72da6906e5cd68 GIT binary patch literal 1209 zcmV;q1V;ObP)b%BJ4r-ARA}DqnY(V=FcgNh^Z`6%XR7uLZB&|eBhfZ8njAJtyJ{+B&=SFLdz1j3y81JCjU5V&_aIHAc5E_K_e|~S#weifBok0( zeCmO^mu1RmvS}K3a)pz>vh!)}r zN?Ry!o+m+E;|y^gE&HcZ?4iGW3-)@#XMrB-JmGqbKd_-si=0T)T?yW-+s0X?}N#kb1TG{pKPcxvV(9|8w_sW$mo*X}6tO-_QS- zx^G9kpNzn|TgSFMmOdZ9c$oJA+VYXRid4 z9uwL~EU-`Dx+lyls#I`J-%eri?qsfy9pP27T)f|78Y{knCM-6cMfB_)##~q-#)jVk zGYP^8lOW$Ra50leFij(6Vz1xTvCz(45!2OE=3%f3j5`5Stb2&2{96jnCF&;6k zfumF-jKB7+!ud{yc{ToHFG!ztKmX`Gn7I~dG8o_?ZA`G$2Qyt-%ddQP_zk?G19+b_ z!TtP__FYlmv7$dD@bLvycdN-RF%o8%{^^c^x|=L!oP_C7XWD(B?w$Uc*?Wj6uc z1yG}T%$%PMD3cj%wt-CUJjSG(!HV^C+{Li^j$XrItH?whsC&xf zXMQQc6z6%IoTVjYIucB=KmCLmQYJeFqTrO*ota1DsEtLsi{m{x^PEXeTl9P$0Cl&g ze4c4?^H$!%nF`}b9PbBwh8f|>ux+8xH(QbE5Zx0&?B&?Hqo1ddY@nQc@wbc$WX>OE zOREi@->rvFO2&14ukY(>-Rt|h_4=s2Q_lRLz3^2(`wwmBTru-xUu*15yEBEa*|WxP Xc2@$5x}u+f00000NkvXXu0mjf5dd(w literal 0 HcmV?d00001 diff --git a/home/img/img-record.png b/home/img/img-record.png new file mode 100644 index 0000000000000000000000000000000000000000..77e710ac4addd85ae09f10f65f27d02bc7fa245c GIT binary patch literal 5616 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 CzSk81 literal 0 HcmV?d00001 diff --git a/home/img/img-recordList.png b/home/img/img-recordList.png new file mode 100644 index 0000000000000000000000000000000000000000..924420bd731d336a1a7d3dded8d316defa088068 GIT binary patch literal 6071 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 literal 0 HcmV?d00001 diff --git a/home/img/img-roof.png b/home/img/img-roof.png new file mode 100644 index 0000000000000000000000000000000000000000..e907d02105d3d331d463dc6d7427410c04d36d0a GIT binary patch literal 1804 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 e62EsJuKfqdxbSRZCHVpX0000FV>v z$JxWi*hg?o)Yjyvs=f2{`o6%?(9+)HNN%?aUwM*|^vA-tvbzaC7e1HHd|bFGo%vVcGwICl3tvcQ z{_>y1^SUrM-apN;wDG=~?;G#e*Sq19u&F~?-bW;E6+$?@JG5b}-J161|^AljlO3Bg$&A%D;KCnAlBq z58#=fbTqej%%iWvOr=QjZV*xqt_Fnk7Aw~loqWSa(YK*yplBpm?GZS?Wd5VHRJiwystSvh35O3^GImE z*W-XYagKVJytPvJaIun<2Y$tpZ|o)78~5v)go_5C=ioA>0^ zcRC1=?_{p)=tGVaT8D_Q!Ja>Ob95cnb>d9Xb=^A5|9d^3b>Fedkx5i%X^km0Z*-x`IQ!&HhR<|sReOXp(xp$rP^mzB9obIqw+IKy+ z=Zd#+U^tGgVA;gW8veP)bN)8I);U_}y`e(H#8q~eoyGRTEdq&N8(lMIsZaF&_@BOg z&fXA7-U&%Nsww>g(#OW)^$31HtOxrRSFx<<9_v;1gagjprUa-tfk6uw{GI4{W0o10 z$*6pVOut2eeeho?DJBry(|RzTQ2#Y{lEvpTKq8o=3`{_JzoChRyWRsym6fZE`z3knsLd^85UKk0*m|2N6 zi^1zdX5%O|YPy%bk1rDDJ}DhI&cmwnYL}WPecldX!M!K3(&CV%9O=D;2~RJ;3*$-c z)Y*Am?O4{dlQ3~O1h6JqZ+MO z*01sL*How0)Jpov=4rr8jxp2oeTMl5m^0%FYQ_0@Di+bzh*?i2@LZmcpm{ftwaAf2`8NuILQMA*`l%ZEWOl3Z z+zUB$v#$Hd>$*m0=D^v7H#jSTxtMPa=A!u%k5y^~a5XiW&{A$@8{p4iQypy>kF#)-ax(vvTxr@^~K&L+0q!E?CE` z!$u{iBOW})#0%#GW}jUi;#^D{B4)Tq!^~RF={;uJ{XR@}jw|N$o-p~Ce=oqi(tFGd z#^+dod8PM(7c=i5b%c|hmSuTo-Ls%^0r|bxx+&(A9+t-<8V zd32?B?VRniu+ARrR1EUYGZd%|b9#@39Jhx$E4oL4wp@As<)Vz5GbfMcv!!0i%{1ok zlnyubeRFQJ@xJjMGryD0{GsrrCmBiqF5J2+nYn+vu=P!=Zb|%X-`M&WG~BPsNGg+; P00000NkvXXu0mjfE!Tw% literal 0 HcmV?d00001 diff --git a/home/img/img-visa.png b/home/img/img-visa.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcaeeaae7a2d7c351f5d8d58b9d7a4e7754f33a GIT binary patch literal 7096 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 PBL`BJSCfOvn1=or0My)8 literal 0 HcmV?d00001 diff --git a/home/img/img-zaw.png b/home/img/img-zaw.png new file mode 100644 index 0000000000000000000000000000000000000000..e44d40a265f5ee47559a29024eb4148637695d27 GIT binary patch literal 1722 zcmV;r21WUaP)FV>v z$JxWi*hg?o)Yjyvs=f2{`q0tc!o=0%Ky@hk4{5Lc0|!NqMRO?n0Yi!s3G`4dMN+<% zR3gWxg0|D7mjI-qxV;1rUDQ1kD8$4~bR?6s%8|C)B>&P`E=kF@L{s86fl+P*n-;8> z<-VEOS-P?D`QFYGj<0(kY&5Q$0pUAtG(O`@B<6RGFL^V`w~dduGaogsacBP4_>epE z>&D02nfL#b^}H&~+I#K2_Fj9hys_CVq4T5Z zt>?V}Srn*6jx;D7JL@prVy3i?cL(Ht|KOMY!J-i^zxg8XF+|JPx|`?0O5O|e5EpwL z@9Q!jT^Z)JlFWyDd$-Cli@eV>O^b%)X;6k)*1N^xT;%9|k|oby+#Dqvl1#rS0WT&_ zQ`sWqF;ZXi@{UDsi++DRD{)o58vreKH3IPYc<<&{NQ(G)cR|kH3$wCW)sZu+zizgm zRhi-ZUM%zRJ{SBss-k!EEHmKY-OK|h39EpI_f_Xv%F&AJS&A9Ydsp~)x8~zh%uG7d3Hc5yC0R@-=D3rZbnPvOBRhaL(pPwt67suxEb4QUQ2bA8@5idU< zz3X$_CFf0ht@FE8gcR31znecSN1m>Ee!p_h>sDpf&uMG#wfFzCck^~|vF2k{KL{2x z26mBmV>*3-AB^cQ8Mu-4yHgy05)!Ba?#-+W<2%tb8HBxO2}R!N4z!z;ahW#pAgk#v z0m#&qY}*Hc)%qpOv);Al5FSqD>8m%-ah|Z-r_<|-M3?bGOE+H_y25av;A;uvI_TEl>7_?h(HH6@f^vbHv2 z%u$=odolCc8D_U_WxF?>Y z82f-L=wNz}kjXv~jTJ}GV|yYI%q@BsnInz4!OamQF6k(0m_y zKc?~1ky+^}bo46?WGi`=K$+%tpeG+w1^uoG9%c5D*bK;ko)p9qOsue&Y$r62+>>p| zgq@6ufM!wyw5A>swQbUH7)cA6=e(0V-(9+5t~g^lZPLNIF~+p;un1VM2?>uEFfVu~ zN5i4>_YmX9J;BOgv~p$#_KAyi!#PGKPIw|C%wNDf@130u()COpA>YiHR?DQ1sCDFo zHWpU{yoo{ecgNQ>$J2&4tjlpE_9;Xm3uH3^&SN@zhr`Sa%`JYW#$V)evXs5 zPVt}lHX!$^de(C5uOyc+q=H``l!SD={sSG1KMFjZQ?S8WHFUyy?hO$i{ Q^8f$<07*qoM6N<$g3T;(tpET3 literal 0 HcmV?d00001 diff --git a/home/img/img-zjcsImg.png b/home/img/img-zjcsImg.png new file mode 100644 index 0000000000000000000000000000000000000000..55e47f312a90c545ce4ce0275585d26cd13d8bfd GIT binary patch literal 1803 zcmV+m2lV)fP)hr_K*hg?o&CuVds=f2{`p(eZ!Nk?QzRlv}?b+Jq?(g=|(%$Fj@w2tYU9y5E00005 zbW%=JcY=oiNhPze?*IS>g-Jv~RA}Dqn!Rt^Mijs`r|4F6?9~6j89H=nvv+%zDcK@A z=qQU6JyDF~uc46gfjF5chmFxpk`2N25L9Yfq+f#=J5B0IQqv+R&_W9A)W}3Rb=;=! z_$4{07)rb%FrtfW(SrQb@%`@Jy*no|_Q8ex7R$$5W0BJmVcgC{-eZlFK8d`^nn}Kh zyuqA#GjfVK^M}aW%$XlY-eJ!C{eOw)Nnwt>kGzk(kGzk(pDgd92~Ojyti0F2Ym=YfYCi+y**K~J@AOVG0|Yb>GY3=dWj#PZgLubqcHHZk00Di8 z_j|N$0nFcX+8uz)*2S>i(>dtdCQ8G3_dz0bC`SVLw(Ky>qCYb>jQ1RHzxHbnwf;Bn z=iP+W{;{3`ei-jQAtNLMFpPJA#!$?gCx&?{Aano1`Co!D{k-=wB`eh*w1Y7Hy*FN5 zJ)#V~@3@oaGiHutx)wjD-}p8wCU%owL`_INV&xr^-aLK2(@k+pUJ90z zF@IjB&s%}=XD}uvJN_IYYtXI2L+5$P+8bKyk-=C}BR^)#e;=0^#{01Q zP2c^y;)je5w||$f_D4Q#zb5B(gEB|wv?K2$@2|1t{bX>`Xa#h~GBp#sJIsr2YO@M^n|M@nRO4qas>M><=qFmNikM*;^chZWJ+N2%N)-fi2n8$2!+WanW2>rd2T^u?lr|Vbf-?j=5 z%#Q6{JH~9qx=gXL&6}6~9C^p*_?8{ssPH9weCCuMret=yOlu=H@5|g*qUu6Z)o}Bh z&UfQ*zuv>#!75S9R&3_oC78;=!MdOK9jmHzH@{wNd-^G9U}m+fQm~i`9JHkeaNy@% zq{k^KdLk+4PHc6(-OGFeP>*X!wV2!IYWyYgc;DB1E^dF>bJK36US=&0Ye##30w-@; z@sw`CB=Pf3QPnN$=!edI+^%23CxbG@n9UU0P%7ap=B$l95x+L>H+&t@E%1ct{-rE! znr76Er;u>R5l9?mATXLD^Gma$l$do_F z!Z$1U&i5ZRuLk}Os!HJrd}=e5*=U!!1$zz?+uf^Gzxke?1-PCASl*z>e{d{G3Ou9U zMgE>vb(yjmPjjT0O~V52cGRZ&pucw^-P3#Fta$W9`ynr+Hd z_^J%LSq+lsQ*dC#a{mVAw<*IO^OB0sn>b|UL)rRWC>2-frX-4v7E~1jdY3ZVhV zQ$&|Gutv*_hx9(3w<;&>8s?)Lxk4pRQiYJ-GaVx0256ByIy))CGeevpGmVhmWmm}d zwQ8D{B)3VW9X8Kj{I84}GAGwcFT9YR49yf@d_k&?*7wo5&B*)6yT|;9IrIC-`vzmA t^hf0MCC1S8Gm)_m^Qj9AALrj4`xohjA_{#qp2h$G002ovPDHLkV1fpBq!0iA literal 0 HcmV?d00001 diff --git a/home/img/img-zjhsImg.png b/home/img/img-zjhsImg.png new file mode 100644 index 0000000000000000000000000000000000000000..c5015b071a11015724fcab79635438b7d94d1755 GIT binary patch literal 1776 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 P00000NkvXXu0mjfK3Ccg literal 0 HcmV?d00001 diff --git a/home/img/map-bg.png b/home/img/map-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2bab99f137abdb8e2e4385a6c2dbe30f9c022e GIT binary patch literal 2317 zcmeHJ`#aO^AOAQ#MovjNq)AOy&Lt#k6i*W=vP_P(FJm>9qrS3NnG0d0EnR2M)4t6Cx}z#x0c zZcghB6Ij&|aoo^oEkF(6%*vn9BIh;(^rPsZ(?Hmz4A-6_5ty~S-^2cdP5g;94rGsO zw@{(xyno%g9R~l8|7it!C(|;3_`#u}`*gZ?7&H1qVoND3jva=Qbb={kn+rk|@*rhlk5w=vVNxf=%?}?jVvMk$2zDvFD*+#t=<);;YCTuMa=J6|o3b$qzv?ylG)q;BOkimNBTQo-O!DO(}wIhd%Z&L2M-#fQGk z&Q7>)!^CxIIypF;PDwEaulTv3*c^)P1mU!0E>SK_^~QNI;kv(RYb$5O;?viQiyt;M zZNOr&;i@Nfb$cRf5E+|*KB2InsL0?D&B@X6-HK}Qy!8FXsM-f`ARF8yuf=h$!1Liw zPTGK;o*sb8T`ROoTE5s2e<4VV$z)0-UB$Gjs*ZtyQgJlQ*vHkP^T`SN@zBtlyreyS z|Ji~hdp-Om6VPj)J{{1qHP!*V{rqwhBQARbm%T;QE>~yg?6$T8D}VY0_dsO(eS$Q> zGdTyX1CJh+Au*m}q8X3J1G3kdI?`CDn}tf#1=UJIV&Yg@sq)v-1>ntdY?q$Y&dv_V zmdo*MdlOwXl#PEpMyLN&Rt=xp*ti>!pK!CH0!tw1Go#tNZx$C7#Ruld<#GnEGwr7} zx1gYaMx(s}>oq(wa(Fg>0U+NgKI<&y{#{xXFJZg06)d& zZH#sF3=JhB?iF*&4~4_>z2aIS?(n$%~F_;iJ!f_J%IY~FM=C~ymE@!e7fyuM*`dE} z$@86e85|kWK;_B{18$aM&-K`*a9LW+hK8i{H39wDvY{@pw6v6vknl69g&S++y~|%c zB*rxsQ3kcJ7+7=2-qeaUrLP}9kRG?Tdd;}`zD;VD^xoZ%^t6Of?&03a&Q0Lx zg0ZnDBU-B-_Wjp7&pcLr&dt>#c|l)BI=-DdWlXoJ*tl^csQ0T?2PL1o%TC4+B0i^D z%@RG1qtUtG>&)Ia5ems}u6eTXZ}GU!QW#hA{T_=ooT}5$^4`05FX$7b#V>coWSFr_ zlsbjG_0#v4iEeG^6msd%=xBmbBnDH9yCJl;DEuVlRS2KXq_rpm-Lh&3!-w6D963Uq zpAMd1T-?5?K>V(7bGgdO%8DwGY2L`!ePfju?P`$=^Is0e|Dzi=n|-HR6mBy`nUTvy z%Jh=J9closx5|f1ZhQ0^v`EXF3xTUzbJ_?4@&AZEI5afJ_E-_G~F8(>J(ddb(ByO_!YPl%=+di8R(j zfAZQYLes}PEUdyhPw=j?$R3nFNb{Mm!;_QDMa6eg-}rd`r%z|tL5Yb^su?d>toSTu zee4M|`h$N!B0QgxvG~QuNOR)#MP3R!)*008_56I@!NEbyQ*4^|>D+m2d;PpNaG=Ie zB9QH?C#@m-qIS_=VR;y^%>n%Vf_xhe#!~(Uk?`sv literal 0 HcmV?d00001 diff --git a/home/img/navigation.png b/home/img/navigation.png new file mode 100644 index 0000000000000000000000000000000000000000..dfba20a6ab06263bad6be2d31da740d8969bff1d GIT binary patch literal 1771 zcmV;P)>3m&Ql3%`H*4p&4poGStLrrqh_X zIUR%em%(IgF4JVAmNk`+W;2d>t7q1U3Q>18abLfkl8)j`AJE3Je0j1DAnv;Co;~N>L#pUj)1a$rGLI|2D0X_zO3TOh}I05Yb=k1y|>_+g}B{=SZIRtFJT^7xi5`7NUx!ZX#GTKA7H!+>+ z-0ketB>6MsX5gdQ4YQN)lfa8}F;t4_-TVFO-`LZ^s#8T?+`D@sHpl@%9R*|SnN{(K?rq|vkbm9 zHASKEl1KmLQEH5vcljJMEJ(Uu+*MZM`1ecnIc!N^%ZPQH#-0wJdL1KPOBQ$XfOi$Z z2K=Z~)FEL!fBzctl6Ay|g?q?PwKdXZ8S!YJ{SW^g(xT%i%H7JYvJyvIU0)}8SAO!L z3` zBSlY3e~*h!i9W|;obxw+_csXxY*YXl-lTyG0(dOpKJrubJQ%lJas0q#7nQ|? zMW781b#c-g+Tc)fR;H2=r50TYr+=+uk1pFIFz$KA&Kv@hp#WBjNnTFNWKW8ogzzZY zqkY^^E!u9eSy8JZXxZ_aU)GttoMHvWDhiBMqASESVCKDx-;ov_$8Ozvzvi1oq5_B% zlXP1~8Jm#2ggWT5jBxTdqp0ka@)PVx(W6oZ%O0}crU5f!HY*@(Pqiw-rSGV9+~+)UQ2;}DIhCfF=CrAa)21fY z#U-$J^*VAio;&Z)TN4yD{_N2%bv)0;?&JqqkF#&aaS-xJfw2nHa6d)4TPd!oAW|9P z*h=ns#XaxLks$@pf{f$3veQImr-`!MZESK2&hgd;`b3iIT#je=%D1-b4?rm505suI zqPasG9P0O6K4?(@H9)3ZjrVISJpyyMp-Qyxf}?M^{N9_GPU~>L$5sJn9@$k^;&a;_ z|E&Q-@*1+@lU!EE`j~sX_#n32T~4?iV(8~4H)dth$*W90j_m5%R+ z>ctB>cZ%Da`LWeVXpnMF!C5|&cmWPxJ;!_J$_Ni~o^o07!iBM_*Yj!+t_)_qb`|$U zE|xQu8TdW`umPX=W8`U5GuH-sX&)WrYm@xqDZ9MX5ghwXSq_F+4WU6w>biuLS~1i| zfzi2r)1u?hX|$LI%pN!BrK(7ls)UN<$6oQ`(~UyFWFb;F)!ns;g{SQ4sY za(YURii7O(Qc6a1c&oO8y@}}@$Tnae9rieOXYAy8W;N&gV#4KZM z!isrpn5y;`Uaddx(Z8(A#Okm}Uc7P^fRL#vlJAPeJT}b1>ND)WT1mVzl;P9d1#a(^K0$br^?&3Dvz}nOKl9B8PTf{><_D(` ze0Sg;m`UIX;OOnLXdZAB!DpBIjM#gnNrb0ZPXoRGyj^#UUIZWWa0?3feiK;=Bmr;Z zXPq<8xryLY5`vGSxF=t4*k9^z!1+=?YNmZYGXV_Xe5rqC=3|pm{0p=1KzFF#l+FME N002ovPDHLkV1k0uGME60V7H>M zAYyAETj&da|6ap!oSh0wW9rs4)VCjOrAP9ySUoV{&1zx3C!$XbeIm3n>8>g^)}V z2_d)+gSd1aP0r%5A#XmN#bff>oaGRk$?|3}y%{Vo8j}Sxd9W8B8vjv%Hk~37juHir z>jIRJl0*<%n87d@40MAR9oH!tEIyylV6qu(HVq(X`ZNuJ8fhB+q6rBiOfT1|w1f)R zKo*H;0-j0;DZtWKE~vGWVm12lFoA$EjHs5uqBAWnjR6(%Nt`xSmolbYA!lGIm>Sa% zdVpn3Vzo&)f$Nj-{~&tu_$LZLXeE+K9lvOcT0N;kPXw(8Zj1-y7twlYnigY3VR}4O zC&z-;12Y#{ywSpl4nqlCC&lrUi9|(Cm<%C^B{4qG(pZ&7fgAM8Ub};dPy!QD*i1GD zq>RSoNm)FY$%olKo=hK@$$SNs;0je@+RvaqQh?)l!))$PprC3LD1rV@utE+e;yN`7 zd{(JZCC1QdloV((k}!g&;5wifSm*URUyLA;Iy_O80uJ<1A%T!M2;s5#JRXfrXN{RF zk-%b&o%m=-fWb^NuVVpaCtP8$MK^1C@?vV#r5XMxfq{|Ch#Zj zi*R|Wr3xnQE8g&agiZyz5KZ~baxA@RDIYjgr3Z;k8}FWIY~A=SMFovj42;Sxogk#h zEhT^{DC2C^Z;rq#v4$iJ2>ma0@d~EL6A1&V!vd5bTEC|B7{GpprEOoi!uYwDV`s0m z_yiox4a;_NU;$!sAkhxzb~9OI}w@p-n@g3*x>bH1qR(FM*-$8QJ>f z*4_LigJA`sU+EiU%dOWOKUi-|iVKFa0^Vdjq^?Cy-~G1aM9i+$v|^B3d zkS?yR?m-Tm=ZAUxP0-rZaV3U;qSdiO8`|5+QMZn|-pYCG_56@2{Ny29-_>W1!g0%8 z7P`T{=FH*Pppoa@;k!1~_U-jZZkxVte{Pd3_L=wWg@1BmJ3$gDbj;Cej`iW)YH_>?>B! z=@}$b@>+)m7rTFc1W4fo*@kycf#Rc+%NqShiyp%ncBZtNOb1Ryqd&D*DIToPX*qX1 zdee39eP08{KGR!I79cH|LuJ5%&ny;fa=CZ*QJ$mcfV=O3Id>{t%`@uEal(^U#s0rL z&8#~w^J1tYe;i8hrD4V0pr>}au zr~aiUyHFGI?U!ipdSXwbae+0{?*Fs42)5njjii@0V! zxh=@M_v8^O|D?0KOT2Q4#!+njX!V|}#^Cn#%gzlyakNU?e-ULAgqK7#ZYZ?7^LhE5 z1@=2FO^iU*M?pW&d-OqT+>Y!^Eo!U^G`mOV6zj?rZj{0p1E9cQaxw+0m%eaHc0G1{ z8aE?L)C>Th25XkXg>~jm-i1*?ZsxYChvwWr9<`~MQdx9vbMp~TeZJoVyJlA9eFd*3iB(E?(XR1~IqH9a7r&*ETX#LepKJ%k_zL>K;!t$qB92739 I4P3MN-`hAGtpET3 literal 0 HcmV?d00001 diff --git a/home/img/tel.png b/home/img/tel.png new file mode 100644 index 0000000000000000000000000000000000000000..aae904df6a6660020a53cae969b5aafb21d4db7b GIT binary patch literal 2192 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 literal 0 HcmV?d00001 diff --git a/home/pages/3days/3days.js b/home/pages/3days/3days.js new file mode 100644 index 0000000..79d3b15 --- /dev/null +++ b/home/pages/3days/3days.js @@ -0,0 +1,40 @@ +// home/pages/dispatch/dispatch.js +const { getDataInThreeDays } = require("../../../api/api"); +Page({ + data: { + listObj: {} + }, + onLoad(options) { + this.setData({ + entryId:options.id + }); + this.getList(); + }, + onShow() { + + }, + + /** 列表 **/ + getList(){ + getDataInThreeDays({ + id: this.data.entryId, + }).then(res=>{ + if(res.code==200){ + this.setData({ + listObj:res.data + }); + }else{ + wx.showToast({ + title: res.msg, + icon:'none' + }) + } + }); + }, + + + /** 返回 **/ + back(e) { + wx.navigateBack(); + }, +}) \ No newline at end of file diff --git a/home/pages/3days/3days.json b/home/pages/3days/3days.json new file mode 100644 index 0000000..6f563b5 --- /dev/null +++ b/home/pages/3days/3days.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-search": "@vant/weapp/search/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index" + }, + "navigationBarTitleText": "近3天发电量" +} \ No newline at end of file diff --git a/home/pages/3days/3days.wxml b/home/pages/3days/3days.wxml new file mode 100644 index 0000000..22730ef --- /dev/null +++ b/home/pages/3days/3days.wxml @@ -0,0 +1,29 @@ +首次发电日期:{{listObj.firstGenerate}} + + + 日期/发电量 + 日期 + 发电量(KWh) + + + + 第一天 + {{listObj.firstDay}} + {{listObj.firstDayElectric}} + + + 第二天 + {{listObj.secondDay}} + {{listObj.secondDayElectric}} + + + 第三天 + {{listObj.thirdlyDay}} + {{listObj.thirdlyDayElectric}} + + + + + + 返回 + diff --git a/home/pages/3days/3days.wxss b/home/pages/3days/3days.wxss new file mode 100644 index 0000000..53761b9 --- /dev/null +++ b/home/pages/3days/3days.wxss @@ -0,0 +1,10 @@ + +.head-tit{font-size: 28rpx; padding: 20rpx;} +.footer{display: flex; align-items: center; position:fixed; left: 0; bottom: 0; right: 0; background-color: #fff; width: 100%;text-align: center; line-height: 80rpx; font-size: 30rpx; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);} +.footer .long{color: #fff; background-color: #0a6597;} + +.table-head{display: flex; align-items: center; text-align: center; font-size: 28rpx; font-weight: 600; background-color: #f0f0f0; line-height: 80rpx; border: 1px solid #CCC;} +.table-head view{flex: 1;} +.table-body .list{display: flex; align-items: center; text-align: center; font-size: 26rpx; background-color: #fff; padding: 30rpx 0; } +.table-body .list>view{flex: 1;} +.table-body .list:nth-child(2n + 1){background-color: #f6fafc;} \ No newline at end of file diff --git a/home/pages/acceptance/acceptance.js b/home/pages/acceptance/acceptance.js new file mode 100644 index 0000000..bf33d3e --- /dev/null +++ b/home/pages/acceptance/acceptance.js @@ -0,0 +1,630 @@ +// pages/acceptance/acceptance.js +const { + entryDetail, + IMG_BASE_URL, + getActualCapacity, + getProviceCodeList +} = require('../../../api/api') + +import Dialog from '@vant/weapp/dialog/dialog'; +Page({ + + /** + * 页面的初始数据 + */ + data: { + IMG_BASE_URL: IMG_BASE_URL, + noneImg: 'https://sky-energy.oss-cn-beijing.aliyuncs.com/prohibit_delete/wutupian.png', + // photoTips: { + // //安装 + // //1.设备信息照片 + // nbqPlateImg:{ + // title: '逆变器序列号照片', + // message: '照片清晰,可识别逆变器的序列号、规格型号、生产厂商等信息' + // }, + // txPlateImg:{ + // title: '逆变器通讯棒照片', + // message: '照片清晰,可识别通讯棒的序列号、二维码、LOGO' + // }, + // zjPlateImg:{ + // title: '组件铭牌照片', + // message: '照片清晰,可识别组件品牌、功率等级、性能参数' + // }, + // zjSnImgs:{ + // title: '组件SN', + // message: '1、上传组件包装箱A4 纸条码或组件边框SN最少2张;2、图片清晰可看清SN 号码。' + // }, + // //2.支架及组件安装照片 + // zjImg1:{ + // title: '膨胀螺栓', + // message: '膨胀螺丝大小不低于设计要求,阳光房膨胀螺丝M12*100' + // }, + // zjImg2:{ + // title: '基座安装固定', + // message: '1、膨胀螺丝必须使用大垫片固定;2、照片能够看出第二道防水。' + // }, + // zjImg3:{ + // title: '底座防水', + // message: '1、照片能够体现三道防水施工完成;2、整个底座均需涂刷防水;3、防水面积大于底座5cm以上。' + // }, + // zjImg4:{ + // title: '支架基础距离房檐的距离', + // message: '1、能够看清楚底座距离墙边的距离,不小于200mm;2、有女儿墙的测量外墙到立柱的距离;' + // }, + // zjImg5:{ + // title: '支架东向西拍摄', + // message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + // }, + // zjImg6:{ + // title: '支架西向东拍摄', + // message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + // }, + // zjImg7:{ + // title: '支架南向北拍摄', + // message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + // }, + // zjImg8:{ + // title: '支架北向南拍摄', + // message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + // }, + // zjImg9:{ + // title: '支架角度', + // message: '1、支架角度和图纸保持一致,按图施工;2、必须使用角度仪进行测量,不允许使用手机。' + // }, + // componentImg1:{ + // title: '支架节点(斜支撑)', + // message: '1、按图施工;2、焊接必须满焊;3、防腐防锈按要求施工。' + // }, + // componentImg2:{ + // title: '支架距照片(南北)', + // message: '1、间距尺寸符合图施工;2、能够看清立柱南北间距尺寸。' + // }, + // componentImg3:{ + // title: '支架距照片(东西)', + // message: '1、间距尺寸符合图施工;2、能够看清立柱东西间距尺寸。' + // }, + // componentImg4:{ + // title: '防风加固', + // message: '1、横拉杆和背拉杆施工按图施工。' + // }, + // sizeMeasureImgs:{ + // title: '方管尺寸测量', + // message: '1.三种方管尺寸均需测量(100*100/80*40/50*50)。' + // }, + // //3.电气设备安装照片 + // totalImgs:{ + // title: '并网箱、逆变器外部安装照片、接地引下线', + // message: '1、墙面安装底部高度不小于1.8米;2、建议安装高度2 米。3、方位角在150-300 之间必须安装遮阳棚。4、周边是否存在易燃易爆物品。' + // }, + // bwInnerImg:{ + // title: '并网箱内部整体照片', + // message: '1、线鼻是否压接;2、防火封堵完整;3、线缆线皮包扎。' + // }, + // dqsbAnImgOne:{ + // title: '直流线缆保护', + // message: '1、直流电缆穿管保护;2、管口需使用防火泥封堵。' + // }, + // dqsbAnImgTwo:{ + // title: '直流线缆固定', + // message: '1、直流电缆走线横平竖直;2、直流电缆绑住需使用包塑扎丝固定。' + // }, + // //4.接地系统照片 + // zjJdImgs:{ + // title: '引下线与支架连接点、南北坡接地连接点', + // message: '1、焊接倍数满足要求,建议10cm;2、焊接满焊;3、防腐防锈施工完成。' + // }, + // groundResistanceImgs:{ + // title: '接地电阻', + // message: '1、电气接地小于4Ω;2、支架接地小于10Ω;3、共用接地小于4Ω。' + // }, + // zujianJdImg:{ + // title: '组件边框接地', + // message: '1.组件边框接地可靠' + // }, + // //5.调试记录照片 + // openSayVoltageImgs:{ + // title: '开路电压', + // message: '1、组串号按图施工;2、需要测量每一路开路电压;3、开路电压测量时能够看清楚号码线管;4、第一张照片需附逆变器下MPPT插入照片。' + // }, + // //6.方阵安装完毕整体照片 + // directionAirImg1:{ + // title: '东向西航拍', + // message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + // }, + // directionAirImg2:{ + // title: '西向东航拍', + // message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + // }, + // directionAirImg3:{ + // title: '南向北航拍', + // message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + // }, + // directionAirImg4:{ + // title: '北向南航拍', + // message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + // }, + // zjNearImg:{ + // title: '组件近景', + // message: '1、无遮挡;2、无异物、无划伤' + // }, + // zjNngleImg:{ + // title: '组件角度', + // message: '1、组件角度和图纸一致。' + // }, + // zjItemImg:{ + // title: '檩条出组件照片', + // message: '1、檩条末端预留安全长度不小于6cm;2、照片需要测量尺寸。' + // }, + // waterChannelImg:{ + // title: '水槽照片', + // message: '1、水槽清晰可见。' + // }, + // mediumFixImg:{ + // title: '中压固定照片', + // message: '1、压块固定牢固跟图纸要求一致。' + // }, + // safetyWarningImg:{ + // title: '安全警示牌', + // message: '1、在上人位置悬挂安全警示牌。' + // }, + // safetyDiscloseDocImg:{ + // title: '现场安全交底文件', + // message: '1、现场交底记录必须现场签字;2、签字人数跟现场影像照片一致。3、交底人跟被交底人不允许为同一人。' + // }, + // discloseDocImg:{ + // title: '现场交底照片', + // message: '1、安全帽佩戴正确;2、帽带必须戴好;3、涉及高空作业人员佩戴安全带和防坠器、防滑鞋;4、反光背心穿戴整齐。' + // }, + // recordDocImg:{ + // title: '记录表', + // message: '1、是否全部认真检查,检查结果是否合格;2、结论是否手签,检查人签字等。' + // }, + // //并网 + // yxImg: { + // title: '电站运行信息', + // message: '监控后台逆变器连续三天的日发电量截图' + // }, + // gebImg: { + // title: '补充图片', + // message: '其他细节照片可根据需要自行增加' + // }, + // }, + + // 安装 + photoTips: [ + //安装 + { + title:'1.设备信息照片', + list:[{ + key:'nbqPlateImg', + num:1, + title: '逆变器序列号照片', + message: '1、铭牌清晰' + },{ + key:'txPlateImg', + num:1, + title: '逆变器通讯棒照片', + message: '1、清晰' + },{ + key:'zjPlateImg', + num:1, + title: '组件铭牌照片', + message: '1、组件铭牌内容清晰。' + },{ + key:'zjSnImgs', + num:4, + title: '组件SN', + message: '1、上传组件包装箱A4 纸条码或组件边框SN最少2张;2、图片清晰可看清SN 号码。' + }] + }, + { + title:'2.支架及组件安装照片', + list:[{ + key:'zjImg1', + num:1, + title: '膨胀螺栓', + message: '膨胀螺丝大小不低于设计要求,阳光房膨胀螺丝M12*100' + },{ + key:'zjImg2', + num:1, + title: '基座安装固定', + message: '1、膨胀螺丝必须使用大垫片固定;2、照片能够看出第二道防水。' + },{ + key:'zjImg3', + num:1, + title: '底座防水', + message: '1、照片能够体现三道防水施工完成;2、整个底座均需涂刷防水;3、防水面积大于底座5cm以上。' + },{ + key:'zjImg4', + num:1, + title: '支架基础距离房檐的距离', + message: '1、能够看清楚底座距离墙边的距离,不小于200mm;2、有女儿墙的测量外墙到立柱的距离;' + },{ + key:'zjImg5', + num:1, + title: '支架东向西拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg6', + num:1, + title: '支架西向东拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg7', + num:1, + title: '支架南向北拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg8', + num:1, + title: '支架北向南拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg9', + num:1, + title: '支架角度', + message: '1、支架角度和图纸保持一致,按图施工;2、必须使用角度仪进行测量,不允许使用手机。' + },{ + key:'componentImg1', + num:1, + title: '支架节点(斜支撑)', + message: '1、按图施工;2、焊接必须满焊;3、防腐防锈按要求施工。' + },{ + key:'componentImg2', + num:1, + title: '支架距照片(南北)', + message: '1、间距尺寸符合图施工;2、能够看清立柱南北间距尺寸。' + },{ + key:'componentImg3', + num:1, + title: '支架距照片(东西)', + message: '1、间距尺寸符合图施工;2、能够看清立柱东西间距尺寸。' + },{ + key:'componentImg4', + num:3, + title: '防风加固', + message: '1、横拉杆和背拉杆施工按图施工。' + },{ + key:'sizeMeasureImgs', + num:9, + title: '方管尺寸测量', + message: '1.三种方管尺寸均需测量(100*100/80*40/50*50)。' + }] + }, + { + title:'3.电气设备安装照片', + list:[{ + key:'totalImgs', + num:1, + title: '并网箱、逆变器外部安装照片、接地引下线', + message: '1、墙面安装底部高度不小于1.8米;2、建议安装高度2 米。3、方位角在150-300 之间必须安装遮阳棚。4、周边是否存在易燃易爆物品。' + },{ + key:'bwInnerImg', + num:1, + title: '并网箱内部整体照片', + message: '1、线鼻是否压接;2、防火封堵完整;3、线缆线皮包扎。' + },{ + key:'dqsbAnImgOne', + num:1, + title: '直流线缆保护', + message: '1、直流电缆穿管保护;2、管口需使用防火泥封堵。' + },{ + key:'dqsbAnImgTwo', + num:1, + title: '直流线缆固定', + message: '1、直流电缆走线横平竖直;2、直流电缆绑住需使用包塑扎丝固定。' + }], + }, + { + title:'4.接地系统照片', + list:[{ + key:'zujianJdImg', + num:1, + title: '组件边框接地', + message: '1.组件边框接地可靠' + },{ + key:'zjJdImgs', + num:2, + title: '引下线与支架连接点、南北坡接地连接点', + message: '1、焊接倍数满足要求,建议10cm;2、焊接满焊;3、防腐防锈施工完成。' + },{ + key:'groundResistanceImgs', + num:2, + title: '接地电阻', + message: '1、电气接地小于4Ω;2、支架接地小于10Ω;3、共用接地小于4Ω。' + }] + }, + { + title:'5.调试记录照片', + list:[{ + key:'openWayVoltageImgs', + num:6, + title: '开路电压', + message: '1、组串号按图施工;2、需要测量每一路开路电压;3、开路电压测量时能够看清楚号码线管;4、第一张照片需附逆变器下MPPT插入照片。' + }] + }, + { + title:'6.方阵安装完毕整体照片', + list:[{ + key:'directionAirImg1', + num:1, + title: '东向西航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'directionAirImg2', + num:1, + title: '西向东航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'directionAirImg3', + num:1, + title: '南向北航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'directionAirImg4', + num:1, + title: '北向南航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'zjNearImg', + num:1, + title: '组件近景', + message: '1、无遮挡;2、无异物、无划伤' + },{ + key:'zjAngleImg', + num:1, + title: '组件角度', + message: '1、组件角度和图纸一致。' + },{ + key:'zjItemImg', + num:1, + title: '檩条出组件照片', + message: '1、檩条末端预留安全长度不小于6cm;2、照片需要测量尺寸。' + },{ + key:'waterChannelImg', + num:1, + title: '水槽照片', + message: '1、水槽清晰可见。' + },{ + key:'mediumFixImg', + num:1, + title: '中压固定照片', + message: '1、压块固定牢固跟图纸要求一致。' + },{ + key:'safetyWarningImg', + num:1, + title: '安全警示牌', + message: '1、在上人位置悬挂安全警示牌。' + },{ + key:'safetyDiscloseDocImg', + num:1, + title: '现场安全交底文件', + message: '1、现场交底记录必须现场签字;2、签字人数跟现场影像照片一致。3、交底人跟被交底人不允许为同一人。' + },{ + key:'discloseDocImg', + num:1, + title: '现场交底照片', + message: '1、安全帽佩戴正确;2、帽带必须戴好;3、涉及高空作业人员佩戴安全带和防坠器、防滑鞋;4、反光背心穿戴整齐。' + },{ + key:'recordDocImg', + num:1, + title: '记录表', + message: '1、是否全部认真检查,检查结果是否合格;2、结论是否手签,检查人签字等。' + }] + }, + //并网 + { + title:'并网', + list:[{ + key:'yxImg', + num:1, + title:'电站运行信息', + message: '监控后台逆变器连续三天的日发电量截图' + },{ + key:'gebImg', + num:1, + title: '补充图片', + message: '其他细节照片可根据需要自行增加' + },{ + key:'gebImg2', + num:1, + title: '补充图片2', + message: '其他细节照片可根据需要自行增加' + }] + }, + ], + photo: { + //1.设备信息照片 + nbqPlateImg: [],//逆变器序列号照片,逆变器1铭牌照片 + txPlateImg: [],//逆变器通讯棒照片,通讯棒1铭牌照 + zjPlateImg: [],//组件铭牌照片 + zjSnImgs:[],//组件SN,1-4张---- + //2.支架及组件安装照片 + zjImg1: [],//膨胀螺栓 + zjImg2: [],//基座安装固定 + zjImg3: [],//底座防水 + zjImg4: [],//支架基础距离房檐的距离 + zjImg5: [],//支架东向西拍摄 + zjImg6: [],//支架西向东拍摄--- + zjImg7: [],//支架南向北拍摄--- + zjImg8: [],//支架北向南拍摄--- + zjImg9: [],//支架角度---- + componentImg1: [],//支架节点(斜支撑) + componentImg2: [],//支架距照片(南北) + componentImg3: [],//支架距照片(东西) + componentImg4: [],//防风加固,1-3张 + sizeMeasureImgs: [],//方管尺寸测量---,9张 + //3.电气设备安装照片 + totalImgs: [],//并网箱、逆变器外部安装照片、接地引下线,逆变器、并网箱整体安装照片, 存在字段名逆变器和并网箱接地照 + bwInnerImg: [],//并网箱内部整体照片 + dqsbAnImgOne: [],//直流线缆保护 + dqsbAnImgTwo: [],//直流线缆固定 + //4.接地系统照片 + zjJdImgs: [],//引下线与支架连接点、南北坡接地连接点,2张---- + groundResistanceImgs: [],//接地电阻,1-2张----- + zujianJdImg: [],//组件边框接地 + //5.调试记录照片 + openWayVoltageImgs: [],//开路电压,1-6张----- + //6.方阵安装完毕整体照片 + directionAirImg1: [],//东向西航拍---- + directionAirImg2: [],//西向东航拍---- + directionAirImg3: [],//南向北航拍---- + directionAirImg4: [],//北向南航拍---- + zjNearImg: [],//组件近景---- + zjAngleImg: [],//组件角度---- + zjItemImg: [],//檩条出组件照片---- + waterChannelImg: [],//水槽照片---- + mediumFixImg: [],//中压固定照片---- + safetyWarningImg: [],//安全警示牌---- + safetyDiscloseDocImg: [],//现场安全交底文件---- + discloseDocImg: [],//现场交底照片---- + recordDocImg: [],//记录表---- + }, + + }, + + onLoad(options) { + this.setData({ + entryId: options.projectId, + type: options.type, //0是安装,1是并网 + }) + this.entryDetail() + }, + /** + * + * 获取电站详情 + * + * @param {*} e + */ + entryDetail(e) { + entryDetail({ + userId: wx.getStorageSync('userId'), + entryId: this.data.entryId, + }).then((res) => { + this.setData({ + 'data.projectId': res.project_id, + 'data.projectCode': res.projectCode, + 'data.projectName': res.projectName, + 'data.powerStationCode': res.power_station_code, + 'data.name': res.tenant_name, + 'data.traderName': res.create_trader_name, + 'data.traderTel': res.traderTel, + 'data.phone': res.mobile, + 'data.idCard': res.id_code, + 'data.region': res.province + res.city + res.area + res.address, + 'data.scheme': res.scheme_type == 1 ? "标准方案" : "组合方案", + 'data.generatorNo': res.generator_no, //发电户号 + 'data.code': res.province_code, //发电户号 + //并网图片显示 + [`bwPhoto.gebImg[0].url`]: res.report.gebImg ? this.data.IMG_BASE_URL + res.report.gebImg : this.data.noneImg, + [`bwPhoto.gebImg2[0].url`]: res.report.gebImg2 ? this.data.IMG_BASE_URL + res.report.gebImg2 : this.data.noneImg, + [`bwPhoto.yxImg[0].url`]: res.report.yxImg ? this.data.IMG_BASE_URL + res.report.yxImg : this.data.noneImg, + 'data.bankName': res.bank_name,//开户银行 + 'data.bankCode': res.bank_code,//银行账号 + 'data.powerName': res.powerName,//项目名称 + 'data.zujBrand': res.map.zujBrand,//组件品牌 + }) + + + if (res.sn) { + var snList = res.sn.split(",") + this.setData({ + snList: snList + }) + } + + if (res.nbq_sn) { + var nbqSnList = res.nbq_sn.split(",") + this.setData({ + nbqSnList: nbqSnList, + }) + } + + + if (res.report) { + for(let i in this.data.photo){ + if(res.report[i]){ + let arr = res.report[i].split(","),arr2=[]; + arr.forEach(itm=>{ + arr2.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.${i}`]: arr2, + }); + }else{ + this.setData({ + [`photo.${i}`]: [{name:'',url:this.data.noneImg}], + }); + } + } + } + this.getActualCapacity() + // this.getProviceCodeList() + }) + }, + + + /** + * + * 获取电力公司 + * + * @param {*} e + */ + getProviceCodeList(e) { + getProviceCodeList({ + + }).then((res) => { + if (res.code == 200) { + res.data.forEach(element => { + const code = element.columns.code + if (code == this.data.data.code){ + this.setData({ + 'data.powerCompanyName':element.columns.power_company + }) + } + }); + } + }) + }, + + + + /** + * + * 查询安装组件信息 + * + * @param {*} e + */ + getActualCapacity(e) { + getActualCapacity({ + entryId: this.data.entryId, + }).then((res) => { + const data = JSON.parse(res.data) + this.setData({ + component: data.columns + }) + }) + }, + + /** + * + * 查看注意方案 + * + * @param {*} e + */ + viewNote(e) { + let title = e.currentTarget.dataset.tit; + let message = e.currentTarget.dataset.msg; + Dialog.alert({ + title: title, + message: message, + theme: 'round-button', + }).then(() => { + + }); + }, + +}) \ No newline at end of file diff --git a/home/pages/acceptance/acceptance.json b/home/pages/acceptance/acceptance.json new file mode 100644 index 0000000..875cc11 --- /dev/null +++ b/home/pages/acceptance/acceptance.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-dialog": "@vant/weapp/dialog/index" + }, + "navigationBarTitleText": "验收报告" +} \ No newline at end of file diff --git a/home/pages/acceptance/acceptance.wxml b/home/pages/acceptance/acceptance.wxml new file mode 100644 index 0000000..a2772e8 --- /dev/null +++ b/home/pages/acceptance/acceptance.wxml @@ -0,0 +1,185 @@ + + + + 电站基本信息 + + + 产品编号 + {{data.projectCode}} + + + + + 产品名称 + {{data.projectName}} + + + + + 代理商名称 + {{data.traderName}} + + + + + + + 业主姓名 + {{data.name}} + + + + + 身份证号码 + {{data.idCard}} + + + + + 安装地址 + {{data.region}} + + + + + 联系电话 + {{data.phone}} + + + + + 安装方案 + {{data.scheme}} + + + + + 电站编码 + {{data.powerStationCode}} + + + + + + 发电户号 + {{data.generatorNo}} + + + + + + 项目名称 + {{data.powerName}} + + + + + 组件规格 + + {{component.spec}} + W + + + + + + 安装组件数量 + {{component.amount}} + + + + + 安装组件容量 + {{component.total}} + W + + + + + + 通讯棒SN码 + {{item}} + + + + + + + 逆变器SN码 + {{item}} + + + + + + + + 电站安装完成验收条款项 + + + + + {{item.title}} + + + + + + {{child.title}} + + + + + + + + + + + + + + 电站并网验收条款项 + + + + + 电站运行信息 + + + + + 运行信息 + + + + + + + + + 补充1 + + + + + + + + 补充2 + + + + + + + + + + + + \ No newline at end of file diff --git a/home/pages/acceptance/acceptance.wxss b/home/pages/acceptance/acceptance.wxss new file mode 100644 index 0000000..d9a90e6 --- /dev/null +++ b/home/pages/acceptance/acceptance.wxss @@ -0,0 +1,128 @@ +/* pages/acceptance/acceptance.wxss */ +.content { + margin-top: 20rpx; + padding-top: 1rpx; + padding-bottom: 1rpx; + width: 750rpx; + background-color: #ffffff; + font-size: 28rpx; +} + +.content-line { + width: 100%; + height: 2rpx; + background-color: #f2f2f2; +} + +.content-list { + display: flex; + align-items: center; + margin: 20rpx 20rpx 10rpx; +} + +.content-list-title { + width: 180rpx; + flex-shrink: 0; + margin-right: 20rpx; +} + +.content-title { + margin: 20rpx; + margin-left: 20rpx; + font-weight: bold; + font-size: 30rpx; +} + + +.content-red { + margin-right: 10rpx; + color: red; +} + +.content-attention-showText { + display: flex; +} + +.content-attention { + width: 44rpx; + height: 44rpx; + flex-shrink: 0; + transform: translate(0,-8rpx); +} + +.content-attention-text { + font-size: 24rpx; + display: flex; + padding: 10rpx 0rpx 8rpx 0rpx; + align-items: flex-start; + line-height: 30rpx; +} + +.content-fontstyle { + font-weight: bold; +} + +.content-img-box { + display: flex; + flex-wrap: wrap; + align-items: stretch; + margin: 0 20rpx 20rpx; +} + +.content-img-name { + display: flex; + flex-direction: column; + align-items: flex-start; + width: calc(33.33% - 20rpx); + justify-content: space-between; + margin: 0 10rpx; +} +.content-img-name.w-100{ + width: 100%; + align-items: flex-start; +} + +.content-img { + width: 150rpx; + height: 150rpx; + display: inline-block; +} +.content-img-name.w-100 .van-uploader__preview { + /* margin: 0 16rpx 16rpx !important; */ + margin-right: 88rpx !important; +} +.content-img-name.w-100 .van-uploader__preview:nth-child(3n) { + margin-right: 0 !important; +} +.content-img-box .content-line + .content-line { + display: none; +} + +.buttom-margin { + width: 750rpx; + height: 200rpx; +} + + +.from-submit-buttom { + position: fixed; + bottom: 0; + display: flex; + flex-direction: row; + width: 750rpx; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff; + z-index: 10; +} + + +.from-submit-buttom-confirm { + width: 100%; + height: 80rpx; + background-color: #0A6597; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} \ No newline at end of file diff --git a/home/pages/acceptanceAZ/acceptanceAZ.js b/home/pages/acceptanceAZ/acceptanceAZ.js new file mode 100644 index 0000000..358f6e2 --- /dev/null +++ b/home/pages/acceptanceAZ/acceptanceAZ.js @@ -0,0 +1,234 @@ +// pages/acceptance/acceptance.js +const { + entryDetail, + IMG_BASE_URL, + WU_TU_PIAN_URL, + toNetAccept, + getUsedMaterialInfo +} = require('../../../api/api') +Page({ + data: { + tabIndex:'0', + childObj:{},//子组件详情数据 + checked:false,//物料安装完成状态是否安装已完成 + otherFiles: [], //其他资料 + }, + onLoad(options) { + this.setData({ + entryId: options.projectId, + type: options.type, + }); + this.entryDetail() + }, + /** 获取电站详情 **/ + entryDetail(e) { + entryDetail({ + userId: wx.getStorageSync('userId'), + entryId: this.data.entryId, + }).then((res) => { + this.setData({ + detail: res, + id: res.id, //修改数据的时候传此ID + projectId: res.project_id, + tenant_type: res.tenant_type=='1' ? '个人' : '单位',//1.个人,2单位 + //业主信息参数 + name: res.tenant_name, + phone: res.mobile, + idCard: res.id_code, + regno: res.regno, + provinceName: res.province, + cityName: res.city, + areaName: res.area, + address: res.address, + childObj:res,//子组件详情数据 + /*********/ + [`photo.filingDocumentPhoto[0].url`]:res.filing_document_photo ? IMG_BASE_URL + res.filing_document_photo : WU_TU_PIAN_URL,//备案证 + otherFiles: res.report && res.report.otherFiles?res.report.otherFiles.split(","):[] + }); + const detailObj = JSON.parse(JSON.stringify(this.data)) + this.setData({ + detailObj, + }); + if(res.management == '04'){//华融 + if (res.projectDetailList[0].componentList.length > 0) { + this.getUsedMaterialInfo() + } + }else{ + if (res.componentList.length > 0) { + this.getUsedMaterialInfo() + } + } + }) + }, + /** 业主信息 **/ + userFn(e){ + wx.navigateTo({ + url: '/home/pages/ownerForm/ownerForm?projectId=' + this.data.entryId, + }) + }, + /** 拨打业主联系电话 **/ + phoneFn(e) { + const phone = e.currentTarget.dataset.phone; + if (!phone) { + wx.showToast({ + title: '暂无联系方式', + icon: 'none' + }) + return + } + wx.makePhoneCall({ + phoneNumber: phone, + }) + }, + /** tab切换 **/ + tabChange(e){ + let index = e.currentTarget.dataset.index; + this.setData({ + tabIndex:index + }); + }, + /** 物料安装完成状态勾选 **/ + onChange(event) { + this.setData({ + checked: event.detail, + }); + }, + /** + * 提交 + */ + passFn(e) { + let type = e.currentTarget.dataset.type, txt = ''; + if(type == '2'){ + if (!this.data.fixConclusionSh) { + wx.showToast({ + title: '请输入不通过验收意见', + icon: 'none' + }) + return + } + txt = '不通过成功'; + }else{ + if(!this.data.checked){ + wx.showToast({ + title: '请先勾选物料安装完成状态', + icon: 'none' + }) + return + } + txt = '通过成功'; + } + // console.log("执行5", this.data.fixConclusionSh); + // return + wx.showLoading({ + title: "提交中", + mask: true + }); + toNetAccept({ + id: this.data.entryId, + type:type,//1.通过 2.驳回 + fixConclusionSh: this.data.fixConclusionSh ? this.data.fixConclusionSh : "", + materialFixFlag : this.data.checked ? '1' : '0',//物料安装完成状态:0.未完成 1.已完成 + userId: wx.getStorageSync('userId') + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + wx.showToast({ + title: txt, + icon: 'none', + success: function () { + setTimeout(function () { + wx.navigateBack() + }, 1500) + } + }) + } else { + wx.showToast({ + title: res.msg || res.errMsg, + icon: 'none', + }) + } + }) + }, + /** 获取使用物料列表 **/ + getUsedMaterialInfo(e) { + getUsedMaterialInfo({ + entryId: this.data.entryId, + }).then((res) => { + var componentList = []; //组件 + var converterList = []; //逆变器 + var cagesList = []; //并网箱 + var supportList = []; //支架 + if (res.code == 200) { + //华融安装多产品 + if(res.data.projectSettingList){ + this.setData({ + productList: JSON.parse(res.data.projectSettingList) + }) + } + res.data.materialEntryList = JSON.parse(res.data.materialEntryList) + if (res.data.materialEntryList.length > 0) { + res.data.materialEntryList.forEach(element => { + if (element.type == "组件") { + componentList.push(element) + } else if (element.type == "逆变器") { + converterList.push(element) + } else if (element.type == "并网箱") { + cagesList.push(element) + } else if (element.type == "支架") { + supportList.push(element) + } + }); + + var list = []; + componentList.forEach(element => { + var pos = list.findIndex((res) => { + return res.materialId == element.materialId && res.projectId == element.projectId + }) + if (pos == -1) { + element.itemList = [JSON.parse(JSON.stringify(element))] + list.push(element) + } else { + list[pos].itemList.push(element) + } + }); + + var list1 = []; + converterList.forEach(element => { + var pos = list1.findIndex((res) => { + return res.materialId == element.materialId && res.projectId == element.projectId + }) + if (pos == -1) { + element.itemList = [JSON.parse(JSON.stringify(element))] + list1.push(element) + } else { + list1[pos].itemList.push(element) + } + }); + + this.setData({ + componentList: list, + converterList: list1, + cagesList: cagesList, + supportList: supportList, + nbqList: res.data.nbqMap?JSON.parse(res.data.nbqMap):[], + zjMap: res.data.zjMap?JSON.parse(res.data.zjMap):'' + // nbqList: JSON.parse(res.data.nbqMap), + // zjMap: JSON.parse(res.data.zjMap) + }) + } else { + this.setData({ + componentList: [], + converterList: [], + cagesList: [], + supportList: [], + nbqList: res.data.nbqMap?JSON.parse(res.data.nbqMap):[], + zjMap: res.data.zjMap?JSON.parse(res.data.zjMap):'' + // nbqList: JSON.parse(res.data.nbqMap), + // zjMap: JSON.parse(res.data.zjMap) + }) + } + + } + }) + }, +}) \ No newline at end of file diff --git a/home/pages/acceptanceAZ/acceptanceAZ.json b/home/pages/acceptanceAZ/acceptanceAZ.json new file mode 100644 index 0000000..e6f5dd8 --- /dev/null +++ b/home/pages/acceptanceAZ/acceptanceAZ.json @@ -0,0 +1,14 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-dialog": "@vant/weapp/dialog/index", + "van-checkbox": "@vant/weapp/checkbox/index", + "finish": "/home/components/finish/finish", + "finishHR": "/home/components/finishHR/finishHR", + "install": "/home/components/install/install", + "installHR": "/home/components/installHR/installHR", + "survey": "/home/components/survey/survey", + "userInfo": "../../components/userInfo/userInfo" + }, + "navigationBarTitleText": "安装验收" +} \ No newline at end of file diff --git a/home/pages/acceptanceAZ/acceptanceAZ.wxml b/home/pages/acceptanceAZ/acceptanceAZ.wxml new file mode 100644 index 0000000..27c70e9 --- /dev/null +++ b/home/pages/acceptanceAZ/acceptanceAZ.wxml @@ -0,0 +1,56 @@ + + + + + + + + + + 完工信息 + + + + 安装信息 + + + + + + + + + + + + + + 物料安装完成状态 + 安装已完成 + + + + 验收意见 + + + + + + + + + 不通过 + 通过 + + + \ No newline at end of file diff --git a/home/pages/acceptanceAZ/acceptanceAZ.wxss b/home/pages/acceptanceAZ/acceptanceAZ.wxss new file mode 100644 index 0000000..4be7e82 --- /dev/null +++ b/home/pages/acceptanceAZ/acceptanceAZ.wxss @@ -0,0 +1,33 @@ +@import "/home/pages/entryInfoAudit/entryInfoAudit.wxss"; +.content-tab { + width: 750rpx; + height: 90rpx; + display: flex; + flex-direction: row; + background-color: #ffffff; + margin-bottom: 1px; +} +.content-tab-item { + flex: 1; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: 28rpx; + color: #666; + position: relative; +} +.content-tab-item-select { + color: #333; + font-size: 32rpx; + font-weight: bold; +} +.content-tab-item-select-tab { + position: absolute; + bottom: 0; + width: 60rpx; + height: 6rpx; + background-color: #0a6597; + border-radius: 3rpx; +} \ No newline at end of file diff --git a/home/pages/acceptanceBW/acceptanceBW.js b/home/pages/acceptanceBW/acceptanceBW.js new file mode 100644 index 0000000..40debd6 --- /dev/null +++ b/home/pages/acceptanceBW/acceptanceBW.js @@ -0,0 +1,616 @@ +// pages/acceptance/acceptance.js +const { + entryDetail, + IMG_BASE_URL, + API_BASE_URL, + WU_TU_PIAN_URL, + getActualCapacity, + twoMergeAcceptRefuse, + toNetAccept +} = require('../../../api/api') + +import Dialog from '@vant/weapp/dialog/dialog'; +Page({ + + /** + * 页面的初始数据 + */ + data: { + IMG_BASE_URL: IMG_BASE_URL, + API_BASE_URL: API_BASE_URL, + noneImg: 'https://sky-energy.oss-cn-beijing.aliyuncs.com/prohibit_delete/wutupian.png', + photoList: [],//图片集合 + powerCapacityUrl: [], //3天发电量 + gridCheck: false, + photoTips: [ + //安装 + { + title:'1.设备信息照片', + list:[{ + key:'nbqPlateImg', + num:1, + title: '逆变器序列号照片', + message: '1、铭牌清晰' + },{ + key:'txPlateImg', + num:1, + title: '逆变器通讯棒照片', + message: '1、清晰' + },{ + key:'zjPlateImg', + num:1, + title: '组件铭牌照片', + message: '1、组件铭牌内容清晰。' + },{ + key:'zjSnImgs', + num:4, + title: '组件SN', + message: '1、上传组件包装箱A4 纸条码或组件边框SN最少2张;2、图片清晰可看清SN 号码。' + }] + }, + { + title:'2.支架及组件安装照片', + list:[{ + key:'zjImg1', + num:1, + title: '膨胀螺栓', + message: '膨胀螺丝大小不低于设计要求,阳光房膨胀螺丝M12*100' + },{ + key:'zjImg2', + num:1, + title: '基座安装固定', + message: '1、膨胀螺丝必须使用大垫片固定;2、照片能够看出第二道防水。' + },{ + key:'zjImg3', + num:1, + title: '底座防水', + message: '1、照片能够体现三道防水施工完成;2、整个底座均需涂刷防水;3、防水面积大于底座5cm以上。' + },{ + key:'zjImg4', + num:1, + title: '支架基础距离房檐的距离', + message: '1、能够看清楚底座距离墙边的距离,不小于200mm;2、有女儿墙的测量外墙到立柱的距离;' + },{ + key:'zjImg5', + num:1, + title: '支架东向西拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg6', + num:1, + title: '支架西向东拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg7', + num:1, + title: '支架南向北拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg8', + num:1, + title: '支架北向南拍摄', + message: '1、支架按图施工;2、支架焊接必须满焊;3、支架防腐防锈施工完成。' + },{ + key:'zjImg9', + num:1, + title: '支架角度', + message: '1、支架角度和图纸保持一致,按图施工;2、必须使用角度仪进行测量,不允许使用手机。' + },{ + key:'componentImg1', + num:1, + title: '支架节点(斜支撑)', + message: '1、按图施工;2、焊接必须满焊;3、防腐防锈按要求施工。' + },{ + key:'componentImg2', + num:1, + title: '支架距照片(南北)', + message: '1、间距尺寸符合图施工;2、能够看清立柱南北间距尺寸。' + },{ + key:'componentImg3', + num:1, + title: '支架距照片(东西)', + message: '1、间距尺寸符合图施工;2、能够看清立柱东西间距尺寸。' + },{ + key:'componentImg4', + num:3, + title: '防风加固', + message: '1、横拉杆和背拉杆施工按图施工。' + },{ + key:'sizeMeasureImgs', + num:9, + title: '方管尺寸测量', + message: '1.三种方管尺寸均需测量(100*100/80*40/50*50)。' + }] + }, + { + title:'3.电气设备安装照片', + list:[{ + key:'totalImgs', + num:1, + title: '并网箱、逆变器外部安装照片、接地引下线', + message: '1、墙面安装底部高度不小于1.8米;2、建议安装高度2 米。3、方位角在150-300 之间必须安装遮阳棚。4、周边是否存在易燃易爆物品。' + },{ + key:'bwInnerImg', + num:1, + title: '并网箱内部整体照片', + message: '1、线鼻是否压接;2、防火封堵完整;3、线缆线皮包扎。' + },{ + key:'dqsbAnImgOne', + num:1, + title: '直流线缆保护', + message: '1、直流电缆穿管保护;2、管口需使用防火泥封堵。' + },{ + key:'dqsbAnImgTwo', + num:1, + title: '直流线缆固定', + message: '1、直流电缆走线横平竖直;2、直流电缆绑住需使用包塑扎丝固定。' + }], + }, + { + title:'4.接地系统照片', + list:[{ + key:'zujianJdImg', + num:1, + title: '组件边框接地', + message: '1.组件边框接地可靠' + },{ + key:'zjJdImgs', + num:2, + title: '引下线与支架连接点、南北坡接地连接点', + message: '1、焊接倍数满足要求,建议10cm;2、焊接满焊;3、防腐防锈施工完成。' + },{ + key:'groundResistanceImgs', + num:2, + title: '接地电阻', + message: '1、电气接地小于4Ω;2、支架接地小于10Ω;3、共用接地小于4Ω。' + }] + }, + { + title:'5.调试记录照片', + list:[{ + key:'openWayVoltageImgs', + num:6, + title: '开路电压', + message: '1、组串号按图施工;2、需要测量每一路开路电压;3、开路电压测量时能够看清楚号码线管;4、第一张照片需附逆变器下MPPT插入照片。' + }] + }, + { + title:'6.方阵安装完毕整体照片', + list:[{ + key:'directionAirImg1', + num:1, + title: '东向西航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'directionAirImg2', + num:1, + title: '西向东航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'directionAirImg3', + num:1, + title: '南向北航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'directionAirImg4', + num:1, + title: '北向南航拍', + message: '1、无遮挡;2、组件无污染或破损;3、组件边框距离檩条端头不少于6cm。' + },{ + key:'zjNearImg', + num:1, + title: '组件近景', + message: '1、无遮挡;2、无异物、无划伤' + },{ + key:'zjAngleImg', + num:1, + title: '组件角度', + message: '1、组件角度和图纸一致。' + },{ + key:'zjItemImg', + num:1, + title: '檩条出组件照片', + message: '1、檩条末端预留安全长度不小于6cm;2、照片需要测量尺寸。' + },{ + key:'waterChannelImg', + num:1, + title: '水槽照片', + message: '1、水槽清晰可见。' + },{ + key:'mediumFixImg', + num:1, + title: '中压固定照片', + message: '1、压块固定牢固跟图纸要求一致。' + },{ + key:'safetyWarningImg', + num:1, + title: '安全警示牌', + message: '1、在上人位置悬挂安全警示牌。' + },{ + key:'safetyDiscloseDocImg', + num:1, + title: '现场安全交底文件', + message: '1、现场交底记录必须现场签字;2、签字人数跟现场影像照片一致。3、交底人跟被交底人不允许为同一人。' + },{ + key:'discloseDocImg', + num:1, + title: '现场交底照片', + message: '1、安全帽佩戴正确;2、帽带必须戴好;3、涉及高空作业人员佩戴安全带和防坠器、防滑鞋;4、反光背心穿戴整齐。' + },{ + key:'recordDocImg', + num:1, + title: '记录表', + message: '1、是否全部认真检查,检查结果是否合格;2、结论是否手签,检查人签字等。' + }] + }, + //并网 + { + title:'并网', + list:[{ + key:'yxImg', + num:1, + title:'电站运行信息', + message: '监控后台逆变器连续三天的日发电量截图' + },{ + key:'gebImg', + num:1, + title: '补充图片', + message: '其他细节照片可根据需要自行增加' + }] + }, + ], + // 安装 + photo: { + //1.设备信息照片 + nbqPlateImg: [],//逆变器序列号照片,逆变器1铭牌照片 + txPlateImg: [],//逆变器通讯棒照片,通讯棒1铭牌照 + zjPlateImg: [],//组件铭牌照片 + zjSnImgs:[],//组件SN,1-4张---- + //2.支架及组件安装照片 + zjImg1: [],//膨胀螺栓 + zjImg2: [],//基座安装固定 + zjImg3: [],//底座防水 + zjImg4: [],//支架基础距离房檐的距离 + zjImg5: [],//支架东向西拍摄 + zjImg6: [],//支架西向东拍摄--- + zjImg7: [],//支架南向北拍摄--- + zjImg8: [],//支架北向南拍摄--- + zjImg9: [],//支架角度---- + componentImg1: [],//支架节点(斜支撑) + componentImg2: [],//支架距照片(南北) + componentImg3: [],//支架距照片(东西) + componentImg4: [],//防风加固,1-3张 + sizeMeasureImgs: [],//方管尺寸测量---,9张 + //3.电气设备安装照片 + totalImgs: [],//并网箱、逆变器外部安装照片、接地引下线,逆变器、并网箱整体安装照片, 存在字段名逆变器和并网箱接地照 + bwInnerImg: [],//并网箱内部整体照片 + dqsbAnImgOne: [],//直流线缆保护 + dqsbAnImgTwo: [],//直流线缆固定 + //4.接地系统照片 + zjJdImgs: [],//引下线与支架连接点、南北坡接地连接点,2张---- + groundResistanceImgs: [],//接地电阻,1-2张----- + zujianJdImg: [],//组件边框接地 + //5.调试记录照片 + openWayVoltageImgs: [],//开路电压,1-6张----- + //6.方阵安装完毕整体照片 + directionAirImg1: [],//东向西航拍---- + directionAirImg2: [],//西向东航拍---- + directionAirImg3: [],//南向北航拍---- + directionAirImg4: [],//北向南航拍---- + zjNearImg: [],//组件近景---- + zjAngleImg: [],//组件角度---- + zjItemImg: [],//檩条出组件照片---- + waterChannelImg: [],//水槽照片---- + mediumFixImg: [],//中压固定照片---- + safetyWarningImg: [],//安全警示牌---- + safetyDiscloseDocImg: [],//现场安全交底文件---- + discloseDocImg: [],//现场交底照片---- + recordDocImg: [],//记录表---- + }, + }, + + onLoad(options) { + this.setData({ + entryId: options.projectId, + status: options.status, //5是安装,7是并网 + }); + wx.setNavigationBarTitle({ + title: options.status == '5' ? '安装验收' : '并网验收', + }) + this.entryDetail() + }, + + + + /** + * + * 获取电站详情 + * + * @param {*} e + */ + entryDetail(e) { + entryDetail({ + userId: wx.getStorageSync('userId'), + entryId: this.data.entryId, + }).then((res) => { + this.setData({ + detail: res, + 'data.projectId': res.project_id, + 'data.projectCode': res.projectCode, + 'data.projectName': res.projectName, + 'data.powerStationCode': res.power_station_code, + 'data.name': res.tenant_name, + 'data.traderName': res.create_trader_name, + 'data.traderTel': res.traderTel, + 'data.phone': res.mobile, + 'data.idCard': res.id_code, + 'data.region': res.province + res.city + res.area + res.address, + 'data.scheme': res.scheme_type == 1 ? "标准方案" : "组合方案", + 'data.generatorNo': res.generator_no, //发电户号 + 'data.provinceCodeName': res.province_code_name, //电力公司 + 'data.code': res.province_code, //发电户号 + 'data.bankName': res.bank_name,//开户银行 + 'data.bankCode': res.bank_code,//银行账号 + 'data.powerName': res.powerName,//项目名称 + 'data.zujBrand': res.map.zujBrand,//组件品牌 + }); + if(res.report){ + this.setData({ + //并网图片显示 + // [`bwPhoto.gebImg[0].url`]: res.report.gebImg ? this.data.IMG_BASE_URL + res.report.gebImg : this.data.noneImg, + // [`bwPhoto.yxImg[0].url`]: res.report.yxImg ? this.data.IMG_BASE_URL + res.report.yxImg : this.data.noneImg, + [`photo.dbImgs[0].url`]:res.report.dbImgs ? IMG_BASE_URL + res.report.dbImgs : WU_TU_PIAN_URL,//电表图片 + [`photo.yxImg[0].url`]:res.report.yxImg ? IMG_BASE_URL + res.report.yxImg : WU_TU_PIAN_URL,//电站运行信息 + [`photo.gebImg[0].url`]:res.report.gebImg ? IMG_BASE_URL + res.report.gebImg2 : WU_TU_PIAN_URL,//补充信息 + [`photo.gebImg2[0].url`]:res.report.gebImg2 ? IMG_BASE_URL + res.report.gebImg2 : WU_TU_PIAN_URL,//补充信息2 + }) + } + + + // if (res.sn) { + // var snList = res.sn.split(",") + // this.setData({ + // snList: snList + // }) + // } + + // if (res.nbq_sn) { + // var nbqSnList = res.nbq_sn.split(",") + // this.setData({ + // nbqSnList: nbqSnList, + // }) + // } + + if (res.report) { + for(let i in this.data.photo){ + if(res.report[i]){ + let arr = res.report[i].split(","),arr2=[]; + arr.forEach(itm=>{ + arr2.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.${i}`]: arr2, + }); + }else{ + this.setData({ + [`photo.${i}`]: [{name:'',url:this.data.noneImg}], + }); + } + } + } + //重新赋值,传给子组件 + const photoList = JSON.parse(JSON.stringify(this.data.photo)) + this.setData({ + photoList + }) + // this.getActualCapacity() + // this.getProviceCodeList() + }) + }, + + /** + * + * 查询安装组件信息 + * + * @param {*} e + */ + getActualCapacity(e) { + getActualCapacity({ + entryId: this.data.entryId, + }).then((res) => { + const data = JSON.parse(res.data) + this.setData({ + component: data.columns + }) + }) + }, + + /** + * + * 查看注意方案 + * + * @param {*} e + */ + viewNote(e) { + const type = e.currentTarget.dataset.type + let title = this.data.photoTips[type].title + let message = this.data.photoTips[type].message + + Dialog.alert({ + title: title, + message: message, + theme: 'round-button', + }).then(() => { + + }); + }, + /** + * 提交 + */ + passFn(e) { + let type = e.currentTarget.dataset.type, txt = '', status = this.data.status; + if(type == '2'){ + //并网 + if (!this.data.fixConclusion) { + wx.showToast({ + title: '请输入不通过验收意见', + icon: 'none' + }) + return + } + //安装 + // if (!this.data.fixConclusionSh && status == '5') { + // wx.showToast({ + // title: '请输入不通过审核意见', + // icon: 'none' + // }) + // return + // } + txt = '不通过成功'; + }else{ + // if (this.data.powerCapacityUrl.length == 0) { + // wx.showToast({ + // title: '请上传近3天发电量', + // icon: 'none' + // }) + // return + // } + if (!this.data.gridCheck) { + wx.showToast({ + title: '审核通过需物料并网完成', + icon: 'none' + }) + return + } + txt = '通过成功'; + } + // console.log("执行7", this.data.fixConclusion); + // console.log("执行5", this.data.fixConclusionSh); + // return + wx.showLoading({ + title: "提交中" + }); + // if(status == '7'){ + twoMergeAcceptRefuse({ + id: this.data.entryId, + type:type,//1.通过 2.驳回 + fixConclusion: this.data.fixConclusion ? this.data.fixConclusion : "", + powerCapacityUrl: this.data.powerCapacityUrl.length>0?this.data.powerCapacityUrl[0].url:'', + materialMergeFlag: this.data.gridCheck?'1':'0', + userId: wx.getStorageSync('userId') + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + wx.showToast({ + title: txt, + icon: 'none', + success: function () { + setTimeout(function () { + wx.navigateBack() + }, 1500) + } + }) + } else { + wx.showToast({ + icon: 'none', + title: res.msg || res.errMsg, + }) + } + }) + //}else if(status == '5'){ + // toNetAccept({ + // id: this.data.entryId, + // type:type,//1.通过 2.驳回 + // fixConclusionSh: this.data.fixConclusionSh ? this.data.fixConclusionSh : "", + // userId: wx.getStorageSync('userId') + // }).then((res) => { + // wx.hideLoading() + // if (res.code == 200) { + // wx.showToast({ + // title: txt, + // icon: 'none', + // success: function () { + // setTimeout(function () { + // wx.navigateBack() + // }, 1500) + // } + // }) + // } else { + // wx.showToast({ + // title: res.msg || res.errMsg, + // icon: res.code + // }) + // } + // }) + // } + }, + /** + * + * 上传图片 + * + * @param {*} e + */ + afteruploadPhotoRead(e) { + const type = e.currentTarget.dataset.type + const name = e.currentTarget.dataset.name + const { + file + } = e.detail; + const img = file.url; + wx.showLoading({ + title: '上传中', + }) + var that = this + wx.uploadFile({ + url: that.data.API_BASE_URL + 'common/weChat/uploadImage', + filePath: file.url, + name: 'file', + complete: function (res) { + console.log("上传图片", res) + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + var item = { + url: "", + name: "", + } + item.url = img; + item.name = res.data; + that.data.powerCapacityUrl.push(item) + that.setData({ + powerCapacityUrl: that.data.powerCapacityUrl + }) + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + /** 删除图片 **/ + deleteImg(e) { + this.setData({ + powerCapacityUrl: [] + }) + }, + //并网已完成 + onChangeGrid(e){ + this.setData({ + gridCheck: e.detail, + }); + }, + //查看发电量 + goLink(){ + wx.navigateTo({ + url: '/home/pages/3days/3days?id=' + this.data.detail.entry_id + }) + } +}) \ No newline at end of file diff --git a/home/pages/acceptanceBW/acceptanceBW.json b/home/pages/acceptanceBW/acceptanceBW.json new file mode 100644 index 0000000..324b339 --- /dev/null +++ b/home/pages/acceptanceBW/acceptanceBW.json @@ -0,0 +1,13 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-dialog": "@vant/weapp/dialog/index", + "finish": "/home/components/finish/finish", + "install": "/home/components/install/install", + "survey": "/home/components/survey/survey", + "userInfo": "/home/components/userInfo/userInfo", + "onGrid": "/home/components/onGrid/onGrid", + "van-checkbox": "@vant/weapp/checkbox/index" + }, + "navigationBarTitleText": "并网验收" +} \ No newline at end of file diff --git a/home/pages/acceptanceBW/acceptanceBW.wxml b/home/pages/acceptanceBW/acceptanceBW.wxml new file mode 100644 index 0000000..5df6028 --- /dev/null +++ b/home/pages/acceptanceBW/acceptanceBW.wxml @@ -0,0 +1,43 @@ + + + + 并网信息 + + + + + + + + + + + 物料并网完成状态 + + 并网已完成 + + + + + 验收意见 + + + + + + + + + + 不通过 + 通过 + + + \ No newline at end of file diff --git a/home/pages/acceptanceBW/acceptanceBW.wxss b/home/pages/acceptanceBW/acceptanceBW.wxss new file mode 100644 index 0000000..a590776 --- /dev/null +++ b/home/pages/acceptanceBW/acceptanceBW.wxss @@ -0,0 +1,43 @@ +/* home/pages/acceptanceBW/acceptanceBW.wxss */ +@import "/home/pages/acceptance/acceptance.wxss"; + +.content-address { + display: flex; + flex-direction: column; + flex: 1; +} +.content-picker { + display: flex; + flex-direction: row; +} +.content-img-right { + width: 50rpx; + height: 50rpx; +} +.content-text { + flex: 1; +} + +.content-text-gray { + color: gray; +} + +.from-submit-buttom-cancle { + width: 250rpx; + height: 80rpx; + background-color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} + +.from-submit-buttom-confirm { + width: 500rpx; + height: 80rpx; + background-color: #0a6597; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} +.txt-blue{ color: blue;} \ No newline at end of file diff --git a/home/pages/bankCardDetail/bankCardDetail.js b/home/pages/bankCardDetail/bankCardDetail.js new file mode 100644 index 0000000..dd499c3 --- /dev/null +++ b/home/pages/bankCardDetail/bankCardDetail.js @@ -0,0 +1,83 @@ +// home/pages/bankCardDetail/bankCardDetail.js +const { + bankCardDetail, + IMG_BASE_URL, + WU_TU_PIAN_URL, +} = require('../../../api/api') +Page({ + data: { + detail:{}, + backF:"https://nhet.oss-cn-shanghai.aliyuncs.com/static/img/bank_card_front.png", + backB:"https://nhet.oss-cn-shanghai.aliyuncs.com/static/img/bank_card_back.png", + }, + onLoad(options) { + this.data.idCard = options.idCard; + this.data.managementType = options.managementType; + this.initData(); + }, + //详情数据 + initData(){ + bankCardDetail({ + idCard: this.data.idCard, + managementType: this.data.managementType, + partnerId: wx.getStorageSync('capitalId') + }).then(res=>{ + this.setData({ + detail:res.data, + code1:res.data.accountCode.slice(0,4), + code2:res.data.accountCode.slice(4,8), + code3:res.data.accountCode.slice(8,12), + code4:res.data.accountCode.slice(12,16), + code5:res.data.accountCode.slice(16), + }); + }); + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/home/pages/bankCardDetail/bankCardDetail.json b/home/pages/bankCardDetail/bankCardDetail.json new file mode 100644 index 0000000..ba94837 --- /dev/null +++ b/home/pages/bankCardDetail/bankCardDetail.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "van-image": "@vant/weapp/image/index" + }, + "navigationBarTitleText": "二类卡信息" +} \ No newline at end of file diff --git a/home/pages/bankCardDetail/bankCardDetail.wxml b/home/pages/bankCardDetail/bankCardDetail.wxml new file mode 100644 index 0000000..26909ed --- /dev/null +++ b/home/pages/bankCardDetail/bankCardDetail.wxml @@ -0,0 +1,41 @@ + + + + 姓名 + {{detail.name}} + + + + 身份证号 + {{detail.idCode}} + + + + 开户行 + {{detail.bankName }} + + + + 开户联行号 + {{detail.tssBankNum }} + + + + 卡号 + {{detail.accountCode }} + + + + + + + {{code1}} + {{code2}} + {{code3}} + {{code4}} + {{code5}} + + + + + \ No newline at end of file diff --git a/home/pages/bankCardDetail/bankCardDetail.wxss b/home/pages/bankCardDetail/bankCardDetail.wxss new file mode 100644 index 0000000..f15df82 --- /dev/null +++ b/home/pages/bankCardDetail/bankCardDetail.wxss @@ -0,0 +1,6 @@ +/* home/pages/bankCardDetail/bankCardDetail.wxss */ +@import "/home/pages/entryInfoDetails/entryInfoDetails.wxss"; +.bank-img{padding: 40rpx 0; text-align: center;} +.bankF{position:relative;} +.bankF .code{position: absolute; top: 45%; left: 50%; transform: translate(-50%,0); font-size: 38rpx; color: #000; font-weight: 600; word-break: initial;} +.bankF .code text{margin: 0 8rpx;} \ No newline at end of file diff --git a/home/pages/bwForm/bwForm.js b/home/pages/bwForm/bwForm.js new file mode 100644 index 0000000..0e2dfac --- /dev/null +++ b/home/pages/bwForm/bwForm.js @@ -0,0 +1,724 @@ +const { + API_BASE_URL, + IMG_BASE_URL, + entryDetail, + getProviceCodeList, + accept,getFormSet,addUserInfo,mergeTmp +} = require('../../../api/api') +import Dialog from '@vant/weapp/dialog/dialog'; +const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g +const camelCase = function (name) { + // - 是 match,separator 是 p1,letter 是 p2 + return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) { + return offset ? letter.toUpperCase() : letter + }) +} +function dateStr (date){ + let year = date.slice(0,4); + let month = date.slice(4,6); + let day = date.slice(6); + return year+'/'+month+'/'+day; +} +Page({ + data: { + projectId:'',//电站id + detail:{},//详情信息 + params:{ + bwInstitution: '0', //0是国网,1是南网 + powerPlantCode: '', //电厂编码 + addressConsistent: 'Y', // 购售电地址是否一致 Y:是、N:否 + province: "", //省 + city: "", //市 + area: "", //区 + address: "", //详细地址 + generatorNo:'',//发电户号 + powerCompanyName:'',//国网电力公司名称 + provinceCodeHand:'',//南网电力公司名称 + provinceCode:'',//电力公司编码 + yxImg:[],//电站运行信息照片 + gebImg:[],//补充照片 + gebImg2: [],//补充照片2 + dbImgs: [],//电表图片 + dbxImgs: [],//电表箱图片 + tlzhjkImgs: [], //铜铝转换接头照片 + powerCapacityUrl: [], //3日发电量 + archivesImg: [], //三户档案截图 + contractFile: [],//购售电合同 + contractVideoUrl: [], //购售电合同视频 + otherAttachment: [],//资方审查补充资料 + "insurance": { + // "id": '',//保险单id + // "entryId": '',//电站id + "insuranceTypeName":'财产险', + "insuranceType": "1",//目前只支持财产险 + // "insuranceDateFrom": '',//保险开始日期 + // "insuranceDateTo": '',//保险结束日期 + // "insuranceCompany": '',//保险公司 + // "insuranceNumber": '',//保险编号 + // "insuranceAmount": '',//保险金额 + // "firstBeneficiary": '',//第一受益人 + // "insurancePolicy": '',//保险单 + "bwtsFile":'',//并网调试报告 + },//保险 + },//提交参数 + showRegion:false,//省市区对话框 + powerCompanyList:[],//电力公司列表 + insuranceTypeList:[{ + name:'财产险', + value:'1' + }],//保险类型列表 + dateShow:false,//日期区间对话框 + formSetObj: {},//自定义字段 + }, + async onLoad(options) { + this.setData({ + projectId:options.projectId + }); + await this.getProviceCodeList(); + this.initData(); + }, + onReady() { + + }, + onShow() { + + }, + /** 获取自定义字段 */ + getFormSet(partner) { + getFormSet({ + stage: '04', //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网 + partner: partner, + }).then((res) => { + this.setData({ + formSetObj: res.data.columns + }) + }) + }, + /** 数据 **/ + initData(){ + wx.showLoading({ + title: "加载中" + }); + entryDetail({ + userId: wx.getStorageSync('userId'), + entryId: this.data.projectId + }).then(res=>{ + let obj = {}; + for(let i in res){ + let j = camelCase(i); + obj[j]=res[i]; + } + if(res.insurance){ + for(let i in res.insurance){ + let j = camelCase(i); + obj.insurance[j]=res.insurance[i]; + } + } + // console.log("执行",obj); + wx.hideLoading(); + for(let i in this.data.params){ + if(obj[i]){ + if(i=='insurance'){ + continue; + } + if(obj.addressConsistent=='Y'&&(i=='province'||i=='city'||i=='area'||i=='address')){ + this.data.params[i]=''; + continue; + } + this.data.params[i]=obj[i]; + } + } + for(let i in this.data.params.insurance){ + if(obj.insurance&&obj.insurance[i]){ + this.data.params.insurance[i]=obj.insurance[i]; + } + } + if(this.data.powerCompanyList.find(itm=>itm.code==this.data.params.provinceCode)){ + this.data.params.powerCompanyName=this.data.powerCompanyList.find(itm=>itm.code==this.data.params.provinceCode).power_company; + } + if(this.data.params.insurance){ + // this.data.params.insurance.insuranceTypeName=this.data.insuranceTypeList.find(itm=>itm.value==this.data.params.insurance.insuranceType).name; + // this.data.params.insurance.insuranceDateFrom=dateStr(this.data.params.insurance.insuranceDateFrom); + // this.data.params.insurance.insuranceDateTo=dateStr(this.data.params.insurance.insuranceDateTo); + } + if (res.report) { + if (res.report.gebImg) { + this.setData({ + [`params.gebImg[0].name`]: res.report.gebImg, + [`params.gebImg[0].url`]: IMG_BASE_URL + res.report.gebImg, + }) + } + if (res.report.gebImg2) { + this.setData({ + [`params.gebImg2[0].name`]: res.report.gebImg2, + [`params.gebImg2[0].url`]: IMG_BASE_URL + res.report.gebImg2, + }) + } + if (res.report.dbImgs) { + this.setData({ + [`params.dbImgs[0].name`]: res.report.dbImgs, + [`params.dbImgs[0].url`]: IMG_BASE_URL + res.report.dbImgs, + }) + } + if (res.report.dbxImgs) { + this.setData({ + [`params.dbxImgs[0].name`]: res.report.dbxImgs, + [`params.dbxImgs[0].url`]: IMG_BASE_URL + res.report.dbxImgs, + }) + } + if (res.report.tlzhjkImgs) { + this.setData({ + [`params.tlzhjkImgs[0].name`]: res.report.tlzhjkImgs, + [`params.tlzhjkImgs[0].url`]: IMG_BASE_URL + res.report.tlzhjkImgs, + }) + } + if (res.report.archivesImg) { + this.setData({ + [`params.archivesImg[0].name`]: res.report.archivesImg, + [`params.archivesImg[0].url`]: IMG_BASE_URL + res.report.archivesImg, + }) + } + if (res.report.powerCapacityUrl) { + this.setData({ + [`params.powerCapacityUrl[0].name`]: res.report.powerCapacityUrl, + [`params.powerCapacityUrl[0].url`]: IMG_BASE_URL + res.report.powerCapacityUrl, + }) + } + if (res.report.yxImg) { + this.setData({ + [`params.yxImg[0].name`]: res.report.yxImg, + [`params.yxImg[0].url`]: IMG_BASE_URL + res.report.yxImg, + }) + } + } + if (res.contract) {//合同文件 + this.setData({ + [`params.contractFile`]:res.contract ? res.contract.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}], + }) + } + if (res.other_attachment) {//补充资料 + this.setData({ + [`params.otherAttachment`]:res.other_attachment ? res.other_attachment.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}], + }) + } + if (res.contract_video_url) {//合同视频 + this.setData({ + [`params.contractVideoUrl`]:res.contract_video_url ? res.contract_video_url.split(",").map(itm=>{return {name:itm, url:IMG_BASE_URL + itm}}) : [{url:WU_TU_PIAN_URL}], + }) + } + this.data.params.province = res.electric_province + this.data.params.city = res.electric_city + this.data.params.area = res.electric_area + this.data.params.address = res.electric_address + this.data.params.bwInstitution = res.grid_institution + this.setData({ + detail:res, + params:this.data.params, + address:this.data.params.address, + generatorNo:this.data.params.generatorNo, + provinceCodeHand:this.data.params.provinceCodeHand, + powerPlantCode:this.data.params.powerPlantCode, + insuranceCompany:this.data.params.insurance.insuranceCompany, + firstBeneficiary:this.data.params.insurance.firstBeneficiary, + insuranceNumber:this.data.params.insurance.insuranceNumber, + insuranceAmount:this.data.params.insurance.insuranceAmount, + }); + this.getFormSet(res.management) + }); + }, + /** 获取电力公司 **/ + getProviceCodeList(e) { + getProviceCodeList({}).then((res) => { + if (res.code == 200) { + let list = res.data.map(itm=>itm.columns); + this.setData({ + powerCompanyList: list + }) + } + }) + }, + /** 业主信息 **/ + userFn(e){ + wx.navigateTo({ + url: '/home/pages/ownerForm/ownerForm?projectId=' + this.data.projectId + '&type=16', + }) + }, + /** 购售电地址是否一致 **/ + radioChangeAddress(e) { + this.setData({ + [`params.addressConsistent`]: e.detail.value, + [`params.province`]: '', + [`params.city`]: '', + [`params.area`]: '', + [`params.address`]: "" + }) + }, + /** 并网机构 **/ + radioChangeType(e) { + this.setData({ + [`params.bwInstitution`]: e.detail.value, + }) + }, + /** 打开省市区弹框 **/ + bindRegionChange(e) { + this.setData({ + showRegion: true + }) + }, + /** 选择的地址 **/ + chooseRegion(e) { + this.setData({ + [`params.province`]: e.detail.provinceName, + [`params.city`]: e.detail.cityName, + [`params.area`]: e.detail.areaName, + [`params.address`]: "" + }); + }, + /** 选择电力公司 **/ + bindpowerCompanyList(e) { + this.setData({ + [`params.powerCompanyName`]: this.data.powerCompanyList[e.detail.value].power_company, + [`params.provinceCode`]: this.data.powerCompanyList[e.detail.value].code + }) + }, + /** 查看图片注意方案 **/ + viewNote(e) { + let title = e.currentTarget.dataset.tit; + let message = e.currentTarget.dataset.msg; + Dialog.alert({ + title: title, + message: message, + theme: 'round-button', + }).then(() => { }); + }, + /** 上传图片 **/ + afteruploadPhotoRead(e) { + const { + file + } = e.detail; + const img = file.url; + wx.showLoading({ + title: '上传中', + }) + var that = this + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: file.url, + name: 'file', + complete: function (res) { + // console.log("上传图片", res) + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + var item = { + url: "", + name: "", + } + let type = e.currentTarget.dataset.type + item.url = img; + item.name = res.data; + that.data.params[type].push(item) + that.setData({ + [`params.${type}`]: that.data.params[type] + }) + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + /** 删除图片 **/ + deleteImg(e) { + // console.log("删除图片事件", e) + let index= e.detail.index; + let type = e.currentTarget.dataset.type + this.data.params[type].splice(index, 1); + this.setData({ + [`params.${type}`]: index > 0 ? this.data.params[type] : [] + }); + }, + /** 上传多张图片递归 **/ + afteruploadPhotoReadS(e, file, count, type) { + let ob = { + name: '', + url: '', + } + const name = e.currentTarget.dataset.name + wx.showLoading({ + title: '加载第' + (count + 1) + '张照片中', + mask: true, + }) + const element = file[count]; + var that = this; + var url = '' + if(type =='file'){ + //获取文件后缀 + let suffix = element.path.substring(element.path.lastIndexOf('.') + 1) + if (suffix.search(/jpg|png|jpeg|pdf/) == -1) { + wx.showToast({ + title: '只能上传jpg、png、jpeg、pdf文件', + icon: 'none' + }) + return + } + url = API_BASE_URL + 'common/uploadFile_Name?fileName='+ element.name + }else{ + url = API_BASE_URL + 'common/weChat/uploadImage' + } + wx.uploadFile({ + url: url, + filePath: type =='file'?element.path:element.tempFilePath, + name: 'file', + success(res) { + wx.hideLoading() + if (res.statusCode == 200) { + console.log(989898988, res) + count = count + 1; + // ob.name = res.data + ob.name = type =='file'?JSON.parse(res.data).path: res.data, + ob.url = type =='file'?JSON.parse(res.data).path:element.tempFilePath + that.data.params[name].push(ob); + that.setData({ + [`params.${name}`]: that.data.params[name] + }) + if (count == file.length) { + wx.showToast({ + title: '选择成功', + icon: 'none' + }) + } else { + that.afteruploadPhotoReadS(e, file, count, type) + } + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + /** 文件或图片上传选择-对话框 **/ + selectUplosd(e){ + var that = this; + let name = e.currentTarget.dataset.name; + let maxCount = e.currentTarget.dataset.count; + wx.showActionSheet({ + itemList: ['文件', '图片'], + success: function (res) { + if (!res.cancel) { + if (res.tapIndex == 0) {//文件 + that.upload(e, name); + } else if (res.tapIndex == 1) {//图片 + // console.log(6666666, maxCount) + wx.chooseMedia({ + count: Math.min(maxCount, 9), + mediaType: ['image','video'], + sourceType: ['album'], + success: function (rep) { + // console.log(98989, rep) + if (Array.isArray(rep.tempFiles)) { //多张 + var count = 0; + that.afteruploadPhotoReadS(e, rep.tempFiles, count) + return + } + wx.showLoading({ + title: '选择中', + }) + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: rep.tempFiles[0].tempFilePath, + name: 'file', + complete: function (res) { + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + var item = { + url: "", + name: "", + } + item.url = rep.tempFiles[0].tempFilePath; + item.name = res.data; + that.data.params[name].push(item) + that.setData({ + [`params.${name}`]: that.data.params[name] + }) + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + fail: function(){}, + }); + } + } + } + }); + }, + /** 上传pdf或图片 **/ + upload(e) { + var that = this; + let params = e.currentTarget.dataset.params; + let name = e.currentTarget.dataset.name; + wx.chooseMessageFile({ + count: 1, + type: 'all', + success(res) { + //获取文件后缀 + // let suffix = res.tempFiles[0].path.substring(res.tempFiles[0].path.lastIndexOf('.') + 1) + // if (suffix.search(/jpg|png|jpeg|pdf|dwg/) == -1) { + // wx.showToast({ + // title: '只能上传jpg|png|jpeg|pdf|dwg文件或图片', + // icon: 'none' + // }) + // return + // } else { + wx.showLoading({ + title: '选择中', + }) + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: res.tempFiles[0].path, + name: 'file', + complete: function (res) { + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none' + }) + // let data = JSON.parse(res.data) + if(name =='contractFile' || name =='otherAttachment'){ + that.data.params[name].push({ + name: res.data, + url: IMG_BASE_URL + res.data + }); + that.setData({ + [`params.${name}`]: that.data.params[name] + }) + }else{ + that.setData({ + [`${params}`]: res.data + }) + } + } else { + wx.showToast({ + title: '选择失败', + icon: 'none' + }) + } + } + }) + // } + } + }) + }, + /** 选择保险类型 **/ + bindinsuranceTypeList(e){ + this.setData({ + [`params.insurance.insuranceTypeName`]: this.data.insuranceTypeList[e.detail.value].name, + [`params.insurance.insuranceType`]: this.data.insuranceTypeList[e.detail.value].value + }) + }, + /** 选择保险日期 **/ + dateFn(){ + this.setData({ dateShow: !this.data.dateShow }); + }, + /** 日期格式 **/ + formatDate(date) { + date = new Date(date); + const year = date.getFullYear() + const month = (date.getMonth() + 1) >9 ? (date.getMonth()+1) : '0'+(date.getMonth()+1) + const day = date.getDate() >9 ? date.getDate() : '0'+date.getDate() + return year+'/'+month+'/'+day; + }, + /** 确认选择日期区间 **/ + dateConfirm(e){ + const [start, end] = e.detail; + this.setData({ + [`params.insurance.insuranceDateFrom`]:this.formatDate(start), + [`params.insurance.insuranceDateTo`]:this.formatDate(end), + dateShow: false, + }); + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if(suffix=='mp4'){// 开始预览多媒体内容 + wx.previewMedia({ + sources: [{ + url :IMG_BASE_URL + path, + type: 'video' + }], // 需要预览的资源列表 + }); + }else if(suffix != 'jpg' && suffix != 'png' && suffix != 'gif' && suffix != 'jpeg') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + fileType: suffix, + showMenu: true, + success: function (res) {} + }) + } + }) + }else{ + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + /** 提交表单 **/ + submitFrom(e){ + let type = e.currentTarget.dataset.type + let params = JSON.parse(JSON.stringify(this.data.params)); + for(let i in params){ + if(this.data[i]){ + params[i]=this.data[i]; + } + } + for(let i in params.insurance){ + if(this.data[i]){ + params.insurance[i]=this.data[i]; + } + } + let checkParams={...JSON.parse(JSON.stringify(params)),...JSON.parse(JSON.stringify(params.insurance))}; + console.log("checkParams",checkParams); + for(let i in checkParams){ + //购售地址一致时不需要填写地址信息 + if(params.addressConsistent=='Y' && (i=='province' || i=='city' || i=='area' || i=='address')){ + continue; + } + //并网照片 + // if(i=='gebImg'){ + // if(!params[i].length){ + // wx.showToast({ + // title: '请填写完表单必填项信息', + // icon: 'none' + // }); + // return + // } + // } + // if(!checkParams[i]){ + // wx.showToast({ + // title: '请填写完表单必填项信息', + // icon: 'none' + // }) + // return + // } + } + params.application= { + "entryId":this.data.projectId,//电站id + "resultType": 1,//提交 + "insurance":params.insurance,//保险 + } + params.entryId = this.data.projectId,//电站id + params.gebImg = params.gebImg.length>0?params.gebImg[0].name:''; + params.gebImg2 = params.gebImg2.length>0?params.gebImg2[0].name:''; + params.dbImgs = params.dbImgs.length>0?params.dbImgs[0].name:''; + params.dbxImgs = params.dbxImgs.length>0?params.dbxImgs[0].name:''; + params.tlzhjkImgs = params.tlzhjkImgs.length>0?params.tlzhjkImgs[0].name:''; + params.archivesImg = params.archivesImg.length>0?params.archivesImg[0].name:''; + params.powerCapacityUrl = params.powerCapacityUrl.length>0?params.powerCapacityUrl[0].name:''; + params.yxImg = params.yxImg.length>0?params.yxImg[0].name:''; + + params.contractFile = params.contractFile.length>0?params.contractFile.map(itm=>itm.name).join(","):'';//合同文件 + params.contractVideoUrl = params.contractVideoUrl.length>0?params.contractVideoUrl.map(itm=>itm.name).join(","):'';//合同视频 + params.otherAttachment = params.otherAttachment.length>0?params.otherAttachment.map(itm=>itm.name).join(","):'';//补充资料 + //地址处理 + params.electric_province = this.data.params.province; + params.electric_city = this.data.params.city; + params.electric_area = this.data.params.area; + params.electric_address = this.data.params.address; + + params.generatorNo = this.data.generatorNo; + params.powerPlantCode = this.data.powerPlantCode; + params.provinceCodeHand = this.data.provinceCodeHand; + params.isEmpower = 0; //是否国网授权 0:是 1:否 + + // params.insurance.insuranceDateFrom=params.insurance.insuranceDateFrom.split("/").join(""); + // params.insurance.insuranceDateTo=params.insurance.insuranceDateTo.split("/").join(""); + console.log("params",params); + // return; + if(type == '1'){//提交验收 + accept({ + userId: wx.getStorageSync('userId'), + addReportReq: params + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + // this.bindImport(this.data.detail.generator_no); //国网授权 + wx.showToast({ + title: '提交成功', + icon: 'none', + success: function () { + setTimeout(function () { + wx.navigateBack() + }, 1500) + } + }) + } else { + wx.showToast({ + title: res.errMsg || res.msg, + icon: 'none' + }) + } + }); + }else{//国网授权 + mergeTmp({ + userId: wx.getStorageSync('userId'), + addReportReq: params + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + wx.showToast({ + title: '提交成功', + icon: 'none', + success: function () { + setTimeout(function () { + wx.navigateBack() + }, 1500) + } + }) + } else { + wx.showToast({ + title: res.errMsg || res.msg, + icon: 'none' + }) + } + }); + } + }, + /** 国网授权 **/ + bindImport(powerid) { + addUserInfo({ + powerGenerationNo: powerid + }).then((resApi) => { + if (resApi.code == 200) { + console.log("授权成功") + } + }) + }, +}) \ No newline at end of file diff --git a/home/pages/bwForm/bwForm.json b/home/pages/bwForm/bwForm.json new file mode 100644 index 0000000..5162006 --- /dev/null +++ b/home/pages/bwForm/bwForm.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-dialog": "@vant/weapp/dialog/index", + "van-calendar": "@vant/weapp/calendar/index", + "region":"../../../components/region/region", + "userInfo": "../../components/userInfo/userInfo" + }, + "navigationBarTitleText": "电站并网" +} \ No newline at end of file diff --git a/home/pages/bwForm/bwForm.wxml b/home/pages/bwForm/bwForm.wxml new file mode 100644 index 0000000..c54f91b --- /dev/null +++ b/home/pages/bwForm/bwForm.wxml @@ -0,0 +1,345 @@ + + + + + + + 电站编码 + {{detail.power_station_code}} + + + + 工程负责人 + {{detail.engineer_name}} + + + + 派工时间 + {{detail.dispatch_time}} + + + + 完工时间 + {{detail.install_time}} + + + + + + 并网信息 + + + * + 并网机构 + + + + + + * + * + 购售电地址是否一致 + + + + + + + + + + + * + * + 购售电地址 + + {{params.province}}{{params.city}}{{params.area}} + + + 请选择地址 + + + + + + * + + + + + + + + + + * + * + 发电户号 + + + + + + + * + * + 电表照片 + + + + + + + + + + + + * + * + 电表箱照片 + + + + + + + + + + + + * + * + 铜铝转换接头照片 + + + + + + + + + + + + + + * + * + 南网营销系统档案截图(三户) + + + + + + + + + + + + * + * + 三天连续发电量监控系统截图 + + + + + + + + + + + + + + + + * + * + 电力公司 + + {{params.powerCompanyName}} + + + 请选择电力公司 + + + + + + + + + + + + * + * + 电力公司 + + + + + + + * + * + 电厂编码 + + + + + + + * + 并网照片 + + + + + * + 近3天发电量 + + + + + + + + + + * + 补充信息 + + + + + + + + + + + 补充信息2 + + + + + + + + + + + + + * + * + 购售电合同 + 上传 + + + + + {{util.formartFileName(child.name)}} + 删除 + + + + + + + * + * + 购售电合同视频 + + + + + + + + + + + + * + * + 并网调试报告 + {{params.insurance.bwtsFile?"已上传,点击可重新上传":"上传"}} + + + + + + * + * + 资方审查补充资料(1-10) + 上传 + + + + {{util.formartFileName(child.name)}} + 删除 + + + + + + + + + + + + + + + + 提交国网授权 + 提交验收 + + + + + + + + + \ No newline at end of file diff --git a/home/pages/bwForm/bwForm.wxss b/home/pages/bwForm/bwForm.wxss new file mode 100644 index 0000000..adeb6b5 --- /dev/null +++ b/home/pages/bwForm/bwForm.wxss @@ -0,0 +1,81 @@ +@import "/home/pages/entryInfoBT/entryInfoBT.wxss"; +.content-title-item{width: 168rpx;} +.user-box{ + background-color: #fffdfc; + border-radius: 20rpx; + border: solid 2rpx #0a6597; + padding: 4rpx 30rpx; + margin: 20rpx; +} +.user-list{ + display: flex; + align-items: center; + margin: 26rpx 0; +} +.user-list .bt{ + font-size: 28rpx; + width: 170rpx; +} +.user-list .bd{ + flex: 1; +} +.user-list .tag{ + display: inline-block; + height: 48rpx; + background-color: #0a6597; + border-radius: 10rpx; + font-size: 24rpx; + color: #fff; + line-height: 48rpx; + text-align: center; + padding: 0 20rpx; +} +.user-list .tel{ + font-size: 26rpx; + color: #333; +} +.user-list .tel image{ + width: 23rpx; + height: 30rpx; + vertical-align: middle; +} +.content-inputs{ + margin-left: 187rpx; +} +.content-img-box { + display: flex; + flex-wrap: wrap; + align-items: stretch; +} +.content-img-name { + display: flex; + flex-direction: column; + align-items: flex-start; + /* width: calc(50% - 10rpx); */ + justify-content: space-between; + margin:0 7rpx 0 0; +} +.content-attention-text { + font-size: 24rpx; + display: flex; + padding: 10rpx 0rpx 0rpx 0rpx; + align-items: flex-start; + line-height: 30rpx; +} +.content-red { + margin-right: 10rpx; + color: red; +} +.content-attention-showText { + display: flex; +} +.content-attention { + width: 44rpx; + height: 44rpx; + flex-shrink: 0; + transform: translate(0,-8rpx); +} + +.content-img-name .van-uploader__upload { + margin-right: 6rpx !important; +} \ No newline at end of file diff --git a/home/pages/completion/completion.js b/home/pages/completion/completion.js new file mode 100644 index 0000000..54d95cb --- /dev/null +++ b/home/pages/completion/completion.js @@ -0,0 +1,1891 @@ +// pages/completion/completion.js +const { + entryDetail, + API_BASE_URL, + install, + getActualCapacity, + accept, + IMG_BASE_URL, + installZc, + DEV, + getProviceCodeList, + createQrcode,getFormSet,findTypeReferenceListNew +} = require('../../../api/api') +const utilAddWatermark = require('../../../utils/addWatermark') +const utilGetLocation = require('../../../utils/getLocation') +import Dialog from '@vant/weapp/dialog/dialog'; +Page({ + data: { + IMG_BASE_URL: IMG_BASE_URL, + capture: ['album','camera'], + canvasHeight: 0, + canvasWidth: 0, + changeAddressType: 1, //默认购售电地址一致 + DEV: DEV, + DEVACCOUNT: wx.getStorageSync('loginName'), + completeEnable: false, //完工按钮是否可以点击,默认false不可点击 + //安装 + photoTips: [ + { + sampleGraph: '', + showKey: 'safety_warning_img2', + must: '0', + status: '0', + key:'safetyWarningImg2', + num: 15, + title: '三级安全教育卡', + message: '' + },{ + sampleGraph: '', + showKey: 'kg_condition_files', + must: '0', + status: '0', + key:'kgConditionFiles', + num: 15, + min: 1, + title: '安全防护措施合照照片', + message: '' + }, + //华融 + { + sampleGraph: '', + showKey: 'other_imgs5', + must: '0', + status: '0', + key:'otherImgs5', + num: 15, + title: '水槽细节照片', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs6', + must: '0', + status: '0', + key:'otherImgs6', + num: 15, + title: '落水管照片', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs7', + must: '0', + status: '0', + key:'otherImgs7', + num: 15, + title: '假梁-斜梁方向', + message: '' + },{ + sampleGraph: '', + showKey: 'other_imgs8', + must: '0', + status: '0', + key:'otherImgs8', + num: 15, + title: '并网箱逆变器防雨罩照片', + message: '' + }, + //广发 + { + sampleGraph: '', + showKey: 'safety_warning_img2_03', + must: '0', + status: '0', + key:'safetyWarningImg2', + num: 15, + title: '施工安全图-三级安全教育', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_warning_img3', + must: '0', + status: '0', + key:'safetyWarningImg3', + num: 15, + title: '施工安全图-开工前站班会(施工安全用品:安全帽、安全绳、反光衣、工作鞋)', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_warning_img', + must: '0', + status: '0', + key:'safetyWarningImg', + num: 15, + title: '施工安全图-安全警示牌', + message: '' + },{ + sampleGraph: '', + showKey: 'safety_disclose_doc_img', + must: '0', + status: '0', + key:'safetyDiscloseDocImg', + num: 15, + title: '施工安全图-安全技术交底书', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img10', + must: '0', + status: '0', + key:'zjImg10', + num: 9, + min: 3, + title: '基础安装-螺栓孔洞防水图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img11', + must: '0', + status: '0', + key:'zjImg11', + num: 15, + title: '基础安装-柱脚防水完工图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img5_03', + must: '0', + status: '0', + key:'zjImg5', + num: 15, + title: '支架安装图-支架安装完成VR图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img8', + must: '0', + status: '0', + key:'zjImg8', + num: 15, + title: '支架安装图-支架方阵(东向西完工照)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img9', + must: '0', + status: '0', + key:'zjImg9', + num: 15, + title: '支架安装图-支架方阵(北向南完工照)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img4_03', + must: '0', + status: '0', + key:'zjImg4', + num: 15, + title: '支架安装图-立柱东西间距、南北间距(带尺寸)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img12', + must: '0', + status: '0', + key:'zjImg12', + num: 15, + title: '支架安装图-斜梁悬挑(南)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img13', + must: '0', + status: '0', + key:'zjImg13', + num: 15, + title: '支架安装图-斜梁悬挑(北)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img14', + must: '0', + status: '0', + key:'zjImg14', + num: 15, + title: '支架安装图-檀条悬挑(东)', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img15', + must: '0', + status: '0', + key:'zjImg15', + num: 15, + title: '支架安装图-檀条悬挑(西)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img4_03', + must: '0', + status: '0', + key:'jdImg4', + num: 15, + title: '支架接地图-支架接地', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img3', + must: '0', + status: '0', + key:'componentImg3', + num: 15, + title: '组件航拍俯视照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img4', + must: '0', + status: '0', + key:'componentImg4', + num: 15, + title: '组件安装完成VR视图', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img1', + must: '0', + status: '0', + key:'bkImg1', + num: 15, + title: '边框接地图-边框与边框接地', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img1_03', + must: '0', + status: '0', + key:'componentImg1', + num: 15, + title: '边框接地图-组件安装倾角', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img2', + must: '0', + status: '0', + key:'bkImg2', + num: 15, + title: '边框接地图-边框与支架接地', + message: '' + },{ + sampleGraph: '', + showKey: 'bk_img3', + must: '0', + status: '0', + key:'bkImg3', + num: 15, + title: '边框接地图-其他图片', + message: '' + },{ + sampleGraph: '', + showKey: 'yk_img1', + must: '0', + status: '0', + key:'ykImg1', + num: 15, + title: '压块或背压板照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dc_imgs_03', + must: '0', + status: '0', + key:'dcImgs', + num: 15, + title: '逆变器安装图-整体外观及走线及采集器(离地高度)', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_plate_img_03', + must: '0', + status: '0', + key:'nbqPlateImg', + num: 15, + title: '逆变器安装图-铭牌', + message: '' + },{ + sampleGraph: '', + showKey: 'total_imgs_03', + must: '0', + status: '0', + key:'totalImgs', + num: 15, + title: '逆变器安装图-接地情况', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zlc_img', + must: '0', + status: '0', + key:'nbqZlcImg', + num: 15, + title: '逆变器安装图-逆变器交流侧', + message: '' + },{ + sampleGraph: '', + showKey: 'open_way_voltage_imgs_03', + must: '0', + status: '0', + key:'openWayVoltageImgs', + num: 15, + title: '逆变器安装图-组串开路电压照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zb_img_03', + must: '0', + status: '0', + key:'nbqZbImg', + num: 15, + title: '并网箱安装图-外观及走线(离地高度)', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_inner_img_03', + must: '0', + status: '0', + key:'bwInnerImg', + num: 15, + title: '并网箱安装图-并网箱内部全景', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_jd_img', + must: '0', + status: '0', + key:'bwJdImg', + num: 15, + title: '并网箱安装图-接地情况', + message: '' + },{ + sampleGraph: '', + showKey: 'fix_other_img_03', + must: '0', + status: '0', + key:'fixOtherImg', + num: 15, + title: '线缆走向(屋顶、下墙)、线缆保护管(或桥架)敷设及固定照片', + message: '' + },{ + sampleGraph: '', + showKey: 'size_measure_imgs_03', + must: '0', + status: '0', + key:'sizeMeasureImgs', + num: 15, + title: '电缆桥架内部电缆照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img8', + must: '0', + status: '0', + key:'jdImg8', + num: 15, + title: '接地极图-并网箱、逆变器安装接地极', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img5_03', + must: '0', + status: '0', + key:'jdImg5', + num: 15, + title: '接地极图-支架接地电阻阻值(近景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img11', + must: '0', + status: '0', + key:'jdImg11', + num: 15, + title: '接地极图-支架接地电阻测量照片(远景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img9', + must: '0', + status: '0', + key:'jdImg9', + num: 15, + title: '接地极图-并网箱、逆变器安装接地电阻阻值(近景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img12', + must: '0', + status: '0', + key:'jdImg12', + num: 15, + title: '接地极图-并网箱、逆变器安装接地电阻测量照片 (远景)', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img10', + must: '0', + status: '0', + key:'jdImg10', + num: 15, + title: '接地极图-接地引下线警示做法', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img1', + must: '0', + status: '0', + key:'fsImg1', + num: 15, + title: '防水措施图-横竖向水槽', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img2', + must: '0', + status: '0', + key:'fsImg2', + num: 15, + title: '防水措施图-落水管走向及其固定', + message: '' + },{ + sampleGraph: '', + showKey: 'fs_img3', + must: '0', + status: '0', + key:'fsImg3', + num: 15, + title: '防水措施图-其他图片', + message: '' + },{ + sampleGraph: '', + showKey: 'water_mud_clamp_imgs', + must: '0', + status: '0', + key:'waterMudClampImgs', + num: 15, + title: '导水排泥夹照片', + message: '' + }, + //越秀 + { + sampleGraph: '', + showKey: 'dzjc1', + must: '0', + status: '0', + key:'dzjc1', + num: 15, + title: '电站基础-主屋', + message: '' + },{ + sampleGraph: '', + showKey: 'dzjc2', + must: '0', + status: '0', + key:'dzjc2', + num: 15, + title: '电站基础-副屋', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img1', + must: '0', + status: '0', + key:'zjImg1', + num: 15, + title: '支架正面照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img2', + must: '0', + status: '0', + key:'zjImg2', + num: 15, + title: '支架侧视图', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img3', + must: '0', + status: '0', + key:'zjImg3', + num: 15, + title: '支架北侧照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img4', + must: '0', + status: '0', + key:'zjImg4', + num: 15, + title: '支架型号照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_img5', + must: '0', + status: '0', + key:'zjImg5', + num: 15, + title: '航拍图照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img1', + must: '0', + status: '0', + key:'componentImg1', + num: 15, + title: '组件倾角照片', + message: '' + },{ + sampleGraph: '', + showKey: 'component_img2', + must: '0', + status: '0', + key:'componentImg2', + num: 15, + title: '组件方位角照片', + message: '' + },{ + sampleGraph: '', + showKey: 'size_measure_imgs', + must: '0', + status: '0', + key:'sizeMeasureImgs', + num: 15, + title: '屋顶线缆安装照片', + message: '' + },{ + sampleGraph: '', + showKey: 'fix_other_img', + must: '0', + status: '0', + key:'fixOtherImg', + num: 15, + title: '线缆下墙照片', + message: '' + },{ + sampleGraph: '', + showKey: 'total_imgs', + must: '0', + status: '0', + key:'totalImgs', + num: 15, + title: '逆变器组串接入照片', + message: '' + },{ + sampleGraph: '', + showKey: 'bw_inner_img', + must: '0', + status: '0', + key:'bwInnerImg', + num: 15, + title: '并网箱内部照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dc_imgs', + must: '0', + status: '0', + key:'dcImgs', + num: 15, + title: '逆变器安装照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_zb_img', + must: '0', + status: '0', + key:'nbqZbImg', + num: 15, + title: '并网箱逆变器整体照片', + message: '' + },{ + sampleGraph: '', + showKey: 'dqsb_an_img_one', + must: '0', + status: '0', + key:'dqsbAnImgOne', + num: 15, + title: '逆变器注册截图照片', + message: '' + },{ + sampleGraph: '', + showKey: 'nbq_plate_img', + must: '0', + status: '0', + key:'nbqPlateImg', + num: 15, + title: '逆变器铭牌照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_plate_img', + must: '0', + status: '0', + key:'zjPlateImg', + num: 15, + title: '组件铭牌照片', + message: '' + },{ + sampleGraph: '', + showKey: 'open_way_voltage_imgs', + must: '0', + status: '0', + key:'openWayVoltageImgs', + num: 15, + title: '开路电压图', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img1', + must: '0', + status: '0', + key:'jdImg1', + num: 15, + title: '组件与组件之间接地照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img2', + must: '0', + status: '0', + key:'jdImg2', + num: 15, + title: '组件与支架接地照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img3', + must: '0', + status: '0', + key:'jdImg3', + num: 15, + title: '支架与接地扁铁连接照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img4', + must: '0', + status: '0', + key:'jdImg4', + num: 15, + title: '接地扁铁下墙照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img5', + must: '0', + status: '0', + key:'jdImg5', + num: 15, + title: '支架接地电阻照片', + message: '' + },{ + sampleGraph: '', + showKey: 'jd_img6', + must: '0', + status: '0', + key:'jdImg6', + num: 15, + title: '电气接地电阻照片', + message: '' + },{ + sampleGraph: '', + showKey: 'zj_report', + must: '0', + status: '0', + key:'zjReport', + num:1, + title: '自检记录报告', + message: '' + },{ + sampleGraph: '', + showKey: 'other_files', + must: '0', + status: '0', + key:'otherFiles', + num:2, + title: '其它资料', + message: '' + },{ + sampleGraph: '', + showKey: 'supplement_video_url', + must: '0', + status: '0', + key:'supplementVideoUrl', + num:5, + title: '补充视频', + message: '' + }, + ], + data: { + name: "" + }, + tipShow: false, + tipTitle: '',//示例标题 + tipMsg: '',//示例内容 + sampleGraph: '', //示例图片 + // 安装 + photo: { + contractUrl: [], //合同 + filingDocumentPhoto: [], //备案证 + otherImgs1: [], //银行印鉴留样 + otherImgs2: [], //法定代表人/负责人签字照 + otherImgs3: [], //正脸、持笔/持印、合同签署页同框 + otherImgs4: [], //签署完成照片 + //工程信息 + dzjc1: [], //电站基础-主屋照片 + dzjc2: [], //电站基础-副屋照片 + nbqPlateImg: [],//逆变器序列号照片,逆变器1铭牌照片 + txPlateImg: [],//逆变器通讯棒照片,通讯棒1铭牌照 + zjPlateImg: [],//组件铭牌照片 + zjSnImgs:[],//组件SN + zjImg1: [],//膨胀螺栓 + zjImg2: [],//基座安装固定 + zjImg3: [],//底座防水 + zjImg4: [],//支架基础距离房檐的距离 + zjImg5: [],//支架东向西拍摄 + zjImg6: [],//支架西向东拍摄--- + zjImg7: [],//支架南向北拍摄--- + zjImg8: [],//支架北向南拍摄--- + zjImg9: [],//支架角度---- + fixOtherImg: [], //线缆下墙照片 + componentImg1: [],//支架节点(斜支撑) + componentImg2: [],//支架距照片(南北) + componentImg3: [],//支架距照片(东西) + componentImg4: [],//防风加固,1-3张 + sizeMeasureImgs: [],//方管尺寸测量---,9张 + totalImgs: [],//并网箱、逆变器外部安装照片、接地引下线,逆变器、并网箱整体安装照片, 存在字段名逆变器和并网箱接地照 + bwInnerImg: [],//并网箱内部整体照片 + dcImgs: [], //逆变器安装照片 + nbqZbImg: [],//并网箱逆变器整体照片 + dqsbAnImgOne: [],//直流线缆保护 + dqsbAnImgTwo: [],//直流线缆固定 + zjJdImgs: [],//引下线与支架连接点、南北坡接地连接点,2张---- + groundResistanceImgs: [],//接地电阻,1-2张----- + zujianJdImg: [],//组件边框接地 + openWayVoltageImgs: [],//开路电压,1-6张----- + directionAirImg1: [],//东向西航拍---- + directionAirImg2: [],//西向东航拍---- + directionAirImg3: [],//南向北航拍---- + directionAirImg4: [],//北向南航拍---- + zjNearImg: [],//组件近景---- + zjAngleImg: [],//组件角度---- + zjItemImg: [],//檩条出组件照片---- + waterChannelImg: [],//水槽照片---- + mediumFixImg: [],//中压固定照片---- + safetyWarningImg: [],//安全警示牌---- + safetyDiscloseDocImg: [],//现场安全交底文件---- + discloseDocImg: [],//现场交底照片---- + recordDocImg: [],//记录表---- + jdImg1: [],//组件与组件之间接地照片 + jdImg2: [],//组件与支架接地照片 + jdImg3: [],//支架与接地扁铁连接照片 + jdImg4: [],//接地扁铁下墙照片 + jdImg5: [],//支架接地电阻照片 + jdImg6: [],//电气接地电阻照片 + zjReport:[],//自检记录报告 + otherFiles: [], //其他资料 + supplementVideoUrl: [], //补充视频 + kgConditionFiles: [], //安全防护措施合照照片 + //广发 + safetyWarningImg2:[],//施工安全图-三级安全教育 + safetyWarningImg3:[],//施工安全图-开工前站班会(施工安全用品:安全帽、安全绳、反光衣、工作鞋) + safetyWarningImg:[],// 施工安全图-安全警示牌 + safetyDiscloseDocImg:[],// 施工安全图-安全技术交底书 + zjImg10:[],// 基础安装-螺栓孔洞防水图 + zjImg11:[],// 基础安装-柱脚防水完工图 + zjImg8:[],// 支架安装图-支架方阵(东向西完工照) + zjImg9:[],// 支架安装图-支架方阵(北向南完工照) + zjImg12:[],// 支架安装图-斜梁悬挑(南) + zjImg13:[],// 支架安装图-斜梁悬挑(北) + zjImg14:[],// 支架安装图-檀条悬挑(东) + zjImg15:[],// 支架安装图-檀条悬挑(西) + componentImg3:[],// 组件航拍俯视照片 + componentImg4:[],// 组件安装完成VR视图 + bkImg1:[],// 边框接地图-边框与边框接地 + bkImg2:[],// 边框接地图-边框与支架接地 + bkImg3:[],// 边框接地图-其他图片 + ykImg1:[],// 压块或背压板照片 + nbqZlcImg:[],// 逆变器安装图-逆变器交流侧 + bwJdImg:[],// 并网箱安装图-接地情况 + jdImg8:[],// 接地极图-并网箱、逆变器安装接地极 + jdImg11:[],// 接地极图-支架接地电阻测量照片(远景) + jdImg9:[],// 接地极图-并网箱、逆变器安装接地电阻阻值(近景) + jdImg12:[],// 接地极图-并网箱、逆变器安装接地电阻测量照片 (远景) + jdImg10:[],// 接地极图-接地引下线警示做法 + fsImg1:[],// 防水措施图-横竖向水槽 + fsImg2:[],// 防水措施图-落水管走向及其固定 + fsImg3:[],// 防水措施图-其他图片 + waterMudClampImgs: [], //导水排泥夹照片 + //华融 + otherImgs5:[], //水槽细节照片 + otherImgs6:[], //落水管照片 + otherImgs7:[], //假梁-斜梁方向 + otherImgs8:[], //并网箱逆变器防雨罩照片 + }, + + // 并网 + bwPhoto: { + yxImg: [], + gebImg: [], + }, + detail: {}, + formSetObj: {},//自定义字段 + sampleGraphArr:[],//示例图片 + filingDocumentCode: '', //项目备案代码 + completeRemark: '',//完工备注 + }, + onLoad(options) { + this.setData({ + entryId: options.projectId, + type: options.type, //0是安装,1是并网 + }) + wx.setNavigationBarTitle({ + title: options.type == 0 ? "电站安装" : "电站并网", + }) + this.entryDetail() + if (options.type == 1) { + this.getProviceCodeList() + } + }, + onReady() { + const query = wx.createSelectorQuery() + query.select('#Canvas') + .fields({ + node: true, + size: true + }) + .exec((res) => { + const canvas = res[0].node + this.setData({ + canvas, + }) + }) + }, + /** 获取自定义字段 */ + getFormSet(partner) { + getFormSet({ + stage: '03', //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网 + partner: partner, + }).then((res) => { + let photoTips = this.data.photoTips; + let keyList = Object.keys(res.data.columns) + photoTips.forEach((item)=>{ + //示例图处理 + this.data.sampleGraphArr.forEach(item2=>{ + if(item2.itemCode === item.showKey){ + item.sampleGraph = item2.list?item2.list:[] + } + }) + keyList.forEach((item3)=>{ + if(item.showKey === item3){ + item.status = res.data.columns[item3].status + item.must = res.data.columns[item3].mustFillFlag + } + }) + }) + // console.log(111, photoTips) + this.setData({ + formSetObj: res.data.columns, + photoTips + }) + }) + }, + /** 获取示例图 */ + getTipImg(typeId,callback){ + findTypeReferenceListNew({ + typeId: typeId, + }).then((res) => { + console.log('获取示例图', res) + if(res.data){ + this.setData({ + sampleGraphArr: res.data, + }) + } + callback() + }) + }, + //示图图片放大 + viewPic(e){ + wx.previewImage({ + current: e.currentTarget.dataset.item, // 当前显示图片的 http 链接 + urls: [e.currentTarget.dataset.item] // 需要预览的图片 http 链接列表 + }) + }, + /** 用户信息 **/ + userFn(e){ + wx.navigateTo({ + url: '/home/pages/ownerForm/ownerForm?projectId=' + this.data.detail.entry_id + '&type=8', + }) + }, + /** 获取电站详情 **/ + entryDetail(e) { + wx.showLoading({ + title: '加载中', + }) + entryDetail({ + userId: wx.getStorageSync('userId'), + entryId: this.data.entryId, + }).then((res) => { + // this.getActualCapacity() + this.setData({ + detail: res, + 'data.projectId': res.project_id, + // 'data.projectCode': res.projectCode, + // 'data.projectName': res.projectName, + 'data.powerStationCode': res.power_station_code, + 'data.name': res.tenant_name, + 'data.traderName': res.create_trader_name, + // 'data.traderTel': res.traderTel, + 'data.phone': res.mobile, + 'data.idCard': res.id_code, + 'data.region': res.province + res.city + res.area + res.address, + // province: res.province, + // 'data.scheme': res.scheme_type == 1 ? "标准方案" : "组合方案", + // 'data.repaymentMethod': res.repayment_method, //划转方式 + generatorNo: res.generator_no, //发电户号 + filingDocumentCode: res.filing_document_code, //备案证 + }) + + if (res.sn) { + var snList = res.sn.split(",") + this.setData({ + snList: snList, + }) + } + + if (res.nbq_sn) { + var nbqSnList = res.nbq_sn.split(",") + this.setData({ + nbqSnList: nbqSnList, + }) + } + + if (this.data.type == 1) { //并网 + // if (res.report) { + // if (res.report.gebImg) { + // this.setData({ + // [`bwPhoto.gebImg[0].name`]: res.report.gebImg, + // [`bwPhoto.gebImg[0].url`]: IMG_BASE_URL + res.report.gebImg, + // }) + // } + // if (res.report.yxImg) { + // this.setData({ + // [`bwPhoto.yxImg[0].name`]: res.report.yxImg, + // [`bwPhoto.yxImg[0].url`]: IMG_BASE_URL + res.report.yxImg, + // }) + // } + // } + } else if (this.data.type == 0) { //完工 + if (res.contract_url) {//合同 + let contractUrl = res.contract_url ? res.contract_url .split(",") : []; + contractUrl.forEach(itm=>{ + this.data.photo.contractUrl.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.contractUrl`]:res.contract_url ? this.data.photo.contractUrl: [], + }) + } + if (res.filing_document_photo) {//备案证 + let filingDocumentPhoto = res.filing_document_photo ? res.filing_document_photo.split(",") : []; + filingDocumentPhoto.forEach(itm=>{ + this.data.photo.filingDocumentPhoto.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.filingDocumentPhoto`]:res.filing_document_photo ? this.data.photo.filingDocumentPhoto: [], + }) + } + if (res.report) { + for(let i in this.data.photo){ + if (res.report[i]) { + let arr = res.report[i].split(","),arr2=[]; + arr.forEach(itm=>{ + arr2.push({ + name:itm, + url:IMG_BASE_URL + itm + }); + }); + this.setData({ + [`photo.${i}`]: arr2, + }); + } + } + this.setData({ + completeRemark: res.report.completeRemark, //完工备注 + }) + } + this.getTipImg(res.scheme_type_id,()=>{ + this.getFormSet(res.management) + }) + // }else{ + // this.getFormSet(res.management) + // } + + setTimeout(res=> { + wx.hideLoading() + this.checkCompleteEnable() + }, 500) + } + }) + }, + /** 获取电力公司 **/ + getProviceCodeList(e) { + getProviceCodeList({}).then((res) => { + if (res.code == 200) { + var list = [] + for (let i = 0; i < res.data.length; i++) { + const element = res.data[i]; + list.push(element.columns) + } + setTimeout((res) => { + for (let j = 0; j < list.length; j++) { + const element = list[j]; + if (element.name == this.data.province) { + this.setData({ + powerCompanyName: element.power_company, + powerCompanyCode: element.code + }) + } + } + }, 500) + this.setData({ + powerCompanyList: list + }) + } + }) + }, + /** 查询安装组件信息 **/ + getActualCapacity(e) { + getActualCapacity({ + entryId: this.data.entryId, + }).then((res) => { + const data = JSON.parse(res.data) + var list = []; + for (let i = 0; i < data.columns.nbqTotal; i++) { + var item = ""; + list.push(item) + } + + var npdlist = []; + for (let i = 0; i < data.columns.nbqTotal; i++) { + var item = ""; + npdlist.push(item) + } + + if (this.data.snList) { + for (let i = 0; i < this.data.snList.length; i++) { + for (let j = 0; j < list.length; j++) { + if (i == j) { + list[j] = this.data.snList[i]; + } + } + } + } + + this.setData({ + nbqTotal: list + }) + + if (this.data.nbqSnList) { + for (let i = 0; i < this.data.nbqSnList.length; i++) { + for (let j = 0; j < npdlist.length; j++) { + if (i == j) { + npdlist[j] = this.data.nbqSnList[i]; + } + } + } + } + + this.setData({ + nbqSnTotal: npdlist + }) + + + this.setData({ + component: data.columns + }) + + }) + }, + /** 选择电力公司 **/ + bindpowerCompanyList(e) { + this.setData({ + powerCompanyName: this.data.powerCompanyList[e.detail.value].power_company, + powerCompanyCode: this.data.powerCompanyList[e.detail.value].code + }) + }, + /** 判断方位角方向 **/ + getDirection:function(rotate){ + // 计算应偏移度数 + let that = this; + var area = parseInt(rotate/90) + var detailArea = rotate%90 + if(area==0){ + that.setData({ + areaTT:"西偏北", + detailAreaTT: 90-detailArea + }) + }else if(area==1){ + that.setData({ + areaTT: "西偏南", + detailAreaTT: detailArea + }) + } else if (area == 2) { + that.setData({ + areaTT: "东偏南", + detailAreaTT: 90-detailArea + }) + }else{ + that.setData({ + areaTT: "东偏北", + detailAreaTT: detailArea + }) + } + return that.data.areaTT + that.data.detailAreaTT; + }, + /** 上传图片之前 **/ + beforeRead(e){ + const { callback } = e.detail; + console.log("上传前",e); + // callback(true); + // return + if (this.data.type == 0) { + let that = this; + wx.getSystemInfoAsync({ + success (rep) { + if(rep.platform == 'devtools'){ + callback(true); + }else{ + //指南针监听,手机拍摄 + wx.onCompassChange(function(res){ + console.log("指针",res); + var rotate = 360 - res.direction.toFixed(0) + let direction = that.getDirection(rotate) + '°'; + that.setData({ + direction: direction + }); + setTimeout(()=>{ + wx.stopCompass(); + },100); + callback(true); + }); + } + } + }); + }else{ + callback(true); + } + }, + /** 上传图片 **/ + afteruploadPhotoRead(e) { + let fileArr = [], choseType + if (Array.isArray(e.detail.file)) { //多张 + fileArr = e.detail.file.map(item=>item.url);//图片集 + }else{ + fileArr.push(e.detail.file.url) + } + // const fileArr = e.detail.file.map(item=>item.url);//图片集 + console.log('上传图片', e, fileArr) + wx.showLoading({ + title: '上传中', + }) + var that = this + const uploadMultiple = (index) => { + if (index >= fileArr.length) { + // 所有文件上传完毕 + wx.showToast({ + title: '上传完成', + icon: 'success', + duration: 2000 + }); + return; + } + if (Array.isArray(e.detail.file)) { //多张 + choseType = e.detail.file[index].choseType || undefined;//camera相机 album相册 + }else{ + choseType = e.detail.file.choseType || undefined;//camera相机 album相册 + } + if ((e.currentTarget.dataset.name !=='filingDocumentPhoto' && e.currentTarget.dataset.name !=='otherImgs1' && e.currentTarget.dataset.name !=='otherImgs2' && e.currentTarget.dataset.name !=='otherImgs3' && e.currentTarget.dataset.name !=='otherImgs4') && choseType == 'camera') { //加水印 + this.getLocation(e) + return + } + const filePath = fileArr[index]; + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', // 你的上传API地址 + filePath: filePath, + name: 'file', // 这里根据API的要求来定义 + complete: function (res) { + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + var item = { + url: "", + name: "", + } + let type = e.currentTarget.dataset.type + item.url = filePath; + item.name = res.data; + that.data.photo[type].push(item) + that.setData({ + [`photo.${type}`]: that.data.photo[type] + }) + that.checkCompleteEnable() + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + uploadMultiple(index + 1); + } + }); + }; + uploadMultiple(0); //执行上传 + }, + + /** 删除图片 **/ + deleteImg(e) { + console.log("删除图片事件", e) + let index= e.detail.index; + if (e.currentTarget.dataset.typepage) { + let type = e.currentTarget.dataset.type + this.setData({ + [`bwPhoto.${type}`]: [] + }) + } else { + let type = e.currentTarget.dataset.type + const index = (type != 'filingDocumentPhoto') ? e.detail.index : e.currentTarget.dataset.index //删除图片的下标 + this.data.photo[type].splice(index, 1); + this.setData({ + // [`photo.${type}`]: index > 0 ? this.data.photo[type] : [], + [`photo.${type}`]: this.data.photo[type] + }) + this.checkCompleteEnable() + } + }, + /** 删除文件 **/ + deleteImg2(e) { + // console.log("删除事件2", e) + let index= e.currentTarget.dataset.index; + let name= e.currentTarget.dataset.name; + this.data.photo[name].splice(index, 1); + this.setData({ + [`photo.${name}`]: this.data.photo[name] + // otherFiles: index > -1 ? this.data.otherFiles : [] + }) + this.checkCompleteEnable() + }, + /** 提交验收报告 **/ + submitFrom(e) { + var data; + wx.showLoading({ + title: "提交中" + }) + if (this.data.type == 0) { //完工 + //用户类型是单位 + if(this.data.detail.tenant_type=='2'){ + if (this.data.filingDocumentCode ==null || this.data.filingDocumentCode =='') { + wx.showToast({ + title: '请输入项目备案代码', + icon: 'none' + }) + return + } + if (!this.data.photo.filingDocumentPhoto.length > 0) { + wx.showToast({ + title: '请上传备案证', + icon: 'none' + }) + return + }else if (!this.data.photo.otherImgs1.length > 0 && this.data.formSetObj.other_imgs1.mustFillFlag =='1') { + wx.showToast({ + title: '请上传银行印鉴留样', + icon: 'none' + }) + return + }else if(!this.data.photo.otherImgs2.length > 0 && this.data.formSetObj.other_imgs2.mustFillFlag =='1') { + wx.showToast({ + title: '请上传签约现场照片-法定代表人/负责人签字照', + icon: 'none' + }) + return + }else if(!this.data.photo.otherImgs3.length > 0 && this.data.formSetObj.other_imgs3.mustFillFlag =='1') { + wx.showToast({ + title: '请上传签约现场照片-正脸、持笔/持印、合同签署页同框', + icon: 'none' + }) + return + }else if(!this.data.photo.otherImgs4.length > 0 && this.data.formSetObj.other_imgs4.mustFillFlag =='1') { + wx.showToast({ + title: '请上传签署完成照片', + icon: 'none' + }) + return + }else if(this.data.completeRemark == '' && this.data.formSetObj.complete_remark.mustFillFlag =='1') { + wx.showToast({ + title: '完工备注不能为空', + icon: 'none' + }) + return + } + } + data = { + entryId: this.data.entryId, + filingDocumentCode: this.data.filingDocumentCode, + completeRemark: this.data.completeRemark, + // otherFiles: this.data.otherFiles.join(',') + } + //图片 + for(let i in this.data.photo){ + data[i] = this.data.photo[i].length>0 ? this.data.photo[i].map(itm=>itm.name).join(",") : ""; + } + console.log("提交",data); + // return; + install({ + userId: wx.getStorageSync('userId'), + addReportReq: data + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + wx.showToast({ + title: '完工成功', + icon: 'none', + success: function () { + setTimeout(function () { + wx.navigateBack() + }, 1500) + } + }) + } else { + wx.showToast({ + title: res.errMsg || res.msg, + icon: 'none' + }) + } + }) + } + }, + /** 暂存 **/ + cacheFrom(e) { + wx.showLoading({ + title: '暂存中', + }) + var data; + data = { + entryId: this.data.entryId, + filingDocumentCode: this.data.filingDocumentCode, + completeRemark: this.data.completeRemark, + // otherFiles: this.data.otherFiles.join(',') + } + //图片 + for(let i in this.data.photo){ + data[i] = this.data.photo[i].length>0 ? this.data.photo[i].map(itm=>itm.name).join(",") : ""; + } + installZc({ + userId: wx.getStorageSync('userId'), + addReportReq: data + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + wx.showToast({ + title: '暂存成功', + icon: 'none', + success: function () { + setTimeout(function () { + wx.navigateBack() + }, 1500) + } + }) + } else { + wx.showToast({ + title: res.errMsg || res.msg, + icon: 'none' + }) + } + }) + }, + /** 查看注意方案 **/ + viewNote(e) { + let title = e.currentTarget.dataset.tit; + let message = e.currentTarget.dataset.msg; + Dialog.alert({ + title: title, + message: message, + theme: 'round-button', + }).then(() => { }); + }, + /** 输入sn码 **/ + snEntry(e) { + this.setData({ + [`snList[${e.currentTarget.dataset.index}]`]: e.detail.value, + }) + + this.checkCompleteEnable() + }, + /** 逆变器输入sn码 **/ + nbqSnEntry(e) { + this.setData({ + [`nbqSnList[${e.currentTarget.dataset.index}]`]: e.detail.value, + }) + + this.checkCompleteEnable() + }, + /** 扫码 **/ + scanCode(e) { + const type = e.currentTarget.dataset.type; + const index = e.currentTarget.dataset.index; + const that = this + wx.scanCode({ + onlyFromCamera: true, + success(res) { + console.log("扫码结果", res) + if (type == 0) { + that.setData({ + [`snList[${index}]`]: res.result, + [`nbqTotal[${index}]`]: res.result, + }) + } else if (type == 1) { + that.setData({ + [`nbqSnList[${index}]`]: res.result, + [`nbqSnTotal[${index}]`]: res.result, + }) + } + that.checkCompleteEnable() + }, + fail(res) { + wx.showToast({ + title: '扫码失败', + icon: 'none' + }) + } + }) + + + }, + /** 校验完工必填项是否选择或填写完毕 **/ + checkCompleteEnable(e) { + if (this.data.snList && this.data.snList.length > 0) { + for (let i = 0; i < this.data.snList.length; i++) { + const element = this.data.snList[i]; + if (!element) { + this.setData({ + completeEnable: false + }) + return + } + } + } + + if (this.data.nbqSnList && this.data.nbqSnList.length > 0) { + for (let i = 0; i < this.data.nbqSnList.length; i++) { + const element = this.data.nbqSnList[i]; + if (!element) { + this.setData({ + completeEnable: false + }) + return + } + } + } + try{ + for (let i in this.data.photo) { + this.data.photoTips.forEach(item=>{ + if((i == item.key) && (item.must == '1')){ + if (this.data.photo[i].length == 0 ) { + // console.log(12121, item.key, i) + this.setData({ + completeEnable: false + }) + throw Error() + } + } + }) + } + // if(this.data.formSetObj.other_files.status=='1' && this.data.formSetObj.other_files.mustFillFlag=='1'){ + // if(this.data.otherFiles.length == 0){ + // this.setData({ + // completeEnable: false + // }) + // return + // } + // } + this.setData({ + completeEnable: true + }) + }catch(e) { + console.log(e) + } + }, + /** 获取用户当前地理位置后为照片添加水印 **/ + getLocation(e) { + if (this.data.customerAddress) { //有地址直接绘制图片 + this.chooseImages(e) + return + } + + utilGetLocation.getLocationAddress().then((res) => { + res.res.data = res.res.data.slice(res.res.data.lastIndexOf('省') + 1) + this.setData({ + customerAddress: res.res.data, + canvasLongitude: res.resLocation.longitude, + canvasLatitude: res.resLocation.latitude, + }); + //获取小程序二维码 + let lonLat = res.resLocation.longitude + ',' + res.resLocation.latitude; + createQrcode({ + content:lonLat + }).then(ret=>{ + // let codeImg ="data:image/png;base64," + ret; + let codeImg =IMG_BASE_URL + ret; + this.setData({ + imageCodeImg:codeImg + }); + // console.log("codeImg",codeImg); + this.chooseImages(e) + }); + }) + }, + /** + * @param {*} e 图片携带信息 + * @param {*} customerAddress 实时地理位置信息 + * @param {*} canvasLongitude 实时地理位置经度 + * @param {*} canvasLatitude 实时地理位置纬度 + */ + async chooseImages(e) { + const photoName = e.currentTarget.dataset.type; //图片名称 + const tempFilePath = e.detail.file[0].url //图片路径 + const canvasWidth = wx.getSystemInfoSync().screenWidth; + // 获取图片信息 + await wx.getImageInfo({ + src: tempFilePath, + }).then(async res => { + let watermarkScale = res.width / canvasWidth; + this.setData({ + canvasHeight: Math.round(res.height / watermarkScale), + canvasWidth: canvasWidth, + }); + await utilAddWatermark.addWatermark(tempFilePath, photoName, this.data).then((res) => { + this.data.photo[photoName].push(res) + this.setData({ + [`photo.${photoName}`]: this.data.photo[photoName] + }) + this.checkCompleteEnable() + }) + + }) + }, + /** 购售电地址是否一致 **/ + radioChangeAddress(e) { + this.setData({ + changeAddressType: e.detail.value + }) + }, + /** 打开省市区弹框 **/ + bindRegionChange(e) { + this.setData({ + showRegion: true + }) + }, + /** 选择的地址 **/ + chooseRegion(e) { + this.setData({ + provinceName: e.detail.provinceName, + cityName: e.detail.cityName, + areaName: e.detail.areaName, + address: "" + }) + }, + /** 拨打业主联系电话 **/ + phoneFn(e) { + const phone = e.currentTarget.dataset.phone; + if (!phone) { + wx.showToast({ + title: '暂无联系方式', + icon: 'none' + }) + return + } + wx.makePhoneCall({ + phoneNumber: phone, + }) + }, + /** 填充所有图片 **/ + imageAll(e) { + var that = this + wx.showModal({ + title: '提示', + content: '确定选取图片后填充完工所有图片?', + complete: (res) => { + if (res.confirm) { + wx.chooseMedia({ + count: 1, + mediaType: ['image'], + success(resImage) { + wx.showLoading({ + title: '选择中', + }) + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: resImage.tempFiles[0].tempFilePath, + name: 'file', + complete: function (res) { + wx.hideLoading() + if (res.statusCode == 200) { + for (let i in that.data.photo) { + let arr=[]; + arr.push({ + name:res.data, + url:IMG_BASE_URL + res.data + }); + that.setData({ + [`photo.${i}`]: arr, + }) + } + wx.showToast({ + title: '填充成功', + icon: 'none' + }) + that.checkCompleteEnable() + } else { + wx.showToast({ + title: '填充失败', + icon: 'none' + }) + } + } + }) + } + }) + } + } + }) + }, + /** 文件或图片上传选择-对话框 **/ + selectUplosd(e){ + var that = this; + let name = e.currentTarget.dataset.name; + let maxcount = e.currentTarget.dataset.maxcount; + wx.showActionSheet({ + itemList: ['文件', '图片'], + success: function (res) { + if (!res.cancel) { + if (res.tapIndex == 0) {//文件 + that.upload(e, name); + } else if (res.tapIndex == 1) {//图片 + wx.chooseMedia({ + count: maxcount - that.data.photo[name].length, + mediaType: ['image'], + sourceType: ['album'], + success: function (rep) { + if (Array.isArray(rep.tempFiles)) { //多张 + var count = 0; + that.afteruploadPhotoReadFile(e, rep.tempFiles, count) + return + } + wx.showLoading({ + title: '选择中', + }) + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: rep.tempFiles[0].tempFilePath, + name: 'file', + complete: function (res) { + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + if(name){ + var item = { + url: "", + name: "", + } + item.url = rep.tempFiles[0].tempFilePath; + item.name = res.data; + that.data.photo[name].push(item) + that.setData({ + [`photo.${name}`]: that.data.photo[name] + }) + } + that.checkCompleteEnable() + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + fail: function(){}, + }); + } + } + } + }); + }, + /** 上传pdf或图片 **/ + upload(e,name) { + var that = this; + let maxcount = e.currentTarget.dataset.maxcount; + wx.chooseMessageFile({ + count: maxcount - this.data.photo[name].length, + type: 'all', + success(res) { + if (Array.isArray(res.tempFiles)) { //多张 + var count = 0; + that.afteruploadPhotoReadFile(e, res.tempFiles, count, 'file') + return + } + //获取文件后缀 + let suffix = res.tempFiles[0].path.substring(res.tempFiles[0].path.lastIndexOf('.') + 1) + if (suffix.search(/jpg|png|jpeg|pdf/) == -1) { + wx.showToast({ + title: '只能上传jpg、png、jpeg、pdf文件', + icon: 'none' + }) + return + } else { + wx.showLoading({ + title: '选择中', + }) + wx.uploadFile({ + url: API_BASE_URL + 'common/uploadFile_Name?fileName='+res.tempFiles[0].name, + filePath: res.tempFiles[0].path, + name: 'file', + complete: function (res) { + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none' + }) + if(name){ + that.data.photo[name].push({ + name: JSON.parse(res.data).path, + url: IMG_BASE_URL + JSON.parse(res.data).path + }); + that.setData({ + [`photo.${name}`]: that.data.photo[name] + }) + }else{ + // otherFiles.push(JSON.parse(res.data).path) + // that.setData({ + // otherFiles + // }) + // that.checkCompleteEnable() + } + } else { + wx.showToast({ + title: '选择失败', + icon: 'none' + }) + } + } + }) + } + } + }) + }, + /** 文件上传多张递归 **/ + afteruploadPhotoReadFile(e, file, count, type) { + let ob = { + name: '', + url: '', + } + const name = e.currentTarget.dataset.name + wx.showLoading({ + title: '加载第' + (count + 1) + '张照片中', + mask: true, + }) + const element = file[count]; + var that = this; + var url = '' + if(type =='file'){ + //获取文件后缀 + let suffix = element.path.substring(element.path.lastIndexOf('.') + 1) + if (suffix.search(/jpg|png|jpeg|pdf/) == -1) { + wx.showToast({ + title: '只能上传jpg、png、jpeg、pdf文件', + icon: 'none' + }) + return + } + url = API_BASE_URL + 'common/uploadFile_Name?fileName='+ element.name + }else{ + url = API_BASE_URL + 'common/weChat/uploadImage' + } + wx.uploadFile({ + url: url, + filePath: type =='file'?element.path:element.tempFilePath, + name: 'file', + success(res) { + wx.hideLoading() + if (res.statusCode == 200) { + count = count + 1; + ob.name = type =='file'?JSON.parse(res.data).path: res.data, + ob.url = type =='file'?JSON.parse(res.data).path:element.tempFilePath + that.data.photo[name].push(ob); + that.setData({ + [`photo.${name}`]: that.data.photo[name] + }) + if (count == file.length) { + wx.showToast({ + title: '选择成功', + icon: 'none' + }) + that.checkCompleteEnable() + } else { + that.afteruploadPhotoReadFile(e, file, count, type) + } + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if (suffix == 'pdf') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + showMenu: true, + success: function (res) {} + }) + } + }) + } else { + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, +}) \ No newline at end of file diff --git a/home/pages/completion/completion.json b/home/pages/completion/completion.json new file mode 100644 index 0000000..7fb6aac --- /dev/null +++ b/home/pages/completion/completion.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-dialog": "@vant/weapp/dialog/index", + "region":"../../../components/region/region", + "userInfo": "../../components/userInfo/userInfo" + }, + "navigationBarTitleText": "电站完工" +} \ No newline at end of file diff --git a/home/pages/completion/completion.wxml b/home/pages/completion/completion.wxml new file mode 100644 index 0000000..c77df59 --- /dev/null +++ b/home/pages/completion/completion.wxml @@ -0,0 +1,195 @@ + + + + + + + + + * + * + 项目备案代码 + + + + + + + + + * + * + 备案证(1-4张) + + + + {{util.formartFileName(child.name)}} + 删除 + + 上传 + + + + + + + + + + + * + * + 银行印鉴留样(1-4张) + + + + + + + + + + + + + + * + * + 签约现场照片-法定代表人/负责人签字照(1-4张) + + + + + + + + + + + + + + * + * + 签约现场照片-正脸、持笔/持印、合同签署页同框(1-4张) + + + + + + + + + + + + + + * + * + 签署完成照片(1-4张) + + + + + + + + + + + + + + + + * + 合同 + + + + {{util.formartFileName(child.name)}} + 删除 + + 上传 + + + + + + + + + 工程信息 + + + + + + + + + * + {{child.title}} + + ({{child.min}}-{{child.num}}张) + (1-{{child.num}}张) + + + + + + + 示例图 + {{item.imgsDesc}} + + + + + {{util.formartFileName(childs.name)}} + 删除 + + 上传 + + + + + + + + + + + + + + + + + * + 完工备注 + + + + + + + 取消 + 保存 + \ No newline at end of file diff --git a/monitor/pages/addMaterial/addMaterial.wxss b/monitor/pages/addMaterial/addMaterial.wxss new file mode 100644 index 0000000..8e8234b --- /dev/null +++ b/monitor/pages/addMaterial/addMaterial.wxss @@ -0,0 +1,24 @@ +.allOrder{height: calc(100vh - 100rpx); overflow: auto;} +.list {background: #fff; margin-top: 20rpx; padding: 10rpx 0; font-size: 28rpx;} +.list>view {padding: 20rpx; overflow: hidden; } +.list>view:last-of-type { border-bottom: none;} +.title { width: 170rpx; float: left; color: #333; text-align: right} + + +button::after { border: none;} +.guo { background: #FFF; color: #333;} +.ju { background: #f66;} +.jie,.pai,.zhuan,.sure { background: #0A6597;} + + +.operate {display: flex; justify-content: space-between; color: #fff; width: 100%; position: fixed; bottom: 0; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);} +.operate>view { flex: 1; text-align: center; height: 90rpx; font-size: 30rpx; line-height: 90rpx;} + +.title-big-two>view>.fkjl{width: 23rpx; height: 22rpx;} +.rj {border: solid #aaa; border-width: 0 2rpx 2rpx 0; display: inline-block; padding: 10rpx; transform: rotate(-45deg); -webkit-transform: rotate(-45deg);} +.detail-list { flex: 1; color: #333; display: flex; align-items: center; } +.detail-list picker{width: 90%;} +.detail-list input{ width: 100%;} +.picker{width: 90%; height: 45rpx;} + +.gray{color: #CCC;} diff --git a/monitor/pages/center/center.js b/monitor/pages/center/center.js new file mode 100644 index 0000000..164c0b2 --- /dev/null +++ b/monitor/pages/center/center.js @@ -0,0 +1,56 @@ +const app = getApp(), +Api = require("../../../utils/util.js"); +Page({ + data: { + }, + onLoad: function(){ + + }, + onShow: function () { + var that = this; + this.setData({ + url: app.globalData.url, + userId: wx.getStorageSync('userId'), + name: wx.getStorageSync('name'), + }) + + }, + + + //我的结算 + settlement(e){ + wx.navigateTo({ + url: '/monitor/pages/settlement/settlement', + }) + }, + + //通知公告 + notice: function () { + wx.navigateTo({ + url: '/monitor/pages/notice/notice', + }) + }, + + //技术资料 + technicalData: function () { + wx.navigateTo({ + url: '/monitor/pages/technicalData/technicalData', + }) + }, + + exit: function () { + wx.showModal({ + content: '确定退出登录吗?', + success(res) { + if (res.cancel) {} else if (res.confirm) { + Api.req('oauth/miniapp/logout', {}, 'get').then((res) => { + wx.clearStorage() + wx.reLaunch({ + url: '/pages/index/index', + }) + }) + } + } + }) + }, +}) \ No newline at end of file diff --git a/monitor/pages/center/center.json b/monitor/pages/center/center.json new file mode 100644 index 0000000..4ae5a70 --- /dev/null +++ b/monitor/pages/center/center.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "tabBar": "../components/tabBar/tabBar", + "statusBar": "/components/statusBar/statusBar" + }, + "navigationStyle": "custom", + "navigationBarTitleText": "个人中心" +} \ No newline at end of file diff --git a/monitor/pages/center/center.wxml b/monitor/pages/center/center.wxml new file mode 100644 index 0000000..0f617be --- /dev/null +++ b/monitor/pages/center/center.wxml @@ -0,0 +1,39 @@ + + + + + + + + + {{name}} + + + + + + + 通知公告 + + + + + 技术资料 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/monitor/pages/center/center.wxss b/monitor/pages/center/center.wxss new file mode 100644 index 0000000..b06234b --- /dev/null +++ b/monitor/pages/center/center.wxss @@ -0,0 +1,38 @@ +page { + background: #efefef; +} +.top-bg{width: 100%; height: 550rpx; position: relative; z-index: -1;} +.head { height: 100rpx; width: 100rpx; background: #fff; border-radius: 50%; text-align: center;} +.head>image { width: 100%; height: 100%;} +.userinfo { display: flex; margin: 0 0 60rpx 45rpx; align-items: center;} +.type { color: #333; font-size: 34rpx; margin-left: 20rpx;} +.my-content{ margin-top: -320rpx;} + +.nav-link{background: #fff; margin: 30rpx; border-radius: 30rpx;} +.look { line-height: 100rpx; font-size: 30rpx; color: #333; padding: 0 40rpx; overflow: hidden; position: relative;} +.look image { width: 36rpx; height: 36rpx; float: left; margin-right: 20rpx; margin-top: 32rpx;} +.bt-b {border-bottom: 1rpx solid #efefef;} +.rj { + border: solid #aaa; + border-width: 0 2rpx 2rpx 0; + display: inline-block; + padding: 10rpx; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + float: right; + margin-top: 35rpx; +} +.bt-btn-box{ + position: absolute; + bottom: 200rpx; margin-left: 35rpx; +} +.btn { + width: 690rpx; + height: 90rpx; + /* background: linear-gradient(to left, #00967b, #005df2); */ + background-image: linear-gradient(270deg, #00967b 0%, #0a6597 100%); + color: #fff; + font-size: 30rpx; + line-height: 90rpx; + border-radius: 50rpx; +} \ No newline at end of file diff --git a/monitor/pages/components/baseInfo/baseInfo.js b/monitor/pages/components/baseInfo/baseInfo.js new file mode 100644 index 0000000..03079ef --- /dev/null +++ b/monitor/pages/components/baseInfo/baseInfo.js @@ -0,0 +1,41 @@ +// monitor/pages/components/baseInfo/baseInfo.js +const app = getApp() +Component({ + + /** + * 组件的属性列表 + */ + properties: { + basic: Object, + }, + + /** + * 组件的初始数据 + */ + data: { + imgUrl: app.globalData.imgUrl + }, + + /** + * 组件的方法列表 + */ + methods: { + //设备列表 + goDevice(){ + wx.navigateTo({ + url: '../../deviceList/deviceList?id=' + this.data.basic.entryId, + }) + }, + //查看图片 + bigImg(e) { + let photo_arr = new Array(); + let current = this.data.imgUrl + e.currentTarget.dataset.url; + photo_arr.push(current); + wx.previewImage({ + current: current, // 当前显示图片的https链接 + urls: photo_arr, // 需要预览的图片https链接列表 + }) + }, + + } +}) \ No newline at end of file diff --git a/monitor/pages/components/baseInfo/baseInfo.json b/monitor/pages/components/baseInfo/baseInfo.json new file mode 100644 index 0000000..6913026 --- /dev/null +++ b/monitor/pages/components/baseInfo/baseInfo.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-steps": "@vant/weapp/steps/index" + } +} \ No newline at end of file diff --git a/monitor/pages/components/baseInfo/baseInfo.wxml b/monitor/pages/components/baseInfo/baseInfo.wxml new file mode 100644 index 0000000..5a7af18 --- /dev/null +++ b/monitor/pages/components/baseInfo/baseInfo.wxml @@ -0,0 +1,113 @@ + + + + 工单信息 + + 工单编号: + {{basic.number}} + + + 信息来源: + 自建 + 监控转运维 + 其他 + 故障转运维 + 低效转运维 + + + + 用户信息 + + 用户姓名: + {{basic.customerName}} + + + 联系方式: + {{basic.customerMobile}} + + + 用户地址: + {{basic.province}}{{basic.city}}{{basic.area}}{{basic.customerAddress}} + + + + + + 电站信息 + 查看设备信息 + + + 电站编码: + {{basic.powerStationCode}} + + + 设备类型: + {{basic.applianceCategory}} + + + 设备品牌: + {{basic.applianceBrand}} + + + 设备型号: + {{basic.applianceModel}} + + + 保修类型: + {{basic.warrantyType=='1'?'保内':'保外'}} + + + + 服务类型: + + {{basic.serviceTypeName}} + + + + + 服务措施: + {{basic.serviceMeasures}} + + + 投运时间: + {{basic.putIntoTime}} + + + 报修时间: + {{basic.repairTime}} + + + 预约日期: + {{basic.promiseTime}} + + + 故障描述: + {{basic.remarks}} + + + 故障图片: + + + + + + + + + + + + \ No newline at end of file diff --git a/monitor/pages/components/baseInfo/baseInfo.wxss b/monitor/pages/components/baseInfo/baseInfo.wxss new file mode 100644 index 0000000..01b8bdc --- /dev/null +++ b/monitor/pages/components/baseInfo/baseInfo.wxss @@ -0,0 +1,2 @@ +/* monitor/pages/components/baseInfo/baseInfo.wxss */ +@import "../../workOrder/orderDetail/orderDetail.wxss"; \ No newline at end of file diff --git a/monitor/pages/components/feedBackRecord/feedBackRecord.js b/monitor/pages/components/feedBackRecord/feedBackRecord.js new file mode 100644 index 0000000..58aef40 --- /dev/null +++ b/monitor/pages/components/feedBackRecord/feedBackRecord.js @@ -0,0 +1,77 @@ +// monitor/pages/components/feedBackRecord/feedBackRecord.js +const app = getApp(), + Api = require("../../../../utils/util.js"); +Component({ + + /** + * 组件的属性列表 + */ + properties: { + basic: Object, + tabType: String + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + pageLifetimes: { + show: function () { + // 页面被展示 + this.getList() + }, + }, + observers: { + 'tabType': function (tabType) { + if(tabType){ + this.getList() + this.setData({ + imgUrl: app.globalData.imgUrl + }) + } + } + }, + + /** + * 组件的方法列表 + */ + methods: { + getList(){ + var that = this + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/operationOrderFeedback/listFeedback', { + orderId: this.data.basic.id + }, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + for (var i = 0; i < res.data.length; i++) { + if (res.data[i].feedbackImg) { + res.data[i].feedbackImg = res.data[i].feedbackImg.split(',') + } else { + res.data[i].feedbackImg = [] + } + } + that.setData({ + back: res.data, + }) + } + }) + }, + //查看图片 + bigImg(e) { + let photo_arr = new Array(); + let current = this.data.imgUrl + e.currentTarget.dataset.url; + photo_arr.push(current); + wx.previewImage({ + current: current, // 当前显示图片的https链接 + urls: photo_arr, // 需要预览的图片https链接列表 + }) + }, + } +}) \ No newline at end of file diff --git a/monitor/pages/components/feedBackRecord/feedBackRecord.json b/monitor/pages/components/feedBackRecord/feedBackRecord.json new file mode 100644 index 0000000..6913026 --- /dev/null +++ b/monitor/pages/components/feedBackRecord/feedBackRecord.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-steps": "@vant/weapp/steps/index" + } +} \ No newline at end of file diff --git a/monitor/pages/components/feedBackRecord/feedBackRecord.wxml b/monitor/pages/components/feedBackRecord/feedBackRecord.wxml new file mode 100644 index 0000000..df366c0 --- /dev/null +++ b/monitor/pages/components/feedBackRecord/feedBackRecord.wxml @@ -0,0 +1,12 @@ + + + {{item.feedback}} + {{item.feedbackTime}} + + + + + + + + \ No newline at end of file diff --git a/monitor/pages/components/feedBackRecord/feedBackRecord.wxss b/monitor/pages/components/feedBackRecord/feedBackRecord.wxss new file mode 100644 index 0000000..4ea9173 --- /dev/null +++ b/monitor/pages/components/feedBackRecord/feedBackRecord.wxss @@ -0,0 +1,5 @@ +/* monitor/pages/components/feedBackRecord/feedBackRecord.wxss */ +.back{font-size: 28rpx; width: 720rpx; margin: 20rpx auto; background-color: #FFF; padding: 20rpx; border-radius: 20rpx;} +.back-time{color: #999; font-size: 24rpx; margin-bottom: 10rpx;} +.photo{width: 100rpx; height: 100rpx; display: inline; margin-right: 20rpx;} +.img image{width: 100rpx; height: 100rpx; border-radius: 10rpx;} \ No newline at end of file diff --git a/monitor/pages/components/tabBar/tabBar.js b/monitor/pages/components/tabBar/tabBar.js new file mode 100644 index 0000000..84e868e --- /dev/null +++ b/monitor/pages/components/tabBar/tabBar.js @@ -0,0 +1,45 @@ +// monitor/pages/components/tabBar/tabBar.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + url: String, + active: { + type:Number, + value:0 + } + }, + + /** + * 组件的初始数据 + */ + data: { + // active: 0 + }, + + /** + * 组件的方法列表 + */ + methods: { + onChange(e){ + this.setData({ active: e.detail }); + if (e.detail == '0') {//首页 + wx.reLaunch({ + url: '/monitor/pages/home/home', + }) + }else if(e.detail == '1'){//电站 + wx.reLaunch({ + url: '/monitor/pages/station/station', + }) + }else if(e.detail == '2'){//我的 + wx.reLaunch({ + url: '/monitor/pages/center/center', + }) + } + + } + + } +}) \ No newline at end of file diff --git a/monitor/pages/components/tabBar/tabBar.json b/monitor/pages/components/tabBar/tabBar.json new file mode 100644 index 0000000..21164f6 --- /dev/null +++ b/monitor/pages/components/tabBar/tabBar.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-tabbar": "@vant/weapp/tabbar/index", + "van-tabbar-item": "@vant/weapp/tabbar-item/index" + } +} \ No newline at end of file diff --git a/monitor/pages/components/tabBar/tabBar.wxml b/monitor/pages/components/tabBar/tabBar.wxml new file mode 100644 index 0000000..1ed2eaa --- /dev/null +++ b/monitor/pages/components/tabBar/tabBar.wxml @@ -0,0 +1,6 @@ + + + 首页 + 工单电站 + 个人中心 + \ No newline at end of file diff --git a/monitor/pages/components/tabBar/tabBar.wxss b/monitor/pages/components/tabBar/tabBar.wxss new file mode 100644 index 0000000..5a7a975 --- /dev/null +++ b/monitor/pages/components/tabBar/tabBar.wxss @@ -0,0 +1 @@ +/* monitor/pages/components/tabBar/tabBar.wxss */ \ No newline at end of file diff --git a/monitor/pages/components/timePicker/timePicker.js b/monitor/pages/components/timePicker/timePicker.js new file mode 100644 index 0000000..61549c3 --- /dev/null +++ b/monitor/pages/components/timePicker/timePicker.js @@ -0,0 +1,566 @@ + +Component({ + /** + * 组件的属性列表 + */ + properties: { + isTabar:Boolean, + pickerShow: { + type: Boolean, + observer:function(val){ //弹出动画 + // console.log(this.data); + if(val){ + let animation = wx.createAnimation({ + duration: 500, + timingFunction: "ease" + }); + let animationOpacity = wx.createAnimation({ + duration: 500, + timingFunction: "ease" + }); + setTimeout(() => { + // animation.bottom(0).step(); + animationOpacity.opacity(0.5).step(); + this.setData({ + animationOpacity: animationOpacity.export(), + animationData: animation.export() + }) + }, 0); + }else{ + let animation = wx.createAnimation({ + duration: 100, + timingFunction: "ease" + }); + let animationOpacity = wx.createAnimation({ + duration: 500, + timingFunction: "ease" + }); + // animation.bottom(-320).step(); + animationOpacity.opacity(0).step(); + this.setData({ + animationOpacity: animationOpacity.export(), + animationData: animation.export() + }); + } + + // 在picker滚动未停止前点确定,会使startValue数组各项归零,发生错误,这里判断并重新初始化 + // 微信新增了picker滚动的回调函数,已进行兼容 + if(this.data.startValue&&this.data.endValue){ + let s = 0, e = 0; + let conf = this.data.config; + + this.data.startValue.map(val => { + if (val == 0) { + s++ + } + }) + this.data.endValue.map(val => { + if (val == 0) { + e++; + } + }); + let tmp={ + hour:4, + minute:5, + second:6 + } + let n = tmp[conf.column]; + if (s>=n || e>=n) { + this.initPick(); + this.setData({ + startValue: this.data.startValue, + endValue: this.data.endValue, + }); + } + } + + + } + }, + config: Object + }, + + /** + * 组件的初始数据 + */ + data: { + // pickerShow:true + // limitStartTime: new Date().getTime()-1000*60*60*24*30, + // limitEndTime: new Date().getTime(), + // yearStart:2000, + // yearEnd:2100 + }, + detached: function() { + // console.log("dele"); + }, + attached: function() {}, + ready: function() { + this.readConfig(); + this.initPick(this.data.config || null); + this.setData({ + startValue: this.data.startValue, + endValue: this.data.endValue, + }); + + + + + }, + /** + * 组件的方法列表 + */ + methods: { + //读取配置项 + readConfig() { + let limitEndTime = new Date().getTime(); + let limitStartTime = new Date().getTime() - 1000 * 60 * 60 * 24 * 30; + if (this.data.config) { + let conf = this.data.config; + + if (typeof conf.dateLimit == "number") { + limitStartTime = + new Date().getTime() - 1000 * 60 * 60 * 24 * conf.dateLimit; + } + if(conf.limitStartTime){ + + limitStartTime = new Date(conf.limitStartTime.replace(/-/g,'/')).getTime(); + } + + if (conf.limitEndTime) { + limitEndTime = new Date(conf.limitEndTime.replace(/-/g, '/')).getTime(); + } + + this.setData({ + yearStart: conf.yearStart || 2000, + yearEnd: conf.yearEnd || 2100, + endDate: conf.endDate || false, + dateLimit: conf.dateLimit || false, + hourColumn: + conf.column == "hour" || + conf.column == "minute" || + conf.column == "second", + minColumn: conf.column == "minute" || conf.column == "second", + secColumn: conf.column == "second" + }); + } + + let limitStartTimeArr = formatTime(limitStartTime); + let limitEndTimeArr = formatTime(limitEndTime); + + this.setData({ + limitStartTime, + limitStartTimeArr, + limitEndTime, + limitEndTimeArr + }); + }, + preventD:function(){ + + }, + //滚动开始 + handlePickStart:function(e){ + this.setData({ + isPicking:true + }) + }, + //滚动结束 + handlePickEnd:function(e){ + this.setData({ + isPicking:false + }) + }, + onConfirm: function() { + //滚动未结束时不能确认 + if(this.data.isPicking){return} + let startTime = new Date(this.data.startPickTime.replace(/-/g, "/")); + let endTime = new Date(this.data.endPickTime.replace(/-/g, "/")); + if (startTime <= endTime || !this.data.endDate) { + this.setData({ + startTime, + endTime + }); + let startArr = formatTime(startTime).arr; + let endArr = formatTime(endTime).arr; + let format0 = function(num){ + return num<10?'0'+num:num + } + + let startTimeBack = + startArr[0] + + "-" + + format0(startArr[1]) + + "-" + + format0(startArr[2]) + + " " + + (this.data.hourColumn ? format0(startArr[3]) : "00") + + ":" + + (this.data.minColumn ? format0(startArr[4]) : "00") + + ":" + + (this.data.secColumn ? format0(startArr[5]) : "00"); + + let endTimeBack = + endArr[0] + + "-" + + format0(endArr[1]) + + "-" + + format0(endArr[2]) + + " " + + (this.data.hourColumn ? format0(endArr[3]) : "00") + + ":" + + (this.data.minColumn ? format0(endArr[4]) : "00") + + ":" + + (this.data.secColumn ? format0(endArr[5]) : "00"); + + let time = { + startTime: startTimeBack, + endTime: endTimeBack + }; + + //触发自定义事件 + this.triggerEvent("setPickerTime", time); + this.triggerEvent("hidePicker", {}); + } else { + wx.showToast({ + icon: "none", + title: "时间不合理" + }); + } + }, + hideModal: function() { + + this.triggerEvent("hidePicker", {}); + }, + changeStartDateTime: function(e) { + let val = e.detail.value; + + this.compareTime(val, "start"); + }, + + changeEndDateTime: function(e) { + let val = e.detail.value; + this.compareTime(val, "end"); + }, + //比较时间是否在范围内 + compareTime(val, type) { + let h = val[3] ? this.data.HourList[val[3]] : "00"; + let m = val[4] ? this.data.MinuteList[val[4]] : "00"; + let s = val[5] ? this.data.SecondList[val[5]] : "00"; + let time = + this.data.YearList[val[0]] + + "-" + + this.data.MonthList[val[1]] + + "-" + + this.data.DayList[val[2]] + + " " + + h + + ":" + + m + + ":" + + s; + + let start = this.data.limitStartTime; + let end = this.data.limitEndTime; + let timeNum = new Date(time.replace(/-/g, '/')).getTime(); + let year, month, day, hour, min, sec, limitDate; + let tempArr = [] + + if (!this.data.dateLimit){ + limitDate = [ + this.data.YearList[val[0]], + this.data.MonthList[val[1]], + this.data.DayList[val[2]], + this.data.HourList[val[3]], + this.data.MinuteList[val[4]], + this.data.SecondList[val[5]]] + } else if (type == "start" && timeNum > new Date(this.data.endPickTime.replace(/-/g, '/')) && this.data.config.endDate) { + limitDate = formatTime(this.data.endPickTime).arr; + + } else if (type == "end" && timeNum < new Date(this.data.startPickTime.replace(/-/g, '/'))) { + limitDate = formatTime(this.data.startPickTime).arr; + + } else if (timeNum < start) { + limitDate = this.data.limitStartTimeArr.arr; + + } else if (timeNum > end) { + limitDate = this.data.limitEndTimeArr.arr; + + } else { + limitDate = [ + this.data.YearList[val[0]], + this.data.MonthList[val[1]], + this.data.DayList[val[2]], + this.data.HourList[val[3]], + this.data.MinuteList[val[4]], + this.data.SecondList[val[5]] + ] + + } + + year = limitDate[0]; + month = limitDate[1]; + day = limitDate[2]; + hour = limitDate[3]; + min = limitDate[4]; + sec = limitDate[5]; + + if (type == "start") { + this.setStartDate(year, month, day, hour, min, sec); + } else if (type == "end") { + this.setEndDate(year, month, day, hour, min, sec); + } + }, + getDays: function(year, month) { + let daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + if (month === 2) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 + ? 29 + : 28; + } else { + return daysInMonth[month - 1]; + } + }, + initPick: function(initData) { + const date = initData.initStartTime ? new Date(initData.initStartTime.replace(/-/g, '/')): new Date(); + const endDate = initData.initEndTime ? new Date(initData.initEndTime.replace(/-/g, '/')) : new Date(); + // const startDate = new Date(date.getTime() - 1000 * 60 * 60 * 24); + const startDate = date; + const startYear = date.getFullYear(); + const startMonth = date.getMonth() + 1; + const startDay = date.getDate(); + const startHour = date.getHours(); + const startMinute = date.getMinutes(); + const startSecond = date.getSeconds(); + + const endYear = endDate.getFullYear(); + const endMonth = endDate.getMonth() + 1; + const endDay = endDate.getDate(); + const endHour = endDate.getHours(); + const endMinute = endDate.getMinutes(); + const endSecond = endDate.getSeconds(); + + let YearList = []; + let MonthList = []; + let DayList = []; + let HourList = []; + let MinuteList = []; + let SecondList = []; + + //设置年份列表 + for (let i = this.data.yearStart; i <= this.data.yearEnd; i++) { + YearList.push(i); + } + + // 设置月份列表 + for (let i = 1; i <= 12; i++) { + MonthList.push(i); + } + // 设置日期列表 + for (let i = 1; i <= 31; i++) { + DayList.push(i); + } + // 设置时列表 + for (let i = 0; i <= 23; i++) { + if (0 <= i && i < 10) { + i = "0" + i; + } + HourList.push(i); + } + // 分|秒 + for (let i = 0; i <= 59; i++) { + if (0 <= i && i < 10) { + i = "0" + i; + } + MinuteList.push(i); + SecondList.push(i); + } + + this.setData({ + YearList, + MonthList, + DayList, + HourList, + MinuteList, + SecondList + }); + + this.setStartDate(startYear, startMonth, startDay, startHour, startMinute, startSecond); + this.setEndDate(endYear, endMonth, endDay, endHour, endMinute, endSecond); + + //!!! + // setTimeout(() => { + // this.setStartDate(nowYear, nowMonth, nowDay, nowHour, nowMinute) + // this.setEndDate(nowYear, nowMonth, nowDay, nowHour, nowMinute) + // }, 0); + }, + setPickerDateArr(type, year, month, day, hour, minute, second) { + let yearIdx = 0; + let monthIdx = 0; + let dayIdx = 0; + let hourIdx = 0; + let minuteIdx = 0; + let secondIdx = 0; + + this.data.YearList.map((v, idx) => { + if (parseInt(v) === year) { + yearIdx = idx; + } + }); + + this.data.MonthList.map((v, idx) => { + if (parseInt(v) === month) { + monthIdx = idx; + } + }); + + // 重新设置日期列表 + let DayList = []; + for (let i = 1; i <= this.getDays(year, month); i++) { + DayList.push(i); + } + + DayList.map((v, idx) => { + if (parseInt(v) === day) { + dayIdx = idx; + } + }); + if (type == "start") { + this.setData({ startDayList: DayList }); + } else if (type == "end") { + this.setData({ endDayList: DayList }); + } + + this.data.HourList.map((v, idx) => { + if (parseInt(v) === parseInt(hour)) { + hourIdx = idx; + } + }); + + this.data.MinuteList.map((v, idx) => { + if (parseInt(v) === parseInt(minute)) { + minuteIdx = idx; + } + }); + this.data.SecondList.map((v, idx) => { + if (parseInt(v) === parseInt(second)) { + secondIdx = idx; + } + }); + + return { + yearIdx, + monthIdx, + dayIdx, + hourIdx, + minuteIdx, + secondIdx + }; + }, + setStartDate: function(year, month, day, hour, minute, second) { + let pickerDateArr = this.setPickerDateArr( + "start", + year, + month, + day, + hour, + minute, + second + ); + this.setData({ + startYearList: this.data.YearList, + startMonthList: this.data.MonthList, + // startDayList: this.data.DayList, + startHourList: this.data.HourList, + startMinuteList: this.data.MinuteList, + startSecondList: this.data.SecondList, + startValue: [ + pickerDateArr.yearIdx, + pickerDateArr.monthIdx, + pickerDateArr.dayIdx, + pickerDateArr.hourIdx, + pickerDateArr.minuteIdx, + pickerDateArr.secondIdx + ], + startPickTime: + this.data.YearList[pickerDateArr.yearIdx] + + "-" + + this.data.MonthList[pickerDateArr.monthIdx] + + "-" + + this.data.DayList[pickerDateArr.dayIdx] + + " " + + this.data.HourList[pickerDateArr.hourIdx] + + ":" + + this.data.MinuteList[pickerDateArr.minuteIdx] + + ":" + + this.data.SecondList[pickerDateArr.secondIdx] + }); + }, + setEndDate: function(year, month, day, hour, minute, second) { + let pickerDateArr = this.setPickerDateArr( + "end", + year, + month, + day, + hour, + minute, + second + ); + + this.setData({ + endYearList: this.data.YearList, + endMonthList: this.data.MonthList, + // endDayList: this.data.DayList, + endHourList: this.data.HourList, + endMinuteList: this.data.MinuteList, + endSecondList: this.data.SecondList, + endValue: [ + pickerDateArr.yearIdx, + pickerDateArr.monthIdx, + pickerDateArr.dayIdx, + pickerDateArr.hourIdx, + pickerDateArr.minuteIdx, + pickerDateArr.secondIdx + ], + endPickTime: + this.data.YearList[pickerDateArr.yearIdx] + + "-" + + this.data.MonthList[pickerDateArr.monthIdx] + + "-" + + this.data.DayList[pickerDateArr.dayIdx] + + " " + + this.data.HourList[pickerDateArr.hourIdx] + + ":" + + this.data.MinuteList[pickerDateArr.minuteIdx] + + ":" + + this.data.SecondList[pickerDateArr.secondIdx] + }); + }, + } +}); + + +function formatTime(date) { + + if (typeof date == 'string' || 'number') { + try { + date = date.replace(/-/g, '/')//兼容ios + } catch (error) { + } + date = new Date(date) + } + + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return { + str: [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':'), + arr: [year, month, day, hour, minute, second] + } +} +function formatNumber(n) { + n = n.toString() + return n[1] ? n : '0' + n +} diff --git a/monitor/pages/components/timePicker/timePicker.json b/monitor/pages/components/timePicker/timePicker.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/monitor/pages/components/timePicker/timePicker.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/monitor/pages/components/timePicker/timePicker.wxml b/monitor/pages/components/timePicker/timePicker.wxml new file mode 100644 index 0000000..c09d85f --- /dev/null +++ b/monitor/pages/components/timePicker/timePicker.wxml @@ -0,0 +1,68 @@ + + +@Epip1ALfl#HFsra+iJh+ z{6^ewnQiNU;N2TTMJuVsW$#a$`2Rmw>Q@=jn&TLuaQNG2q+HLj7 zZ*RWkCFu_|7fIN{@Za|nJ@SPxd^%fNl9X&^u`p!2@@8&&oXJxF`KHKw-1Copwuk={*{$o zQ%`2QDMA*$|5%%&m~OPHdpLZ#_NS|bn_WkimW~}-d3|g}bV^Xhe3M6MwpP2~hZbYu zb!XhA@Eq24IcLYk=F~Q+SunVy7|N@++f8?O?{Jdz*R<8;=Psu|(iZO8bF^*9>BfyZ zm#bb`54_zQ^Dbt2$hgbcAA9=Tb2vHwY|T9D0-d3di4b!OmM=O}YXFbn%PYoDY;CwO zLMt!K3G*_(z)Ej5Bs^R4@+MT7%kIbfq)o?jcO|)0D*3|IPtK0J8WQf0jE)_+Jy0*| zJG!R3H#@|zFB(m+-n8Mn(zTpAgHg8XRBT|r18v@+&u8DhwIjGZEbV!@zmI2Qk$vNk z!srp@R8SL}!0m7Eh9W~gTKFVz(`N^aEuTCtTzf^82ln@BPH!8;Zf+MO<=|z-vcaL~ zYp&qiGsSlW_aL8xy!{SkF?ETvir!HEF!UO``y?B+C2<>=aAwezC~mw70yomq6p2_Sx){1S>mP?w Bq-FpB literal 0 HcmV?d00001 diff --git a/monitor/pages/img/drfd.png b/monitor/pages/img/drfd.png new file mode 100644 index 0000000000000000000000000000000000000000..f650b2796ba69d44997cb28b07e7296016f9291e GIT binary patch literal 1286 zcmeAS@N?(olHy`uVBq!ia0vp^l0dA+!VDx2zt+`YU|?3u42dX-@b$4u&d=3LOvz75 z)vL%Y0Ln8k*w|MTBqnF4mMA2prf25aD!t#mUr8Y|#a1cY)Yrhbz&SM|)1#^=HMq(z zB)KX(*)m1R-cG@$!U||WZfZ%QLPc&)Ua?h$trFN=DP$9xM zK*2e`C{@8!&rCPj(8Nf=+)~fb%)rvfL`T8Mz|dUZz+B(ZSl7VN%D~LZ*ir!slz_Gs zrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7` zij`p|xTF>*7iAWdWaj57fJ{tG$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@* zg}%P{mFDKcRTq~8r6Sym)!^cg%7Rq=pw#00(xT*4pmJr9RRvbgMX8A;`9&f5`8lvq z49LhY$uG{xFHmrH28Ei1f<|~|UP^v>u_joLudkJ7UU5lcUUI6Zi>(sS6ur#M6f09x zS5qTXH*+HkM*~AcS2ssX7jsKjV;4&kM(y|sqNX3sqI z>Dv2h#*jzqZ-g)J^0;Q|o94A(*#^a~Rrgm#ZR^u7da`h7%ijyf@9;9_-fUc!)%^R= z-HmgcUT^){DQ8;F$z*$Rm$GPvXZ_ZTT0B3Qe_cI$u=l)^7BCbUJYD@<);T3K0RUs| B*LDB^ literal 0 HcmV?d00001 diff --git a/monitor/pages/img/dz_icon.png b/monitor/pages/img/dz_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0b83d3e3e6ea1217a19ce3ec77eed56b42338f68 GIT binary patch literal 1174 zcmaJ=O-$2J94~A$fFHqt8a2jJ)J($GcECm}Q%AeWl8xXfV}6FxKA=GRYWr{l6C+cM zo=k`uH8J60Vnj?d@#Miw6N8C~Tr}}UO!VNz=uwUF6&ZMNH2rve{r!IbuV1frbspJR zwWEq4h>h_MF@>LA=W@I7{rtkc(*)t#r%4%V8>;{lK5oP5hl8+79JRSs4L{ z><5FI5vIOAdrpy>8m4+%l1$PRz>wB4VS(<6PDz;ku~h)HsOZRIoYIHKjV~C1SXSfLv?)x zZKD)e&G)~;wlr=6It6SvW+?!}>zz<0FIYfE(2^h=Eq1YM2qI_?L6Z~&r)#aGw^uV% zn6>vWags?sZrDgR6c87~6jt$Tn#wl^xmYCD&IMW{49iAioDdb-#a5vyByb$V2t}?4 zl`$O{sK`}Uxsj4w#}2xQBa6V&&H^=NL7iMGo7YO`5-O>;%vDS0(pr*B<78-Oxc>~h zxP=|$ELW_HUslWy4D5IdTf3mJQ~0;oj-naV4F^zGwgB`ew=(r441% zjg!Ok`NV7*4<$Eu{8Hnsr^7vEF5%sSp307VdN%E07;)}6Ahz|VPkLPIZ^-$}v(vj5oo$dl@q=SFAhyFtP;^ zY-Yh-DElzgP_fDS?3D^z$O-<=?e!i{eO=_rm#k-NW7)@rsVH--s@oiIxH)qoH5D~E ow(eR>@bRky?`!idzN0${;_mLR_Rrgei?|#j9_l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|81#=KlDb#X~hD#E>34K5C;EJ)Q4 zN-fSWElLJPT$(b-ssbzLqSVBa{GyQj{2W*)24v)yeFf}%Cbun{tax*n@ zbF(mo>2=9ZF3nBND}m`vLFjeEsTY(KatnYqyQCInmZhe+73JqDfW2&$iQ6sCIL(9V zO~LIJ7o2+afsWA!MJ!T8!-RmT2gHOYTObFX@Kf`Esl5o8tTzeHJHWueB<<MJxJ5?YFX}_W92{e&d<0x_wL-AD(mguzdhsk+3x-Kd$Yf%wJgg#mG2?8?uI-VSSBK8%|~Wtx=gHG*MMfVUtO6D< zjfb$#=wfj|SI906PdMpv1=n+}UM_QPYaR2yd+EKw4W{flnv!>IUK=N~e%W)rZ-Lp17MD+goLRZ`|4JXl ztIYG5alWgG=SuVmqb#+elSLZLO3XU?XI#W0&M9gw)^l~+|6F6n^N)|7SHIrAo^jO- zN4tp&6AgdIO@FyNKVY_t+=E?$r3*i4yq7gFi}+J7Z@9#qk&VGBsB_DX6{nm)MW?5$ KpUXO@geCxIEe-Gh literal 0 HcmV?d00001 diff --git a/monitor/pages/img/edit_blue.png b/monitor/pages/img/edit_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..e187116039e0883e944578090acb7f1d42e52d54 GIT binary patch literal 556 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 LNkvXXu0mjfw2PZb literal 0 HcmV?d00001 diff --git a/monitor/pages/img/filter.png b/monitor/pages/img/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..8599a9073ab3c47a69d59e40ff18473530391c6a GIT binary patch literal 1147 zcma)5TSyd97#_38#HD)j62x(gF3|2=*1gQMtLe^eEx5AmF1QapIL;i`L1)f1b8Ij4 zAQ^^F6@(H5`Vs_XL_PYDP|<}5q+S9E(lY9y5`wIU=#0ABLmT}tGw1Ss-~XTgd^4Wx zKH;ius--B(6+bDZ$ag<^nzmPyck1HG1&XRZsAaM^o9Gf1q49hb-?YUxF=9a(BP)Z@P`QiA0fdn~fJ_jHI9&^Z!#$dz zqP%@%jgv@-al^*4p}@ElriqG2(^N4g#k_$a=i`GyjN_uQARqJxV}TA%i1L0mB9yrj zQigSC;4)X;;`%Fc9XseI$t*!jI|J32g>oa#9=@BsPNHR{eqwU6 z{_^xxarybx^ySr>?`G%1(&FOcj^%sbra$GfuSTEcdf!yJTvXe!aeDXc!fR416_0jH Jw>x{!{RTMscjf>9 literal 0 HcmV?d00001 diff --git a/monitor/pages/img/fkjl.png b/monitor/pages/img/fkjl.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc0fbc7c77766bced8f53bf2b913096b5bec793 GIT binary patch literal 1015 zcmaJ=J#W)M7%On2>-!P$nh@1PBQv!~zTzGYl~B7dWR$+JRu%=lgh`=Y8+J=N?qbs}tkX;|#-0 z7;Ac!{-@|SIXpz$)B1FdVTNYiTAkF*b=k%qXE}HWaj_TBb%t45i37`SAp&;LuInr8 zpI5J0;5rJsnKgMc&`{G|I||XpQMqOxwQR{@SC+w2EK>mw5evlLo*&7v!gh3J+E1n- z3pxljkMSeOMYT zbQ*G1FLh(lk-|0!31kS{?Kan*=Ww_S1xb=1FG5kwP(&s=^obQ`{Ai}9prgnR-GI2* z2Z^G!gAa(p(oD~`;01kIKkAl=77WH#00oXuw$uZf=KrCd*GEUBiq7->r*Kp|3=piM z2p@ztqVSm{R3K|1vIq`q81MC}SZQK{qb3f3rX^Kd1nEuJcW^tJ>u^j{HvEWKzKslB zVW|q|x{h4PiJGdH3gV*53qr9}C}bB)`Gu0E32K2hJ+6-J0}uJ6$92xR+CXk%2QQ$J zbriaHkW&h=2Rhr9-NCs?1NFLGXK*g+KrW=oz~pc*9CmMtIwtq8rNZSe#bLL>fvv%p}SkB@8N3=vimn-YF;#lk9YOqe*v-ic@=TGU< zFsYU|eloX>;?>#r$u%={wRZiB&2LX$YwV{|BSV)aN7U5R==QB2X?|>6eKg09vUi!S qC#jcT-(2}{{Qcei&&ON8o~6?abMhMq+T%~lREIH&W&NbEeeW-ySvK(i literal 0 HcmV?d00001 diff --git a/monitor/pages/img/fwz_status.png b/monitor/pages/img/fwz_status.png new file mode 100644 index 0000000000000000000000000000000000000000..7f095d5c7e822f075661386aab6576b46d91af89 GIT binary patch literal 1691 zcmaJ=X;c$e7##%4qR;{!6{Io^YO#e(5|%6wfh>?zLLo*0QD{g8h&Y)vGnk0dqm_cz z4O#(-f<{1EAOb2{1w<As?BRu@DbxK^S^;2Tr6AU~Ulc^OdT!AV<3!^jz&BWOxBGWe|AgW1PB{tqB zqG6C$s)DFwilw9pN0I3NT@hr`8^gu$+kF3%7?Z41!H^in&`h-qCfvO(p;Roc8kXXy zT7sf$Cb}4tj^Zemj;cT|*U~ix=o6<<%25rrXbd9~v4lztmnvnjkjEwwEM$d3&Y}fz zDE@ptgT@G_P^tWga0Z3S3=HHmBluJXEy#ZY%R^u=2N9=9E~A91s-|nFp&C zYhihW8b!ddvRR6$a|xP~ZyYP1Iv4tsScpglvJCfM!=5-I6l5_crAurk#Sbe9#j6Qv z>x)Ve;##=l{CIpRnu=?rY8ZHyjulu|M4zb*wm?#N9QWa&jbEBO)-)uGm zMe7|>i-5ungkdL_6RU0ZR_olH>bA?*?hLK|t~x_^gg9s9?8|RFyR5k4apZz_g2xdT zM=u2kywGeuvypxvP~igr(+omhxJ1z2SbR-=4xGV9MvOK#R%UbSa@TDM!)?%wkYgpC zo&!lj@KZMv>QUKxneime^QHgJ*Y1(?HYe?0GBazxH~}-}_V3r*X6Fb-=-+s+?8<9! zX#QYNU!BQ?QQtdbmMzm`F&piA_RMCbYU{qURcXt#sWe^LyhE}1*qpRZthjyj!1jaB zeNSgaE9y-qmzRPCwIRXSZO7_9_kw24FI5ROJ+V~h4=XUB0^WujXE|VK|ptHQ(z>G-Z{XPJK{0n=@^P zS7T|z7H7w!MqH54c0bHlv}))*Kw7yF->i4*xKLepEmJ?}TKebd@!3c{mAZJ<=%Li_;HxyIfV1~9Yc??{G^H0|H;?E^`d>;!6yk-(Rkgq z@b*1!y1X|3J`*q6;PUSL?f^Wa3GCKO8)lD$k#tppANFoC+QREWGFZdlI%q=4Ren9)2j;*zsulqPjjL_*g6VQQYtNe=~g#a9s8z?$CJ+T`9HS>L`?G$k?a6^7kd zKWc!hi%Pr_AHJ^5>3DvoC;Rv5?H7703LuSlve2$YV77J)j{K><`lDThoB<&}ns=D< H*_ZzSIFg)@ literal 0 HcmV?d00001 diff --git a/monitor/pages/img/gcfk.png b/monitor/pages/img/gcfk.png new file mode 100644 index 0000000000000000000000000000000000000000..09ee6543dd51eae65264c59b62db668ff89e89dc GIT binary patch literal 1102 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 M07*qoM6N<$g3he#SO5S3 literal 0 HcmV?d00001 diff --git a/monitor/pages/img/gg_line.png b/monitor/pages/img/gg_line.png new file mode 100644 index 0000000000000000000000000000000000000000..872c2107b8ea95a53f068fb45fe02317c2934c39 GIT binary patch literal 1119 zcmaJ=OK1~87+$RfDU@2QhgyVneNd&zJ{r^R+E|m_q>XK2O=2IYZMVCVW{tbE?oOLD z78FrX4^}+*KvWQq(u3f$peRy&g9kkb)r$u~s=WvnRGe*-)`M{l!~8Sf_x=C;^UcYQ zXiIt7>N0{L%EPTvj3AZ{<8{rl5LxxXh^FSO zDJyA!$N?~@89wUU#6ybIR3Fu~CBj5Z5u~)%oCV^!XhO-Q6<(#9w~cx5|Z7K4pM{`Ah)=^E`{}QWCQPJy$sKJ>PU`Z8)&A1 zX6s!HD==Q6o+tBz!r3e}Da52uJ{OLBR0<(epy^B|A*k*uDZx&i*g-1=qAoA0ZSVOYRG~*Id^SAD_V;`SX3|1Rg2c*4;AIoxER`b z+`k^Xu!SAuEElYcg9Y;g13TWr)^5vuZo%K88U?#i941jlwg55j;IJ+a;@6SYk%P}b z69!duv?qcsX1n&+IP|Xb8a`TvV$nEp(_>yqzNT?}JuLYXsSnfVUz9&)R+L`exny~4 zJGF~wts*{s?_2p~M@e;?d6A!O%6+-B=Xvz-)!yLpwzIp-6Z@h$0$sZQ@>FBA@9peV z<@npFc%^6fbluq0p2{PeZr7#7SA%`;2hZ+LX9KlJ7l Ou9pZ0qtbYw|L7knjBSbl literal 0 HcmV?d00001 diff --git a/monitor/pages/img/go.png b/monitor/pages/img/go.png new file mode 100644 index 0000000000000000000000000000000000000000..0867707d2b620d6419ba34dfef6d89a9657d50c8 GIT binary patch literal 609 zcmV-n0-pVeP)bRv25u<>x~E4vL_P_=nn$Kx>YGalYokF9^U5!>cdbcT4&+`s&?j)05d%& z!N9n7+-->QLV!g0R(X)sc(!;!yipuBKLu4M#OaY-@y*t9I@!?X>xd9nH=LBzmaKUw zSq!R*U=G$)0iKIz%kQFeBH((f zgVuzYQ2=`()xtzdiBakGy#UT%0e;=HjyGNT7y#J*FIzO=L$K;00Xi(L({Ods-d>C`b(sYL?kBbba!@~I~04&}>VLQQ{Xz{YYqskAX8 vkTU?s2pnne>o-6u1Yc?8u8v;m{oC>zE7>w7cwimP00000NkvXXu0mjfU}h4- literal 0 HcmV?d00001 diff --git a/monitor/pages/img/head2.png b/monitor/pages/img/head2.png new file mode 100644 index 0000000000000000000000000000000000000000..dd280f5460747d99c49dd07fa4910e1d6e6cbb65 GIT binary patch literal 2667 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 OkLX7BAeB1>r~eJignX=J3Vx745d8^4 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%0DT^= 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 literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home/djd.png b/monitor/pages/img/home/djd.png new file mode 100644 index 0000000000000000000000000000000000000000..d2adcb048b0477ac886754b9294bd98dd5d12be2 GIT binary patch literal 711 zcmV;&0yzDNP)BRivv;Y79_RfIturvSt`A%k~SpWb41$0tQ zQvjaiB52jbM-Tu20z^qfK~z}7&6mMW8!-@ux4;7+q})N2J3{4-sCa-t-MPRuYAbTI ztbGG()q7+l?i;^CC9dUCjxCjV19%8#Z6~pJXM;x~QvS#}efst9>?Zq9QFwjYIS_q1 z-}_v|+T0P#wRaf71M!xI3;a~Pt&cPKgUHc#pa)s>kYhbFA7s+bd`sl&1nHw}dY=)* zMcEYjI?SGkpUMV<-Yt$9^hI&TpuaFi(hTK*L7y{e!BI;88MXB!rRE^Qn0Y;QY7^L%fM zbnaDtvuGY>*rgwS&Gh2w%F#XE&vW|D)4B9H->z?iVo6~`;rc#>30JVt>FHrcK`O>c|*5xJfU?}k={bJ+RV6tqu2>8RcUUl zZYzFY#w`pK(rvtQ@8WJ}14mbF*uCe$(}TpjG}hL21lM&GWEeM75H5J4*czMZadMf; zc)WHWC#)wk?~AliD>OF^G7SgWsQT&YenXkMCBYTm(c6G(<4 z(R`vN$b?fOJMVYH_68$WP#GNv-uuLMq}ochqcjT2A>dCF0+O|k++k!mQ9<6OHbyBV t_%AW<#?i*e+(vnuE^~|KZRpwC|0_gR{TlXoKn?%^002ovPDHLkV1l4wX2$>k literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home/fwz.png b/monitor/pages/img/home/fwz.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4ce5d00d4408778c86f130a360cd99ae6c2127 GIT binary patch literal 996 zcmV@ z^XKCC?&A0E;`i?2_wFO1YpmYL%c^eEhet;1-1kQ$Lh?}FJ zadL{qHM$3tjogBk?ty_4B`y>+o)K$Q@Wc4#-|o!p+_BU8LbJ?|A8+2w?9OX6WIUY4 z(WoHPcN$jQj>gAT6TTZ=6pu^zL3D9k)9|IJPTW%TOf7m=!k43Zaj)hSjfq}~>c)Mb zCu-A^0g1>|qWV#{*t+Bs0rX_!Q2_lUV3K^AGXeB$AdLfP5>jp`_{ z(C_pxJw}Mk6;IFLDIzYN72|D$P@$%A7ycJ^=%=)d@94Vm^t;LJHht3=-$}k1Puq!@ zh(#OYaqGPS({_?5c}bs^!yoh4CcT^_U6;-b^??b~I0d? zp-s7#ImCjT#7X{>iAlO^3HX~#ElaNV)zSfDsw8gSs3|l5)0!(b)KI{wIu4dw$<1TK zR*kex8WWVfaOlBMsw-y)aMX0Rw!K%nwz+Sg0HwuD?_bX+}mAWWMg~qU+S}r!9SrCuAEX!_L zYclG4$?;xhs=H+()vv40++4cTq4z-~0G(+%vR13UEb-G5Yc|Nj7m4rPo2 SOB7}R0000O#C|K#ZZRSwevIA!|NpVN@0+IR_RS+x00008 zbW%=J0RH}xuSXboyWs47000AaNklAQ{S1p%M& zo9Py(Z#1NzGx)6ERQG^>)R_LzA`l+RMA(@2=Ncwkruf?l+qwxC}$EW0fJ zbPIaky4ZroR@jQp{cV2`bWhd^F2YTEY7j7W_Xr`i^hzN0rwG^S`N5d(t^*!c(rZDc z*gw* z0P#8AJq~s@;vewdbC9i@D>Me+O}xvJ*xiU{;29yLC*9I3vk@meAH8@9o(IgF6w@!^ zd;BX+-x2%8whNJm#q^i8-o5j%8>eF+G<3p&-K%=`6GcTllAg}z? zX=;R`(D3<{P6sq{E9m&UL3=FlQtzdlx1$bIr;Sktl$O#4$wx^eEh!3pSVX%eG){7K zkMg7xdavc^WlB9Q;g-G_bPc(;P0D7huA>njWg*?q(IaXUQ(Zerevmxw!ck%~@Zn}f zPVh%FkWqQQeHt8}O@Or1toGv6;_WtMtl zg3wlalALT({x&SDCD47;nLUP6Y6o&R66ULFDBAuFp}4L`nE>AsC1RUfSU`uQ-yh?Y ziW$t!agjF<#f>ytGuKZk2nEbjd^3>dNSf<($jwD8o|o3@AlsI88WX@BH`Q!PJL9w% zXE9*|?MOUHx6ZM-dCn7JBZN8~$8ivv;-h36tzArG?k<(EJ;lp5T7$+6=k{=haC2Dq z*`9CZy9B8|q%#3)uYwM_JD^PH(r=eWQAX!)N+A~BVj_5oH!iw`!3SPElGaM03vYNK z8!w*-JomCZ3stwrP|PxSoWX_4n`y{q85D}$CB)6N^481J!gDVs;bQfT8jHfpE7N4n zZJlKvlotMRO((!pFV_y9tLrjCUMM_ncxpNrz;U|HF4T8NSQJZkM|BO4bQYag%dW0n t$JnwPZPe+W|IaSEU58%R{a=>d|35zq7Yfka9tHpa002ovPDHLkV1l9K{b2wA literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home/tz_bg.png b/monitor/pages/img/home/tz_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..baa2aabc71f5b1ad1a345199ffcb40dece271b21 GIT binary patch literal 4636 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 SR6|Ap0000?A+GKPKHQa^xX}Oq|KEK5 zW;J<1_PQOLuik!YV%7%K$XOEP7tHXAWlGRKfrd9qs~@QV1=o4HIEHAPPflQ9QhR=2 zW`RQ1q5}-9IjzQl4%JK{hYHoC1R6WE&mUoMOW;;AR9)7zCUIUTs|16p%|=fjMk`OD z*+-7Bu$5V)-;-0B$;9SrQT^@JWDZV6742v1ZZ+q0sx}pKd!9~VQ;Ao|o_VU_jfRS@ zvBU&f%kry!7Sh{U_!g@@+9tESxUedKIefwc9+x=>`-~SAxa%^nJJR6WE%=Y+_<^uS i<<3QFufjYQu`zt)D1G}fkLMK7k=@Vx5F{KB_k4QkFqslv3t2Q zg6UxL&bCH4YfV}sp82`iv65EzO1b>b$NoK2>v8m-846NQm)cc-U|YJsNOPK=DiZ8I@5UZ+IMvpg>BWAP z$b%WB>8Cvwz~kw4my#{Sg`Vt!oSr7TWaD#Pb^#uJ|8LXn+F%EK`hvuzb-c6S(oJTb zZKa=lA}Z1kpip!TO)cC8PWd&``)KHYM8YD00000NkvXXu0mjf D&EGti literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home/wlsq.png b/monitor/pages/img/home/wlsq.png new file mode 100644 index 0000000000000000000000000000000000000000..d349de2c4e5a8260530752adbfa43f6e8ce9e26a GIT binary patch literal 816 zcmV-01JC@4P)tR;`i?2_wM5N?%DI`;`i?2_wLZ|;=1M1#p>Gq|Ncy~hmz8^al@dD??nOt z000VfQchC<|Ns9-82|l@yJW-VQvd)0qDe$SR9M5+*#VEUAPfdzJC%wc-v9r#9|DRf zMI4atu9?}gWY0C#TjtxY3u>4+M_{iDkn?Hi$QmbPU$DClfYV68-?QG2;RCWNg}1Rx ztXfT>%vr_a&E&wISmioqGO+69&gF>pX&l>(;~2>ZEoe5jYTCAqZD?$AdF&TSqj~5r zs*Xb=o7esyKhxNX#_o9@kWsPEb+ovu&ts_-NuH$V4A|h3>Ybt?Q`R;j0!D0#UO(Bj zqQ`S+l~1b~4SuyL`tzb@T?byDKJ2=*l+xf3+LdU7V|`i(Yuk}jriE)er)wauG$wBE z^}8Lm{gPJ8vd9~4?d!1L(VKj?`^}bz{S|HHo2})|o(t$rW@^3JeK?UXXe;ZlBmFEc zbYDd8vVBpL_A=A2RK%DzLgY4|Plx3mwfne;n)eI>hj%sF=j3{|GQ9<22VMIW*?G#WCPfFcT|5VW%Fd$+raCQzY#C{Tku8|1ijBM!5PU0dM2R!F|ej?iL zX#SE`?7l!g;{ZCC}q#8$4Am#JR*nNJrza zUnFULmPGP2(Sg3D58VER({ZX;UIt_L&^DNyZKex}ByLJBPh8tpzt)Tn_0c5UmnUSV zzelApAM61hhRDi?UUK*#7O$x?Uf-macRVM%Mh{{-zRq3U`OlljanPwaf4#~CdzgoP u&RS)*T)?(m8@pw9S;quiw4!H`75zVJ-=Q$$0H7cw|Fhiry5IS%*!Y#q z>SVOvKB3n%=l>r7000VfQchC*EuNdT#+*EWWtN;K4{7FPXR9M5cneBFiAP_{8 zkccM>RX*PTS&NEhQ5OMW+Fwa~9Yzq@eLMoaUmwnaWeYg}yxtE|UC-Gq@xCL#?7rX( z{^qQT_#u{_RZ}05KdhoY&By_}XO*>O@@CcL?`6m9qj}dRjxCaoHBr~f^kSR0LGvcl zW1S?gR_Islg@~7Aqp02H&c4x0^ybS|osHxPV#dt|5`^*b+P( zlF*>P$SL9!8OYQ(Z_qJmru|)WoUWGW18iDJn~l7ZrFY+^H&(x zX=i^?m1XTMPWIEX_EljZ+y6WJj*ZB-(OV$XqGS@0PXdvJx6v-oQ-db9yp=VY zVwMFDj@y$DFBvQGi_h&P^ZmP2knio+TYdktS?_DZ)AOSmbvSimbsU8^l;bA^_0hi7WG|gwZ2X!y0$q<`=}FL z>l|{{`!z_LK|Y<`4|r0kbLkh`{@L$crx5ZfFmuG#4!P z=kuke9|?P6FK{uQ{&=0$hj^?szD6QNT&VH{VQIXJpaDBv#XhL=i2Y$Ky$XFD|ApigX literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home/zl_bg.png b/monitor/pages/img/home/zl_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e380a2abe18d8fb303ddb6450e072543663f5158 GIT binary patch literal 5244 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 literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home/zl_icon.png b/monitor/pages/img/home/zl_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..06cf0b534454b7b18d79b9a1a1e78343cadaec5d GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^20$#w!VDy5bTxbe2?Y3rxVjhkXfN=?gZ}^j|L(`f zkj({kM zgcc~wN;<&6D$}|;prL{}+qGghC+V;}H=Q&smB(YB!?jIQ7;gr8 zM2Q(GSQp)W7hGW0ELPU(x}*0{rlsHWM_&}qDIApSuxOS|cX`+s#TL`q*eD#VBw62d fc&^JvwJe4}&Uww+rj4J0u4eFb^>bP0l+XkKIdXL` literal 0 HcmV?d00001 diff --git a/monitor/pages/img/home1.png b/monitor/pages/img/home1.png new file mode 100644 index 0000000000000000000000000000000000000000..05071235de40b21dc609200b0e58bed4d4341450 GIT binary patch literal 1528 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x00(qQO+^Rh3jz=+4;jyjuK)lAUP(kjR9M5Mm^tg6RS?FX z-*CZ35|@Z1A|W7HrLYq%Yyz$**eaw@3-JS3_yx2V1+@rh83h*-2on1=LQJBz7N!lx z%4RIi%sF%3_Czrrg9SX zJ;V?R5a?y#SKyY!j}pI0dZ*E)(^4lvFbulEmEeISL-E0a09^=d2$!EAeZQp7CB8;_ zj3A2XVcCL8FC~AqF^neL#rsyaaYb@Y)2I_RsDG`xx03gVSAOp$v>I zcL?pciS08Q!Ufxx7c?nv)w@bkiQSi{x$R2dlb8az%M2x=zcNLm}= zF036knMBjq-DTuhawU2pYD}#}^FN5jq5#)-tY;5lHX`+N^tW zms)8ixSzo4lJ#4GlcF!^|Oh$;y{X}ymc7WavK<0dwy%YTH%Pbo#oyK zl_WWZeSuvelrAa{sf2sCtOxF<+>qf=JbN$_zABqtWn#DlA13$mK0yIz zyrCpydOc?pkO2`5K0*J`8upTPGtH(rnRzYHmF+}k@eszyWI43&uudJV3?jR^yK>qw z9n2)T33ItePumHqXVlv24n$@yayhn^yDJ^Gy*Zs0x z22Nps8Ag9j2`*#A`6zcEwe%;>&h-gVIEm?#e$6@x2uJpy!#|f|hF* zGI7$st2a{A@=4^Cdb5%|I=|_{3W5D#GQDS}J4K4Xi;XIhZBH0BuV2i@?c0FgeEHQc zC-OQo?}fTDU6?ya@0y8U1W$s#0`870l6c$bmsl;M%Sz@=DQwoZDYAR{)h`x8;=2al enCU4QKmQGOw_GI2!+6I40000sz_OtLexiKGP)TC_^QV8JS4 zGFh3O)D5HD?#-8nL|m+WRQ*_52e|3Clv=G;eE zg=ivr85wyIp&eL6d7Y-k1JX5izFsp@ucA8E^}u_;RV8nf&(L%CO7ELz>#^TcW9-iVbQ!dOsLP5n52v7}_URB2f)m5vW7`O*Ee$ zMdiWZq39HiiyhK6He1P%CZap={5IPy z0}~6iLZ!n!TWAQK1g_2Ljng{QC7q@3N`UHE*MOb`xi06~pje5gS1N@3y*kz=-~@0> z_G9@7FVrr5M`rRm1)vU_J857t2#cQ!yqLt2sd`}r=;))(EQF5&59H2HVR*a6O#T>T zCs%C|&^JJufjKh21(&wX9I#8&vHUXkr^k29dw0s-w$UExEVv_RUnj$_rEA3gwxMT_vjzXLewa>ySUQF=s+Y)+r?2d z09{egR~^e1P2AoF`V2w@f-&VwhuH3KCCyI<`FuZPN=igyN%Q)yJ zu@kp0hpSWMVR)gXctO`(PwH6yr0HH}(D%;Yd)raYNz7fhCP00qyNz(eRM9XlkD~Iq z#N3-}0;j)kl!2*q#gOI?bFdGA>=3Ue>OCy6q(3)Hq&TEvyCqR9Ur$G3mlDcMp|Z6G z$#0hD#Y$u=@j`*>!wk>&Y+Jb%P9waF$3KucF1@LIHJ7W#&BM83ON;F`7Aq{Rr=hOR zG&TA;s|LG6Z1-pXaj?n^4OfkT$RR{_fG&ugXsQf!%}G?sCx`}~6<`6-v8I8`Yvwn5 z`GeT*mdZfKoCEQP_>xqBtpe!J+=s+=C#nD~f1>OxTvmYvK-b(3l;oz&+f3+J>5Z5D x953ZC5#5Ss90P7Z^oje7xVM*^t^j9spo&a?Z5K}KKxhSr4quF!sjvRYVSnfPa+-dDves5YKc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDi`VQgaPY-DO-VCrmcXz1$bXkudKY~ki;U~Xn? zZf4*D)9aF-T$-DjR|3v4~Pj*wm=R%;iu*SQ+p9GS#R-Vsb*kcy6x%W7*cU- z&b0m6B90=*)6EyO1#_9|CHng9wYw~}fTEQ`Il>$%j+@&199%xA{?&!|^=xMuV;LI@b?u3wrf%=t891NV|U&5 zr)!aDi+rlb?E^ikVJAhp>ltm+8tg=B&pmLxwd4VZh0dWB>EA-PW;y=QMEBoGc&2!$j_5L%VJ~Q!+cXMuT__pNB&F7y(48NT#x_;Jq!4!q` z?zK(AGj0|&ou4Fjrn~L^v>V9<95$VTrGlGlpZ%SZ@KXHd$=^+?ue8!`Ps=}Ay?#eM z-?@fT?=N1HlP*1&%3 z_CVb-A)WM`nKHFfv%kJvqbGJM<4}QeRDasCE0YdSEQo!>WSbYq-KN9c^RnjJWTjhk zEjJ%~b81Il_cYJg_cL-0dBrO4pQ{P;DENBaF~{D1s^^jJD?jGXGuwIRthrW^*;BD| zSBmj#J-iA21w`+0^G58x=F*t4~yHRMN?dx0B9YXaAQPe0;~1rN6$sWWRo7TH!{k z<6n+c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcZ02le;A(7YZe#)sbys6YLqkVr6Bh#)Qx`*5 zXJbp4UYGpj(%jU%5}4i;gkCe8dO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPrm(>$o& z6x?nx!Kqgt=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6T3q}IF9QRUsHcl#NX4x^ z)6RM^1&SO`U!%eibwx|DT-8l4Rz&lnn)gBVjO6}>`4is<=nL%RSuD2l^?`*;Uo7Ik zB&3q`E8aqQ`Qf=Ut-WG@IL_Vq{m+i;zYBA&m#&?V)?8b_Qg)CnVqw1i0mkwNTrtfL zTD)F3^Mp8DH_eZg68?Ppwfb$A@9(~>Wer+($k{-IbDo3j6bGRrohnCPU1{I0_>@aT z>_7{zRI^kBS4366>MQHC$LdppwS78g+BWqxdQ4ilv1Xa3<{ai+MQCI&0)yr%Xg5$(bPhpeYRrzPy z$KKxemnH6{&#jeTaX_8>Nb4H^kMrEJls0QDzi!vuQk`&QU*XD?K3wXF-m@-y_$!^* z;(aTnaZ*~tlwE=;Vo$$B1;4!{cH5Qptll2R;}2qwus>k1X?c@0Z?h`@zu*H0pBsl7 z-!`gotdp&IpHRL+t$L+Skmp`c%2;g}Ef> z%WqT83r+9+@jf>wDMWdS#8nMdw&}0BRv23azf#Z_c=cYX_OfVTt43;0!(A~~!D zUHl>xbEK#Jstib3`cLZz)A|R3cP<^i&7=KwKdS`8dfmA$Sv@?jL4~HLtDnm{r-UW| DgWn3} literal 0 HcmV?d00001 diff --git a/monitor/pages/img/jksj_bg.png b/monitor/pages/img/jksj_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ea692383d07558fe670a47b3a415179fb6a6849c GIT binary patch literal 77289 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 Qd;kCd07*qoM6N<$fHq)$ literal 0 HcmV?d00001 diff --git a/monitor/pages/img/js.png b/monitor/pages/img/js.png new file mode 100644 index 0000000000000000000000000000000000000000..aa84112579f34b47a41fa1af75d94ba33eb8ce17 GIT binary patch literal 1256 zcmah|ZD<>19KSBG2Q*(U}?%bNK6Z9=8j>_t4K?A_&(bYQBI9=}|#8G+I)OBBX1Y ziT4R&@Lb6jelIywx9y`kn3DzNKB1#@|0)j$13lfF}L5LopWH!iwFi*1sex3{Z z0Ox1Jj6ck<0m{z`{sAGtgUyS?(JWMT0tOa+UksU`wuJ2hGHhMQEwdKxN1>G_ZbbL2aE24&5r34X)BU z7p^6j!O1XAbN|uo<`Q<0Gu*N+o@|*P>e%rXw)W1yE}X`{#XgiQpfO_{RV51&8xBrs zQVDlQQYN4N0uEx(quJ4Xa@ZVw2)_Kk_c`+YWlVVhkpsAAd&? zL|bP{Je2RdAs+z`kMhBVW77HO`{FbA8VkK|_uM$k&vq4~uC^Vg@^@o18FJy>9pn!$ zcop~VSEs$#?;IcR?(*fg)r;FQcMj}v*Z*uE`SrzP%a0Lsx4ZK5z9-P>Mc)3LIB?rZ%HC!lT>9omq7oM)u{VA5yy97ny9y_Ed%agy z-22aL-}&kEnYV7We?9%v`QPVHo&9oo$tFiUKCdfKckS(IfVH{$C$n`DywcW)udNpU zSbZaqUHhdpA6o36{@@x#-SScGE1tb4PM-WMR&HPF+I8_}+swt6Z19e&QFHgjI$|Q2 gy$8fOZ(x2Gv2yj>{>!(o4&#CmsbogH96wV38(RyUVE_OC literal 0 HcmV?d00001 diff --git a/monitor/pages/img/js_bg.png b/monitor/pages/img/js_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..6375ace5c17ed808cbf371d25d278c93f273b818 GIT binary patch literal 20236 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 literal 0 HcmV?d00001 diff --git a/monitor/pages/img/nav_back.png b/monitor/pages/img/nav_back.png new file mode 100644 index 0000000000000000000000000000000000000000..98727cdaeccc40be48c420c7dd21362fc9aedd94 GIT binary patch literal 397 zcmV;80doF{P)Px$M@d9MRA@u(*~<;WFc5^{nIhe!4Sd*zz)ES$U>V1OE8 z6hH|v8lZxh1W-Us29!pa07@dv0HqM7fDXi(004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x00(qQO+^Rh3jz=(4(U*)_5c6`eMv+?R9M4xm%*+aRSZPy zRJRhbOjZee5&T0068q?}fK9{?kX80ULdw4-t30Hz03@Qz;@ZBxJui_aZ)SSBZI`Rc zzUaj#UH=jP83`fKdP%3P*A_p-cYoOY4C6l|8RWbdgry_i+tMKkqw}GtGcXcEXv_yh zU`wxoyGTN|?koxTi45rZ`<{Rq^K%s9EoQ6G3|V{&yax@#FdCRUYu;$j3bF1$<3Iy6 zEWHPP>r58OM#jRkauRAJVTr+l8ND}puE-GPZ!A_&RuY&@ST-N*@ihwQoe0c(&+4gJ z!8HO}p7&noLy11J5{v}K>aoXj)B|SK@m|s+;0+od(HKYrn9v5Km35G1k!>b;RP~Km zv+8l6;b_%??v38qdUS$*1HG&sGej_~5vo;|4>(Qbk*&C2n&kO!a@cslnolG9{;p&0=t4YL}$VA8@+A!3~l*v|L zRllE}%OK`Ou}Ef?%zEZUnj+JJ{75d`5UY{V(s^;EOHU^fMXY8Jn?{*RII>j{@bJ2S zCN<(Y^Y6vxRLr&X%II+r7Fz(AX-Z@cxpM51&ht~@&F8wt8yPT>sJHJcg7S-cp zJ^Xn|DvZDS$n@T{{nKaVu@#^xi2|I+U$bKq)$Mnr>~gO< z+tPxTr_ax42Ccm)hdSucCXcNhZc^&+NzH2P_lQl7Ck>j-9JaZ;>vvn~y0%*nmvyeb z(>Qb<$<8)&r^$~Jy6G}|fLxb^xVgqn;%5bI!}~#KyE|2)w?TUKuIl@+QS8Xu>}6ZZ zHYCg*)VG1iiPVO}V)mZsxfwnobn`$@#|^B>avD44{2S;j@Dxwyq`U-GLX*Tt7ImF zDdN>xTzY%j`Xx>VFN~giX^ibwICdgw$z(w;saB{s`bvLl=$+87{{va?v(LCnLiPXv N002ovPDHLkV1mt-bIbq$ literal 0 HcmV?d00001 diff --git a/monitor/pages/img/order1.png b/monitor/pages/img/order1.png new file mode 100644 index 0000000000000000000000000000000000000000..a78a7b51d257d271e52272caf73b3d3270f51314 GIT binary patch literal 1354 zcmV-Q1-1H#P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv00000008+zyMF)x00(qQO+^Rh3jz=+7Yd^i`2YX}ut`KgR9M56m%q*&MG(a6 zSFG&Vj{LzB!8=$YA+gDa*xB8#2L(&UL->%=kNcut2-=DKNB(V+=uvTk16zqQ@DL~}?7ooTptYdVq-1U8K zU>v`WY?IrT+i0%lc_6S5UxVKR0SZCLx(9@i*Qdq3 z6jLcvNLVw=T`iWeI<3zj%S6H)`0fB6v(c254Jo`(v^FMScOB1W%~crh%HC4F`7ZTDN&E6kIPfn+R`tmPtp7Kz!CEzDP# z*SIhvWxW?E86EhGi>J|9RQQ`veE8Q2p1y1(PvSVke%zOI;39EakE^|QkLGDpqo;L3 zMGULmsv$SkY{|>T!>eGW!`<-9)BL#{TJ=dn*nPZfyp0gv_LftP0wM|IHiuk(UdTe+ zY>D}|=?Uj+k2F1BwC4DK9`(|kXKrotGh?fP`ykUyIz~Wmy;DrsnJabaE7#`1I~;!^T)1Ude59T zdv&WAp*TUGaZ1b`I?P!X6Z_{nz5`kWpb*@RN!4nt{Dtwmz~?}c4EF{?=n|UXbi1rNgF&MJf9M7(J=~k zVNlAj_r!4$%{`o{`Jg&gr?ptX>wfQvrj#fTP2e@S)YGBD`6Qx^+!~^yow7_c2Qwj7 zw5yN<4W#wJ7%R{NygX*)lHEF$5YCQnQC*5wo_fw=n{-kTj#xOE&r~FH`P>~ux^0w7bC2`V*#!-|+Y6gVj*w@BN?KAe3xEUBK z#6v|w<)yO0fW&|hU06UujEI4*NQ{h77K9i%r%8$g!Sdtozwi70|Ni@YtB_wDADbAX zC~7>rBo)bb)_Z(|R$C2K(CCHpVBQspfB~@rTw~pIL^n>ibwx7v z!YmEi5Zs8<2`?e2$OVu>HUwcN;#c`l07M0bk8naDGzS74A7!~H%Ln}&FLDtvD1gpI zlWexODi)(;3+CKw1ML^sq}CQhSifbolcub!&q0bSf1g$Ep>si{C}un^w172!lQcsDeROt zEyxz3gEnjx68NN-$`VsHR4}s32(5R!Sg0e6oI0{VD&=)824+`uQ$tPXT$>}yV%Bu9 zVyZAJ#c86#=(;9`xKv0A^RYlI!SQ@LlMH4Ou~;}PaN!gm35L2{38@u|OHwM6@JSyBw^9qu28-3<{3dBdJ{$)sm~ zXcEWU#M+sMx7W#UaT=#9xP(@5Q?Vg+=-{lOtdY}Ew9U)!;XDDID&)%PMJqSjxc~P( zjP|AoW*8UqCF*$V^Bv>N*RAFr30=%eiSq16wfcCnikTY&rGZ_rEF9Z?=XHue0jyM6u5y=(hJL*U?Sa(enzP~EP5(Mku@a`j+j d@5DfB#-M%(4{kb3zkZTDR5qQLUL>nqzX6deNZSAa literal 0 HcmV?d00001 diff --git a/monitor/pages/img/pai.png b/monitor/pages/img/pai.png new file mode 100644 index 0000000000000000000000000000000000000000..36daca7ea7bf19f9ea18cae69ccb139e3e57798c GIT binary patch literal 1623 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 literal 0 HcmV?d00001 diff --git a/monitor/pages/img/password.png b/monitor/pages/img/password.png new file mode 100644 index 0000000000000000000000000000000000000000..578b6771f1a28861de4f72fb144442ff90b3a3d7 GIT binary patch literal 1133 zcmV-z1d{uSP)L8u_xqzCuTh7rYrl;Y0SprQ;a z5YiNiXv-}1q4FW3QiJ{wCE-JvXi&SA#yTgy@6Ns5yE}Vl&b@P4c3$WF`OP=yeCK@U z6WVxmh;tEo5N-voA!aVZY@j1cdU{FHd$!jkcux{c?0$u`c&uiEyx0jec zd7PiJ^fH09OfSkS!1-Cm+I;^f%4!+l&1QBc1@^HTu^!>cHbHFa$}@yKHCb$@0(;mp z&jV|0-U^adwi42p2AvKZu>n|Dko#86Y?P2E#w$+%)*+T7>}bJD4D3YN!Aw5mcTUp9 z#mwMFl$F4}zzn0^6%sbGGyo^N!B;IL*b(493Hfp|AdR>I*bdA!K#ve}ef{py2psWI z3tQI_l$&LM;~H_f4<%s<$|b-tl--=gMp?_x`W&+v;{Y(n0KHd2?x@PwfRm!|mcft{ zjS09(`uRdPvxt~oz|7-gFb@^>4K(LuWCW)=7@FyA9= za4Y<7(un6%3h0u4Toc~*qnnvUZ2ItF2mBpybzbk)xXmk{C8v?;#PPiYb_sVumf`CA zDF#02fKLNwPZQvO3kTMS#lWk{0z4!kA2eGGV@P=5LPJ6$egWV3xaU_1xwJrF9}Z(~}b0xhm9F;z{ zX=2nH%LP&PO*&GdCkwrE`cCh(FnO{>lIzm5?`@B}3*NM^Xvr5PRs`I+0nxJ_7pccZ13NrGF^`TO`S9Dc#+&Fo7PJ*?{%PiyVdGC!MYcen}CVRR# zhFF|_JLPpzvw}!VFNem}6(8k%bM)?huRqc!`(T03+_Yu(oA>XjDJXmB@Zp-bmFuhX zIUFwf8!Yx6kgNMY_ug$4rbRAKU)n{_vykbOHG6l1|M2qX#g7=uZa6WV&@;N`d|cKn z{#D)4xNZHD&&M&evq32BaqxT55J@4(IY@ z;n#^puUG|J>RvUhZq3whI9ao{q0i~#!Q18muNs@LrachksGa82T9q_A>{pKa#~qhV zjSoE2T|Gxu$87J!t+RB`bD#2k=FalvpjUh7`;bqGbup3!oMu+SuUCY9h&W}o=3M@~ zMw=hcn^vy6l5*9EVb6zm#%JR;di3}jbLk`pluCm9 zf*BrE{u1K~`u6JCT+gm|mv>DwSl;5Kr7CbZLFPn5){;rqc|8Y0;}{qivproLLo80e z4LLojSwVnj5yw6c6FVW_q-X!_i`*Ly7 zxAasSLyiN>ene-+FL5)@u${4P%Zu+@cOJTGbh`TXtaMc&t^1eVPM~RO%Jx?%nKOqM-5ICfKOavQL_SRp~wV2F2yRQD2{_uuqt~c6#se3;ybiO;c>m z<~Pqt;EB~OeYW7&g@WYM*<2krzgU(E-*{&cvTh#3i!EQC+~BHkZ{DlEx9ha{!A{Zwm>e&t??6Q zA~94Qm>3wDD>Pm7Vj4N_Hl}bBH~moM zzQ1_MLElrk^@1f@k%n7-c|XQ$`&HZB-*#n>Tf7NNslo&TOdXg8J7J=vD%a6f*gV@7 zIM{*EZIxTf0>Xw>gBpo3EbwzV7tKnrDD!Ael%?4jD2b>jh(!VAb0Sj2IVCT{?%-Io z*xOR-y4j7zRw~z`G*Sei-EQ;kJWt}LfMi(~L`jgO97E)iy^uO-E=;C+3OY{Q*pH}B zLYOH!n`D=&9Lx0h3PIGD4U=w}SiywUi3G%p*_C=g%lbbw2>R%R*6~Tc{}fK_y$B0+ zoRHnv#SA``g^Cm{#ttR1O~_8KinSJ@Bx#WdYFbvcc{si9haPDs*E<}`QYv9WozTS< zUFDbx@B5yjFBeTzG(~A%HW4z+Wz)zniMmuMAh~Et#U58D?rwlX+T(gBTr`lI*&&En zWF5!;J?xn=31H{iia#(H!x*U7<$42iG0cHnfh8kk&Hba+ji+Q!5k0DSw*yNAD;UziN27*+l0^2Yt&;LJMl literal 0 HcmV?d00001 diff --git a/monitor/pages/img/sbsj.png b/monitor/pages/img/sbsj.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c621503914bd661ffb8040f970aa265ed9985e GIT binary patch literal 1089 zcmaJ=TSyd97@km)yntCz_H-O24BDN`uItX^WV*BJ*6y;dOIi=%ICFG|b>@sS$9DCh zn{=ax9+G;Iph5z%Am~A`5+RBnEPd=Dh%PTdNf1E~UCyYhL2bia&iT*xegA*{^UbA1 zyuG4ycPT|t6_E}(Nxt>&Q(Q#eCl@D=Q&iC&J=KGIVo^~=hF8&0AN1x7i>y;rQ*+Kz z)C|O+4-V+2L@&?I(LmQEy1OC9#;g!b>m8#u>>7=y)X|J8Xms-d(3BI2fB~@ra>k(P zh&hQ~(G|(q4Kp-Yf#8fpx3~#GPb>jK$cCW78}O){p9hVCmkY20@81V_mTP3#Muziw zSWaXEqE7&87frI+TECc-+tzZCnM9{CwnT=>X0zU`&x`B5dSCFBj+PZ~xWCB-F=|jUiws%lNzxglY|Z$wpB>rwQed)4B1e@$W9?NnD1gDjWBZ3$O55|+qEF5@77HX zWu3h%oLEeZm=0D<6-H!AHwS!@i%rdm~6HsfjkpWh=E$W49;R@=lakav=@CCUHDTZ+m_m9KQ zhlqpR;ktFnWZnGGB#yUvtU8o;t6&q5k4vrYg0685+8yR{In+RxE zBAN=fThT3<@xSj9bia;ZN^mmXMcu54JbHhjdI<+fXfz_Xr0QQTEY(z<29@WO;%9@m zljDbmrUO$8nK$JxW*;BhemzV5dfHf~bbh?@>IO&-Etbs(woX)=#rrG2?hq$$$ydkD zJlQldwfOe)<;_*?+1J<7&c&(*>tNs5ot;wXaAK_YOWl$4(oz1$Ov&7*^3LgK^yl4e X%isEEzCZXdL8_o4;kbOSwfF3AI$B?r literal 0 HcmV?d00001 diff --git a/monitor/pages/img/scan.png b/monitor/pages/img/scan.png new file mode 100644 index 0000000000000000000000000000000000000000..0de75e61c636ea31a1c7df9410810b8316246b90 GIT binary patch literal 1296 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8NdcWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nv#O)RnoaRCG zrr>sqDNeomK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)_*1+Gh<+2Z1Hq)45_&F zW@exlv!Otn@JbGDrM=w`W}5CFR8Czg+g!%>@8qVIv(r!Jn4R=myH#WI+m1<*M=Qfm2LDhiVNpG2WgZoDcTeu` zwlXf?1#-74{@EV#x_7XDp|Jj&s@(av=VyF&R-2t7X(!) zwO`K_-@faDTuGmma=e$x%AAFl7EDkvWt0j~_;tkO)6ye~Q!`oKhi4gDHVVIbTK#Z` zJ&)(g<)&_s$oceKD8g^J#_6?H`!pPFDZ;CNFmH z^{?(N8M0e0^X)H5I~?8|_vX*d31?TloyEI*madS0cH(cL1cqm?Guv#x)(L~kC{I^E Jmvv4FO#mju(4GJQ literal 0 HcmV?d00001 diff --git a/monitor/pages/img/search.png b/monitor/pages/img/search.png new file mode 100644 index 0000000000000000000000000000000000000000..59c22f90fe20e6b4d2060ab38cdbc15fb05853a2 GIT binary patch literal 841 zcmV-P1GfB$P)4Aobx^BJm);;X)N6E zr#3Yo%W)|d;dIQyZv2Yv*o^nF347b^xX}j0`M5g)j%c&raXg9j*fAT3d3Y2zqLIG6 z_zYv%hF$5Ok3n35{z@OeU^QNz4&une_=oT&&dByS*5L*GJWYQMEXExe!6|qNS7Mde zx~S^A)gkS`J!vl%F|r@xBwU;AC-7I7AYc^Vr+sr3 zVj1R$1!6FrpY#BLxc2v?y{JGeOvg7p zf|$e)X`fjj=B8sNx8h7y#_B5&C8^Zqk#4DE<;gN|$@dF-2vNrRtw3x`$2mO$I9c3H z@O6RMoQ@@Wvn9h7d#pgbmyQLvxCam`^82O8C7SriflKQ4E(4r~>(U-A&ZbD+>noJ! zb`j!U9EHE}bQOYl8INcC+5EB7x(v6Zy+J&J4}$nZyo!nY{P7M042TDBQ)JPDo(t8} zFzP@Sy-hsH8fLEn@k}hGz)fP(wGd_SO=+*j>o|TE082$;Jgefn)0FL=3Nb12{Kjmr zz!$i|;cJvSohkyax&lSZ#N_sa)Ll*!xCRf1hfcpJdbZ;}Q5MtzohXjqtN2y~VTpmu zD-$~eq*X0?p(q6}n&SUQq~qTcs9%(VRqYZ-f31jtqw$ug#){s?NIL~FalBTE73yp8 z?^k#QPl;n+RUOD^yAVZlM0qeMqJFNJ@lLT_WB9H`A5%dl{x3wQbPS%u)wusZ&&Z_h TogVAH00000NkvXXu0mjf4Izzy literal 0 HcmV?d00001 diff --git a/monitor/pages/img/select.png b/monitor/pages/img/select.png new file mode 100644 index 0000000000000000000000000000000000000000..51e129352f48abc3d390c2e293d93dbfeecf4503 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!3?wz9Rv81SgaDrqS0K$0`w2hVbMHS;!KUl~ zcHI82Q~h=3vA^zp-!&`0PCoP}aOw|{>@O?{pSIlixBlwC#b^H-)qh)Z_HX9WpV4!E zShaq;yMdn9<$B`I-%QST20x z-jeFEkdt%i{NMLCIfZN$N>WmscIMZ~Plx7Ro@g8NWMzZ!#AmJ(rbRY6OnM`=L0n>O z&f6nexdnRS7S8vtHEyxpbaY>*;_Ix*KdPT!Fct2-b68WPT{MWF+k?-WgP)o4+Mf8! z91X`)-aCjNO=(o@I@x#eWJ*47ckcJfU(=2%U$Bok{fO~L=B7VS@~)*^-!P}td)m=@ z-c34czSE8_Ik{=Zmz+u+1<(Gztt-O%>N{lWpR6^r&)LJZZMx5%eUFYt_#UlDX|G{y W;MbOzKc~7J6u6$QelF{r5}E-0O1HNF literal 0 HcmV?d00001 diff --git a/monitor/pages/img/song.png b/monitor/pages/img/song.png new file mode 100644 index 0000000000000000000000000000000000000000..ec883d86fd98c7e7cdf575b57b264aaac81ccf40 GIT binary patch literal 1449 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s1|*Ak?@s|zk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMwS&*t9 zlvv ztM~P_^2{qPNz6-5^>ndS0-B(gnVA9%O(#oZ7e^BVQ)df9Lsv%&14nabGZ#}w3u7lI zb4wSPUYGpj(%jU%5}4i;gkDpedO=Acw*Y9fOKMSOS!#+~QGTuh*vnR#xZPre(>$o& z6x?nx#;I2y=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6`rX5Xrwj~CvYsxEAr-gQ zO!L=pag;fpF6Mgb;L)RTTf3Tt%FF}#I{sK&1aLilwc+Us3(tE8Lkn*(PwZZj<9S3+ zsp#YTC-Lt*JZ^uUdpADv@!p%}=V$-=Q}%tY`RB~Ey3f_8eJ`i<%{n++@V5iUkC(5Q zJsMoa43quZ9!9pZ@hj*xBuv}LcR=7s_`6oNe3uwz*K^Yv_cr)>lz(Yu(|5PIG9lIL zwZh&lyIuyD%qdq)zLI|L-7^1)3XaeAv1aldH-3}+KmV`Qp$+VZCiHE%!n`ov{e-Q6 zT4_ta9EW^qOX17!I_IX&C^hV83jg49zx(CAHCLWr_<7KO`Ilu|Z2n4A+lN304^@6H9Q?@VQUR3-x zkXP^9AHFXO{_oD>cMldi_Revy_RaJ2S5LblCb8#0R7OGIHnkP2zBqlGUv-Ojo8x4i zvoV((t)4v6zd!Mr(6P7o>QzLKua1hlRQ9XK=za91tTxe8ix=q$BxW9K?T}u;ctk_r zC@a&-`l#TE%NJDsb=0*)Z<%6v>P!E9&&lgvJ)Tt>eAR1($Dc`^-*gW!l%8MS_O<2n QUr^!c>FVdQ&MBb@0GK-~-~a#s literal 0 HcmV?d00001 diff --git a/monitor/pages/img/ssgl.png b/monitor/pages/img/ssgl.png new file mode 100644 index 0000000000000000000000000000000000000000..b31ca46a83ecc37039c358bc8afa09251c58ed30 GIT binary patch literal 1401 zcmeAS@N?(olHy`uVBq!ia0vp^YCtTP$9xM zK*2e`C{@8!&rCPj(8Nf=+)~fb%)rvfL`T8Mz|dUZz+B(ZSl7VN%D~LZ*ir!slz_Gs zrKDK}xwt{?0`hE?GD=Dctn~HE%ggo3jrH=2()A53EiLs8jP#9+bb%^#i!1X=5-W7` zij`p|xTF>*7iAWdWaj57fJ{tG$}cUkRRX#c;)UD-xUqS~&|m@vn0`fKfxe-h0mw@* zg}%P{mFDKcRTq~8r6Sym)!^cg%7Rq=pw#00(xT*4pmJr9RRvbgMX8A;`9&f5`8lvq z49LhY$uG{xFHmrH28Ei1f<|~|UP^v>u_joLudkJ7UU5lcUUI6Zi>(sS6ur#M6f09R z6JsDWF|u$pFf?>^b96K}b8|FxbaZt!G%$2Afa!I~PcF?(%`1WFO+n~2#iP^Az7Gs=x^?{Dj2SqMYWW$7jDG0=bCtV;1 zp7>MqfGNHRn6#S>Cp`gX3&|4Kh?3y^w370~qErS*3iixROb5nJVoGJ<$y6JlBKrWJ z5LfpCpDz=#o>llh%y)iK8}zC^>`95ow|TV>3!LA!#yl?Xke=K)-!@AQu^j}-~^zToK zaPN(6&XBEh{cLnkL`L`X_FKnh2e};CQ@bE@uXYjZ_c?XJ)&9#S1V7;~eDPd^BRF49`Mdf!b!=}BSPN2fhqaqiKdZK+qz9$L42!Q7`B>w;?TO#JLJdt^D*%rL&?^YC$fOjKl=bE<5@%VS>loF6nDaW@o7c>)+V&#(;mt2Is+hOubbsBvQB#d; zt*fl^ZjFtTwW1g95jN{MP#u2JE{U(|(%V@sw$k4}Zadvm#eVa*+5Tr&53ed;%9vKZ zKVW`sY-uK!tZ~ZH#Ou?8p0iqR;IP{t>|VEH-6w6Q|JQS#`=u{3pSt~c{c(Qx%W4aP TA5QHA#uS66tDnm{r-UW|BgPfZ literal 0 HcmV?d00001 diff --git a/monitor/pages/img/tel.png b/monitor/pages/img/tel.png new file mode 100644 index 0000000000000000000000000000000000000000..f88f9ff1c1dc08d5c79683503ff70356279f2955 GIT binary patch literal 1320 zcmeAS@N?(olHy`uVBq!ia0vp^Hb5-L!3-qb-Fj;o7?{;ELn2Bde0{8v^Kls47YguJQ{> zuF6ifOi{A8Q?RM90veE;T9T+xk(-lOY*k^a1UAVPg@)As; zuP=V3xw&xF#U(+h2=`(&xHzP;AXPsowK%`DC^;3VTp46lft7PnYGO%#QAmD%4lEP{ zGV)9Ei!<^I6r7zwp=P0=5uTZsl3!k|3D)E5Yvq|&T#}fVoa*Ufs{}MfFEca6%E-mi z&DFrz%*evgz|hdu&B?^X(8<`v($v+|($K=h0H)U^Ke;qFHLnDwHwB^B9H(ATa>y+J z+U$~Alv$RV;#QQOs{r=4RVHq?nBX)Isy79*=gY%!yPri|?&HcU;XbyKtkY6yv+M~yU z8U$XkOgaAiwkyyLjFz4*jv*GO*G|1XsaZk5#j~laF_Gc_|9EjW)4ZHR%kESz(&^*1 z6`ykJ(2JjjH~oD2Bc;E}J-)#DU7qK0e%OCW(HQvv zP%pdX0?X=zopr E0Gj^YegFUf literal 0 HcmV?d00001 diff --git a/monitor/pages/img/ti.png b/monitor/pages/img/ti.png new file mode 100644 index 0000000000000000000000000000000000000000..8bf6fccf1fc5271c98b07f5dee56a4e54b34a98e GIT binary patch literal 404 zcmV;F0c-w=P)cn9e4W z1mQ-^c^E>%otMiAl5KBpzMX&epIss2CDZcMm>u8})h%+lTU1ZP+K)+j69ctWS|^{c zqI!hLaGr`-TTKn9#o{uB!Z~mXERIRs!S^?%UVj+}ja{J{vjDij1+Ws)iW{-^I5AKi zXAhApU?XPF71$MPpGV_kR~Qo%88!f_mHzbJ*Y~gEVbHw`V~UPhbAbYg=&Rf?BTX6B7E z&+KXujBO?9Nka~iK&T!X4khX4T0`9Y;XzlZ%N&`94WjnRJrX#C79mPkn*5_N1vGy_kdNY!%a zIRL4?s-x*sh`H7kvsv;Gz z5Yb@OI%j)gHO=hkigfO8vkcsUkf}5y`2k@`9f2}-5sXFRVV&<0U~e+Q$GN1?^Enha zzL({CSw0%(c#(^X(Ing*42|X*XT^e&+l@t6X{JnwBeHCzQi)We5$sN~d@`A2Ie`^~ zFhzvDS(|9pu_A!e zyOw}QkDIoED_++QM^(kV?Geq^QC>+iR3&1Xh8X2yf)vjwLPFwrKAV%`N-`nw86_vh z;)CE|;ar zu>R%#=dx>C)It7q&$@K6XMSW;$GgHblxubIRqXQ={EUsTWbfP~s`t3uQT|Bnha3R$RgAMDU z?*21he+L7J=_aA+_P)&QdT{AL=2ZXEM*GFh{*`;<%yR2^;Ke7aZK2R#sp<3k_sNMb zuU=}ucks6lH9gVM^dxv)`dcar9JjGhTvS)U%aU|s!CC;{H;+GR2jycAPzxY!Ki(Xj u|K{<@`^#YIa-6%;DrJJpmI3nFVdbaH_~IL;E`K5b literal 0 HcmV?d00001 diff --git a/monitor/pages/img/tz.png b/monitor/pages/img/tz.png new file mode 100644 index 0000000000000000000000000000000000000000..048cd2d93cfd045f2a801550adf9664757f4ae67 GIT binary patch literal 1168 zcmaJ=TWAzl7#@hNHImw<^g)C4WKv2j?%X!X?u;2tGP9Fi&93Y2iV+l@%$#J0ICI9C zlkRR>q!et~fD~*gt$68kgb0eFh!q7PHl<$BmMTG!h>4;ih%aL8nV5|}bRFh$F5mb4 zm-9_Io$9WuT~Z-XAf$4^vdlXI8Ek_a=KJ1KEsjqCUtJZI|p* zRQsBus~dw5gFZN5IWqnD^jR8Mrc7^YO>#+Bfq5%F?7{4CDrXE28lp+BSq<8Y5)rT= z)2?UOh zuv~=Y!y%5BxHc&)g1L(((LA$X%Bb30EHabnJjSlXvV}r{DTEp14Y0f@iYzCvf)FBz zkY94JUJN;YQ$<0AzTsIewvYn?MZFIVVVNeGzAC|X=Vcv#u1%z2Y*BYvp5cO$D!^p& z?NHmENBcMfU+4S3!hWvgLN)_^G~^kOz?*_luB3QS$H>bew4>6+bRJ>k=aCB(CFoid zG;gvT6BYawvz%m7N;p2&9Rns*nIdY47_y;*D_rw6SE$Mj>|nbjvI;%x3utN{vcYWGl2tXAPOYlm9M`O#3s;rPl4RK6 zaNjuW$`WxhlFv3AE42!4#EIM$1^s2>+}4^pojoUru)ayq(M+IbPS z6HsHiCl~8>d+OnjZ@E95`m#*GwK$W?QV)+`4cm2}Z1~|X>-I~sdM2TE=9(`ZzYydTgIm2KOcHezI@@QgQ;l!qu=Q3@$&u2XWHS8?mMZ;MsmJJP=k$Wc>CF&a=kCy&EzxC;zrmy&4UQXQob(?x4YpyGQw_-nE z{-a}e>%_YJM0U@U@nhfLTy-ej|L>)p){O_(7S_ysyG`2LD3C&^L@cF_b#4FVKa^dH AH~;_u literal 0 HcmV?d00001 diff --git a/monitor/pages/img/unselect.png b/monitor/pages/img/unselect.png new file mode 100644 index 0000000000000000000000000000000000000000..a3826e91f618b8f6317c670cd25bb3e913ecc786 GIT binary patch literal 275 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 Me72yz&Qy2*0#KekK>z>% literal 0 HcmV?d00001 diff --git a/monitor/pages/img/ywc_status.png b/monitor/pages/img/ywc_status.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c4d8cd23c8520a53ca229c8b4560dcef89cc1a GIT binary patch literal 1724 zcmaJ=Yfuws6ir1DL28v^D;8ZN(&9ii2?3Hw1k3}{5}*(ZRttt?ArW>rBpV3PR*RO$ z2%=O)gZRSw2#N&?78G#+OBLcy~Stg9YA_Rd5yVhW84cri#6Pcnl_ za|NhmiWf-s0x9lpWD1k)$#iD`lMfM(rjW!iLpi+3Son-Zlwz2i34%#UNu(rq5~_#= zDGUY!BvU~u)eT3uDU%UQq;^A;%cm4LkW#FW$uSv<0A@u|G^)Z_L_E_sM}XyTWfA3M znec*vYLOhIkjUmEO#uah|A)fxTeK1jh2G`+pTbIEvK#_KAtkC(h#?%l+#E{IWGf&M zhAM<88b4LV5GjhGN+~J_*lcsv=)h;;GDLzVDP1Nw0s)hcC@~QthWH#75mzC}WD+Ko z;YFo;QaDt)ADKeo^5`@Uoz0=qc{~c8!r^&NaXF}11w#ln#g)9{a;N2*?EuU1$Q(!^ zON1mm1quTb$7af=&t=WDdXrqq^trI7<$`!Jpt-sKYWCC;?jZBn{)7vFF&X!zCHH zXC&(EgM~HQc53s^UCk@Hx(?p4_oqse$)xXp)ZE^6y11&OstI3QGJ2>Sr(0v8L16@Z zJHce~y|QiY+QVxIgc+TDj-N1~zAU#lXFD)=hka_7&G#d(jy%iRrUk0Tx$%Q7-Pa#h zl9nNP9j)cM?^X{q98vYPGKXUwlWoTy#Qkj#&st9wIt&cnT(wlOspIKi-H8}!slp)C z8yasFulqSVOYV={R~Pp#JS?QmJwBW5y6Ul4MWd$PMP2s6VB>Yy*FL777;H)eag|u@zht>RlTzc zB5kz!jTI@IGmW5b;LiEA)je5<)CU{H9KKaaYgw9u^WD4^eX7LE8!DR@Ao_1wGE6hM zPhCzW6eOF@SH{G*e)-y}`&b`i;WO>_Ju7YYI}?X$XSC{RqhqcH-GkR1VZDxwI%>ri@qS;M8~BzdxjX{F5!x;F9FF-InQoV>454 zmz0uDT=}XY)TtjZl)nrd`_ZVD*ljS7d{2}|j;Z2K=fGC{OZQji?4ij*YK!77_}eC) z>pUyBW$Tg) z#}e`yJ!Kf_OfNWY9O`Fy9~|mG(>2`BIPjvkQTKl7ociG4{_F$=bymHR{e*0Js_}zM qaxCh3P4TdY>_PLrrto$y*k0}1;J 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 literal 0 HcmV?d00001 diff --git a/monitor/pages/lookImg/lookImg.js b/monitor/pages/lookImg/lookImg.js new file mode 100644 index 0000000..b397b4e --- /dev/null +++ b/monitor/pages/lookImg/lookImg.js @@ -0,0 +1,64 @@ +const app = getApp(), + Api = require("../../../utils/util.js"); +Page({ + + data: { + img:'' + }, + + onLoad: function (options) { + this.setData({ + img: options.img, + imgUrl: app.globalData.imgUrl + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/monitor/pages/lookImg/lookImg.json b/monitor/pages/lookImg/lookImg.json new file mode 100644 index 0000000..a490c0f --- /dev/null +++ b/monitor/pages/lookImg/lookImg.json @@ -0,0 +1,3 @@ +{ +"navigationBarTitleText": "技术图片" +} \ No newline at end of file diff --git a/monitor/pages/lookImg/lookImg.wxml b/monitor/pages/lookImg/lookImg.wxml new file mode 100644 index 0000000..7c2a7ba --- /dev/null +++ b/monitor/pages/lookImg/lookImg.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/monitor/pages/lookImg/lookImg.wxss b/monitor/pages/lookImg/lookImg.wxss new file mode 100644 index 0000000..2cb5333 --- /dev/null +++ b/monitor/pages/lookImg/lookImg.wxss @@ -0,0 +1,4 @@ +.image-container{width: 100%; } +.image-container image{ + width: 100%; height: auto; display: block; +} \ No newline at end of file diff --git a/monitor/pages/materialApply/materialApply.js b/monitor/pages/materialApply/materialApply.js new file mode 100644 index 0000000..9d38943 --- /dev/null +++ b/monitor/pages/materialApply/materialApply.js @@ -0,0 +1,273 @@ +// monitor/pages/materialApply/materialApply.js +var Api = require("../../../utils/util.js"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + currentTab: 0, + tabList: [{ + name: '全部', + siteStatus: '0,1,2,3,4,5,7,8,9', + num: 0 + }, { + name: '待审核', + siteStatus: '0,1,2', + num: 0 + }, { + name: '待出库', + siteStatus: '8', + num: 0 + }, { + name: '待领取', + siteStatus: '9', + num: 0 + }, { + name: '已完成', + siteStatus: '5', + num: 0 + }], + listData: [], + params:{ + startDate:'', + endDate:'', + pageNum:1, + pageSize:10 + }, + //时间查询 + isPickerShow: false, + pickerConfig: { + endDate: true, + } + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + [`params.pageNum`]:1, + listData: [] + }) + this.getList() + this.getNum() + }, + // 点击切换工单 + swichNav: function (e) { + this.setData({ + currentTab: e.currentTarget.dataset.current, + [`params.pageNum`]:1, + listData: [] + }) + this.getList() + this.getNum() + }, + // 列表 + getList: function () { + var that = this + var data = { + current: this.data.params.pageNum, + size: this.data.params.pageSize, + createTimeSta:this.data.params.startDate, + createTimeEnd:this.data.params.endDate, + status: this.data.tabList[this.data.currentTab].siteStatus, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('blade-platformFittingApply/platformFittingApply/page', data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + this.data.loadEnd = res.data.records.length < this.data.params.pageSize + if (this.data.params.pageNum == 1) { + this.data.listData = res.data.records + } else { + this.data.listData = this.data.listData.concat(res.data.records) + } + if (!this.data.loadEnd) { + this.data.params.pageNum++; + } + this.setData({ + listData: this.data.listData, + loadEnd: this.data.loadEnd, + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + getNum: function () { + var that = this; + var data = {} + Api.req('blade-platformFittingApply/platformFittingApply/findHomeFittingCount', data, 'get') + .then(res => { + if(res.code == 200){ + that.setData({ + [`tabList[0].num`]: res.data.allCount, //全部 + [`tabList[1].num`]: res.data.dshCount, //待审核 + [`tabList[2].num`]: res.data.dckCount, //待出库 + [`tabList[3].num`]: res.data.dlqCount, // 待领取 + [`tabList[4].num`]: res.data.endCount, // 已完成 + }) + } + }) + + }, + //添加 + bindAdd(){ + wx.navigateTo({ + url: '../addMaterial/addMaterial?title=添加', + }) + }, + //编辑 + editList(e){ + let id = e.currentTarget.dataset.id + wx.navigateTo({ + url: "../addMaterial/addMaterial?id="+ id +"&title=编辑", + }) + }, + + //跳转详情 + goDetail(e){ + var id = e.currentTarget.dataset.id + wx.navigateTo({ + url: "../addMaterial/addMaterial?id="+ id +"&title=详情", + }) + }, + //领取 + getReceive(e){ + let that = this + let id = e.currentTarget.dataset.id + wx.showModal({ + title: '提示', + content: '是否确认领取该物料?', + complete: (res) => { + if (res.confirm) { + wx.showLoading({ + title: '加载中...', + }) + Api.req('blade-platformFittingApply/platformFittingApply/empReceiveMate', { + id: id + }, 'get').then(res => { + wx.hideLoading() + if(res.code == 200){ + wx.showToast({ + title: '操作成功', + }) + setTimeout(()=>{ + this.setData({ + ['params.pageNum']: 1, + listData: [], + }); + that.getNum() + that.getList(); + },1500) + } + }) + } + } + }) + }, + //删除物料 + delList(e){ + let that = this + let id = e.currentTarget.dataset.id + wx.showModal({ + title: '提示', + content: '是否确认删除该物料?', + complete: (res) => { + if (res.confirm) { + wx.showLoading({ + title: '加载中...', + }) + Api.req('blade-operationOrderMaterial/operationOrderMaterial/deleteApplyFitting', { + id: id + }, 'get').then(res => { + wx.hideLoading() + if(res.code == 200){ + wx.showToast({ + title: '删除成功', + }) + setTimeout(()=>{ + this.setData({ + ['params.pageNum']: 1, + listData: [], + }); + that.getNum(); + that.getList(); + },500) + } + }) + } + } + }) + }, + //隐藏时间选择 + pickerHide: function() { + this.setData({ + isPickerShow: false + }); + }, + //设置时间 + setPickerTime: function(val) { + let data = val.detail, params = this.data.params; + params.pageNum = 1; + params.startDate = data.startTime.substring(0,data.startTime.indexOf(' ')); + params.endDate = data.endTime.substring(0,data.endTime.indexOf(' ')); + this.setData({ + params:params, + applyTime: params.startDate + '~' + params.endDate + }); + this.getList() + }, + /** 点击申请时间 **/ + pickerShow: function() { + let now = new Date(), + year = now.getFullYear(), + month = now.getMonth() + 1, + day = now.getDate(), + initStartTime = year+ '-' + month + '-' + day; + let pickerConfig = this.data.pickerConfig, params = this.data.params; + pickerConfig.initStartTime = params.startDate != '' ? params.startDate : initStartTime; + pickerConfig.initEndTime = params.endDate != '' ? params.endDate : initStartTime; + this.setData({ + pickerConfig:pickerConfig, + isPickerShow: true + }); + }, + + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + [`params.pageNum`]: 1, + [`params.pageSize`]: 10, + loadEnd: false, + }) + this.getList() + this.getNum(); + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getList() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/materialApply/materialApply.json b/monitor/pages/materialApply/materialApply.json new file mode 100644 index 0000000..669d30f --- /dev/null +++ b/monitor/pages/materialApply/materialApply.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "timePicker": "../components/timePicker/timePicker" + }, + "navigationBarTitleText": "物料申请" +} \ No newline at end of file diff --git a/monitor/pages/materialApply/materialApply.wxml b/monitor/pages/materialApply/materialApply.wxml new file mode 100644 index 0000000..981be5c --- /dev/null +++ b/monitor/pages/materialApply/materialApply.wxml @@ -0,0 +1,55 @@ + + + + + {{item.num}}{{item.name}} + +申请时间:请选择{{applyTime}} + + + + + + + 待运营商审核 + 待一级审核 + 待二级审核 + 待平台出库 + 运维商待收件 + 已完成 + 申请已取消 + 审核驳回 + 待出库 + 待领取 + 物料名称 + {{item.fittingName}} + + + 物料规格 + {{item.fittingPower}} + + + 申请数量 + {{item.applyNum}} + + + 申请时间 + {{item.createTime}} + + 编辑 + 删除 + 领取 + + + + + + + + + + + 新增物料申请 + + \ No newline at end of file diff --git a/monitor/pages/materialApply/materialApply.wxss b/monitor/pages/materialApply/materialApply.wxss new file mode 100644 index 0000000..94a434d --- /dev/null +++ b/monitor/pages/materialApply/materialApply.wxss @@ -0,0 +1,52 @@ +/* monitor/pages/materialApply/materialApply.wxss */ +.top-box{background-color: #FFF; position: fixed; top: 0; left: 0; width: 100%; z-index: 10;} +.top-date{padding: 20rpx; font-size: 28rpx; color: #096b94;} +.swiper-tab { width: 100%; text-align: center; display: flex; line-height: 60rpx; border-bottom: 1rpx solid #ddd; justify-content: space-around; height: 100rpx; + box-sizing: border-box; background-color: #FFF;} +.swiper-tab>view { font-size: 22rpx; box-sizing: border-box; color: #333; flex: 1;} +.num { display: block; padding: 0 10rpx; font-weight: bold; font-size: 36rpx; height: 40rpx; line-height: 50rpx;} +.swiper-tab .on { background-image: linear-gradient(180deg, #d5eef8 0%, #f4fcff 100%); color: #096b94; } + +.content {width: 750rpx; padding: 20rpx; font-size: 28rpx; } +.content-row { padding: 20rpx; border-radius: 20rpx; background-color: #ffffff; margin-bottom: 20rpx;} +.list{position: relative;} +.list>view{display: flex; padding: 10rpx 0; } +.left-tit {width: 130rpx; color: #999; text-align: right; margin-right: 20rpx;} +.list>view .value{flex: 1; display: flex; justify-content: space-between;} +.list .rj { + border: solid #aaa; + border-width: 0 2rpx 2rpx 0; + display: inline-block; + padding: 8rpx; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + position: absolute; right: 0rpx; top: 120rpx; +} +.status_text{ position: absolute; top: 0rpx; right: 0rpx; font-size: 26rpx;} +.mini-btn{display: inline; background-color: #096b94; color: #FFF; padding: 6rpx 20rpx; border-radius: 10rpx; } + +.from-submit-buttom { + position: fixed; + bottom: 0; + display: flex; + flex-direction: row; + width: 750rpx; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff; + z-index: 10; +} +.from-submit-buttom-confirm { + width: 100%; + height: 80rpx; + background-color: #096b94; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} +.buttom-margin { + width: 750rpx; + height: 120rpx; +} +.del-btn{color: #ff3333; padding: 6rpx 20rpx; border: solid 1px #ff6666; border-radius: 10rpx;} \ No newline at end of file diff --git a/monitor/pages/materialDetail/materialDetail.js b/monitor/pages/materialDetail/materialDetail.js new file mode 100644 index 0000000..cebc046 --- /dev/null +++ b/monitor/pages/materialDetail/materialDetail.js @@ -0,0 +1,62 @@ +// monitor/pages/materialDetail/materialDetail.js +var Api = require("../../../utils/util.js"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + formData: {} + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + materialId: options.materialId, + id: options.id, + title: options.title + }) + wx.setNavigationBarTitle({ + title: options.title, + }) + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.getDetail() + }, + + //详情 + getDetail(e) { + let that = this + let url = '', dataObj = {} + wx.showLoading({ + title: '加载中...', + }) + if(this.data.title == '已用物料') { + url = 'blade-operationOrderMaterial/operationOrderMaterial/getOrderUseFittingDetail' + dataObj = { + id: this.data.id, + } + }else if(this.data.title == '可用物料') { + url = 'blade-operationOrderMaterial/operationOrderMaterial/getOrderCanUseFittingDetail' + dataObj = { + materialId: this.data.materialId, + empUserId: wx.getStorageSync('userId') + } + } + Api.req(url, dataObj, 'get').then(res => { + wx.hideLoading() + if(res.code == 200){ + that.setData({ + formData: res.data, + }) + } + }) + }, +}) \ No newline at end of file diff --git a/monitor/pages/materialDetail/materialDetail.json b/monitor/pages/materialDetail/materialDetail.json new file mode 100644 index 0000000..7a0bec7 --- /dev/null +++ b/monitor/pages/materialDetail/materialDetail.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "物料详情" +} \ No newline at end of file diff --git a/monitor/pages/materialDetail/materialDetail.wxml b/monitor/pages/materialDetail/materialDetail.wxml new file mode 100644 index 0000000..ce566c3 --- /dev/null +++ b/monitor/pages/materialDetail/materialDetail.wxml @@ -0,0 +1,57 @@ + + + + 物料信息 + + + 物料代码 + {{formData.materialCode}} + + + 物料名称 + {{formData.materialName}} + + + 物料类型 + {{formData.materialType}} + + + 物料规格 + {{formData.materialSpec}} + + + 库存数量 + {{formData.stock}} + + + 使用数量 + {{formData.userAmount}} + + + + + 工单信息 + + + 工单编号 + {{formData.orderNumber}} + + + 电站编码 + {{formData.powerStationCode}} + + + 业主姓名 + {{formData.customerName}} + + + 安装地址 + {{formData.customerAddress}} + + + 使用时间 + {{formData.userTime}} + + + + \ No newline at end of file diff --git a/monitor/pages/materialDetail/materialDetail.wxss b/monitor/pages/materialDetail/materialDetail.wxss new file mode 100644 index 0000000..bed7593 --- /dev/null +++ b/monitor/pages/materialDetail/materialDetail.wxss @@ -0,0 +1,10 @@ +/* monitor/pages/materialDetail/materialDetail.wxss */ +.content {width: 750rpx; padding: 20rpx; font-size: 28rpx; } +.content-row { padding: 10rpx 0; border-radius: 20rpx; background-color: #ffffff; margin-bottom: 20rpx;} +.list{position: relative; padding: 10rpx;} +.list>view{display: flex; padding: 10rpx 0; } +.left-tit {width: 130rpx; color: #999; text-align: right; margin-right: 20rpx;} +.list>view .value{flex: 1;} + +.title-big {font-size: 30rpx; color: #333; height: 80rpx; line-height: 50rpx; border-bottom: 1rpx solid #efefef; display: flex; align-items: center;} +.title-big>image{width: 40rpx; height: 40rpx; margin: 0 10rpx;} \ No newline at end of file diff --git a/monitor/pages/materialList/materialList.js b/monitor/pages/materialList/materialList.js new file mode 100644 index 0000000..9b72f2b --- /dev/null +++ b/monitor/pages/materialList/materialList.js @@ -0,0 +1,140 @@ +// monitor/pages/materialList/materialList.js +var Api = require("../../../utils/util.js"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + keyWords: '', + listData: [], + pageNum:1, + pageSize:10, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + type: options.type, + entryId: options.entryId, + }) + + this.getList() + }, + + /** 搜索 **/ + keyWordsSearch(res) { + this.setData({ + keyWords: res.detail, //搜索内容 + }) + this.getList() + }, + // 列表 + getList: function () { + var that = this + var data = { + current: this.data.pageNum, + size: this.data.pageSize, + engineerId: wx.getStorageSync('userId'), + smallConditon: this.data.keyWords + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('wl/materialEngineer/engineerStockList', data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + res.data.records.forEach(element => { + element.isSelect = false + }); + this.data.loadEnd = res.data.records.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.listData = res.data.records + } else { + this.data.listData = this.data.listData.concat(res.data.records) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + listData: this.data.listData, + loadEnd: this.data.loadEnd, + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + + //选择 + bindchange(e) { + this.setData({ + [`listData[${e.currentTarget.dataset.index}].isSelect`]: e.currentTarget.dataset.is ? false : true, + }) + }, + + + //提交 + submitForm(e) { + var dataList = []; + this.data.listData.forEach((item)=>{ + if(item.isSelect){ + dataList.push({ + materialId: item.materialId, //物料ID + materialName: item.name, //物料名称 + materialCode: item.code, //物料代码 + materialSpec: item.power, //物料规格 + materialType: item.model, // 物料型号 + materialStock: item.stock, //库存 + userAmount: 1, //数量 + }) + } + }) + if (dataList.length <= 0) { + wx.showToast({ + title: "请选择一条数据", + icon: 'none' + }) + return + }else{ + var page = getCurrentPages(); + let prevPage = page[page.length - 2]; + prevPage.setData({ +   // 要设置的值 + jgList: dataList + }) + setTimeout(function() { + prevPage.addJgList(); + wx.navigateBack({}) + }, 500) + } + }, + + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getList() + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getList() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/materialList/materialList.json b/monitor/pages/materialList/materialList.json new file mode 100644 index 0000000..2d5583b --- /dev/null +++ b/monitor/pages/materialList/materialList.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "van-search": "@vant/weapp/search/index" + }, + "navigationBarTitleText": "可用物料" +} \ No newline at end of file diff --git a/monitor/pages/materialList/materialList.wxml b/monitor/pages/materialList/materialList.wxml new file mode 100644 index 0000000..9297b50 --- /dev/null +++ b/monitor/pages/materialList/materialList.wxml @@ -0,0 +1,36 @@ + + + + + + + + + + + 物料名称 + {{item.name}} + + + 物料代码 + {{item.code}} + + + 物料规格 + {{item.power}} + + + 库存数量 + {{item.stock}} + + + + + + + + + + + 提交 + \ No newline at end of file diff --git a/monitor/pages/materialList/materialList.wxss b/monitor/pages/materialList/materialList.wxss new file mode 100644 index 0000000..1021217 --- /dev/null +++ b/monitor/pages/materialList/materialList.wxss @@ -0,0 +1,95 @@ +/* monitor/pages/materialList/materialList.wxss */ +page { + background-color: #f2f2ff; +} + +.content { + padding-bottom: 200rpx; + width: 750rpx; + font-size: 28rpx; +} + +.content-title { + margin: 20rpx; + margin-left: 20rpx; + font-weight: bold; + font-size: 30rpx; + display: flex; +} + +.content-title-flex { + flex: 1; +} + +.content-line { + width: 100%; + height: 2rpx; + background-color: #f2f2f2; +} + +.content-list-view-delete { + margin-top: 20rpx; + margin-bottom: 20rpx; + margin-left: 20rpx; + display: flex; + flex-direction: row; + align-items: center; +} + +.content-list-view { + display: flex; + align-items: center; + flex-direction: row; + background: #ffffff; + border-radius: 20rpx; + margin: 20rpx; + padding-top: 1rpx; + padding-bottom: 1rpx; +} + +.content-list-checkbox { + flex: 1; +} + +.content-checkbox { + margin-right: 20rpx; + margin-left: 20rpx; +} + +.content-list { + display: flex; + align-items: center; + margin: 20rpx; +} + +.content-list-title { + width: 120rpx; +} + +.content-input { + margin-left: 20rpx; + flex: 1; +} + +.from-submit-buttom { + position: fixed; + bottom: 0; + display: flex; + flex-direction: row; + width: 750rpx; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff; + z-index: 10; +} + + +.from-submit-buttom-confirm { + width: 100%; + height: 80rpx; + background-color: #096b94; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/monitor/pages/materialUse/materialUse.js b/monitor/pages/materialUse/materialUse.js new file mode 100644 index 0000000..011da2f --- /dev/null +++ b/monitor/pages/materialUse/materialUse.js @@ -0,0 +1,270 @@ +// monitor/pages/materialUse/materialUse.js +var Api = require("../../../utils/util.js"); +Page({ + + /** + * 页面的初始数据 + */ + data: { + type: 1, + listData: [], + jgList: [], //可用物料传过来的临时数据 + typeList: [], //物料类型下拉 + specList: [], //物料规格下拉 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + if(options.orderId){ + this.setData({ + orderId: options.orderId + }) + } + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + // this.getTypeList() + }, + //文本输入 + inputText: function(e) { + let name = e.currentTarget.dataset.name + let index = e.currentTarget.dataset.index + this.setData({ + [`listData[${index}].${name}`]: e.detail.value, + }) + }, + //数字输入 + inputNum: function(e) { + let name = e.currentTarget.dataset.name + let index = e.currentTarget.dataset.index + this.setData({ + [`listData[${index}].${name}`]: Number(e.detail.value), + }) + }, + + //下拉选择 + changSelect: function(e) { + let name = e.currentTarget.dataset.name + let list = e.currentTarget.dataset.list + let index = e.currentTarget.dataset.index + let indexVal = Number(e.detail.value); + this.setData({ + [`listData[${index}].${name}`]: this.data[list][indexVal], + }) + if(name == 'materialType'){ + this.setData({ + [`listData[${index}].materialSpec`]: '',//重新选择类型则清空规格 + }) + let key = this.data.typeKeyList[indexVal] + this.getSpecList(key) + } + }, + + //物料规格 + getSpecList(key){ + Api.req('blade-platformFittingApply/platformFittingApply/getMaterialSpecList', { + materialType: key //物料类型 + // orderId: options.id + }, 'get') + .then(res => { + if(res.code == 200){ + this.setData({ + specList: res.data, + }) + } + }) + }, + //物料类型 + getTypeList(){ + Api.req('blade-system/dict/dictionary', { + code: 'wl_type' + }, 'get') + .then(res => { + if(res.code == 200){ + this.setData({ + typeList: res.data.map(itm=>itm.dictValue), + typeKeyList: res.data.map(itm=>itm.dictKey), + }) + } + }) + }, + //改变物料归属 + changeType(e){ + if(this.data.listData.length>0){ + wx.showModal({ + title: '提示', + content: '改变物料归属原数据将会被清空,确定改变吗?', + complete: (res) => { + if (res.cancel) { + if(e.detail.value == '1'){ + this.setData({ + type: 2 + }) + }else{ + this.setData({ + type: 1 + }) + } + } + if (res.confirm) { + this.setData({ + listData: [], + type: e.detail.value + }) + } + } + }) + }else{ + this.setData({ + type: e.detail.value + }) + } + + }, + //添加物料 + addList(e){ + let listData = this.data.listData + if(this.data.type == '1'){//物料甲供--添加物料使用 + wx.navigateTo({ + url: '../materialList/materialList?id=' + e.currentTarget.dataset.id + }) + }else{ + listData.push({ + materialName: '', //物料名称 + materialCode: '', //物料代码 + materialType: '', //物料类型 + materialSpec: '', // 物料规格 + userAmount: '', //使用数量 + }) + this.setData({ + listData + }) + } + }, + + + //添加甲供物料使用 + addJgList(){ + let jgList = this.data.jgList + let listData = this.data.listData + if(jgList.length>0){ + jgList.forEach(item=>{ + listData.push(item) + }) + } + this.setData({ + listData + }) + }, + //删除物料 + delList(e){ + let index = e.currentTarget.dataset.index + let listData = this.data.listData + listData.splice(index, 1) + this.setData({ + listData + }) + }, + //保存 + submitForm(e){ + let listData = JSON.parse(JSON.stringify(this.data.listData)) + let isCheck = true + if(this.data.listData.length == 0){ + wx.showToast({ + title: '请先添加物料', + icon: 'error' + }) + return + }else if(this.data.type == '1'){//物料甲供 + try{ + listData.forEach(item=>{ + if(item.userAmount<0 || item.userAmount=='' || !/^[1-9]\d*$/.test(item.userAmount)){ + wx.showToast({ + title: '使用数量只能是大于0的整数', + icon: 'none', + duration: 2000 + }) + isCheck = false + throw Error() + } + }) + }catch(e) { + console.log(e) + } + }else if(this.data.type == '2'){//自备物料 + try{ + listData.forEach(item=>{ + if(item.materialType == ''){ + wx.showToast({ + title: '物料类型不能为空', + icon: 'none', + duration: 2000 + }) + isCheck = false + throw Error() + }else if(item.materialSpec == ''){ + wx.showToast({ + title: '物料规格不能为空', + icon: 'none', + duration: 2000 + }) + isCheck = false + throw Error() + }else if(item.userAmount<0 || item.userAmount=='' || !/^[1-9]\d*$/.test(item.userAmount)){ + wx.showToast({ + title: '使用数量只能是大于0的整数', + icon: 'none', + duration: 2000 + }) + isCheck = false + throw Error() + } + }) + }catch(e) { + console.log(e) + } + } + if(!isCheck){ + return + } + // console.log(1221, this.data.listData) + // return + wx.showLoading({ + title: '提交中...', + mask: true + }) + var data = { + orderId: this.data.orderId, //订单ID + materialFrom: this.data.type, //物料归属 + userMaterila: this.data.listData, //物料明细 + } + // console.log("执行",data); + // return + Api.req('blade-operationOrderMaterial/operationOrderMaterial/orderFittingUse', data, 'post', '','1') + .then(res => { + wx.hideLoading() + if (res.code == '200') { + wx.showToast({ + title: '操作成功', + }) + var page = getCurrentPages(); + let prevPage = page[page.length - 2]; + setTimeout(function() { + prevPage.getList(); + wx.navigateBack({}) + }, 1000) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + duration: 2000 + }) + } + }) + } +}) \ No newline at end of file diff --git a/monitor/pages/materialUse/materialUse.json b/monitor/pages/materialUse/materialUse.json new file mode 100644 index 0000000..8222b83 --- /dev/null +++ b/monitor/pages/materialUse/materialUse.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "物料使用" +} \ No newline at end of file diff --git a/monitor/pages/materialUse/materialUse.wxml b/monitor/pages/materialUse/materialUse.wxml new file mode 100644 index 0000000..e91321c --- /dev/null +++ b/monitor/pages/materialUse/materialUse.wxml @@ -0,0 +1,91 @@ + + + + 物料归属: + + + 物料甲供 + 自备物料 + + + + + 请点击左下角按钮添加 + + + + + + 物料名称: + + + + *使用数量: + + + 删除 + + + + + + + + + + + + 物料名称: + + + + 物料代码: + + + + *物料类型: + + + + *物料规格: + + + + + + *使用数量: + + + + + + + + + + 添加物料 + 保存 + diff --git a/monitor/pages/materialUse/materialUse.wxss b/monitor/pages/materialUse/materialUse.wxss new file mode 100644 index 0000000..0978a88 --- /dev/null +++ b/monitor/pages/materialUse/materialUse.wxss @@ -0,0 +1,24 @@ +/* monitor/pages/materialUse/materialUse.wxss */ +page{font-size: 28rpx;} +.list {background: #fff; margin-top: 20rpx; padding: 10rpx 0; font-size: 28rpx;} +.list>view{padding: 20rpx; } +/* .content-list{border-bottom: 1px solid #f0f0f0;} */ +.content-list>view{padding: 10rpx 0;} +.content-list .value-flex{display: flex; flex: 1; justify-content: space-between;} +.del-btn{color: #ff0000;} + +.title { width: 170rpx; float: left; color: #333; text-align: right} +.content-line { width: 100%; height: 2rpx; background-color: #f2f2f2; padding: 0 !important;} +.rj {border: solid #aaa; border-width: 0 2rpx 2rpx 0; display: inline-block; padding: 8rpx; transform: rotate(-45deg); -webkit-transform: rotate(-45deg);} + +.operate {display: flex; justify-content: space-between; color: #fff; width: 100%; position: fixed; bottom: 0; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); background-color: #fff; z-index: 10;} +.operate>view { flex: 1; text-align: center; height: 90rpx; font-size: 30rpx; line-height: 90rpx;} +button::after { border: none;} +.guo { background: #FFF; color: #333;} +.ju { background: #f66;} +.jie,.pai,.zhuan,.sure { background: #0A6597;} +.gray{color: #CCC;} + +.detail-list { flex: 1; color: #333; display: flex; align-items: center; } +.detail-list picker{width: 90%;} +.picker{width: 90%; height: 45rpx;} \ No newline at end of file diff --git a/monitor/pages/myMaterial/myMaterial.js b/monitor/pages/myMaterial/myMaterial.js new file mode 100644 index 0000000..9315f30 --- /dev/null +++ b/monitor/pages/myMaterial/myMaterial.js @@ -0,0 +1,131 @@ +// monitor/pages/myMaterial/myMaterial.js +var Api = require("../../../utils/util.js"); +Page({ + /** + * 页面的初始数据 + */ + data: { + currentTab: 1, + keyWords: '', + listData: [], + pageNum:1, + pageSize:10, + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.getList() + }, + // 点击切换工单 + swichNav: function (e) { + this.setData({ + currentTab: e.currentTarget.dataset.current, + pageNum:1, + listData: [] + }) + this.getList() + }, + /** 搜索 **/ + keyWordsSearch(res) { + this.setData({ + keyWords: res.detail, //搜索内容 + }) + this.getList() + }, + // 列表 + getList: function () { + var that = this + var data = { + current: this.data.pageNum, + size: this.data.pageSize, + engineerId: wx.getStorageSync('userId'), + smallConditon: this.data.keyWords + } + let url = '' + if(this.data.currentTab == '1'){ + url = 'wl/materialEngineer/engineerStockList' + }else{ + url = 'blade-operationOrderMaterial/operationOrderMaterial/getEmpUseFittingList' + } + wx.showLoading({ + title: '加载中...', + }) + Api.req(url, data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + let resData = res.data.records + this.data.loadEnd = resData.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.listData = resData + } else { + this.data.listData = this.data.listData.concat(resData) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + listData: this.data.listData, + loadEnd: this.data.loadEnd, + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + //添加 + bindAdd(){ + wx.navigateTo({ + url: '../addMaterial/addMaterial?title=添加', + }) + }, + //跳转详情 + goDetail(e){ + var id = e.currentTarget.dataset.id + var materialId = e.currentTarget.dataset.mid + var title = '' + if(this.data.currentTab == '1'){ + title = '可用物料' + }else if(this.data.currentTab == '2'){ + title = '已用物料' + } + wx.navigateTo({ + url: '../materialDetail/materialDetail?title='+ title +'&materialId='+ materialId +'&id=' + id, + }) + }, + + + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getList() + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getList() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/myMaterial/myMaterial.json b/monitor/pages/myMaterial/myMaterial.json new file mode 100644 index 0000000..e79d3e5 --- /dev/null +++ b/monitor/pages/myMaterial/myMaterial.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "van-search": "@vant/weapp/search/index" + }, + "navigationBarTitleText": "我的物料" +} \ No newline at end of file diff --git a/monitor/pages/myMaterial/myMaterial.wxml b/monitor/pages/myMaterial/myMaterial.wxml new file mode 100644 index 0000000..a420dbf --- /dev/null +++ b/monitor/pages/myMaterial/myMaterial.wxml @@ -0,0 +1,58 @@ + + + + + + 可用物料 + 已用物料 + + + + + + + + 物料名称 + {{item.name}} + + + 物料代码 + {{item.code}} + + + 物料规格 + {{item.power}} + + + 库存数量 + {{item.stock}} + + + + + + + 物料名称 + {{item.materialName}} + + + 物料规格 + {{item.materialSpec}} + + + 使用数量 + {{item.userAmount}} + + + 使用时间 + {{item.createTime}} + + + + + + + + + 新增物料申请 + \ No newline at end of file diff --git a/monitor/pages/myMaterial/myMaterial.wxss b/monitor/pages/myMaterial/myMaterial.wxss new file mode 100644 index 0000000..5d2a90b --- /dev/null +++ b/monitor/pages/myMaterial/myMaterial.wxss @@ -0,0 +1,49 @@ +/* monitor/pages/myMaterial/myMaterial.wxss */ +.top-box{background-color: #FFF; position: fixed; top: 0; left: 0; width: 100%; z-index: 10;} +.swiper-tab {width: 100%; text-align: center; display: flex; line-height: 80rpx; border-bottom: 1rpx solid #ddd; justify-content: space-around; height: 80rpx; + box-sizing: border-box; background: #fff;} +.swiper-tab>view { font-size: 28rpx; box-sizing: border-box; color: #999;} +.swiper-tab .on { color: #096b94; border-bottom: 5rpx solid #096b94; font-weight: bold;} + +.content {width: 750rpx; padding: 20rpx; font-size: 28rpx; } +.content-row { padding: 20rpx; border-radius: 20rpx; background-color: #ffffff; margin-bottom: 20rpx;} +.list{position: relative;} +.list>view{display: flex; padding: 10rpx 0; } +.left-tit {width: 130rpx; color: #999; text-align: right; margin-right: 20rpx;} +.list>view .value{flex: 1;} +.list .rj { + border: solid #aaa; + border-width: 0 2rpx 2rpx 0; + display: inline-block; + padding: 8rpx; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + position: absolute; right: 0rpx; top: 120rpx; +} +.status_text{ position: absolute; top: 0rpx; right: 0rpx; font-size: 26rpx;} +.mini-btn{display: inline; background-color: #096b94; color: #FFF; padding: 6rpx 20rpx; border-radius: 10rpx; float: right;} + +.from-submit-buttom { + position: fixed; + bottom: 0; + display: flex; + flex-direction: row; + width: 750rpx; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff; + z-index: 10; +} +.from-submit-buttom-confirm { + width: 100%; + height: 80rpx; + background-color: #096b94; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} +.buttom-margin { + width: 750rpx; + height: 120rpx; +} \ No newline at end of file diff --git a/monitor/pages/notice/notice.js b/monitor/pages/notice/notice.js new file mode 100644 index 0000000..7cb2419 --- /dev/null +++ b/monitor/pages/notice/notice.js @@ -0,0 +1,79 @@ +const app = getApp() +var Api = require("../../../utils/util.js"); +Page({ + data: { + list:[], + pageNum: 1, + pageSize: 10, + }, + onShow: function () { + var that = this; + that.setData({ + list: [], + page: 1, + }) + that.getNotice() + }, + getNotice:function(){ + var that = this + var data = { + current: this.data.pageNum, + size: this.data.pageSize, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/platformAnnouncement/list', data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + this.data.loadEnd = res.data.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.records = res.data + } else { + this.data.records = this.data.records.concat(res.data) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + list: this.data.records, + loadEnd: this.data.loadEnd, + }) + console.log(898, this.data.loadEnd) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + //通告详情 + detail:function(e){ + wx.navigateTo({ + url: '../noticeDetail/noticeDetail?id=' + e.currentTarget.dataset.id + }) + }, + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getNotice() + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getNotice() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 1500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/notice/notice.json b/monitor/pages/notice/notice.json new file mode 100644 index 0000000..6bdc8b0 --- /dev/null +++ b/monitor/pages/notice/notice.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "通知公告", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark", + "onReachBottomDistance": 1000 +} \ No newline at end of file diff --git a/monitor/pages/notice/notice.wxml b/monitor/pages/notice/notice.wxml new file mode 100644 index 0000000..3e4baae --- /dev/null +++ b/monitor/pages/notice/notice.wxml @@ -0,0 +1,22 @@ + + + + + + + {{item.title}} + {{item.createTime}} + + + + + --已全部加载-- + + + + \ No newline at end of file diff --git a/monitor/pages/notice/notice.wxss b/monitor/pages/notice/notice.wxss new file mode 100644 index 0000000..f7116c6 --- /dev/null +++ b/monitor/pages/notice/notice.wxss @@ -0,0 +1,17 @@ +.search { height: 80rpx; padding: 10rpx; background: #efefef; width: 100%; z-index: 100; box-sizing: border-box;} +.search>view {height: 60rpx; width: 100%; border-radius: 30rpx; background: #fff;} +.search input,.search .input {float: left; height: 100%; line-height: 60rpx; font-size: 24rpx; padding-left: 35rpx;} + +.search input { color: #333; width: 86%;} +.search .input {color: #ccc; width: 100%; border-radius: 30rpx;} +.search image { width: 40rpx; height: 40rpx; float: right; margin-top: 10rpx; margin-right: 20rpx;} + +scroll-view,.lack{ height: calc(100vh - 80rpx);} + +.record {background: #fff; padding: 20rpx 10rpx 20rpx 20rpx; margin: 20rpx; border-radius: 20rpx;} +.record>view{ overflow: hidden; line-height: 50rpx; display: flex; justify-content: space-between; align-items: center;} +.record-detail { max-width: 600rpx; word-break: break-all;} +.record-detail>image{ width: 60rpx; height: 30rpx;} +.recordList {} + +.right-dot{width: 36rpx; height: 36rpx;} \ No newline at end of file diff --git a/monitor/pages/noticeDetail/noticeDetail.js b/monitor/pages/noticeDetail/noticeDetail.js new file mode 100644 index 0000000..f750a51 --- /dev/null +++ b/monitor/pages/noticeDetail/noticeDetail.js @@ -0,0 +1,59 @@ +var Api = require("../../../utils/util.js"); +Page({ + data: { + detail:{} + }, + onLoad: function(options) { + if(options.id){ + this.setData({ + id: options.id, + }) + } + var that = this, + data = { + id: options.id, + readId: wx.getStorageSync('userId'), + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/platformAnnouncement/detail', data, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + var html = res.data.html + html = html.replace(' { + if(res.code == 200){ + + }else{ + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + } +}) \ No newline at end of file diff --git a/monitor/pages/noticeDetail/noticeDetail.json b/monitor/pages/noticeDetail/noticeDetail.json new file mode 100644 index 0000000..484a89f --- /dev/null +++ b/monitor/pages/noticeDetail/noticeDetail.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "详情" +} \ No newline at end of file diff --git a/monitor/pages/noticeDetail/noticeDetail.wxml b/monitor/pages/noticeDetail/noticeDetail.wxml new file mode 100644 index 0000000..0936006 --- /dev/null +++ b/monitor/pages/noticeDetail/noticeDetail.wxml @@ -0,0 +1,6 @@ +{{detail.title}} +{{detail.createTime}} + + + + \ No newline at end of file diff --git a/monitor/pages/noticeDetail/noticeDetail.wxss b/monitor/pages/noticeDetail/noticeDetail.wxss new file mode 100644 index 0000000..68c0841 --- /dev/null +++ b/monitor/pages/noticeDetail/noticeDetail.wxss @@ -0,0 +1,20 @@ +.title{ + line-height: 100rpx; + font-size: 40rpx; + color: #333; + text-align: center; +} +page{ + background: #fff; + padding: 0 50rpx; + box-sizing: border-box; +} +.time{ + line-height: 45rpx; + font-size: 24rpx; + color: #999; + text-align: center; +} +.line{text-align: center; width: 100%; height: 60rpx;} +.line image{ width: 630rpx; height: 27rpx;} +.content-box img{ max-width: 100%;} \ No newline at end of file diff --git a/monitor/pages/settlement/settlement.js b/monitor/pages/settlement/settlement.js new file mode 100644 index 0000000..f3caafc --- /dev/null +++ b/monitor/pages/settlement/settlement.js @@ -0,0 +1,125 @@ +// mine/pages/settlement/settlement.js +const Api = require("../../../utils/util") +Page({ + + /** + * 页面的初始数据 + */ + data: { + loadStatus: 'more', + filterOpen: false, + params:{ + // orderCode:'', + // startDate:'', + // endDate:'', + pageNum:1, + pageSize:10 + }, + listData: [{ + id: 1, + totalCost: 1000, + orderNumber: '2558001455477', + type: 1, + applianceProdInfo: '122121' + }], + //时间查询 + isPickerShow: false, + pickerConfig: { + endDate: true, + } + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // this.getList() + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + //数据列表 + getList(){ + let params = this.data.params + let list = this.data.listData + Api.findFactorySettlemenPage(params).then((res) => { + if(res.code === 200){ + if (params.pageNum == 1) { + list = [] + } + list = list.concat(res.rows) //拼接下一页 + if (res.rows.length == params.pageSize) { //判断是否有下一页 + params.pageNum++ + } + this.setData({ + loadStatus: res.rows.length == params.pageSize ? "more" : "noMore", + listData: list, + triggered: false, + params + }) + } + }) + }, + //下拉刷新 + Pulldownrefresh(){ + this.setData({ + [`params.pageNum`]: 1, + loadStatus: 'more' + }) + this.getList() + }, + //加载更多 + more(){ + if (this.data.loadStatus != 'noMore') { + this.getList() + } + }, + /** 结算时间 **/ + pickerShow: function() { + let now = new Date(), + year = now.getFullYear(), + month = now.getMonth() + 1, + day = now.getDate(), + initStartTime = year+ '-' + month + '-' + day; + let pickerConfig = this.data.pickerConfig, params = this.data.params; + pickerConfig.initStartTime = params.startDate != '' ? params.startDate : initStartTime; + pickerConfig.initEndTime = params.endDate != '' ? params.endDate : initStartTime; + this.setData({ + pickerConfig:pickerConfig, + isPickerShow: true + }); + }, + + pickerHide: function() { + this.setData({ + isPickerShow: false + }); + }, + setPickerTime: function(val) { + // console.log(val); + let data = val.detail, params = this.data.params; + params.pageNum = 1; + params.startDate = data.startTime.substring(0,data.startTime.indexOf(' ') + 1); + params.endDate = data.endTime.substring(0,data.endTime.indexOf(' ') + 1); + this.setData({ + params:params, + payTime: params.startDate + '~' + params.endDate + }); + }, + //打开筛选 + openWin(){ + this.setData({ + filterOpen: true + }) + }, + //关闭筛选 + closeWin(){ + this.setData({ + filterOpen: false + }) + } +}) \ No newline at end of file diff --git a/monitor/pages/settlement/settlement.json b/monitor/pages/settlement/settlement.json new file mode 100644 index 0000000..474a8dd --- /dev/null +++ b/monitor/pages/settlement/settlement.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "timePicker": "../components/timePicker/timePicker" + }, + "navigationBarTitleText": "我的结算" +} \ No newline at end of file diff --git a/monitor/pages/settlement/settlement.wxml b/monitor/pages/settlement/settlement.wxml new file mode 100644 index 0000000..345f8cc --- /dev/null +++ b/monitor/pages/settlement/settlement.wxml @@ -0,0 +1,76 @@ + + + + + + 结算金额 + 10000 + + + + 筛选 + + + + + + + + 2023年12月 + + + + ¥{{item.totalCost}} + + + + 工单编号 + {{item.orderNumber}} + + + 业主姓名 + {{item.applianceProdInfo}} + + + 服务类型 + {{item.settlementTime}} + + + 安装地址 + {{item.employeName}} + + + 完工时间 + {{item.employeName}} + + + + 没有更多了 + + + + + 暂无内容… + + + + + + 筛选 + 工单编号 + + + + 结算时间 + + + + + + 取消 + 确定 + + + + diff --git a/monitor/pages/settlement/settlement.wxss b/monitor/pages/settlement/settlement.wxss new file mode 100644 index 0000000..634c9e6 --- /dev/null +++ b/monitor/pages/settlement/settlement.wxss @@ -0,0 +1,50 @@ +/* mine/pages/settlement/settlement.wxss */ +.top-box{ position: relative;} +.f-top-bg{ width: 750rpx; height: 180rpx;} +.top-text{position: absolute; width: 560rpx; height: 180rpx; top: 0; left: 160rpx; display: flex; justify-content: space-between; align-items: center; font-size: 30rpx; color: #FFF;} +.money{font-size: 48rpx;} +.money text{font-size: 36rpx;} + +.time-box{ display: flex; justify-content: center; margin-bottom: 20rpx;} +.time-box text{color: #999999; font-size: 24rpx; border-radius: 50rpx; border: solid 1px #999999; padding: 20rpx; height: 25rpx; line-height: 25rpx;} +.f-list-box{padding: 20rpx; box-sizing: border-box; overflow-y: auto; height: calc(100vh - 360rpx);} + +.list-row{background-color: #FFF; border-radius: 20rpx; margin-bottom: 20rpx;} +.list-row .f-head{color: #333333; font-size: 44rpx; height: 100rpx; line-height: 60rpx; padding: 20rpx; display: flex; justify-content: space-between;} +.list-row .list-con{border-top: dashed 2rpx #e9e9e9;} +.btn-box{ text-align: right; display: flex;} +.btn-box button{color: #ffffff; border-radius: 10rpx; background-color: #1e8679; width: inherit; font-weight: 500; font-size: 28rpx; padding: 8rpx 20rpx; margin: 0; margin-left: 10rpx; } +.list-con .title { min-width: 140rpx;} + +/*备件详情*/ +.list-row .head{ height: 100rpx; line-height: 100rpx; display: flex; justify-content: space-between; padding: 0 20rpx;} +.list-row .titleName{ display: flex; align-items: center; justify-content: flex-start; color: #333333; font-size: 32rpx; font-family: PingFang-SC-Bold;} +.list-row .titleName image{ margin-right: 10rpx; width: 40rpx; height: 40rpx;} +.plan{ display: flex; align-items: center; justify-content: flex-start; color: #007cc9; font-size: 30rpx;} +.plan image{ margin-left: 10rpx; width: 44rpx; height: 44rpx;} +.plan .up{transform: rotateZ(-180deg);} +.list-row .list-con{ padding: 20rpx 30rpx; font-size: 28rpx; line-height: 50rpx; border-top: solid 1px #e7e7e7; } +.list-con>view{display: flex; padding: 5rpx 0;} +.list-con .title{color: #666666; margin-right: 40rpx; min-width: 120rpx; text-align: right; display: inline-block;} +.list-con .value{color: #333;} +.list-con .value image{ width: 100rpx; height: 100rpx;} + +/*抽屉弹窗*/ +.drawer-box{position: fixed;top: 175rpx; left: 0;bottom: 0;right: 0; background: rgba(0, 0, 0, 0.6); z-index: 2000; display: flex; justify-content: flex-end;} +.drawer-content{background: #ffffff;width: 600rpx; box-sizing: border-box; display: flex;flex-direction: column; padding: 40rpx; height: calc(100vh - 175rpx);position: relative; font-size: 30rpx;} +.d-title{font-size: 34rpx; color: #1e8679; font-weight: 600; height: 50rpx;} +.drawer-content input{border-radius: 10rpx; border: solid 1px #cccccc; padding: 10rpx 20rpx; font-size: 28rpx;} + +/*筛选*/ +.filter-box{display: flex; align-items: center; font-size: 28rpx; padding: 0 20rpx; height: 50rpx; background-color: #ffffff; border-radius: 25rpx; color: #333333;} +.filter-box image{ width: 30rpx; height: 26rpx; margin-right: 10rpx;} +.radio-list{ margin-top: 20rpx;} +.radio-list label{ margin-right: 50rpx;} +.c-title{font-size: 30rpx; height: 60rpx; font-weight: 600; margin-top: 80rpx;} +.date-box{ position: relative;} +.date-box image{position: absolute; right: 10rpx; top: 10rpx; width: 50rpx; height: 50rpx;} +.filter-btn{ display: flex; width: 90%; position: absolute; bottom: 60rpx;} +.filter-btn>view{text-align: center; width: 230rpx; font-size: 30rpx; border: solid 1px #999999; margin: 0 10rpx; height: 80rpx; line-height: 78rpx; border-radius: 40rpx; flex: 1; color: #333333; box-sizing: border-box; } +.filter-btn>view.primary{background-color: #1e8679; border: solid 1px #1e8679; color: #FFF;} +.filter-btn>view.warning{background-color: #FFF; border: solid 1px #ff3333; color: #ff3333;} + diff --git a/monitor/pages/station/station.js b/monitor/pages/station/station.js new file mode 100644 index 0000000..4b4bca1 --- /dev/null +++ b/monitor/pages/station/station.js @@ -0,0 +1,121 @@ +// monitor/pages/station/station.js +const Api = require("../../../utils/util.js"), + app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + list:[], + pageNum: 1, + pageSize: 10, + keyWords: '' + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + wx.hideHomeButton() + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.getList() + + }, + // 列表 + getList: function () { + var that = this + var data = { + current: this.data.pageNum, + size: this.data.pageSize, + condition: this.data.keyWords, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('nh/powerStation/findMyPowerStation', data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + this.data.loadEnd = res.data.records.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.records = res.data.records + } else { + this.data.records = this.data.records.concat(res.data.records) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + list: this.data.records, + loadEnd: this.data.loadEnd, + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + //搜索 + keyWordsSearch: function (e) { + this.setData({ + keyWords: e.detail, + pageNum: 1, + list: [] + }) + this.getList() + }, + + /** 联系租户 **/ + phone(e) { + const phone = e.currentTarget.dataset.phone; + if (!phone) { + wx.showToast({ + title: '暂无租户联系方式', + icon: 'none' + }) + return + } + wx.makePhoneCall({ + phoneNumber: phone, + }) + }, +//跳转详情 + goDetail(e){ + var entryId = e.currentTarget.dataset.eid + var code = e.currentTarget.dataset.code + var id = e.currentTarget.dataset.id + wx.navigateTo({ + url: '../stationDetail/stationDetail?code=' + code + '&id='+ id +'&eid=' + entryId, + }) + }, + + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getOrder() + this.getNum(); + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getOrder() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/station/station.json b/monitor/pages/station/station.json new file mode 100644 index 0000000..5ec431e --- /dev/null +++ b/monitor/pages/station/station.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "tabBar": "../components/tabBar/tabBar", + "van-search": "@vant/weapp/search/index" + }, + "navigationBarTitleText": "工单电站", + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark", + "onReachBottomDistance": 1000 + } \ No newline at end of file diff --git a/monitor/pages/station/station.wxml b/monitor/pages/station/station.wxml new file mode 100644 index 0000000..aa19f81 --- /dev/null +++ b/monitor/pages/station/station.wxml @@ -0,0 +1,28 @@ + + + + + + + + + 电站编号:{{item.stationCode}} + + + + + + {{item.ownerName}} + {{item.ownerPhone}} + + + + {{item.province}}{{item.city}}{{item.district}}{{item.address}} + + + + + + + + \ No newline at end of file diff --git a/monitor/pages/station/station.wxss b/monitor/pages/station/station.wxss new file mode 100644 index 0000000..8efb92e --- /dev/null +++ b/monitor/pages/station/station.wxss @@ -0,0 +1,42 @@ +/* monitor/pages/station/station.wxss */ +.content { + width: 750rpx; + padding: 20rpx; + font-size: 28rpx; +} + +.content-title { + position: relative; + padding: 20rpx; + border-radius: 20rpx; + background-color: #ffffff; +} + +.content-title-text { margin-left: 0rpx; display: flex; font-size: 28rpx;} + +.content-list { + padding: 10rpx; + border-radius: 20rpx; + background-color: #ffffff; + border-top: 1px dashed #f0f0f0; +} +.content-list-info { + margin: 10rpx; + border-radius: 10rpx; + padding: 20rpx; + background-color: #f5f6fa; +} + +.content-list-info-top { display: flex; flex-direction: row; align-items: center;} + +.content-list-info-address { + display: flex; + flex-direction: row; + align-items: center; + margin-top: 10rpx; +} +.content-list-info-address-area { + margin-right: 20rpx; flex: 1; +} +.dz_icon{ width: 40rpx; height: 40rpx;} +.tel_icon{ width: 60rpx; height: 30rpx;} \ No newline at end of file diff --git a/monitor/pages/stationDetail/stationDetail.js b/monitor/pages/stationDetail/stationDetail.js new file mode 100644 index 0000000..0bc5f1f --- /dev/null +++ b/monitor/pages/stationDetail/stationDetail.js @@ -0,0 +1,179 @@ +var Api = require("../../../utils/util.js"); +import * as echarts from '../../ec-canvas/echarts'; +let chart = null; +Page({ + /** + * 页面的初始数据 + */ + data: { + detail: {}, + ec: { + lazyLoad: true //开启懒加载 + }, + xData:[], //用于存放x轴的数据 + seriesData:[] //用于存放折线图的数据 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.echartsComponnet = this.selectComponent('#mychart'); + if(options.id){ + this.setData({ + code: options.code, + id: options.id, + entryId: options.eid + }) + } + this.getDetail() + this.getList() + this.getianqi() + }, + //天气 + getianqi(){ + var that = this + wx.showLoading({ + title: '加载中...', + }) + Api.req('nh/home/weather', { + stationId: this.data.id + }, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + that.setData({ + weatherObj: res.data.now + }) + }else{ + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + }, + //详情 + getDetail(){ + var that = this + wx.showLoading({ + title: '加载中...', + }) + Api.req('nh/powerStation/detail', { + stationCode: this.data.code + }, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + that.setData({ + detail: res.data + }) + }else{ + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + }, + //设备列表 + goDevice(e){ + wx.navigateTo({ + url: '../deviceList/deviceList?id=' + e.currentTarget.dataset.id, + }) + }, + //7日发电 + getList(){ + Api.req('nh/powerStation/powerGenerationTrends', { + entryId: this.data.id + }, 'get') + .then(res => { + if(res.code == 200){ + this.setData({ + xData: res.data.XStr, + seriesData: res.data.fdlY + }) + this.initChart(); //初始化图表 + }else{ + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + //模拟从后端获取数据,并赋值给xData 、seriesData + // setTimeout(() => { + // const xData = ['1日', '2日', '3日', '4日', '5日', '3日', '7日'] + // const seriesData = [500, 270, 890, 1344, 300, 320, 310] + // this.setData({xData,seriesData}) + // this.initChart(); //初始化图表 + // },500) + }, + //初始化echarts图表 + initChart() { + //如果是二次赋值,就需要先清空,避免bug + if(this.chart){ + chart.clear(); + } + this.echartsComponnet.init((canvas, width, height,dpr) => { + // 初始化图表 + chart = echarts.init(canvas, null, { + width: width, + height: height, + devicePixelRatio: dpr //清晰度 使canvas的图表更加清晰 + }); + chart.setOption(this.getOption()) + return chart; + }); + }, + + //设置图表各项数据 + getOption() { + let option = { + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' + }, + confine: true + }, + legend: { + data: ['发电量(kW)'] + }, + grid: { + left: 20, + right: 20, + bottom: 15, + top: 40, + containLabel: true + }, + xAxis: [{ + type: 'category', + data: this.data.xData + }], + yAxis: [{ + type: 'value', + }], + series: [{ + name: '发电量(kW)', + type: 'bar', + label: { + normal: { + show: true, + position: 'inside' + } + }, + data: this.data.seriesData, + }] + } + return option; + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + +}) \ No newline at end of file diff --git a/monitor/pages/stationDetail/stationDetail.json b/monitor/pages/stationDetail/stationDetail.json new file mode 100644 index 0000000..5eaf6b0 --- /dev/null +++ b/monitor/pages/stationDetail/stationDetail.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "ec-canvas": "../../ec-canvas/ec-canvas" + }, + "navigationBarTitleText": "电站详情" +} \ No newline at end of file diff --git a/monitor/pages/stationDetail/stationDetail.wxml b/monitor/pages/stationDetail/stationDetail.wxml new file mode 100644 index 0000000..34beb1d --- /dev/null +++ b/monitor/pages/stationDetail/stationDetail.wxml @@ -0,0 +1,85 @@ + + + + + + 实时功率(kw) + {{detail.entryStat.power}} + + + 当日发电(kwh) + {{detail.entryStat.etd}} + + + + + + + 当月发电(kW) + {{detail.entryStat.etm}} + + + 当年发电(kW) + {{detail.entryStat.ety}} + + + 累计发电(kW) + {{detail.entryStat.eta}} + + + 日等效小时(h) + {{detail.entryStat.fullHour}} + + + 当日天气 + {{weatherObj.weather}} + + + 当日温度(℃) + {{weatherObj.temperature}} + + + + + + + 用户信息 + 查看设备信息 + + + + 业主姓名 + {{detail.ownerName}} + + + 电站编码 + {{detail.projectCode}} + + + 安装地址 + {{detail.province}}{{detail.city}}{{detail.district}}{{detail.address}} + + + 实际安装容量 + {{detail.actualCapacity}}kW + + + 项目公司 + {{detail.projectName}} + + + 资方 + {{detail.capitalName}} + + + + + + 近7日发电趋势图 + + + + + + + \ No newline at end of file diff --git a/monitor/pages/stationDetail/stationDetail.wxss b/monitor/pages/stationDetail/stationDetail.wxss new file mode 100644 index 0000000..8ddea7c --- /dev/null +++ b/monitor/pages/stationDetail/stationDetail.wxss @@ -0,0 +1,37 @@ +/* monitor/pages/stationDetail/stationDetail.wxss */ +.top-bg{width: 100%; height: 700rpx; position: relative; z-index: -1;} +.station-content{margin-top: -700rpx; padding: 20rpx;} +.top-data{display: flex; justify-content: space-between; font-size: 48rpx;} +.top-data>view{flex: 1; text-align: center; color: #FFF;} +.top-data>view:first-child{border-right: 1px solid #FFF;} +.title1{ display: flex; font-size: 28rpx; align-items: center; justify-content: center; margin-bottom: 20rpx;} +.ssgl{width: 38rpx; height: 30rpx; margin-right: 10rpx;} +.drfd{width: 25rpx; height: 38rpx; margin-right: 10rpx;} +.jksj_bg2{width: 710rpx; height: 418rpx; position: relative; z-index: -1; margin-top: 38rpx;} +.data-table{width: 710rpx; height: 418rpx; margin-top: -418rpx; padding: 35rpx 25rpx; display: flex; flex-direction: row; flex-wrap: wrap; font-size: 24rpx; color: #FFF; } +.data-table>view{width: 33.33%; text-align: center;} +.data-table .numb{font-size: 40rpx; margin-top: 20rpx; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;} +.mt-20{margin-top: 40rpx;} + +.info-list-box{background: #FFF; border-radius: 20rpx;} +.head-tit{font-size: 30rpx; display: flex; height: 100rpx; align-items: center; border-bottom: solid 1px #e7e7e7; padding: 0 30rpx; font-weight: 600;} +.head-tit image{width: 40rpx; height: 40rpx; margin-right: 10rpx;} +.info-cont{padding: 20rpx 0;} +.info-list{display: flex; margin: 10rpx 20rpx; font-size: 28rpx;} +.info-list .left-title{ width: 180rpx; text-align: left; margin-right: 20rpx; color: #666666;} +.info-list .right{flex: 1;} + +.cont-table{border: 1px solid #096b94; border-radius: 10rpx; margin: 0 15rpx;} +.tab-title{ height: 90rpx; line-height: 90rpx; color: #096b94; text-align: center; font-size: 28rpx;} +.tab-head{background-color: #eef2f7; height:80rpx; display: flex; align-items: center; } +.tab-head>view, .tab-body>view>view{flex: 1; text-align: center; font-size: 26rpx;} +.tab-body>view:nth-child(even){ background-color: #f5f5f5;} +.tab-body>view{height:80rpx; display: flex; align-items: center; } + +.container {width: 100%; height: 500rpx;} +ec-canvas {width: 100%; height: 100%;} + +.title-big>image,.title-big-two>view>image{width: 40rpx; height: 40rpx; margin: 0 10rpx;} +.title-big-two>view{display: flex; align-items: center;} +.title-big-two{font-size: 30rpx; color: #333; height: 80rpx; line-height: 50rpx; border-bottom: 1rpx solid #efefef; display: flex; align-items: center; display: flex; justify-content: space-between;} +.title-big-two>view>.fkjl{width: 23rpx; height: 22rpx;} \ No newline at end of file diff --git a/monitor/pages/technicaDetail/technicaDetail.js b/monitor/pages/technicaDetail/technicaDetail.js new file mode 100644 index 0000000..9a502e6 --- /dev/null +++ b/monitor/pages/technicaDetail/technicaDetail.js @@ -0,0 +1,29 @@ +var Api = require("../../../utils/util.js"); +Page({ + data: { + detail:{} + }, + onLoad: function(options) { + var that = this, + data = { + id: options.id, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/operationTechnicalData/detail', data, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + that.setData({ + detail: res.data + }) + }else{ + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + }, +}) \ No newline at end of file diff --git a/monitor/pages/technicaDetail/technicaDetail.json b/monitor/pages/technicaDetail/technicaDetail.json new file mode 100644 index 0000000..484a89f --- /dev/null +++ b/monitor/pages/technicaDetail/technicaDetail.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "详情" +} \ No newline at end of file diff --git a/monitor/pages/technicaDetail/technicaDetail.wxml b/monitor/pages/technicaDetail/technicaDetail.wxml new file mode 100644 index 0000000..6c824de --- /dev/null +++ b/monitor/pages/technicaDetail/technicaDetail.wxml @@ -0,0 +1,6 @@ +{{detail.title}} +{{detail.createTime}} + + + + \ No newline at end of file diff --git a/monitor/pages/technicaDetail/technicaDetail.wxss b/monitor/pages/technicaDetail/technicaDetail.wxss new file mode 100644 index 0000000..da1d4da --- /dev/null +++ b/monitor/pages/technicaDetail/technicaDetail.wxss @@ -0,0 +1,19 @@ +.title{ + line-height: 100rpx; + font-size: 40rpx; + color: #333; + text-align: center; +} +page{ + background: #fff; + padding: 0 50rpx; + box-sizing: border-box; +} +.time{ + line-height: 45rpx; + font-size: 24rpx; + color: #999; + text-align: center; +} +.line{text-align: center; width: 100%; height: 60rpx;} +.line image{ width: 630rpx; height: 27rpx;} \ No newline at end of file diff --git a/monitor/pages/technicalData/technicalData.js b/monitor/pages/technicalData/technicalData.js new file mode 100644 index 0000000..e4a580e --- /dev/null +++ b/monitor/pages/technicalData/technicalData.js @@ -0,0 +1,133 @@ +const app = getApp(), + Api = require("../../../utils/util.js"); +Page({ + data: { + list: [], + pageNum: 1, + pageSize: 20, + }, + onLoad: function () { + var that = this; + this.setData({ + imgUrl: app.globalData.imgUrl + }) + that.getNotice() + }, + //获取技术资料 + getNotice: function () { + var data = { + current: this.data.pageNum, + size: this.data.pageSize, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/operationTechnicalData/list', data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + this.data.loadEnd = res.data.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.records = res.data.records + } else { + this.data.records = this.data.records.concat(res.data.records) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + list: this.data.records, + loadEnd: this.data.loadEnd, + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + //资料详情 + detail: function (e) { + var that = this; + var last = e.currentTarget.dataset.detail.slice(-3) + if(last ==''){ + wx.navigateTo({ + url: '../technicaDetail/technicaDetail?id=' + e.currentTarget.dataset.id + }) + }else{ + let openFileType; + switch (last) { + case "ocx": + openFileType = "docx"; + break; + case "ord": + openFileType = "docx"; + break; + case "cel": + openFileType = "xlsx"; + break; + case "lsx": + openFileType = "xlsx"; + break; + case "xls": + openFileType = "xls"; + break; + case "ppt": + openFileType = "ppt"; + break; + case "ptx": + openFileType = "pptx"; + break; + case "pdf": + openFileType = "pdf"; + break; + default: + openFileType = "doc"; + break; + + } + if (last == 'png' || last == 'jpg' || last == 'gif' || last == 'peg'){ + wx.navigateTo({ + url: '../lookImg/lookImg?img=' + e.currentTarget.dataset.detail, + }) + }else{ + wx.downloadFile({ + url: that.data.imgUrl + e.currentTarget.dataset.detail, + success: function (res) { + const filePath = res.tempFilePath + console.log(filePath) + wx.openDocument({ + filePath: filePath, + fileType: openFileType, + success: function (res) { + console.log(1) + } + }) + } + }) + } + } + }, + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 20, + loadEnd: false, + }) + this.getNotice() + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getNotice() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/technicalData/technicalData.json b/monitor/pages/technicalData/technicalData.json new file mode 100644 index 0000000..416bba1 --- /dev/null +++ b/monitor/pages/technicalData/technicalData.json @@ -0,0 +1,3 @@ +{ +"navigationBarTitleText": "技术资料" +} \ No newline at end of file diff --git a/monitor/pages/technicalData/technicalData.wxml b/monitor/pages/technicalData/technicalData.wxml new file mode 100644 index 0000000..05e4195 --- /dev/null +++ b/monitor/pages/technicalData/technicalData.wxml @@ -0,0 +1,15 @@ + + + + + {{item.name}} + {{item.createTime}} + + + + + --已全部加载-- + + + + \ No newline at end of file diff --git a/monitor/pages/technicalData/technicalData.wxss b/monitor/pages/technicalData/technicalData.wxss new file mode 100644 index 0000000..bba28cc --- /dev/null +++ b/monitor/pages/technicalData/technicalData.wxss @@ -0,0 +1,3 @@ + + +@import "../notice/notice.wxss" \ No newline at end of file diff --git a/monitor/pages/workOrder/backDetail/backDetail.js b/monitor/pages/workOrder/backDetail/backDetail.js new file mode 100644 index 0000000..e9340b1 --- /dev/null +++ b/monitor/pages/workOrder/backDetail/backDetail.js @@ -0,0 +1,62 @@ +const app = getApp(), +Api = require("../../../../utils/util.js"); +Page({ + data: { + + }, + onLoad: function(options) { + var data = { + orderId: options.id, + }, + that = this; + that.setData({ + type: options.type, + imgUrl: app.globalData.imgUrl + }) + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/operationOrderFeedback/listFeedback', data, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + for (var i = 0; i < res.data.length; i++) { + if (res.data[i].feedbackImg) { + // res.data[i].feedbackImg = res.data[i].feedbackImg.split(",").map(itm=>{return this.data.imgUrl + itm}) + res.data[i].feedbackImg = res.data[i].feedbackImg?res.data[i].feedbackImg.split(",").map(itm => {return {name: itm,url: this.data.imgUrl + itm}}): []; + } else { + res.data[i].feedbackImg = [] + } + } + that.setData({ + back: res.data, + }) + } + }) + }, + bigImg: function(e) { + let photo_arr = new Array(); + let current = e.currentTarget.dataset.url; + photo_arr.push(current); + wx.previewImage({ + current: current, // 当前显示图片的https链接 + urls: photo_arr, // 需要预览的图片https链接列表 + }) + }, +//备用 + bigImg2: function(e) { + let findex = e.currentTarget.dataset.findex + let photo_arr = this.data.back[findex].feedbackImg; + let current = e.currentTarget.dataset.url; + wx.previewImage({ + current: current, // 当前显示图片的https链接 + urls: photo_arr, // 需要预览的图片https链接列表 + }) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + + }, +}) \ No newline at end of file diff --git a/monitor/pages/workOrder/backDetail/backDetail.json b/monitor/pages/workOrder/backDetail/backDetail.json new file mode 100644 index 0000000..ecabbda --- /dev/null +++ b/monitor/pages/workOrder/backDetail/backDetail.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index" + }, + "navigationBarTitleText": "反馈记录" +} \ No newline at end of file diff --git a/monitor/pages/workOrder/backDetail/backDetail.wxml b/monitor/pages/workOrder/backDetail/backDetail.wxml new file mode 100644 index 0000000..73c323f --- /dev/null +++ b/monitor/pages/workOrder/backDetail/backDetail.wxml @@ -0,0 +1,16 @@ + + {{item.feedback}} + {{item.feedbackTime}} + + + + + + + + + + + \ No newline at end of file diff --git a/monitor/pages/workOrder/backDetail/backDetail.wxss b/monitor/pages/workOrder/backDetail/backDetail.wxss new file mode 100644 index 0000000..d9015ed --- /dev/null +++ b/monitor/pages/workOrder/backDetail/backDetail.wxss @@ -0,0 +1,4 @@ +.back{font-size: 28rpx; width: 720rpx; margin: 20rpx auto; background-color: #FFF; padding: 20rpx; border-radius: 20rpx;} +.back-time{color: #999; font-size: 24rpx; margin-bottom: 10rpx;} +.photo{width: 100rpx; height: 100rpx; display: inline; margin-right: 20rpx;} +.img image{width: 100rpx; height: 100rpx; border-radius: 10rpx;} \ No newline at end of file diff --git a/monitor/pages/workOrder/order/order.js b/monitor/pages/workOrder/order/order.js new file mode 100644 index 0000000..094d777 --- /dev/null +++ b/monitor/pages/workOrder/order/order.js @@ -0,0 +1,235 @@ +const Api = require("../../../../utils/util.js"), + app = getApp(); +Page({ + data: { + keyWords: '', //关键字 + currentTab: 0, + tabList: [{ + name: '全部', + siteStatus: '4,5,6,7', + num: 0 + }, { + name: '待接单', + siteStatus: '4', + num: 0 + }, { + name: '服务中', + siteStatus: '5,6', + num: 0 + }, { + name: '已完工', + siteStatus: '7', + num: 0 + }], + pageNum: 1, + pageSize: 10, + }, + onLoad: function (options) { + var that = this; + if(options.tab){ + this.setData({ + currentTab: options.tab + }) + } + that.getOrder() + that.getNum(); + }, + onShow: function () { + var that = this; + this.setData({ + userId: wx.getStorageSync('userId'), + }) + }, + //搜索 + keyWordsSearch: function (e) { + this.setData({ + keyWords: e.detail, + pageNum: 1, + order: [] + }) + this.getOrder() + }, + getNum: function () { + var that = this; + var data = {} + Api.req('sf/operationOrder/orderHomeIndex', data, 'get') + .then(res => { + if(res.code == 200){ + that.setData({ + [`tabList[0].num`]: res.data.allCount, //全部 + [`tabList[1].num`]: res.data.djdCount, //待接单 + [`tabList[2].num`]: res.data.fwzCount, //服务中 + [`tabList[3].num`]: res.data.ywcCount, //完成 + }) + } + }) + + }, + // 全部工单 + getOrder: function () { + var that = this + var data = { + current: this.data.pageNum, + size: this.data.pageSize, + smallCondition: this.data.keyWords, + siteStatus: this.data.tabList[this.data.currentTab].siteStatus, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/operationOrder/page', data, 'get').then(res => { + wx.stopPullDownRefresh() + wx.hideLoading() + if(res.code== 200){ + this.data.loadEnd = res.data.records.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.records = res.data.records + } else { + this.data.records = this.data.records.concat(res.data.records) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + order: this.data.records, + loadEnd: this.data.loadEnd, + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + // 点击切换工单 + swichNav: function (e) { + this.setData({ + currentTab: e.currentTarget.dataset.current, + pageNum:1, + order: [] + }) + this.getOrder() + }, + //拨打电话 + call: function (e) { + wx.makePhoneCall({ + phoneNumber: e.currentTarget.dataset.tel + }) + }, + //订单详情 + orderDetail: function (e) { + var status = e.currentTarget.dataset.status, + id = e.currentTarget.dataset.id, + promiseTime = e.currentTarget.dataset.promisetime, + jie = e.currentTarget.dataset.jie, + no = e.currentTarget.dataset.no; + wx.navigateTo({ + url: '../orderDetail/orderDetail?id=' + id + '&status=' + status + '&promiseTime=' + promiseTime, + }) + }, + //上门 + door: function (e) { + var that = this; + wx.showModal({ + title: '上门', + content: '确认上门?', + success: function (res) { + if (res.cancel) {} else { + var data = { + orderId: e.currentTarget.dataset.id, + siteId: wx.getStorageSync('siteId'), + userId: wx.getStorageSync('userId'), + } + Api.req('main/order/toVisit', data, 'get') + .then(res => { + console.log(res) + if (res.data.code == '200') { + that.getOrder4(0, []) + that.getOrder(0, []) + } else { + wx.showToast({ + title: '上门失败', + image: '../../img/error.png', + mask: true + }) + } + }) + } + }, + fail: function (res) {}, //接口调用失败的回调函数 + complete: function (res) {}, //接口调用结束的回调函数(调用成功、失败都会执行) + }) + }, + //接单 + jie: function (e) { + var that = this; + wx.showModal({ + title: '接单', + content: '确认接单?', + success: function (res) { + if (res.cancel) {} else { + var data = { + orderId: e.currentTarget.dataset.id, + } + wx.showLoading({ + title: '提交中...', + }) + Api.req('sf/operationOrderSiteDispatch/empReceiveOrde', data, 'post') + .then(res => { + wx.hideLoading() + if (res.code == '200') { + wx.showToast({ + title: '操作成功', + }) + that.setData({ + pageNum: 1, + order: [], + }); + that.getOrder() + that.getNum() + }else { + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + } + }, + fail: function (res) {}, //接口调用失败的回调函数 + complete: function (res) {}, //接口调用结束的回调函数(调用成功、失败都会执行) + }) + + }, + + //反馈 + feedback(e){ + var id = e.currentTarget.dataset.id + wx.navigateTo({ + url: '../orderDetail2/orderDetail2?id=' + id, + }) + }, + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getOrder() + this.getNum(); + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getOrder() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/workOrder/order/order.json b/monitor/pages/workOrder/order/order.json new file mode 100644 index 0000000..39b8ed6 --- /dev/null +++ b/monitor/pages/workOrder/order/order.json @@ -0,0 +1,10 @@ +{ +"usingComponents": { + "tabBar": "../../components/tabBar/tabBar", + "van-search": "@vant/weapp/search/index" +}, +"navigationBarTitleText": "工单", +"enablePullDownRefresh": true, +"backgroundTextStyle": "dark", +"onReachBottomDistance": 1000 +} \ No newline at end of file diff --git a/monitor/pages/workOrder/order/order.wxml b/monitor/pages/workOrder/order/order.wxml new file mode 100644 index 0000000..3297d78 --- /dev/null +++ b/monitor/pages/workOrder/order/order.wxml @@ -0,0 +1,62 @@ + + + + + + {{item.num}}{{item.name}} + + + + + + + + + + + + + {{item.serviceTypeName}} + + + + + + + {{item.customerName}} + {{item.customerMobile}} + + + + {{item.province}}{{item.city}}{{item.area}}{{item.customerAddress}} + + + + + {{item.createTime}} + + + + 接单 + + + 反馈 + + + + + + --已全部加载-- + + + + + + \ No newline at end of file diff --git a/monitor/pages/workOrder/order/order.wxss b/monitor/pages/workOrder/order/order.wxss new file mode 100644 index 0000000..bbaf317 --- /dev/null +++ b/monitor/pages/workOrder/order/order.wxss @@ -0,0 +1,151 @@ +.top-flex{position: fixed; width: 100%; z-index: 1; top: 0;} +.swiper-tab { + width: 100%; + text-align: center; + display: flex; + line-height: 60rpx; + border-bottom: 1rpx solid #ddd; + justify-content: space-around; + height: 100rpx; + box-sizing: border-box; + background-color: #FFF; +} + +.abnormal { + width: 32rpx; + height: 32rpx; + margin-top: 12px; + margin-left: 5px; + vertical-align: top; +} +.swiper-tab>view { + font-size: 22rpx; + box-sizing: border-box; + color: #333; flex: 1; +} + +.num { + display: block; + padding: 0 10rpx; + font-weight: bold; + font-size: 36rpx; + height: 40rpx; + line-height: 50rpx; +} + +.swiper-tab .on { + background-image: linear-gradient(180deg, #d5eef8 0%, #f4fcff 100%); + color: #096b94; + /* border-bottom: 5rpx solid #2096ff; */ + +} + +swiper { + height: calc(100vh - 350rpx); +} + +swiper-item, scroll-view { + height: 100%; +} + +.order { + background: #fff; + margin: 10rpx 0; + position: relative; +} + +.goods { + font-size: 30rpx; + font-weight: bold; + color: rgba(51, 51, 51, 1); + margin-left: 25rpx; + max-width: 400rpx; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; +} + +.order-detail { + padding: 0 28rpx; + line-height: 55rpx; + font-size: 30rpx; + overflow: hidden; + height: auto; +} + +.order-top+.order-detail { + padding-top: 15rpx; +} + +.order-name { + color: #333; + float: left; + width: 390rpx; +} + +.time { + font-size: 24rpx; + color: rgba(153, 153, 153, 1); + right: 20rpx; + line-height: 40rpx; + position: absolute; + top: 100rpx; +} + +.time:first-of-type { + margin-top: 10rpx; +} + +.tel-num { + color: #333; + float: left; +} + +.addr { + padding: 0 28rpx; + line-height: 64rpx; + font-size: 30rpx; + color: rgba(153, 153, 153, 1); + border-bottom: 1rpx solid #efefef; + padding-bottom: 15rpx; +} + +.operate>view { + flex: 1; + text-align: center; + height: 80rpx; + font-size: 30rpx; + line-height: 80rpx; +} + +.operate>view:nth-of-type(2) { + border-left: 1rpx solid #ddd; +} +.operate text { display: inline-block; width: 34rpx; height: 34rpx; vertical-align: middle; margin-right: 10rpx; margin-bottom: 7rpx;} + + +.title { width: 150rpx; float: left; color: #999;} +.picker, picker { position: absolute; top: 0; left: 0; width: 100%; height: 100rpx;} +.detail-list { position: relative;} +.operate1 { position: fixed; bottom: 0; width: 100% !important; height: 90rpx; color: #fff;} +.operate { display: flex; justify-content: space-between; color: #fff; width: 100%; margin-top: 0;} +.order-top {width: 100%; height: 80rpx; border-bottom: 1rpx solid #efefef; line-height: 80rpx;} +.order-top view {height: 38rpx; font-size: 24rpx; line-height: 34rpx; background: #fff; padding: 0 6px; border-radius: 10rpx; float: left; margin-top: 22rpx; margin-left: 30rpx;} + +.allOrder{ box-sizing: border-box; font-size: 28rpx;} +.content{padding: 0 20rpx; margin: 10rpx 0;} +.content-title { position: relative; padding: 20rpx; border-radius: 20rpx; background-color: #ffffff;} +.status_icon{ position: absolute; left: -6rpx; top: 20rpx; width: 90rpx; height: 44rpx;} +.content-title-text { padding-left: 90rpx; display: flex; font-size: 28rpx;} +.content-list { padding: 10rpx; border-radius: 20rpx; background-color: #ffffff; border-top: 1px dashed #f0f0f0;} +.content-list-info {margin: 10rpx; border-radius: 10rpx; padding: 20rpx; background-color: #f5f6fa;} +.content-list-info-top { display: flex; flex-direction: row; align-items: center;} +.content-list-info-address {display: flex; flex-direction: row; align-items: center; margin-top: 10rpx;} +.content-list-info-address-area {margin-right: 20rpx; flex: 1;} +.tel_icon{ width: 60rpx; height: 30rpx;} +.date-txt{color: #666666; font-size: 26rpx;} +.time_icon{width: 26rpx; height: 26rpx;} +.bottom-action {display: flex; align-items: center; margin: 20rpx 10rpx;} +.content-function {display: flex; flex-direction: row; flex: 1; align-items: center; margin-right: 10rpx;} +.action {height: 60rpx; padding: 0 30rpx; background-color: #096b94; line-height: 60rpx; text-align: center; color: white; border-radius: 6rpx; margin-left: 15rpx;} diff --git a/monitor/pages/workOrder/orderDetail/orderDetail.js b/monitor/pages/workOrder/orderDetail/orderDetail.js new file mode 100644 index 0000000..1786ad6 --- /dev/null +++ b/monitor/pages/workOrder/orderDetail/orderDetail.js @@ -0,0 +1,103 @@ +const app = getApp(), + Api = require("../../../../utils/util.js"); +Page({ + data: { + currentTab: 0, + tab: [], + useFitting: [], + applyFitting: [] + }, + // 点击切换工单 + swichNav: function(e) { + this.setData({ + currentTab: e.currentTarget.dataset.current + }) + }, + onLoad: function(options) { + var that = this; + wx.showLoading({ + title: '加载中...', + }) + that.setData({ + status: options.status, + id: options.id, + imgUrl: app.globalData.imgUrl + }) + if(options.status == '4'){//待接单 + this.setData({ + tab: ['基本信息','过程信息'] + }) + }else if(options.status == '5' || options.status == '6'){//服务中 + this.setData({ + tab: ['基本信息','过程信息'] + }) + }else if(options.status == '7'){//已完成 + this.setData({ + tab: ['基本信息','过程信息','反馈信息','物料信息'] + }) + } + that.jc(); + }, + //基本信息 + jc: function() { + var that = this; + var data = { + id: that.data.id, + } + wx.showLoading({ + title: '加载中...', + }) + Api.req('sf/operationOrder/detail', data, 'get') + .then(res => { + wx.hideLoading() + if(res.code == 200){ + res.data.bdImgs = res.data.bdImgs?res.data.bdImgs.split(','):[] + that.setData({ + basic: res.data + }) + that.getList() + }else{ + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }) + }, + //物料信息列表 + getList: function () { + var that = this + wx.showLoading({ + title: '加载中...', + }) + Api.req('blade-operationOrderMaterial/operationOrderMaterial/materialListRelateOrder', { + orderId: this.data.basic.id + }, 'get').then(res => { + wx.hideLoading() + if(res.code== 200){ + this.setData({ + useFitting: res.data.useFitting, //使用物料 + applyFitting: res.data.applyFitting, //申请物料 + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + //物料信息 + getDetail(e){ + let type = e.currentTarget.dataset.type + if(type == '1'){//物料使用详情 + wx.navigateTo({ + url: '../../materialDetail/materialDetail?id=' + e.currentTarget.dataset.id + '&title=已用物料' + }) + }else{//物料申请详情 + wx.navigateTo({ + url: '../../addMaterial/addMaterial?id=' + e.currentTarget.dataset.id + '&title=详情' + }) + } + }, +}) \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail/orderDetail.json b/monitor/pages/workOrder/orderDetail/orderDetail.json new file mode 100644 index 0000000..d84437b --- /dev/null +++ b/monitor/pages/workOrder/orderDetail/orderDetail.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-button": "@vant/weapp/button/index", + "baseInfo": "../../components/baseInfo/baseInfo", + "feedBackRecord": "../../components/feedBackRecord/feedBackRecord" + }, + "navigationBarTitleText": "工单详情" +} \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail/orderDetail.wxml b/monitor/pages/workOrder/orderDetail/orderDetail.wxml new file mode 100644 index 0000000..744c60c --- /dev/null +++ b/monitor/pages/workOrder/orderDetail/orderDetail.wxml @@ -0,0 +1,83 @@ + + + {{item}} + + + + + + + + + + + + + {{item.c}} + {{item.d}} + + + + + + + + + + 物料使用 + + + + 物料名称 + {{item.materialName}} + + + 物料规格 + {{item.materialSpec}} + + + 使用数量 + + {{item.amount}} + + + + + + + + + 物料申请 + + + 待审核 + 待平台出库 + 运维商待收件 + 已完成 + 申请已取消 + 审核驳回 + 待出库 + 待领取 + + 物料名称 + {{item.materialName}} + + + 物料规格 + {{item.materialSpec}} + + + 申请数量 + + {{item.amount}} + + + + + + + + + + + \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail/orderDetail.wxss b/monitor/pages/workOrder/orderDetail/orderDetail.wxss new file mode 100644 index 0000000..8b03d58 --- /dev/null +++ b/monitor/pages/workOrder/orderDetail/orderDetail.wxss @@ -0,0 +1,144 @@ +.list { + background: #fff; + font-size: 30rpx; + margin: 20rpx; border-radius: 20rpx; padding: 10rpx 0; font-size: 28rpx; +} + +.list>view { + padding: 10rpx 0; + overflow: hidden; +} + +/* .list>view:last-of-type { + border-bottom: none; +} */ + +.title { + width: 190rpx; + float: left; + color: #999; + text-align: right +} + +.detail-list { + width: 510rpx; + color: #333; + display: flex; + align-items: center; +} +.detail-list .img{display: flex; width: 100%;} +.detail-list .upload{ width: 100rpx; height: 100rpx; margin-right: 20rpx; margin-bottom: 10rpx; } +.detail-list .upload image{width: 100%; height: 100%; border-radius: 10rpx;} + +.time { + border-bottom: 1rpx solid #efefef; + padding: 20rpx 0; +} + +.time>view:last-of-type { + font-size: 24rpx; + color: rgba(153, 153, 153, 1); + margin-bottom: 20rpx; +} + +.time>view:first-of-type { + font-size: 30rpx; + color: #333; +} +.title-big { + font-size: 30rpx; + color: #333; + height: 80rpx; + line-height: 50rpx; + border-bottom: 1rpx solid #efefef; display: flex; align-items: center; +} +.title-big>image,.title-big-two>view>image{width: 40rpx; height: 40rpx; margin: 0 10rpx;} +.title-big-two>view{display: flex; align-items: center;} +.title-big-two{font-size: 30rpx; color: #333; height: 80rpx; line-height: 50rpx; border-bottom: 1rpx solid #efefef; display: flex; align-items: center; display: flex; justify-content: space-between;} + +.swiper-tab { + width: 100%; + text-align: center; + display: flex; + line-height: 80rpx; + border-bottom: 1rpx solid #ddd; + justify-content: space-around; + height: 80rpx; + box-sizing: border-box; + background: #fff; +} + +.swiper-tab>view { + font-size: 28rpx; + box-sizing: border-box; + color: #999; +} + +.swiper-tab .on { + color: #096b94; + border-bottom: 5rpx solid #096b94; + font-weight: bold; +} + +swiper-item,scroll-view { height: 100%;} +scroll-view {background: #efefef;} +button::after { border: none;} +.guo { background: #FFF; color: #333;} +.ju { background: #f66;} +.jie,.pai,.zhuan,.sure { background: #0A6597;} +.in,.yue {background: #f2993a;} +.pb-100 { padding-bottom: 100rpx;} +.operate { + display: flex; + justify-content: space-between; + color: #fff; + width: 100%; + position: fixed; + bottom: 0; + padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); +} +.operate>view { + flex: 1; + text-align: center; + height: 90rpx; + font-size: 30rpx; + line-height: 90rpx; +} +.blue-date{width: 38rpx; height: 38rpx;} +.allOrder{height: calc(100vh - 100rpx); overflow: auto;} +.logistics-detail{background-color: #FFF; width: 720rpx; margin: 20rpx auto; padding: 0 20rpx; border-radius: 20rpx; overflow: hidden;} + +.time2 { + border-bottom: 1rpx dashed #efefef; + padding: 0rpx 20rpx; + display: flex; +} + +.time2>view:first-of-type { + font-size: 24rpx; + color: rgba(153, 153, 153, 1); + margin-bottom: 20rpx; + width: 280rpx; +} + +.time2>view:last-of-type { + font-size: 28rpx; + color: #333; flex: 1; +} + +.content-row { padding: 0; border-radius: 20rpx; background-color: #ffffff; margin: 20rpx;} +.list{position: relative;} +.list .right-rj { + border: solid #aaa; + border-width: 0 2rpx 2rpx 0; + display: inline-block; + padding: 8rpx; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + position: absolute; right: 10rpx; top: 80rpx; +} +.list{ border-bottom:1px #f0f0f0 solid; border-radius: 0; position: relative;} +.list>view{display: flex; padding: 10rpx 0; } +.left-tit {width: 130rpx; color: #999; text-align: right; margin-right: 20rpx;} +.list>view .value{flex: 1; display: flex;} +.status_text{ position: absolute; top: 0rpx; right: 0rpx; font-size: 24rpx;} \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail2/orderDetail2.js b/monitor/pages/workOrder/orderDetail2/orderDetail2.js new file mode 100644 index 0000000..1c1da57 --- /dev/null +++ b/monitor/pages/workOrder/orderDetail2/orderDetail2.js @@ -0,0 +1,606 @@ +const app = getApp(), + Api = require("../../../../utils/util.js"); + const { API_MONIT_URL,API_BASE_URL,UP_MONIT_IMG } = require('../../../../api/api') +Page({ + data: { + API_MONIT_URL: API_MONIT_URL, + API_BASE_URL: API_BASE_URL, + UP_MONIT_IMG: UP_MONIT_IMG, + currentTab: 0, + tab: ['服务反馈', '物料信息', '基本信息'], + measuresList: [], + measures: '', + stationName: '', + category: '', + categoryList: ['电表箱', '支架', '并网箱', '组件','逆变器'], + applianceBrand: '', + applianceBarcode: '', + typeList: ['保内', '保外'], + backSay: '', + mileage: '', + imgName1: [], + brandList: [],//设备品牌 + useFitting: [], + applyFitting: [], + servTypeList: [], + serviceTypeName: '' + }, + // 点击切换工单 + swichNav: function(e) { + this.setData({ + currentTab: e.currentTarget.dataset.current + }) + }, + onLoad: function(options) { + var that = this; + wx.showLoading({ + title: '加载中...', + }) + that.setData({ + status: options.status, + id: options.id, + imgUrl: app.globalData.imgUrl, + }) + //基本信息 + Api.req('sf/operationOrder/detail', { + id: options.id + }, 'get').then(res => { + wx.hideLoading() + if(res.code == 200){ + res.data.bdImgs = res.data.bdImgs.split(','); + var basic = res.data; + that.setData({ + basic: basic, + category: basic.applianceCategory, //设备类型 + applianceBrand: basic.applianceBrand, //设备品牌 + applianceBarcode: basic.applianceBarcode, //设备序列号 + date: basic.putIntoTime.slice(0, 10), //投运时间 + type: basic.warrantyType?that.data.typeList[Number(basic.warrantyType) - 1]:'', //保修类型 + warrantyType: basic.warrantyType, //保修类型 + serviceType: basic.serviceType, //服务类型 + serviceTypeName: basic.serviceTypeName, //服务类型 + measuresId: basic.serviceMeasures, //服务措施ID + measures: basic.serviceMeasuresName, //服务措施 + }) + that.getList() + } + }) + this.getBrandList() + this.getServiceMeasures() + this.getServiceType() + }, + //设备品牌 + getBrandList(){ + Api.req('sf/operationOrderCallback/getAllBrand', { + // orderId: options.id + }, 'get') + .then(res => { + if(res.code == 200){ + this.setData({ + brandList: res.data, + }) + } + }) + }, + //服务措施 + getServiceMeasures(){ + Api.req('sf/operationServiceMeasures/list', { + // orderId: options.id + }, 'get') + .then(res => { + if(res.code == 200){ + this.setData({ + measuresList: res.data.records, + }) + } + }) + }, + //服务类型 + getServiceType(){ + Api.req('sf/operationServiceType/list', {}, 'get') + .then(res => { + if(res.code == 200){ + this.setData({ + servTypeList: res.data, + }) + } + }) + }, + //电站名称 + stationName: function(e) { + this.setData({ + stationName: e.detail.value + }) + }, + //设备类型 + category: function(e) { + this.setData({ + category: this.data.categoryList[e.detail.value], + }) + }, + //设备品牌 + applianceBrand: function(e) { + this.setData({ + applianceBrand: this.data.brandList[e.detail.value].name, + applianceBrandId: this.data.brandList[e.detail.value].id + }) + }, + //设备S/N + applianceBarcode: function(e) { + this.setData({ + applianceBarcode: e.detail.value + }) + }, + //保修类型 + type: function(e) { + let index = Number(e.detail.value); + this.setData({ + type: this.data.typeList[index], + warrantyType: String(index + 1) + }) + }, + //服务类型 + servType: function(e) { + let index = Number(e.detail.value); + this.setData({ + serviceType: this.data.servTypeList[index].id, + serviceTypeName: this.data.servTypeList[index].name + }) + }, + //投运时间 + date: function(e) { + this.setData({ + date: e.detail.value + }) + }, + //服务措施选择 + measures: function(e) { + this.setData({ + measures: this.data.measuresList[e.detail.value].serviceMeasures, + measuresId: this.data.measuresList[e.detail.value].id + }) + }, + + //反馈内容 + backSay: function(e) { + this.setData({ + backSay: e.detail.value + }) + }, + + //销售商 + seller: function(e) { + this.setData({ + seller: e.detail.value + }) + }, + //发票号 + bill: function(e) { + this.setData({ + bill: e.detail.value + }) + }, + //产品名称 + pro_name: function(e) { + this.setData({ + pro_name: e.detail.value + }) + }, + //规格型号 + typeModel: function(e) { + this.setData({ + typeModel: e.detail.value + }) + }, + //机身编码 + code: function(e) { + this.setData({ + code: e.detail.value + }) + }, + /** + * + * 上传图片 + * + * @param {*} e + */ + afteruploadPhotoRead(e) { + const type = e.currentTarget.dataset.type + const name = e.currentTarget.dataset.name + if (Array.isArray(e.detail.file)) { //多张 + var count = 0; + this.afteruploadPhotoReadS(e, count) + return + } + const { + file + } = e.detail; + const img = file.url; + wx.showLoading({ + title: '上传中', + }) + var that = this + wx.uploadFile({ + url: that.data.UP_MONIT_IMG, + filePath: file.url, + header:{ + 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=', + 'Blade-Requested-With':'BladeHttpRequest', + 'Tenant-Id': '000000', + 'Blade-Auth': 'bearer ' + wx.getStorageSync('TOKEN'), + }, + name: 'file', + complete: function (res) { + console.log("上传图片", res) + var imgData = JSON.parse(res.data) + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + var item = { + url: "", + name: "", + } + item.url = img; + item.name = imgData.data.name; + that.data[name].push(item) + that.setData({ + [`${name}`]: that.data[name] + }) + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + /** 上传多张图片递归 **/ + afteruploadPhotoReadS(e, count) { + let ob = { + name: '', + url: '', + } + const name = e.currentTarget.dataset.name + wx.showLoading({ + title: '加载第' + (count + 1) + '张照片中', + mask: true, + }) + const element = e.detail.file[count]; + var that = this; + wx.uploadFile({ + url: that.data.UP_MONIT_IMG, + filePath: element.url, + header:{ + 'Content-Type': 'application/x-www-form-urlencoded', + 'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=', + 'Blade-Requested-With':'BladeHttpRequest', + 'Tenant-Id': '000000', + 'Blade-Auth': 'bearer ' + wx.getStorageSync('TOKEN'), + }, + name: 'file', + success(res) { + wx.hideLoading() + var imgData = JSON.parse(res.data) + if (res.statusCode == 200) { + count = count + 1; + ob.name = imgData.data.name + ob.url = element.url + that.data[name].push(ob); + that.setData({ + [`${name}`]: that.data[name] + }) + if (count == e.detail.file.length) { + wx.showToast({ + title: '选择成功', + icon: 'none' + }) + } else { + that.afteruploadPhotoReadS(e, count) + } + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + //上传图片 + uploadImg: function(maxNum, imgName, cb) { + var that = this, + maxNum = maxNum; + wx.chooseImage({ + count: maxNum - that.data.img.length, + sizeType: ['original', 'compressed'], + sourceType: ['album', 'camera'], + success(res) { + const tempFilePaths = res.tempFilePaths; + var imgList = that.data.imgList.concat(tempFilePaths), + getImg = imgName; + for (var i = 0; i < imgList.length; i++) { + wx.showLoading({ + title: '图片上传中...', + mask: true + }) + wx.uploadFile({ + url: that.data.url + 'common/weChat/uploadImage', + filePath: imgList[i], + name: 'file', //在FILE请求中,图片存储在img字段中 + success: function(res) { + if (getImg.length < maxNum) { + getImg.push(res.data) + var imgs = getImg + that.setData({ + imgs + }) + typeof cb == 'function' && cb(that) + } + wx.hideLoading() + }, + fail: function(res) { + wx.showToast({ + title: 'error!', + icon: 'none', + image: '/img/error.png' + }) + }, + }) + } + + } + }) + }, + //删除上传图片 + deleteImg: function(e) { + const name = e.currentTarget.dataset.name + const index = e.detail.index //删除图片的下标 + this.data[name].splice(index, 1); + this.setData({ + [`${name}`]: this.data[name] + }) + }, +//提交 + submit: function(e) { + var that = this; + var type = e.currentTarget.dataset.type + if(type == '1'){//服务完成全必填 + if(this.data.applianceBrand == ''){ + wx.showToast({ + title: '设备品牌不能为空', + icon: 'none' + }) + return + }else if(this.data.applianceBarcode ==''){ + wx.showToast({ + title: '设备S/N不能为空', + icon: 'none' + }) + return + }else if(this.data.type == ''){ + wx.showToast({ + title: '保修类型不能为空', + icon: 'none' + }) + return + }else if(this.data.serviceType == ''){ + wx.showToast({ + title: '服务类型不能为空', + icon: 'none' + }) + return + }else if(this.data.measures == ''){ + wx.showToast({ + title: '服务措施不能为空', + icon: 'none' + }) + return + }else if(this.data.backSay ==''){ + wx.showToast({ + title: '反馈内容不能为空', + icon: 'none' + }) + return + }else if(this.data.imgName1.length==0){ + wx.showToast({ + title: '过程照片不能为空', + icon: 'none' + }) + return + } + }else{ + if(this.data.backSay ==''){ + wx.showToast({ + title: '反馈内容不能为空', + icon: 'none' + }) + return + }else if(this.data.imgName1.length==0){ + wx.showToast({ + title: '过程照片不能为空', + icon: 'none' + }) + return + } + } + wx.showLoading({ + title: '提交中...', + mask: true + }) + var data = { + orderId: this.data.id, + applianceBrand: this.data.applianceBrand, //品牌 + applianceBarcode: this.data.applianceBarcode,//设备S/N + warrantyType: this.data.warrantyType,//保修类型 + serviceType: this.data.serviceType,//服务类型 + putIntoTime: this.data.date, //投运时间 + serviceMeasures: this.data.measuresId, //服务措施 + feedbackImg: this.data.imgName1.length > 0 ? this.data.imgName1.map(itm=>itm.name).join(",") : "",//过程图片 + feedbackType: type,//反馈类型:0 过程反馈 1服务完成反馈 2服务无法完成反馈 + feedback: this.data.backSay, //反馈内容 + } + // console.log("执行",data); + // return + Api.req('sf/operationOrderFeedback/save', data, 'post', '','1') + .then(res => { + wx.hideLoading() + if (res.code == '200') { + wx.showToast({ + title: '操作成功', + }) + var page = getCurrentPages(); + let prevPage = page[page.length - 2]; + setTimeout(function() { + prevPage.getNum(); + prevPage.getOrder(); + wx.navigateBack({}) + }, 1000) + } else { + wx.showToast({ + title: res.msg, + icon: 'none', + mask: true + }) + } + }) + }, + //设备列表 + goDevice(){ + wx.navigateTo({ + url: '../../deviceList/deviceList?id=' + this.data.basic.entryId, + }) + }, + + //反馈记录 + backRecord: function(e) { + wx.navigateTo({ + url: '../backDetail/backDetail?id=' + e.currentTarget.dataset.id + '&type=' + e.currentTarget.dataset.type + }) + }, + + //物料信息 + getDetail(e){ + let type = e.currentTarget.dataset.type + if(type == '1'){//物料使用详情 + wx.navigateTo({ + url: '../../materialDetail/materialDetail?id=' + e.currentTarget.dataset.id + '&title=已用物料' + }) + }else{//物料申请详情 + wx.navigateTo({ + url: '../../addMaterial/addMaterial?id=' + e.currentTarget.dataset.id + '&title=详情' + }) + } + + }, + //使用物料 + getUseList(e){ + wx.navigateTo({ + url: '../../materialUse/materialUse?orderId=' + this.data.basic.id + }) + }, + //申请物料 + goAddApply(e){ + wx.navigateTo({ + url: '../../addMaterial/addMaterial?orderId=' + this.data.basic.id + '&title=新增物料申请' + }) + }, + //编辑申请物料 + editList(e){ + wx.navigateTo({ + url: '../../addMaterial/addMaterial?id='+ e.currentTarget.dataset.id +'&orderId=' + this.data.basic.id + '&title=编辑' + }) + }, + //领取 + getReceive(e){ + let that = this + let id = e.currentTarget.dataset.id + wx.showModal({ + title: '提示', + content: '是否确认领取该物料?', + complete: (res) => { + if (res.confirm) { + wx.showLoading({ + title: '加载中...', + }) + Api.req('blade-platformFittingApply/platformFittingApply/empReceiveMate', { + id: id + }, 'get').then(res => { + wx.hideLoading() + if(res.code == 200){ + wx.showToast({ + title: '操作成功', + }) + setTimeout(()=>{ + that.getList(); + },500) + } + }) + } + } + }) + }, + //物料信息列表 + getList: function () { + var that = this + wx.showLoading({ + title: '加载中...', + }) + Api.req('blade-operationOrderMaterial/operationOrderMaterial/materialListRelateOrder', { + orderId: this.data.basic.id + }, 'get').then(res => { + wx.hideLoading() + if(res.code== 200){ + this.setData({ + useFitting: res.data.useFitting, //使用物料 + applyFitting: res.data.applyFitting, //申请物料 + }) + }else{ + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + //删除物料 + delList(e){ + let that = this + let id = e.currentTarget.dataset.id + let type = e.currentTarget.dataset.type + let url = '' + if(type == '1'){ + url = 'blade-operationOrderMaterial/operationOrderMaterial/deleteUserFitting' //删除使用 + }else{ + url = 'blade-operationOrderMaterial/operationOrderMaterial/deleteApplyFitting' //删除申请 + } + wx.showModal({ + title: '提示', + content: '是否确认删除该物料?', + complete: (res) => { + if (res.confirm) { + wx.showLoading({ + title: '加载中...', + }) + Api.req(url, { + id: id + }, 'get').then(res => { + wx.hideLoading() + if(res.code == 200){ + wx.showToast({ + title: '删除成功', + }) + setTimeout(()=>{ + that.getList(); + },500) + } + }) + } + } + }) + } +}) \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail2/orderDetail2.json b/monitor/pages/workOrder/orderDetail2/orderDetail2.json new file mode 100644 index 0000000..53e81bc --- /dev/null +++ b/monitor/pages/workOrder/orderDetail2/orderDetail2.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "van-button": "@vant/weapp/button/index", + "baseInfo": "../../components/baseInfo/baseInfo" + }, + "navigationBarTitleText": "反馈详情" +} \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail2/orderDetail2.wxml b/monitor/pages/workOrder/orderDetail2/orderDetail2.wxml new file mode 100644 index 0000000..493c094 --- /dev/null +++ b/monitor/pages/workOrder/orderDetail2/orderDetail2.wxml @@ -0,0 +1,220 @@ + + + {{item}} + + + + + + + + 服务信息 + 查看设备信息 + + + 电站编码: + {{basic.powerStationCode}} + + + + 设备类型: + + + + {{category}} + + + + + + + + *设备品牌: + + + + {{applianceBrand}} + + + + + + + + *设备S/N: + + + + + *保修类型: + + + + {{type}} + + + + + + + + *服务类型: + + + + {{serviceTypeName}} + + + + + + + 告警名称: + {{basic.alarmName}} + + + 信息来源: + 自建 + 监控转运维 + 其他 + 故障转运维 + 低效转运维 + + + 审核备注: + {{basic.memoNote}} + + + + + + 过程反馈 + 反馈记录 + + + + *服务措施: + + + + {{measures}} + + + + + + + + + *反馈内容: + + + + + + *过程照片: + + + + + + + (注:一次可添加8张) + + + + + + + + 物料使用 + + 使用 + + + + + 物料名称 + {{item.materialName}} + + + 物料规格 + {{item.materialSpec}} + + + 使用数量 + + {{item.amount}} + + 删除 + + + + + + + + + 物料申请 + + 申请 + + + + 待运营商审核 + 待一级审核 + 待二级审核 + 待平台出库 + 运维商待收件 + 已完成 + 申请已取消 + 审核驳回 + 待出库 + 待领取 + + 物料名称 + {{item.materialName}} + + + 物料规格 + {{item.materialSpec}} + + + 申请数量 + + {{item.amount}} + + + 编辑 + + 删除 + 领取 + + + + + + + + + + + + + + + 过程反馈 + + 服务完成 + \ No newline at end of file diff --git a/monitor/pages/workOrder/orderDetail2/orderDetail2.wxss b/monitor/pages/workOrder/orderDetail2/orderDetail2.wxss new file mode 100644 index 0000000..322bd57 --- /dev/null +++ b/monitor/pages/workOrder/orderDetail2/orderDetail2.wxss @@ -0,0 +1,30 @@ +@import "../orderDetail/orderDetail.wxss"; +.title-big-two>view>.fkjl{width: 23rpx; height: 22rpx;} +.rj {border: solid #aaa; border-width: 0 2rpx 2rpx 0; display: inline-block; padding: 8rpx; transform: rotate(-45deg); -webkit-transform: rotate(-45deg);} +.detail-list picker{width: 90%;} +.detail-list input{ width: 100%;} +.picker{width: 90%; height: 45rpx;} +.tip{color: #999; font-size: 24rpx; padding-left: 180rpx;} + +.content-row { padding: 0; border-radius: 20rpx; background-color: #ffffff; margin: 20rpx;} +.list{position: relative;} +.list .right-rj { + border: solid #aaa; + border-width: 0 2rpx 2rpx 0; + display: inline-block; + padding: 8rpx; + transform: rotate(-45deg); + -webkit-transform: rotate(-45deg); + position: absolute; right: 10rpx; top: 80rpx; +} +.list{ border-bottom:1px #f0f0f0 solid; border-radius: 0; position: relative;} +.list>view{display: flex; padding: 10rpx 0; } +.left-tit {width: 130rpx; color: #999; text-align: right; margin-right: 20rpx;} +.list>view .value{flex: 1; display: flex;} + +.title-big {font-size: 30rpx; color: #333; height: 80rpx; line-height: 50rpx; border-bottom: 1rpx solid #efefef; display: flex; align-items: center; padding: 0 20rpx; justify-content: space-between;} +.title-big .right-btn{ display: flex; font-size: 24rpx;} +.add-btn{color: #FFF; padding: 0rpx 20rpx; background-color: #096b94; border-radius: 10rpx; margin-left: 20rpx;} +.del-btn{color: #ff3333; padding: 0rpx 20rpx; border: solid 1px #ff6666; border-radius: 10rpx;} + +.status_text{ position: absolute; top: 0rpx; right: 0rpx; font-size: 24rpx;} \ No newline at end of file diff --git a/other/components/userInfo/userInfo.js b/other/components/userInfo/userInfo.js new file mode 100644 index 0000000..d527edc --- /dev/null +++ b/other/components/userInfo/userInfo.js @@ -0,0 +1,55 @@ +// components/userInfo/userInfo.js +Component({ + + /** + * 组件的属性列表 + */ + properties: { + detail: Object, + type: String + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + ready(){ + // console.log(1212, this.data) + }, + + /** + * 组件的方法列表 + */ + methods: { + /** 用户信息跳转 **/ + userFn(e){ + // console.log('用户信息跳转', e) + wx.navigateTo({ + url: '/home/pages/ownerForm/ownerForm?projectId=' + this.data.detail.entry_id + '&type='+this.data.type, + }) + }, + /** 拨打业主联系电话 **/ + phoneFn(e) { + const phone = e.currentTarget.dataset.phone; + if (!phone) { + wx.showToast({ + title: '暂无联系方式', + icon: 'none' + }) + return + } + wx.makePhoneCall({ + phoneNumber: phone, + }) + }, + //审批记录 + goRecord(e){ + wx.navigateTo({ + url: '/pages/appRecord/appRecord?entryId=' + this.data.detail.id + '&type='+this.data.type, + }) + } + + } +}) \ No newline at end of file diff --git a/other/components/userInfo/userInfo.json b/other/components/userInfo/userInfo.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/other/components/userInfo/userInfo.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/other/components/userInfo/userInfo.wxml b/other/components/userInfo/userInfo.wxml new file mode 100644 index 0000000..732a982 --- /dev/null +++ b/other/components/userInfo/userInfo.wxml @@ -0,0 +1,38 @@ + + + + + {{detail.tenant_name}} + + 户用屋顶 + 公共屋顶 + + + + + 联系电话 + {{detail.mobile}} + + + 拨打 + + + + 身份证号 + {{detail.id_code}} + + + + 统一信用代码 + {{detail.regno}} + + + + + \ No newline at end of file diff --git a/other/components/userInfo/userInfo.wxss b/other/components/userInfo/userInfo.wxss new file mode 100644 index 0000000..743319a --- /dev/null +++ b/other/components/userInfo/userInfo.wxss @@ -0,0 +1,54 @@ +/* components/userInfo/userInfo.wxss */ +.content-img-right { + width: 50rpx; + height: 50rpx; +} +.user-box{ + background-color: #fffdfc; + border-radius: 20rpx; + border: solid 2rpx #333333; + padding: 4rpx 30rpx; + margin: 20rpx; + background-color: #f5f6fa; +} +.user-list{ + display: flex; + align-items: center; + margin: 26rpx 0; +} +.user-list .bt{ + font-size: 28rpx; + min-width: 150rpx; + margin-right: 8rpx; +} +.user-list .bd{ + flex: 1; font-size: 28rpx; +} +.user-list .tag{ + display: inline-block; + height: 48rpx; + background-color: #333333; + border-radius: 10rpx; + font-size: 24rpx; + color: #fff; + line-height: 48rpx; + text-align: center; + padding: 0 20rpx; +} +.user-list .tel{ + font-size: 26rpx; + color: #333; +} +.user-list .tel image{ + width: 23rpx; + height: 30rpx; + vertical-align: middle; +} + +.tips-box{padding: 20rpx;} +.tips-box>view{display: flex; line-height: 50rpx; margin-bottom: 10rpx; font-size: 26rpx;} +.tips-box .left-title{width: 100rpx;} +.tips-box .right{flex: 1;} +.tips-box view image{width: 100rpx; height: 100rpx; border: 1px solid #CCC;} +.txt-red{ color: #FF0000;} +.record-btn{ border: 1px solid #0a6597; color: #0a6597; border-radius: 30rpx; padding: 5rpx 15rpx; font-size: 24rpx;} \ No newline at end of file diff --git a/other/img/addr.png b/other/img/addr.png new file mode 100644 index 0000000000000000000000000000000000000000..ac20c70f84d2e6cca65c09b94581928a6197f792 GIT binary patch literal 1499 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 Z-5b@NsBRZW2qORh002ovPDHLkV1kzI9t8jZ literal 0 HcmV?d00001 diff --git a/other/img/content-list-type-3letter.png b/other/img/content-list-type-3letter.png new file mode 100644 index 0000000000000000000000000000000000000000..88971b83e1d91db8bd36dbf7527cfae52b9b6883 GIT binary patch literal 1734 zcmbVNZA=?w9KWq1gM~R=;&1~!5BB2R^+5zD6|O79Fsvw0>u*4B1>N=)H>2k%+tx$qRiM`H(J^f08tYz$B?pT! zEU!ckwHPhI2YC_3?Scfuz;4D>gvPMSDpM82c3|LP&?YNhV(!FA0+%H((d-P;LDdJM za&5N;8oTR4Vt2dfk%+4M@Jf?M1aV*pxEYTrI&XT3G%t^2YndYOG{k8464jPMyd_wV z`=ADJr`<)049DUX9y{ZrJuJ5sXKAK_qAMuILDCFQyLg8O&s+r3rb!XL!M{DD3w?Qs zs9~r)MI{mmd%|IdS{uc9JRXW>DV8M>g4DYdLoi82FUvCcfi7yYYRFK*Ek+>>I}I;^ zEM0IRuI6YJJrgDrFv=8Eim}s{OKG4a=5T7K7E3FaL<+<}94Lm4uuKlCMxg=qDEu4h z-1c<}P-ug}oQ@@JiN|v)bfacJaw8LvCDD4QO9fN|&|#-0f|~uv%reUxmG@~tFrXHK zFqTbJeb!{$=d%*y#y2<1iUbq-J&Vo&zhD3_!O|>8(r%KaLk!BA6D96m+RfAS0yGFE zInuQx)Wx&xbx>3_l3)n`3YJ7Z0=2k+e3s)v8=zFBjlgq}=UBWR@cHUB z7?ERWLvPrz4G+}#T#U!%B3V0=Ha8gL1Bz}4iU1b{?jmgO6czyfU|3J~c()Wrf!hY=$oXrQ_cMeDzm9);|u zthQZnh5D

AgiQo`s{iVTrkcg+6j44=8BPX=tFC%Da~_Y*~H4UmY?BXU}^dn7F_A znW=%Xg1h&Ly%p;E^&=fj)3J@i54}IqVf(3iEJYk$`SkCfN%l{#rJne4_3~TFU%Phj z^7N%WZ+Z{!eJlVcHobB2+?Q+mn%*YdlQW>B#JB_S=SgzENNAdO0sYx$6`XUb!hh zx%UJTjuqr5;X6neU6G&cb+{+P+>>TZ)TY!#bbk1@%0HS8*-~Aj$6vI4 zKKgB*+dRBscChbC^UtrYHCw^#?*1!{zio7wca|ns^);XTSS-Cd)5N`GJJLGwROsr= znTLP4OC4|hu4=Tm;6TyiW8*-1!J3oljSLb^9}Ur@Ydk+ o)5mvn1@5n1UzDdx&eseK^@2~})N@!*r}d`^)YSRk+qSR&PdKwsUH||9 literal 0 HcmV?d00001 diff --git a/other/img/content-list-type-6letter.png b/other/img/content-list-type-6letter.png new file mode 100644 index 0000000000000000000000000000000000000000..5fad4b237f5ef5f57a755ad4f31365e75995fd5f GIT binary patch literal 1753 zcmbVNZ%i9y7{3i!7#j|^X_^JI%M~4JulL@y6ngFktk4T+R$L)RTFjQvK2}syPC-(m(3weT2#sMo>oS@kc0v=6!nmw(#IGMu5V$OH#KGzi z2x&f;kORFsZ0>E0h`pVnS0d_m;X5-dB1l0~z%!|&Vz3#G$nmmBw$v1X=OAV$M>JRl z@s>~%?o)M$S35nVNV^%l#_Oa#z{|KDI0NV!3e-@viv%9q0#57FlR4v(NWmmbLB%u>mM&nmgleir zLj4=+!uBl&P-;V=f{j&uNu>%V4Ab9@!pJ9NRkRW5(I6FuhT5fz(BF;Rv|G_=tWSr6 zsp=6`O)g(l)3VFB&u3jsEnam{RwOlTJh0*nt;xAHRB=~w+qxTP>c%saM5{Q6}zk|SUxZP&-43r8FitMylozSRQ&!t9g+l!`%G}S5?glX~*C>>F%n)3;X)*pTF9+DLi!f_l__1!S z_A4axOJMp~Hi4G6+rjkO?JAO0h3k{O#VhAm3lHV-E2BFOHvT9cdU!zr?#s);mX!uiJIu zsBL62qF*_g055+q`-s~nZ7(Y?JNxN)VB@oPp<<8+1Fw8W+_iD- xk!;|OqEk(d&6DlKJxFZ}o=57Zex4?Rbzd-VD5ZD))M5Sk1pSTt*zWdYe*#zHNnQW| literal 0 HcmV?d00001 diff --git a/other/img/content-list-type-dys.png b/other/img/content-list-type-dys.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef4d0d68658e6c50632f8a741f7e2fd73c5f2eb GIT binary patch literal 755 zcmV&iDHK7*u4n$=A~-01*HH00VSVPE!DZ zfkIKWYSbbonjcu*0~!jt<-nvxrR0dWU0ABjs!9mpMU3m=eyUEw5ca}Q2muj z2V%Mh;vk5FAP#~!2;#7Z`%E7#{`XVgTz&vf_jFZUN`Gwj=;G?~@`5fqo7+HpPglXI zZA_=x;WS6Y7-^zneZLRY-qlrc4Hqe+;t$s?7_$kn_4mZnoLyZ7XB08s45Inq48}{+ z$&O|LiVYu4wpc8xx+?D0)>3kzU5vQ1=p=uH(~{21>YU%gjQ`9N!>Z29?{ov ziBMkM#|p_looskNe&feoy~@{h<0TsCy=+6TwM>I7tvE l3F0I{oFs^o1aVS{`va5c&6my2vT^_b002ovPDHLkV1nu$a~%Kx literal 0 HcmV?d00001 diff --git a/other/img/content-list-type-dzg.png b/other/img/content-list-type-dzg.png new file mode 100644 index 0000000000000000000000000000000000000000..0d051ea724a41b162b089bc21d17b22b98fcf1aa GIT binary patch literal 731 zcmV<10wn#3P)Dksz~LbIxKbqxJb<&I+9nrUjF=MXNFlt+1m?vmK|hDPfqtt97y6o z5(knvki@|e?h1d}PE55Jm;7;Oc%-Z2SO#E)IJquz@K6XfBwGWSHuH#9Tg)A{MAlF`YJaHJnK@n2zYrvj@;h zx#mGXC^wRwRjzqWSI6C)=opiJc|OfchBS9!B7&3zv%3+!sOx%-s90W_ChyXZTyydZ zc20MUS3H{GQ1i2qyKA5WA}rKaIGUR4h>cl5c0jY5u30K3vG0Y&U=WAn`V{|NF7h)H z0)0wmyHu$YPX`^RT(8U>7h67!G<|EID(ENz&WN#kmZ_2&N`D^Hk%dP5x!G)hD%HO*< zjQ2c?gwT}-usxXl*w^sqa#dQzGf3R1&t6Ms_#D>dJOaDqA=&|ZgM}9~bPb@2>B_^3 z7lBHM@0YwwJSE%5`fqhDJX5oZH#qo-@(s*ggJhlGkt&{4k#}2ci(gK0UliQJ+}q?k zOq|Z|RuEPMAIJ}RAUhp7D~yf)6w!8{Fvg{W5k_E<9!ylFXf!JC>`VWp56bpk={_%e zuP84ib+Y%S^gaFW_6_Z;r0$iRP6nq);uJ}oB8gKZaf&2Pk;Ewi_Xl%;(h$XE=4Jo@ N002ovPDHLkV1i@}U0MJD literal 0 HcmV?d00001 diff --git a/other/img/content-list-type-dzgys.png b/other/img/content-list-type-dzgys.png new file mode 100644 index 0000000000000000000000000000000000000000..95a4ae34f9d0656de67383dc57e1ddd65beec895 GIT binary patch literal 1002 zcmVEf&htjAgt{h{cg7Q$zuAPr6oM2b7W3MOw`R#nHt!eFe2LCg*D%yz>ng4?UH87wC z2GqcS8W?yA^OX*JB`@umj&f)BYX29rF@QG*vrl3244^Zhi*K9y#U`F+yZ;8_bTyxU z2GE1n7{GfXvxRXzST3uJWeL}ujd;ZPd=3?3EVKIJ`52KTa@JTgaQlZcJD5%gInwaJ zxl3+R)8ou57o4+|9c&&S#e%wokPxqVLo~L3D6@reFoXA#@o@48x=_=7=*+}}B$D^B zb8hxQ_ichO`b5(~WNa(5gQyjnE%omB1uOCulSavkVxO$Q^~dLO;sEjz^i%!R zGuD$=)lAUnID>KA$Q%}Mrzd|XB@WAZ;1Js_X(8r3q&0v(=nP`8zu(G2P-cO?+r*~40wZ=@^7KxY z3VE>Tr=mx8NGtLM4dF4Tt?0u=)n7u37e#?ZX<|G4R%Tj+(q?S+M1;T)35W5e4@V(> zATL%a7v=DRb8p0p3vi^2jsuy596TeW(sH|3NUOwCI7&E>Ocl0m_)*-+hL(+EA?cgH z`cy1de;Ua$7qhEfGwgAwMuoWy+lU&K7bDq5G%u11h-Zu{B^YO*d$&x;WN_3B(*JbO z&~PwNdNc{2T0ms+@)HH5%7A8_QpBc0|F|`US1_`MrjU1{y%5h~;kAyr2vE>&6efPa z?0BOvWHxNFdf0fIpTT;)-jq6(pg{qi()98nxE@jLc_g>3ya&_nU$!mbUv5qHHsKhV z+#!b@+nu_9R;_PS>wJzxNvLIJ?>2}CszZYlPnT^eUcZRteZ6AS}_lw#W zjH1__s+X^#PXSdQCW=0jRDHDl^Y}sIyBeA2N@NtkXlh_IH87eQ7)=d~rUph+1EWcp YKYiP5%>LK^iU0rr07*qoM6N<$f_k6jwg3PC literal 0 HcmV?d00001 diff --git a/other/img/content-list-type-wfys.png b/other/img/content-list-type-wfys.png new file mode 100644 index 0000000000000000000000000000000000000000..764da502443ac0e97d33b964878b42a01426c633 GIT binary patch literal 843 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 FV1mPY`O*LY literal 0 HcmV?d00001 diff --git a/other/img/copy.png b/other/img/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6de3ff81b511f38b62f01333206c02b414cd93 GIT binary patch literal 1176 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuk#7M#1QqR!L zz|zP>N5ROz&|KfZT;I@G*TB%qz|6|nQUMB-fVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$DAX(zG{Q6U zQu51-HNkp(eXTt6ic1pnl2bihY?Xkf=w)W6SQ#3-nVXmyxH!2uI~p3gI$1coIl3B~ znphYc8#tO9n8EbA zx;TbZ+)6SrGfO+bbf|HMY=@}i3Fi3?71jdjn-eBpVScpKp+>f2cf${RNih!QLM8#@ z#LWj}J7zZCVD6Z2G=blNuRHaS(na1QJt9(kOy3)3Fh66KRVZWQoRE3LTOp3~$o-3| z4q_}!AG0zx1TYmf++gddSKw}HTEX72o@pbGNruPKH4bxFk1Tj1(U_-wf=M-Fl9KtE z{|p~>G@@B&v+|^d;=+jiEREn6J8I+`1Q*m3vjRB)ZWyKu{< z1tJ~g3?D_KA}=({oLulJx`iu|Z}l5PtvR_DxPHlRnWZecq4|)M)U)V~krUWVZTgzD lJ~IlqGk;Vq;cQ@FX4pDYJ3jp4iA+#g;pyt?&ke}n)4 literal 0 HcmV?d00001 diff --git a/other/img/icon-search-white.png b/other/img/icon-search-white.png new file mode 100644 index 0000000000000000000000000000000000000000..10e7be48713142ee204cf40511778705af8a2d48 GIT binary patch literal 2381 zcmbVO3s4kg96!SFL8u8TV&S%o`KZ0UTkf?Br_q6M>M6pZU})^^gWI^fU2YfeKr0Oq z6rW{EPGsdNK>?96X;e%wqC+a^l$mKNmXDOkbVSXxZ+YBUSvlRz-hR8^@BjP%{*UiJ zyE1uJV#tt)Aqs^e#GDkL0`5`rH7E%DM}E6A1Kb7+Ng1L-5gaOC0g5eehAR{gU*@do zQo3a(LGex{N%J;F>2(SKtx&{H^$H}F!$^>g$>v-}xT~QNhB(>?&(m5|7Qw{WxugO& zlUgv#N)_Z#I1Nvo0>yd>K;UE~67o77E|KsW;T~QBtmW4z4D~>y93vbjJA~3L$&iV6 zGmuuPLnyTdgY>vktyAHc=4l91sr9HzkE){)m6}lLh-e(@`@z7Qn`ViW_-TE^WS zOOimKsK?_`dZLxQI~!HwIF70?6vGgJK*W5PM0ydI7}d`Z&xn+p6C{pzK{6w0}$Zmw3_6 z{{yvu`%ex)YAqJOkNawII{hw0DPa)^qc0)%MT^#afk9IkkZ0#`Z#J2d-8{=Vz=oKT_$*{jFzM8|PKRJhb&p(&g)qBBiF8qnIo=3^{3tn& zCMZ^?$0#+9;51GmTAPMNY)rHUVQpHP#7M@V#|{1V@jR6$cR{~B4eSjXIvTfOG@`Q^ zG>DD{_6CyGAO;H8k~q#9C|1*NKikcLQ%E}gH;;Ta<@O@_r2!slYs||pqJKTX8`HH^hGaBx|z6akgW%4J@lXSi{zqz zSN~x3`@8!4w(9>>-4+nElUit?xc<_&K z#s#R|U_j?@*!7%35jfBsA7@Q3I(TfVy*%x)mMgPs;^45rRh<#k%G1L)()Q9lr9~xm zg{QNS$EBo!hwF-#4xO~isy|6w7%m;Iwmh-^;00uOac+-cj>+7Z*1V7-!7-9M5cC zvK4FFr!5@T-V)&=&q7bG3Fw-TJMY$!qA5^X#2T!+M4caAR_YxdFr!`=S$j6@t(BLo zz6EPyw~vC4{#JP5{cDppm7dql6#~CAw#IHczJK5O4YJGR7R~-#bi7`wzt}VN{xqMLDgsgK?fo1IGwc)-2pM*s=i8W)- z&7YIC_ssGAkaI=i(a$}mh>r86oAqlS^|ew{!Zp4g6WK7Wdx{~r7Catbw z^1#p5)s5~>y>X^wSqps58ryZ|HOw^lYD`U7TX5o_jd88UVHrZRDn{K9PR)PUVUA@_nsw>kPUMqH^aq z7d`3Mw(V-^tRH*u87Aa2{6K!`pgWe#;bJm!R1@iot8 Gz48YZMsx-M literal 0 HcmV?d00001 diff --git a/other/img/navigation.png b/other/img/navigation.png new file mode 100644 index 0000000000000000000000000000000000000000..eaec9280016e93902b5d7dfc55f8ae792d826cbd GIT binary patch literal 1697 zcmV;S244AzP)&kgKO_67i(X(>0DZt!;H%GK z+VbElWFPyGeO6Hzm=(akfp0#)UCV}VkbPDKr!X)9p#4i(v{<}eFa7=fSS%Ke%;j>? z-`|hZ>8xbPcHmrogCXz#-+=EHV`wSH#>Oh@pGYJ)a^y%+d0Sf>f*|nX#S4wBwzd|V z&Bp83uMtJDlG}a@M1djr6qq%@`ASC7!(=kya=B<}Y0)^A$z+(Cnp#l5rltn7*{mzG z+wGh@c@h9Y5XfXQ1Ofp71_lO{e$&&_0BqZ~O*LyKCnrfH5~W-?kG!0}%mtT> z#u^zJ;q>X#rCg~;j>SI>z)Ivgr6LRl0}h7+x7&@?YE{~^*(}4u!(P^YY2yOu+T4&idSFqyP! zw{G2Hc6L_Np8tfGg2iIN@Au>L`INRqBEk9dOU?v2Ou+tJU`n!e>sC5DJ2`OR04rCn zEZT2ya8S3sR6;GJySp2Jt5>fwGc%(aCy_|d(b2)PXU|kRUawa(PAnFyGzkMZ4M1Zt zX?1lqZEbD1-EJBii*{2OA0KCYd|X$yZrwUeCX>p^Vwg-O_U+q;*=*LG36V&IW5bxX!^Z<`FH_w zem{eQgVfg6Dz8#uUMb8wi)79KOi;#h9goL}$K#wkcaD~p7L_a<4)gM*c57oX%X4An z`{2O?KrZ3{)~{c$n>+MMhb1s!0Ahf48WiF3<;$ADh4wY8Pan>Uwps~JG7 z2HpWbRAOW_8s+KJrzDd}qS0vCdObZoN^o*t%H?3U+c6rAJbd^NkY`OO6jJ0Civ^p_ zh9pUv*;`*wDP`K< zfich?pZtKlllA||kL2xO7Vi0e4~%?KbCw4q$i6ES1||#q75M2(S+orJ3EAgtexu&G zQWkj^%MJYU`R)46_yyU=6BGmm7Cwo*23UZ9QDL34%t;~pWI^^(mr`ffIdX^k`}uUJ rzxHGMa^^koE1wSa!ykX|N-6#in(slJ+BtQv00000NkvXXu0mjf?=w5V literal 0 HcmV?d00001 diff --git a/other/img/tel.png b/other/img/tel.png new file mode 100644 index 0000000000000000000000000000000000000000..aae904df6a6660020a53cae969b5aafb21d4db7b GIT binary patch literal 2192 zcmb_eTWl0n7@i8YK&cQeQnczgHQZ!&ZhM;vOWp2n>8gvhT?-ncot-(`opg6*n3;BG z0b!{LiV%TRfe=VYR5V_Ic!3DSCh%Z{aw!i5;tc`C)QTmPbCKv>F}^ zW}2mtPz!ElJtq?sj4*kXplqZ?DGv;V{u!D`6wta+5ANhUq+>mtQUOs9bfr}j0EAcO zL+M7K4W^hQI|AcC8<35HxhNED)mAN@kx3K?5C;he(;+LWkf$0`3`LJA!-!B=E=Zwr zJ`M1OqJ3g8Cb>#AWXDiC1( z)jlujXUG~i?WBDL+vhY1?lV6A-+YJy7ge+b51T?t@XdfwOEaYci|L3NqC z=Yu|9ou)*kI9$-{7gVFcfX_*>PA5*=C~Jd287yKzliGk-qbUhA)3}^8gj6}IzTv56 zZN=eb@(*iE6q2cxbl6>~-2QI>OLC*Q1apJ?g5w2iFGE5+%o)o~4wWz)70Ia6;lLRX zjo_pk);2;h5m;(oaFRSl^Q=8@pNs+Mve25DezUtcJDKmdY;0YL8cALQ-e%YbBkKOF zoe<;YW&n>@0<)M}=g`0BGqPUI1{{jdJ^SZ>2_18{(y{(`9;ECW5JNx9X20iHdzN4=`y>@clp@}oP-<&=7BEDt(iE#0b z>7V>Q``S;x%VePpVw`;Q&&-gVI_;W1|8B%IeWZ3-7)8E359gdx%l>; zNu%~`-gtKNtsAeGr;n}cs@S`B%863*r7z6~n@Xzg+dXZ9P;{{ + if(res.code==200){ + this.setData({ + staffLists:res.data.map((item)=>{return item.columns}) + }); + }else{ + wx.showToast({ + title: res.msg, + icon:'none' + }) + } + }); + return + } + //质检派工 + getDispatchEmp({ + userId:wx.getStorageSync('userId'), + empName:this.data.name + }).then(res=>{ + if(res.code==200){ + this.setData({ + staffLists:res.data.map((item)=>{return item.columns}) + }); + }else{ + wx.showToast({ + title: res.msg, + icon:'none' + }) + } + }); + }, + /** 单选 **/ + onChange(event) { + this.setData({ + radio: event.detail, + }); + console.log("执行1", event); + }, + /** 单选点击 **/ + onClick(event) { + console.log("执行", event); + const id = event.currentTarget.dataset.id; + const name = event.currentTarget.dataset.name; + this.setData({ + empId: id, + empName: name, + radio: id, + }); + }, + /** 返回 **/ + back(e) { + wx.navigateBack(); + }, + /** 提交 **/ + submit(){ + if(!this.data.radio){ + wx.showToast({ + title: '请先选择一项', + icon:'none' + }) + return; + } + if(this.data.type == '31'){ + saveDispatchEmp({ + traderId:wx.getStorageSync('traderId'), + id: this.data.entryId, //电站整改单id + empId: this.data.empId, + empName:this.data.empName, + }).then(res=>{ + if(res.code==200){ + wx.showToast({ + title: '派工成功', + icon:'none' + }) + setTimeout(()=>{ + wx.navigateBack(); + },1500); + }else{ + wx.showToast({ + title: res.errMsg, + icon:'none' + }) + } + }); + return + } + saveDispatch({ + userId:wx.getStorageSync('userId'), + id: this.data.entryId, //质检单id + empId: this.data.empId, + empName:this.data.empName, + }).then(res=>{ + if(res.code==200){ + wx.showToast({ + title: '派工成功', + icon:'none' + }) + setTimeout(()=>{ + wx.navigateBack(); + },1500); + }else{ + wx.showToast({ + title: res.errMsg, + icon:'none' + }) + } + }); + }, +}) \ No newline at end of file diff --git a/other/pages/dispatch/dispatch.json b/other/pages/dispatch/dispatch.json new file mode 100644 index 0000000..6e194ff --- /dev/null +++ b/other/pages/dispatch/dispatch.json @@ -0,0 +1,10 @@ +{ + "usingComponents": { + "van-search": "@vant/weapp/search/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index", + "van-cell": "@vant/weapp/cell/index", + "van-cell-group": "@vant/weapp/cell-group/index" + }, + "navigationBarTitleText": "派工" +} \ No newline at end of file diff --git a/other/pages/dispatch/dispatch.wxml b/other/pages/dispatch/dispatch.wxml new file mode 100644 index 0000000..c36fadf --- /dev/null +++ b/other/pages/dispatch/dispatch.wxml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + 姓名 + 待检验单 + 待检验电站 + 待整改电站 + 操作 + + + + + + + {{item.name}} + {{item.waitCount}} + {{item.waitEntryCount}} + + + + + + + + + + + + + 返回 + 提交 + diff --git a/other/pages/dispatch/dispatch.wxss b/other/pages/dispatch/dispatch.wxss new file mode 100644 index 0000000..3810f2f --- /dev/null +++ b/other/pages/dispatch/dispatch.wxss @@ -0,0 +1,42 @@ +.search { + --search-background-color: #ffffff; + --search-padding: 0; + width: 750rpx; + height: 110rpx; + background-color: #ffffff; + position: fixed; + z-index: 100; + left: 0; + top: 0; +} +.search .van-search { + background-color: transparent !important; + padding: 0 !important; +} +.search .van-search__content { + padding: 0 !important; +} +.search .van-cell { + /* width: 600rpx; */ + border-radius: 50rpx; + border: 1px solid #333; +} +.search .icon-search { + width: 40rpx; + height: 40rpx; + margin-right: 10rpx; + margin-left: 20rpx; +} +.footer{display: flex; align-items: center; position:fixed; left: 0; bottom: 0; right: 0; background-color: #fff; width: 100%;text-align: center; line-height: 80rpx; font-size: 30rpx; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);} +.footer .long{color: #fff; background-color: #333;} + +.table-head{display: flex; align-items: center; text-align: center; font-size: 28rpx; font-weight: 600; background-color: #fff; line-height: 100rpx;} +.table-head view{flex: 1;} +.table-body{padding-bottom: 150rpx;} +.table-body .list{display: flex; align-items: center; text-align: center; font-size: 26rpx; background-color: #fff; padding: 30rpx 0;} +.table-body .list>view{flex: 1; color: #333;} +.table-body .van-cell {padding: 0 !important; line-height: unset !important;} +.table-body .van-cell:after{display: none;} +.table-body van-cell:nth-child(2n + 1) .list{background-color: #f6fafc;} +.table-body .list .van-radio{display: inline-block;} +.table-body .list.on>view{color: #333;} \ No newline at end of file diff --git a/other/pages/infoList/infoList.js b/other/pages/infoList/infoList.js new file mode 100644 index 0000000..ac33532 --- /dev/null +++ b/other/pages/infoList/infoList.js @@ -0,0 +1,160 @@ +// pages/infoList/infoList.js +const { + qualityListData, + IMG_BASE_URL, +} = require("../../../api/api"); +const app = getApp() +const { routeLink } = require("../../../utils/route.js"); +Page({ + data: { + IMG_BASE_URL: IMG_BASE_URL, + statusBarHeight: app.globalData.statusBarHeight, //状态栏高度 + navHeight: app.globalData.navHeight, //导航栏高度 + keyWords: '', //关键字 + searchData: [], + pageNum: 1, //分页页面 + pageSize: 10, //分页条数 + loadEnd: false, //加载到最底部 + navTitle: '', + tabIndex: 0 + }, + onLoad(options) { + console.log('type',options.type) + this.setData({ + type: options.type, //存贮状态l + userType: wx.getStorageSync('userType'), + userId: wx.getStorageSync('userId'), + PTpermission: wx.getStorageSync('PTpermission'), + }) + + wx.setNavigationBarTitle({ + title: options.name, + }); + this.setData({ + navTitle: options.name + }); + }, + onShow() { + this.setData({ + pageNum:1, + }); + this.getList() + }, + //tab切换 + changeStatus(e){ + let type = e.currentTarget.dataset.index + this.setData({ + tabIndex: type, + pageNum: 1 + }) + this.getList() + }, + /** 下拉刷新 **/ + onPullDownRefresh(e) { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getList() + }, + /** 页面触底上拉刷新 **/ + onReachBottom(e) { + if (!this.data.loadEnd) { + this.getList() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 1500 + }) + } + }, + /** 获取电站列表 **/ + getList(e) { + let status = '1,2' + if(this.data.tabIndex == '0'){ + status = '1,2' //验收中 + }else if(this.data.tabIndex == '1'){ + status = '5' //已完成 + } + wx.showLoading({ + title: '加载中', + }) + qualityListData({ + userId: wx.getStorageSync('userId'), + smallCondition: this.data.searchData.length > 0 ? this.data.searchData + "" : "", + status: status, + page: this.data.pageNum, + limit: this.data.pageSize, + }).then((res) => { + wx.hideLoading() + wx.stopPullDownRefresh() + if (res.code == 200) { + this.data.loadEnd = res.data.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.rows = res.data + } else { + this.data.rows = this.data.rows.concat(res.data) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + this.setData({ + list: this.data.rows, + loadEnd: this.data.loadEnd, + }) + } else { + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }) + }, + + /** 搜索 **/ + keyWordsSearch(res) { + this.setData({ + searchData: [], + }) + const search = res.detail; //搜索内容 + this.setData({ + searchData: this.data.searchData.concat(search), + pageNum:1 + }) + wx.pageScrollTo({ + scrollTop: 0, + }) + this.getList() + }, + + + /** 复制 **/ + copy(e) { + const code = e.currentTarget.dataset.code; + wx.setClipboardData({ + data: code, + success(res) { + wx.showToast({ + title: '已复制', + icon: 'none' + }) + } + }) + }, + + /** 派工-按钮 **/ + bindDispatch(e){ + routeLink("/other/pages/dispatch/dispatch?projectId=" + e.currentTarget.dataset.projectid); + }, + + /** 抽检验收-按钮 **/ + bindAccept(e){ + routeLink("/other/pages/qualityAcceptList/qualityAcceptList?projectId=" + e.currentTarget.dataset.projectid); + }, + /** 查看-按钮 **/ + bindAcceptSee(e){ + routeLink("/other/pages/qualityAcceptDetail/qualityAcceptDetail?projectId=" + e.currentTarget.dataset.projectid); + }, +}) \ No newline at end of file diff --git a/other/pages/infoList/infoList.json b/other/pages/infoList/infoList.json new file mode 100644 index 0000000..db41c58 --- /dev/null +++ b/other/pages/infoList/infoList.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "van-search": "@vant/weapp/search/index", + "van-empty": "@vant/weapp/empty/index" + }, + "navigationBarTitleText": "质量验收", + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/other/pages/infoList/infoList.wxml b/other/pages/infoList/infoList.wxml new file mode 100644 index 0000000..ae7b2e1 --- /dev/null +++ b/other/pages/infoList/infoList.wxml @@ -0,0 +1,85 @@ + + + + + 验收中 + + + + 已完成 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{item.trader_name}} + + + + + 质检巡检单号:{{item.number}} + + + + + + {{item.region_province}}{{item.region_city}}{{item.region_area}}({{item.total_count}}/{{item.sample_count}}) + + + + + 质检员:{{item.quality_emp_name}} 已质检:{{item.finish_count}} + + + + + + + + 派工 + + + + 验收 + + + + 查看 + + + + + + + + + + + + + \ No newline at end of file diff --git a/other/pages/infoList/infoList.wxss b/other/pages/infoList/infoList.wxss new file mode 100644 index 0000000..c0130c0 --- /dev/null +++ b/other/pages/infoList/infoList.wxss @@ -0,0 +1,236 @@ +/* pages/infoList/infoList.wxss */ +page { + background-color: #f2f2f2; +} +/* vant-search css start */ +.search { + --search-background-color: #ffffff; + --search-padding: 0; + width: 750rpx; + height: 110rpx; + background-color: #ffffff; + position: fixed; + z-index: 100; + left: 0; + top: 0; +} +.content-tab ~ .search{top: 90rpx;} +.content-tab { + width: 750rpx; + height: 90rpx; + display: flex; + flex-direction: row; + background-color: #ffffff; + font-size: 28rpx; + position: fixed; + z-index: 100; + left: 0; +} + +.content-tab-item { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.content-tab-item-select { + position: relative; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: #333333; + font-weight: bold; +} + +.content-tab-item-select-tab { + position: absolute; + bottom: 0; + margin-bottom: 10rpx; + width: 30rpx; + height: 5rpx; + background-color: #333333; + border-radius: 5rpx; +} +.van-search { + background-color: transparent !important; +} +.van-cell { + width: 600rpx; + border-radius: 50rpx; + border: 1px solid #333333; +} +.icon-search { + width: 40rpx; + height: 40rpx; + margin-right: 10rpx; + margin-left: 20rpx; +} + +.van-search__action--hover { + background-color: transparent !important; +} + +.content { + width: 750rpx; + font-size: 28rpx; + margin-top: 20rpx; +} + +.content-title { + position: relative; + margin: 0rpx 20rpx 5rpx 20rpx; + padding: 10rpx; + border-radius: 20rpx; + background-color: #ffffff; +} + + +.content-title-text { + margin-left: 20rpx; +} + +.content-title-agent-name { + margin-top: 5rpx; width: 560rpx; +} + +.content-list-type-img { + height: 46rpx; + position: absolute; + right: -10rpx; +} + +.content-list { + margin: 0rpx 20rpx 0rpx 20rpx; + padding: 10rpx; + border-radius: 20rpx; + background-color: #ffffff; position: relative; +} + +.content-list-num { + display: flex; + flex-direction: row; + align-items: center; +} + +.content-list-num-img { + width: 25rpx; + height: 25rpx; + margin-left: 10rpx; +} + +.content-list-info { + margin: 20rpx 20rpx 0rpx 20rpx; + border-radius: 10rpx; + padding: 20rpx 0rpx 20rpx 0rpx; + background-color: #f5f6fa; +} + +.content-list-info-top { + display: flex; + flex-direction: row; +} + +.content-list-info-top-img { + width: 25rpx; + height: 25rpx; + margin-right: 10rpx; +} + +.content-list-info-top-name { + color: #333333; + margin-left: 20rpx; + display: flex; + align-items: center; +} + +.content-list-info-address { + display: flex; + flex-direction: row; + align-items: center; + margin-top: 10rpx; +} + +.content-list-info-address-img { + width: 20rpx; + height: 25rpx; + margin-left: 20rpx; + margin-right: 20rpx; +} + +.content-list-info-address-area { + margin-right: 20rpx; flex: 1; +} + +.content-function { + display: flex; + flex-direction: row; + font-weight: bold; + flex: 1; + margin-right: 10rpx; +} + + +.content-function-watch { + margin-right: 12rpx; + display: flex; + align-items: center; +} + +.content-function-img { + width: 50rpx; + height: 50rpx; +} + +.action { + height: 60rpx; + background-color: #333333; + line-height: 60rpx; + text-align: center; + color: white; + border-radius: 6rpx; + margin-right: 8rpx; padding: 0 10px; +} + +.actionNone { + width: 100rpx; + height: 60rpx; + background-color: #cccccc; + line-height: 60rpx; + text-align: center; + color: white; + border-radius: 6rpx; + margin-right: 8rpx; +} + + +.actionSign { + width: 120rpx; + height: 60rpx; + background-color: #333333; + line-height: 60rpx; + text-align: center; + color: white; + border-radius: 6rpx; + margin-right: 8rpx; +} + +.bottom-action { + display: flex; + align-items: center; + margin: 20rpx 10rpx 10rpx 10rpx; justify-content: flex-end; +} + +.content-none { + width: 750rpx; + height: 600rpx; + display: flex; + align-items: center; + justify-content: center; +} +.f24{font-size: 24rpx;} \ No newline at end of file diff --git a/other/pages/qualityAccept/qualityAccept.js b/other/pages/qualityAccept/qualityAccept.js new file mode 100644 index 0000000..af54f28 --- /dev/null +++ b/other/pages/qualityAccept/qualityAccept.js @@ -0,0 +1,419 @@ +const { + API_BASE_URL, + IMG_BASE_URL, + entryDetail, + getAllConditionList, + acceptItems,saveAcceptItem +} = require('../../../api/api') +Page({ + data: { + API_BASE_URL: API_BASE_URL, + IMG_BASE_URL: IMG_BASE_URL, + itemList: [], + tabIndex: 1, + detail:{},//详情信息 + formSetObj: {}, + rightCount: 0, + wrongCount: 0 + }, + onLoad(options) { + this.setData({ + id: options.id, + entryId:options.entryId, + }); + this.initData(); + }, + onShow() { + + }, + //切换TAB + changeTab(e){ + let type = e.currentTarget.dataset.index + this.setData({ + tabIndex: type + }) + }, + //验收结果-单选 + radioChange(e) { + let index = e.currentTarget.dataset.index; + let pindex = e.currentTarget.dataset.pindex; + let rightCount = 0 + let wrongCount = 0 + this.setData({ + [`listData[${pindex}].items[${index}].columns.result`]: e.detail.value + }) + let listData = JSON.parse(JSON.stringify(this.data.listData)); + setTimeout(()=>{ + listData.forEach(item=>{ + item.items.forEach(item2=>{ + if(item2.columns.type != '4'){//有选择项的才做统计 + if(item2.columns.result == '0'){//合格数量 + rightCount = rightCount+1 + }else if(item2.columns.result == '1'){//整改数量 + wrongCount = wrongCount+1 + } + } + }) + }) + this.setData({ + wrongCount, + rightCount + }) + },50) + }, + //文本输入 + descFun(e) { + let name = e.currentTarget.dataset.name; + let index = e.currentTarget.dataset.index; + let pindex = e.currentTarget.dataset.pindex; + let value = e.detail.value; + if(name =='result_desc'){ + // value = value.replace(/^(\-)*(\d+)\.(\d{2}).*$/, '$1$2.$3'); + // this.setData({ + // [`listData[${pindex}].items[${index}].columns.${name}`]: value + // }) + }else if(name =='special_desc'){// 只能输入大于0的整数 + // this.setData({ + // [`listData[${pindex}].items[${index}].columns.${name}`]: value + // }) + // if (value<1) { + // this.setData({ + // [`listData[${pindex}].items[${index}].columns.${name}`]: 1 + // }) + // } + }else{ + this.setData({ + [`listData[${pindex}].items[${index}].columns.${name}`]: e.detail.value + }) + } + // console.log(1212, pindex, index, this.data.listData) + }, + descBlurFun(e){ + let name = e.currentTarget.dataset.name; + let index = e.currentTarget.dataset.index; + let pindex = e.currentTarget.dataset.pindex; + let value = e.detail.value; + if(name =='special_desc'){// 只能输入大于0的整数 + if(value<1){ + value = 1 + }else if(!/^[1-9]\d*$/.test(value)) { + value = this.data.listData[pindex].items[index].columns.special_desc?this.data.listData[pindex].items[index].columns.special_desc: 1; // 重置为上次的值 + } + this.setData({ + [`listData[${pindex}].items[${index}].columns.${name}`]: value + }) + } + }, + // 将输入值的小数点替换为一个字符,确保只有2位小数 + descBlurflex2(e){ + let name = e.currentTarget.dataset.name; + let index = e.currentTarget.dataset.index; + let pindex = e.currentTarget.dataset.pindex; + let value = e.detail.value; + if(name =='special_desc'){// 只能输入大于0的整数 + value = value.replace(/^(\-)*(\d+)\.(\d{2}).*$/, '$1$2.$3'); + this.setData({ + [`listData[${pindex}].items[${index}].columns.${name}`]: value + }) + } + }, + + /** 数据 **/ + initData(){ + wx.showLoading({ + title: "加载中" + }); + //电站详情 + entryDetail({ + userId: wx.getStorageSync('userId'), + entryId: this.data.entryId + }).then(res=>{ + this.setData({ + detail: res, + }) + this.getFormSet(res.management) + }); + //获取字段 + acceptItems({ + detailId: this.data.id + }).then(res=>{ + if(res.code == 200){ + let list = res.data.itemList.map(item=>item.columns); + let rightCount = 0; + let wrongCount = 0; + list.forEach(item=>{ + item.items.forEach(item2=>{ + item2.columns.result = item2.columns.result?item2.columns.result:'0' //默认都选中 + item2.columns.imgPath = item2.columns.img_path ? item2.columns.img_path.split(",").map(itm => { return { name: itm, url: IMG_BASE_URL + itm}}) : [] + if(item2.columns.type != '4'){//有选择项的才做统计 + if(item2.columns.result == '0'){//合格数量 + rightCount = rightCount+1 + }else if(item2.columns.result == '1'){//整改数量 + wrongCount = wrongCount+1 + } + } + }) + }) + this.setData({ + listData: list, + wrongCount, + rightCount + // rightCount: res.data.countRecord.columns.rightCount, + // wrongCount: res.data.countRecord.columns.wrongCount + }) + } + wx.hideLoading(); + }); + }, + /** 获取自定义字段 */ + getFormSet(partner) { + //01:信息登记,02:踏勘设计,03:电站安装,04:电站并网,05 档案 + getAllConditionList({ + partner: partner, + }).then((res) => { + this.setData({ + formSetObj: res.data + }) + }) + }, + /** 上传图片 **/ + afteruploadPhotoRead(e) { + var that = this; + const choseType = Array.isArray(e.detail.file) ? (e.detail.file[0].choseType || undefined) : (e.detail.file.choseType || undefined); //camera相机 album相册 + const index = e.currentTarget.dataset.index + const pindex = e.currentTarget.dataset.pindex + console.log("上传后", this.data.listData, choseType, e); + if (Array.isArray(e.detail.file)) { //多张 + var count = 0; + this.afteruploadPhotoReadS(e, count) + return + } + const { + file + } = e.detail; + wx.showLoading({ + title: '上传中', + }) + wx.uploadFile({ + url: that.data.API_BASE_URL + 'common/weChat/uploadImage', + filePath: file.url, + name: 'file', + complete: function (res) { + console.log("上传图片", res) + wx.hideLoading() + if (res.statusCode == 200) { + wx.showToast({ + title: '选择成功', + icon: 'none', + }) + var item = { + url: "", + name: "", + } + item.url = file.url; + item.name = res.data; + that.data.listData[pindex].items[index].columns.imgPath.push(item) + that.setData({ + [`listData[${pindex}].items[${index}].columns.imgPath`]: that.data.listData[pindex].items[index].columns.imgPath + }) + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + /** 上传多张图片递归 **/ + afteruploadPhotoReadS(e, count) { + let ob = { + name: '', + url: '', + } + const index = e.currentTarget.dataset.index + const pindex = e.currentTarget.dataset.pindex + wx.showLoading({ + title: '加载第' + (count + 1) + '张照片中', + mask: true, + }) + const element = e.detail.file[count]; + var that = this; + wx.uploadFile({ + url: that.data.API_BASE_URL + 'common/weChat/uploadImage', + filePath: element.url, + name: 'file', + success(res) { + wx.hideLoading() + if (res.statusCode == 200) { + count = count + 1; + ob.name = res.data + ob.url = element.url + that.data.listData[pindex].items[index].columns.imgPath.push(ob) + that.setData({ + [`listData[${pindex}].items[${index}].columns.imgPath`]: that.data.listData[pindex].items[index].columns.imgPath + }) + if (count == e.detail.file.length) { + wx.showToast({ + title: '选择成功', + icon: 'none' + }) + } else { + that.afteruploadPhotoReadS(e, count) + } + } else { + wx.showToast({ + title: '选择失败', + icon: 'error' + }) + } + } + }) + }, + /** 删除图片 **/ + deleteImg(e) { + const cindex = e.currentTarget.dataset.index + const pindex = e.currentTarget.dataset.pindex + const index = e.detail.index //删除图片的下标 + this.data.listData[pindex].items[cindex].columns.imgPath.splice(index, 1); + this.setData({ + [`listData[${pindex}].items[${cindex}].columns.imgPath`]: this.data.listData[pindex].items[cindex].columns.imgPath + }) + }, + //打开pdf文件或者大图查看图片 + openDocument(res) { + let path = res.currentTarget.dataset.path + if (path) { + let suffix = path.substring(path.lastIndexOf('.') + 1) //获取文件后缀 + if (suffix == 'pdf') { + wx.showLoading({ + title: '加载中', + }) + wx.downloadFile({ + url: IMG_BASE_URL + path, + complete: function (res) { + wx.hideLoading() + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + showMenu: true, + success: function (res) {} + }) + } + }) + } else { + wx.previewImage({ + urls: [IMG_BASE_URL + path] // 需要预览的图片http链接列表 + }) + } + } + }, + //提交 + submitFrom(e){ + let type = e.currentTarget.dataset.type; + let listData = JSON.parse(JSON.stringify(this.data.listData)); + let itemList = [] + let isCheck = true + try{ + listData.forEach(item=>{ + item.items.forEach(item2=>{ + if(item2.columns.name != '其他' && item2.columns.name != '各路电压正常' && type == '1'){//提交时,除了标题是其他和各路电压正常,任意验收结果,验收图片都是必传 + if(item2.columns.imgPath.length == 0){ + wx.showModal({ + title: '', + content: item2.columns.name + ',验收照片不能为空', + showCancel: false, + complete: (res) => { + if (res.confirm) {} + } + }) + isCheck = false + throw Error() + }else if(item2.columns.result == '1' && item2.columns.test_remarks == ''){ + wx.showModal({ + title: '', + content: item2.columns.name + ',验收说明不能为空', + showCancel: false, + complete: (res) => { + if (res.cancel) {} + if (res.confirm) {} + } + }) + isCheck = false + throw Error() + } + }else if(item2.columns.name == '各路电压正常' && item2.columns.result == '1' && type == '1'){//提交时,各路电压正常验收结果不正常的情况下验收图片必传 + if(item2.columns.imgPath.length == 0){ + wx.showModal({ + title: '', + content: item2.columns.name + ',验收照片不能为空', + showCancel: false, + complete: (res) => { + if (res.cancel) {} + if (res.confirm) {} + } + }) + isCheck = false + throw Error() + } + } + let resultDesc = '' + if(item2.columns.result=='0' && item2.columns.type<4){ + resultDesc = item2.columns.result_right + }else if(item2.columns.result=='1'&& item2.columns.type<4){ + resultDesc = item2.columns.result_wrong + }else{ + resultDesc = item2.columns.result_desc + } + itemList.push({ + groupName: item.name, + itemName: item2.columns.name, + resultDesc: resultDesc, + result: item2.columns.result, + specialDesc: item2.columns.special_desc, + imgPath: item2.columns.imgPath.length>0?item2.columns.imgPath.map(itm => itm.name).join(",") : "", + testRemarks: item2.columns.test_remarks, + sort: item2.columns.sort, + }) + }) + }) + }catch(e) { + console.log(e) + } + if(!isCheck){ + return + } + console.log(666, itemList, isCheck) + // return + wx.showLoading({ + title: "提交中", + mask: true + }); + saveAcceptItem({ + detailId: this.data.id, + saveResult: type,//0 暂存 1提交 + items: itemList + }).then(res=>{ + if(res.code == 200){ + wx.showToast({ + title: '操作成功', + }) + setTimeout(()=>{ + wx.navigateBack() + },1500) + }else{ + wx.showModal({ + title: '', + content: res.errMsg, + showCancel: false, + complete: (res) => { + if (res.confirm) {} + } + }) + } + setTimeout(()=>{ + wx.hideLoading(); + },1500) + }); + } +}) \ No newline at end of file diff --git a/other/pages/qualityAccept/qualityAccept.json b/other/pages/qualityAccept/qualityAccept.json new file mode 100644 index 0000000..67bdcb8 --- /dev/null +++ b/other/pages/qualityAccept/qualityAccept.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "van-uploader": "@vant/weapp/uploader/index", + "userInfo": "../../components/userInfo/userInfo" + }, + "navigationBarTitleText": "验收" +} \ No newline at end of file diff --git a/other/pages/qualityAccept/qualityAccept.wxml b/other/pages/qualityAccept/qualityAccept.wxml new file mode 100644 index 0000000..1e42040 --- /dev/null +++ b/other/pages/qualityAccept/qualityAccept.wxml @@ -0,0 +1,336 @@ + + + + 检验反馈 + + + + 电站信息 + + + + + + + {{item.name}} + + {{childIndex+1}}、{{child.columns.name}} + + * + 验收结果 + + + + * + 验收结果 + + + + * + 测试阻值 + + + + * + * + 验收照片 + + + + * + * + 验收说明 + + + + + 上传凭证(最多可上传10张) + + + + + + + + 取消 + 提交 + \ No newline at end of file diff --git a/other/pages/unableAccept/unableAccept.wxss b/other/pages/unableAccept/unableAccept.wxss new file mode 100644 index 0000000..93df398 --- /dev/null +++ b/other/pages/unableAccept/unableAccept.wxss @@ -0,0 +1,65 @@ +/* other/pages/unableAccept/unableAccept.wxss */ +page { + background-color: #f2f2f2; +} + +.content { + padding-top: 1rpx; + padding-bottom: 1rpx; + width: 750rpx; + background-color: #ffffff; + font-size: 28rpx; +} + +.content-line { + width: 100%; + height: 2rpx; + background-color: #f2f2f2; +} + +.content-list { + margin: 20rpx; +} + +.content-title-item{ + width: 100%; + flex-shrink: 0; + margin-bottom: 20rpx; +} +.content-text-area{ width: 100% !important;} + +.buttom-margin { + width: 750rpx; + height: 200rpx; +} + +.from-submit-buttom { + position: fixed; + bottom: 0; + display: flex; + flex-direction: row; + width: 750rpx; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff; + z-index: 10; +} + +.from-submit-buttom-cancle { + width: 300rpx; + height: 80rpx; + background-color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} + +.from-submit-buttom-submit { + flex: 1; + height: 80rpx; + background-color: #333333; + color: #ffffff; + display: flex; + align-items: center; + justify-content: center; +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8792b17 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,66 @@ +{ + "name": "sunshine-applet-2", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "sunshine-applet-2", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@vant/weapp": "^1.11.1", + "tdesign-miniprogram": "^1.1.2", + "weapp-qrcode-canvas-2d": "^1.1.2" + } + }, + "node_modules/@vant/weapp": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@vant/weapp/-/weapp-1.11.1.tgz", + "integrity": "sha512-2QddSq3MsozbTBAgEmW1rhzsEJNWPF2VS427M5pOOn0a7/f6lW+tymwdTcOQCzQONavhFwBv6Lebbs/UjE3Yig==" + }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "node_modules/tdesign-miniprogram": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/tdesign-miniprogram/-/tdesign-miniprogram-1.1.2.tgz", + "integrity": "sha512-euEd88tvf9FOu/skqKW3HW7vMi/79FxWsDIoxgAwKOKZwpeWYfDJY+UOhepLjN1OsAFIT4CCpAhBbBHmtMfXiA==", + "dependencies": { + "dayjs": "^1.10.7" + } + }, + "node_modules/weapp-qrcode-canvas-2d": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/weapp-qrcode-canvas-2d/-/weapp-qrcode-canvas-2d-1.1.2.tgz", + "integrity": "sha512-HQef+xpZiiWDcq8aLZdXnVdNljoYsEWiEKiBYnAnfgqXTeYfC8ApzoB9pMI5mnPFbhtu5xCi8oId1g/86uUl8Q==" + } + }, + "dependencies": { + "@vant/weapp": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/@vant/weapp/-/weapp-1.11.1.tgz", + "integrity": "sha512-2QddSq3MsozbTBAgEmW1rhzsEJNWPF2VS427M5pOOn0a7/f6lW+tymwdTcOQCzQONavhFwBv6Lebbs/UjE3Yig==" + }, + "dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "tdesign-miniprogram": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/tdesign-miniprogram/-/tdesign-miniprogram-1.1.2.tgz", + "integrity": "sha512-euEd88tvf9FOu/skqKW3HW7vMi/79FxWsDIoxgAwKOKZwpeWYfDJY+UOhepLjN1OsAFIT4CCpAhBbBHmtMfXiA==", + "requires": { + "dayjs": "^1.10.7" + } + }, + "weapp-qrcode-canvas-2d": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/weapp-qrcode-canvas-2d/-/weapp-qrcode-canvas-2d-1.1.2.tgz", + "integrity": "sha512-HQef+xpZiiWDcq8aLZdXnVdNljoYsEWiEKiBYnAnfgqXTeYfC8ApzoB9pMI5mnPFbhtu5xCi8oId1g/86uUl8Q==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..78a7a2b --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "sunshine-applet-2", + "version": "1.0.0", + "description": "", + "main": "app.js", + "dependencies": { + "@vant/weapp": "^1.11.1", + "weapp-qrcode-canvas-2d": "^1.1.2" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "https://gitee.com/anhui-sifang-network/sunshine-applet-2.git" + }, + "author": "", + "license": "ISC" +} diff --git a/pages/appRecord/appRecord.js b/pages/appRecord/appRecord.js new file mode 100644 index 0000000..38e8539 --- /dev/null +++ b/pages/appRecord/appRecord.js @@ -0,0 +1,69 @@ +// pages/appRecord/appRecord.js +const {getOptList} = require('../../api/api'); +Page({ + + /** + * 页面的初始数据 + */ + data: { + entryId: '', + listData: [] + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // console.log(2221, options) + if(options.entryId){ + this.setData({ + entryId: options.entryId + }) + this.getList() + } + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, +//列表 + getList(){ + getOptList({ + entryId: this.data.entryId, + }).then(res => { + if (res.code == '200' && res.data) { + this.setData({ + listData: JSON.parse(res.data) + }) + } else { + wx.showToast({ + title: res, + icon: 'none', + }) + } + }) + }, + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/appRecord/appRecord.json b/pages/appRecord/appRecord.json new file mode 100644 index 0000000..4f952b1 --- /dev/null +++ b/pages/appRecord/appRecord.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "审批记录" +} \ No newline at end of file diff --git a/pages/appRecord/appRecord.wxml b/pages/appRecord/appRecord.wxml new file mode 100644 index 0000000..4c689d2 --- /dev/null +++ b/pages/appRecord/appRecord.wxml @@ -0,0 +1,48 @@ + + + + + + + 档案审核 + 提交踏勘 + 提交档案 + 设计审核 + 提交完工 + 提交并网 + 并网验收 + 安装验收 + 设计自审 + 安装自审 + 设计暂存 + 提交自审 + 驳回勘测 + 提交设计 + + 进件审核 + 进件审核 + 资方预审 + 投放审核 + 建档补充 + + 提交变更 + 变更审核 + 取消变更 + + + + + {{item.operator}} + {{item.operateTime}} + + + + + + + {{item.content}} + + + + +暂无数据 \ No newline at end of file diff --git a/pages/appRecord/appRecord.wxss b/pages/appRecord/appRecord.wxss new file mode 100644 index 0000000..4b4935a --- /dev/null +++ b/pages/appRecord/appRecord.wxss @@ -0,0 +1,16 @@ +/* pages/appRecord/appRecord.wxss */ +.record-box{ padding: 30rpx 25rpx; border-top: #f0f0f0 20rpx solid; background-color: #FFF; box-sizing: border-box; min-height: 100vh; position: relative;} +.line-bg{border-left: dashed 1px #cccccc; position: absolute; left: 65rpx; top: 40rpx; bottom: 0; z-index: 0; } +.record-list{display: flex; justify-content: space-between; position: relative; z-index: 1; margin-bottom: 40rpx;} +.r-left{width: 80rpx; text-align: center;} +.r-left text{width: 84rpx; height: 80rpx; line-height: 30rpx; background-color: #efefef; border-radius: 6px; display: block; font-size: 24rpx; padding: 10rpx 17rpx; box-sizing: border-box;} +.r-right{ flex: 1; margin-left: 35rpx; font-size: 24rpx;} +.right-top{ display: flex; min-height: 80rpx; align-items: center; flex-wrap: wrap;} +.name-date{width:100%; display: flex; justify-content: space-between; font-size: 26rpx;} +.name-date view:last-child{color: #999999; font-size: 24rpx; white-space: nowrap;} +.r-content{color: #666666; margin-top: 10rpx;} +.status-img{ width: 130rpx; height: 36rpx; margin-top: 10rpx;} +.list-box .record-list:first-child .r-left text{background-color: #e5f4fc; border: solid 1px #0a6597; color: #0a6597;} +.list-box .record-list:first-child .name-date view:last-child { color: #0a6597;} +.list-box .record-list:last-child .r-left text{background-color: #FFF; border: solid 1px #fff; } +.no-msg{text-align: center; font-size: 28rpx; margin-top: 100rpx; color: #666;} \ No newline at end of file diff --git a/pages/forgotPassword/forgotPassword.js b/pages/forgotPassword/forgotPassword.js new file mode 100644 index 0000000..38860ff --- /dev/null +++ b/pages/forgotPassword/forgotPassword.js @@ -0,0 +1,167 @@ +// pages/forgotPassword/forgotPassword.js +const api = require('../../api/api'); +Page({ + + /** + * 页面的初始数据 + */ + data: { + num: 60, + sendTime: '获取短信验证码', + smsFlag: false + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + + }, + + + /** + * + * 发送验证码 + * + * @param {*} e + */ + getCode(e) { + const that = this + + if (that.data.smsFlag) { + wx.showToast({ + title: that.data.sendTime, + icon: 'none' + }) + return + } + + var reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; + if (!that.data.mobile || !reg_tel.test(that.data.mobile)) { + wx.showToast({ + title: '请输入正确手机号码', + icon: 'none', + mask: true, + }) + } else { + api.sendMsg({ + mobile: that.data.mobile + }).then(res => { + if (res.code == 200) { + that.inter() + that.setData({ + sessionId: res.sessionId + }) + wx.showToast({ + title: '已发送', + icon: 'none', + }) + } else { + wx.showToast({ + title: res.msg, + icon: 'none' + }) + } + }).catch(err => { + + }) + } + }, + + + /** + * + * 修改密码 + * @param {*} e + */ + formSubmit(e) { + const that = this + const data = e.detail.value + data.sessionId = that.data.sessionId + console.log("修改密码", data) + if (!data.mobile) { + wx.showToast({ + title: '请输入手机号码', + icon: 'none', + }) + } else if (!data.confirmCode) { + wx.showToast({ + title: '请输入短信验证码', + icon: 'none', + }) + } else if (!data.password) { + wx.showToast({ + title: '请输入新密码', + icon: 'none', + }) + } else if (!data.morePassword) { + wx.showToast({ + title: '请再次输入新密码', + icon: 'none', + }) + } else if (data.morePassword !== data.password) { + wx.showToast({ + title: '两次密码输入不一致', + icon: 'none', + }) + } else { + wx.showLoading({ + title: '提交中', + }) + api.checkConfirmCode(data, this.data.sessionId).then(res => { + wx.hideLoading() + if (res == 'ok') { + wx.showToast({ + title: '修改成功!', + mask: true, + }) + setInterval(function () { + wx.navigateBack() + }, 1000) + } else { + wx.showToast({ + title: res, + icon: 'none', + }) + } + }).catch(err => { + + }) + } + }, + + + inter() { + const that = this + const inter = setInterval(function () { + that.setData({ + smsFlag: true, + sendTime: that.data.num + 's后重发', + num: that.data.num - 1 + }); + if (that.data.num < 0) { + clearInterval(inter) + that.setData({ + smsFlag: false, + sendTime: '点击重新获取', + num: 60 + }); + } + }, 1000) + }, + + + + /** + * + * 输入手机号码 + * + * @param {*} e + */ + mobile(e) { + this.setData({ + mobile: e.detail.value + }) + }, + +}) \ No newline at end of file diff --git a/pages/forgotPassword/forgotPassword.json b/pages/forgotPassword/forgotPassword.json new file mode 100644 index 0000000..70df37f --- /dev/null +++ b/pages/forgotPassword/forgotPassword.json @@ -0,0 +1,6 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "忘记密码", + "navigationBarBackgroundColor": "#0A6597", + "navigationBarTextStyle": "white" +} \ No newline at end of file diff --git a/pages/forgotPassword/forgotPassword.wxml b/pages/forgotPassword/forgotPassword.wxml new file mode 100644 index 0000000..2743d53 --- /dev/null +++ b/pages/forgotPassword/forgotPassword.wxml @@ -0,0 +1,26 @@ + + + +

+ + + *手机号: + + + + *短信验证码: + + {{sendTime}} + + + *输入新密码: + + + + *确认新密码: + + + + +
+ \ No newline at end of file diff --git a/pages/forgotPassword/forgotPassword.wxss b/pages/forgotPassword/forgotPassword.wxss new file mode 100644 index 0000000..45bacd2 --- /dev/null +++ b/pages/forgotPassword/forgotPassword.wxss @@ -0,0 +1,81 @@ +/* pages/forgotPassword/forgotPassword.wxss */ + +.form input { + display: inline-block; + height: 100%; + font-size: 30rpx; + flex: 1; + padding-left: 20rpx; + color: #333333; +} + +button.login { + width: 635rpx !important; + height: 90rpx; + background: #0A6597; + margin-top: 110rpx; + color: #ffffff; + font-weight: normal; + padding: 0; + line-height: 90rpx; + font-size: 30rpx; + border-radius: 50rpx; +} + +button.cancel { + width: 635rpx !important; + height: 90rpx; + background-color: #eee; + margin-top: 40rpx; + color: #ffffff; + font-weight: normal; + padding: 0; + line-height: 90rpx; + font-size: 36rpx; + border-radius: 50rpx; +} + +.forgetBox>view { + display: flex; + justify-content: space-between; + margin-bottom: 20rpx; + padding: 0 30rpx; +} + +.forgetBox text { + width: 180rpx; + text-align: right; + line-height: 80rpx; + font-size: 26rpx; + color: #333333; +} + +.forgetBox text.red { + color: red; +} + +.forgetBox input { + flex: 1; + border: 1rpx solid #dddddd; + height: 80rpx; + padding-left: 15rpx; + font-size: 28rpx; +} + + +.getCode { + background: #0A6597; + width: 240rpx; + height: 80rpx; + margin-left: 20rpx; + border-radius: 20rpx; + display: flex; + align-items: center; + justify-content: center; + font-size: 28rpx; + color: #ffffff; +} + +.getCode text { + color: #ffffff; +} \ No newline at end of file diff --git a/pages/home/components/title/title.js b/pages/home/components/title/title.js new file mode 100644 index 0000000..31d9e86 --- /dev/null +++ b/pages/home/components/title/title.js @@ -0,0 +1,23 @@ +// pages/home/components/title.js +Component({ + /** + * 组件的属性列表 + */ + properties: { + titleName: String, + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + + /** + * 组件的方法列表 + */ + methods: { + + } +}) \ No newline at end of file diff --git a/pages/home/components/title/title.json b/pages/home/components/title/title.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/pages/home/components/title/title.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/pages/home/components/title/title.wxml b/pages/home/components/title/title.wxml new file mode 100644 index 0000000..5c46234 --- /dev/null +++ b/pages/home/components/title/title.wxml @@ -0,0 +1,5 @@ + + + + {{titleName}} + \ No newline at end of file diff --git a/pages/home/components/title/title.wxss b/pages/home/components/title/title.wxss new file mode 100644 index 0000000..fbe5178 --- /dev/null +++ b/pages/home/components/title/title.wxss @@ -0,0 +1,22 @@ +/* pages/home/components/title.wxss */ + +.content-title-box { + margin-top: 15rpx; + display: flex; + flex-direction: row; + align-items: center; +} + +.content-title-img { + width: 8rpx; + height: 30rpx; + background-color: #00967b; + margin-left: 14rpx; + border-radius: 5rpx; +} + +.content-title-text { + margin-left: 15rpx; + font-size: 26rpx; + font-weight: bold; +} \ No newline at end of file diff --git a/pages/home/components/titleItem/titleItem.js b/pages/home/components/titleItem/titleItem.js new file mode 100644 index 0000000..eb9ed09 --- /dev/null +++ b/pages/home/components/titleItem/titleItem.js @@ -0,0 +1,121 @@ +// pages/home/components/titleItem/titleItem.js +const { + checkPermission +} = require("../../../../utils/permission"); +Component({ + /** + * 组件的属性列表 + */ + properties: { + capitalList:Array, + capitalName:String, + capitalId:String, + titleList: Array, + userType:String, + permission:Object, + traderName: String + }, + + /** + * 组件的初始数据 + */ + data: { + + }, + ready(){ + }, + /** + * 组件的方法列表 + */ + methods: { + /*选择资方*/ + bindCapitalList(e){ + this.setData({ + capitalName: this.data.capitalList[e.detail.value].name, + capitalId:this.data.capitalList[e.detail.value].id + }) + wx.setStorageSync('capitalId', this.data.capitalList[e.detail.value].id) + wx.setStorageSync('capitalName', this.data.capitalList[e.detail.value].name) + this.triggerEvent('homeStatistics','我是传递回去的参数'); + }, + /** + * + * 点击子项 + * + * @param {*} e 1:type类型详见home页面 + */ + async _click(e) { + //检验权限 + let perm = e.currentTarget.dataset.perm; + if(!(await checkPermission(perm))){ + return; + } + this.triggerEvent('clickEvent', e.currentTarget.dataset.type) //组件通信 + if(e.currentTarget.dataset.type == 30){//质量验收 + wx.navigateTo({ + url: '/other/pages/infoList/infoList?type=' + e.currentTarget.dataset.type + "&name=" + e.currentTarget.dataset.name, + }) + return + }else if(e.currentTarget.dataset.type == 31){//电站整改 + wx.navigateTo({ + url: '/other/pages/rectification/rectification', + }) + return + } + wx.navigateTo({ + url: '/home/pages/infoRegistration/infoRegistration?type=' + e.currentTarget.dataset.type + "&name=" + e.currentTarget.dataset.name, + }) + }, + +/** + * + * 选择代理商 + * + * @param {*} e + */ + async changeTrader(e) { + wx.navigateTo({ + url: '/pages/traderList/traderList?type=' + e.currentTarget.dataset.type + "&name=" + e.currentTarget.dataset.name, + }) + }, + + /** + * + * 新增bt业务 + * + * @param {*} e 1.bt业务与普通业务信息录入时为两套代码 + */ + async _BTBusiness(e) { + // wx.showLoading({ + // title: "加载中" + // }) + // etEmpCountByRole({ + // traderId: wx.getStorageSync('userId') + // }).then((res) => { + // wx.hideLoading() + // if (res.code == 200) { + // if (res.data >= 8) { + // wx.navigateTo({ + // url: '/home/pages/entryInfoBT/entryInfoBT', + // }) + // } else { + // wx.showToast({ + // title: '施工团队人员不可低于8人!', + // icon:'none' + // }) + // } + // } + // }) + + //检验权限 + let perm = e.currentTarget.dataset.perm; + if(!(await checkPermission(perm))){ + return; + } + wx.navigateTo({ + url: '/home/pages/entryInfoBT/entryInfoBT?type=' + 0, + }) + } + + } +}) \ No newline at end of file diff --git a/pages/home/components/titleItem/titleItem.json b/pages/home/components/titleItem/titleItem.json new file mode 100644 index 0000000..4f3d02a --- /dev/null +++ b/pages/home/components/titleItem/titleItem.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "title": "../title/title" + } +} \ No newline at end of file diff --git a/pages/home/components/titleItem/titleItem.wxml b/pages/home/components/titleItem/titleItem.wxml new file mode 100644 index 0000000..aa31432 --- /dev/null +++ b/pages/home/components/titleItem/titleItem.wxml @@ -0,0 +1,99 @@ + + + + + + 投资方 + + {{capitalName}} + + + 请选择 + + + + + + + + + + 新增客户 + + + + + + {{capitalName}} + 代理商: + {{traderName ? traderName : '所有代理商'}} + + + + + + + + + + + + {{itemName.redpointNum}} + + {{itemName.title}} + + + + + + + + + + + + + {{itemName.redpointNum}} + + {{itemName.title}} + + + + + + + + + + + + + {{itemName.redpointNum}} + + {{itemName.title}} + + + + + + + + + + + + + + + 质量验收 + + + + + + + 电站整改 + + + + \ No newline at end of file diff --git a/pages/home/components/titleItem/titleItem.wxss b/pages/home/components/titleItem/titleItem.wxss new file mode 100644 index 0000000..9287f6d --- /dev/null +++ b/pages/home/components/titleItem/titleItem.wxss @@ -0,0 +1,120 @@ +/* pages/home/components/titleItem/titleItem.wxss */ +.trader-list{width: 690rpx; height: 70rpx; display: flex; align-items: center; margin: 20rpx 0; padding: 0 20rpx; justify-content: space-between; background-color: #dfecf6; border-radius: 35px;} +.trader-list .left-name{ flex: 1; color: #0a6597; font-size: 26rpx; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;} +.trader-list .right-bt{width: 85rpx; height: 50rpx;} +.content-page { + padding-bottom: 20rpx; + display: flex; + flex-direction: column; + align-items: center; + background-color: #fff; +} + +.content-item-top { + width: 750rpx; + background-color: white; + display: flex; + align-items: center; + justify-content: center; +} + +.content-item { + width: 750rpx; + background-color: white; + padding-top: 1rpx; + padding-bottom: 1rpx; +} + +.content { + width: 100%; + display: flex; + flex-wrap: wrap; +} + +.content-item-box { + width: 25%; + display: flex; + flex-shrink: 0; + flex-direction: column; + align-items: center; +} + +.comtent-item-img-box { + position: relative; + display: flex; + align-items: center; + justify-content: center; + margin-top: 15rpx; +} + +.content-item-img { + width: 100rpx; + height: 100rpx; +} + +.content-item-text { + font-size: 24rpx; + color: #4f4f4f; +} + + +.content-item-red-dot { + position: absolute; + top: 10rpx; + right: 10rpx; + min-width: 30rpx; + height: 30rpx; + background-color: #c51c18; + color: #ffffff; + font-weight: bold; + border-radius: 50rpx; + font-size: 18rpx; + display: flex; + align-items: center; + justify-content: center; +} + +.content-BT-button-box { + display: flex; + align-items: center; + justify-content: center; +} + +.content-BT-button { + width: 240rpx; + height: 65rpx; + margin-top: 20rpx; + font-size: 26rpx; + border-radius: 32rpx; + display: flex; + align-items: center; + justify-content: center; + color: #ffffff; + background-image: linear-gradient(270deg, + #00967b 0%, + #0a6597 100%); + background: linear-gradient(-45deg, + #0a6597, #00967b, #0a6597, #00967b); + background-size: 600% 600%; + animation: btButtonAnimation 5s alternate infinite; +} + +@keyframes btButtonAnimation { + 0% { + background-position: 0% 50%; + } + + 50% { + background-position: 100% 50%; + } + + 100% { + background-position: 0% 50%; + } +} + +.content-picker {display: flex; flex-direction: row; width: 750rpx; padding-left:20rpx; height: 90rpx; align-items: center; font-size: 28rpx; background-color: #dfecf6; color: #0a6597;} +.content-title-item{width: 190rpx; flex-shrink: 0; margin-right: 20rpx;} +.content-text { flex: 1; font-size: 28rpx;} +.content-text-gray { color: gray;} +.content-img-right { width: 50rpx; height: 50rpx;} \ No newline at end of file diff --git a/pages/home/home.js b/pages/home/home.js new file mode 100644 index 0000000..81492b6 --- /dev/null +++ b/pages/home/home.js @@ -0,0 +1,317 @@ +// pages/home/home.js +const { + getHomeStatistics, + getCapital +} = require("../../api/api") +const app = getApp() +Page({ + data: { + titleList:[], + userType:'', + capitalList:[],//资方列表 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + // userType: wx.getStorageSync('userType') == "TRADER" ? 0 : 1, //0:代理商 1:平台 + userType: wx.getStorageSync('userType'), + permission: wx.getStorageSync('permission') + }) + var titleList = [{ + title: "信息采集", + perm:'HYXCX_XXCJ_T', + titleColumns: [{ + title: "客户管理", + titleImages: "/img/plan-4.png", + titleType: 1, + redpointNum: 0, + perm:'HYXCX_XXDJ_T' + }, { + title: "信息授权", + titleImages: "/img/plan-4.png", + titleType: 2, + redpointNum: 0, + perm:'HYXCX_XXSQ_T' + }, { + title: "开二类卡", + titleImages: "/img/plan-4.png", + titleType: 4, + redpointNum: 0, + perm:'HYXCX_KELK_T' + }, { + title: "农户合同", + titleImages: "/img/plan-4.png", + titleType: 5, + redpointNum: 0, + perm:'HYXCX_NHHT_T' + }] + }, + { + title: "勘测设计", + perm:'HYXCX_KCSJ_T', + titleColumns: [{ + title: "勘测设计", + titleImages: "/img/plan-4.png", + titleType: 3, + redpointNum: 0, + perm:'HYXCX_DZCK_T' + }, { + title: "设计审核", + titleImages: "/img/plan-2.png", + titleType: 6, + redpointNum: 0, + perm:'HYXCX_SJSH_T' + },{ + title: "电站档案", + titleImages: "/img/home_dzda.png", + titleType: 17, + redpointNum: 0, + perm:'HYXCX_DZDA_T' + },{ + title: "档案审核", + titleImages: "/img/home_dash.png", + titleType: 18, + redpointNum: 0, + perm:'HYXCX_DASH_T' + } + ] + }, + { + title: "安装阶段", + perm:'HYXCX_AZJD_T', + titleColumns: [ + // { + // title: "物料下单", + // titleImages: "/img/fix-1.png", + // titleType: 7, + // redpointNum: 0, + // perm:'HYXCX_WLXD_T' + // }, + { + title: "电站安装", + titleImages: "/img/fix-2.png", + titleType: 8, + redpointNum: 0, + perm:'HYXCX_DZAZ_T' + }, + { + title: "接入逆变器", + titleImages: "/img/jrnbq.png", + titleType: 20, + redpointNum: 0, + perm:'HYXCX_JRNBQ_T' + }, + { + title: "安装验收", + titleImages: "/img/interconnection-2.png", + titleType: 9, + redpointNum: 0, + perm:'HYXCX_AZYS_T' + } + ] + }, { + title: "并网阶段", + perm:'HYXCX_BWJD_T', + titleColumns: [ + { + title: "电站并网", + titleImages: "/img/fix-4.png", + titleType: 16, + redpointNum: 0, + perm:'HYXCX_DZBW_T' + }, + { + title: "国网授权", + titleImages: "/img/home_gwsq.png", + titleType: 19, + redpointNum: 0, + perm:'HYXCX_GWSQ_T' + }, + // { + // title: "合同签署", + // titleImages: "/img/interconnection-3.png", + // titleType: 11, + // redpointNum: 0, + // perm:'HYXCX_HTQS_T' + // }, + { + title: "并网验收", + titleImages: "/img/fix-3.png", + titleType: 12, + redpointNum: 0, + perm:'HYXCX_BWYS_T' + }, + // { + // title: "项目存档", + // titleImages: "/img/over-1.png", + // titleType: 13, + // redpointNum: 0, + // perm:'HYXCX_XMCD_T' + // }, + { + title: "项目查询", + titleImages: "/img/over-2.png", + titleType: 14, + redpointNum: -1, + perm:'HYXCX_XMCX_T' + }, + // { + // title: "电站整改", + // titleImages: "/img/plan-3.png", + // titleType: 15, + // redpointNum: 0, + // perm:'HYXCX_DZZG_T' + // }, + ] + }, + // { + // title: "其它", + // perm:'HYXCX_BWJD_T', + // titleColumns: [{ + // title: "待办任务", + // titleImages: "/img/fix-4.png", + // titleType: 16, + // redpointNum: 0, + // perm:'HYXCX_DZBW_T' + // }, + // { + // title: "消息通知", + // titleImages: "/img/fix-3.png", + // titleType: 12, + // redpointNum: 0, + // perm:'HYXCX_BWYS_T' + // }, + // { + // title: "竣工验收", + // titleImages: "/img/over-2.png", + // titleType: 14, + // redpointNum: -1, + // perm:'HYXCX_XMCX_T' + // }, { + // title: "电站整改", + // titleImages: "/img/plan-3.png", + // titleType: 15, + // redpointNum: 0, + // perm:'HYXCX_DZZG_T' + // } + // ] + // } + ] + this.setData({ + titleList: titleList + }) + }, + onShow(){ + this.setData({ + traderName: wx.getStorageSync('traderName'), + capitalName:wx.getStorageSync('capitalName'), + capitalId:wx.getStorageSync('capitalId') + }) + if(this.data.userType == 'PLATFORM_EMP'){ + this.getHomeStatistics() + }else{ + this.getCapitalList(()=>{ + this.getHomeStatistics() + }) + } + //自定义tab图标选中设置 + if (typeof this.getTabBar === 'function' && this.getTabBar()) { + this.getTabBar().setData({ + selected:0, + }) + } + }, + /** + * + * 获取投资方 + * + * @param {*} e + */ + getCapitalList(callback) { + callback = callback || function(){}; + getCapital({ + traderId: wx.getStorageSync('traderId'), + }).then((res) => { + if(res.code == 200){ + this.setData({ + capitalList: res.data + }) + //为空默认显示第一个资方 + if(!wx.getStorageSync('capitalId')){ + if(res.data){ + wx.setStorageSync('capitalId', res.data[0].id) + wx.setStorageSync('capitalName', res.data[0].name) + this.setData({ + capitalName:res.data[0].name, + capitalId:res.data[0].id + }); + } + } + } + callback(); + }) + }, + + /** + * + * 下拉刷新 + * + * @param {*} e + */ + onPullDownRefresh(e) { + this.getHomeStatistics() + }, + + /** + * + * 获取首页统计 + * + * @param {*} e + */ + getHomeStatistics(e) { + getHomeStatistics({ + userId: wx.getStorageSync('userId'), + traderId: wx.getStorageSync('userType')=='PLATFORM_EMP'?wx.getStorageSync('traderId'):'', + partner: wx.getStorageSync('capitalId'), + }).then((res) => { + if (res.code == 200) { + wx.stopPullDownRefresh() + var data = JSON.parse(res.data) + + this.setData({ + //信息采集 + [`titleList[0].titleColumns[0].redpointNum`]: data.columns.xxdjTotal < 100 ? data.columns.xxdjTotal : '99+', //客户管理 + [`titleList[0].titleColumns[1].redpointNum`]: data.columns.xxsqTotal < 100 ? data.columns.xxsqTotal : '99+', //信息授权 + [`titleList[0].titleColumns[2].redpointNum`]: data.columns.erlkTotal < 100 ? data.columns.erlkTotal : '99+', //二类卡 + [`titleList[0].titleColumns[3].redpointNum`]: data.columns.nhhtTotal < 100 ? data.columns.nhhtTotal : '99+', //农户合同 + + //勘测设计 + [`titleList[1].titleColumns[0].redpointNum`]: data.columns.dzckTotal < 100 ? data.columns.dzckTotal : '99+', //电站初勘 + [`titleList[1].titleColumns[1].redpointNum`]: data.columns.sjshTotal < 100 ? data.columns.sjshTotal : '99+', //设计审核 + [`titleList[1].titleColumns[2].redpointNum`]: data.columns.dzdaTotal < 100 ? data.columns.dzdaTotal : '99+', //电站档案 + [`titleList[1].titleColumns[3].redpointNum`]: data.columns.dashTotal < 100 ? data.columns.dashTotal : '99+', //档案审核 + + //安装阶段 + // [`titleList[2].titleColumns[0].redpointNum`]: data.columns.wlxdTotal < 100 ? data.columns.wlxdTotal : '99+', + [`titleList[2].titleColumns[0].redpointNum`]: data.columns.dzazTotal < 100 ? data.columns.dzazTotal : '99+', //电站安装 + [`titleList[2].titleColumns[1].redpointNum`]: data.columns.nbqNum < 100 ? data.columns.nbqNum : '99+', //接入逆变器 + [`titleList[2].titleColumns[2].redpointNum`]: data.columns.azysTotal < 100 ? data.columns.azysTotal : '99+', //安装验收 + + //并网阶段 + [`titleList[3].titleColumns[0].redpointNum`]: data.columns.dzbwTotal < 100 ? data.columns.dzbwTotal : '99+', //电站并网 + [`titleList[3].titleColumns[1].redpointNum`]: data.columns.ifsgsNum < 100 ? data.columns.ifsgsNum : '99+', //国网授权 + [`titleList[3].titleColumns[2].redpointNum`]: data.columns.bwysTotal < 100 ? data.columns.bwysTotal : '99+', //并网验收 + [`titleList[3].titleColumns[4].redpointNum`]: data.columns.dzzgTotal < 100 ? data.columns.dzzgTotal : '99+', //项目查询 + + }) + + } + }) + }, + + + +}) \ No newline at end of file diff --git a/pages/home/home.json b/pages/home/home.json new file mode 100644 index 0000000..662bbdd --- /dev/null +++ b/pages/home/home.json @@ -0,0 +1,7 @@ +{ + "usingComponents": { + "titleItem": "../home/components/titleItem/titleItem" + }, + "enablePullDownRefresh": true, + "backgroundTextStyle": "dark" +} \ No newline at end of file diff --git a/pages/home/home.wxml b/pages/home/home.wxml new file mode 100644 index 0000000..7caf126 --- /dev/null +++ b/pages/home/home.wxml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pages/home/home.wxss b/pages/home/home.wxss new file mode 100644 index 0000000..63b8d24 --- /dev/null +++ b/pages/home/home.wxss @@ -0,0 +1,10 @@ +/* pages/home/home.wxss */ +page { + background-color: #f2f2f2; +} + +.content-banner { + width: 750rpx; + height: 280rpx; + vertical-align: bottom; +} \ No newline at end of file diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..3d48efa --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,237 @@ +const api = require('../../api/api'); +const { md5 } = require('../../utils/util.js'); +var monitApi = require("../../utils/util.js"); + +Page({ + data: { + checked:false, + userVersion: '1', //1户用光伏系统,2监控运维系统 + }, + + onLoad() { + this.setData({ + loginName: wx.getStorageSync('loginName'), + password: wx.getStorageSync('password'), + userId: wx.getStorageSync('userId'), + userName: wx.getStorageSync('userName'), + userType: wx.getStorageSync('userType'), + }) + if(wx.getStorageSync('sysType')){ + this.setData({ + userVersion: wx.getStorageSync('sysType'), + }) + } + if (this.data.loginName && this.data.password) { + if(this.data.userVersion =='1'){ + this.login() + }else if(this.data.userVersion =='2'){ + this.servLogin() + } + } + }, + + /** + * + * 忘记密码 + * + * @param {*} e + */ + showForget(e) { + wx.navigateTo({ + url: '/pages/forgotPassword/forgotPassword', + }) + }, + + + /** + * + * 登录事件 + * + * @param {*} e + */ + loginSubmit(e) { + if (!this.data.loginName) { + wx.showToast({ + title: '请输入用户名', + icon: 'none', + }) + } else if (!this.data.password) { + wx.showToast({ + title: '请输入登录密码', + icon: 'none', + }) + } else if (!this.data.checked){ + wx.showToast({ + title: '请先阅读并同意《用户协议》和《隐私政策》', + icon: 'none', + }) + } else { + if(this.data.userVersion =='1'){ + this.login() + }else if(this.data.userVersion =='2'){ + this.servLogin() + } + } + }, + + /** + * + * 代理商登录 + * + * @param {*} data + */ + login(data) { + wx.showLoading({ + title: '登录中', + }) + + var data = { + loginName: this.data.loginName, + password: this.data.password, + from: 'RROJECT_MANAGE', + } + + api.login(data).then(res => { + wx.hideLoading() + if (res.isLogin == 200) { + wx.setStorageSync('loginName', this.data.loginName) + wx.setStorageSync('password', this.data.password) + + wx.setStorageSync('userId', res.userId) + wx.setStorageSync('userName', res.userName) + wx.setStorageSync('mobile', res.mobile) + wx.setStorageSync('userType', res.userType) //TRADER:代理商,TRADER_EMP:代理商员工,PLATFORM_EMP:平台,暂不用(SYS_EMP:系统工程师。PRO_EMP:项目工程师) + wx.setStorageSync('traderId', '') + wx.setStorageSync('traderName', '所有代理商') + wx.setStorageSync('traderType', res.traderType) //代理商等级 + wx.setStorageSync('sysType', '1') + + + //代理商员工角色菜单权限控制 + if (res.userType == "TRADER_EMP" && res.menuList) { + let menuList = JSON.parse(res.menuList), obj={}; + if(menuList.length){ + menuList.forEach(itm=>{ + obj[itm] = true; + }); + } + wx.setStorageSync('permission', obj) + } + //平台列表按钮权限控制 + if (res.userType == "PLATFORM_EMP") { + wx.setStorageSync('PTpermission', res.menus.split(",")) + } + //登录代理商traderId + if (res.traderId) { + wx.setStorageSync('traderId', res.traderId) + } + + wx.switchTab({ + url: '/pages/home/home', + }) + } else { + wx.showToast({ + icon: 'none', + title: res.errMsg || res.msg || '登录失败,请联系管理员', + }) + } + }) + }, + + /** + * + * 服务商登录 + * + * @param {*} data + */ + servLogin() { + wx.showLoading({ + title: '登录中', + }) + + var data = { + grant_type: 'password', + username: this.data.loginName, + password: md5(this.data.password), + } + monitApi.req('oauth/miniapp/token', data, 'post').then(res => { + wx.hideLoading() + if (res.code == '200') { + wx.setStorageSync('loginName', this.data.loginName) + wx.setStorageSync('password', this.data.password) + monitApi.toast('登录成功', 1500, 'success') + wx.setStorageSync('userId', res.data.user_id) + wx.setStorageSync('name', res.data.real_name) + wx.setStorageSync('TOKEN', res.data.access_token) + wx.setStorageSync('RTOKEN', res.data.refresh_token) + wx.setStorageSync('userType', res.data.token_type) + wx.setStorageSync('sysType', '2') + wx.reLaunch({ + url: '/monitor/pages/home/home', + }) + } else { + monitApi.toast(res.msg, 2000, 'none') + } + }).catch(res => { + console.log(res) + // monitApi.toast('内部系统错误', 1000, 'none') + }) + }, + + + + onShareAppMessage() { + + }, + + onShareTimeline() { + + }, + //协议查看 + linkTo(e){ + let type=e.currentTarget.dataset.type,src=''; + if(type==='ys'){ + src='https://nhet.oss-cn-shanghai.aliyuncs.com/static/files/privacy.docx' + }else if(type==='fw'){ + src="https://nhet.oss-cn-shanghai.aliyuncs.com/static/files/agreements.docx" + } + wx.downloadFile({ + url: src, + success (res) { + const filePath = res.tempFilePath + wx.openDocument({ + filePath: filePath, + showMenu: true, + success: function (res) { + console.log('打开文档成功') + }, + fail: function (err) { + console.log('打开文档失败',err) + } + }) + }, + fail: function (err) { + console.log('下载文档失败',err) + } + }); + }, + //选中 + onChange(event) { + this.setData({ + checked: event.detail, + }); + }, + //切换登录版块 + swichUser(e){ + let type = this.data.userVersion; + if(type=='1'){ + this.setData({ + userVersion: '2', + }) + }else{ + this.setData({ + userVersion: '1', + }) + } + } +}) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..f391d1c --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1,11 @@ +{ + "usingComponents": { + "statusBar": "../../components/statusBar/statusBar", + "van-checkbox": "@vant/weapp/checkbox/index", + "van-checkbox-group": "@vant/weapp/checkbox-group/index" + }, + "navigationStyle": "custom", + "navigationBarTitleText": "登陆", + "navigationBarBackgroundColor": "#194b59", + "navigationBarTextStyle": "white" +} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..9e6cea5 --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,38 @@ + + + + + + + + + \ No newline at end of file diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..1fd949a --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1,102 @@ +page { + background: #f5f5f5; +} +.swich-login{position: absolute; top: 250rpx; right: 0; z-index: 1; } +.swich-login>view{position: relative; width: 250rpx; height: 70rpx; color: #FFF;} +.swich-login image{ width: 100%; height: 100%; position: relative; z-index: 0;} +.swich-login>view>view{position: absolute; top: 0; width: 100%; height: 100%; line-height: 70rpx; z-index: 10; font-size: 28rpx; padding-left: 60rpx;} + +.content-forget { + width: 550rpx; + text-align: right; + font-size: 28rpx; + color: #aa0100; + margin-top: 10rpx; +} + +.content { + position: relative; + width: 100vw; + height: 100vh; + display: flex; + justify-content: center; +} + +.content-login-bg { + position: absolute; + width: 100%; + height: 100%; +} + +.content-login { + position: absolute; + margin-top: 560rpx; + flex-direction: column; + display: flex; + align-items: center; +} + +.content-loginBox { + /* width: 550rpx; */ + width: 100%; +} + +.content-inputBox { + width: 100%; + height: 90rpx; + display: flex; + justify-content: space-between; + padding-left: 30rpx; + align-items: center; + border: 1rpx solid #eeee; + border-radius: 10rpx; + margin-top: 40rpx; + background-color: white; + box-shadow: 0 15px 30px rgba(255, 255, 255, 0.23); +} + +.content-image { + width: 38rpx; + height: 38rpx; +} + +.content-line { + width: 2rpx; + height: 40rpx; + margin-left: 20rpx; + background-color: #333333; +} + +.content-input { + display: inline-block; + height: 100%; + font-size: 30rpx; + flex: 1; + padding-left: 20rpx; + color: #333333; +} + +.login { + width: 100%; + height: 100rpx; + background-image: linear-gradient(270deg, + #00967b 0%, + #126594 100%); + margin-top: 30rpx; + color: #ffffff; + font-size: 36rpx; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50rpx; +} + +.agree-box{ + padding-top: 160rpx; + font-size: 28rpx; + color: #333; +} +.link{ + display: inline-block; + color: #E8380D; +} \ No newline at end of file diff --git a/pages/map/map.js b/pages/map/map.js new file mode 100644 index 0000000..56f3143 --- /dev/null +++ b/pages/map/map.js @@ -0,0 +1,134 @@ +// pages/map/map.js +const { + getAddressByLonLat +} = require('../../api/api') +Page({ + data: { + latitude:31.8512, + longitude:117.26061, + scale:13, + lonLat:[], + addr:'', + markers:[{ + ...{ + latitude: 31.8512, + longitude: 117.26061, + iconPath: '../../img/canvas-location.png', + width: '34px', + height: '34px', + rotate: 0, + alpha: 1 + } + }] + }, + /** 去导航 **/ + mapFn(){ + wx.openLocation({ + latitude:this.data.latitude, + longitude:this.data.longitude, + name:this.data.addr, + scale: 18, + }); + }, + onLoad(options) { + console.log("options",options); + if(options.q){ + let url = options.q ? decodeURIComponent(options.q) : ''; + console.log("url",url); + let index1 = url.indexOf("lonLat"); + let lonLat = url.slice(index1 + 7).split(","); + console.log("lonLat",lonLat); + if(lonLat.length){ + let lonLatA = Number(lonLat[0]) + ',' + Number(lonLat[1]); + this.getAddress(lonLatA,res=>{ + this.setData({ + latitude:Number(lonLat[1]), + longitude:Number(lonLat[0]), + lonLat:lonLatA, + addr:res, + markers:[{ + ...{ + latitude: Number(lonLat[1]), + longitude: Number(lonLat[0]), + iconPath: '../../img/canvas-location.png', + width: '34px', + height: '34px', + rotate: 0, + alpha: 1 + } + }], + }); + wx.openLocation({ + latitude:Number(lonLat[1]), + longitude:Number(lonLat[0]), + name:res, + scale: 18, + }); + }); + } + }else{ + wx.showToast({ + title: '未获取到地址', + icon:'none' + }); + } + }, + //经纬度获取地址 + getAddress(lonLat,callback){ + getAddressByLonLat({ + lonLat: lonLat + }).then(res=>{ + if (res.code == 200) { + this.setData({ + addr:res.data + }); + callback(res.data); + } else { + wx.showToast({ + title: res.errMsg, + icon: 'none' + }) + } + }); + }, + onReady() { + + }, + onShow() { + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/map/map.json b/pages/map/map.json new file mode 100644 index 0000000..afa2557 --- /dev/null +++ b/pages/map/map.json @@ -0,0 +1,5 @@ +{ + "usingComponents": {}, + "navigationStyle":"default", + "navigationBarTitleText": "地图" +} \ No newline at end of file diff --git a/pages/map/map.wxml b/pages/map/map.wxml new file mode 100644 index 0000000..5b35331 --- /dev/null +++ b/pages/map/map.wxml @@ -0,0 +1,9 @@ + + + + + + {{addr}} + + + \ No newline at end of file diff --git a/pages/map/map.wxss b/pages/map/map.wxss new file mode 100644 index 0000000..40a396e --- /dev/null +++ b/pages/map/map.wxss @@ -0,0 +1,9 @@ +/* pages/map/map.wxss */ +.map-box{margin: 20rpx; background-color: #fff; padding: 20rpx; border-radius: 10rpx; box-shadow: 0rpx 8rpx 24rpx #ccc;position: relative;} +.map { + width:100%; + height:220px; + margin-bottom: 20rpx; +} +.map-txt{font-size: 28rpx; line-height: 40rpx;} +.mask{position: absolute; left: 0; top: 0; width: 100%; height: 100%;} \ No newline at end of file diff --git a/pages/mine/mine.js b/pages/mine/mine.js new file mode 100644 index 0000000..18e0ec2 --- /dev/null +++ b/pages/mine/mine.js @@ -0,0 +1,71 @@ +// pages/mine/mine.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + this.setData({ + name: wx.getStorageSync('userName'), + mobile: wx.getStorageSync('mobile') + }) + }, + onShow(){ + //自定义tab图标选中设置 + if (typeof this.getTabBar === 'function' && this.getTabBar()) { + if(wx.getStorageSync('userType') == 'PLATFORM_EMP'){ + this.getTabBar().setData({ + selected:2, + }) + }else{ + this.getTabBar().setData({ + selected:1, + }) + } + } + }, + /** + * + * 联系我们 + * + * @param {*} e + */ + customerService(e) { + wx.navigateTo({ + url: '/mine/pages/contactUs/contactUs', + }) + }, + + + /** + * + * 退出登录 + * + * @param {*} e + */ + exit(e) { + wx.showModal({ + title: '提示', + content: '确定退出登录吗?', + complete: (res) => { + if (res.cancel) { + + } + + if (res.confirm) { + wx.clearStorage() + wx.reLaunch({ + url: '/pages/index/index', + }) + } + } + }) + }, +}) \ No newline at end of file diff --git a/pages/mine/mine.json b/pages/mine/mine.json new file mode 100644 index 0000000..31312e4 --- /dev/null +++ b/pages/mine/mine.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "statusBar": "../../components/statusBar/statusBar" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/mine/mine.wxml b/pages/mine/mine.wxml new file mode 100644 index 0000000..4a91e42 --- /dev/null +++ b/pages/mine/mine.wxml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + 退出登录 + \ No newline at end of file diff --git a/pages/mine/mine.wxss b/pages/mine/mine.wxss new file mode 100644 index 0000000..dedd696 --- /dev/null +++ b/pages/mine/mine.wxss @@ -0,0 +1,186 @@ +/* pages/mine/mine.wxss */ +page { + background-color: #EDF2F8; +} + +.content { + position: relative; + width: 750rpx; + display: flex; + justify-content: center; +} + +.content-personal-center-bg { + width: 100%; + height: 300rpx; +} + +.content-info { + position: absolute; + margin-top: 200rpx; +} + +.content-info-view { + position: relative; + width: 680rpx; + height: 180rpx; + display: flex; + align-items: center; +} + +.content-info-bg-img { + position: absolute; + width: 100%; + height: 100%; + border-radius: 20rpx; + box-shadow: 5px 5px 5px #04000004, 5px -5px 5px #04000004, -5px 5px 5px #04000004, -5px -5px 5px #04000004; +} + +.content-info-text { + position: absolute; + display: flex; + align-content: center; + justify-content: center; + margin-left: 20rpx; +} + +.content-info-head-img { + width: 100rpx; + height: 100rpx; + border-radius: 50%; +} + +.content-info-text-view { + display: flex; + flex-direction: column; + margin-left: 15rpx; + justify-content: space-around; +} + +.content-info-text-name { + font-size: 30rpx; + font-weight: bold; +} + +.content-info-text-phone { + font-size: 28rpx; +} + +.content-button-exit { + position: absolute; + bottom: 180rpx; + margin-left: 35rpx; + margin-bottom: 20rpx; + width: 680rpx; + height: 100rpx; + font-size: 30rpx; + border-radius: 50rpx; + background-image: linear-gradient(270deg, + #00967b 0%, + #126594 100%); + display: flex; + align-items: center; + justify-content: center; + color: #ffffff; +} + + +button::after { + border: none; +} + +button { + padding: 0 !important; + width: 100% !important; + text-align: left; +} + + + +.content-list { + width: 750rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + margin-top: 100rpx; +} + +.content-list-item { + margin-bottom: 20rpx; + background-color: #ffffff; + width: 680rpx; + height: 100rpx; + display: flex; + align-items: center; + border-radius: 20rpx; + padding-left: 30rpx; + padding-right: 36rpx; + box-shadow: 5px 5px 5px #04000004, 5px -5px 5px #04000004, -5px 5px 5px #04000004, -5px -5px 5px #04000004; +} + +.content-list-item-title { + font-size: 30rpx; + flex: 1; + margin-left: 10rpx; +} + +.content-list-item-img { + width: 36rpx; + height: 36rpx; +} + + +.content-about-us { + display: flex; + justify-content: center; + width: 750rpx; + height: 550rpx; + margin-top: 150rpx; +} + +.content-about { + width: 680rpx; + background-color: #ffffff; + border-radius: 20rpx; +} + +.content-about-title { + font-size: 30rpx; + font-weight: bold; + margin-top: 30rpx; + margin-left: 20rpx; +} + +.content-about-text { + margin-left: 20rpx; +} + +.content-about-line { + width: 640rpx; + height: 5rpx; + background-color: #f2f2f2; + margin-top: 20rpx; + margin-bottom: 20rpx; +} + +.content-about-company { + font-size: 28rpx; +} + +.content-about-textOrimg { + display: flex; + align-items: center; +} + +.content-about-img { + width: 30rpx; + height: 33rpx; + margin-right: 20rpx; +} + +.content-about-img2 { + width: 30rpx; + height: 30rpx; + margin-right: 20rpx; +} \ No newline at end of file diff --git a/pages/pend/pend.js b/pages/pend/pend.js new file mode 100644 index 0000000..a321f10 --- /dev/null +++ b/pages/pend/pend.js @@ -0,0 +1,126 @@ +const { + getNeedToDealList +} = require('../../api/api') +const { routeLink } = require("../../utils/route.js"); +Page({ + data: { + listData: [], + pageSize: 10, //分页条数 + loadEnd: false, //加载到最底部 + }, + onLoad(options) { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + this.setData({ + pageNum: 1, //分页页面 + }) + this.getList() + if (typeof this.getTabBar === 'function' && + this.getTabBar()) { + this.getTabBar().setData({ + selected: 1 + }) + } + }, + //列表 + getList(){ + wx.showLoading({ + title: '加载中', + }) + getNeedToDealList({ + userId: wx.getStorageSync('userId'), + traderId: wx.getStorageSync('traderId'), + page: this.data.pageNum, + limit: this.data.pageSize, + }).then(res => { + wx.hideLoading() + wx.stopPullDownRefresh() + if(res.code == 200){ + // console.log(666, res.data) + res.data.map(item=>{ + let str = item.createTime; + item.createTime = str.substring(5,16) + }) + + this.data.loadEnd = res.data.length < this.data.pageSize + if (this.data.pageNum == 1) { + this.data.listData = res.data + } else { + this.data.listData = this.data.listData.concat(res.data) + } + if (!this.data.loadEnd) { + this.data.pageNum++; + } + + this.setData({ + count: res.count, + listData: this.data.listData, + loadEnd: this.data.loadEnd, + }) + } + }).catch(err => { + + }) + }, + /** 处理详情 **/ + toDetail(res){ + let type = res.currentTarget.dataset.type + let partnerId = res.currentTarget.dataset.partnerid; + if(type == '91'){ //设计审核 + console.log(98989, partnerId) + if(partnerId == '04'){//华融 + wx.navigateTo({ + url: '/home/pages/entryInfoAuditHR/entryInfoAuditHR?projectId=' + res.currentTarget.dataset.projectid + "&navTitle=设计审核", + }) + }else{ + wx.navigateTo({ + url: '/home/pages/entryInfoAudit/entryInfoAudit?projectId=' + res.currentTarget.dataset.projectid + "&navTitle=设计审核", + }) + } + }else if(type == '92'){//档案审核 + wx.navigateTo({ + url: '/home/pages/filesForm/filesForm?projectId=' + res.currentTarget.dataset.projectid + "&navTitle=档案审核&type=18", + }) + }else if(type == '93'){//安装验收 + wx.navigateTo({ + url: '/home/pages/acceptanceAZ/acceptanceAZ?projectId=' + res.currentTarget.dataset.projectid + "&navTitle=安装验收", + }) + }else if(type == '94'){//并网验收 + wx.navigateTo({ + url: '/home/pages/acceptanceBW/acceptanceBW?projectId=' + res.currentTarget.dataset.projectid + "&navTitle=并网验收&status=7", + }) + } + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + this.setData({ + pageNum: 1, + pageSize: 10, + loadEnd: false, + }) + this.getList() + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + if (!this.data.loadEnd) { + this.getList() + } else { + wx.showToast({ + title: '暂无更多数据', + icon: 'none', + duration: 500 + }) + } + }, +}) \ No newline at end of file diff --git a/pages/pend/pend.json b/pages/pend/pend.json new file mode 100644 index 0000000..84141aa --- /dev/null +++ b/pages/pend/pend.json @@ -0,0 +1,5 @@ +{ + "usingComponents": {}, + "navigationBarTitleText": "待办任务", + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/pages/pend/pend.wxml b/pages/pend/pend.wxml new file mode 100644 index 0000000..ec718a9 --- /dev/null +++ b/pages/pend/pend.wxml @@ -0,0 +1,19 @@ + + + 当前待办事项:{{count}} + + + + {{item.name}} + + {{item.taskName}} + 待审批 + + 发起人:{{item.createName}} + + + {{item.createTime}} + 办理 + + + \ No newline at end of file diff --git a/pages/pend/pend.wxss b/pages/pend/pend.wxss new file mode 100644 index 0000000..b31ce68 --- /dev/null +++ b/pages/pend/pend.wxss @@ -0,0 +1,11 @@ +.pend-num{position: sticky; z-index: 1; left: 0; top: 0; width: 100%;} +.pend-num view{position: absolute; left: 0; top: 0; width: 100%; height: 100%; display: flex;color: #0a6597; font-size: 28rpx; padding: 20rpx 30rpx;} +.pend-num view text{font-size: 30rpx;} +.list-box{background: #fff; border-radius: 8rpx; margin: 20rpx; padding: 20rpx 200rpx 20rpx 20rpx; position: relative;} +.list-box .bt{font-size: 30rpx; color: #333; font-weight: 600; margin-bottom: 24rpx;} +.list-box .txt{font-size: 26rpx; color: #333; line-height: 40rpx;} +.list-box .txt>view{margin-top: 14rpx;} +.list-box .txt .tag{font-size: 20rpx; color: #FFF; display: inline-block; background-color: #8cabc2; border-radius: 12rpx; padding: 0 10rpx; line-height: 30rpx; vertical-align: text-bottom;} +.list-box .right{position: absolute; right: 0rpx; top: 0rpx; height: 100%; padding: 20rpx 20rpx 30rpx 0; display: flex; flex-direction: column;justify-content: space-between;} +.list-box .right .time{color: #999; font-size: 24rpx;} +.list-box .right .btn{width: 120rpx; height: 60rpx; background-color: #0a6597;border-radius: 10rpx; font-size: 28rpx; text-align: center; color: #fff; line-height: 60rpx;} \ No newline at end of file diff --git a/pages/scanCode/scanCode.js b/pages/scanCode/scanCode.js new file mode 100644 index 0000000..259d6b9 --- /dev/null +++ b/pages/scanCode/scanCode.js @@ -0,0 +1,268 @@ +const { + checkMaterialCode,usedMaterial +} = require('../../api/api') +import Dialog from '@vant/weapp/dialog/dialog'; +Page({ + data:{ + codeArr: [], + maxNum: 0, + isSubmit: true, //是否可提交,扫码失败弹窗关闭前不会重复请求接口 + }, + onLoad(e) { + // console.log(12121216666, e) + this.setData({ + maxNum: e.num, + entryId: e.entryId, + warehouseId: e.warehouseId, + spec: e.spec, + materialType: e.materialType, + zb: e.zb, + materialModel: e.model, + }) + this.ctx = wx.createCameraContext() + }, + //数组去重 + uniqueArr(arr) { + if (!Array.isArray(arr)) { + console.log('type error!') + return + } + var array = []; + for (var i = 0; i < arr.length; i++) { + if (array .indexOf(arr[i]) === -1) { + array .push(arr[i]) + } + } + return array; + }, + error(e) { + wx.showToast({ + title: '你已设置不允许使用摄像头', + icon: 'error' + }) + console.log('用户不允许使用摄像头时触发',e.detail) + }, + //扫码 + scanFun2(e){ + let that = this; + let codeArr = this.data.codeArr + if(this.data.maxNum<=codeArr.length){ + wx.showToast({ + title: '条码数量不能超过'+ this.data.maxNum, + icon: 'error' + }) + return + } + if(e.detail.result){ + let result = e.detail.result.split(','); + if(result.length>1){ + result = result[0] + }else{ + result = e.detail.result + } + if(!this.data.isSubmit){ + return + } + usedMaterial({ + userId: wx.getStorageSync('userId'), + entryId: that.data.entryId, + barcode: result.trim(), + warehouseId: that.data.warehouseId, + flag: 1, + spec: that.data.spec, + materialType: that.data.materialType, + materialModel: that.data.materialModel, + }).then((res) => { + wx.hideLoading() + that.setData({ + isSubmit: false + }) + if (res.code == 200) { + // if(res.data){ + // let newResult = res.data + let newResult = result.trim() + // newResult.forEach(item=>{ + // codeArr.push(item) + // }) + codeArr.push(newResult) + that.setData({ + codeArr: that.uniqueArr(codeArr), + isSubmit: true + }) + // } + // wx.showToast({ + // title: '扫码成功', + // icon: 'none' + // }) + // that.getUsedMaterialInfo() + } else { + wx.showModal({ + title: '', + content: res.msg || res.errMsg, + showCancel: false, + complete: (res) => { + that.setData({ + isSubmit: true + }) + } + }) + // wx.showToast({ + // title: res.msg || res.errMsg, + // icon: 'none' + // }) + } + }) + // checkMaterialCode({ + // userId: wx.getStorageSync('userId'), + // entryId: that.data.entryId, + // barcode: result, + // warehouseId: that.data.warehouseId, + // flag: 1, + // spec: that.data.spec, + // materialType: that.data.materialType, + // zb: that.data.zb + // }).then((res) => { + // that.setData({ + // isSubmit: false + // }) + // if (res.code == 200) { + // if(res.data){ + // let newResult = res.data + // newResult.forEach(item=>{ + // codeArr.push(item) + // }) + // // codeArr.push(newResult) + // that.setData({ + // codeArr: that.uniqueArr(codeArr), + // isSubmit: true + // }) + // } + // } else { + // const beforeClose = (action) => + // new Promise((resolve) => { + // setTimeout(() => { + // if (action === 'confirm') { + // that.setData({ + // isSubmit: true + // }) + // resolve(true); + // } + // }, 300); + // }); + // Dialog.alert({ + // message: res.msg || res.errMsg, + // beforeClose + // }); + // } + // }) + } + }, + //扫码 + scanFun(e){ + let that = this; + let codeArr = this.data.codeArr + if(this.data.maxNum<=codeArr.length){ + wx.showToast({ + title: '条码数量不能超过'+ this.data.maxNum, + icon: 'error' + }) + return + } + if(e.detail.result){ + let result = e.detail.result.split(','); + if(result.length>1){ + result = result[0] + }else{ + result = e.detail.result + } + if(!this.data.isSubmit){ + return + } + checkMaterialCode({ + userId: wx.getStorageSync('userId'), + entryId: that.data.entryId, + barcode: result.trim(), + warehouseId: that.data.warehouseId, + flag: 1, + spec: that.data.spec, + materialType: that.data.materialType, + materialModel: that.data.materialModel + // zb: that.data.zb + }).then((res) => { + that.setData({ + isSubmit: false + }) + if (res.code == 200) { + if(res.data){ + let newResult = res.data + // newResult.forEach(item=>{ + // codeArr.push(item) + // }) + codeArr.push(newResult) + that.setData({ + codeArr: that.uniqueArr(codeArr), + isSubmit: true + }) + } + } else { + const beforeClose = (action) => + new Promise((resolve) => { + setTimeout(() => { + if (action === 'confirm') { + that.setData({ + isSubmit: true + }) + resolve(true); + } + }, 300); + }); + Dialog.alert({ + message: res.msg || res.errMsg, + beforeClose + }); + } + }) + } + }, + //删除 + delCode(e){ + let index = e.currentTarget.dataset.index + let codeArr = this.data.codeArr + codeArr.splice(index,1) + this.setData({ + codeArr + }) + }, + //提交 + submit(e){ + let codeArr = this.data.codeArr + if(this.data.maxNum{ + prevPage.getBatchCode() + },300) //加延时是为了上一级页面的弹窗显示 + wx.navigateBack({ delta: 1}) + }, + //返回 + goBack(){ + // var pages = getCurrentPages(); // 获取页面栈 + // var prevPage = pages[pages.length - 2]; // 上一个页面 + // // prevPage.setData({ + // // batchCode: codeArr.join(','),// 要设置的值 + // // }) + // setTimeout(()=>{ + // prevPage.getWarehouseList() + // },300) //加延时是为了上一级页面的弹窗显示 + wx.navigateBack({ delta: 1}) + } +}) \ No newline at end of file diff --git a/pages/scanCode/scanCode.json b/pages/scanCode/scanCode.json new file mode 100644 index 0000000..cf1d9ef --- /dev/null +++ b/pages/scanCode/scanCode.json @@ -0,0 +1,6 @@ +{ + "usingComponents": { + "van-dialog": "@vant/weapp/dialog/index" + }, + "navigationBarTitleText": "连续扫码" +} \ No newline at end of file diff --git a/pages/scanCode/scanCode.wxml b/pages/scanCode/scanCode.wxml new file mode 100644 index 0000000..4b95018 --- /dev/null +++ b/pages/scanCode/scanCode.wxml @@ -0,0 +1,16 @@ + + + + 条码列表 + + + {{index+1}}:{{item}} + x + + + + 返回 + 确定 + + + \ No newline at end of file diff --git a/pages/scanCode/scanCode.wxss b/pages/scanCode/scanCode.wxss new file mode 100644 index 0000000..04f9c38 --- /dev/null +++ b/pages/scanCode/scanCode.wxss @@ -0,0 +1,11 @@ +page { background-color: #F8F8F8; height: 100%; font-size: 32rpx; } +.page-body-wrapper { display: flex; flex-direction: column; align-items: center; width: 100%; height: 100vh;} + +.code-box{ padding: 20rpx 20rpx 0rpx 20rpx; width: 90%; height: calc(100vh - 500rpx); overflow: scroll; align-content: start; margin-bottom: 160rpx; } +.code-box>view{margin: 0 20rpx 15rpx 0; position: relative; border-bottom: 1px solid #F0F0F0; padding: 10rpx 20rpx; word-break: break-all;} +.code-box .close-btn{position: absolute; top: 15rpx; right: 0rpx; width: 36rpx; height: 36rpx; line-height: 28rpx; font-size: 24rpx; text-align: center; border-radius: 20rpx; background-color: #999; color: #FFF;} +.btn-area { box-sizing: border-box; width: 100%; position: fixed; bottom: 0; z-index: 10; padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); display: flex; justify-content: space-between; flex-direction: row;} +.from-submit-buttom-confirm {width: 100%; height: 90rpx; background-color: #0a6597; color: #ffffff; display: flex; align-items: center; justify-content: center;} +.from-submit-buttom-confirm.from-submit-buttom-confirm-gray { background-color: #ccc;} +.from-submit-buttom-cancle { width: 500rpx; height: 90rpx; background-color: #ffffff; color: #000000; display: flex; align-items: center; justify-content: center;} \ No newline at end of file diff --git a/pages/startPage/startPage.js b/pages/startPage/startPage.js new file mode 100644 index 0000000..24d5264 --- /dev/null +++ b/pages/startPage/startPage.js @@ -0,0 +1,141 @@ +// pages/startPage/startPage.js +const api = require('../../api/api'); +var monitApi = require("../../utils/util.js"); +const { md5 } = require('../../utils/util.js'); +const app = getApp() +Page({ + data: { + jump: '', + }, + onLoad(options) { + var that = this + that.setData({ + loginName: wx.getStorageSync('loginName'), + password: wx.getStorageSync('password'), + sysType: wx.getStorageSync('sysType'), + }) + if (that.data.loginName && that.data.password) { + if(that.data.sysType =='2'){ + that.data.jump = setTimeout(function () { + that.servLogin() + }, 1000); + }else{ + that.data.jump = setTimeout(function () { + that.login() + }, 1000); + } + } else { + that.data.jump = setTimeout(function () { + wx.reLaunch({ + url: '/pages/index/index', + }) + }, 1500); + } + + }, + /** 登录按钮 **/ + loginBox(e) { + clearTimeout(this.data.jump); + wx.navigateTo({ + url: '/pages/index/index', + }) + }, + /** 代理商登录 **/ + login(data) { + const that = this; + wx.showLoading({ + title: '登录中', + }) + var data = {} + data.from = 'RROJECT_MANAGE'; + data.loginName = that.data.loginName; + data.password = that.data.password; + api.login(data).then(res => { + wx.hideLoading() + if (res.isLogin == 200) { + wx.setStorageSync('loginName', data.loginName) + wx.setStorageSync('password', data.password) + wx.setStorageSync('userId', res.userId) + wx.setStorageSync('userName', res.userName) + wx.setStorageSync('userType', res.userType); + wx.setStorageSync('traderType', res.traderType) //代理商等级 + //代理商员工角色菜单权限控制 + if (res.userType == "TRADER_EMP" && res.menuList) { + let menuList = JSON.parse(res.menuList), obj={}; + if(menuList.length){ + menuList.forEach(itm=>{ + obj[itm] = true; + }); + } + wx.setStorageSync('permission', obj) + } + //平台列表按钮权限控制 + if (res.userType == "PLATFORM_EMP") { + wx.setStorageSync('PTpermission', res.menus.split(",")) + } + wx.switchTab({ + url: '/pages/home/home', + }) + } else { + that.setData({ + loginBox: false + }) + wx.showToast({ + icon: 'none', + title: res.errMsg || res.msg || '登录失败,请联系管理员', + }) + setTimeout(()=>{ + wx.clearStorage() + wx.reLaunch({ + url: '/pages/index/index', + }) + },1500); + } + }) + }, + /** + * + * 监控登录 + * + * @param {*} data + */ + servLogin() { + wx.showLoading({ + title: '登录中', + }) + var data = { + grant_type: 'password', + username: this.data.loginName, + password: md5(this.data.password), + } + monitApi.req('oauth/miniapp/token', data, 'post').then(res => { + wx.hideLoading() + if (res.code == '200') { + monitApi.toast('登录成功', 1500, 'success') + wx.setStorageSync('loginName', this.data.loginName) + wx.setStorageSync('password', this.data.password) + + wx.setStorageSync('userId', res.data.user_id) + wx.setStorageSync('name', res.data.real_name) + wx.setStorageSync('TOKEN', res.data.access_token) + wx.setStorageSync('RTOKEN', res.data.refresh_token) + wx.setStorageSync('userType', res.data.token_type) + wx.setStorageSync('sysType', '2') + wx.reLaunch({ + url: '/monitor/pages/home/home', + }) + } else { + monitApi.toast(res.msg, 1500, 'none') + } + }).catch(res => { + console.log(res) + }) + }, + + onShareAppMessage() { + + }, + onShareTimeline() { + + } +}) \ No newline at end of file diff --git a/pages/startPage/startPage.json b/pages/startPage/startPage.json new file mode 100644 index 0000000..965b8e8 --- /dev/null +++ b/pages/startPage/startPage.json @@ -0,0 +1,4 @@ +{ + "usingComponents": {}, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/pages/startPage/startPage.wxml b/pages/startPage/startPage.wxml new file mode 100644 index 0000000..055da15 --- /dev/null +++ b/pages/startPage/startPage.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/pages/startPage/startPage.wxss b/pages/startPage/startPage.wxss new file mode 100644 index 0000000..abd2758 --- /dev/null +++ b/pages/startPage/startPage.wxss @@ -0,0 +1,31 @@ +/* pages/startPage/startPage.wxss */ +.loginBox { + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + z-index: 1000; + background: #ffffff; +} + +.img { + width: 100%; + height: 100%; +} + +.loginNow { + color: #fff; + text-align: center; + line-height: 100rpx; + font-size: 34rpx; + position: fixed; + bottom: 100rpx; + width: 370rpx; + height: 100rpx; + background: linear-gradient(270deg, + #348aa1 0%, + #dbb689 100%); + border-radius: 52rpx; + left: 190rpx; +} \ No newline at end of file diff --git a/pages/traderList/traderList.js b/pages/traderList/traderList.js new file mode 100644 index 0000000..b65ccc1 --- /dev/null +++ b/pages/traderList/traderList.js @@ -0,0 +1,135 @@ +// mine/pages/traderList/traderList.js +const { getTraderList, getCapital } = require("../../api/api"); +Page({ + data: { + radio:'', + keyword:'',//搜索关键字 + listData:[],//列表 + capitalList:[],//资方列表 + capitalId:'',//资方id + }, + onLoad(options) { + this.setData({ + radio: wx.getStorageSync('traderId') || '', + capitalId: wx.getStorageSync('capitalId') || '', + }); + this.getCapitalList(()=>{this.getList()}); + }, + onShow() { + + }, + /** 资方列表 **/ + getCapitalList(callback) { + callback = callback || function(){}; + getCapital({ + }).then((res) => { + if(res.code == 200){ + res.data.unshift({ + id:'', + name:'所有资方' + }) + this.setData({ + capitalList: res.data + }) + }else{ + this.setData({ + capitalList: [ + { + id:'', + name:'所有资方' + }, + { + id:'01', + name:'越秀' + }, + { + id:'03', + name:'广发' + }, + { + id:'04', + name:'华融' + } + ] + }) + } + callback(); + }) + }, + /** 选择资方 **/ + cateFn(e){ + this.setData({ + capitalId:e.currentTarget.dataset.obj.id,//资方id + radio:'', + }) + this.getList(); + }, + /** 搜索输入事件 **/ + keyWordsChange(e) { + this.setData({ + keyword: e.detail, + }); + }, + /** 搜索 **/ + keyWordsSearch(e){ + this.getList(); + }, + /** 列表 **/ + getList(){ + getTraderList({ + userId: wx.getStorageSync('userId'), + keyword: this.data.keyword, + partner:this.data.capitalId, + }).then(res=>{ + if(res.code==200){ + if(res.data){ + var listData = res.data.map(item=> item.columns) + listData.unshift({ + traderId:'', + name: '所有代理商' + }) + this.setData({ + listData + }); + }else{ + wx.showToast({ + title: '未找到您搜索的代理商', + icon:'none' + }) + } + }else{ + wx.showToast({ + title: res.msg, + icon:'none' + }) + } + }); + }, + /** 单选 **/ + onChange(e) { + this.setData({ + radio: e.detail, + }); + }, + /** 返回 **/ + back(e) { + wx.navigateBack(); + }, + /** 提交 **/ + submit(){ + // if(!this.data.radio){ + // wx.showToast({ + // title: '请先选择一个服务商', + // icon:'none' + // }) + // return; + // } + wx.setStorageSync('traderId', this.data.radio) + const traderObj = this.data.listData.find(itm=>itm.traderId==this.data.radio) + wx.setStorageSync('traderName', traderObj.name) + wx.setStorageSync('capitalId', this.data.capitalId); + const Obj = this.data.capitalList.find(itm=>itm.id==this.data.capitalId) + wx.setStorageSync('capitalName', Obj.name); + wx.navigateBack(); + }, +}) \ No newline at end of file diff --git a/pages/traderList/traderList.json b/pages/traderList/traderList.json new file mode 100644 index 0000000..10c2ddc --- /dev/null +++ b/pages/traderList/traderList.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-search": "@vant/weapp/search/index", + "van-radio": "@vant/weapp/radio/index", + "van-radio-group": "@vant/weapp/radio-group/index" + }, + "navigationBarTitleText": "代理商选择" +} \ No newline at end of file diff --git a/pages/traderList/traderList.wxml b/pages/traderList/traderList.wxml new file mode 100644 index 0000000..05e169e --- /dev/null +++ b/pages/traderList/traderList.wxml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + {{item.name}} + + + + + {{item.name}} + + + + + + + + + + + 返回 + 提交 + diff --git a/pages/traderList/traderList.wxss b/pages/traderList/traderList.wxss new file mode 100644 index 0000000..07b82f3 --- /dev/null +++ b/pages/traderList/traderList.wxss @@ -0,0 +1,42 @@ +/* mine/pages/traderList/traderList.wxss */ +page{background-color: #fff;} +.search { + --search-background-color: #ffffff; + --search-padding: 0; + width: 750rpx; + height: 110rpx; + background-color: #ffffff; + position: fixed; + z-index: 100; + left: 0; + top: 0; +} +.van-search { + background-color: transparent !important; +} +.van-cell { + width: 600rpx; + border-radius: 50rpx; + border: 1px solid #333333; +} +.icon-search { + width: 40rpx; + height: 40rpx; + margin-right: 10rpx; + margin-left: 20rpx; +} + +.table-body{position: relative; margin-left: 180rpx; min-height: 100%;} +.table-body .list{display: flex; align-items: center; justify-content: space-between; text-align: center; font-size: 26rpx; background-color: #fff; padding: 30rpx; border-bottom: 1px solid #f0f0f0; min-height: 108rpx;} +.table-body .list>view:first-child{flex: 1; text-align: left;} +.table-body .list>view:last-child{width: 80rpx; text-align: right;} +.table-body .list .van-radio{display: inline-block;} +.table-body .list.on{color: #0a6597;} +.footer{display: flex; align-items: center; position:fixed; left: 0; bottom: 0; right: 0; background-color: #fff; width: 100%;text-align: center; line-height: 80rpx; font-size: 30rpx; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);} +.footer .long{color: #fff; background-color: #0a6597;} + +/*****/ +.left-cate{position: fixed; top: 130rpx; bottom: 150rpx; left: 0; width: 180rpx; overflow-y: auto; background-color: #EEF2F7;} +.left-cate .list{display: flex; align-items: center; font-size: 26rpx; padding: 30rpx; min-height: 108rpx; justify-content: center;} +.left-cate .list.on{color: #0a6597; background-color: #fff; position: relative;} +.left-cate .list.on::before{content: ''; position: absolute; left: 0; top: calc(50% - 14rpx);width: 6rpx; height: 28rpx; background-color: #0a6597; border-radius: 6rpx;} diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..896873f --- /dev/null +++ b/project.config.json @@ -0,0 +1,57 @@ +{ + "description": "项目配置文件", + "setting": { + "urlCheck": false, + "es6": true, + "enhance": true, + "postcss": true, + "preloadBackgroundData": false, + "minified": true, + "newFeature": false, + "coverView": true, + "nodeModules": false, + "autoAudits": false, + "showShadowRootInWxmlPanel": true, + "scopeDataCheck": false, + "uglifyFileName": true, + "checkInvalidKey": true, + "checkSiteMap": false, + "uploadWithSourceMap": true, + "compileHotReLoad": false, + "useMultiFrameRuntime": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "enableEngineNative": false, + "useIsolateContext": false, + "userConfirmedBundleSwitch": false, + "packNpmManually": false, + "packNpmRelationList": [], + "minifyWXSS": true, + "showES6CompileOption": false, + "minifyWXML": true, + "condition": true, + "ignoreUploadUnusedFiles": true, + "compileWorklet": true + }, + "compileType": "miniprogram", + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + }, + "packNpmManually": true, + "packNpmRelationList": [ + { + "packageJsonPath": "./package.json", + "miniprogramNpmDistDir": "./miniprogram/" + } + ], + "appid": "wxced129babf19021b", + "packOptions": { + "ignore": [], + "include": [] + } +} \ No newline at end of file diff --git a/project.private.config.json b/project.private.config.json new file mode 100644 index 0000000..764554d --- /dev/null +++ b/project.private.config.json @@ -0,0 +1,9 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "setting": { + "compileHotReLoad": true, + "urlCheck": false + }, + "projectname": "nh", + "libVersion": "3.1.5" +} \ No newline at end of file diff --git a/sitemap.json b/sitemap.json new file mode 100644 index 0000000..99a106a --- /dev/null +++ b/sitemap.json @@ -0,0 +1,10 @@ +{ + "desc": "", + "rules": [{ + "action": "allow", + "page": "pages/index/index" + }, { + "action": "disallow", + "page": "*" + }] +} \ No newline at end of file diff --git a/utils/addWatermark.js b/utils/addWatermark.js new file mode 100644 index 0000000..d815f14 --- /dev/null +++ b/utils/addWatermark.js @@ -0,0 +1,173 @@ + const { + API_BASE_URL, + IMG_BASE_URL + } = require('../api/api') + const utils = require('./util') + const canvasLocationImg = "../../img/canvas-location.png"; //定位图标 + const canvasPeopleImg = "../../img/canvas-people.png"; //人员图标 + const imageCodeImgBg = "../../img/map-bg.png"; //小程序二维码图背景 + + /** + * + * 绘制水印 + * + * @param {*} tempFilePath 图片路径 + * @param {*} photoName + * @param {*} data 数据源 + */ + function addWatermark(tempFilePath, photoName, data) { + return new Promise(async (resolve, reject) => { + wx.showLoading({ + title: '绘制图片中', + mask: true + }) + console.log("页面数据", data.customerAddress) + const dpr = wx.getSystemInfoSync().pixelRatio; + //canvas的宽和高 + const { + canvasHeight, + canvasWidth + } = data + + //阴影的高度 + const shadowHeight = Math.min(canvasWidth, canvasHeight) * 0.2 + + //创建画笔 + const ctx = data.canvas.getContext('2d') + + //设置画布大小 + data.canvas.width = canvasWidth * dpr + data.canvas.height = canvasHeight * dpr + ctx.scale(dpr, dpr) + + // 创建图片对象 + const image = data.canvas.createImage(); + + //设置图片路径 + image.src = tempFilePath; + + //绘制照片 + image.onload = () => { + //绘制定位图标 + const imageLocation = data.canvas.createImage(); + imageLocation.src = canvasLocationImg + imageLocation.onload = () => { + ctx.drawImage(imageLocation, shadowHeight * 0.075, canvasHeight - shadowHeight * 0.45, shadowHeight * 0.4, shadowHeight * 0.4) + } + + //绘制人员图标 + const imagePeople = data.canvas.createImage(); + imagePeople.src = canvasPeopleImg + imagePeople.onload = () => { + ctx.drawImage(imagePeople, shadowHeight * 0.075, canvasHeight - shadowHeight * 0.95, shadowHeight * 0.4, shadowHeight * 0.4) + } + //绘制小程序二维码图 + const imageCodeBg = data.canvas.createImage(); + imageCodeBg.src = imageCodeImgBg; + imageCodeBg.onload = () => { + const imageCode = data.canvas.createImage(); + imageCode.src = data.imageCodeImg ? data.imageCodeImg : '' + // imageCode.src = 'https://sf-hd1-stimgs.oss-cn-hangzhou.aliyuncs.com//sfimg03/png/20210803/40ae583526054e83a9958a3a80f89295.png' + imageCode.onload = () => { + // ctx.drawImage(imageCode, canvasWidth - shadowHeight * 1.2 - 8, 8, shadowHeight * 1.2, shadowHeight * 1.2) + ctx.drawImage(imageCode, canvasWidth - shadowHeight*1.03 - 8 + shadowHeight*0.03/2, 8 + shadowHeight*0.03/3, shadowHeight * 1, shadowHeight * 1) + } + ctx.drawImage(imageCodeBg, canvasWidth - shadowHeight * 1.03 - 8, 8, shadowHeight * 1.03, shadowHeight * 1.23) + } + //绘制小程序码下文字 + // ctx.fillText("扫码导航", canvasWidth - shadowHeight * 1.2 - 8, 8 + shadowHeight * 1.2) + + ctx.drawImage(image, 0, 0, canvasWidth, canvasHeight) + + //绘制黑色背景矩形 + //绘制黑色渐变背景矩形 + const grd = ctx.createLinearGradient(0, 0, canvasWidth, 0); + grd.addColorStop(0, "rgba(0,0,0,0.8)"); + grd.addColorStop(1, "rgba(255,255,255,0.4)"); + ctx.fillStyle = grd; + ctx.fillRect(0, canvasHeight - shadowHeight, canvasWidth, shadowHeight) + + //设置画笔颜色 + ctx.fillStyle = '#ffffff'; + + //设置文字大小及字体 + ctx.font = parseInt(shadowHeight * 0.15) + `px sans-serif` + + //绘制用户姓名 + const name = data.data.name, phone = data.data.phone; + ctx.fillText("业主姓名:" + `${name}` + ` ${phone}`, shadowHeight * 0.5, canvasHeight - shadowHeight * 0.8) + + //绘制勘测人员 + const time = utils.formatTime(new Date()) + wx.getStorage({ + key: 'userName', + success(res) { + const surveyName = res.data + ctx.fillText("踏勘人员:" + `${surveyName}` + "(" + `${time}` + ")", shadowHeight * 0.5, canvasHeight - shadowHeight * 0.6) + } + }) + + //绘制地点 + ctx.fillText(`${data.customerAddress}` + ` ${data.direction?data.direction:''}`, shadowHeight * 0.5, canvasHeight - shadowHeight * 0.3) + + //绘制经纬度 + ctx.fillText("经度:" + `${data.canvasLongitude}` + " " + "纬度:" + `${data.canvasLatitude}`, shadowHeight * 0.5, canvasHeight - shadowHeight * 0.1) + + + //绘制完成后将canvas转为为图片 + setTimeout(() => { + wx.hideLoading() + wx.showLoading({ + title: '请稍后', + mask: true + }) + + console.log("基础库信息", wx.getSystemInfoSync().SDKVersion) + + wx.canvasToTempFilePath({ + canvas: data.canvas, + success: (res) => { + console.log("绘制图片成功", res); + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: res.tempFilePath, + name: 'file', + complete: function (res) { + wx.hideLoading() + console.log("上传图片", res) + if (res.statusCode == 200) { + const item = { + url: "", + name: "", + } + item.url = IMG_BASE_URL + res.data; + item.name = res.data; + resolve(item) + } else { + wx.showToast({ + title: "选择失败", + icon: 'none' + }) + } + } + }) + }, + fail: (res) => { + console.log("绘制图片失败", res) + wx.showToast({ + title: "绘制失败", + icon: 'none' + }) + }, + complete:()=>{ + wx.stopCompass(); + } + }) + }, 1000) + } + }) + } + + module.exports = { + addWatermark + } \ No newline at end of file diff --git a/utils/addWatermark2.js b/utils/addWatermark2.js new file mode 100644 index 0000000..f35fc01 --- /dev/null +++ b/utils/addWatermark2.js @@ -0,0 +1,116 @@ + const { + API_BASE_URL, + IMG_BASE_URL + } = require('../api/api') + const watermarkImg = "../../img/watermark.png"; //水印图 + + /** + * + * 绘制水印 + * + * @param {*} tempFilePath 图片路径 + * @param {*} photoName + * @param {*} data 数据源 + */ + async function addWatermark(tempFilePath, data) { + let canvasWidth = wx.getSystemInfoSync().screenWidth, canvasHeight=0; + //获取图片信息 + await wx.getImageInfo({ + src: tempFilePath, + }).then(res => { + let watermarkScale = res.width / canvasWidth; + canvasHeight = Math.round(res.height / watermarkScale); + canvasWidth = res.width + canvasHeight = res.height + }); + return new Promise(async (resolve, reject) => { + wx.showLoading({ + title: '绘制图片中', + mask: true + }) + console.log("页面数据", tempFilePath) + const dpr = wx.getSystemInfoSync().pixelRatio; + + //阴影的高度 + const shadowHeight = Math.max(canvasWidth, canvasHeight) + //创建画笔 + const ctx = data.canvas.getContext('2d') + + //设置画布大小 + data.canvas.width = canvasWidt + data.canvas.height = canvasHeight + // ctx.scale(dpr, dpr) + + // 创建图片对象 + const image = data.canvas.createImage(); + + //设置图片路径 + image.src = tempFilePath; + + //绘制照片 + image.onload = () => { + //绘制定位图标 + const imageWatermark = data.canvas.createImage(); + imageWatermark.src = watermarkImg + imageWatermark.onload = () => { + ctx.drawImage(imageWatermark, 0, 0, shadowHeight, shadowHeight) + } + + ctx.drawImage(image, 0, 0, canvasWidth, canvasHeight) + + //绘制完成后将canvas转为为图片 + setTimeout(() => { + wx.hideLoading() + wx.showLoading({ + title: '请稍后', + mask: true + }) + + console.log("基础库信息", wx.getSystemInfoSync().SDKVersion) + + wx.canvasToTempFilePath({ + canvas: data.canvas, + fileType: 'jpg', + quality: 1, + success: (res) => { + console.log("绘制图片成功", res); + wx.uploadFile({ + url: API_BASE_URL + 'common/weChat/uploadImage', + filePath: res.tempFilePath, + name: 'file', + complete: function (res) { + wx.hideLoading() + console.log("上传图片", res) + if (res.statusCode == 200) { + const item = { + url: "", + name: "", + } + item.url = IMG_BASE_URL + res.data; + item.name = res.data; + resolve(item) + } else { + wx.showToast({ + title: "选择失败", + icon: 'none' + }) + } + } + }) + }, + fail: (res) => { + console.log("绘制图片失败", res) + wx.showToast({ + title: "绘制失败", + icon: 'none' + }) + } + }) + }, 500) + } + }) + } + + module.exports = { + addWatermark + } \ No newline at end of file diff --git a/utils/getLocation.js b/utils/getLocation.js new file mode 100644 index 0000000..1e0c223 --- /dev/null +++ b/utils/getLocation.js @@ -0,0 +1,61 @@ +const { + getAddressByLonLat +} = require('../api/api') + +/** + * + * + * 获取用户当前地理位置 + * + * @param {*} e + */ +function getLocationAddress(e) { + return new Promise(async (resolve, reject) => { + wx.showLoading({ + title: '获取定位中', + }) + wx.getLocation({ + type: 'gcj02', + isHighAccuracy: true, + success(resLocation) { + getAddressByLonLat({ + lonLat: resLocation.longitude + "," + resLocation.latitude + }).then((res) => { + wx.hideLoading() + if (res.code == 200) { + var e = { + res, //接口返回信息 + resLocation, //经纬度信息 + } + resolve(e) + } else { + wx.showToast({ + title: '获取定位失败', + icon: 'none' + }) + } + }) + }, + fail(res) { + wx.hideLoading() + wx.showModal({ + title: '提示', + content: '请前往设置开启小程序定位授权', + cancelText: "取消", + confirmText: "确定", + success(res) { + if (res.confirm) { + wx.openSetting({ + withSubscriptions: true, + }) + } + } + }) + } + }) + }) +} + +module.exports = { + getLocationAddress +} \ No newline at end of file diff --git a/utils/permission.js b/utils/permission.js new file mode 100644 index 0000000..e415b07 --- /dev/null +++ b/utils/permission.js @@ -0,0 +1,38 @@ +const { + checkTraderEmpAuth +} = require('../api/api'); +function checkPermission (perm) { + return new Promise((resolve, reject) => { + let userType = wx.getStorageSync('userType'); + if(userType != 'TRADER_EMP'){ //非代理商员工不检验权限字段 + resolve(true); + return; + } + //perm权限关键字 + checkTraderEmpAuth({ + userId:wx.getStorageSync('userId'), + permission:perm + }).then(res=>{ + if(res.code == 200){ + if(!res.data){ + wx.showToast({ + title: "暂无权限", + icon:'none' + }); + resolve(false); + }else{ + resolve(true); + } + }else{ + wx.showToast({ + title: res.errMsg, + icon:'none' + }); + resolve(false); + } + }); + }); +} +module.exports = { + checkPermission +} \ No newline at end of file diff --git a/utils/route.js b/utils/route.js new file mode 100644 index 0000000..85b242a --- /dev/null +++ b/utils/route.js @@ -0,0 +1,41 @@ +function routeLink(url, type) { + let isClick = true; + if(isClick){ + isClick = false; + if(type == 'switchTab'){ + wx.switchTab({ + url: url + }); + }else if(type == 'reLaunch'){ + wx.reLaunch({ + url: url + }); + }else if(type == 'redirect'){ + wx.redirectTo({ + url: url + }); + }else if(type == 'back'){ + wx.navigateBack({ + delta: Number(url) + }); + }else{ + if (getCurrentPages().length > 9) { + wx.redirectTo({ + url: url + }); + } else { + wx.navigateTo({ + url: url + }); + } + } + setTimeout(()=>{ + isClick = true; + },600); + } +}; + +module.exports = { + routeLink: routeLink +} + diff --git a/utils/util.js b/utils/util.js new file mode 100644 index 0000000..e8ae579 --- /dev/null +++ b/utils/util.js @@ -0,0 +1,693 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}` +} +const formatTime2 = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + + return `${[year, month, day].map(formatNumber).join('-')}` +} +const formatNumber = n => { + n = n.toString() + return n[1] ? n : `0${n}` +} +const app = getApp() +const baseURL = app.globalData.url +const monitURL = app.globalData.monitUrl + +function request(method, url, data, cookie) { + return new Promise(function (resolve, reject) { + let header = { + 'content-type': 'application/json', + // 'content-type': 'application/x-www-form-urlencoded', + 'Cookie': 'JSESSIONID=' + cookie + }; + wx.request({ + url: baseURL + url, + method: method, + data: method === 'POST' ? JSON.stringify(data) : data, + header: header, + success(res) { + resolve(res.data); + }, + fail(err) { + //请求失败 + reject(err.data) + } + }) + }) +} + +function request2(options, loading) { + return new Promise(function (resolve, reject) { + if (loading) { + wx.showLoading({ + title: '请稍后...', + mask: true + }) + } + wx.request({ + url: baseURL + options.url, + method: options.method, + data: options.data || {}, + header: options.header || { + 'content-type': 'application/x-www-form-urlencoded' + }, + success(res) { + resolve(res.data); + }, + fail(err) { + //请求失败 + reject(err.data) + }, + complete: function (res) { + if (loading) { + wx.hideLoading(); + } + } + }) + }) +} + +function md5(string) { + function md5_RotateLeft(lValue, iShiftBits) { + return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)); + } + function md5_AddUnsigned(lX, lY) { + var lX4, lY4, lX8, lY8, lResult; + lX8 = (lX & 0x80000000); + lY8 = (lY & 0x80000000); + lX4 = (lX & 0x40000000); + lY4 = (lY & 0x40000000); + lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF); + if (lX4 & lY4) { + return (lResult ^ 0x80000000 ^ lX8 ^ lY8); + } + if (lX4 | lY4) { + if (lResult & 0x40000000) { + return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); + } else { + return (lResult ^ 0x40000000 ^ lX8 ^ lY8); + } + } else { + return (lResult ^ lX8 ^ lY8); + } + } + function md5_F(x, y, z) { + return (x & y) | ((~x) & z); + } + function md5_G(x, y, z) { + return (x & z) | (y & (~z)); + } + function md5_H(x, y, z) { + return (x ^ y ^ z); + } + function md5_I(x, y, z) { + return (y ^ (x | (~z))); + } + function md5_FF(a, b, c, d, x, s, ac) { + a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_F(b, c, d), x), ac)); + return md5_AddUnsigned(md5_RotateLeft(a, s), b); + }; + function md5_GG(a, b, c, d, x, s, ac) { + a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_G(b, c, d), x), ac)); + return md5_AddUnsigned(md5_RotateLeft(a, s), b); + }; + function md5_HH(a, b, c, d, x, s, ac) { + a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_H(b, c, d), x), ac)); + return md5_AddUnsigned(md5_RotateLeft(a, s), b); + }; + function md5_II(a, b, c, d, x, s, ac) { + a = md5_AddUnsigned(a, md5_AddUnsigned(md5_AddUnsigned(md5_I(b, c, d), x), ac)); + return md5_AddUnsigned(md5_RotateLeft(a, s), b); + }; + function md5_ConvertToWordArray(string) { + var lWordCount; + var lMessageLength = string.length; + var lNumberOfWords_temp1 = lMessageLength + 8; + var lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64; + var lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16; + var lWordArray = Array(lNumberOfWords - 1); + var lBytePosition = 0; + var lByteCount = 0; + while (lByteCount < lMessageLength) { + lWordCount = (lByteCount - (lByteCount % 4)) / 4; + lBytePosition = (lByteCount % 4) * 8; + lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition)); + lByteCount++; + } + lWordCount = (lByteCount - (lByteCount % 4)) / 4; + lBytePosition = (lByteCount % 4) * 8; + lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition); + lWordArray[lNumberOfWords - 2] = lMessageLength << 3; + lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29; + return lWordArray; + }; + function md5_WordToHex(lValue) { + var WordToHexValue = "", + WordToHexValue_temp = "", + lByte, lCount; + for (lCount = 0; lCount <= 3; lCount++) { + lByte = (lValue >>> (lCount * 8)) & 255; + WordToHexValue_temp = "0" + lByte.toString(16); + WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2); + } + return WordToHexValue; + }; + function md5_Utf8Encode(string) { + string = string.replace(/\r\n/g, "\n"); + var utftext = ""; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } else if ((c > 127) && (c < 2048)) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + return utftext; + }; + var x = Array(); + var k, AA, BB, CC, DD, a, b, c, d; + var S11 = 7, + S12 = 12, + S13 = 17, + S14 = 22; + var S21 = 5, + S22 = 9, + S23 = 14, + S24 = 20; + var S31 = 4, + S32 = 11, + S33 = 16, + S34 = 23; + var S41 = 6, + S42 = 10, + S43 = 15, + S44 = 21; + string = md5_Utf8Encode(string); + x = md5_ConvertToWordArray(string); + a = 0x67452301; + b = 0xEFCDAB89; + c = 0x98BADCFE; + d = 0x10325476; + for (k = 0; k < x.length; k += 16) { + AA = a; + BB = b; + CC = c; + DD = d; + a = md5_FF(a, b, c, d, x[k + 0], S11, 0xD76AA478); + d = md5_FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756); + c = md5_FF(c, d, a, b, x[k + 2], S13, 0x242070DB); + b = md5_FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE); + a = md5_FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF); + d = md5_FF(d, a, b, c, x[k + 5], S12, 0x4787C62A); + c = md5_FF(c, d, a, b, x[k + 6], S13, 0xA8304613); + b = md5_FF(b, c, d, a, x[k + 7], S14, 0xFD469501); + a = md5_FF(a, b, c, d, x[k + 8], S11, 0x698098D8); + d = md5_FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF); + c = md5_FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1); + b = md5_FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE); + a = md5_FF(a, b, c, d, x[k + 12], S11, 0x6B901122); + d = md5_FF(d, a, b, c, x[k + 13], S12, 0xFD987193); + c = md5_FF(c, d, a, b, x[k + 14], S13, 0xA679438E); + b = md5_FF(b, c, d, a, x[k + 15], S14, 0x49B40821); + a = md5_GG(a, b, c, d, x[k + 1], S21, 0xF61E2562); + d = md5_GG(d, a, b, c, x[k + 6], S22, 0xC040B340); + c = md5_GG(c, d, a, b, x[k + 11], S23, 0x265E5A51); + b = md5_GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA); + a = md5_GG(a, b, c, d, x[k + 5], S21, 0xD62F105D); + d = md5_GG(d, a, b, c, x[k + 10], S22, 0x2441453); + c = md5_GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681); + b = md5_GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8); + a = md5_GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6); + d = md5_GG(d, a, b, c, x[k + 14], S22, 0xC33707D6); + c = md5_GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87); + b = md5_GG(b, c, d, a, x[k + 8], S24, 0x455A14ED); + a = md5_GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905); + d = md5_GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8); + c = md5_GG(c, d, a, b, x[k + 7], S23, 0x676F02D9); + b = md5_GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A); + a = md5_HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942); + d = md5_HH(d, a, b, c, x[k + 8], S32, 0x8771F681); + c = md5_HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122); + b = md5_HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C); + a = md5_HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44); + d = md5_HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9); + c = md5_HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60); + b = md5_HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70); + a = md5_HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6); + d = md5_HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA); + c = md5_HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085); + b = md5_HH(b, c, d, a, x[k + 6], S34, 0x4881D05); + a = md5_HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039); + d = md5_HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5); + c = md5_HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8); + b = md5_HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665); + a = md5_II(a, b, c, d, x[k + 0], S41, 0xF4292244); + d = md5_II(d, a, b, c, x[k + 7], S42, 0x432AFF97); + c = md5_II(c, d, a, b, x[k + 14], S43, 0xAB9423A7); + b = md5_II(b, c, d, a, x[k + 5], S44, 0xFC93A039); + a = md5_II(a, b, c, d, x[k + 12], S41, 0x655B59C3); + d = md5_II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92); + c = md5_II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D); + b = md5_II(b, c, d, a, x[k + 1], S44, 0x85845DD1); + a = md5_II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F); + d = md5_II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0); + c = md5_II(c, d, a, b, x[k + 6], S43, 0xA3014314); + b = md5_II(b, c, d, a, x[k + 13], S44, 0x4E0811A1); + a = md5_II(a, b, c, d, x[k + 4], S41, 0xF7537E82); + d = md5_II(d, a, b, c, x[k + 11], S42, 0xBD3AF235); + c = md5_II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB); + b = md5_II(b, c, d, a, x[k + 9], S44, 0xEB86D391); + a = md5_AddUnsigned(a, AA); + b = md5_AddUnsigned(b, BB); + c = md5_AddUnsigned(c, CC); + d = md5_AddUnsigned(d, DD); + } + return (md5_WordToHex(a) + md5_WordToHex(b) + md5_WordToHex(c) + md5_WordToHex(d)).toLowerCase(); +} + +// const api = { +// login: (data) => request('GET', `main/login/toLogin`, data), +// list: (data) => request('GET', `main/projectManage/ajaxForWaitOrder`, data), +// // 电站详情 +// entryDetail: (data) => request('GET', `main/projectManage/entryDetail`, data), +// saveOrEditCustomerEntry: (data) => request('GET', `main/projectManage/saveOrEditCustomerEntry`, data), +// // 项目列表 +// projectList: (data) => request('GET', `main/projectManage/projectList`, data), +// // 项目删除 +// appletsDelete: (data) => request('GET', `main/projectManage/appletsDelete`, data), +// // 安装方式 +// installWayList: (data) => request('GET', `main/projectManage/installWayList`, data), +// // 获取省 +// getProvinceList: (data) => request('GET', `main/redirect/getProvinceList`, data), +// // 获取市 +// getCitysByProName: (data) => request('GET', `main/redirect/getCitysByProName`, data), +// // 获取区 +// getAreaByCityName: (data) => request('GET', `main/redirect/getAreaByCityName`, data), +// // 信息录入 +// saveOrEditCustomerEntry: (data) => request('GET', `main/projectManage/saveOrEditCustomerEntry`, data), +// // 系统工程师统计 +// statistic: (data) => request('GET', `main/projectManage/statistic`, data), +// // 驳回 +// appletsFailed: (data) => request('GET', `main/projectManage/appletsFailed`, data), +// // 匹配方案 +// findAllPlan: (data) => request('GET', `main/projectManage/findAllPlan`, data), +// // 审核通过并匹配 +// appletsToExamine: (data) => request('GET', `main/projectManage/appletsToExamine`, data), +// // 确认下单 +// batchOrder: (data) => request('GET', `main/projectManage/batchOrder`, data), +// // 确认下单 +// batchReceive: (data) => request('GET', `main/projectManage/batchReceive`, data), +// // 安装完成 +// batchInstall: (data) => request('GET', `main/projectManage/batchInstall`, data), +// // 并网验收 +// mergeAccept: (data) => request('GET', `main/projectManage/mergeAccept`, data), +// // 验收退回 +// notAccept: (data) => request('GET', `main/projectManage/notAccept`, data), +// // 验收确认 +// sureAccept: (data) => request('GET', `main/projectManage/sureAccept`, data), +// // 交付 +// accept: (data) => request('GET', `main/projectManage/accept`, data), +// //并网验收 +// mergeAccept: (data) => request('GET', `main/projectManage/mergeAccept`, data), +// //电站详情 +// entryDetail: (data) => request('GET', `main/projectManage/entryDetail`, data), +// //查看方案 +// viewMatchedPlan: (data) => request('GET', `main/projectManage/viewMatchedPlan`, data), +// //查看验收报告 +// toMergeAccept: (data) => request('GET', `main/projectManage/toMergeAccept`, data), +// //暂存验收报告 +// tempSaveReport: (data) => request('GET', `main/projectManage/tempSaveReport`, data), +// //发送短信验证码 +// sendMsg: (data) => request('GET', `main/customer/sendMsg`, data), +// //提交忘记密码 +// checkConfirmCode: (data, cookie) => request('GET', `main/customer/checkConfirmCode`, data, cookie), +// //根据规格获取方案类型 +// findPlanByAssembly: (data) => request('GET', `main/customer/findPlanByAssembly`, data), +// //获取逆变器并网箱 +// getElectricPlanAll: (data) => request('GET', `main/projectManage/getElectricPlanAll`, data), +// //根据组件总块数 获取逆变器并网箱 +// findElectricPlan: (data) => request('GET', `main/projectManage/findElectricPlan`, data), +// //申请单列表 +// applyOrderList: (data) => request2({ +// url: 'main/apply/ajaxForApplyOrderList', +// method: 'GET', +// data +// }, true), +// //入库单列表 +// inStockList: (data) => request2({ +// url: 'main/inStock/inStockList', +// method: 'GET', +// data +// }, true), +// //出库单列表 +// outStockList: (data) => request2({ +// url: 'main/outStock/outStockList', +// method: 'POST', +// data +// }, true), +// //调拨单列表 +// allocationList: (data) => request2({ +// url: 'main/allocation/allocationList', +// method: 'GET', +// data +// }, true), +// //盘点单列表 +// inventoryList: (data) => request2({ +// url: 'main/smInventory/listInventoryOrder', +// method: 'POST', +// data +// }, true), +// //订单查询列表 +// allLists: (data) => request2({ +// url: 'main/allOrder/list', +// method: 'GET', +// data +// }, true), +// //仓库列表 +// warehouseList: (data) => request('GET', `main/apply/warehouseList`, data), +// //调拨单发货方式 +// getDelivery: (data) => request('POST', `main/allocation/getDelivery`, data), +// //物料统计 +// getIndexNumber: (data) => request('GET', `main/allocation/getIndexNumber`, data), +// //物料组 +// listMaterialGroup: (data) => request('GET', `main/apply/listMaterialGroup`, data), +// //物料类型 +// listMaterialType: (data) => request('GET', `main/apply/listMaterialType`, data), +// //物料列表 +// findMaterialAndBom: (data) => request2({ +// url: 'main/apply/findMaterialAndBom', +// method: 'GET', +// data +// }, true), +// //可出库物料列表 +// findMaterialList: (data) => request2({ +// url: 'main/apply/findMaterialList', +// method: 'GET', +// data +// }, true), +// //保存物料申请单 +// saveApplyOrder: (data) => request2({ +// url: 'main/apply/saveApplyOrder?userId=' + wx.getStorageSync('userId'), +// method: 'POST', +// header: { +// 'content-type': 'application/json', +// }, +// data +// }, true), +// //物料申请单详情 +// applyDetail: (data) => request('GET', `main/apply/applyOrderDetail`, data), +// //出库单详情 +// outStockOrderDetail: (data) => request2({ +// url: 'main/outStock/outStockOrderDetail', +// method: 'POST', +// data +// }, true), +// //调拨单详情 +// allocationDetail: (data) => request2({ +// url: 'main/allocation/allocationDetail', +// method: 'GET', +// data +// }, true), +// //盘点单详情 +// inventoryOrderDetail: (data) => request2({ +// url: 'main/smInventory/inventoryOrderDetail', +// method: 'POST', +// data +// }, true), +// //订单查询详情 +// allOrderDetail: (data) => request2({ +// url: 'main/allOrder/orderDetail', +// method: 'GET', +// data +// }, true), +// //调拨单入库 +// inAllocationOrder: (data) => request2({ +// url: 'main/allocation/inAllocationOrder?userId=' + wx.getStorageSync('userId'), +// method: 'POST', +// header: { +// 'content-type': 'application/json', +// }, +// data +// }, true), +// //调拨单出库 +// outAllocationOrder: (data) => request2({ +// url: 'main/allocation/outAllocationOrder?userId=' + wx.getStorageSync('userId'), +// method: 'POST', +// header: { +// 'content-type': 'application/json', +// }, +// data +// }, true), +// //新增使用出库单 +// saveOutStockOrder: (data) => request2({ +// url: 'main/outStock/saveOutStockOrder', +// method: 'POST', +// header: { +// 'content-type': 'application/json', +// }, +// data +// }, true), +// //入库单详情 +// inStockOrderDetail: (data) => request2({ +// url: 'main/inStock/inStockOrderDetail', +// method: 'GET', +// data +// }, true), +// //入库单入库 +// inStockAdd: (data) => request2({ +// url: 'main/inStock/inStock?userId=' + wx.getStorageSync('userId'), +// method: 'POST', +// header: { +// 'content-type': 'application/json', +// }, +// data +// }, true), +// //入库单打回 +// inStockGiveBack: (data) => request2({ +// url: 'main/inStock/giveBack?userId=' + wx.getStorageSync('userId'), +// method: 'POST', +// data +// }, true), +// //订单查询删除 +// deleteOrder: (data) => request2({ +// url: 'main/allOrder/deleteOrder', +// method: 'POST', +// data +// }, true), +// findPlanByAssembly: (data) => request('GET', `main/projectManage/findPlanByAssembly`, data), +// // 获取民族 +// getNationals: (data) => request('GET', `main/projectManage/getNationals`, data), +// // 进件申请(第一次) +// saveIncomingApplication: (data) => request('POST', `main/projectManage/saveIncomingApplication`, data), +// //3、查询征信接口 +// lookCreditResult: (data) => request('GET', `main/projectManage/lookCreditResult`, data), +// //进件详情 +// getOnceIncomingApplication: (data) => request('GET', `main/projectManage/getOnceIncomingApplication`, data), +// //获取省 +// getProvince: (data) => request('GET', `main/projectManage/getProvince`, data), +// //根据省的id 获取市 +// getCityByPros: (data) => request('GET', `main/projectManage/getCityByPros`, data), +// //根据市的id 获取区 +// getAreaByCity: (data) => request('GET', `main/projectManage/getAreaByCity`, data), +// //进件结果查询 +// lookApplyResult: (data) => request('GET', `main/projectManage/lookApplyResult`, data), +// //二次申请 +// nextIncomingApplication: (data) => request('POST', `main/projectManage/nextIncomingApplication`, data), +// // +// uploadTwoAttachment: (data) => request('GET', `main/projectManage/uploadTwoAttachment`, data), +// // + +// } +const toast = (title, time, icon) => { + wx.showToast({ + title: title, + duration: time, + icon: icon, + mask: true + }) +} + +const req = (url, data, method, header, contentType) => { + let noTokenUrl = ['oauth/miniapp/token','oauth/miniapp/logout']; + if(noTokenUrl.some((item)=>{return item== url})){//不需要加token + var _header = { + 'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded', + 'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=', + 'Tenant-Id': '000000', + } + }else{//需要加token + var _header = { + 'Content-Type': contentType === '1' ? 'application/json' : 'application/x-www-form-urlencoded', + 'Authorization': 'Basic c2FiZXIzOnNhYmVyM19zZWNyZXQ=', + 'Blade-Requested-With':'BladeHttpRequest', + 'Blade-Auth': 'bearer ' + wx.getStorageSync('TOKEN'), + } + } + return new Promise((resolve, reject) => { + wx.request({ + url: monitURL + url, + data: data, + method: method, + header: {..._header,...header}, + success: function (res) { + resolve(res.data) + }, + fail: function (res) { + reject(res); + }, + complete: function (res) { + if(res.data.code == '401'){//登录失效 + console.log('登录失效') + wx.showModal({ + content: '登录过期,是否重新登录?', + success(res) { + if (res.cancel) {} else if (res.confirm) { + wx.clearStorage() + wx.reLaunch({ + url: '/pages/index/index', + }) + } + } + }) + } + } + }) + }) +} + +var turnEmpty = obj => { + if (obj == undefined) { + return '' + } else if (obj == 'undefined') { + return '' + } else if (obj == null) { + return '' + } else if (obj == 'null') { + return '' + } else { + return obj + } +} + +/* 防抖函数封装 */ +function debounce(fn, interval) { + let timer; + let delay = interval || 1000; // 间隔的时间,如果interval不传,则默认1秒 + return function () { + let that = this; + let args = arguments; // 保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。 + if (timer) { + clearTimeout(timer); + } + timer = setTimeout(function () { + fn.apply(that, args); // 用apply指向调用debounce的对象,相当于this.fn(args); + }, delay); + }; +} + +/** + * 根据身份证号,获取精缺周岁年龄 + * @param {Object} idNumber 身份证号 + */ +function getAgeByPid(idNumber){ + var birthYear = idNumber.substr(6,4) + var birthMonth = idNumber.substr(10,2) + var birthDay = idNumber.substr(12,2) + var d = new Date(); + var nowYear = d.getFullYear(); + var nowMonth = d.getMonth() + 1; + var nowDay = d.getDate(); + var returnAge = 0 + if(nowYear == birthYear){ + returnAge = 0;//同年 则为0岁 + }else{ + var ageDiff = nowYear - birthYear ; //年之差 + if(ageDiff > 0){ + if(nowMonth == birthMonth){ + var dayDiff = nowDay - birthDay;//日之差 + if(dayDiff < 0){ + returnAge = ageDiff - 1; + }else{ + returnAge = ageDiff ; + } + }else{ + var monthDiff = nowMonth - birthMonth;//月之差 + if(monthDiff < 0){ + returnAge = ageDiff - 1; + }else{ + returnAge = ageDiff ; + } + } + }else{ + returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天 + } + } + return returnAge;//返回周岁年龄 +} + +var filterItem = function(key, value, arr){ + if (!(arr && arr.length > 0)) { + return {} + } + var item = []; + for(var i = 0; i= value){ + item.push(arr[i]) + } + } + return item.length ? item[0] : {} +} + +module.exports = { + formatTime, + formatTime2, + // api, + toast, + req, + turnEmpty, + debounce, + getAgeByPid, + md5, + idCard(value,rule, param, models) { + if (!value || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(value)) { + return true; + } + }, + validatePhoneNumber(value,rule, param, models) { + if (!value || !/^[1][3-9]\d{9}$/i.test(value)) { + return true; + } + }, + validateBankNum(value,rule, param, models) { //长度在15到19位 + if (!value || !/^(?:[1-9]\d{14}(?:\d|L|U|C|X|P|S|Q|R|Z|N|G|B|E|K|H|V|W|Y|T)?|\d{15,19})$/.test(value)) { + return true; + } + }, + isDate(str){ + // 日期字符串的格式:yyyy-mm-dd + var datePattern = /^\d{4}-\d{1,2}-\d{1,2}$/; + return datePattern.test(str); + }, + num(rule, value, param, models) { + if (!value || !/^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/.test(value)) { + return rule.message; + } + }, + filterItem:filterItem, +} \ No newline at end of file diff --git a/wxs/util.wxs b/wxs/util.wxs new file mode 100644 index 0000000..d2d22c7 --- /dev/null +++ b/wxs/util.wxs @@ -0,0 +1,128 @@ +var referenceDrawing = function (item, planList) { + + if (!item || !planList || !planList.length > 0) { + return [] + } + + + // console.log("item====item", JSON.stringify(item)) + + // console.log("planList====planList", JSON.stringify(planList)) + + var planTypeObj = {} + for (var index = 0; index < planList.length; index++) { + var element = planList[index]; + if (element.allPlan.length > 0) { + for (var indexItem = 0; indexItem < element.allPlan.length; indexItem++) { + var elementItem = element.allPlan[indexItem]; + if (elementItem.id == item.id) { + planTypeObj = element + } + } + } + } + + + // console.log("planTypeObj===planTypeObj", JSON.stringify(planTypeObj)) + + var planNameObj = {} + if(planTypeObj.allPlan&&planTypeObj.allPlan.length){ + for (var index = 0; index < planTypeObj.allPlan.length; index++) { + var element = planTypeObj.allPlan[index]; + if (element.id == item.id) { + planNameObj = element + } + } + } + + + var list = [] + if (planNameObj.attach && planNameObj.attach_name) { + list.push({ + "name": planNameObj.attach_name, + "path": planNameObj.attach + }) + } + + if (planNameObj.attach2 && planNameObj.attach_name2) { + list.push({ + "name": planNameObj.attach_name2, + "path": planNameObj.attach2 + }) + } + + + // console.log("===================================", JSON.stringify(list)) + + return list +} + +var formartFileName = function(url){ + var fName = url; + fName = fName.trim(); + return fName.substring(fName.lastIndexOf("/")+1) +} + +var itemListLen = function(arr, materialModel, str){ + var newArr = [] + arr.forEach(function(item){ + if(item.model === materialModel && item.spec === str){ + newArr.push(item) + } + }) + if(newArr.length>0){ + return newArr[0].itemList.length + }else{ + return 0 + } +} + +var findItem = function(key, value, arr){ + if (!arr.length > 0) { + return [] + } + var item = []; + for(var i = 0; i 0)) { + return [] + } + var item = []; + for(var i = 0; i= value){ + item.push(arr[i]) + } + } + return item +} + +var toFixedNum = function(num, len=2){ + var numStr = num*1; + return numStr.toFixed(len) +} + +var platformCheck = function(perm, permList){ + var isCheck = false + permList.forEach(function(item){ + if(item === perm){ + isCheck = true + } + }) + return isCheck +} + +module.exports = { + referenceDrawing: referenceDrawing, + formartFileName: formartFileName, + itemListLen: itemListLen, + toFixedNum: toFixedNum, + findItem: findItem, + filterItem: filterItem, + platformCheck:platformCheck +} \ No newline at end of file