affirmGhs.vue 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664
  1. <template>
  2. <view class="affirm-page">
  3. <view class="affirm-view overscroll">
  4. <form>
  5. <view class="module-com">
  6. <view class="flex-space ghs-msg">
  7. {{ghsInfo.name}} {{ ghsInfo.telephone }}
  8. <i class="iconfont icondianhua1" @tap="toPhone(ghsInfo.telephone)"></i>
  9. </view>
  10. <view class="flex ghs-msg active">
  11. {{ ghsInfo.fullAddress }}
  12. </view>
  13. </view>
  14. <view class="module-com">
  15. <view class="commodity-view">
  16. <view class="commodity-list">
  17. <view class="commodity-item" v-for="(item, index) in selectList" :key="index">
  18. <image class="item-icon" :src="item.cover" alt="" />
  19. <view class="item-info">
  20. <view class="info-line">
  21. <text class="item-name">{{ item.itemName }}</text>
  22. <text class="item-price">
  23. <text class="unit"></text>
  24. <text class="price">
  25. ¥{{ Number(item.bigCount)>0 ? parseFloat(item.bigPrice) : parseFloat(item.smallPrice) }}
  26. </text>
  27. </text>
  28. </view>
  29. <view style="text-align:right;position:relative;">
  30. <view class="open-bx" >
  31. <text class="num">
  32. <text v-if="item.bigCount > 0" style="font-size:30upx;font-weight:bold;color:#3385ff;">
  33. {{ item.bigCount }}{{item.bigUnit}}
  34. </text>
  35. <text v-if="item.smallCount > 0" style="font-size:30upx;">
  36. {{ item.smallCount }}{{item.smallUnit}}
  37. </text>
  38. </text>
  39. </view>
  40. </view>
  41. <text v-if="item.presell == 1" style="position:absolute;top:86upx;font-weight:bold;color:red;font-size:30upx;">预售花材下单不能退款</text>
  42. </view>
  43. </view>
  44. </view>
  45. <view class="summary-bar">
  46. <view class="operate-view" @click="gobackEvent">
  47. <text class="iconfont icongouwuche"></text>返回修改
  48. </view>
  49. <view class="describe-view">
  50. <text class="price">共{{ allCountFun.bigLength }}扎,{{ allCountFun.weight }}公斤,合计 ¥{{ allPriceFun }}</text>
  51. </view>
  52. </view>
  53. </view>
  54. </view>
  55. <view class="module-com input-line-wrap">
  56. <block v-if="ghsInfo.pfLevel && ghsInfo.pfLevel == 1">
  57. <tui-list-cell class="line-cell" :hover="false" :arrow="false" v-if="ghsInfo.shopId == 14636">
  58. <button class="admin-button-com middle" :class="[form.transType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(2)">冷链物流</button>
  59. <button class="admin-button-com middle" :class="[form.transType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(3)">航空物流</button>
  60. <button class="admin-button-com middle" :class="[form.transType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(0)">德邦物流</button>
  61. <button class="admin-button-com middle" :class="[form.transType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(1)">顺丰物流</button>
  62. <button class="admin-button-com middle" :class="[form.transType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(4)">同城配送</button>
  63. <button class="admin-button-com middle" :class="[form.transType == 5 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;font-size:23upx;" @click="changeTransType(5)">到店自取</button>
  64. </tui-list-cell>
  65. <tui-list-cell class="line-cell" :hover="false" :arrow="false" v-else-if="ghsInfo.shopId == 3">
  66. <button class="admin-button-com middle" :class="[form.transType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(2)">冷链物流</button>
  67. <button class="admin-button-com middle" :class="[form.transType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(3)">航空物流</button>
  68. <button class="admin-button-com middle" :class="[form.transType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(0)">德邦物流</button>
  69. <button class="admin-button-com middle" :class="[form.transType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(1)">顺丰物流</button>
  70. <button class="admin-button-com middle" :class="[form.transType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(4)">同城配送</button>
  71. <button class="admin-button-com middle" :class="[form.transType == 5 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;font-size:23upx;" @click="changeTransType(5)">到店自取</button>
  72. </tui-list-cell>
  73. <tui-list-cell class="line-cell" :hover="false" :arrow="false" v-else-if="ghsInfo.shopId == 29136">
  74. <button class="admin-button-com middle" :class="[form.transType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(0)">德邦物流</button>
  75. <button class="admin-button-com middle" :class="[form.transType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(1)">顺丰物流</button>
  76. <button class="admin-button-com middle" :class="[form.transType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(2)">冷链物流</button>
  77. <button class="admin-button-com middle" :class="[form.transType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(3)">航空物流</button>
  78. <button class="admin-button-com middle" :class="[form.transType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(4)">同城配送</button>
  79. <button class="admin-button-com middle" :class="[form.transType == 5 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;font-size:23upx;" @click="changeTransType(5)">到店自取</button>
  80. </tui-list-cell>
  81. <tui-list-cell class="line-cell" :hover="false" :arrow="false" v-else-if="ghsInfo.shopId == 86726">
  82. <button class="admin-button-com middle" :class="[form.transType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(4)">同城配送</button>
  83. <button class="admin-button-com middle" :class="[form.transType == 5 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;font-size:23upx;" @click="changeTransType(5)">到店自取</button>
  84. </tui-list-cell>
  85. <tui-list-cell class="line-cell" :hover="false" :arrow="false" v-else>
  86. <button class="admin-button-com middle" :class="[form.transType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(4)">同城配送</button>
  87. <button class="admin-button-com middle" :class="[form.transType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(0)">德邦物流</button>
  88. <button class="admin-button-com middle" :class="[form.transType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(1)">顺丰物流</button>
  89. <button class="admin-button-com middle" :class="[form.transType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(2)">冷链物流</button>
  90. <button class="admin-button-com middle" :class="[form.transType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;margin-right:11upx;font-size:23upx;" @click="changeTransType(3)">航空物流</button>
  91. <button class="admin-button-com middle" :class="[form.transType == 5 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;font-size:23upx;" @click="changeTransType(5)">到店自取</button>
  92. </tui-list-cell>
  93. <tui-list-cell class="line-cell" :hover="false" :arrow="false">
  94. <view>
  95. <block v-if="ghsInfo.shopId == 21319">
  96. <view>
  97. <text style="width:100%;font-weight:bold;color:#3385FF;">所有打包费/运费,客服会一一同大家对接收取。客服微信 hzz252252</text>
  98. </view>
  99. </block>
  100. <block v-else>
  101. <view v-if="form.transType == 0 || form.transType == 1">
  102. <text style="color:red;width:100%;font-weight:bold;">送货上门</text>
  103. </view>
  104. <view v-if="form.transType == 2 || form.transType == 3">
  105. <text style="color:red;width:100%;font-weight:bold;">提货自理</text>
  106. </view>
  107. <view v-if="form.transType != 5">
  108. <text style="color:#3385FF;width:100%;font-weight:bold;">早班或晚班,指定发物流公司请备注。</text>
  109. </view>
  110. <view v-if="form.transType != 5">
  111. <text v-if="ghsInfo.shopId == 13398" style="color:red;width:100%;font-weight:bold;">本店昆明直发包邮到店,购买数量需要15扎以上,低于15扎请联系当地店长!</text>
  112. <text v-else-if="ghsInfo.shopId == 29136" style="color:red;width:100%;font-weight:bold;">运费、打包费请联系客服</text>
  113. <text v-else style="color:#3385FF;width:100%;font-weight:bold;">运费预收,根据实际产生物流费用,多退少补。有退款会原路退回。</text>
  114. </view>
  115. </block>
  116. </view>
  117. </tui-list-cell>
  118. </block>
  119. <block v-else>
  120. <block v-if="ghsInfo.shopId == 82200">
  121. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  122. <button class="admin-button-com middle" :class="[form.sendType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;" @click="changeSendType(0)">送货上门</button>
  123. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  124. </tui-list-cell>
  125. </block>
  126. <block v-else-if="ghsInfo.shopId == 87989">
  127. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  128. <button class="admin-button-com middle" :class="[form.sendType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;" @click="changeSendType(0)">送货上门</button>
  129. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  130. </tui-list-cell>
  131. </block>
  132. <block v-else-if="ghsInfo.shopId == 92086">
  133. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  134. <button class="admin-button-com middle" :class="[form.sendType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;" @click="changeSendType(0)">送货上门</button>
  135. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  136. </tui-list-cell>
  137. </block>
  138. <block v-else-if="ghsInfo.shopId == 91115">
  139. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  140. <button class="admin-button-com middle" :class="[form.sendType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;" @click="changeSendType(0)">送货上门</button>
  141. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  142. <button class="admin-button-com middle" :class="[form.sendType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(2)">跑腿</button>
  143. <button class="admin-button-com middle" :class="[form.sendType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(3)">物流</button>
  144. </tui-list-cell>
  145. </block>
  146. <block v-else-if="ghsInfo.shopId == 36919">
  147. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  148. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  149. <button class="admin-button-com middle" :class="[form.sendType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;" @click="changeSendType(0)">送货上门</button>
  150. <button class="admin-button-com middle" :class="[form.sendType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(2)">跑腿</button>
  151. <button class="admin-button-com middle" :class="[form.sendType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(3)">物流</button>
  152. </tui-list-cell>
  153. </block>
  154. <block v-else-if="ghsInfo.shopId == 90985">
  155. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  156. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  157. <button class="admin-button-com middle" :class="[form.sendType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(2)">跑腿</button>
  158. <button class="admin-button-com middle" :class="[form.sendType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(4)">快递</button>
  159. <button class="admin-button-com middle" :class="[form.sendType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(3)">物流</button>
  160. </tui-list-cell>
  161. </block>
  162. <block v-else>
  163. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  164. <button class="admin-button-com middle" :class="[form.sendType == 0 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:32upx;" @click="changeSendType(0)" v-if="ghsInfo.shopId != 4608" >送货上门</button>
  165. <button class="admin-button-com middle" :class="[form.sendType == 1 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(1)">自取</button>
  166. <template v-if="ghsInfo.shopId != 14248">
  167. <view v-if="ghsInfo.openIntraCity==1" style="position:relative;display:inline-block;">
  168. <button class="admin-button-com middle" :class="[form.sendType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(2)">跑腿</button>
  169. </view>
  170. <button v-else class="admin-button-com middle" :class="[form.sendType == 2 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(2)">跑腿</button>
  171. </template>
  172. <button class="admin-button-com middle" :class="[form.sendType == 4 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(4)" v-if="ghsInfo.shopId != 14248">快递</button>
  173. <button class="admin-button-com middle" :class="[form.sendType == 3 ? 'blue' : 'default']" style="width:115upx;height:100upx;line-height:60upx;" @click="changeSendType(3)" v-if="ghsInfo.shopId != 14248">物流</button>
  174. </tui-list-cell>
  175. </block>
  176. <tui-list-cell v-if="form.sendType != 2" class="line-cell" :hover="false" :arrow="false">
  177. <view v-if="form.sendType == 0">
  178. <block v-if="ghsInfo.shopId == 40312">
  179. <view style="color:red;width:100%;font-weight:bold;">市区如需配送请拍运费,(左下角运费服务专栏)县城寄货运费可到付</view>
  180. </block>
  181. <block v-else-if="ghsInfo.shopId == 4608">
  182. <view style="color:red;width:100%;font-weight:bold;">满500元,10公里内免费配送</view>
  183. <view style="color:red;width:100%;font-weight:bold;">满1000元,20公里内免费配送</view>
  184. <view style="color:#3385FF;width:100%;font-weight:bold;">请自行查询距离是否符合要求,符合要求再下单哦!</view>
  185. </block>
  186. <block v-else-if="ghsInfo.shopId == 82200">
  187. <view><text style="color:#3385FF;">满100元并且满15扎包邮</text></view>
  188. </block>
  189. <block v-else>
  190. <view><text style="color:#3385FF;">首次下单,请联系客服确认您是否在配送范围</text></view>
  191. <text style="color: #3385FF;width:100%;" v-if="ghsInfo.shopId && (ghsInfo.shopId == 520 || ghsInfo.shopId == 1489)">
  192. 在本店配送范围的,下单满200元免费送货上门
  193. </text>
  194. <text style="color: #3385FF;width:100%;" v-else>在本店配送范围的,免费送货上门</text>
  195. <view><text style="color: #3385FF;width:100%;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">每天早上8:00左右(7:30截单)和下午1:00左右发车(12:30截单)截单后订单默认下一趟配送;市区最低满100元起送,远区最低满200元起送(不满默认不送);其他时间不免费配送。配送顺序根据线路安排,不支持催单哦,急单建议叫车配送,车费自行承担。</text></view>
  196. <view><text style="color: #09733e;width:100%;font-weight:bold;" v-if="ghsInfo.shopId && ghsInfo.shopId == 14248">理赔规则:1.鲜花是鲜活类产品,一旦送出后无质量问题,不接受任何理由的退货换货2.收到货请第一时间检查质量核对数量,有问题及时联系客服处理(12小时内反馈,超出时间不予受理)3所有花材10%为正常损耗不售后(基地玫瑰除外),超出的部分可以售后,轻微不影响使用的小问题也是不售后的4.基地玫瑰20%正常损耗,基地玫瑰会有夹支、畸形花头 断头4支以内 属于正常,如果介意可以提前询问客服</text></view>
  197. <view><text style="color:red;font-weight:bold">免费配送仅送货到楼下,不支持送货上楼</text></view>
  198. <view v-if="ghsInfo.shopId && (ghsInfo.shopId == 520 || ghsInfo.shopId == 1489)"><text style="color:red;font-weight:bold">免费配送每天23:30发车,其它时间请用跑腿或自取</text></view>
  199. <view><text style="color:red;font-weight:bold">不在配送范围的,请勿选送货上门,否则运费自理</text></view>
  200. <view v-if="ghsInfo.shopId && (ghsInfo.shopId == 11094 || ghsInfo.shopId == 11318)"><text style="color:red;font-weight:bold">所有彩玫瑰1扎损耗3支内不售后</text></view>
  201. <view v-if="ghsInfo.shopId && (ghsInfo.shopId == 21486)"><text style="color:#3385FF;">收到货品后,3个小时之内可以申请售后,要求有图片!鲜花是生鲜产品,3个小时后不提供售后</text></view>
  202. <view v-if="ghsInfo.shopId && (ghsInfo.shopId == 21486)"><text style="color:black;font-weight:bold;">寻菊花,玫瑰等单品,常年用量大且稳定的客户合作!有意向的联系客服</text></view>
  203. <view v-if="ghsInfo.shopId && (ghsInfo.shopId == 23281)"><text style="color:#3385FF;font-weight:bold">0:00-7:30下单当日配送,7:30-23:59下单次日配送</text></view>
  204. </block>
  205. </view>
  206. <view v-if="form.sendType == 1">
  207. <text style="color: #3385FF;width:100%;">到店自取、自己叫跑腿到店取货,选自取。</text>
  208. </view>
  209. <view v-if="form.sendType == 3">
  210. <text style="color: #3385FF;width:100%;">运费到付</text>
  211. </view>
  212. <view v-if="form.sendType == 4">
  213. <text style="color: #3385FF;width:100%;">运费到付</text>
  214. </view>
  215. </tui-list-cell>
  216. <tui-list-cell class="line-cell" :hover="false" :arrow="false" v-if="needAddPackCost == true">
  217. <view>
  218. <text style="color: red;width:100%;">
  219. 当天订单不满{{lackExpend}}元,加纸箱包装费{{ form.packCost }}元
  220. </text>
  221. </view>
  222. </tui-list-cell>
  223. <block v-if="$util.isEmpty(wlList)">
  224. <tui-list-cell class="line-cell" :hover="false" v-if="form.sendType == 3">
  225. <view class="tui-title">配送物流</view>
  226. <input type="text" placeholder="请填选物流" v-model="form.wlName" @focus="form.wlName=''" placeholder-class="tui-placeholder"/>
  227. </tui-list-cell>
  228. </block>
  229. <block v-else>
  230. <tui-list-cell class="line-cell" :arrow="true" v-if="form.sendType == 3">
  231. <div class="tui-title">配送物流</div>
  232. <picker mode="selector" :value="form.wlId" :range="wlList" range-key="name" @change="changeWlFn" class="tui-input" >
  233. <div v-if="form.wlId">{{ wlSelData.name }}</div>
  234. <div class="tui-placeholder" v-else>请选择</div>
  235. </picker>
  236. </tui-list-cell>
  237. </block>
  238. </block>
  239. <tui-list-cell v-if="form.sendType == 2 && ghsInfo.openIntraCity != 1" class="line-cell" :hover="false" :arrow="false">
  240. <view>
  241. <text v-if="ghsInfo.openIntraCity == 0" style="color: #3385FF;width:100%;font-size:30upx;font-weight:bold;">运费自理或到付(请联系客服)</text>
  242. <text v-if="ghsInfo.openIntraCity == 2" style="color: red;width:100%;font-size:30upx;font-weight:bold;">跑腿配送暂不可用,请选其它方式</text>
  243. </view>
  244. </tui-list-cell>
  245. <tui-list-cell class="line-cell" :hover="false" :arrow="true" v-if="displayAddress == true" @click="modifyAddress">
  246. <view class="tui-title">收花地址</view>
  247. <!-- 源花汇和镜中的客户,不要求客户地址完整 -->
  248. <view v-if="validAddress || ghsInfo.shopId==10649 || ghsInfo.shopId ==33668">
  249. <view style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width:420upx;"><text>{{shopInfo.address}}</text></view>
  250. <view v-if="shopInfo.showAddress!=shopInfo.fullAddress" style="color:#848181;"><text>{{shopInfo.showAddress}}</text></view>
  251. </view>
  252. <view v-else>
  253. <view><text style="color:red;font-weight:bold;font-size:30upx;">请填写您的地址</text></view>
  254. </view>
  255. </tui-list-cell>
  256. <tui-list-cell v-if="form.sendType == 2 && ghsInfo.openIntraCity == 1" class="line-cell" :hover="false">
  257. <!-- 跑腿平台报价列表 -->
  258. <view v-if="ghsInfo.openIntraCity == 1 && deliveryQuotes.length > 0" class="delivery-quotes-container">
  259. <view class="delivery-quotes-grid">
  260. <view
  261. v-for="(item, index) in deliveryQuotes"
  262. :key="index"
  263. class="delivery-quote-item"
  264. :class="{
  265. 'active': selectedDeliveryIndex === index,
  266. 'disabled': !item.isAble,
  267. 'fixed-width': deliveryQuotes.length <= 2
  268. }"
  269. @click="selectDelivery(item, index)"
  270. >
  271. <view class="platform-name">{{ item.displayName || item.name }}</view>
  272. <view class="platform-price">{{ item.priceText }}元</view>
  273. <view v-if="item.type" class="platform-type">{{ item.type }}</view>
  274. </view>
  275. </view>
  276. </view>
  277. <view v-else style="text-align: center; padding: 20upx 0;">
  278. <text v-if="validAddress">正在获取运费...</text><text v-else style="color:red;font-weight:bold;font-size:32upx;" @click="modifyAddress">收货地址缺失,请填写</text>
  279. </view>
  280. </tui-list-cell>
  281. <tui-list-cell class="line-cell" :hover="false" v-if="displaySendCost == true && Number(showDistance)>0">
  282. <view class="tui-title">距离</view>
  283. <text v-if="showDistance > 100" style="color: #3385FF">{{ (showDistance/1000).toFixed(1) }}公里</text>
  284. <text v-else style="color: #3385FF">{{ showDistance }} 米</text>
  285. <text v-if="showDeliveryPolicy" class="delivery-policy-link" @click="showDeliveryPolicyModal">
  286. 免跑腿费条件
  287. </text>
  288. </tui-list-cell>
  289. <tui-list-cell class="line-cell" :hover="false" v-if="displaySendCost == true">
  290. <view class="tui-title">跑腿费</view>
  291. <view>
  292. <text :class="isFreeDelivery ? 'delivery-price-free' : 'delivery-price-normal'">¥{{ form.sendCost }}</text>
  293. <text v-if="isFreeDelivery" class="free-delivery-tag">¥0【免跑腿费】</text>
  294. </view>
  295. </tui-list-cell>
  296. <tui-list-cell class="line-cell" :hover="false" v-if="needAddPackCost == true">
  297. <view class="tui-title">包装费</view>
  298. <text style="color: #3385FF">¥{{ form.packCost }}</text>
  299. </tui-list-cell>
  300. <tui-list-cell class="line-cell" :hover="false" :arrow="false" >
  301. <view class="tui-title">总金额</view>
  302. <text style="color: #3385FF">¥ {{ modifyPrice }}</text>
  303. </tui-list-cell>
  304. <tui-list-cell class="line-cell" :hover="false" :arrow="true">
  305. <view class="tui-title">配送日期</view>
  306. <picker mode="date" :value="sendTimeWant" @change="bindDateChange" style="width:400upx;">
  307. <view class="uni-input" v-if="sendTimeWant==''" style="color:#CCCCCC;">请选日期,默认当天</view>
  308. <view class="uni-input">{{sendTimeWant}}</view>
  309. </picker>
  310. </tui-list-cell>
  311. <tui-list-cell class="line-cell" :hover="false" :arrow="false">
  312. <textarea style="height: 100upx" v-model="remark" placeholder="这里写备注"/>
  313. </tui-list-cell>
  314. </view>
  315. </form>
  316. </view>
  317. <view class="under-bar">
  318. <view class="price-view">
  319. <text class="price-title">合计</text>
  320. <text class="price-number">¥<text class="large">{{ modifyPrice}}</text></text>
  321. </view>
  322. <button class="admin-button-com blue big" @click="affirmFormSubmit(0)">提交</button>
  323. </view>
  324. <uni-popup ref="selectFlowerNumRef" background-color="#fff" type="center" :animation="false" class="class-popup-style">
  325. <view style="font-size:32upx;margin:30upx 0 10upx 30upx;width:90vw;font-weight:bold;">以下库存不足,剩余的库存,是否都要?</view>
  326. <view v-if="!$util.isEmpty(lackList)" style="display:flex;padding:10upx 20upx 20upx 30upx;height:auto;justify-content: space-between;align-items:center;flex-wrap:wrap;max-height:80vh;overflow:auto;width:90vw;font-size:32upx;">
  327. <view v-for="(item, index) in lackList" :key="index" style="width:100%;margin-top:10upx;">{{ item.name }}<text style="margin-left:20upx;font-weight:bold;color:red;">剩{{item.stock}}个</text></view>
  328. </view>
  329. <view style="width:90vw;margin:20upx 0 20upx 0;display:flex;align-items: center; justify-content: center;">
  330. <button class="admin-button-com big blue" style="width:190upx;" @click="gobackEvent">返回修改</button>
  331. <button class="admin-button-com big blue" style="width:190upx;" @click="closeRemind()">取消</button>
  332. <button class="admin-button-com big blue" style="width:190upx;" @click="affirmFormSubmit(1)">要</button>
  333. </view>
  334. </uni-popup>
  335. <uni-popup ref="deliveryPolicyPopup" type="center" background-color="#fff">
  336. <view class="policy-popup-content">
  337. <view class="policy-title">免费配送条件</view>
  338. <scroll-view scroll-y="true" class="policy-scroll">
  339. <view class="policy-list">
  340. <block v-for="(item, index) in deliveryPolicyList" :key="index">
  341. <view class="policy-item">{{ item }}</view>
  342. </block>
  343. </view>
  344. </scroll-view>
  345. <view class="policy-btn" @click="closeDeliveryPolicy">知道了</view>
  346. </view>
  347. </uni-popup>
  348. </view>
  349. </template>
  350. <script>
  351. import TuiListCell from "@/components/plugin/list-cell";
  352. import AppAvatarModule from "@/components/module/app-avatar";
  353. import SimpleAddress from "@/components/plugin/simple-address";
  354. import AppAreaSel from "@/components/app-area-sel";
  355. import AppCustomerSel from "@/components/app-customer-sel";
  356. import productMins from "@/mixins/cgProduct";
  357. import appTimer from '@/components/app-timer'
  358. import appFormRadioBtn from "@/components/app-formRadio-btn";
  359. import appAddressGroup from "@/components/app-address-group";
  360. import appFormSend from "@/components/app-form-send";
  361. import appSendTime from "@/components/app-send-time";
  362. const formUtil = require("@/utils/formValidation.js");
  363. import AppDatePicker from "@/components/app-date-picker";
  364. import { getGhsDataApi,getWlList } from "@/api/ghs";
  365. import { freight,createOrder } from "@/api/purchase";
  366. import { mapActions, mapGetters } from "vuex";
  367. import { shopHouponHas } from '@/api/coupon'
  368. import {currentShop} from "@/api/shop"
  369. import { allDeliveryQuotes } from "@/api/express/delivery";
  370. import ModalModule from "@/components/plugin/modal";
  371. export default {
  372. name: "affirmGhs",
  373. components: {
  374. TuiListCell,
  375. AppAvatarModule,
  376. SimpleAddress,
  377. AppAreaSel,
  378. appSendTime,
  379. AppCustomerSel,
  380. appFormRadioBtn,
  381. appAddressGroup,
  382. appFormSend,
  383. appTimer,
  384. AppDatePicker,
  385. ModalModule
  386. },
  387. mixins: [productMins],
  388. data() {
  389. return {
  390. isModel: false,
  391. pageType: "cg",
  392. list:[],
  393. autoLoad: false,
  394. ghsInfo:'',
  395. sendTimeWant:'',
  396. remark:'',
  397. form: {
  398. debt:1,//结算方式 1欠款订单 0正常订单
  399. shopId: "",
  400. shopName: "",
  401. receiveProvince: "",
  402. receiveCity: "",
  403. receiveFloor: "",
  404. receiveAddress: "",
  405. receiveLong: "",
  406. receiveLat: "",
  407. sendType: 0,
  408. transType:4,
  409. sendSide: "2",
  410. sendDate: "",
  411. sendTimeWant: "",
  412. sendCost: 0,
  413. customId: "",
  414. product: "",
  415. hbId: '0',
  416. packCost:0,
  417. wlName:'',
  418. wlId:0
  419. },
  420. lackExpend:0,
  421. showCustomer: false,
  422. today:'',
  423. monthLater:'',
  424. hasHb:0,
  425. selectedHb:{couponAmount:0,hbId:0,couponSelInx:0},
  426. customData: {
  427. bigCount: 0,
  428. smallCount: 0
  429. },
  430. sendData:{},
  431. shopInfo:{
  432. lat:'',
  433. long:'',
  434. fullAddress:'',
  435. showAddress:'',
  436. address:''
  437. },
  438. wlList:[],
  439. wlSelData: {id:0,name:''},
  440. needAddPackCost:false,
  441. transCost:[],
  442. lackList:[],
  443. showDistance:0,
  444. deliveryQuotes: [], // 跑腿平台报价列表
  445. selectedDeliveryIndex: -1, // 选中的报价索引
  446. selectedDeliveryData: null, // 选中的报价数据
  447. deliveryPolicyList: [], // 包配送政策列表
  448. validAddress:false
  449. };
  450. },
  451. onLoad() {
  452. this.getGhsData(this.option.id)
  453. },
  454. onShow() {
  455. if(this.selectedHb.hbId && this.selectedHb.hbId > 0) {
  456. this.form.hbId = this.selectedHb.hbId
  457. }else{
  458. this.form.hbId = 0
  459. this.hasCoupon()
  460. }
  461. if(this.form.sendType == 2){
  462. //计算运费
  463. //this.calcFreight()
  464. if(this.displaySendCost == true){
  465. //各跑腿平台报价
  466. this.getDeliveryQuotes()
  467. }
  468. }
  469. //修改地址更新
  470. this.getCurrentShop()
  471. },
  472. computed: {
  473. ...mapGetters(["getMerchantInfo", "getLoginInfo","getDictionariesInfo"]),
  474. displayAddress(){
  475. if(this.form.sendType != 1){
  476. return true
  477. }
  478. if(this.ghsInfo.pfLevel && this.ghsInfo.pfLevel == 1){
  479. return true
  480. }
  481. return false
  482. },
  483. /**
  484. * 显示跑腿费
  485. * @returns {boolean}
  486. */
  487. displaySendCost(){
  488. if(this.form.sendType == 2){
  489. if([0, 2].includes(this.ghsInfo.openIntraCity)){
  490. return false
  491. }else{
  492. return true
  493. }
  494. }
  495. // 这个要先去掉,后面再考虑
  496. // if(this.ghsInfo.pfLevel && this.ghsInfo.pfLevel == 1){
  497. // return true
  498. // }
  499. return false
  500. },
  501. /**
  502. * 判断是否免跑腿费
  503. * @returns {boolean}
  504. */
  505. isFreeDelivery(){
  506. // 不显示跑腿费时,不需要判断
  507. if(this.displaySendCost == false){
  508. return false
  509. }
  510. //地址有问题时,不展示免费跑腿情况
  511. if(this.validAddress == false){
  512. return false
  513. }
  514. // 条件1: 比较距离与免费公里数
  515. // showDistance单位是米,hcFreeKm单位是千米
  516. const distanceInMeters = Number(this.showDistance) || 0
  517. const freeKmInMeters = (Number(this.ghsInfo.hcFreeKm) || 0) * 1000
  518. // 如果距离小于免费公里数,则免运费
  519. if(distanceInMeters < freeKmInMeters){
  520. return true
  521. }
  522. // 条件2: 如果距离大于免费公里数,判断hcMap
  523. if(distanceInMeters > freeKmInMeters){
  524. if(this.ghsInfo.hcMap && typeof this.ghsInfo.hcMap == 'string'){
  525. this.ghsInfo.hcMap = JSON.parse(this.ghsInfo.hcMap)
  526. }
  527. // 判断hcMap是否为空
  528. if(this.ghsInfo.hcMap && Array.isArray(this.ghsInfo.hcMap) && this.ghsInfo.hcMap.length > 0){
  529. // 获取花材数量和总价
  530. const flowerCount = this.allCountFun.bigLength || 0
  531. const flowerPrice = this.allPriceFun || 0
  532. // 遍历hcMap,检查是否满足免运费条件
  533. for(const rule of this.ghsInfo.hcMap){
  534. const ruleNum = Number(rule.num) || 0
  535. const rulePrice = Number(rule.price) || 0
  536. const ruleDistance = (Number(rule.distance) || 0) * 1000 // 转换为米
  537. // 如果花材数量大于num,花材总价大于price,距离小于distance,则免运费
  538. if(flowerCount >= ruleNum && flowerPrice >= rulePrice && distanceInMeters <= ruleDistance){
  539. console.log('满足免运费条件:',flowerCount,ruleNum,flowerPrice,rulePrice,distanceInMeters,ruleDistance)
  540. return true
  541. }
  542. }
  543. }else{
  544. if(this.ghsInfo.hcMap && Array.isArray(this.ghsInfo.hcMap) && this.ghsInfo.hcMap.length == 0){
  545. console.log('hcMap数据为空')
  546. return false
  547. }
  548. console.log('this.ghsInfo.hcMap: ',this.ghsInfo.hcMap)
  549. console.log('hcMap数据格式出问题了')
  550. }
  551. }
  552. return false
  553. },
  554. /**
  555. * 是否显示包配送政策
  556. */
  557. showDeliveryPolicy() {
  558. if (!this.ghsInfo) return false
  559. // 检查 hcFreeKm
  560. const hasFreeKm = this.ghsInfo.hcFreeKm ?Number(this.ghsInfo.hcFreeKm):0
  561. // 检查 hcMap
  562. let hasPolicy = false
  563. let mapData = this.ghsInfo.hcMap
  564. if(mapData && typeof mapData == 'string'){
  565. try {
  566. mapData = JSON.parse(mapData)
  567. } catch(e) {
  568. // 解析失败忽略
  569. }
  570. }
  571. if(mapData && Array.isArray(mapData) && mapData.length > 0){
  572. hasPolicy = true
  573. }
  574. if(hasFreeKm>0){
  575. hasPolicy = true
  576. }
  577. return hasPolicy
  578. },
  579. /**
  580. * 计算总金额
  581. * @returns {number}
  582. */
  583. modifyPrice(){
  584. let allPrice = this.allPrice.toFixed(2)
  585. allPrice = Number(allPrice)
  586. let price = allPrice
  587. // 判断是否需要加跑腿费
  588. if(this.displaySendCost == true){
  589. // 如果不是免跑腿费,则加上跑腿费
  590. if(!this.isFreeDelivery){
  591. price = price + this.form.sendCost
  592. }
  593. }
  594. this.needAddPackCost = false
  595. if(this.ghsInfo.pfLevel && this.ghsInfo.pfLevel == 1){
  596. //不是同城配送的,不是到店自取的,并且不是第一次下单,才算打包费
  597. if(this.form.transType != 4 && this.form.transType != 5 && this.ghsInfo.needAddPackFreight == 1){
  598. //昆明发全国
  599. this.needAddPackCost = true
  600. price = price + this.form.packCost
  601. }
  602. }else{
  603. //同城配送
  604. if(this.form.sendType == 4){
  605. //设置了订单金额低200需要付包装费,当前只付一次
  606. if(Number(this.lackExpend) > 0 && allPrice < Number(this.lackExpend)){
  607. price = price + this.form.packCost
  608. this.needAddPackCost = true
  609. }
  610. }
  611. }
  612. price = Number(price)
  613. price = price.toFixed(2)
  614. price = parseFloat(price)
  615. return price
  616. }
  617. },
  618. methods: {
  619. ...mapActions(["initMerchantInfo"]),
  620. changeWlFn(e) {
  621. this.wlSelData = this.wlList[e.detail.value];
  622. this.form.wlId = this.wlSelData.id
  623. this.form.wlName = this.wlSelData.name
  624. },
  625. // 展示包配送政策弹窗
  626. showDeliveryPolicyModal() {
  627. this.deliveryPolicyList = []
  628. // 1. hcFreeKm 规则
  629. if (this.ghsInfo.hcFreeKm && Number(this.ghsInfo.hcFreeKm) > 0) {
  630. this.deliveryPolicyList.push(`${Number(this.ghsInfo.hcFreeKm)}公里内免费配送`)
  631. }
  632. // 2. hcMap 规则
  633. let mapData = this.ghsInfo.hcMap
  634. if(mapData && typeof mapData == 'string'){
  635. try {
  636. mapData = JSON.parse(mapData)
  637. } catch(e) {
  638. mapData = []
  639. }
  640. }
  641. if(mapData && Array.isArray(mapData) && mapData.length > 0){
  642. mapData.forEach(rule => {
  643. const num = Number(rule.num) || 0
  644. const price = Number(rule.price) || 0
  645. const distance = Number(rule.distance) || 0
  646. this.deliveryPolicyList.push(`满${num}扎${price}元,${distance}公里内免费配送`)
  647. })
  648. }
  649. if (this.deliveryPolicyList.length === 0) {
  650. uni.showToast({
  651. title: '暂无详细配送政策',
  652. icon: 'none'
  653. })
  654. return
  655. }
  656. this.$refs.deliveryPolicyPopup.open()
  657. },
  658. closeDeliveryPolicy() {
  659. this.$refs.deliveryPolicyPopup.close()
  660. },
  661. closeRemind(){
  662. this.$refs.selectFlowerNumRef.close()
  663. this.lackList = []
  664. },
  665. changeTransType(num){
  666. let that = this
  667. this.form.transType = num
  668. this.form.sendCost = 0
  669. //第二次下单不算打包费和运费
  670. if(this.ghsInfo.needAddPackFreight == 0){
  671. this.form.sendCost = 0
  672. }else{
  673. if(this.transCost && !this.$util.isEmpty(this.transCost)){
  674. let weight = this.allCountFun.weight ? Number(this.allCountFun.weight) : 0
  675. let totalNum = this.allCountFun.bigLength ? Number(this.allCountFun.bigLength) : 0
  676. for (const ele of this.transCost) {
  677. if(ele.sign == num){
  678. if(num == 2){
  679. //冷链物流
  680. let llOption = ele.option ? ele.option : ''
  681. if(!this.$util.isEmpty(llOption)){
  682. let long = llOption.length
  683. let bigInfo = llOption[long-1]
  684. let bigNum = bigInfo.num
  685. let bigAmount = bigInfo.amount
  686. let bs = parseInt(totalNum/bigNum)
  687. if(bs > 0){
  688. this.form.sendCost = this.form.sendCost + (bs*bigAmount)
  689. this.form.sendCost = parseFloat(this.form.sendCost.toFixed(2))
  690. totalNum = totalNum - (bs*bigNum)
  691. totalNum = parseFloat(totalNum.toFixed(2))
  692. }
  693. for (const ele of llOption){
  694. if(Number(ele.num) >= Number(totalNum)){
  695. this.form.sendCost = Number(this.form.sendCost)+Number(ele.amount)
  696. break
  697. }
  698. }
  699. }
  700. }else{
  701. //其它物流
  702. let perKiloCost = ele.perKiloCost?Number(ele.perKiloCost):0
  703. let sendCost = weight*perKiloCost
  704. sendCost = parseFloat(sendCost.toFixed(2))
  705. this.form.sendCost = sendCost
  706. }
  707. break
  708. }
  709. }
  710. }
  711. }
  712. },
  713. changeSendType(num){
  714. this.form.sendType = num
  715. if(num == 2){
  716. //计算运费
  717. //this.calcFreight() //废弃
  718. if(this.displaySendCost && this.ghsInfo.openIntraCity == 1){
  719. if(!this.$util.isEmpty(this.shopInfo.lat) && !this.$util.isEmpty(this.shopInfo.long) && !this.$util.isEmpty(this.shopInfo.address)){
  720. this.getDeliveryQuotes()//各跑腿平台报价
  721. }
  722. }
  723. } else {
  724. // 切换到其他配送方式时清空报价数据
  725. this.deliveryQuotes = []
  726. this.selectedDeliveryIndex = -1
  727. this.selectedDeliveryData = null
  728. this.form.sendCost = 0
  729. }
  730. },
  731. // 获取跑腿平台报价
  732. getDeliveryQuotes() {
  733. this.deliveryQuotes = []
  734. this.selectedDeliveryIndex = -1
  735. this.selectedDeliveryData = null
  736. allDeliveryQuotes({
  737. ghsId: this.option.id,
  738. totalPrice: this.allPriceFun,
  739. weight: this.allCountFun.weight,
  740. selectList: this.selectList,
  741. weight: 1, // 固定重量1kg,请后期根据实际需求修改。测试过后,所有平台都能在5kg的重量下,不会产生额外费用。
  742. remark: '',
  743. }).then(res => {
  744. if (res.code === 1 && res.data && res.data.deliveryList) {
  745. // 处理报价数据
  746. this.deliveryQuotes = res.data.deliveryList
  747. .filter(item => item.isAble !== false)
  748. .map(item => {
  749. // 价格从分转换为元
  750. const price = item.price ? (item.price / 100).toFixed(1) : '0.0'
  751. // 提取平台名称(去掉括号内的内容)
  752. let displayName = item.name
  753. let bracketContent = ''
  754. if (displayName && displayName.includes('(')) {
  755. bracketContent = displayName.split('(')[1].replace(')', '')
  756. displayName = displayName.split('(')[0].trim()
  757. }
  758. //滴滴特殊处理,括号里的内容作为类型
  759. if(item.en_name == 'didi' && bracketContent != ''){
  760. item.type = bracketContent
  761. }
  762. return {
  763. ...item,
  764. displayName: displayName,
  765. priceText: price,
  766. priceNumber: parseFloat(price),
  767. bracketContent: bracketContent
  768. }
  769. })
  770. // 自动选中第一个可用的报价
  771. const firstAvailableIndex = this.deliveryQuotes.findIndex(item => item.isAble)
  772. if (firstAvailableIndex !== -1) {
  773. this.selectDelivery(this.deliveryQuotes[firstAvailableIndex], firstAvailableIndex)
  774. }
  775. } else {
  776. uni.showToast({ title: '暂无跑腿可用', icon: 'none' })
  777. }
  778. }).catch(err => {
  779. uni.showToast({ title: '没有获取到跑腿费用', icon: 'none' })
  780. })
  781. },
  782. // 选择跑腿平台
  783. selectDelivery(item, index) {
  784. this.selectedDeliveryIndex = index
  785. this.selectedDeliveryData = item
  786. this.form.sendCost = item.priceNumber
  787. this.showDistance = item.distance || 0
  788. },
  789. modifyAddress(){
  790. this.$util.pageTo({ url: '/admin/shop/add?id='+this.getLoginInfo.admin.currentShopId})
  791. },
  792. customUpdate(item) {
  793. if(item.variety == 0){
  794. if(item.stock<=0){
  795. uni.showToast({title:'没有货了',icon:'none'})
  796. return
  797. }
  798. this.customNum({ ...item, bigCount: item.bigCount, smallCount: item.smallCount })
  799. }else{
  800. this.$msg('多颜色请返回列表修改')
  801. }
  802. },
  803. //自定义数量
  804. customNum(info) {
  805. this.isModel = true;
  806. this.customData = info;
  807. this.$nextTick(()=>{
  808. this.customData.smallCount = this.customData.smallCount==0?null:this.customData.smallCount;
  809. this.customData.bigCount = this.customData.bigCount==0?null:this.customData.bigCount;
  810. this.isFocus = true;
  811. if(Number(info.smallCount)>0){
  812. this.globalUnitType = 1
  813. }else{
  814. this.globalUnitType = 0
  815. }
  816. })
  817. },
  818. modalCancel() {
  819. this.isModel = false;
  820. this.customData = {};
  821. },
  822. affirm(val) {
  823. this.isFocus = false;
  824. this.isFocusOne = false;
  825. this.$nextTick(()=>{
  826. //取消
  827. if (val.index === 0) {
  828. if(this.customData.bigCount>0 || this.customData.smallCount>0){
  829. }else{
  830. this.delAllEvent(this.customData)
  831. }
  832. this.modalCancel();
  833. return false
  834. }
  835. //二个都不是数值
  836. if(/(^[1-9]\d*$)/.test(this.customData.bigCount) == false && /(^[1-9]\d*$)/.test(this.customData.smallCount) == false){
  837. this.delAllEvent(this.customData)
  838. this.modalCancel();
  839. return;
  840. }
  841. if(/(^[1-9]\d*$)/.test(this.customData.bigCount)){
  842. if(this.customData.bigCount<=0){
  843. uni.showToast({title:"数量要大于0",icon:"none"})
  844. return;
  845. }
  846. }
  847. if(/(^[1-9]\d*$)/.test(this.customData.smallCount)){
  848. if(this.customData.smallCount<=0){
  849. uni.showToast({title:"数量要大于0",icon:"none"})
  850. return;
  851. }
  852. }
  853. const { bigCount,smallCount,bigNum,bigUnit,smallNum,smallUnit,ratio} = this.customData;
  854. const ratioNum = Number(ratio);
  855. //超过库存时 设置为库存最大值 1
  856. if (Number(bigCount) * ratioNum + Number(smallCount) > Number(bigNum) * ratioNum + Number(smallNum)) {
  857. uni.showToast({
  858. title: '库存还剩'+bigNum,
  859. icon: "none"
  860. });
  861. } else {
  862. this.updateItemEvent(this.customData)
  863. this.modalCancel()
  864. }
  865. })
  866. },
  867. init() {
  868. let that = this
  869. this.getDetailData()
  870. // this.getCurrentShop() //重复执行了,注释掉
  871. getWlList({id:this.option.id}).then(res=>{
  872. if(res.code == 1){
  873. that.wlList = res.data.list ? res.data.list : []
  874. }
  875. })
  876. },
  877. getCurrentShop(){
  878. currentShop().then(res=>{
  879. if(res.code == 1){
  880. this.shopInfo = res.data
  881. if(!this.$util.isEmpty(this.shopInfo.lat) && !this.$util.isEmpty(this.shopInfo.long) && !this.$util.isEmpty(this.shopInfo.address)){
  882. this.validAddress = true
  883. }
  884. }
  885. })
  886. },
  887. calcFreight() {
  888. let weight = 0
  889. if(!this.$util.isEmpty(this.selectList)){
  890. this.selectList.forEach((item,idx,arr) => {
  891. if(Number(item.bigCount)>0){
  892. let add = Number(item.weight)*Number(item.bigCount)
  893. weight = Number(weight) + Number(add)
  894. }else{
  895. let unitWeight = item.weight/item.ratio
  896. let add = Number(unitWeight)*Number(item.smallCount)
  897. weight = Number(weight) + Number(add)
  898. }
  899. })
  900. }
  901. weight = Number(weight).toFixed(2)
  902. let params = {
  903. ghsId: this.options.id,
  904. weight:weight
  905. };
  906. freight(params).then(res => {
  907. if(res.code == 1){
  908. this.form.sendCost = res.data.fee?parseFloat(res.data.fee):0
  909. this.showDistance = res.data.showDistance?parseFloat(res.data.showDistance):0
  910. }
  911. });
  912. },
  913. addEvents(item) {
  914. if(item.variety == 0){
  915. const ratio = Number(item.ratio);
  916. if(this.offVerifyRepertory){
  917. if(item.stock<=0){
  918. uni.showToast({title:'没有货了',icon:'none'})
  919. return
  920. }
  921. if (Number(this.bigCount) * ratio + Number(this.smallCount) >Number(item.bigNum) * ratio + Number(item.smallNum)) {
  922. this.$msg("库存只剩"+item.bigNum);
  923. return
  924. }
  925. }
  926. this.addEvent(item)
  927. }else{
  928. this.$msg('多颜色请返回列表修改')
  929. }
  930. },
  931. delItem(item) {
  932. if(item.variety == 0){
  933. this.delEvent(item)
  934. }else{
  935. this.$msg('多颜色请返回列表修改')
  936. }
  937. },
  938. bindDateChange(e){
  939. let date = e.detail.value
  940. this.sendTimeWant = date
  941. },
  942. toPhone(phone){
  943. uni.makePhoneCall({
  944. phoneNumber: phone
  945. });
  946. },
  947. hasCoupon() {
  948. let amount = this.allPrice
  949. shopHouponHas({amount:amount,ghsId:this.option.id}).then(res => {
  950. this.hasHb = res.data.has
  951. }).catch(err => {})
  952. },
  953. getGhsData(id) {
  954. let that = this
  955. getGhsDataApi({id:id}).then(res => {
  956. that.ghsInfo = res.data
  957. that.transCost = that.ghsInfo.transCost ? that.ghsInfo.transCost : []
  958. if(that.ghsInfo.pfLevel && that.ghsInfo.pfLevel == 1){
  959. //昆明发货到全国
  960. let packCost = 0
  961. let weight = this.allCountFun.weight ? this.allCountFun.weight : 0
  962. if (that.ghsInfo.kmPackCost && !this.$util.isEmpty(that.ghsInfo.kmPackCost)){
  963. for (const ele of that.ghsInfo.kmPackCost) {
  964. let flagWeight = ele.num?ele.num:0
  965. if(Number(flagWeight)>=Number(weight)){
  966. that.form.packCost = ele.amount?parseFloat(Number(ele.amount)):0
  967. break
  968. }
  969. }
  970. }
  971. }else{
  972. //同城配送
  973. that.form.packCost = res.data.packCost?parseFloat(res.data.packCost):0
  974. }
  975. that.lackExpend = res.data.lackExpend?parseFloat(res.data.lackExpend):0
  976. that.form.wlName = res.data.customWlName ? res.data.customWlName : ''
  977. //杭州斗南鲜花批发部不需要显示免费配送
  978. if(that.ghsInfo.shopId && Number(that.ghsInfo.shopId) == 4608){
  979. that.form.sendType = 1
  980. }
  981. //万花田济南仓默认自取
  982. if(that.ghsInfo.shopId && Number(that.ghsInfo.shopId) == 90985){
  983. that.form.sendType = 1
  984. }
  985. if(that.ghsInfo.shopId && Number(that.ghsInfo.shopId) == 36919){
  986. that.form.sendType = 1
  987. }
  988. if(res.data && res.data.shopId == 14636){
  989. //花瀚鲜花供应链默认冷链
  990. this.changeTransType(2)
  991. }else if(res.data && res.data.shopId == 3){
  992. //石头花艺
  993. this.changeTransType(2)
  994. }else if(res.data && res.data.shopId == 29136){
  995. this.changeTransType(0)
  996. }else{
  997. this.changeTransType(4)
  998. }
  999. });
  1000. },
  1001. countAllPrices(e){
  1002. this.allPrices = this.allPrices+Number(this.form.sendCost)
  1003. },
  1004. getDetailData() {
  1005. let data = uni.getStorageSync("modifyShopB")
  1006. if (this.$util.isEmpty(data)){
  1007. return
  1008. }
  1009. Object.keys(this.form).forEach((i, index) => {
  1010. this.form[i] = data[i];
  1011. });
  1012. },
  1013. confirmFn(options) {
  1014. createOrder(options).then(res => {
  1015. this.resetSelectInfoByType(this.pageType);
  1016. const { data: { id, orderSn } } = res;
  1017. let url = `/admin/billing/result?orderId=${id}&orderSn=${orderSn}`;
  1018. uni.redirectTo({ url: url })
  1019. });
  1020. },
  1021. affirmFormSubmit(direct){
  1022. const product = this.selectList.map(ele => {
  1023. return { productId: ele.id, bigNum: ele.bigCount, smallNum: ele.smallCount,classId:ele.classId,itemId:ele.itemId,weight:ele.weight,name:ele.name };
  1024. })
  1025. if(this.ghsInfo.pfLevel == 0){
  1026. if(this.form.sendType == 3){
  1027. if (this.$util.isEmpty(this.form.wlName)){
  1028. this.$msg('请填选物流')
  1029. return false
  1030. }
  1031. }
  1032. }
  1033. //多颜色
  1034. let xj = uni.getStorageSync("ghsColorItem"+this.ghsInfo.id)
  1035. let getType = this.form.sendType == 2 ? 1 : 2
  1036. //用于计划是否要包装费
  1037. let itemTotalAmount = this.allPriceFun
  1038. let params = {
  1039. getType:getType,
  1040. sendTimeWant:this.sendTimeWant,
  1041. sendType:this.form.sendType,
  1042. transType:this.form.transType,
  1043. remark:this.remark,
  1044. product:JSON.stringify(product),
  1045. ghsId:this.ghsInfo.id,
  1046. hbId: this.form.hbId,
  1047. wlName:this.form.wlName,
  1048. xj:JSON.stringify(xj),
  1049. itemTotalAmount:itemTotalAmount,
  1050. version:10,
  1051. direct:direct
  1052. }
  1053. // 如果选择了跑腿配送并且有选中的平台数据,则添加配送平台信息
  1054. if (this.form.sendType == 2 && this.selectedDeliveryData) {
  1055. params.deliveryPlatform = this.selectedDeliveryData.en_name // 平台名称
  1056. params.deliveryPrice = this.selectedDeliveryData.priceNumber // 报价金额
  1057. params.deliveryDistance = this.showDistance // 配送距离
  1058. params.deliveryBracketContent = this.selectedDeliveryData.bracketContent // 配送平台括号里的内容
  1059. }
  1060. let self = this;
  1061. self.$util.confirmModal({content:'确认提交?'},() => {
  1062. uni.showLoading({title: '加载中',mask:true})
  1063. createOrder(params).then(res => {
  1064. if(res.code == 1){
  1065. uni.hideLoading()
  1066. if(res.data.hasLackError && res.data.hasLackError == 1){
  1067. this.lackList = res.data.lackList ? res.data.lackList : []
  1068. this.$refs.selectFlowerNumRef.open('center')
  1069. return true
  1070. }
  1071. const {orderSn,realPrice,id} = res.data
  1072. self.pageTo({url: '/pagesPurchase/wechatPay',query:{orderSn,realPrice,id}, type: 2})
  1073. setTimeout(() => {
  1074. self.removeMemory(self.ghsInfo.id)
  1075. }, 600)
  1076. }
  1077. })
  1078. })
  1079. },
  1080. numberAdd(arg1, arg2) {
  1081. var r1, r2, m, n;
  1082. try {
  1083. r1 = arg1.toString().split(".")[1].length
  1084. } catch (e) {
  1085. r1 = 0
  1086. }
  1087. try {
  1088. r2 = arg2.toString().split(".")[1].length
  1089. } catch (e) {
  1090. r2 = 0
  1091. }
  1092. m = Math.pow(10, Math.max(r1, r2))
  1093. n = (r1 >= r2) ? r1 : r2;
  1094. return ((arg1 * m + arg2 * m) / m).toFixed(n);
  1095. },
  1096. NumberSub(arg1, arg2) {
  1097. var re1, re2, m, n;
  1098. try {
  1099. re1 = arg1.toString().split(".")[1].length;
  1100. } catch (e) {
  1101. re1 = 0;
  1102. }
  1103. try {
  1104. re2 = arg2.toString().split(".")[1].length;
  1105. } catch (e) {
  1106. re2 = 0;
  1107. }
  1108. m = Math.pow(10, Math.max(re1, re2));
  1109. n = (re1 >= re2) ? re1 : re2;
  1110. return ((arg1 * m - arg2 * m) / m).toFixed(n);
  1111. },
  1112. // 表单验证
  1113. async formSubmit(e) {
  1114. try {
  1115. // 进行表单检查
  1116. let formData = this.form;
  1117. const product = this.selectList.map(ele => {
  1118. return { productId: ele.id, bigNum: ele.bigCount, smallNum: ele.smallCount };
  1119. });
  1120. formData.product = JSON.stringify(product);
  1121. if (!this.getMerchantInfo) {
  1122. await this.initMerchantInfo();
  1123. }
  1124. formData.shopId = this.getMerchantInfo.id;
  1125. let checkRes = formUtil.validation(formData, []);
  1126. // 验证通过!
  1127. if (!checkRes) {
  1128. this.confirmFn(formData);
  1129. } else {
  1130. this.$msg(checkRes);
  1131. }
  1132. } catch (error) {
  1133. console.log(999999, error);
  1134. }
  1135. },
  1136. gobackEvent() {
  1137. this.$util.pageTo({url: "/pagesPurchase/ghsProduct?id="+this.options.id,type: 2})
  1138. }
  1139. }
  1140. };
  1141. </script>
  1142. <style lang="scss" scoped>
  1143. .admin-button-com {
  1144. margin-right: 15upx;
  1145. }
  1146. .affirm-page {
  1147. position: relative;
  1148. height: 100%;
  1149. display: flex;
  1150. flex-direction: column;
  1151. /* #ifdef APP-PLUS */
  1152. padding-bottom: 100upx;
  1153. /* #endif */
  1154. .affirm-view {
  1155. flex: 1;
  1156. padding: 20upx;
  1157. background-color: #f0f2f6;
  1158. .commodity-view {
  1159. display: flex;
  1160. flex-direction: column;
  1161. .commodity-list {
  1162. padding: 20upx;
  1163. .commodity-item {
  1164. display: flex;
  1165. margin-bottom: 20upx;
  1166. .item-icon {
  1167. flex-shrink: 0;
  1168. width: 140upx;
  1169. height: 140upx;
  1170. }
  1171. .item-info {
  1172. position: relative;
  1173. display: flex;
  1174. flex-direction: column;
  1175. justify-content: center;
  1176. flex: 1;
  1177. margin-left: 20upx;
  1178. .info-line {
  1179. margin-bottom: 20upx;
  1180. display: flex;
  1181. justify-content: space-between;
  1182. align-items: flex-end;
  1183. .item-name {
  1184. color: #333333;
  1185. font-size: 32upx;
  1186. font-weight:bold;
  1187. overflow: hidden;
  1188. white-space: nowrap;
  1189. text-overflow: ellipsis;
  1190. width:400upx;
  1191. }
  1192. .item-price {
  1193. color: #333;
  1194. font-size: 22upx;
  1195. .price {
  1196. font-size: 32upx;
  1197. font-weight: bold;
  1198. }
  1199. }
  1200. .item-type {
  1201. color: #999;
  1202. font-size: 24upx;
  1203. }
  1204. .item-count {
  1205. color: #666;
  1206. font-size: 24upx;
  1207. }
  1208. }
  1209. .open-bx {
  1210. align-items: center;
  1211. & .iconfont {
  1212. color: #3385ff;
  1213. font-size: 42upx;
  1214. }
  1215. .position{
  1216. display: block;
  1217. width: 70upx;
  1218. text-align: center;
  1219. }
  1220. .iconcachu {
  1221. margin: 0 6upx 0 20upx;
  1222. color: #ccc;
  1223. &.edit {
  1224. color: #3385ff;
  1225. }
  1226. }
  1227. & > .num {
  1228. display: inline-block;
  1229. width: 120upx;
  1230. height:45upx;
  1231. text-align:right;
  1232. margin: 0 8upx;
  1233. color: #868686;
  1234. padding: 3upx 0;
  1235. font-size: 25upx;
  1236. }
  1237. .change-input {
  1238. width: 164upx;
  1239. height: 60upx;
  1240. line-height: 60upx;
  1241. text-align: center;
  1242. background: #ffffff;
  1243. border: 1upx solid #dddddd;
  1244. border-radius: 4upx;
  1245. font-size: 25upx;
  1246. }
  1247. .btn-box{
  1248. width: 100upx;
  1249. height: 60upx;
  1250. line-height: 60upx;
  1251. color: #ffffff;
  1252. background: #3385ff;
  1253. text-align: center;
  1254. border-radius: 10upx;
  1255. }
  1256. }
  1257. }
  1258. }
  1259. }
  1260. .summary-bar {
  1261. padding: 0 20upx;
  1262. height: 90upx;
  1263. display: flex;
  1264. align-items: center;
  1265. justify-content: space-between;
  1266. border-top: 1px solid #eeeeee;
  1267. .operate-view {
  1268. display: flex;
  1269. align-items: center;
  1270. color: #3385ff;
  1271. font-size: 30upx;
  1272. font-weight:bold;
  1273. .iconfont {
  1274. margin-right: 20upx;
  1275. font-size: 40upx;
  1276. }
  1277. }
  1278. .describe-view {
  1279. display: flex;
  1280. align-items: center;
  1281. color: #333;
  1282. font-size: 24upx;
  1283. .price {
  1284. font-weight: bold;
  1285. font-size: 30upx;
  1286. }
  1287. }
  1288. }
  1289. }
  1290. .module-com {
  1291. background-color: #fff;
  1292. margin-bottom: 20upx;
  1293. border-radius: 10upx;
  1294. overflow: hidden;
  1295. padding-top: 20upx;
  1296. .ghs-msg{
  1297. padding: 0 20upx 20upx;
  1298. font-size: 32upx;
  1299. &.active{
  1300. color: #868686;
  1301. font-size: 24upx;
  1302. }
  1303. i{color: #62ed73;font-size: 48upx}
  1304. }
  1305. .member-wrap {
  1306. .member-det {
  1307. font-size: 24upx;
  1308. margin-left: 20upx;
  1309. }
  1310. }
  1311. .remark-wrap {
  1312. align-items: flex-start;
  1313. .remark {
  1314. height: 240upx;
  1315. }
  1316. }
  1317. }
  1318. }
  1319. .under-bar {
  1320. display: flex;
  1321. justify-content: space-between;
  1322. align-items: center;
  1323. padding: 0 20upx;
  1324. width: 100%;
  1325. height: 100upx;
  1326. background-color: #fff;
  1327. box-shadow: 0upx -1px 6upx 0upx rgba(4, 0, 0, 0.06);
  1328. /* #ifdef APP-PLUS */
  1329. position: fixed;
  1330. bottom: 0;
  1331. left: 0;
  1332. right: 0;
  1333. z-index: 999;
  1334. /* #endif */
  1335. /* #ifdef MP-WEIXIN */
  1336. position: fixed;
  1337. bottom: 0;
  1338. left: 0;
  1339. right: 0;
  1340. z-index: 999;
  1341. /* #endif */
  1342. .price-view {
  1343. display: flex;
  1344. align-items: center;
  1345. font-size: 24upx;
  1346. .price-title {
  1347. color: #333;
  1348. }
  1349. .price-number {
  1350. margin: 0 20upx;
  1351. color: #ff2842;
  1352. .large {
  1353. font-size: 40upx;
  1354. }
  1355. }
  1356. }
  1357. .admin-button-com {
  1358. width: 200upx;
  1359. }
  1360. }
  1361. .coupon_box{
  1362. flex: 1;
  1363. text-align: right;
  1364. padding-right: 45upx;
  1365. .has-hb{
  1366. background:red;
  1367. color:white;
  1368. border:1upx solid red;
  1369. border-radius: 30upx;
  1370. font-size:20upx;
  1371. padding:5upx 15upx 5upx 15upx;
  1372. }
  1373. .selected{
  1374. color:red;
  1375. float:left;
  1376. }
  1377. }
  1378. .select-cmd_bx {
  1379. & .kc {
  1380. color: #999999;
  1381. font-size: 28upx;
  1382. font-weight: 400;
  1383. margin-bottom: 60upx;
  1384. text-align: center;
  1385. margin-top: 10upx;
  1386. }
  1387. & .num_bx {
  1388. display: flex;
  1389. align-items: center;
  1390. justify-content:center;
  1391. margin-bottom: 80upx;
  1392. & > input {
  1393. width: 280upx;
  1394. height: 80upx;
  1395. border: 1px solid #dddddd;
  1396. border-radius: 4upx;
  1397. text-align: center;
  1398. font-size: 40upx;
  1399. }
  1400. }
  1401. }
  1402. }
  1403. /* 跑腿平台报价样式 */
  1404. .delivery-quotes-container {
  1405. width: 100%;
  1406. margin-top: 20upx;
  1407. }
  1408. .delivery-quotes-grid {
  1409. display: flex;
  1410. flex-wrap: wrap;
  1411. gap: 10upx;
  1412. padding: 0;
  1413. width: 100%;
  1414. }
  1415. .delivery-quote-item {
  1416. display: flex;
  1417. flex-direction: column;
  1418. align-items: center;
  1419. justify-content: center;
  1420. flex: 0 0 calc(33% - 7upx);
  1421. width: calc(33% - 7upx);
  1422. min-height: 140upx;
  1423. padding: 16upx 10upx;
  1424. margin-bottom: 5upx;
  1425. background: #FFFFFF;
  1426. border: 2upx solid #DDDDDD;
  1427. border-radius: 8upx;
  1428. box-sizing: border-box;
  1429. transition: all 0.3s;
  1430. // 当只有1-2项时使用固定宽度
  1431. &.fixed-width {
  1432. flex: 0 0 220rpx;
  1433. width: 220rpx;
  1434. }
  1435. .platform-name {
  1436. font-size: 26upx;
  1437. color: #333;
  1438. font-weight: bold;
  1439. margin-bottom: 8upx;
  1440. text-align: center;
  1441. line-height: 1.3;
  1442. max-width: 100%;
  1443. overflow: hidden;
  1444. text-overflow: ellipsis;
  1445. display: -webkit-box;
  1446. -webkit-line-clamp: 2;
  1447. line-clamp: 2;
  1448. -webkit-box-orient: vertical;
  1449. word-break: break-all;
  1450. }
  1451. .platform-price {
  1452. font-size: 30upx;
  1453. color: #333;
  1454. font-weight: bold;
  1455. margin-bottom: 4upx;
  1456. }
  1457. .platform-type {
  1458. font-size: 20upx;
  1459. color: #868686;
  1460. margin-top: 4upx;
  1461. text-align: center;
  1462. line-height: 1.3;
  1463. max-width: 100%;
  1464. overflow: hidden;
  1465. text-overflow: ellipsis;
  1466. display: -webkit-box;
  1467. -webkit-line-clamp: 2;
  1468. line-clamp: 2;
  1469. -webkit-box-orient: vertical;
  1470. word-break: break-all;
  1471. }
  1472. // 选中状态
  1473. &.active {
  1474. background: #09C567;
  1475. border-color: #09C567;
  1476. .platform-name,
  1477. .platform-price {
  1478. color: #FFFFFF;
  1479. }
  1480. .platform-type {
  1481. color: rgba(255, 255, 255, 0.85);
  1482. }
  1483. }
  1484. // 不可用状态
  1485. &.disabled {
  1486. opacity: 0.5;
  1487. background: #F5F5F5;
  1488. .platform-name,
  1489. .platform-price,
  1490. .platform-type {
  1491. color: #CCCCCC;
  1492. }
  1493. }
  1494. }
  1495. /* 跑腿费价格样式 */
  1496. .delivery-price-normal {
  1497. color: #3385FF;
  1498. }
  1499. .delivery-price-free {
  1500. color: #999;
  1501. text-decoration: line-through;
  1502. }
  1503. .free-delivery-tag {
  1504. color: #3385FF;
  1505. margin-left: 5upx;
  1506. }
  1507. .delivery-policy-link {
  1508. color: rgb(201, 52, 52);
  1509. font-size: 30upx;
  1510. margin-left: 30upx;
  1511. font-weight:bold;
  1512. text-decoration: underline;
  1513. }
  1514. .policy-icon {
  1515. font-size: 28upx;
  1516. margin-left: 4upx;
  1517. }
  1518. .policy-popup-content {
  1519. width: 600upx;
  1520. background-color: #fff;
  1521. border-radius: 20upx;
  1522. padding: 30upx;
  1523. display: flex;
  1524. flex-direction: column;
  1525. align-items: center;
  1526. }
  1527. .policy-title {
  1528. font-size: 34upx;
  1529. font-weight: bold;
  1530. color: #333;
  1531. margin-bottom: 30upx;
  1532. }
  1533. .policy-scroll {
  1534. width: 100%;
  1535. max-height: 50vh;
  1536. margin-bottom: 30upx;
  1537. }
  1538. .policy-list {
  1539. width: 100%;
  1540. }
  1541. .policy-item {
  1542. font-size: 30upx;
  1543. color: #666;
  1544. margin-bottom: 20upx;
  1545. text-align: left;
  1546. line-height: 1.5;
  1547. display: list-item;
  1548. list-style-type: disc;
  1549. margin-left: 40upx;
  1550. }
  1551. .policy-btn {
  1552. width: 50%;
  1553. height: 80upx;
  1554. line-height: 80upx;
  1555. text-align: center;
  1556. background-color: #3385ff;
  1557. color: #fff;
  1558. font-size: 32upx;
  1559. border-radius: 40upx;
  1560. }
  1561. </style>