tplus-member 1.27.1 → 1.27.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. package/dist/api.js +533 -0
  2. package/dist/api.js.map +1 -0
  3. package/dist/controllers/FeedbackController.js +53 -0
  4. package/dist/controllers/FeedbackController.js.map +1 -0
  5. package/dist/controllers/MemberOrderController.js +359 -0
  6. package/dist/controllers/MemberOrderController.js.map +1 -0
  7. package/dist/controllers/OpenCardController.js +289 -0
  8. package/dist/controllers/OpenCardController.js.map +1 -0
  9. package/dist/controllers/defaultConfig.js +19 -0
  10. package/dist/controllers/defaultConfig.js.map +1 -0
  11. package/dist/dataProvider/member.js +144 -0
  12. package/dist/dataProvider/member.js.map +1 -0
  13. package/dist/dataProvider/openCard.js +145 -0
  14. package/dist/dataProvider/openCard.js.map +1 -0
  15. package/dist/domain/member/AuthProcess.js +42 -0
  16. package/dist/domain/member/AuthProcess.js.map +1 -0
  17. package/dist/domain/member/CardCodeChangedProcessor.js +35 -0
  18. package/dist/domain/member/CardCodeChangedProcessor.js.map +1 -0
  19. package/dist/domain/member/CheckCardCodeAndCodeProcessor.js +48 -0
  20. package/dist/domain/member/CheckCardCodeAndCodeProcessor.js.map +1 -0
  21. package/dist/domain/member/CheckMobilephoneFormatProcessor.js +38 -0
  22. package/dist/domain/member/CheckMobilephoneFormatProcessor.js.map +1 -0
  23. package/dist/domain/member/CheckPresentAmountProcessor.js +99 -0
  24. package/dist/domain/member/CheckPresentAmountProcessor.js.map +1 -0
  25. package/dist/domain/member/EffectiveDateChangedProcessor.js +50 -0
  26. package/dist/domain/member/EffectiveDateChangedProcessor.js.map +1 -0
  27. package/dist/domain/member/GetThisPresentAmountProcessor.js +116 -0
  28. package/dist/domain/member/GetThisPresentAmountProcessor.js.map +1 -0
  29. package/dist/domain/member/InitDataDeductionProcessor.js +68 -0
  30. package/dist/domain/member/InitDataDeductionProcessor.js.map +1 -0
  31. package/dist/domain/member/InitDataProcessor.js +140 -0
  32. package/dist/domain/member/InitDataProcessor.js.map +1 -0
  33. package/dist/domain/member/InitDataProjectProcessor.js +102 -0
  34. package/dist/domain/member/InitDataProjectProcessor.js.map +1 -0
  35. package/dist/domain/member/IsMemberEffectiveProcessor.js +45 -0
  36. package/dist/domain/member/IsMemberEffectiveProcessor.js.map +1 -0
  37. package/dist/domain/member/IsMemberEnableProcessor.js +38 -0
  38. package/dist/domain/member/IsMemberEnableProcessor.js.map +1 -0
  39. package/dist/domain/member/IsMemberExpirationProcessor.js +46 -0
  40. package/dist/domain/member/IsMemberExpirationProcessor.js.map +1 -0
  41. package/dist/domain/member/IsMemberPasswordSameProcessor.js +41 -0
  42. package/dist/domain/member/IsMemberPasswordSameProcessor.js.map +1 -0
  43. package/dist/domain/member/IsMemberStorageForStoreProcessor.js +40 -0
  44. package/dist/domain/member/IsMemberStorageForStoreProcessor.js.map +1 -0
  45. package/dist/domain/member/MemberTypeChangedProcessor.js +120 -0
  46. package/dist/domain/member/MemberTypeChangedProcessor.js.map +1 -0
  47. package/dist/domain/member/MobilephoneChangedProcessor.js +39 -0
  48. package/dist/domain/member/MobilephoneChangedProcessor.js.map +1 -0
  49. package/dist/domain/member/PersonProcesser.js +35 -0
  50. package/dist/domain/member/PersonProcesser.js.map +1 -0
  51. package/dist/domain/member/PriuserdefChangedProcessor.js +50 -0
  52. package/dist/domain/member/PriuserdefChangedProcessor.js.map +1 -0
  53. package/dist/domain/operationLog/AddLogProcessor.js +50 -0
  54. package/dist/domain/operationLog/AddLogProcessor.js.map +1 -0
  55. package/dist/domain/operationLog/OperationConfig.js +34 -0
  56. package/dist/domain/operationLog/OperationConfig.js.map +1 -0
  57. package/dist/domain/operationLog/OperationLog.js +146 -0
  58. package/dist/domain/operationLog/OperationLog.js.map +1 -0
  59. package/dist/index.js +124 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/member/MemberPhoto.js +268 -0
  62. package/dist/member/MemberPhoto.js.map +1 -0
  63. package/dist/member/MemberShow.js +167 -0
  64. package/dist/member/MemberShow.js.map +1 -0
  65. package/dist/member/ShopMember.js +1096 -0
  66. package/dist/member/ShopMember.js.map +1 -0
  67. package/dist/member/ShopMember.less +605 -0
  68. package/dist/member/api.js +726 -0
  69. package/dist/member/api.js.map +1 -0
  70. package/dist/member/color.less +32 -0
  71. package/dist/member/index.js +843 -0
  72. package/dist/member/index.js.map +1 -0
  73. package/dist/member/index.less +466 -0
  74. package/dist/member/memberTab.js +675 -0
  75. package/dist/member/memberTab.js.map +1 -0
  76. package/dist/memberMenu/changeMemberCard/index.js +268 -0
  77. package/dist/memberMenu/changeMemberCard/index.js.map +1 -0
  78. package/dist/memberMenu/changeMemberCard/style.less +43 -0
  79. package/dist/memberMenu/index.js +826 -0
  80. package/dist/memberMenu/index.js.map +1 -0
  81. package/dist/memberMenu/modifyPass/index.js +207 -0
  82. package/dist/memberMenu/modifyPass/index.js.map +1 -0
  83. package/dist/memberMenu/modifyPass/store.js +357 -0
  84. package/dist/memberMenu/modifyPass/store.js.map +1 -0
  85. package/dist/memberMenu/modifyPass/style.less +91 -0
  86. package/dist/memberMenu/style.less +82 -0
  87. package/dist/socket.js +164 -0
  88. package/dist/socket.js.map +1 -0
  89. package/dist/utils.js +246 -0
  90. package/dist/utils.js.map +1 -0
  91. package/dist/viewController/MemberOrderViewController.js +144 -0
  92. package/dist/viewController/MemberOrderViewController.js.map +1 -0
  93. package/dist/viewDoMain/CheckMemberProcessorBlock.js +53 -0
  94. package/dist/viewDoMain/CheckMemberProcessorBlock.js.map +1 -0
  95. package/dist/viewDoMain/CheckMemberStorageProcessorBlock.js +85 -0
  96. package/dist/viewDoMain/CheckMemberStorageProcessorBlock.js.map +1 -0
  97. package/dist/viewDoMain/CheckSelectMemberProcessorBlock.js +69 -0
  98. package/dist/viewDoMain/CheckSelectMemberProcessorBlock.js.map +1 -0
  99. package/dist/viewDoMain/CheckUpdatePasswordProcessorBlock.js +44 -0
  100. package/dist/viewDoMain/CheckUpdatePasswordProcessorBlock.js.map +1 -0
  101. package/dist/viewDoMain/MemberDataChangedProcessorBlock.js +66 -0
  102. package/dist/viewDoMain/MemberDataChangedProcessorBlock.js.map +1 -0
  103. package/dist/viewDoMain/MemberDataPreSaveProcessorBlock.js +79 -0
  104. package/dist/viewDoMain/MemberDataPreSaveProcessorBlock.js.map +1 -0
  105. package/dist/viewModels/MemberDeduction.js +862 -0
  106. package/dist/viewModels/MemberDeduction.js.map +1 -0
  107. package/dist/viewModels/MemberOrder.js +248 -0
  108. package/dist/viewModels/MemberOrder.js.map +1 -0
  109. package/dist/viewModels/MemberProject.js +953 -0
  110. package/dist/viewModels/MemberProject.js.map +1 -0
  111. package/dist/viewModels/MemberStore.js +310 -0
  112. package/dist/viewModels/MemberStore.js.map +1 -0
  113. package/dist/views/commonPerson/commonPerson.less +54 -0
  114. package/dist/views/commonPerson/commonPersonModal.js +459 -0
  115. package/dist/views/commonPerson/commonPersonModal.js.map +1 -0
  116. package/dist/views/memberDeduction/MemberDeductionView.js +837 -0
  117. package/dist/views/memberDeduction/MemberDeductionView.js.map +1 -0
  118. package/dist/views/memberDeduction/deductionSuccess.js +62 -0
  119. package/dist/views/memberDeduction/deductionSuccess.js.map +1 -0
  120. package/dist/views/memberDeduction/memberDeduction.less +238 -0
  121. package/dist/views/memberManage/MemberOrderView.js +427 -0
  122. package/dist/views/memberManage/MemberOrderView.js.map +1 -0
  123. package/dist/views/memberManage/memberOrder.less +72 -0
  124. package/dist/views/memberProject/GroupProjectModal.js +676 -0
  125. package/dist/views/memberProject/GroupProjectModal.js.map +1 -0
  126. package/dist/views/memberProject/MemberProjectView.js +578 -0
  127. package/dist/views/memberProject/MemberProjectView.js.map +1 -0
  128. package/dist/views/memberProject/SelectProjectModal.js +330 -0
  129. package/dist/views/memberProject/SelectProjectModal.js.map +1 -0
  130. package/dist/views/memberProject/memberProject.less +334 -0
  131. package/dist/views/memberRecharge/MemberStoreView.js +546 -0
  132. package/dist/views/memberRecharge/MemberStoreView.js.map +1 -0
  133. package/dist/views/memberRecharge/memberStore.less +148 -0
  134. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["tplus-member/member/index.js"],"names":["emptyMemberImage","memberBirthday","currentMember","MemberTag","observer","props","state","searchValue","titleModal","memberShow","memberPhoto","searchVisible","shopPerson","status","dtMember","connectCardStatus","connectCardError","controllerEvent","methodName","methodArgs","context","onEvent","Action","fromJS","viewModel","resetInShopMemberTimer","count","timer","clearTimeout","time","setTimeout","getInStoreMemberCount","openPhotoModal","openFaceRecognition","Message","warn","setState","openShowModal","res","title","data","Member","newAvatar","jsMember","updateMember","ImageFile","viewMemberInfo","openCloseModal","memberStore","items","find","el","name","uiState","tip","info","ModalWraper","confirm","className","content","onOk","ms","clearSeletMember","handleCloseBirthdayModal","changeBirthdayShow","handleSearch","val","handleFocus","isMemberInputType","_this","cb","searchMember","undefined","Keyboard","open2","v","value","getNewValue","inputSearch","keyboardClose","localStore","get","blur","handleBlur","close2","handleReadICard","readRfCard","handleShowModal","type","params","handlePhotoModal","SetKeyBoardDisplay","isHorizontalSunMi","window","android_setKeyBoard","searchLoading","trim","memberSearched","selectMemberSuccess","getSearchMember","currentPage","pageSize","key","isSingleMember","then","ret","columnInfo","ColumnInfo","Data","JSON","parse","MemberType","IsStorage","isStorageCardInputType","iseyboardKEnter","keypressStime","length","stores","drawerStore","init","onHide","selectMemberInfo","memberChangeData","deepCloneMember","listArr","seletMember","isMobileEnvironment","catch","onKeyPressed","e","keyCode","stime","etime","Date","computedCoupon","member","couponKey","DynamicPropertyKeys","DynamicPropertyValues","couponIndex","findIndex","loadFaceRecognition","faceLoading","inShopLoading","loadInStoreMember","String","tipMessage","console","log","err","changeScanProduct","scanObj","startScan","onScanResult","loginInfo","IsOnlyControlStorageCardInputType","OpenFaceRecognition","ICCardServer","ICCardPassword","parseInt","iCCardServer","iCCardPassword","API","platform","isHorizontalPad","hasElectron","env","constant","electron","bind","memberChange","ID","connectRfCard","removeEventListener","windowOnresize","closeRfCard","nextProps","isSendMessage","nativeMs","setIpcRendererMethod","result","error","cardPsw","cardSec","cardKm","mode","authProcess","precisionInfo","viewVoucher","isTakeTheir","getIsTakeTheir","isSelectedMember","input","scan","Name","CardCode","BalanceStorage","BalanceIntegral","birthdayShow","Component","propTypes","PropTypes","func","contextTypes","object","defaultProps"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAA;;;;;;;;;;;AAKA;;;;AAEA;;AACA;;AACA;;;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AAGA;AACA,IAAMA,mBAAmB,yDAAzB;AACA,IAAMC,iBAAiB,mEAAvB;AACA,IAAIC,sBAAJ;;IAGMC,S,OADLC,mB;;;AA8BG,uBAAYC,KAAZ,EAAmB;AAAA;;AAAA,iJACTA,KADS;;AAAA,eA3BnBC,KA2BmB,GA3BX;AACJC,yBAAa,EADT;AAEJC,wBAAY,EAFR;AAGJC,wBAAY,KAHR;AAIJC,yBAAa,KAJT;AAKJC,2BAAe,KALX;AAMJC,wBAAY,CANR;AAOJC,oBAAQ,CAPJ,EAOc;AAClBC,sBAAU,EARN,EAQa;AACjBC,+BAAmB,KATf,EASsB;AAC1BC,8BAAkB,EAVd,CAUkB;AAVlB,SA2BW;;AAAA,eAoEnBC,eApEmB,GAoED,UAACC,UAAD,EAAaC,UAAb,EAA4B;AAC1C,mBAAKC,OAAL,CAAaC,OAAb,CAAqB,EAAE,mBAAmBC,qBAAOC,MAAP,CAAc,OAAKH,OAAL,CAAaI,SAA3B,EAAsCN,UAAtC,CAArB,EAArB,EAA+F,iBAA/F,EAAkHC,UAAlH;AACH,SAtEkB;;AAAA,eAwEnBM,sBAxEmB,GAwEM,UAACC,KAAD,EAAW;AAChC,mBAAKC,KAAL,IAAcC,aAAa,OAAKD,KAAlB,CAAd;AACA,gBAAI,CAACD,KAAL,EAAY;AACZ,gBAAMG,OAAO,IAAI,EAAJ,GAAS,IAAtB;AACA,mBAAKF,KAAL,GAAaG,WAAW,YAAM;AAC1B,uBAAKC,qBAAL;AACH,aAFY,EAEVF,IAFU,CAAb;AAGH,SA/EkB;;AAAA,eA8HnBG,cA9HmB,GA8HF,YAAM;AACnB,gBAAI,CAAC,OAAKC,mBAAV,EAA8B;AAC1BC,8CAAQC,IAAR,CAAa,qBAAb;AACA;AACH;AACD,mBAAKC,QAAL,CAAc;AACV1B,6BAAa,IADH;AAEVF,4BAAY;AAFF,aAAd;AAIH,SAvIkB;;AAAA,eAyInB6B,aAzImB,GAyIH,UAACxB,MAAD,EAASyB,GAAT,EAAiB;AAC7B,gBAAIC,QAAQ,EAAZ;;AAD6B,uBAEU,OAAKnB,OAAL,CAAaI,SAAb,IAA0B,EAFpC;AAAA,iCAErBgB,IAFqB;;AAAA,kDAEG,EAFH;AAAA,6CAEbC,MAFa;AAAA,gBAEbA,MAFa,oCAEJ,EAFI;AAAA,gBAGtBC,SAHsB,GAGT,OAAKpC,KAHI,CAGtBoC,SAHsB;;AAI7B,gBAAMC,WAAW,gBAAKF,MAAL,CAAjB;AACA,gBAAMG,eAAeF,uCAAgBC,QAAhB,IAA0BE,WAAWH,SAArC,MAAkDC,QAAvE;AACA,oBAAQ9B,MAAR;AACI,qBAAK,CAAL;AACI0B,4BAAQ,MAAR;AACA,2BAAKH,QAAL,CAAc,EAAEU,gBAAgBF,YAAlB,EAAd;AACA;AACJ,qBAAK,CAAL;AACIL,4BAAQ,MAAR;AACA,2BAAKH,QAAL,CAAc,EAAEU,gBAAgBR,GAAlB,EAAd;AACA;AACJ,qBAAK,CAAL;AACIC,4BAAQ,MAAR;AACA,2BAAKH,QAAL,CAAc,EAAEU,gBAAgBR,GAAlB,EAAd;AACA;AAZR;AAcA,mBAAKF,QAAL,CAAc;AACVvB,wBAAQA,MADE;AAEVJ,4BAAY,IAFF;AAGVD,4BAAY+B;AAHF,aAAd;AAKH,SAlKkB;;AAAA,eAoKnBQ,cApKmB,GAoKF,YAAM;AACnB,gBAAMC,cAAc,OAAK5B,OAAL,CAAaI,SAAb,IAA0B,OAAKJ,OAAL,CAAaI,SAAb,CAAuByB,KAAvB,CAA6BC,IAA7B,CAAkC;AAAA,uBAAIC,GAAGC,IAAH,IAAS,aAAb;AAAA,aAAlC,CAA9C;AACA,gBAAMC,UAAUL,YAAYK,OAA5B;AACA,gBAAG,CAAC,CAACA,QAAQC,GAAb,EAAiB;AACbpB,8CAAQqB,IAAR,CAAaF,QAAQC,GAArB;AACA;AACH;AACHE,8CAAYC,OAAZ,CAAoB;AAClBC,2BAAW,qBADO;AAElBnB,uBAAO,MAFW;AAGlBoB,yBAAS,YAHS;AAIlBC,sBAAM,gBAAM;AACV,2BAAKC,EAAL,CAAQC,gBAAR;AACD;AANiB,aAApB;AAQD,SAnLkB;;AAAA,eAsLnBC,wBAtLmB,GAsLQ,YAAM;AAC7B,mBAAKF,EAAL,CAAQG,kBAAR,CAA2B,KAA3B;AACH,SAxLkB;;AAAA,eA0LnBC,YA1LmB,GA0LJ,UAACC,GAAD,EAAS;AACpB,mBAAK9B,QAAL,CAAc,EAAE7B,aAAa2D,GAAf,EAAd;AACH,SA5LkB;;AAAA,eA8LnBC,WA9LmB,GA8LL,UAAChB,EAAD,EAAQ;AAClB,gBAAI,OAAKiB,iBAAT,EAA4B;AAC5B,gBAAMC,cAAN;AACA,qBAASC,EAAT,GAAc;AACZD,sBAAME,YAAN,CAAmBC,SAAnB,EAA8B,IAA9B;AACD;AACDC,2CAASC,KAAT,CAAe,UAACC,CAAD,EAAO;AAClB,oBAAMC,QAAQH,+BAASI,WAAT,CAAqB,OAAKC,WAA1B,EAAuC,OAAKA,WAAL,CAAiBF,KAAxD,EAA+DD,CAA/D,CAAd;AACA,uBAAKV,YAAL,CAAkBW,KAAlB;AACH,aAHD,EAGGN,EAHH,EAGO,OAAKS,aAHZ,EAG4B,UAH5B,EAGwCC,2BAAWC,GAAX,CAAe,UAAf,CAHxC;AAIH,SAxMkB;;AAAA,eA0MnBF,aA1MmB,GA0MH,YAAM;AACpB,mBAAKD,WAAL,CAAiBI,IAAjB;AACD,SA5MkB;;AAAA,eA6MnBC,UA7MmB,GA6MN,YAAM;AACfV,2CAASW,MAAT;AACH,SA/MkB;;AAAA,eAiNnBC,eAjNmB,GAiND,YAAM;AACpB,mBAAKC,UAAL;AACH,SAnNkB;;AAAA,eAqNnBC,eArNmB,GAqND,UAACC,IAAD,EAAOC,MAAP,EAAkB;AAChC,gBAAIA,MAAJ,EAAY;AACR,uBAAKrD,QAAL,CAAc,EAAEtB,UAAU2E,MAAZ,EAAoBhF,YAAY+E,IAAhC,EAAd;AACH,aAFD,MAEO;AACH,uBAAKpD,QAAL,CAAc,EAAE3B,YAAY+E,IAAd,EAAd;AACH;AACD,gBAAIA,IAAJ,EAAU;AACN,uBAAKpD,QAAL,CAAc;AACV7B,iCAAa;AADH,iBAAd;AAGH;AACJ,SAhOkB;;AAAA,eAkOnBmF,gBAlOmB,GAkOA,UAACF,IAAD,EAAO9C,SAAP,EAAqB;AACtC,gBAAIA,SAAJ,EAAe;AACT,uBAAKN,QAAL,CAAc;AACVM,wCADU;AAEVhC,iCAAa8E;AAFH,iBAAd;AAIH,aALH,MAKS;AACH,uBAAKpD,QAAL,CAAc,EAAE1B,aAAa8E,IAAf,EAAd;AACH;AACJ,SA3OkB;;AAAA,eA6OnBG,kBA7OmB,GA6OE,UAACf,KAAD,EAAW;AAC5B,mBAAKgB,iBAAL,IAA0BC,OAAOC,mBAAjC,IAAwDD,OAAOC,mBAAP,CAA2BH,kBAA3B,CAA8Cf,KAA9C,CAAxD;AACH,SA/OkB;;AAAA,eAiPnBL,YAjPmB,GAiPJ,UAACL,GAAD,EAAMsB,IAAN,EAAe;AAC1B,gBAAI,CAAC,OAAK3B,EAAN,IAAY,OAAKkC,aAArB,EAAoC;AADV,gBAEnBxF,WAFmB,GAEJ,OAAKD,KAFD,CAEnBC,WAFmB;;AAG1B2D,kBAAMA,OAAO,CAAC3D,eAAe,EAAhB,EAAoByF,IAApB,EAAb;AACA,gBAAI,CAAC9B,GAAL,EAAU;AAJgB,+BAKsB,OAAK7D,KAL3B;AAAA,gBAKlB4F,cALkB,gBAKlBA,cALkB;AAAA,gBAKFC,mBALE,gBAKFA,mBALE;;AAM1B,mBAAKH,aAAL,GAAqB,IAArB;AACA,mBAAK3D,QAAL,CAAc,EAACzB,eAAe,IAAhB,EAAd;AACA,mBAAKkD,EAAL,CAAQsC,eAAR,CAAwB;AACpBC,6BAAa,CADO;AAEpBC,0BAAU,EAFU;AAGpBC,qBAAKpC,GAHe;AAIpBqC,gCAAgB;AAJI,aAAxB,EAKGC,IALH,CAKQ,eAAO;AACX,uBAAKT,aAAL,GAAqB,KAArB;;AADW,4BAE4BU,OAAO,EAFnC;AAAA,oBAEQC,UAFR,SAEJC,UAFI;AAAA,oBAEoBC,IAFpB,SAEoBA,IAFpB;;AAGX,oBAAMpE,OAAOqE,KAAKC,KAAL,CAAWF,IAAX,KAAoB,EAAjC;AACA,oBAAMrD,OAAOf,KAAK,CAAL,CAAb;AACA,uBAAKJ,QAAL,CAAc,EAACzB,eAAe,KAAhB,EAAuB+F,sBAAvB,EAAd;;AAEA,oBAAInD,QAAQA,KAAKwD,UAAL,CAAgBC,SAAxB,IAAqC,OAAKC,sBAA1C,IAAoE,OAAKC,eAA7E,EAA6F;AACzF,2BAAKjD,YAAL,CAAkB,EAAlB;AACA,2BAAKkD,aAAL,GAAqB,IAArB;AACAjF,kDAAQC,IAAR,CAAa,YAAb;AACA;AACH;AACD,oBAAIoB,IAAJ,EAAU;AACN,wBAAIf,KAAK4E,MAAL,GAAc,CAAlB,EAAqB;AACjB,+BAAKzB,kBAAL,CAAwB,CAAxB;AACA,4BAAItB,cAAJ;AACAgD,+CAAOC,WAAP,CAAmBC,IAAnB,CAAwB;AACpBhF,mCAAO,MADa;AAEpB+D,iCAAK,QAFe;AAGpBkB,oCAAO,kBAAI;AACP,uCAAK7B,kBAAL,CAAwB,CAAxB;AADO,4DAE2BtB,MAAMR,EAFjC,CAEC4D,gBAFD;AAAA,oCAECA,gBAFD,yCAEoB,EAFpB;;AAGP,oCAAMC,mBAAmB,oBAAYD,gBAAZ,EAA8BL,MAA9B,GAAuCK,gBAAvC,GAA0DjD,SAAnF;AACA,oCAAMmD,kBAAkBD,oBAAoBb,KAAKC,KAAL,CAAW,yBAAeY,gBAAf,CAAX,CAA5C;AACA,oCAAIC,eAAJ,EAAqB;AACjB,2CAAKvF,QAAL,CAAc;AACV7B,qDAAa;AADH,qCAAd;AAGH;AACJ,6BAbmB;AAcpBqH,qCAASpF;AAdW,yBAAxB;AAgBH,qBAnBD,MAmBO;AACHyD,0CAAkBA,eAAe1C,IAAf,EAAqB,UAArB,CAAlB;AACA,mDAAeA,IAAf;AACA,4BAAI,0BAAcA,IAAd,CAAJ,EAAyB;AACzB,+BAAKM,EAAL,CAAQgE,WAAR,CAAoBtE,IAApB,EAA0B,IAA1B;AACAzB,mCAAW;AAAA,mCAAM,OAAKM,QAAL,CAAc,EAAE7B,aAAa,EAAf,EAAd,CAAN;AAAA,yBAAX,EAAqD,CAArD;AACA,+BAAK4E,UAAL;AACAe,+CAAuBA,qBAAvB;AACH;AACJ,iBA7BD,MA6BO;AACH,wBAAIV,SAAS,IAAb,EAAkB;AACdtD,sDAAQC,IAAR,CAAa,OAAb;AACA,4BAAI,OAAK2F,mBAAT,EAA8B;AAC1BhG,uCAAW;AAAA,uCAAM,OAAKM,QAAL,CAAc,EAAE7B,aAAa,EAAf,EAAd,CAAN;AAAA,6BAAX,EAAqD,CAArD;AACH;AACJ;AACJ;AACJ,aAvDD,EAuDGwH,KAvDH,CAuDS,eAAO;AACZ,uBAAK3F,QAAL,CAAc,EAACzB,eAAe,KAAhB,EAAd;AACA,uBAAKoF,aAAL,GAAqB,KAArB;AACAE,kCAAkBA,eAAezB,SAAf,EAA0B,KAA1B,CAAlB;AACH,aA3DD;AA4DH,SArTkB;;AAAA,eAwTnBzC,qBAxTmB,GAwTK,YAAM;AAC5B,gBAAI,CAAC,OAAK8B,EAAV,EAAc;AACd,mBAAKA,EAAL,CAAQ9B,qBAAR,GAAgCyE,IAAhC,CAAqC,eAAO;AACxC,oBAAI9E,QAAQY,OAAO,CAAnB;AACA,uBAAKF,QAAL,CAAc,EAAExB,YAAYc,KAAd,EAAd;AACA,uBAAKD,sBAAL,CAA4BC,KAA5B;AACH,aAJD;AAKD,SA/TkB;;AAAA,eAiUnBsG,YAjUmB,GAiUJ,UAACC,CAAD,EAAO;AAClB,gBAAMC,UAAUD,KAAKA,EAAEC,OAAvB;AACA,gBAAIA,YAAY,EAAhB,EAAoB;AAChB,oBAAI,OAAK9D,iBAAT,EAA4B;AACxB,wBAAI+D,QAAQ,OAAKhB,aAAjB;AACA,wBAAIiB,QAAQC,KAAKvB,KAAL,CAAW,IAAIuB,IAAJ,EAAX,CAAZ;AACA,wBAAID,QAAQD,KAAR,GAAgB,GAApB,EAAyB;AACrB,+BAAKlE,YAAL,CAAkB,EAAlB;AACA,+BAAKkD,aAAL,GAAqB,IAArB;AACA,+BAAOjF,8BAAQC,IAAR,CAAa,WAAb,CAAP;AACH;AACD,2BAAKgF,aAAL,GAAqB,IAArB;AACH;AACD,uBAAKD,eAAL,GAAuBmB,KAAKvB,KAAL,CAAW,IAAIuB,IAAJ,EAAX,IAAyB,OAAKlB,aAA9B,GAA8C,GAArE;AACA,oBAAI,OAAKF,sBAAT,EAAiC;AAC7B,2BAAKE,aAAL,GAAqB,IAArB;AACH;AACD,oBAAI,OAAKpB,aAAT,EAAwB;AACxB,uBAAKxB,YAAL,CAAkBC,SAAlB,EAA6B,IAA7B;AACH,aAjBD,MAkBK,IAAI,OAAKJ,iBAAL,IAA0B,CAAC,OAAK+C,aAAhC,IAAiD,EAAEe,WAAW,CAAb,CAArD,EAAsE;AACvE,uBAAKf,aAAL,GAAqBkB,KAAKvB,KAAL,CAAW,IAAIuB,IAAJ,EAAX,CAArB;AACH,aAFI,MAEE,IAAI,OAAKpB,sBAAL,IAA+B,CAAC,OAAKE,aAArC,IAAsD,EAAEe,WAAW,CAAb,CAAtD,IAAyE,CAAC,OAAK9D,iBAAnF,EAAsG;AACzG,uBAAK+C,aAAL,GAAqBkB,KAAKvB,KAAL,CAAW,IAAIuB,IAAJ,EAAX,CAArB;AACH;AACJ,SA1VkB;;AAAA,eA4VnBC,cA5VmB,GA4VF,YAAiB;AAAA,gBAAhBC,MAAgB,uEAAP,EAAO;;AAChC,gBAAMC,YAAY,mBAAlB;AADgC,wCAE+BD,MAF/B,CAEzBE,mBAFyB;AAAA,gBAEzBA,mBAFyB,yCAEH,EAFG;AAAA,yCAE+BF,MAF/B,CAECG,qBAFD;AAAA,gBAECA,qBAFD,0CAEyB,EAFzB;;AAGhC,gBAAMC,cAAcF,oBAAoBG,SAApB,CAA8B;AAAA,uBAAKjE,MAAM6D,SAAX;AAAA,aAA9B,CAApB;AACA,mBAAO,CAACG,WAAD,GAAeD,sBAAsBC,WAAtB,CAAf,GAAoD,GAA3D;AACD,SAjWkB;;AAAA,eAmWnBE,mBAnWmB,GAmWG,UAACrD,IAAD,EAAU;AAC9B;AACA,mBAAKpD,QAAL,CAAc,EAAC0G,aAAatD,SAAS,CAAvB,EAA0BuD,eAAevD,SAAS,CAAlD,EAAd;AACA,mBAAK3B,EAAL,CAAQmF,iBAAR,CAA0BC,OAAOzD,IAAP,CAA1B,EACGgB,IADH,CACQ,eAAO;AACX,uBAAKpE,QAAL,CAAc,EAAC0G,aAAa,KAAd,EAAqBC,eAAe,KAApC,EAAd;;AADW,4BAEIzG,OAAO,EAFX;AAAA,oBAEJsE,IAFI,SAEJA,IAFI;;AAGX,oBAAI,CAACC,KAAKC,KAAL,CAAWF,IAAX,EAAiBQ,MAAtB,EAA8B;AAC5B,wBAAM8B,aAAa,CAAC,UAAD,EAAa,UAAb,CAAnB;AACA1D,6BAAS,CAAT,IAAc,OAAKpD,QAAL,CAAc,EAACxB,YAAY,CAAb,EAAd,CAAd;AACA,2BAAOsB,8BAAQqB,IAAR,CAAa2F,WAAW1D,OAAO,CAAlB,CAAb,CAAP;AACD;AACDA,yBAAS,CAAT,IAAc,OAAKzD,qBAAL,EAAd;AACA,uBAAKM,aAAL,CAAmBmD,IAAnB,EAAyBlD,GAAzB;AACD,aAXH,EAYGyF,KAZH,CAYS,eAAO;AACZ,uBAAK3F,QAAL,CAAc,EAAC0G,aAAa,KAAd,EAAqBC,eAAe,KAApC,EAAd;AACAI,wBAAQC,GAAR,CAAYC,GAAZ;AACD,aAfH;AAgBD,SAtXkB;;AAAA,eAyXnBC,iBAzXmB,GAyXC,YAAM;AACtB,gBAAI,OAAKC,OAAT,EAAkB,OAAKA,OAAL,CAAaC,SAAb;AACrB,SA3XkB;;AAAA,eA4XnBC,YA5XmB,GA4XJ,UAACnH,GAAD,EAAS;AACpB,mBAAKF,QAAL,CAAc;AACV7B,6BAAa+B;AADH,aAAd,EAEG,YAAM;AACL,uBAAK0F,YAAL,CAAkB,EAAEE,SAAS,EAAX,EAAlB;AACH,aAJD;AAKH,SAlYkB;;AAAA,oBAEyHlD,2BAAWC,GAAX,CAAe,MAAf,KAA0B,EAFnJ;AAAA,oCAEPyE,SAFO;;AAAA,0DAEkH,EAFlH;AAAA,YAEMtF,iBAFN,mBAEMA,iBAFN;AAAA,YAEyBuF,iCAFzB,mBAEyBA,iCAFzB;AAAA,YAE4DC,mBAF5D,mBAE4DA,mBAF5D;AAAA,YAEiFC,YAFjF,mBAEiFA,YAFjF;AAAA,YAE+FC,cAF/F,mBAE+FA,cAF/F;;AAGf,eAAK1F,iBAAL,GAAyB2F,SAAS3F,iBAAT,CAAzB,CAHe,CAGuC;AACtD,eAAK6C,sBAAL,GAA8B8C,SAASJ,iCAAT,CAA9B,CAJe,CAI4D;AAC3E,eAAK1H,mBAAL,GAA2B8H,SAASH,mBAAT,CAA3B,CALe,CAK2C;AAC1D,eAAKI,YAAL,GAAoBD,SAASF,YAAT,CAApB,CANe,CAM8B;AAC7C,eAAKI,cAAL,GAAsBH,cAAtB,CAPe,CAO2B;AAC1C,eAAKjG,EAAL,GAAUqG,aAAV;AACA;;AATe,oBAUgCC,yBAAY,EAV5C;AAAA,YAUPC,eAVO,SAUPA,eAVO;AAAA,YAUUxE,iBAVV,SAUUA,iBAVV;;AAWf,eAAKwE,eAAL,GAAuB,CAAC,CAACA,eAAzB;AACA,eAAKtC,mBAAL,GAA2B,CAAC,CAACsC,eAAF,IAAqB,CAAC,CAACxE,iBAAlD;AACA,eAAKA,iBAAL,GAAyB,CAAC,CAACA,iBAA3B;AACA,eAAKyE,WAAL,GAAoBC,oBAAIH,QAAJ,KAAiBG,oBAAIC,QAAJ,CAAaJ,QAAb,CAAsBK,QAA3D;AACA,eAAKnF,eAAL,GAAuB,OAAKA,eAAL,CAAqBoF,IAArB,QAAvB;;AAEA;AACA,eAAKtD,aAAL,GAAqB,IAArB;AACA,eAAKD,eAAL,GAAuB,KAAvB,CAnBe,CAmBgB;AAnBhB;AAoBlB;;;;6CAEoB;AAAA;;AAAA,wBACgC,KAAK9F,OAAL,CAAaI,SAAb,IAA0B,EAD1D;AAAA,mCACTgB,IADS;;AAAA,oDACyB,EADzB;AAAA,+CACDC,MADC;AAAA,gBACO3B,QADP,qCACkB,EADlB;AAAA,uCAEiB,KAAK+C,EAFtB,CAET4D,gBAFS;AAAA,gBAETA,gBAFS,wCAEU,EAFV;;AAGjB,gBAAMC,mBAAmB,oBAAYD,gBAAZ,EAA8BL,MAA9B,GAAuCK,gBAAvC,GAA0DjD,SAAnF;;AAEA,gBAAMkG,eAAe,SAAfA,YAAe,CAAClI,IAAD,EAAU;AAC7B,uBAAKJ,QAAL,CAAc,EAACM,WAAW,EAAZ,EAAd;AACA,uBAAKrC,KAAL,CAAWqK,YAAX,CAAwBlI,IAAxB;AACD,aAHD;AAIA,gBAAI,QAAOkF,gBAAP,uDAAOA,gBAAP,OAA4B,QAAhC,EAA0C;AACtC,oBAAMC,kBAAkBd,KAAKC,KAAL,CAAW,yBAAeY,gBAAf,CAAX,CAAxB;AACA,oBAAI,CAACxH,aAAL,EAAoB;AAChBA,oCAAgByH,eAAhB;AACA+C,iCAAahD,gBAAb;AACH,iBAHD,MAGO,IAAIxH,cAAcyK,EAAd,KAAqBjD,iBAAiBiD,EAA1C,EAA8C;AACjDD,iCAAahD,gBAAb;AACAxH,oCAAgByH,eAAhB;AACH,iBAHM,MAGA,IAAI,CAAC7G,SAAS6J,EAAV,IAAgB,CAACzK,iBAAiB,EAAlB,EAAsByK,EAA1C,EAA8C;AAAE;AACnDzK,oCAAgBsE,SAAhB;AACA,yBAAKX,EAAL,CAAQC,gBAAR;AACH;AACJ,aAZD,MAYO,IAAI5D,iBAAiB,CAACwH,gBAAtB,EAAwC;AAC3CgD,6BAAahD,gBAAb;AACAxH,gCAAgBsE,SAAhB;AACH,aAHM,MAGA,IAAI1D,SAAS6J,EAAT,IAAe,CAAC,CAACzK,iBAAiB,EAAlB,EAAsByK,EAA1C,EAA8C;AAAE;AACnD,oBAAMhD,mBAAkBd,KAAKC,KAAL,CAAW,yBAAehG,QAAf,CAAX,CAAxB;AACAZ,gCAAgByH,gBAAhB;AACA,qBAAK9D,EAAL,CAAQgE,WAAR,CAAoB/G,QAApB;AACH;AACJ;;;4CAEmB;AAChB,iBAAK8J,aAAL;AACH;;;+CAEsB;AACnB/E,mBAAOgF,mBAAP,CAA2B,QAA3B,EAAqC,KAAKC,cAA1C;AACA,iBAAKC,WAAL;AACH;;;kDAEyBC,S,EAAW;AACjC;AADiC,gBAE3BC,aAF2B,GAETD,SAFS,CAE3BC,aAF2B;;AAGjC,gBAAIA,kBAAkB,IAAtB,EAA4B,KAAKlJ,qBAAL;AAC/B;;;;AAcD;wCACgB;AAAA;;AACZ;AACA,gBAAI,KAAKsI,WAAL,KAAqB,IAArB,IAA6B,KAAKL,YAAL,KAAsB,CAAvD,EAA0D;AACtDkB,yCAASC,oBAAT,CAA8B,eAA9B,EAA+C,IAA/C,EAAqD,eAAO;AACxD,wBAAIC,SAAS,EAAb;AACA,wBAAI3E,IAAI5F,MAAJ,KAAe,CAAnB,EAAsB;AAClBuK,iCAAS,EAAErK,mBAAmB,KAArB,EAA4BC,kBAAkByF,IAAI7B,KAAlD,EAAT;AACH,qBAFD,MAEO;AACHwG,iCAAS,EAAErK,mBAAmB,IAArB,EAA2BC,kBAAkB,EAA7C,EAAT;AACH;AACD,2BAAKoB,QAAL,CAAcgJ,MAAd;AACH,iBARD;AASH;AACJ;;AAED;;;;qCACa;AAAA;;AACT;AACA,gBAAI,KAAKf,WAAL,KAAqB,IAArB,IAA6B,KAAKL,YAAL,KAAsB,CAAvD,EAA0D;AAAA,6BACN,KAAK1J,KADC;AAAA,oBAC9CS,iBAD8C,UAC9CA,iBAD8C;AAAA,oBAC3BC,gBAD2B,UAC3BA,gBAD2B;;AAEtD,oBAAID,sBAAsB,KAA1B,EAAiC;AAC7BmB,kDAAQmJ,KAAR,CAAcrK,mBAAmBA,gBAAnB,GAAsC,SAApD;AACA,yBAAK4J,aAAL,GAF6B,CAEP;AACtB;AACH;AACD,oBAAInF,SAAS,EAAE6F,SAAS,KAAKrB,cAAhB,EAAgCsB,SAAS,EAAzC,EAA6CC,QAAQ,CAArD,EAAb;AACAN,yCAASC,oBAAT,CAA8B,YAA9B,6BAAiD1F,MAAjD,GAA2D,eAAO;AAC9D,wBAAIgB,IAAI5F,MAAJ,KAAe,CAAnB,EAAsB;AAClBqB,sDAAQmJ,KAAR,CAAc5E,IAAI7B,KAAlB;AACA,+BAAKgG,aAAL,GAFkB,CAEI;AACtB;AACH,qBAJD,MAIO,IAAInE,IAAI5F,MAAJ,KAAe,CAAnB,EAAsB;AACzB,+BAAK0D,YAAL,CAAkBkC,IAAI7B,KAAtB;AACH;AACJ,iBARD;AASH;AACJ;;AAED;;;;sCACa;AACT,gBAAI,KAAKyF,WAAL,KAAqB,IAArB,IAA6B,KAAKL,YAAL,KAAsB,CAAvD,EAA0D;AACtDkB,yCAASC,oBAAT,CAA8B,aAA9B;AACH;AACJ;;AAyDD;;;AAkIA;;;AAiEA;;;;iCAWS;AAAA;;AAAA,0BAID,KAAK7K,KAJJ;AAAA,gBAEDI,WAFC,WAEDA,WAFC;AAAA,gBAEYF,UAFZ,WAEYA,UAFZ;AAAA,gBAEwBC,UAFxB,WAEwBA,UAFxB;AAAA,gDAEoCsI,aAFpC;AAAA,gBAEoCA,aAFpC,yCAEoD,KAFpD;AAAA,8CAE2DD,WAF3D;AAAA,gBAE2DA,WAF3D,uCAEyE,KAFzE;AAAA,gBAGDjI,MAHC,WAGDA,MAHC;AAAA,gBAGOD,UAHP,WAGOA,UAHP;AAAA,gBAGmBL,WAHnB,WAGmBA,WAHnB;AAAA,gBAGgCuC,cAHhC,WAGgCA,cAHhC;AAAA,gBAGgDJ,SAHhD,WAGgDA,SAHhD;AAAA,gBAG2D/B,aAH3D,WAG2DA,aAH3D;AAAA,gBAG0E+F,UAH1E,WAG0EA,UAH1E;AAAA,yBAKoC,KAAKrG,KALzC;AAAA,qCAKGoL,IALH;AAAA,gBAKGA,IALH,+BAKU,QALV;AAAA,gBAKoBC,WALpB,UAKoBA,WALpB;AAAA,sBAM4C,KAAK7H,EANjD;AAAA,gBAMG4D,gBANH,OAMGA,gBANH;AAAA,wCAMqBkE,aANrB;AAAA,gBAMqBA,aANrB,qCAMqC,EANrC,sBAMqD;;AANrD,wBAOwD,KAAKvK,OAAL,CAAaI,SAAb,IAA0B,EAPlF;AAAA,mCAOGgB,IAPH;;AAAA,oDAOqC,EAPrC;AAAA,+CAOWC,MAPX;AAAA,gBAOmB3B,QAPnB,qCAO8B,EAP9B;AAAA,oCAOyCmC,KAPzC;AAAA,gBAOyCA,KAPzC,+BAOiD,EAPjD;;AAQL,gBAAM2I,cAAc3I,MAAMC,IAAN,CAAW;AAAA,uBAAKyB,EAAEa,IAAF,KAAW,SAAhB;AAAA,aAAX,KAAyC,EAA7D;AACA,gBAAMqG,cAAcD,YAAYE,cAAZ,IAA8BF,YAAYE,cAAZ,EAAlD;AACA,gBAAMC,mBAAmB,CAAC,CAACjL,SAAS6J,EAApC;AACA,mBACI;AAAA;AAAA,kBAAK,WAAU,iBAAf;AACI;AAAA;AAAA,sBAAK,WAAU,MAAf;AACK,qBAACoB,gBAAD,IACG;AAAA;AAAA,0BAAK,WAAU,QAAf;AACI;AAAA;AAAA,8BAAK,WAAU,IAAf;AACI;AACI,sCAAK,MADT;AAEI,2CAAU,OAFd;AAGI,oCAAG,aAHP;AAII,6CAAY,6CAJhB;AAKI,uCAAOxL,WALX;AAMI,qCAAK;AAAA,2CAAM,OAAKuE,WAAL,GAAmB3B,MAAMA,GAAG6I,KAAlC;AAAA,iCANT;AAOI,0CAAU,KAAK/H,YAPnB;AAQI,yCAAS,KAAKE,WARlB;AASI,wCAAQ,KAAKgB,UATjB;AAUI,2CAAW,KAAK6C;AAVpB,8BADJ;AAaI,0DAAC,0BAAD;AACI,2CAAU,aADd;AAEI,uCAAO,GAFX;AAGI,sCAAK,aAHT;AAII,yCAASrH;AAJb;AAbJ,yBADJ;AAqBI;AAAA;AAAA,8BAAK,WAAU,IAAf;AAEQ,iCAAK0J,WAAL,KAAqB,IAArB,IAA6B,KAAKL,YAAL,KAAsB,CAAnD,IACA,8BAAC,2BAAD,IAAO,WAAU,MAAjB,EAAwB,SAAS,KAAK3E,eAAtC,EAAuD,MAAK,MAA5D,GAHR;AAMQ,iCAAK+E,eAAL,GACI,8BAAC,2BAAD,IAAO,MAAK,UAAZ,EAAuB,WAAU,MAAjC,EAAwC,SAAS,KAAKd,iBAAtD,GADJ,GAIQ,SAAS,KAAKrH,mBAAL,KAA6B,CAAtC,IAA2C,CAAC6G,WAA5C,IACA;AAAA;AAAA,kCAAK,WAAU,yBAAf;AACI,8DAAC,2BAAD,IAAO,WAAU,MAAjB,EAAwB,SAAS;AAAA,+CAAM,OAAKD,mBAAL,CAAyB,CAAzB,CAAN;AAAA,qCAAjC,EAAoE,MAAK,eAAzE,GADJ;AAEI,8DAAC,0BAAD;AACI,+CAAU,WADd;AAEI,2CAAO,GAFX;AAGI,0CAAK,QAHT;AAII,6CAASC;AAJb;AAFJ,6BAXhB;;AAuBQ;AACA,iCAAKsB,eAAL,IACA,8BAAC,0BAAD,IAAM,KAAK;AAAA,2CAAQ,OAAKb,OAAL,GAAe0C,IAAvB;AAAA,iCAAX,EAAwC,UAAU,KAAKxC,YAAvD;AAzBR;AArBJ,qBAFR;AAqDKsC,wCACG;AAAA;AAAA,0BAAK,sBAAmB,KAAK9J,mBAAL,GAA2B,EAA3B,GAAgC,wBAAnD,CAAL;AACI;AAAA;AAAA,8BAAK,WAAU,OAAf;AACI,mEAAK,SAAS,KAAKD,cAAnB,EAAmC,KAAKU,aAAa5B,SAAS+B,SAAtB,IAAmC7C,gBAA3E,GADJ;AAEKU,2CAAe,8BAAC,qBAAD,IAAa,UAAUI,QAAvB,EAAiC,WAAWJ,WAA5C,EAAyD,YAAYF,UAArE,EAAiF,aAAa,KAAKkF,gBAAnG;AAFpB,yBADJ;AAKI;AAAA;AAAA,8BAAK,WAAU,2BAAf,EAA2C,SAAS;AAAA,2CAAM,OAAKrD,aAAL,CAAmB,CAAnB,CAAN;AAAA,iCAApD;AACI;AAAA;AAAA,kCAAK,WAAU,KAAf;AACKvB,yCAASoL,IAAT,IAAiB;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAoBpL,6CAASoL;AAA7B,iCADtB;AAEI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAoBpL,6CAASqL;AAA7B;AAFJ,6BADJ;AAKI;AAAA;AAAA,kCAAK,WAAU,KAAf;AACI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAoB,gEAAgBrL,SAASsL,cAAzB,EAAyCT,cAAcS,cAAvD;AAApB,iCADJ;AAEI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAA;AAAA;AAFJ,6BALJ;AASI;AAAA;AAAA,kCAAK,WAAU,KAAf;AACI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAoB,yCAAK9D,cAAL,CAAoBxH,QAApB;AAApB,iCADJ;AAEI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAA;AAAA;AAFJ,6BATJ;AAaI;AAAA;AAAA,kCAAK,WAAU,KAAf;AACI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAoB,gEAAgBA,SAASuL,eAAzB,EAA0CV,cAAcU,eAAxD,KAA4E;AAAhG,iCADJ;AAEI;AAAA;AAAA,sCAAK,WAAU,GAAf;AAAA;AAAA;AAFJ;AAbJ,yBALJ;AAuBI;AAAA;AAAA,8BAAK,WAAU,OAAf;AACK,6BAACR,WAAD,IAAgB,8BAAC,2BAAD,IAAO,MAAK,aAAZ,EAA0B,SAAS,KAAK9I,cAAxC;AADrB;AAvBJ;AAtDR,iBADJ;AAoFK,iBAAC,CAAC,KAAKd,mBAAP,IAA8B;AAAA;AAAA,sBAAK,WAAU,OAAf;AAC3B;AAAA;AAAA,0BAAQ,QAAO,SAAf,EAAyB,SAAS;AAAA,uCAAM,OAAK4G,mBAAL,CAAyB,CAAzB,CAAN;AAAA,6BAAlC,EAAqE,WAAU,KAA/E,EAAqF,UAAUE,aAA/F;AACK,yBAACA,aAAD,IAAkB,MADvB;AAEI,sDAAC,0BAAD;AACI,uCAAU,oBADd;AAEI,mCAAO,GAFX;AAGI,kCAAK,QAHT;AAII,qCAASA;AAJb,0BAFJ;AAQK,yBAAC,CAACnI,UAAF,IAAgB;AAAA;AAAA,8BAAK,WAAU,OAAf;AAAwBA;AAAxB;AARrB;AAD2B,iBApFnC;AAgGI,8CAAC,oBAAD;AACI,0BAAM6K,IADV;AAEI,iCAAaC,WAFjB;AAGI,oCAAgB5I,cAHpB;AAII,gCAAY4D,UAJhB;AAKI,4BAAQ7F,MALZ;AAMI,+BAAWJ,UANf;AAOI,gCAAYD,UAPhB;AAQI,iCAAa,KAAK+E;AARtB,kBAhGJ;AA0GI;AAAC,qDAAD;AAAA,sBAAa,MAAM,KAAK1B,EAAL,CAAQyI,YAA3B,EAAyC,UAAU,IAAnD,EAAyD,WAAU,gBAAnE;AACI;AAAA;AAAA,0BAAK,WAAU,SAAf;AACI,+DAAK,OAAM,KAAX,EAAiB,QAAO,KAAxB,EAA8B,KAAKrM,cAAnC,GADJ;AAEI,sDAAC,2BAAD,IAAO,MAAK,aAAZ,EAA0B,SAAS,KAAK8D,wBAAxC;AAFJ,qBADJ;AAKI;AAAA;AAAA,0BAAK,WAAU,QAAf;AAAA;AAA6B;AAAA;AAAA;AAAOjD,qCAASoL,IAAT,IAAiBpL,SAASqL;AAAjC,yBAA7B;AAAA;AAAA;AALJ;AA1GJ,aADJ;AAoHH;;;EA/hBmBI,gB,WAebC,S,GAAY;AACf9B,kBAAc+B,oBAAUC,IADT;AAEfzG,oBAAgBwG,oBAAUC;AAFX,C,UAKZC,Y,GAAe;AAClBtL,aAAQoL,oBAAUC,IADA;AAElBlL,eAAWiL,oBAAUG;AAFH,C,UAKfC,Y,GAAe;AAClBnC,kBAAc,wBAAM,CAAG;AADL,C;;kBAwgBXvK,S","file":"index.js","sourcesContent":["/**\n * @memberChange member 状态发生变化时的回调\n * @memberSearched 录入框会员状态发生变化时的回调 memberSearched(value, type) // type: searched 触发搜索 | err 搜索接口错误 | close 关闭会员\n *\n */\nimport React, { Component } from 'react';\nimport { Button, FormControl } from 'tinper-bee';\nimport { observer } from 'mobx-react';\nimport { toJS } from 'mobx';\nimport PropTypes from 'prop-types'\nimport { Ticon, Message, ModalWraper, Spin, Keyboard,Scan } from 'tplus-components-touch';\nimport { env, nativeMs, localStore, stores } from 'mutants-microfx';\nimport { Action } from 'mutants-appfx'\nimport { platform } from 'mutants-util';\nimport MemberModal from './MemberShow';\nimport MemberPhoto from './MemberPhoto';\nimport API from './api';\nimport { formatPrecision, userInfoFormat, errMessageTip } from '../utils';\nimport './index.less';\nimport memberStore from './api';\n\n//定义默认头像值。\nconst emptyMemberImage = 'https://newretail.static.chanjet.com/default_avatar.png';\nconst memberBirthday = 'https://newretail.static.chanjet.com/pictures/member_birthday.png';\nlet currentMember;\n\n@observer\nclass MemberTag extends Component {\n\n state = {\n searchValue: '',\n titleModal: '',\n memberShow: false,\n memberPhoto: false,\n searchVisible: false,\n shopPerson: 0,\n status: 2, // 0会员详情、1到店会员、2人脸识别\n dtMember: {}, // 会员信息\n connectCardStatus: false, //连接IC卡状态\n connectCardError: '', //连接IC卡错误后记录错误信息\n };\n\n static propTypes = {\n memberChange: PropTypes.func,\n memberSearched: PropTypes.func,\n }\n\n static contextTypes = {\n onEvent:PropTypes.func,\n viewModel: PropTypes.object,\n }\n\n static defaultProps = {\n memberChange: () => { },\n }\n\n constructor(props) {\n super(props);\n const { loginInfo: { isMemberInputType, IsOnlyControlStorageCardInputType, OpenFaceRecognition, ICCardServer, ICCardPassword } = {} } = localStore.get('user') || {};\n this.isMemberInputType = parseInt(isMemberInputType); // '0'为不禁用 '1'为禁用\n this.isStorageCardInputType = parseInt(IsOnlyControlStorageCardInputType); // 仅储值卡是否禁用键盘输入,'0'为不禁用 '1'为禁用\n this.openFaceRecognition = parseInt(OpenFaceRecognition); // 启用人脸识别:0禁用 1为启用\n this.iCCardServer = parseInt(ICCardServer); // 启用IC卡:0为禁用 1为启用\n this.iCCardPassword = ICCardPassword; //IC卡密码\n this.ms = API;\n //移动端环境下,没有读取IC卡的方式。\n const { isHorizontalPad, isHorizontalSunMi } = platform || {};\n this.isHorizontalPad = !!isHorizontalPad;\n this.isMobileEnvironment = !!isHorizontalPad || !!isHorizontalSunMi;\n this.isHorizontalSunMi = !!isHorizontalSunMi;\n this.hasElectron = (env.platform === env.constant.platform.electron);\n this.handleReadICard = this.handleReadICard.bind(this);\n\n //记录键盘录入信息的开始时间\n this.keypressStime = null;\n this.iseyboardKEnter = false; //是否为键盘输入\n }\n\n componentWillReact() {\n const { data: { Member: dtMember = {} } = {} } = this.context.viewModel || {};\n const { selectMemberInfo = {} } = this.ms;\n const memberChangeData = Object.keys(selectMemberInfo).length ? selectMemberInfo : undefined;\n\n const memberChange = (data) => {\n this.setState({newAvatar: ''});\n this.props.memberChange(data);\n }\n if (typeof memberChangeData === 'object') {\n const deepCloneMember = JSON.parse(JSON.stringify(memberChangeData));\n if (!currentMember) {\n currentMember = deepCloneMember;\n memberChange(memberChangeData);\n } else if (currentMember.ID !== memberChangeData.ID) {\n memberChange(memberChangeData);\n currentMember = deepCloneMember;\n } else if (!dtMember.ID && (currentMember || {}).ID) { // DataModel 中清掉member,手动同步 member\n currentMember = undefined;\n this.ms.clearSeletMember();\n }\n } else if (currentMember && !memberChangeData) {\n memberChange(memberChangeData);\n currentMember = undefined;\n } else if (dtMember.ID && !(currentMember || {}).ID) { // DataModel 中存在member,手动同步 member\n const deepCloneMember = JSON.parse(JSON.stringify(dtMember));\n currentMember = deepCloneMember;\n this.ms.seletMember(dtMember);\n }\n }\n\n componentDidMount() {\n this.connectRfCard();\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.windowOnresize);\n this.closeRfCard();\n }\n\n componentWillReceiveProps(nextProps) {\n //接受socket传递过来的信息\n let { isSendMessage } = nextProps;\n if (isSendMessage === true) this.getInStoreMemberCount()\n }\n\n controllerEvent = (methodName, methodArgs) => {\n this.context.onEvent({ 'controllerEvent': Action.fromJS(this.context.viewModel, methodName) }, 'controllerEvent', methodArgs);\n }\n\n resetInShopMemberTimer = (count) => {\n this.timer && clearTimeout(this.timer);\n if (!count) return;\n const time = 5 * 60 * 1000;\n this.timer = setTimeout(() => {\n this.getInStoreMemberCount();\n }, time);\n }\n //IC卡连接\n connectRfCard() {\n //客户端环境下,并开启了启用IC卡。\n if (this.hasElectron === true && this.iCCardServer === 1) {\n nativeMs.setIpcRendererMethod('ConnectRfCard', null, ret => {\n let result = {}\n if (ret.status === 0) {\n result = { connectCardStatus: false, connectCardError: ret.value }\n } else {\n result = { connectCardStatus: true, connectCardError: '' };\n }\n this.setState(result)\n })\n }\n }\n\n //IC卡读取\n readRfCard() {\n //客户端环境下,并开启了启用IC卡。\n if (this.hasElectron === true && this.iCCardServer === 1) {\n const { connectCardStatus, connectCardError } = this.state;\n if (connectCardStatus === false) {\n Message.error(connectCardError ? connectCardError : '读取IC卡失败');\n this.connectRfCard(); //读取失败后,重新连接一下。\n return;\n }\n let params = { cardPsw: this.iCCardPassword, cardSec: 13, cardKm: 0 }\n nativeMs.setIpcRendererMethod('ReadRfCard', { ...params }, ret => {\n if (ret.status === 0) {\n Message.error(ret.value);\n this.connectRfCard(); //读取失败后,重新连接一下。\n return;\n } else if (ret.status === 1) {\n this.searchMember(ret.value);\n }\n })\n }\n }\n\n //IC卡关闭\n closeRfCard(){\n if (this.hasElectron === true && this.iCCardServer === 1) {\n nativeMs.setIpcRendererMethod('CloseRfCard')\n }\n }\n\n openPhotoModal = () => {\n if (!this.openFaceRecognition){\n Message.warn('未启用人脸识别,需要先开启人脸识别功能');\n return;\n }\n this.setState({\n memberPhoto: true,\n titleModal: '选择头像'\n })\n }\n\n openShowModal = (status, res) => {\n let title = '';\n const { data: { Member = {} } = {} } = this.context.viewModel || {};\n const {newAvatar} = this.state;\n const jsMember = toJS(Member);\n const updateMember = newAvatar ? {...jsMember, ImageFile: newAvatar} : jsMember;\n switch (status) {\n case 0:\n title = '会员详情';\n this.setState({ viewMemberInfo: updateMember })\n break;\n case 1:\n title = '到店会员';\n this.setState({ viewMemberInfo: res })\n break;\n case 2:\n title = '人脸识别';\n this.setState({ viewMemberInfo: res })\n break;\n }\n this.setState({\n status: status,\n memberShow: true,\n titleModal: title\n })\n }\n\n openCloseModal = () => {\n const memberStore = this.context.viewModel && this.context.viewModel.items.find(el=>el.name=='MemberStore');\n const uiState = memberStore.uiState;\n if(!!uiState.tip){\n Message.info(uiState.tip)\n return;\n }\n ModalWraper.confirm({\n className: 'tplus-confirm-modal',\n title: '关闭会员',\n content: '确定要关闭该会员吗?',\n onOk: () => {\n this.ms.clearSeletMember();\n }\n });\n }\n\n //关闭生日提醒\n handleCloseBirthdayModal = () => {\n this.ms.changeBirthdayShow(false);\n }\n\n handleSearch = (val) => {\n this.setState({ searchValue: val })\n }\n\n handleFocus = (el) => {\n if (this.isMemberInputType) return;\n const _this = this;\n function cb() {\n _this.searchMember(undefined, 'ok');\n }\n Keyboard.open2((v) => {\n const value = Keyboard.getNewValue(this.inputSearch, this.inputSearch.value, v);\n this.handleSearch(value);\n }, cb, this.keyboardClose , 'ByMember', localStore.get('ByMember'))\n }\n\n keyboardClose = () => {\n this.inputSearch.blur();\n }\n handleBlur = () => {\n Keyboard.close2();\n }\n\n handleReadICard = () => {\n this.readRfCard();\n }\n\n handleShowModal = (type, params) => {\n if (params) {\n this.setState({ dtMember: params, memberShow: type })\n } else {\n this.setState({ memberShow: type })\n }\n if (type) {\n this.setState({\n searchValue: null\n })\n }\n }\n\n handlePhotoModal = (type, newAvatar) => {\n if (newAvatar) {\n this.setState({\n newAvatar,\n memberPhoto: type\n })\n } else {\n this.setState({ memberPhoto: type })\n }\n }\n\n SetKeyBoardDisplay = (value) => {\n this.isHorizontalSunMi && window.android_setKeyBoard && window.android_setKeyBoard.SetKeyBoardDisplay(value)\n }\n\n searchMember = (val, type) => {\n if (!this.ms || this.searchLoading) return;\n const {searchValue} = this.state;\n val = val || (searchValue || '').trim();\n if (!val) return;\n const { memberSearched, selectMemberSuccess } = this.props;\n this.searchLoading = true;\n this.setState({searchVisible: true});\n this.ms.getSearchMember({\n currentPage: 1,\n pageSize: 10,\n key: val,\n isSingleMember: false\n }).then(ret => {\n this.searchLoading = false;\n const {ColumnInfo: columnInfo, Data} = ret || {};\n const data = JSON.parse(Data) || [];\n const info = data[0];\n this.setState({searchVisible: false, columnInfo});\n\n if (info && info.MemberType.IsStorage && this.isStorageCardInputType && this.iseyboardKEnter){\n this.handleSearch('');\n this.keypressStime = null;\n Message.warn('储值会员不可键盘录入');\n return;\n }\n if (info) {\n if (data.length > 1) {\n this.SetKeyBoardDisplay(1)\n let _this = this;\n stores.drawerStore.init({\n title: '会员管理',\n key: 'member',\n onHide:()=>{\n this.SetKeyBoardDisplay(0);\n const { selectMemberInfo = {} } = _this.ms;\n const memberChangeData = Object.keys(selectMemberInfo).length ? selectMemberInfo : undefined;\n const deepCloneMember = memberChangeData && JSON.parse(JSON.stringify(memberChangeData));\n if (deepCloneMember) {\n this.setState({\n searchValue: null\n })\n }\n },\n listArr: data,\n });\n } else {\n memberSearched && memberSearched(info, 'searched');\n userInfoFormat(info);\n if (errMessageTip(info)) return;\n this.ms.seletMember(info, true);\n setTimeout(() => this.setState({ searchValue: '' }), 0);\n this.handleBlur();\n selectMemberSuccess && selectMemberSuccess();\n }\n } else {\n if (type === 'ok'){\n Message.warn('会员不存在');\n if (this.isMobileEnvironment) {\n setTimeout(() => this.setState({ searchValue: '' }), 0);\n }\n }\n }\n }).catch(err => {\n this.setState({searchVisible: false});\n this.searchLoading = false;\n memberSearched && memberSearched(undefined, 'err');\n })\n }\n\n //获取当前到店会员数量\n getInStoreMemberCount = () => {\n if (!this.ms) return;\n this.ms.getInStoreMemberCount().then(res => {\n let count = res || 0;\n this.setState({ shopPerson: count });\n this.resetInShopMemberTimer(count);\n });\n }\n\n onKeyPressed = (e) => {\n const keyCode = e && e.keyCode\n if (keyCode === 13) {\n if (this.isMemberInputType) {\n let stime = this.keypressStime;\n let etime = Date.parse(new Date());\n if (etime - stime > 300) {\n this.handleSearch('')\n this.keypressStime = null;\n return Message.warn('未启用键盘录入功能');\n }\n this.keypressStime = null;\n }\n this.iseyboardKEnter = Date.parse(new Date()) - this.keypressStime > 300;\n if (this.isStorageCardInputType) {\n this.keypressStime = null;\n }\n if (this.searchLoading) return;\n this.searchMember(undefined, 'ok');\n }\n else if (this.isMemberInputType && !this.keypressStime && !(keyCode == 8)) {\n this.keypressStime = Date.parse(new Date())\n } else if (this.isStorageCardInputType && !this.keypressStime && !(keyCode == 8) && !this.isMemberInputType) {\n this.keypressStime = Date.parse(new Date())\n }\n }\n\n computedCoupon = (member = {}) => {\n const couponKey = 'membercouponcount';\n const {DynamicPropertyKeys = [], DynamicPropertyValues = []} = member;\n const couponIndex = DynamicPropertyKeys.findIndex(v => v === couponKey);\n return ~couponIndex ? DynamicPropertyValues[couponIndex] : '0';\n }\n\n loadFaceRecognition = (type) => {\n // type = 1:到店会员 type = 2:POS机人脸识别\n this.setState({faceLoading: type === 2, inShopLoading: type === 1});\n this.ms.loadInStoreMember(String(type))\n .then(res => {\n this.setState({faceLoading: false, inShopLoading: false});\n const {Data} = res || {};\n if (!JSON.parse(Data).length) {\n const tipMessage = ['当前没有到店会员', '未识别到人脸信息'];\n type === 1 && this.setState({shopPerson: 0});\n return Message.info(tipMessage[type - 1]);\n }\n type === 1 && this.getInStoreMemberCount();\n this.openShowModal(type, res);\n })\n .catch(err => {\n this.setState({faceLoading: false, inShopLoading: false});\n console.log(err)\n });\n }\n\n //移动端:扫描商品\n changeScanProduct = () => {\n if (this.scanObj) this.scanObj.startScan()\n }\n onScanResult = (res) => {\n this.setState({\n searchValue: res\n }, () => {\n this.onKeyPressed({ keyCode: 13 })\n })\n }\n render() {\n const {\n memberPhoto, titleModal, memberShow, inShopLoading = false, faceLoading = false,\n status, shopPerson, searchValue, viewMemberInfo, newAvatar, searchVisible, columnInfo\n } = this.state;\n const { mode = 'formal', authProcess } = this.props;\n const { selectMemberInfo, precisionInfo = {} } = this.ms; //selectMemberInfo 用作触发mobox render\n const { data: { Member: dtMember = {} } = {}, items = [] } = this.context.viewModel || {};\n const viewVoucher = items.find(v => v.type === 'Voucher') || {};\n const isTakeTheir = viewVoucher.getIsTakeTheir && viewVoucher.getIsTakeTheir();\n const isSelectedMember = !!dtMember.ID;\n return (\n <div className='MemberContainer'>\n <div className='left'>\n {!isSelectedMember &&\n <div className='search'>\n <div className='b1'>\n <FormControl\n type='text'\n className=\"input\"\n id='memberPoint'\n placeholder='扫描/输入会员号'\n value={searchValue}\n ref={el => this.inputSearch = el && el.input}\n onChange={this.handleSearch}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n onKeyDown={this.onKeyPressed}\n />\n <Spin\n className='search-spin'\n scale={0.8}\n type='circle-side'\n visible={searchVisible}\n />\n </div>\n <div className='b2'>\n {\n this.hasElectron === true && this.iCCardServer === 1 &&\n <Ticon className='icon' onClick={this.handleReadICard} type=\"ICka\" />\n }\n {\n this.isHorizontalPad ?\n <Ticon type='saomiao1' className='icon' onClick={this.changeScanProduct} />\n :\n (\n false && this.openFaceRecognition === 1 && !faceLoading &&\n <div className='openFaceRecognition-box'>\n <Ticon className='icon' onClick={() => this.loadFaceRecognition(2)} type=\"renlianshibie\" />\n <Spin\n className='face-spin'\n scale={0.8}\n type='circle'\n visible={faceLoading}\n />\n </div>\n )\n }\n {\n /* 扫描组件 */\n this.isHorizontalPad &&\n <Scan ref={scan => this.scanObj = scan} onChange={this.onScanResult} />\n }\n </div>\n </div>\n }\n {isSelectedMember &&\n <div className={`info ${this.openFaceRecognition ? '' : 'member-btn-hidden-flex'}`}>\n <div className='first'>\n <img onClick={this.openPhotoModal} src={newAvatar || dtMember.ImageFile || emptyMemberImage} />\n {memberPhoto && <MemberPhoto dtMember={dtMember} showModal={memberPhoto} titleModal={titleModal} handleModal={this.handlePhotoModal} />}\n </div>\n <div className='second member-hotkey-info' onClick={() => this.openShowModal(0)}>\n <div className='one'>\n {dtMember.Name && <div className='a'>{dtMember.Name}</div>}\n <div className='b'>{dtMember.CardCode}</div>\n </div>\n <div className='two'>\n <div className='a'>{formatPrecision(dtMember.BalanceStorage, precisionInfo.BalanceStorage)}</div>\n <div className='b'>余额</div>\n </div>\n <div className='two'>\n <div className='a'>{this.computedCoupon(dtMember)}</div>\n <div className='b'>优惠券</div>\n </div>\n <div className='two'>\n <div className='a'>{formatPrecision(dtMember.BalanceIntegral, precisionInfo.BalanceIntegral) || 0}</div>\n <div className='b'>积分</div>\n </div>\n </div>\n <div className='close'>\n {!isTakeTheir && <Ticon type=\"guanbi-yuan\" onClick={this.openCloseModal} />}\n </div>\n </div>\n }\n </div>\n {!!this.openFaceRecognition && <div className='right'>\n <Button colors=\"primary\" onClick={() => this.loadFaceRecognition(1)} className='btn' disabled={inShopLoading}>\n {!inShopLoading && '到店会员'}\n <Spin\n className='inshop-member-spin'\n scale={0.8}\n type='circle'\n visible={inShopLoading}\n />\n {!!shopPerson && <div className='badge'>{shopPerson}</div>}\n </Button>\n </div>}\n <MemberModal\n mode={mode}\n authProcess={authProcess}\n viewMemberInfo={viewMemberInfo}\n columnInfo={columnInfo}\n status={status}\n showModal={memberShow}\n titleModal={titleModal}\n handleModal={this.handleShowModal}\n />\n <ModalWraper show={this.ms.birthdayShow} centered={true} className='memberBirthday'>\n <div className='picture'>\n <img width='350' height='308' src={memberBirthday} />\n <Ticon type=\"guanbi-yuan\" onClick={this.handleCloseBirthdayModal} />\n </div>\n <div className='remark'>今天是会员<span>{dtMember.Name || dtMember.CardCode}</span>的生日</div>\n </ModalWraper>\n </div>\n );\n }\n}\nexport default MemberTag"]}
@@ -0,0 +1,466 @@
1
+ @import './color.less';
2
+
3
+ .MemberContainer {
4
+ display : flex;
5
+ justify-content : center;
6
+ align-items : Center;
7
+ background-color: @color-z3;
8
+ width : 400px;
9
+ height : 56px;
10
+ padding: 0px 10px;
11
+ .left {
12
+ width : 320px;
13
+ flex: 1;
14
+ .search {
15
+ width : 100%;
16
+ border : 1px solid @color-g5;
17
+ border-radius : 3px;
18
+ height: 32px;
19
+ line-height: 32px;
20
+ background: #F4F4F4;
21
+ border-color: #999999;
22
+ display: flex;
23
+
24
+ .b1 {
25
+ float : left;
26
+ height : 30px;
27
+ line-height: 30px;
28
+ flex: 1;
29
+ position: relative;
30
+ .tplus-spin{
31
+ position: absolute;
32
+ right: 0;
33
+ top: 2px;
34
+ }
35
+ .input {
36
+ width : 100%;
37
+ height : 30px;
38
+ border-width: 0 !important;
39
+ padding : 0 5px;
40
+ background : transparent;
41
+ padding-left: 12px;
42
+ }
43
+ }
44
+
45
+ .b2 {
46
+ float : right;
47
+ display : flex;
48
+ align-items: center;
49
+ height : 30px;
50
+ position: relative;
51
+
52
+ .icon {
53
+ font-size: 20px;
54
+ color : @color-g2;
55
+ cursor : pointer;
56
+ margin-left: 8px;
57
+ margin-right: 8px;
58
+ }
59
+ .openFaceRecognition-box{
60
+ position: relative;
61
+ width: 38px;
62
+ height: 100%;
63
+ .face-spin{
64
+ position: absolute;
65
+ top: 4px;
66
+ left: 5px;
67
+ }
68
+ }
69
+ }
70
+ }
71
+ .face-spin{
72
+ margin-top: -2px;
73
+ position: absolute;
74
+ right: 6px;
75
+ .circle{
76
+ border: 2px solid #ef8f39;
77
+ border-top-color: transparent;
78
+ }
79
+ }
80
+
81
+ .info {
82
+ width : 100%;
83
+ height : 56px;
84
+ display : flex;
85
+ justify-content: left;
86
+ align-items : Center;
87
+ line-height: normal;
88
+ &.member-btn-hidden-flex{
89
+ .first{
90
+ flex: 0;
91
+ }
92
+ .second{
93
+ flex: 1;
94
+ justify-content: space-around;
95
+ }
96
+ .close{
97
+ flex: 0 0 50px;
98
+ }
99
+ }
100
+ .first {
101
+ img {
102
+ width : 36px;
103
+ height : 36px;
104
+ border-radius: 50%;
105
+ border : 1px solid @color-g8;
106
+ overflow : hidden;
107
+ cursor : pointer;
108
+ }
109
+ }
110
+
111
+ .second {
112
+ width : 240px;
113
+ font-size : 12px;
114
+ color : @color-g1;
115
+ cursor : default;
116
+ display : flex;
117
+ justify-content: left;
118
+ align-items : Center;
119
+ cursor: pointer;
120
+ .one {
121
+ width : 82px;
122
+ overflow: hidden;
123
+ padding-left : 5px;
124
+
125
+ .a {
126
+ overflow : hidden;
127
+ white-space : nowrap;
128
+ text-overflow: ellipsis;
129
+ }
130
+
131
+ .b {
132
+ text-align : left;
133
+ font-size : 12px;
134
+ margin-top : 5px;
135
+ //color : @color-d7;
136
+ //background:url('https://newretail.static.chanjet.com/member_class.png') no-repeat left top;
137
+ //min-width : 40px;
138
+ //background: linear-gradient(to bottom right, #e5c583 , #fadcb0);
139
+ //border-radius: 14px 20px 20px 0;
140
+ //display: inline-block;
141
+ //padding: 0 4px;
142
+ //max-width: 100%;
143
+ //overflow: hidden;
144
+ //height : 18px;
145
+ //line-height : 18px;
146
+ }
147
+ }
148
+
149
+ .two {
150
+ text-align: center;
151
+ width : 54px;
152
+ //overflow : hidden;
153
+ word-break: keep-all;
154
+
155
+ .a {
156
+ font-size : 12px;
157
+ font-weight: bold;
158
+ overflow: hidden;
159
+ text-overflow:ellipsis;
160
+ white-space: nowrap;
161
+ }
162
+
163
+ .b {
164
+ font-size : 12px;
165
+ margin-top: 5px;
166
+ }
167
+ }
168
+ }
169
+
170
+ .close {
171
+ display: flex;
172
+ justify-content: center;
173
+ overflow : hidden;
174
+ width : 30px;
175
+ height : 56px;
176
+ line-height: 56px;
177
+ padding : 0px 5px;
178
+ cursor: pointer;
179
+
180
+ i {
181
+ font-size: 16px;
182
+ color : @color-g5;
183
+ }
184
+ }
185
+ }
186
+ }
187
+
188
+ .right {
189
+ width : 90px;
190
+ font-size : 12px;
191
+ padding-left: 10px;
192
+ border-left : 1px solid @color-g6;
193
+ position : relative;
194
+
195
+ .btn {
196
+ width : 64px;
197
+ min-width : 0px;
198
+ height : 32px;
199
+ line-height : 32px;
200
+ padding : 0;
201
+ font-size : 12px;
202
+ color : @color-z3;
203
+ border-color : @color-z1 !important;
204
+ background-color: @color-z1 !important;
205
+ overflow: visible;
206
+ }
207
+ .inshop-member-spin{
208
+ margin: 0 auto;
209
+ display: inline-block;
210
+ margin-top: 3px;
211
+ }
212
+
213
+ .btn:focus,
214
+ .btn:hover {
215
+ border-color : @color-z1;
216
+ background-color: @color-z1;
217
+ }
218
+
219
+ .badge {
220
+ padding: 0px 4px;
221
+ position : absolute;
222
+ top : -11px;
223
+ right : -8px;
224
+ min-width : 20px;
225
+ height : 20px;
226
+ line-height : 20px;
227
+ text-align : center;
228
+ font-size : 12px;
229
+ color : @color-z3;
230
+ border-radius : 20px;
231
+ background-color: @color-d1;
232
+ }
233
+ }
234
+ }
235
+ .memberBirthday {
236
+ .u-modal-content {
237
+ background-color: rgba(255, 255, 255, 0) !important;
238
+ box-shadow : 0 0 0 !important;
239
+ border : 0 !important;
240
+ text-align : center;
241
+
242
+ .u-modal-body {
243
+ width : 600px !important;
244
+ height: 370px !important;
245
+ }
246
+
247
+ .u-modal-header,
248
+ .u-modal-footer {
249
+
250
+ display: none;
251
+ }
252
+
253
+ .picture {
254
+ img {
255
+ width : 350px;
256
+ height: 308px;
257
+ }
258
+
259
+ i {
260
+ position : absolute;
261
+ top : 0;
262
+ right : 100px;
263
+ font-size: 24px;
264
+ color : #FFFFFF;
265
+ }
266
+ }
267
+
268
+ .remark {
269
+ margin-top: 24px;
270
+ font-size : 22px;
271
+ color : #FFFFFF;
272
+
273
+ span {
274
+ padding: 0 5px;
275
+ color : #EF8F39;
276
+ }
277
+ }
278
+ }
279
+ }
280
+
281
+ .member-modal-animation{
282
+ &.u-modal.fade{
283
+ .u-modal-dialog{
284
+ opacity: 0;
285
+ top: 40%;
286
+ transform: translateY(-50%);
287
+ margin: 0px auto;
288
+ transition: all .2s ease-in-out !important;
289
+ }
290
+
291
+ &.in{
292
+ .u-modal-dialog{
293
+ opacity: 1;
294
+ top: 50%;
295
+ }
296
+ }
297
+ }
298
+ }
299
+ .MemberShowContainer {
300
+ .header {
301
+ border-bottom: 1px solid @color-g6 !important;
302
+ .u-modal-title {
303
+ font-size : 18px;
304
+ }
305
+ .u-close {
306
+ opacity: 1 !important;
307
+ }
308
+ }
309
+
310
+ .member-show-body {
311
+ .memberShopContainer {
312
+ padding-left: 0px !important;
313
+ }
314
+
315
+ .member-shop-content {
316
+ width: 100%;
317
+
318
+ .member-content-tab {
319
+ flex: 0 1 auto;
320
+ }
321
+ }
322
+ }
323
+
324
+ .footer {
325
+ border-top: 1px solid @color-g6 !important;
326
+ .u-button.u-button-secondary {
327
+ background-color: @color-z3;
328
+ color : @color-g3;
329
+ border-color : @color-g5;
330
+ margin-right: 20px !important;
331
+ }
332
+ .u-button.u-button-primary {
333
+ border-color : @color-z1;
334
+ background-color: @color-z1;
335
+ }
336
+ }
337
+ }
338
+
339
+ .MemberPhotoContainer {
340
+ .header {
341
+ border-bottom: 1px solid @color-g6 !important;
342
+ .u-modal-title {
343
+ font-size : 18px;
344
+ }
345
+ }
346
+
347
+ .body {
348
+ height : 376px;
349
+ overflow : hidden;
350
+ overflow-y: auto;
351
+ padding : 0;
352
+ display: flex;
353
+ flex-wrap: wrap;
354
+ justify-content: space-between;
355
+ .memberPhoto {
356
+ float : left;
357
+ text-align : center;
358
+ padding: 10px 20px;
359
+ position : relative;
360
+ width: 120px;
361
+ height: 135px;
362
+
363
+ .img {
364
+ width : 80px;
365
+ height : 80px;
366
+ border-radius: 50%;
367
+ border : 1px solid @color-z3;
368
+ overflow : hidden;
369
+ }
370
+
371
+ .select {
372
+ position : absolute;
373
+ bottom : 45px;
374
+ right : 25px;
375
+ height : 22px;
376
+ width : 22px;
377
+ font-size : 12px;
378
+ color : @color-z3;
379
+ border-radius : 20px;
380
+ background-color: @color-z1;
381
+ }
382
+
383
+ .tag {
384
+ font-size : 16px;
385
+ line-height: 14px;
386
+ color : @color-g1;
387
+ font-weight: 600;
388
+ padding-top: 16px;
389
+ }
390
+
391
+ img {
392
+ width : 80px;
393
+ height: 80px;
394
+ }
395
+ }
396
+ }
397
+
398
+ .footer {
399
+ border-top: 1px solid @color-g6 !important;
400
+ padding: 12px;
401
+ .u-button.u-button-secondary {
402
+ background-color: @color-z3;
403
+ color : @color-g3;
404
+ border-color : @color-g5;
405
+ }
406
+
407
+ .u-button.u-button-primary {
408
+ border-color : @color-z1;
409
+ background-color: @color-z1;
410
+ }
411
+ }
412
+ }
413
+
414
+ .MemberCloseContainer {
415
+ .header {
416
+ .u-modal-title {
417
+ font-size : 18px;
418
+ }
419
+ .u-close {
420
+ opacity: 1 !important;
421
+ }
422
+ }
423
+
424
+ .body {
425
+ height : 120px;
426
+ padding: 0;
427
+ display: flex;
428
+
429
+ .content {
430
+ margin-top : 23px;
431
+ margin-left: 32px;
432
+
433
+ .icon {
434
+ font-size: 20px;
435
+ color : @color-z1;
436
+ }
437
+
438
+ .span {
439
+ margin-left: 16px;
440
+ font-size : 16px;
441
+ font-weight: 400;
442
+ }
443
+ }
444
+ }
445
+
446
+ .footer {
447
+ .u-button.u-button-secondary {
448
+ background-color: @color-z3;
449
+ color : @color-g3;
450
+ border-color : @color-g5;
451
+ }
452
+
453
+ .u-button.u-button-primary {
454
+ border-color : @color-z1;
455
+ background-color: @color-z1;
456
+ }
457
+ }
458
+ }
459
+ .member-modal-wrapper{
460
+ .u-modal-backdrop{
461
+ z-index: 900 !important;
462
+ }
463
+ .u-modal{
464
+ z-index: 901 !important;
465
+ }
466
+ }