index.vue 73 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489
  1. <template>
  2. <view :style="viewColor">
  3. <view class='order-submission'>
  4. <view v-if="allow_address && order_model == 0" class="allAddress" @click="onAddress">
  5. <view class='address acea-row row-between-wrapper' v-if='shippingType == 0 '>
  6. <view class='addressCon' v-if="addressInfo.real_name">
  7. <view class='name'>{{addressInfo.real_name}}
  8. <text class='phone'>{{addressInfo.phone}}</text>
  9. </view>
  10. <view>
  11. <text class='default t-color'
  12. v-if="addressInfo.is_default">[默认]</text>{{addressInfo.province}}{{addressInfo.city}}{{addressInfo.district}}{{addressInfo.street || ''}}{{addressInfo.detail}}
  13. </view>
  14. </view>
  15. <navigator v-else :url="'/pages/users/user_address/index?cartId='+cartId" hover-class="none" class='addressCon'>
  16. <view class='setaddress'>设置收货地址</view>
  17. </navigator>
  18. <view class='iconfont icon-jiantou'></view>
  19. </view>
  20. <view class='line'>
  21. <image :src="`${domain}/static/images/line.jpg`"></image>
  22. </view>
  23. </view>
  24. <!-- 商品信息 -->
  25. <view class="storeinfo-wrapper">
  26. <view class="store-item" v-for="(item,index) in cartInfo" :key="index">
  27. <view class="store-title">
  28. <text class="iconfont icon-shangjiadingdan"></text>
  29. <view class="txt" @click="goStore(item.mer_id)">{{item.mer_name}}</view>
  30. <text class="iconfont icon-xiangyou"></text>
  31. </view>
  32. <view v-for="(goods,j) in item.list" :key="j">
  33. <view v-if="goods.product_type == 2">
  34. <view class="product-item">
  35. <view class="img-box">
  36. <image :src="goods.productPresellAttr.image || goods.product.image"></image>
  37. </view>
  38. <view class="content event_content">
  39. <view class="name line1"><text
  40. class="event_name event_bg">预售</text>{{goods.productPresell.store_name}}
  41. </view>
  42. <view class="label" style="width: 70%;">{{goods.productAttr.sku}}</view>
  43. <view class="price">
  44. ¥{{goods.productPresellAttr.presell_price}}
  45. <text>X{{goods.cart_num}}</text>
  46. </view>
  47. <view class="event_ship event_color">发货时间:
  48. <!--全款预售-->
  49. <text
  50. v-if="goods.productPresell.presell_type === 1">{{goods.productPresell.delivery_type === 1 ? '支付后' : '预售结束后'}}{{ goods.productPresell.delivery_day }}天内</text>
  51. <!--定金预售-->
  52. <text
  53. v-if="goods.productPresell.presell_type === 2">{{ goods.productPresell.delivery_type === 1 ? '付尾款后' : '预售结束后' }}{{ goods.productPresell.delivery_day }}天内</text>
  54. </view>
  55. <view class="err-txt" v-if="goods.undelivered && addressInfo.real_name">
  56. <text class="iconfont icon-zhuyi-copy"></text>
  57. <view class="txt">此商品不支持该区域配送</view>
  58. </view>
  59. </view>
  60. </view>
  61. <view v-if="goods.productPresell.presell_type === 2" class="event_payTime">
  62. <view class="event_progress">
  63. <view class="progress_step">
  64. <text class="name color_red">定金</text>
  65. <text
  66. class="price color_red">¥{{ (goods.productPresellAttr.down_price * goods.cart_num).toFixed(2) }}</text>
  67. </view>
  68. <view class="progress_step">
  69. <text class="name">尾款</text>
  70. <text
  71. class="price">¥{{ (goods.productPresellAttr.final_price * goods.cart_num).toFixed(2) }}</text>
  72. </view>
  73. <view class="progress_pay">
  74. {{ goods.productPresell.final_start_time | filterDay}}开始支付尾款</view>
  75. </view>
  76. </view>
  77. </view>
  78. <view v-else>
  79. <view class="product-item">
  80. <view class="img-box">
  81. <image :src="goods.productAttr.image || goods.product.image"></image>
  82. </view>
  83. <view class="content">
  84. <view class="name line1">{{goods.product.store_name}}</view>
  85. <view class="label">{{goods.productAttr.sku}}</view>
  86. <view class="price acea-row row-between">
  87. <view class="acea-row row-middle">
  88. <block v-if="order_type == 3">
  89. ¥{{goods.productAssistAttr.assist_price}}
  90. </block>
  91. <block v-else-if="order_type == 4">
  92. ¥{{goods.activeSku&&goods.activeSku.active_price}}
  93. </block>
  94. <block v-else>
  95. ¥{{goods.productAttr.price}}
  96. </block>
  97. <text>X{{goods.cart_num}}</text>
  98. <view v-if="goods.productAttr.show_svip_price" class="vipImg">
  99. <image :src="`${domain}/static/images/svip.png`"></image>
  100. </view>
  101. </view>
  102. <view class="delivery_type">
  103. <text v-if="!goods.allow_delivery">不支持快递</text>
  104. <text v-if="!goods.allow_take">不支持到店核销</text>
  105. </view>
  106. </view>
  107. <view class="err-txt" v-if="goods.undelivered && addressInfo.real_name">
  108. <text class="iconfont icon-zhuyi-copy"></text>
  109. <view class="txt">此商品不支持该区域配送</view>
  110. </view>
  111. </view>
  112. </view>
  113. </view>
  114. </view>
  115. <view class="wrapper">
  116. <view class="boxs">
  117. <view class='item acea-row row-between-wrapper'>
  118. <view>配送方式</view>
  119. <view v-if="item.delivery_way.length == 2 && (item.order.allow_delivery && item.order.allow_take)" class='discount' @tap="openShowBox(item,index)">
  120. {{item.order.isTake==0 ? deliveryName :'到店核销'}}
  121. <text v-if="order_model != 2" class='iconfont icon-jiantou'></text>
  122. </view>
  123. <view v-else class='discount'>
  124. {{item.order.isTake==0 ? deliveryName :'到店核销'}}
  125. </view>
  126. </view>
  127. <view class="store-address" v-if="item.order.isTake">
  128. <view class="name line2">{{item.take.mer_take_name}}</view>
  129. <view class="info line2">{{item.take.mer_take_address}}</view>
  130. <view class="map" @click="goMap(item)">
  131. <text class="iconfont icon-chakanditu"></text>
  132. <view class="map_text">查看地图</view>
  133. </view>
  134. </view>
  135. </view>
  136. <view class='item acea-row row-between-wrapper' v-if='shippingType==0 && item.isTake == 0 && order_model == 0'>
  137. <view>快递费用 <text
  138. v-if="item.list[0].productPresell && item.list[0].productPresell.presell_type == 2">(尾款阶段)</text>
  139. </view>
  140. <view class='discount' v-if='item.order.postage_price > 0'>+¥{{item.order.postage_price}}
  141. </view>
  142. <view class='discount' v-else>免运费</view>
  143. </view>
  144. <view class='item acea-row row-between-wrapper'
  145. v-if="order_type != 3 && order_type != 4 && item.order.enabledCoupon">
  146. <view>店铺优惠券</view>
  147. <block v-if="item.coupon.length>0">
  148. <view class='discount' @tap='couponTap(item,index)'>
  149. <text v-if="item.order.coupon_price>0">优惠¥{{item.order.coupon_price}}</text>
  150. <text v-else>暂未选择优惠券</text>
  151. <text class='iconfont icon-jiantou'></text>
  152. </view>
  153. </block>
  154. <block v-else>
  155. <view class='discount'>暂无优惠券</view>
  156. </block>
  157. </view>
  158. <view v-if="item.openReceipt == 1" class='item acea-row row-between-wrapper'>
  159. <view>开具发票 <text @tap="showInvoice" class="iconfont icon-wenhao1"></text></view>
  160. <view class='discount discount_voice' @tap="goInvoice(item.mer_id)">
  161. {{(item.invoiceData && item.invoiceData.receipt_title) ? item.invoiceData.receipt_title : '不开发票'}}
  162. <text class='iconfont icon-jiantou'></text>
  163. </view>
  164. </view>
  165. <view v-if="order_type === 2 && item.list[0].productPresell.presell_type ==2"
  166. class="item acea-row row-between-wrapper"
  167. style="border-top: 1px solid #f5f5f5; border-bottom: 1px solid #f5f5f5;">
  168. <checkbox-group class="checkgroup" @change='changeIsAgree'>
  169. <text class="iconfont icon-wenhao1"></text>
  170. <text @click="getPresellAgree">我已同意定金不退等预售协议</text>
  171. <checkbox class="checkbox" :checked="isAgree ? true : false" />
  172. </checkbox-group>
  173. </view>
  174. <!-- <view
  175. class='item acea-row row-between-wrapper'>
  176. <checkbox-group class="checkgroup" @change='changeIsCash'>
  177. <text>使用消费券</text>
  178. <checkbox class="checkbox" :checked="isAgree ? true : false" />
  179. </checkbox-group>
  180. </view> -->
  181. <view class='item acea-row row-between-wrapper' v-if="textareaStatus">
  182. <view style="width: 100px;">备注信息</view>
  183. <input v-if="coupon.status===false" placeholder-class='placeholder'
  184. @input='bindHideKeyboard' value="" name="mark" placeholder='选填备注信息'
  185. v-model="msgObj[item.mer_id]"></input>
  186. </view>
  187. <view class="total">
  188. 共{{item.order.total_num}}件 小计
  189. <view class="price" v-if="item.isTake == 0"><text>¥</text>{{ item.order.pay_price }}</view>
  190. <view class="price" v-if="item.isTake == 1"><text>¥</text>{{ item.order.org_price}}</view>
  191. </view>
  192. </view>
  193. </view>
  194. </view>
  195. <!--商品关联系统表单-->
  196. <view v-if="order_form.length>0" class="wrapper virtual_form">
  197. <view class='item acea-row row-between-wrapper' :class="{on:(item.name=='radios' || item.name=='checkboxs'),on2:item.name == 'dateranges',on3:item.name == 'citys',pd0:item.name == 'uploadPicture'}" v-for="(item,index) in order_form" :key="index">
  198. <view class="name">
  199. <text class="item-require" v-if="item.titleShow.val">*</text>
  200. {{ item.titleConfig.value }}
  201. </view>
  202. <!-- radio -->
  203. <view v-if="item.name=='radios'" class="discount">
  204. <radio-group @change="radioChange($event, index, item)" class="acea-row row-middle row-right">
  205. <label class="radio" v-for="(j,jindex) in item.wordsConfig.list" :key="jindex">
  206. <view class="acea-row row-middle">
  207. <!-- #ifndef MP -->
  208. <radio :value="jindex.toString()" :checked='j.show'/>
  209. <!-- #endif -->
  210. <!-- #ifdef MP -->
  211. <radio :value="jindex" :checked='j.show'/>
  212. <!-- #endif -->
  213. <view>{{j.val}}</view>
  214. </view>
  215. </label>
  216. </radio-group>
  217. </view>
  218. <!-- checkbox -->
  219. <view v-if="item.name=='checkboxs'" class="discount acea-row">
  220. <checkbox-group @change="checkboxChange($event, index, item)" class="acea-row row-middle row-right">
  221. <label class="radio" v-for="(j,jindex) in item.wordsConfig.list" :key="jindex">
  222. <view class="acea-row row-middle">
  223. <!-- #ifndef MP -->
  224. <checkbox :value="jindex.toString()" :checked="j.show" style="transform:scale(0.9)" />
  225. <!-- #endif -->
  226. <!-- #ifdef MP -->
  227. <checkbox :value="jindex" :checked="j.show" style="transform:scale(0.9)" />
  228. <!-- #endif -->
  229. <view>{{j.val}}</view>
  230. </view>
  231. </label>
  232. </checkbox-group>
  233. </view>
  234. <!-- text -->
  235. <view v-if="item.name=='texts' && item.valConfig.tabVal == 0" class="discount">
  236. <input type="text" :placeholder="item.tipConfig.value" placeholder-class="placeholder" v-model="item.value" />
  237. </view>
  238. <!-- number -->
  239. <view v-if="item.name=='texts' && item.valConfig.tabVal == 4" class="discount">
  240. <input type="number" :placeholder="item.tipConfig.value" placeholder-class="placeholder" v-model="item.value" />
  241. </view>
  242. <!-- email -->
  243. <view v-if="item.name=='texts' && item.valConfig.tabVal == 3" class="discount">
  244. <input type="text" :placeholder="item.tipConfig.value" placeholder-class="placeholder" v-model="item.value" />
  245. </view>
  246. <!-- data -->
  247. <view v-if="item.name=='dates'" class="discount">
  248. <picker mode="date" :value="item.value" @change="bindDateChange($event,index)">
  249. <view class="acea-row row-between-wrapper">
  250. <view v-if="item.value == ''">{{item.tipConfig.value}}</view>
  251. <view v-else>{{item.value}}</view>
  252. <text class='iconfont icon-jiantou'></text>
  253. </view>
  254. </picker>
  255. </view>
  256. <!-- dateranges -->
  257. <view v-if="item.name=='dateranges'" class="discount">
  258. <uni-datetime-picker v-model="item.value" type="daterange" @maskClick="maskClick">
  259. {{item.value.length?item.value[0]+' - '+item.value[1]:item.tipConfig.value}}
  260. <text class='iconfont icon-jiantou'></text>
  261. </uni-datetime-picker>
  262. </view>
  263. <!-- time -->
  264. <view v-if="item.name=='times'" class="discount">
  265. <picker mode="time" :value="item.value" @change="bindTimeChange($event,index)"
  266. :placeholder="item.tipConfig.value">
  267. <view class="acea-row row-between-wrapper">
  268. <view v-if="item.value == ''">{{item.tipConfig.value}}</view>
  269. <view v-else>{{item.value}}</view>
  270. <text class='iconfont icon-jiantou'></text>
  271. </view>
  272. </picker>
  273. </view>
  274. <!-- timeranges -->
  275. <view v-if="item.name=='timeranges'" class="discount acea-row row-between-wrapper" @click="getTimeranges(index)">
  276. <view v-if="item.value">{{item.value}}</view>
  277. <view v-else>{{item.tipConfig.value}}</view>
  278. <text class='iconfont icon-jiantou'></text>
  279. </view>
  280. <!-- select -->
  281. <view v-if="item.name=='selects'" class="discount">
  282. <picker :value="item.value" :range="item.wordsConfig.list" @change="bindSelectChange($event,index,item)" range-key="val">
  283. <view class="acea-row row-between-wrapper">
  284. <view v-if="item.value">{{item.value}}</view>
  285. <view v-else>请选择</view>
  286. <text class='iconfont icon-jiantou'></text>
  287. </view>
  288. </picker>
  289. </view>
  290. <!-- city -->
  291. <view v-if="item.name=='citys'" class="discount" @click="changeRegion(index)">
  292. <view class="acea-row row-middle row-right">
  293. <view class="city" v-if="item.value == ''">{{item.tipConfig.value}}</view>
  294. <view class="city" v-else>{{item.value}}</view>
  295. <text class='iconfont icon-jiantou'></text>
  296. </view>
  297. </view>
  298. <!-- id -->
  299. <view v-if="item.name=='texts' && item.valConfig.tabVal == 2" class="discount">
  300. <input type="idcard" :placeholder="item.tipConfig.value" placeholder-class="placeholder" v-model="item.value" />
  301. </view>
  302. <!-- phone -->
  303. <view v-if="item.name=='texts' && item.valConfig.tabVal == 1" class="discount">
  304. <input type="number" :placeholder="item.tipConfig.value" placeholder-class="placeholder" v-model="item.value" />
  305. </view>
  306. <!-- img -->
  307. <view v-if="item.name=='uploadPicture'" class="confirmImg" style="padding-bottom: 0;">
  308. <view class='upload'>
  309. <view class='pictrue' v-for="(items,indexs) in item.value" :key="indexs">
  310. <image :src='items' mode="aspectFill"></image>
  311. <view class="close acea-row row-center-wrapper" @tap='DelPic(index,indexs)'>
  312. <view class="iconfont icon-guanbi5"></view>
  313. </view>
  314. </view>
  315. <view class='pictrue acea-row row-center-wrapper row-column' @tap='uploadpic(index)'
  316. v-if="item.value.length < item.numConfig.val">
  317. <view>上传图片</view>
  318. </view>
  319. </view>
  320. </view>
  321. </view>
  322. </view>
  323. <view class="settlementAgreement" v-if="showProtocol">
  324. <view class="setAgCount">
  325. <i class="icon iconfont icon-cha" @click="showProtocol = false"></i>
  326. <div class="title">{{agrementTtile}}</div>
  327. <view class="content">
  328. <jyf-parser :html="protocol" ref="article" :tag-style="tagStyle"></jyf-parser>
  329. </view>
  330. </view>
  331. </view>
  332. <!--收货人信息-->
  333. <view v-if="is_take" class="wrapper virtual_form">
  334. <form report-submit='true'>
  335. <view class='item acea-row row-between-wrapper'>
  336. <view><text class="item-require">*</text>收货人姓名</view>
  337. <view class='discount'>
  338. <input type="text" v-model="post.real_name" placeholder="请填写收货人姓名" placeholder-class='placeholder' />
  339. </view>
  340. </view>
  341. <view class='item acea-row row-between-wrapper'>
  342. <view><text class="item-require">*</text>收货人电话</view>
  343. <view class='discount'>
  344. <input type="number" v-model="post.phone" placeholder="请填写收货人电话" placeholder-class='placeholder' />
  345. </view>
  346. </view>
  347. </form>
  348. </view>
  349. <view class='wrapper'>
  350. <view class='item'>
  351. <view>支付方式</view>
  352. <view class='list'>
  353. <!-- #ifdef H5 -->
  354. <view class='payItem acea-row row-middle' :class='active==index ?"on":""' @tap='payItem(index)'
  355. v-for="(item,index) in cartArr" :key='index' v-if="item.payStatus==1">
  356. <view class='name acea-row row-center-wrapper'>
  357. <view class='iconfont animated'
  358. :class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'></view>
  359. {{item.name}}
  360. </view>
  361. <view class='tip'>
  362. {{item.title}}
  363. <block v-if="item.value == 'balance'">
  364. {{userInfo.now_money}}
  365. </block>
  366. </view>
  367. </view>
  368. <!-- #endif -->
  369. <!-- #ifdef MP || APP-PLUS -->
  370. <view class='payItem acea-row row-middle' :class='active==index ?"on":""' @tap='payItem(index)'
  371. v-for="(item,index) in cartArr" :key='index' v-if="item.payStatus==1">
  372. <view class='name acea-row row-center-wrapper'>
  373. <view class='iconfont animated'
  374. :class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'></view>
  375. {{item.name}}
  376. </view>
  377. <view class='tip'>
  378. {{item.title}}
  379. <block v-if="item.value == 'balance'">
  380. {{userInfo.now_money}}
  381. </block>
  382. </view>
  383. </view>
  384. <!-- #endif -->
  385. </view>
  386. </view>
  387. </view>
  388. <view class='moneyList'>
  389. <view class='item acea-row row-between-wrapper'>
  390. <view>商品总价:</view>
  391. <view class='money'>¥{{proPrice}}</view>
  392. </view>
  393. <view class='item acea-row row-between-wrapper' v-if="couponData.order_total_postage > 0">
  394. <view>运费:</view>
  395. <view class='money'>¥{{couponData.order_total_postage}}</view>
  396. </view>
  397. <view class='item acea-row row-between-wrapper' v-if="coupon_price > 0">
  398. <view>店铺优惠金额:</view>
  399. <view class='money'>-¥{{coupon_price}}</view>
  400. </view>
  401. <view class='item acea-row row-between-wrapper' v-if="open_integral && userInfo.integral>0 && order_type == 0">
  402. <view>积分抵扣:</view>
  403. <view class='money'>
  404. <text v-if="!use_integral">当前积分<text class="pColor">{{userInfo.integral}}</text></text>
  405. <text v-else>使用了{{integral_count}}个积分,抵扣<text
  406. class="pColor">{{integral_price}}元</text></text>
  407. <view class="checkbox integral_checked" @click="changeIntegral">
  408. <view class="iconfont icon-weixuanzhong" v-if="!use_integral"></view>
  409. <view class='iconfont icon-xuanzhong1' v-else></view>
  410. </view>
  411. </view>
  412. </view>
  413. <view class='item acea-row row-between-wrapper' v-if="userInfo.cash_price > 0">
  414. <view>消费券抵扣:</view>
  415. <view class='money'>
  416. <text v-if="!use_cash">当前消费券<text class="pColor">{{userInfo.cash_price}}</text></text>
  417. <text v-else>使用了{{cash_count}}消费券,抵扣<text
  418. class="pColor">{{cash_price}}元</text></text>
  419. <view class="checkbox integral_checked" @click="changeCash">
  420. <view class="iconfont icon-weixuanzhong" v-if="!use_cash"></view>
  421. <view class='iconfont icon-xuanzhong1' v-else></view>
  422. </view>
  423. </view>
  424. </view>
  425. <view class='item acea-row row-between-wrapper'
  426. v-if="order_type != 3 && order_type != 4 && enabledPlatformCoupon">
  427. <view>平台优惠券<text @tap="showCoupon" class="iconfont icon-wenhao1"></text></view>
  428. <block v-if="platformCoupon.length > 0">
  429. <view class='discount money' @tap='couponTap2(platformCoupon,0)'>
  430. <text v-if="total_platform_coupon_price>0">优惠¥{{total_platform_coupon_price}}</text>
  431. <text v-else>暂未选择优惠券</text>
  432. <text class='iconfont icon-jiantou'></text>
  433. </view>
  434. </block>
  435. <block v-else>
  436. <view class='discount'>暂无优惠券</view>
  437. </block>
  438. </view>
  439. <view class='item acea-row row-between-wrapper' v-if="priceGroup.storePostage > 0">
  440. <view>运费:</view>
  441. <view class='money'>+¥{{priceGroup.storePostage}}</view>
  442. </view>
  443. </view>
  444. <view style='height:140rpx;'></view>
  445. <view class='footer acea-row row-between-wrapper'>
  446. <view class="footer_count">
  447. <view>
  448. 合计:
  449. <text class='pColor'>¥{{totalPrice || 0}}</text>
  450. </view>
  451. <view class="coupon_price" v-if="couponData.total_coupon > 0">
  452. 优惠:¥ {{couponData.total_coupon}}
  453. <text @click="openDiscount">优惠明细</text>
  454. </view>
  455. </view>
  456. <view class='settlement' :class='couponData.status != "noAddress" ? "" : "disabled"' style='z-index:100'
  457. @tap="SubOrder">{{couponData.status != "noAddress" ? '提交订单':'选择地址'}}</view>
  458. </view>
  459. </view>
  460. <block v-if="coupon.status">
  461. <couponListWindow :coupon='coupon' :couponTitle="plantCoupon ? '平台优惠券' : '优惠券'" @ChangCouponsClose="ChangCouponsClose" @getCoupon="getCoupon"
  462. :openType='openType' :coupon_amount='coupon_amount'
  463. :coupon_number='coupon_number'></couponListWindow>
  464. </block>
  465. <addressWindow ref="addressWindow" @changeTextareaStatus="changeTextareaStatus" :address='address'
  466. :pagesUrl="pagesUrl" @OnChangeAddress="OnChangeAddress" @changeClose="changeClose"></addressWindow>
  467. <addInvoicing ref="addInvoicing" @changeInvoiceClose="changeInvoiceClose" :invoice='invoice'></addInvoicing>
  468. <block v-if="isShowBox">
  469. <checkDelivery :deliveryName="deliveryName" :isShowBox="isShowBox" :activeObj="activeObj" :radioList="radioList" @close="boxClose" @confirmBtn="getData">
  470. </checkDelivery>
  471. </block>
  472. <!--优惠明细弹窗-->
  473. <discountDetails :isShowDiscount="isShowDiscount" @close="closeDiscount" :couponData="couponData"></discountDetails>
  474. <timeranges :isShow='isShow' :time='timeranges' @confrim="confrim" @cancel="cancels"></timeranges>
  475. <areaWindow ref="areaWindow" :display="display" :address='addressInfoArea' :cityShow='cityShow' @submit="OnAreaAddress" @changeClose="changeAddressClose"></areaWindow>
  476. </view>
  477. </template>
  478. <script>
  479. // +----------------------------------------------------------------------
  480. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  481. // +----------------------------------------------------------------------
  482. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  483. // +----------------------------------------------------------------------
  484. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  485. // +----------------------------------------------------------------------
  486. // | Author: CRMEB Team <admin@crmeb.com>
  487. // +----------------------------------------------------------------------
  488. let app = getApp();
  489. const CACHE_CITY = {};
  490. import {
  491. orderConfirm,
  492. getOrderConfirm,
  493. getCouponsOrderPrice,
  494. orderCreate,
  495. createOrder
  496. } from '@/api/order.js';
  497. import {
  498. getAddressDefault,
  499. getAddressDetail,
  500. getAddressList,
  501. getUserInfo,
  502. getAgreementApi
  503. } from '@/api/user.js';
  504. import {
  505. openPaySubscribe
  506. } from '@/utils/SubscribeMessage.js';
  507. import {
  508. presellAgreement
  509. } from '@/api/activity.js';
  510. import couponListWindow from '@/components/orderCoupon';
  511. import addressWindow from '@/components/addressWindow';
  512. import orderGoods from '@/components/orderGoods';
  513. import checkDelivery from '@/components/checkDelivery/index.vue';
  514. import discountDetails from '@/components/discountDetails/index.vue';
  515. import addInvoicing from '@/components/addInvoicing';
  516. import parser from "@/components/jyf-parser/jyf-parser";
  517. import { mapGetters } from "vuex";
  518. import { toLogin } from '@/libs/login.js';
  519. import { configMap } from '@/utils';
  520. import { HTTP_REQUEST_URL } from '@/config/app';
  521. import dayjs from "@/plugin/dayjs/dayjs.min.js";
  522. import areaWindow from '@/components/areaWindow';
  523. import timeranges from '@/components/timeranges';
  524. export default {
  525. components: {
  526. couponListWindow,
  527. addressWindow,
  528. orderGoods,
  529. checkDelivery,
  530. addInvoicing,
  531. discountDetails,
  532. "jyf-parser": parser,
  533. areaWindow,
  534. timeranges
  535. },
  536. filters: {
  537. filterDay(val) {
  538. if (val) {
  539. var reg = /(\d{4})\-(\d{2})\-(\d{2})/;
  540. var date = val.replace(reg, "$2月$3日");
  541. return date
  542. }
  543. }
  544. },
  545. data() {
  546. return {
  547. // 备注
  548. msgObj: {},
  549. textareaStatus: true,
  550. deliveryName: '快递配送',
  551. //支付方式
  552. cartArr: [{
  553. "name": "微信支付",
  554. "icon": "icon-weixin2",
  555. value: 'weixin',
  556. title: '微信快捷支付',
  557. payStatus: 2,
  558. },
  559. {
  560. name: "支付宝支付",
  561. icon: "icon-icon34",
  562. // #ifdef H5 || APP-PLUS
  563. value: 'alipay',
  564. // #endif
  565. // #ifdef MP
  566. value: 'alipayQr',
  567. // #endif
  568. title: '支付宝支付',
  569. payStatus: this.$store.getters.globalData.alipay_open
  570. },
  571. {
  572. "name": "余额支付",
  573. "icon": "icon-icon-test",
  574. value: 'balance',
  575. title: '可用余额:',
  576. payStatus: this.$store.getters.globalData.yue_pay_status,
  577. },
  578. {
  579. "name": "线下支付",
  580. "icon": "icon-yinhangqia",
  581. value: 'offline',
  582. title: '线下支付',
  583. payStatus: 1,
  584. },
  585. ],
  586. tagStyle: {
  587. img: 'width:100%;display:block;',
  588. video: 'width:100%;'
  589. },
  590. radioList:[
  591. {
  592. title:this.deliveryName,
  593. check:true
  594. },
  595. {
  596. title:'到店核销',
  597. check:false
  598. }
  599. ],
  600. payType: 'offline', //支付方式
  601. openType: 1, //优惠券打开方式 1=使用
  602. active: 3, //支付方式切换
  603. coupon: {
  604. status: false,
  605. list: [],
  606. statusTile: '立即使用'
  607. }, //优惠券组件
  608. address: {
  609. address: false
  610. }, //地址组件
  611. addressInfo: {}, //地址信息
  612. invoice: {
  613. invoice: false,
  614. mer_id: 0,
  615. add: true
  616. }, //发票组件
  617. invoiceData: {}, // 发票数据
  618. addressId: 0, //地址id
  619. couponId: 0, //优惠券id
  620. cartId: '', //购物车id
  621. BargainId: 0,
  622. combinationId: 0,
  623. userInfo: {}, //用户信息
  624. post: {},
  625. mark: '', //备注信息
  626. couponTitle: '请选择', //优惠券
  627. coupon_price: 0, //优惠券抵扣金额
  628. useIntegral: false, //是否使用积分
  629. use_cash: false, //是否使用积分
  630. integral_price: 0, //积分抵扣金额
  631. cash_price: 0, //消费券抵扣金额
  632. integral: 0,
  633. status: 0,
  634. is_address: false,
  635. toPay: false, //修复进入支付时页面隐藏从新刷新页面
  636. shippingType: 0,
  637. storePostage: 0,
  638. cartInfo: [],
  639. priceGroup: {},
  640. animated: false,
  641. totalPrice: 0,
  642. use_integral: false,
  643. pagesUrl: "",
  644. orderKey: "",
  645. offlinePostage: "",
  646. from: '',
  647. orderStatus: '', //是否有地址
  648. couponIndex: 0, //选择商铺优惠券索引
  649. subCoupon: {}, //提交订单使用的优惠券
  650. proPrice: 0, //商品总价
  651. isShowBox: false,
  652. activeObj: {}, //选中店铺信息
  653. activeIndex: '', // 选中店铺索引
  654. invoiceName: '不开发票',
  655. isAgree: false,
  656. // isCash: false,
  657. showProtocol: false,
  658. isCoupon: false,
  659. protocol: '',
  660. order_type: 0,
  661. addInvoice: {},
  662. couponData: {},
  663. go_map: false,
  664. orderPay: false,
  665. take: [],
  666. open_integral: 0,
  667. coupon_number: 0,
  668. store_coupon_number: 0,
  669. coupon_amount: 0,
  670. store_coupon_amount: 0,
  671. plant_coupon_amount: 0,
  672. integral_count: '',
  673. cash_count: '',
  674. agrementTtile: '发票说明',
  675. pics: [],
  676. order_model: 2,
  677. allow_address: true,
  678. order_extend: [],
  679. order_form: [],
  680. extend: {},
  681. virtualIndex: 0,
  682. platformCoupon: [],
  683. total_platform_coupon_price: 0,
  684. enabledPlatformCoupon: false,
  685. plantCoupon: false,
  686. isShowDiscount: false,
  687. order_key: '',
  688. is_take: '',
  689. domain: HTTP_REQUEST_URL,
  690. timerangesIndex:0,
  691. newImg: [],
  692. display: false,
  693. cityShow: 2,
  694. addressInfoArea: [],
  695. timeranges: [],
  696. isShow:false,
  697. };
  698. },
  699. computed: {
  700. ...mapGetters(['isLogin','viewColor']),
  701. ...configMap(['hide_mer_status', 'alipay_open', 'yue_pay_status']),
  702. },
  703. watch: {
  704. alipay_open(n){
  705. this.payMode[1].payStatus = n
  706. },
  707. yue_pay_status(n){
  708. this.payMode[2].payStatus = n
  709. }
  710. },
  711. onReady() {
  712. },
  713. mounted: function() {
  714. },
  715. onLoad: function(options) {
  716. // #ifdef H5
  717. this.from = this.$wechat.isWeixin() ? 'weixin' : 'h5'
  718. // #endif
  719. // #ifdef MP
  720. this.from = 'routine'
  721. // #endif
  722. // #ifdef APP-PLUS
  723. this.from = 'weixin'
  724. // #endif
  725. if (!options.cartId) return this.$util.Tips({
  726. title: '请选择要购买的商品'
  727. }, {
  728. tab: 3,
  729. url: 1
  730. });
  731. this.couponId = options.couponId || 0;
  732. this.addressId = options.addressId || 0;
  733. this.cartId = options.cartId;
  734. this.is_address = options.is_address ? true : false;
  735. this.news = options.new ? 1 : 0;
  736. this.invoice_id = options.invoice_id || '';
  737. if (options.invoice_type == 1) {
  738. this.invoiceName = '增值税电子普通发票';
  739. } else if (options.invoice_type == 2) {
  740. this.invoiceName = '增值税专用发票';
  741. }
  742. if (!this.isLogin) {
  743. toLogin()
  744. }
  745. if (this.payType == 'weixin') {
  746. this.payType = this.from
  747. }
  748. let _this = this
  749. this.textareaStatus = true;
  750. if (this.isLogin && this.toPay == false && !this.orderPay) {
  751. this.getaddressInfo();
  752. this.$nextTick(function() {
  753. this.$refs.addressWindow.getAddressList();
  754. this.getUserInfo()
  755. })
  756. }
  757. uni.setStorage({
  758. key:'invoice_Data',
  759. data:{},
  760. success: function(){}
  761. })
  762. },
  763. /**
  764. * 生命周期函数--监听页面显示
  765. */
  766. onShow: function() {
  767. let that = this;
  768. that.invoice.invoice = false
  769. },
  770. methods: {
  771. /*预售协议*/
  772. getPresellAgree: function() {
  773. this.showProtocol = true
  774. this.agrementTtile = '预售协议'
  775. presellAgreement().then(res => {
  776. this.protocol = res.data.sys_product_presell_agree;
  777. })
  778. },
  779. changeIsAgree: function(e) {
  780. this.isAgree = !this.isAgree;
  781. },
  782. changeIsCash: function(e) {
  783. this.isCash = !this.isCash;
  784. },
  785. changeIntegral: function(e) {
  786. this.use_integral = !this.use_integral;
  787. this.getConfirm(this.addressId);
  788. },
  789. changeCash: function(e) {
  790. this.use_cash = !this.use_cash;
  791. this.getConfirm(this.addressId);
  792. },
  793. showPresellAgree(){
  794. this.getPresellAgree()
  795. },
  796. showInvoice(){
  797. this.getAgreement();
  798. },
  799. showCoupon(){
  800. this.getCouponAgreement();
  801. },
  802. // 打开配送方式弹窗
  803. openDiscount(item, index) {
  804. this.isShowDiscount = !this.isShowDiscount;
  805. },
  806. closeDiscount() {
  807. this.isShowDiscount = false
  808. },
  809. // 图片预览
  810. // 获得相册 idx
  811. getPhotoClickIdx(e) {
  812. let _this = this;
  813. let idx = e.currentTarget.dataset.index;
  814. _this.imgPreview(_this.pics, idx);
  815. },
  816. // 图片预览
  817. imgPreview: function(list, idx) {
  818. // list:图片 url 数组
  819. if (list && list.length > 0) {
  820. uni.previewImage({
  821. current: list[idx], // 传 Number H5端出现不兼容
  822. urls: list
  823. });
  824. }
  825. },
  826. /**上传文件*/
  827. uploadpic: function(item) {
  828. let that = this;
  829. that.$util.uploadImageOne('upload/image', function(res) {
  830. let pics = item.value || []
  831. pics.push(res.data.path);
  832. that.$set(item,'value', pics);
  833. });
  834. },
  835. /** 删除图片*/
  836. DelPic: function(item,index) {
  837. let that = this,
  838. pic = this.pics[index];
  839. item.value.splice(index, 1);
  840. // that.$set(that, 'pics', that.pics);
  841. },
  842. // 获取个人信息
  843. getUserInfo() {
  844. getUserInfo().then(res => {
  845. this.userInfo = res.data
  846. })
  847. },
  848. /*获取发票说明*/
  849. getAgreement() {
  850. let that = this
  851. that.showProtocol = true;
  852. that.agrementTtile = '发票说明'
  853. getAgreementApi('sys_receipt_agree').then(res => {
  854. that.protocol = res.data.sys_receipt_agree
  855. })
  856. },
  857. /*获取发票说明*/
  858. getCouponAgreement() {
  859. let that = this
  860. that.showProtocol = true;
  861. that.agrementTtile = '优惠券说明'
  862. getAgreementApi('sys_coupon_agree').then(res => {
  863. that.protocol = res.data.sys_coupon_agree
  864. })
  865. },
  866. // 单选
  867. radioChange(e, index, item){
  868. this.order_form[index].value = item.wordsConfig.list[e.detail.value].val
  869. },
  870. clickTextArea() {
  871. this.$refs.textarea.focus()
  872. },
  873. bindDateChange(e, index) {
  874. this.order_form[index].value = e.target.value
  875. this.$forceUpdate()
  876. },
  877. bindTimeChange(e, index) {
  878. this.order_form[index].value = e.target.value
  879. },
  880. bindSelectChange(e, index, item) {
  881. this.$set(this.order_form[index], 'value', item.wordsConfig.list[e.detail.value].val);
  882. },
  883. getTimeranges(index){
  884. this.isShow = true
  885. this.timerangesIndex = index
  886. },
  887. confrim(e){
  888. this.isShow = false;
  889. this.order_form[this.timerangesIndex].value = e.time;
  890. let arrayNew = [];
  891. e.val.forEach(item=>{
  892. arrayNew.push(Number(item))
  893. })
  894. this.timeranges = arrayNew;
  895. },
  896. cancels(){
  897. this.isShow = false;
  898. },
  899. // 多选
  900. checkboxChange(e, index, item){
  901. let obj = e.detail.value;
  902. let val = '';
  903. item.wordsConfig.list.forEach((j,jindex)=>{
  904. obj.forEach(x=>{
  905. if(jindex == x){
  906. val = val +(val?',':'') + j.val;
  907. }
  908. })
  909. })
  910. this.order_form[index].value = val
  911. },
  912. OnAreaAddress(address){
  913. let addr = '';
  914. addr = address.map(v=>v.name).join('/');
  915. this.order_form[this.timerangesIndex].value = addr;
  916. CACHE_CITY[this.timerangesIndex] = address;
  917. },
  918. changeRegion(index){
  919. if(!this.order_form[index].value){
  920. this.addressInfoArea = [];
  921. }
  922. this.timerangesIndex = index;
  923. this.cityShow = Number(this.order_form[index].valConfig.tabVal) + 1;
  924. this.display = true;
  925. if(CACHE_CITY[index]){
  926. this.addressInfoArea = CACHE_CITY[index];
  927. }
  928. },
  929. // 关闭地址弹窗;
  930. changeAddressClose: function() {
  931. this.display = false;
  932. },
  933. /**上传文件*/
  934. uploadpic: function(index) {
  935. let that = this;
  936. this.$util.uploadImageOne('upload/image', function(res) {
  937. that.newImg.push(res.data.path);
  938. that.$set(that.order_form[index], 'value', that.newImg);
  939. });
  940. },
  941. /**
  942. * 删除图片
  943. *
  944. */
  945. DelPic: function(index, indexs) {
  946. let that = this,
  947. pic = this.order_form[index].value;
  948. that.order_form[index].value.splice(indexs, 1);
  949. that.$set(that.order_form[index], 'value', that.order_form[index].value);
  950. },
  951. // 关闭地址弹窗;
  952. changeClose: function() {
  953. this.$set(this.address, 'address', false);
  954. },
  955. // 关闭发票弹窗
  956. changeInvoiceClose: function(data) {
  957. this.getInvoiceData(data);
  958. this.$set(this.invoice, 'invoice', false);
  959. },
  960. getInvoiceData(selectedData) {
  961. this.invoiceData = {}
  962. if (selectedData) {
  963. this.cartInfo.forEach((item, i) => {
  964. if (item.mer_id == selectedData.mer_id) {
  965. if (this.cartInfo[i]['invoiceData']) {
  966. this.cartInfo[i]['invoiceData'] = selectedData
  967. } else {
  968. this.$set(this.cartInfo[i], 'invoiceData', selectedData)
  969. }
  970. }
  971. let mer_id = selectedData.mer_id
  972. this.invoiceData[mer_id] = selectedData;
  973. });
  974. } else {
  975. this.cartInfo.forEach((item, i) => {
  976. this.$set(this.cartInfo[i], 'invoiceData', {})
  977. });
  978. }
  979. },
  980. getInvoiceDatas(selectedData) {
  981. this.invoiceData = {}
  982. if (selectedData.length) {
  983. this.cartInfo.forEach((item, i) => {
  984. selectedData.forEach((val, j) => {
  985. if (item.mer_id == val.mer_id) {
  986. if (this.cartInfo[i]['invoiceData']) {
  987. this.cartInfo[i]['invoiceData'] = val
  988. } else {
  989. this.$set(this.cartInfo[i], 'invoiceData', val)
  990. }
  991. }
  992. let mer_id = val.mer_id
  993. this.invoiceData[mer_id] = val;
  994. })
  995. });
  996. } else {
  997. this.cartInfo.forEach((item, i) => {
  998. this.$set(this.cartInfo[i], 'invoiceData', {})
  999. });
  1000. }
  1001. },
  1002. // 进店
  1003. goStore: function(id) {
  1004. if (this.hide_mer_status != 1) {
  1005. uni.navigateTo({
  1006. url: `/pages/store/home/index?id=${id}`
  1007. })
  1008. }
  1009. },
  1010. ChangCouponsClose: function() {
  1011. this.$set(this.coupon, 'status', false);
  1012. },
  1013. changeTextareaStatus: function() {
  1014. for (let i = 0, len = this.coupon.list.length; i < len; i++) {
  1015. this.coupon.list[i].use_title = '';
  1016. this.coupon.list[i].is_use = 0;
  1017. }
  1018. this.textareaStatus = true;
  1019. this.status = 0;
  1020. this.$set(this.coupon, 'list', this.coupon.list);
  1021. },
  1022. /**
  1023. * 选择地址后改变事件
  1024. * @param object e
  1025. */
  1026. OnChangeAddress: function(e) {
  1027. this.textareaStatus = true;
  1028. this.addressId = e;
  1029. this.address.address = false;
  1030. this.getaddressInfo();
  1031. },
  1032. bindHideKeyboard: function(e) {
  1033. this.mark = e.detail.value;
  1034. },
  1035. getCoupon(coupon) {
  1036. if (coupon.checked) {
  1037. this.subCoupon[coupon.mer_id].forEach((item, i) => {
  1038. if (coupon.coupon_user_id == item) {
  1039. this.subCoupon[coupon.mer_id].splice(i, 1)
  1040. }
  1041. })
  1042. } else {
  1043. this.subCoupon[coupon.mer_id].push(coupon.coupon_user_id)
  1044. }
  1045. this.getConfirm(this.addressId)
  1046. },
  1047. /**
  1048. * 获取当前订单详细信息
  1049. *
  1050. */
  1051. getConfirm: function(address_id) {
  1052. let that = this;
  1053. uni.showLoading({
  1054. title: '',
  1055. mask: true
  1056. });
  1057. getOrderConfirm({
  1058. cart_id: that.cartId.split(","),
  1059. address_id: address_id,
  1060. takes: that.take,
  1061. use_coupon: that.subCoupon,
  1062. use_integral: that.use_integral,
  1063. use_cash: that.use_cash
  1064. }).then(res => {
  1065. // 默认选中
  1066. that.is_take = false
  1067. res.data.order.forEach(el => {
  1068. if(el.order.isTake == 1)that.is_take = true
  1069. el.isTake = 0
  1070. that.subCoupon[el.mer_id] = []
  1071. el.coupon.forEach(coupon => {
  1072. if (coupon.checked) {
  1073. that.subCoupon[el.mer_id].push(coupon.coupon_user_id)
  1074. }
  1075. })
  1076. })
  1077. that.subCoupon['0'] = []
  1078. if(res.data.platformCoupon.length > 0){
  1079. res.data.platformCoupon.forEach(el => {
  1080. if (el.checked) {
  1081. that.subCoupon[el.mer_id] = []
  1082. that.subCoupon[el.mer_id].push(el.coupon_user_id)
  1083. }
  1084. })
  1085. }
  1086. that.$set(that.coupon, "coupon", that.plantCoupon ? res.data.platformCoupon : res.data.order[that.couponIndex].coupon);
  1087. that.$set(that, "store_coupon_number", res.data.order[that.couponIndex].order.useCouponIds.length);
  1088. that.$set(that, "coupon_number", that.plantCoupon ? that.subCoupon['0'].length : that.store_coupon_number);
  1089. that.$set(that, "store_coupon_amount", parseFloat(res.data.order[that.couponIndex].order.coupon_price));
  1090. that.$set(that, "plant_coupon_amount", parseFloat(res.data.total_platform_coupon_price));
  1091. that.$set(that, "coupon_amount", that.plantCoupon ? that.plant_coupon_amount : that.store_coupon_amount);
  1092. that.$set(that, 'couponData', res.data);
  1093. that.$set(that, 'cartInfo', res.data.order);
  1094. that.$set(that, 'total_platform_coupon_price', res.data.total_platform_coupon_price);
  1095. that.$set(that, 'enabledPlatformCoupon', res.data.enabledPlatformCoupon);
  1096. that.$set(that, 'platformCoupon', res.data.platformCoupon);
  1097. that.$set(that, 'order_type', res.data.order_type);
  1098. that.$set(that, 'coupon_price', res.data.order_coupon_price);
  1099. that.$set(that, 'integral_count', res.data.order_total_integral);
  1100. that.$set(that, 'cash_count', res.data.total_cash);
  1101. that.$set(that, 'integral_price', res.data.order_total_integral_price);
  1102. that.$set(that, 'cash_price', res.data.total_cash_price);
  1103. that.$set(that, 'open_integral', res.data.openIntegral);
  1104. that.$set(that, 'use_integral', res.data.useIntegral);
  1105. that.$set(that, 'order_extend', (that.order_extend && that.order_extend.length>0) ? that.order_extend : res.data.order_extend);
  1106. if(res.data.mer_form_id && !that.order_form.length && res.data.mer_form_info && res.data.mer_form_info.value){
  1107. let formData = that.objToArr(res.data.mer_form_info.value)
  1108. formData.forEach((item, index, arr)=>{
  1109. that.$set(item, 'value', "");
  1110. CACHE_CITY[index] = ''; //清空省市区
  1111. if(item.name == 'texts'){
  1112. if(item.defaultValConfig.value){
  1113. item.value = item.defaultValConfig.value
  1114. }else{
  1115. item.value = ''
  1116. }
  1117. }else if(item.name == 'radios'){
  1118. item.value = item.wordsConfig.list[0].val
  1119. }else if(item.name == 'uploadPicture'){
  1120. item.value = [];
  1121. }else if(item.name == 'dateranges'){
  1122. if(item.valConfig.tabVal==0){
  1123. if(item.valConfig.tabData==0){
  1124. let obj = dayjs(new Date(Number(new Date().getTime()))).format('YYYY-MM-DD');
  1125. item.value = [obj,obj]
  1126. }else{
  1127. let data1 = dayjs(new Date(Number(new Date(item.valConfig.specifyDate[0]).getTime()))).format('YYYY-MM-DD');
  1128. let data2 = dayjs(new Date(Number(new Date(item.valConfig.specifyDate[1]).getTime()))).format('YYYY-MM-DD');
  1129. item.value = [data1,data2];
  1130. }
  1131. }else{
  1132. item.value = [];
  1133. }
  1134. }else{
  1135. if(['times','dates','timeranges'].indexOf(item.name) != -1){
  1136. if(item.valConfig.tabVal==0){ //显示默认值
  1137. if(item.valConfig.tabData==0){
  1138. if(item.name == 'times'){
  1139. item.value = dayjs(new Date(Number(new Date().getTime()))).format('HH:mm');
  1140. }else if(item.name == 'dates'){
  1141. item.value = dayjs(new Date(Number(new Date().getTime()))).format('YYYY-MM-DD');
  1142. }else{
  1143. let current = dayjs(new Date(Number(new Date().getTime()))).format('HH:mm');
  1144. item.value = current+' - '+current;
  1145. }
  1146. }else{
  1147. if(item.name == 'times' || item.name == 'dates'){
  1148. item.value = item.valConfig.specifyDate;
  1149. }else{
  1150. item.value = item.valConfig.specifyDate[0]+' - '+item.valConfig.specifyDate[1];
  1151. }
  1152. }
  1153. }else{
  1154. item.value = '';
  1155. }
  1156. }else{
  1157. item.value = '';
  1158. }
  1159. }
  1160. })
  1161. function sortNumber(a, b) {
  1162. return a.timestamp - b.timestamp;
  1163. }
  1164. formData.sort(sortNumber);
  1165. that.$set(that, 'order_form', (that.order_form && that.order_form.length>0) ? that.order_form : formData);
  1166. }
  1167. that.totalPrice = res.data.order_price
  1168. that.orderStatus = res.data.status
  1169. that.proPrice = res.data.total_price
  1170. that.order_type = res.data.order_type
  1171. that.order_model = res.data.order_model
  1172. that.allow_address = res.data.allow_address
  1173. that.deliveryName = res.data.order_model == 0 ? '快递配送' : '虚拟发货'
  1174. that.order_key = res.data.key
  1175. uni.getStorage({
  1176. key: "invoice_Data",
  1177. success: function(res) {
  1178. that.addInvoice = res.data;
  1179. if (res.data) {
  1180. that.getInvoiceDatas(res.data)
  1181. }
  1182. }
  1183. })
  1184. uni.hideLoading();
  1185. }).catch(err => {
  1186. return this.$util.Tips({
  1187. title: err
  1188. }, {
  1189. tab: 3,
  1190. url: 1
  1191. });
  1192. });
  1193. },
  1194. // 对象转数组
  1195. objToArr(data) {
  1196. let obj = Object.keys(data);
  1197. let m = obj.map(key => data[key]);
  1198. return m;
  1199. },
  1200. /*
  1201. * 获取默认收货地址或者获取某条地址信息
  1202. */
  1203. getaddressInfo: function() {
  1204. let that = this;
  1205. if (that.addressId) {
  1206. getAddressDetail(that.addressId).then(res => {
  1207. res.data.is_default = parseInt(res.data.is_default);
  1208. that.addressInfo = res.data || {};
  1209. that.addressId = res.data.address_id || 0;
  1210. that.address.addressId = res.data.address_id || 0;
  1211. that.post = {real_name: res.data.real_name, phone: res.data.phone}
  1212. this.getConfirm(that.addressId);
  1213. })
  1214. } else {
  1215. getAddressList().then(res => {
  1216. that.addressInfo = res.data.list.length > 0 ? res.data.list[0] : {};
  1217. that.addressId = res.data.list.length > 0 ? res.data.list[0].address_id : 0;
  1218. that.address.addressId = res.data.list.length > 0 ? res.data.list[0].address_id : 0;
  1219. that.post = res.data.list.length > 0 ? {real_name: res.data.list[0].real_name,phone:res.data.list[0].phone } : {real_name: '', phone: ''}
  1220. this.getConfirm(that.addressId);
  1221. })
  1222. }
  1223. },
  1224. payItem: function(e) {
  1225. let that = this;
  1226. let active = e;
  1227. that.active = active;
  1228. that.animated = true;
  1229. that.payType = that.cartArr[active].value;
  1230. if (that.payType == 'weixin') {
  1231. that.payType = that.from
  1232. }
  1233. },
  1234. couponTap: function(item, index) {
  1235. this.coupon = item
  1236. this.$set(this.coupon, 'status', true)
  1237. this.couponIndex = index
  1238. this.plantCoupon = false
  1239. this.$set(this, "coupon_number", this.store_coupon_number);
  1240. this.$set(this, "coupon_amount", this.store_coupon_amount);
  1241. },
  1242. couponTap2: function(item, index) {
  1243. this.coupon = {
  1244. coupon: item,
  1245. mer_id: 0,
  1246. status: true
  1247. }
  1248. this.plantCoupon = true
  1249. this.$set(this, "coupon_number", this.subCoupon['0'].length);
  1250. this.$set(this, "coupon_amount", this.plant_coupon_amount);
  1251. },
  1252. car: function() {
  1253. let that = this;
  1254. that.animated = false;
  1255. },
  1256. onAddress: function() {
  1257. let that = this;
  1258. if(that.addressInfo.real_name){
  1259. that.textareaStatus = false;
  1260. that.address.address = true;
  1261. that.pagesUrl = '/pages/users/user_address/index?cartId=' + this.cartId + '&couponId=' + this.couponId;
  1262. }else{
  1263. uni.navigateTo({
  1264. url: `/pages/users/user_address/index?cartId=${this.cartId}`,
  1265. });
  1266. }
  1267. },
  1268. /**
  1269. * 开发票
  1270. */
  1271. goInvoice: function(id) {
  1272. let that = this;
  1273. that.invoice.invoice = true;
  1274. that.invoice.mer_id = id;
  1275. this.$refs.addInvoicing.getInvoiceDefault();
  1276. this.$refs.addInvoicing.getInvoiceList();
  1277. },
  1278. payment: function(data) {
  1279. let that = this;
  1280. createOrder(data).then(res => {
  1281. let status = res.data.status,
  1282. orderId = res.data.result.order_id,
  1283. callback_key = res.data.result.pay_key,
  1284. jsConfig = res.data.result.config,
  1285. goPages = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=' + res.message;
  1286. that.orderPay = true;
  1287. uni.hideLoading();
  1288. switch (status) {
  1289. case 'ORDER_EXIST':
  1290. case 'EXTEND_ORDER':
  1291. case 'PAY_ERROR':
  1292. case 'error':
  1293. return that.$util.Tips({
  1294. title: res.message
  1295. }, {
  1296. tab: 5,
  1297. url: goPages
  1298. });
  1299. break;
  1300. case 'success':
  1301. return that.$util.Tips({
  1302. title: res.message,
  1303. icon: 'success'
  1304. }, {
  1305. tab: 5,
  1306. url: goPages
  1307. });
  1308. break;
  1309. case 'alipay':
  1310. case "alipayQr":
  1311. uni.navigateTo({
  1312. url: '/pages/order_pay_back/index?keyCode=' + callback_key + '&url=' +
  1313. jsConfig
  1314. })
  1315. return;
  1316. break;
  1317. // #ifndef MP
  1318. case "wechat":
  1319. case "weixin":
  1320. case "weixinApp":
  1321. jsConfig.timeStamp = jsConfig.timestamp;
  1322. // #ifndef APP-PLUS
  1323. this.$wechat.pay(jsConfig).then(res => {
  1324. return that.$util.Tips({
  1325. title: res.message,
  1326. icon: 'success'
  1327. }, {
  1328. tab: 4,
  1329. url: goPages
  1330. });
  1331. }).catch(res => {
  1332. if (res.errMsg == 'chooseWXPay:cancel') return that.$util.Tips({
  1333. title: '取消支付'
  1334. }, {
  1335. tab: 5,
  1336. url: goPages + '&status=0'
  1337. });
  1338. })
  1339. // #endif
  1340. // #ifdef APP-PLUS
  1341. let mp_pay_name=''
  1342. if(uni.requestOrderPayment){
  1343. mp_pay_name='requestOrderPayment'
  1344. }else{
  1345. mp_pay_name='requestPayment'
  1346. }
  1347. uni[mp_pay_name]({
  1348. provider: 'wxpay',
  1349. orderInfo: jsConfig,
  1350. success: (e) => {
  1351. let url = '/pages/order_pay_status/index?order_id=' + orderId +
  1352. '&msg=支付成功';
  1353. return that.$util.Tips({
  1354. title: '支付成功',
  1355. icon: 'success'
  1356. }, {
  1357. tab: 4,
  1358. url: url
  1359. });
  1360. },
  1361. fail: (e) => {
  1362. let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付';
  1363. return that.$util.Tips({
  1364. title: '取消支付',
  1365. }, {
  1366. tab: 4,
  1367. url: url
  1368. });
  1369. },
  1370. complete: () => {
  1371. let url = '/pages/order_pay_status/index?order_id=' + orderId + '&msg=取消支付';
  1372. return that.$util.Tips({
  1373. title: '',
  1374. }, {
  1375. tab: 4,
  1376. url: url
  1377. });
  1378. },
  1379. });
  1380. // #endif
  1381. break;
  1382. // #endif
  1383. // #ifdef MP
  1384. case "routine":
  1385. jsConfig.timeStamp = jsConfig.timestamp;
  1386. that.toPay = true;
  1387. let mp_pay_name=''
  1388. if(uni.requestOrderPayment){
  1389. mp_pay_name='requestOrderPayment'
  1390. }else{
  1391. mp_pay_name='requestPayment'
  1392. }
  1393. uni[mp_pay_name]({
  1394. ...jsConfig,
  1395. success: function(res) {
  1396. uni.hideLoading();
  1397. return that.$util.Tips({
  1398. title: '支付成功',
  1399. icon: 'success'
  1400. }, {
  1401. tab: 5,
  1402. url: goPages
  1403. });
  1404. },
  1405. fail: function(e) {
  1406. let pages = '/pages/order_pay_status/index?order_id=' +
  1407. orderId + '&msg=取消支付'
  1408. return that.$util.Tips({
  1409. title: '取消支付'
  1410. }, {
  1411. tab: 5,
  1412. url: pages + '&status=0'
  1413. });
  1414. },
  1415. })
  1416. break;
  1417. // #endif
  1418. case "balance":
  1419. //余额
  1420. return that.$util.Tips({
  1421. title: res.message
  1422. }, {
  1423. tab: 5,
  1424. url: goPages + '&status=1'
  1425. });
  1426. break;
  1427. // #ifdef H5
  1428. case 'h5':
  1429. let host = window.location.protocol + "//" + window.location.host;
  1430. let url = `${host}/pages/order_pay_status/index?order_id=${orderId}&msg=${res.message}`
  1431. let eUrl = encodeURIComponent(url)
  1432. let jsurl = jsConfig.mweb_url || jsConfig.h5_url
  1433. let locations = `${jsurl}&redirect_url=${eUrl}`
  1434. setTimeout(() => {
  1435. location.href = locations;
  1436. }, 100);
  1437. break;
  1438. // #endif
  1439. // #ifdef APP-PLUS
  1440. case 'alipayApp':
  1441. uni.requestPayment({
  1442. provider: 'alipay',
  1443. orderInfo: jsConfig,
  1444. success: (e) => {
  1445. return that.$util.Tips({
  1446. title: '支付成功',
  1447. icon: 'success'
  1448. }, {
  1449. tab: 5,
  1450. url: goPages
  1451. });
  1452. },
  1453. fail: (e) => {
  1454. let pages = '/pages/order_pay_status/index?order_id=' +
  1455. orderId + '&msg=支付失败'
  1456. return that.$util.Tips({
  1457. title: '支付失败'
  1458. }, {
  1459. tab: 5,
  1460. url: pages
  1461. });
  1462. },
  1463. complete: () => {
  1464. uni.hideLoading();
  1465. let pages = '/pages/order_pay_status/index?order_id=' +
  1466. orderId + '&msg=取消支付'
  1467. return that.$util.Tips({
  1468. title: ''
  1469. }, {
  1470. tab: 5,
  1471. url: pages
  1472. });
  1473. },
  1474. });
  1475. break;
  1476. // #endif
  1477. default:
  1478. let pages = '/pages/order_pay_status/index?order_id=' +
  1479. orderId + '&msg=取消支付'
  1480. return that.$util.Tips({
  1481. title: '取消支付'
  1482. }, {
  1483. tab: 5,
  1484. url: pages + '&status=0'
  1485. });
  1486. }
  1487. }).catch(err => {
  1488. uni.hideLoading();
  1489. return that.$util.Tips({
  1490. title: err
  1491. });
  1492. });
  1493. },
  1494. isEmojiCharacter: function(substring) {
  1495. if (substring) {
  1496. for (var i = 0; i < substring.length; i++) {
  1497. var hs = substring.charCodeAt(i);
  1498. if (0xd800 <= hs && hs <= 0xdbff) {
  1499. if (substring.length > 1) {
  1500. var ls = substring.charCodeAt(i + 1);
  1501. var uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
  1502. if (0x1d000 <= uc && uc <= 0x1f77f) {
  1503. return true;
  1504. }
  1505. }
  1506. } else if (substring.length > 1) {
  1507. var ls = substring.charCodeAt(i + 1);
  1508. if (ls == 0x20e3) {
  1509. return true;
  1510. }
  1511. } else {
  1512. if (0x2100 <= hs && hs <= 0x27ff) {
  1513. return true;
  1514. } else if (0x2B05 <= hs && hs <= 0x2b07) {
  1515. return true;
  1516. } else if (0x2934 <= hs && hs <= 0x2935) {
  1517. return true;
  1518. } else if (0x3297 <= hs && hs <= 0x3299) {
  1519. return true;
  1520. } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 ||
  1521. hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b ||
  1522. hs == 0x2b50) {
  1523. return true;
  1524. }
  1525. }
  1526. }
  1527. }
  1528. },
  1529. getTime(index){
  1530. this.virtualIndex = index;
  1531. },
  1532. SubOrder: function(e) {
  1533. let that = this,
  1534. data = {};
  1535. if (!that.payType) return that.$util.Tips({
  1536. title: '请选择支付方式'
  1537. });
  1538. if (that.orderStatus == 'noAddress') return that.$util.Tips({
  1539. title: '请选择收货地址'
  1540. });
  1541. if (that.orderStatus != 'finish' && that.order_model == 0) {
  1542. return that.$util.Tips({
  1543. title: '收货地址不在配送区域'
  1544. });
  1545. }
  1546. if (that.orderStatus == 'noDeliver') {
  1547. return that.$util.Tips({
  1548. title: '暂不发货'
  1549. });
  1550. }
  1551. if (that.order_type == 2 && !that.isAgree && that.cartInfo[0].list[0].productPresell.presell_type ==
  1552. 2) {
  1553. return that.$util.Tips({
  1554. title: '请阅读并勾选协议,否则无法进行操作'
  1555. });
  1556. }
  1557. if (that.is_take) {
  1558. if(!that.post.real_name){
  1559. return that.$util.Tips({
  1560. title: '请填写收货人姓名'
  1561. });
  1562. }
  1563. if(!that.post.phone){
  1564. return that.$util.Tips({
  1565. title: '请填写收货人电话'
  1566. });
  1567. }
  1568. if(that.post.phone && !/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.post.phone)){
  1569. return that.$util.Tips({
  1570. title: '收货人电话格式不正确'
  1571. });
  1572. }
  1573. }
  1574. for (var i = 0; i < that.order_form.length; i++) {
  1575. let curdata = that.order_form[i]
  1576. if (['radios'].indexOf(curdata.name) == -1 && (curdata.titleShow.val || (['uploadPicture','dateranges'].indexOf(curdata.name) == -1 && curdata.value && curdata.value.trim()))) {
  1577. if ((curdata.name === 'texts' && curdata.valConfig.tabVal == 0) || ['dates','times','selects','citys','checkboxs'].indexOf(curdata.name) != -1) {
  1578. if (!curdata.value || (curdata.value && !curdata.value.trim())) {
  1579. return that.$util.Tips({
  1580. title: `请填写${curdata.titleConfig.value}`
  1581. });
  1582. }
  1583. }
  1584. if(curdata.name === 'timeranges'){
  1585. if(!curdata.value){
  1586. return that.$util.Tips({
  1587. title: `请选择${curdata.titleConfig.value}`
  1588. });
  1589. }
  1590. }
  1591. if (curdata.name === 'dateranges') {
  1592. if (!curdata.value.length) {
  1593. return that.$util.Tips({
  1594. title: `请选择${curdata.titleConfig.value}`
  1595. });
  1596. }
  1597. }
  1598. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 4) {
  1599. if (curdata.value <= 0) {
  1600. return that.$util.Tips({
  1601. title: `请填写大于0的${curdata.titleConfig.value}`
  1602. });
  1603. }
  1604. }
  1605. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 3) {
  1606. if (!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(curdata.value)) {
  1607. return that.$util.Tips({
  1608. title: `请填写正确的${curdata.titleConfig.value}`
  1609. });
  1610. }
  1611. }
  1612. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 1) {
  1613. if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(curdata.value)) {
  1614. return that.$util.Tips({
  1615. title: `请填写正确的${curdata.titleConfig.value}`
  1616. });
  1617. }
  1618. }
  1619. if (curdata.name === 'texts' && curdata.valConfig.tabVal == 2) {
  1620. if (!
  1621. /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i
  1622. .test(curdata.value)) {
  1623. return that.$util.Tips({
  1624. title: `请填写正确的${curdata.titleConfig.value}`
  1625. });
  1626. }
  1627. }
  1628. if (curdata.name === 'uploadPicture') {
  1629. if (!curdata.value.length) {
  1630. return that.$util.Tips({
  1631. title: `请上传${curdata.titleConfig.value}`
  1632. });
  1633. }
  1634. }
  1635. }
  1636. this.extend[curdata.key] = curdata.value
  1637. }
  1638. data = {
  1639. use_cash: this.use_cash,
  1640. cart_id: this.cartId.split(","),
  1641. address_id: this.addressId,
  1642. use_coupon: this.subCoupon,
  1643. pay_type: this.payType,
  1644. mark: this.msgObj,
  1645. order_type: this.order_type,
  1646. key: this.order_key,
  1647. takes: this.take,
  1648. use_integral: this.use_integral,
  1649. receipt_data: this.invoiceData,
  1650. extend: this.extend,
  1651. post: this.post,
  1652. // #ifdef H5
  1653. return_url: 'http://' + window.location.host + '/pages/users/order_list/index',
  1654. // #endif
  1655. };
  1656. if (data.mark && this.isEmojiCharacter(data.mark[Object.keys(data.mark)[0]])) {
  1657. that.$util.Tips({
  1658. title: '备注不允许输入表情!'
  1659. });
  1660. return;
  1661. }
  1662. data.takes=[]
  1663. this.cartInfo.map(el => {
  1664. if (el.isTake == 1 || el.order.isTake) {
  1665. data.takes.push(el.mer_id)
  1666. }
  1667. })
  1668. if (data.payType == 'balance' && parseFloat(that.userInfo.now_money) < parseFloat(that.totalPrice))
  1669. return that.$util
  1670. .Tips({
  1671. title: '余额不足!'
  1672. });
  1673. uni.showLoading({
  1674. title: '订单支付中',
  1675. mask: true
  1676. });
  1677. // #ifdef MP
  1678. openPaySubscribe().then(() => {
  1679. that.payment(data);
  1680. });
  1681. // #endif
  1682. // #ifndef MP
  1683. that.payment(data);
  1684. // #endif
  1685. },
  1686. // 打开配送方式弹窗
  1687. openShowBox(item, index) {
  1688. if(item.delivery_way.length == 2 && this.order_model != 2){
  1689. this.activeObj = item
  1690. this.activeIndex = index
  1691. this.isShowBox = true
  1692. this.getDeliveryType(item.order)
  1693. }
  1694. },
  1695. // 获取快递方式
  1696. getDeliveryType(item) {
  1697. if(item.allow_delivery && item.allow_take){
  1698. this.radioList = [
  1699. {
  1700. title:this.deliveryName,
  1701. check:true
  1702. },
  1703. {
  1704. title:'到店核销',
  1705. check:false
  1706. }
  1707. ]
  1708. }else if(item.allow_delivery && !item.allow_take){
  1709. this.radioList = [
  1710. {
  1711. title:this.deliveryName,
  1712. check:true
  1713. }
  1714. ]
  1715. }else if(!item.allow_delivery && item.allow_take){
  1716. this.radioList = [
  1717. {
  1718. title:'到店核销',
  1719. check:false
  1720. }
  1721. ]
  1722. }
  1723. },
  1724. boxClose() {
  1725. this.isShowBox = false
  1726. },
  1727. getData(data) {
  1728. this.cartInfo[this.activeIndex] = data
  1729. if (data.order.isTake) {
  1730. this.take.push(data.mer_id)
  1731. } else {
  1732. this.take.forEach((item, i) => {
  1733. if (data.mer_id == item) {
  1734. this.take.splice(i, 1)
  1735. }
  1736. })
  1737. }
  1738. this.isShowBox = false
  1739. this.getConfirm(this.addressId);
  1740. },
  1741. //查看内置地图
  1742. goMap(item) {
  1743. let that = this;
  1744. let lat = Number(item.take.mer_take_location[0]),
  1745. long = Number(item.take.mer_take_location[1])
  1746. //#ifdef H5
  1747. if (that.$wechat.isWeixin() === true) {
  1748. that.$wechat.seeLocation({
  1749. latitude: lat,
  1750. longitude: long,
  1751. name: item.mer_name,
  1752. address: item.take ? item.take.mer_take_address : '',
  1753. }).then(res => {})
  1754. } else {
  1755. //#endif
  1756. uni.openLocation({
  1757. latitude: parseFloat(lat),
  1758. longitude: parseFloat(long),
  1759. scale: 8,
  1760. name: item.mer_name,
  1761. address: item.take ? item.take.mer_take_address : '',
  1762. success: function(res) {
  1763. that.go_map = true
  1764. },
  1765. });
  1766. // #ifdef H5
  1767. }
  1768. //#endif
  1769. }
  1770. }
  1771. }
  1772. </script>
  1773. <style lang="scss" scoped>
  1774. /deep/checkbox .uni-checkbox-input.uni-checkbox-input-checked,
  1775. /deep/checkbox .wx-checkbox-input.wx-checkbox-input-checked {
  1776. border: 1px solid var(--view-theme)!important;
  1777. background-color: var(--view-theme)!important;
  1778. color: #fff!important;
  1779. }
  1780. /deep/radio .wx-radio-input.wx-radio-input-checked,
  1781. /deep/uni-radio .uni-radio-input.uni-radio-input-checked {
  1782. border: 1px solid var(--view-theme)!important;
  1783. background-color: var(--view-theme)!important;
  1784. }
  1785. .order-submission .line {
  1786. position: absolute;
  1787. left: 0;
  1788. top: 0;
  1789. width: 100%;
  1790. height: 3rpx;
  1791. }
  1792. .order-submission .line image {
  1793. width: 100%;
  1794. height: 100%;
  1795. display: block;
  1796. }
  1797. .order-submission .address {
  1798. padding: 28rpx 30rpx;
  1799. background-color: #fff;
  1800. box-sizing: border-box;
  1801. }
  1802. .order-submission .address .addressCon {
  1803. width: 610rpx;
  1804. font-size: 26rpx;
  1805. color: #666;
  1806. }
  1807. .order-submission .address .addressCon .name {
  1808. font-size: 30rpx;
  1809. color: #282828;
  1810. font-weight: bold;
  1811. margin-bottom: 10rpx;
  1812. }
  1813. .order-submission .address .addressCon .name .phone {
  1814. margin-left: 50rpx;
  1815. }
  1816. .order-submission .address .addressCon .default {
  1817. margin-right: 12rpx;
  1818. }
  1819. .t-color{
  1820. color: var(--view-theme);
  1821. }
  1822. .order-submission .address .addressCon .setaddress {
  1823. color: #333;
  1824. font-size: 28rpx;
  1825. }
  1826. .order-submission .address .iconfont {
  1827. font-size: 35rpx;
  1828. color: #707070;
  1829. }
  1830. .order-submission .allAddress {
  1831. width: 100%;
  1832. }
  1833. .order-submission .allAddress .nav {
  1834. width: 710rpx;
  1835. margin: 0 auto;
  1836. }
  1837. .order-submission .allAddress .nav .item {
  1838. width: 355rpx;
  1839. }
  1840. .order-submission .allAddress .nav .item.on {
  1841. position: relative;
  1842. width: 250rpx;
  1843. }
  1844. .order-submission .allAddress .nav .item.on::before {
  1845. position: absolute;
  1846. bottom: 0;
  1847. content: "快递配送";
  1848. font-size: 28rpx;
  1849. display: block;
  1850. height: 0;
  1851. width: 336rpx;
  1852. border-width: 0 20rpx 80rpx 0;
  1853. border-style: none solid solid;
  1854. border-color: transparent transparent #fff;
  1855. z-index: 2;
  1856. border-radius: 7rpx 30rpx 0 0;
  1857. text-align: center;
  1858. line-height: 80rpx;
  1859. }
  1860. .order-submission .allAddress .nav .item:nth-of-type(2).on::before {
  1861. content: "到店核销";
  1862. border-width: 0 0 80rpx 20rpx;
  1863. border-radius: 30rpx 7rpx 0 0;
  1864. }
  1865. .order-submission .allAddress .nav .item.on2 {
  1866. position: relative;
  1867. }
  1868. .order-submission .allAddress .nav .item.on2::before {
  1869. position: absolute;
  1870. bottom: 0;
  1871. content: "到店核销";
  1872. font-size: 28rpx;
  1873. display: block;
  1874. height: 0;
  1875. width: 400rpx;
  1876. border-width: 0 0 60rpx 60rpx;
  1877. border-style: none solid solid;
  1878. border-color: transparent transparent #f7c1bd;
  1879. border-radius: 40rpx 6rpx 0 0;
  1880. text-align: center;
  1881. line-height: 60rpx;
  1882. }
  1883. .order-submission .allAddress .nav .item:nth-of-type(1).on2::before {
  1884. content: "快递配送";
  1885. border-width: 0 60rpx 60rpx 0;
  1886. border-radius: 6rpx 40rpx 0 0;
  1887. }
  1888. .order-submission .allAddress .address {
  1889. height: 150rpx;
  1890. margin: 0 auto;
  1891. }
  1892. .order-submission .allAddress .line {
  1893. margin: 0 auto;
  1894. }
  1895. .order-submission .wrapper .item .discount .placeholder {
  1896. color: #ccc;
  1897. text-align: right;
  1898. }
  1899. .order-submission .wrapper {
  1900. margin-bottom: 12rpx;
  1901. background-color: #fff;
  1902. }
  1903. .order-submission .wrapper .item {
  1904. padding: 27rpx 30rpx;
  1905. font-size: 30rpx;
  1906. color: #282828;
  1907. }
  1908. .order-submission .virtual_form{
  1909. padding: 0 30rpx;
  1910. }
  1911. /deep/.order-submission .virtual_form .uni-input-wrapper {
  1912. text-align: right;
  1913. }
  1914. .order-submission .virtual_form .item-require{
  1915. color: red;
  1916. margin-right: 4rpx;
  1917. }
  1918. .order-submission .virtual_form .item{
  1919. border-bottom: 1rpx solid #EEEEEE;
  1920. padding: 27rpx 0;
  1921. }
  1922. .order-submission .virtual_form .item.on .discount{
  1923. max-width: 460rpx;
  1924. }
  1925. .order-submission .virtual_form .item.pd0{
  1926. padding-bottom: 0;
  1927. }
  1928. .order-submission .virtual_form .item .radio{
  1929. margin: 0 22rpx 0 22rpx;
  1930. padding: 10rpx 0;
  1931. }
  1932. .upload {
  1933. display: -webkit-box;
  1934. display: -moz-box;
  1935. display: -webkit-flex;
  1936. display: -ms-flexbox;
  1937. display: flex;
  1938. -webkit-box-lines: multiple;
  1939. -moz-box-lines: multiple;
  1940. -o-box-lines: multiple;
  1941. -webkit-flex-wrap: wrap;
  1942. -ms-flex-wrap: wrap;
  1943. flex-wrap: wrap;
  1944. }
  1945. .order-submission .virtual_form .pictrue {
  1946. width: 156rpx;
  1947. height: 156rpx;
  1948. margin: 24rpx 20rpx 0 0;
  1949. position: relative;
  1950. font-size: 11px;
  1951. color: #bbb;
  1952. border-radius: 8rpx;
  1953. &:nth-child(4n) {
  1954. margin-right: 0;
  1955. }
  1956. &:nth-last-child(1) {
  1957. border: 0.5px solid #ddd;
  1958. box-sizing: border-box;
  1959. }
  1960. uni-image,
  1961. image {
  1962. width: 100%;
  1963. height: 100%;
  1964. img {
  1965. -webkit-touch-callout: none;
  1966. -webkit-user-select: none;
  1967. -moz-user-select: none;
  1968. display: block;
  1969. position: absolute;
  1970. top: 0;
  1971. left: 0;
  1972. opacity: 0;
  1973. width: 100%;
  1974. height: 100%;
  1975. }
  1976. }
  1977. .icon-guanbi4 {
  1978. color: #fff;
  1979. font-size: 14rpx;
  1980. position: absolute;
  1981. top: 0;
  1982. right: 0;
  1983. width: 30rpx;
  1984. height: 30rpx;
  1985. text-align: center;
  1986. line-height: 30rpx;
  1987. border-radius: 0 8rpx 0 8rpx;
  1988. background: rgba(0,0,0,.6);
  1989. }
  1990. }
  1991. .vipImg {
  1992. width: 65rpx;
  1993. height: 28rpx;
  1994. margin-left: 4rpx;
  1995. image {
  1996. width: 100%;
  1997. height: 100%;
  1998. display: block;
  1999. }
  2000. }
  2001. .order-submission .wrapper .item .discount {
  2002. font-size: 30rpx;
  2003. color: #999;
  2004. &.discount_voice {
  2005. overflow: hidden;
  2006. text-overflow: ellipsis;
  2007. white-space: nowrap;
  2008. width: 500rpx;
  2009. text-align: right;
  2010. }
  2011. }
  2012. .order-submission .wrapper .item .discount .iconfont {
  2013. color: #515151;
  2014. font-size: 30rpx;
  2015. margin-left: 15rpx;
  2016. }
  2017. .order-submission .wrapper .item .discount .num {
  2018. font-size: 32rpx;
  2019. margin-right: 20rpx;
  2020. }
  2021. .order-submission .wrapper .item .shipping {
  2022. font-size: 30rpx;
  2023. color: #999;
  2024. position: relative;
  2025. padding-right: 58rpx;
  2026. }
  2027. .order-submission .wrapper .item .shipping .iconfont {
  2028. font-size: 35rpx;
  2029. color: #707070;
  2030. position: absolute;
  2031. right: 0;
  2032. top: 50%;
  2033. transform: translateY(-50%);
  2034. margin-left: 30rpx;
  2035. }
  2036. .order-submission .wrapper .item input {
  2037. flex: 1;
  2038. height: 100%;
  2039. margin-left: 20rpx;
  2040. text-align: right;
  2041. }
  2042. .order-submission .wrapper .item .placeholder {
  2043. color: #ccc;
  2044. }
  2045. .order-submission .wrapper .item .list {
  2046. margin-top: 35rpx;
  2047. }
  2048. .order-submission .wrapper .item .list .payItem {
  2049. border: 1px solid #eee;
  2050. border-radius: 6rpx;
  2051. height: 86rpx;
  2052. width: 100%;
  2053. box-sizing: border-box;
  2054. margin-top: 20rpx;
  2055. font-size: 28rpx;
  2056. color: #282828;
  2057. }
  2058. .order-submission .wrapper .item .list .payItem.on {
  2059. border-color: var(--view-theme);
  2060. color: var(--view-theme);
  2061. }
  2062. .order-submission .wrapper .item .list .payItem .name {
  2063. width: 50%;
  2064. text-align: center;
  2065. border-right: 1px solid #eee;
  2066. justify-content: left;
  2067. padding-left: 80rpx;
  2068. }
  2069. .order-submission .wrapper .item .list .payItem .name .iconfont {
  2070. width: 44rpx;
  2071. height: 44rpx;
  2072. border-radius: 50%;
  2073. text-align: center;
  2074. line-height: 44rpx;
  2075. background-color: #fe960f;
  2076. color: #fff;
  2077. font-size: 30rpx;
  2078. margin-right: 15rpx;
  2079. }
  2080. .order-submission .wrapper .item .list .payItem .name .iconfont.icon-weixin2 {
  2081. background-color: #41b035;
  2082. }
  2083. .order-submission .wrapper .item .list .payItem .name .iconfont.icon-icon34 {
  2084. background-color: #4295D5;
  2085. }
  2086. .order-submission .wrapper .item .list .payItem .tip {
  2087. width: 49%;
  2088. text-align: center;
  2089. font-size: 26rpx;
  2090. color: #aaa;
  2091. }
  2092. .order-submission .moneyList {
  2093. margin-top: 12rpx;
  2094. background-color: #fff;
  2095. padding: 30rpx;
  2096. }
  2097. .order-submission .moneyList .item {
  2098. font-size: 28rpx;
  2099. color: #282828;
  2100. }
  2101. .order-submission .moneyList .item~.item {
  2102. margin-top: 20rpx;
  2103. }
  2104. .order-submission .moneyList .item .money {
  2105. color: #868686;
  2106. display: flex;
  2107. align-items: center;
  2108. }
  2109. .order-submission .footer {
  2110. width: 100%;
  2111. height: 100rpx;
  2112. height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  2113. height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  2114. background-color: #fff;
  2115. padding: 0 30rpx;
  2116. font-size: 28rpx;
  2117. color: #333;
  2118. box-sizing: border-box;
  2119. position: fixed;
  2120. bottom: 0;
  2121. left: 0;
  2122. z-index: 30;
  2123. .footer_count{
  2124. font-size: 28rpx;
  2125. }
  2126. .coupon_price{
  2127. color: #999999;
  2128. font-size: 20rpx;
  2129. margin-top: 10rpx;
  2130. text{
  2131. color: #282828;
  2132. padding: 2rpx 10rpx;
  2133. background: #F5F5F5;
  2134. border-radius: 26rpx;
  2135. margin-left: 20rpx;
  2136. line-height: 30rpx;
  2137. height: 30rpx;
  2138. display: inline-block;
  2139. }
  2140. }
  2141. }
  2142. .pColor{
  2143. color: var(--view-priceColor);
  2144. }
  2145. .order-submission .footer .settlement {
  2146. font-size: 30rpx;
  2147. color: #fff;
  2148. width: 240rpx;
  2149. height: 70rpx;
  2150. background-color: var(--view-theme);
  2151. border-radius: 50rpx;
  2152. text-align: center;
  2153. line-height: 70rpx;
  2154. &.disabled {
  2155. background-color: #cccccc;
  2156. }
  2157. }
  2158. .footer .transparent {
  2159. opacity: 0
  2160. }
  2161. .event_bg {
  2162. background: #FF7F00;
  2163. }
  2164. .event_color {
  2165. color: #FF7F00;
  2166. }
  2167. .color_red {
  2168. color: var(--view-theme);
  2169. }
  2170. .storeinfo-wrapper {
  2171. .store-item {
  2172. margin-top: 12rpx;
  2173. background-color: #fff;
  2174. .store-title {
  2175. display: flex;
  2176. align-items: center;
  2177. padding: 28rpx 30rpx;
  2178. .icon-shangjiadingdan {
  2179. font-size: 32rpx;
  2180. }
  2181. .icon-xiangyou {
  2182. font-size: 26rpx;
  2183. color: #999;
  2184. }
  2185. .txt {
  2186. margin: 0 8rpx;
  2187. }
  2188. }
  2189. .product-item {
  2190. display: flex;
  2191. padding: 25rpx 30rpx;
  2192. border-top: 1px solid #F0F0F0;
  2193. .img-box {
  2194. width: 130rpx;
  2195. height: 130rpx;
  2196. image {
  2197. width: 130rpx;
  2198. height: 130rpx;
  2199. border-radius: 16rpx;
  2200. }
  2201. }
  2202. .content {
  2203. position: relative;
  2204. width: 550rpx;
  2205. margin-left: 30rpx;
  2206. font-size: 28rpx;
  2207. color: #282828;
  2208. overflow: hidden;
  2209. &.event_content {
  2210. .line1 {
  2211. width: 360rpx;
  2212. }
  2213. .price {
  2214. position: absolute;
  2215. top: 0;
  2216. right: 0;
  2217. margin-top: 0;
  2218. text {
  2219. display: block;
  2220. text-align: right;
  2221. }
  2222. }
  2223. }
  2224. .event_name {
  2225. display: inline-block;
  2226. margin-right: 9rpx;
  2227. color: #fff;
  2228. font-size: 20rpx;
  2229. padding: 0 8rpx;
  2230. line-height: 30rpx;
  2231. text-align: center;
  2232. border-radius: 6rpx;
  2233. }
  2234. .event_ship {
  2235. font-size: 20rpx;
  2236. margin-top: 10rpx;
  2237. }
  2238. .label {
  2239. margin-top: 10rpx;
  2240. color: #868686;
  2241. font-size: 20rpx;
  2242. }
  2243. .price {
  2244. margin-top: 20rpx;
  2245. color: var(--view-priceColor);
  2246. position: relative;
  2247. text {
  2248. margin-left: 10rpx;
  2249. color: #999;
  2250. }
  2251. .delivery_type{
  2252. float: right;
  2253. text{
  2254. color: var(--view-priceColor);
  2255. font-size: 20rpx;
  2256. }
  2257. }
  2258. }
  2259. .err-txt {
  2260. display: flex;
  2261. align-items: center;
  2262. margin-top: 18rpx;
  2263. color: $theme-color;
  2264. .iconfont {
  2265. margin-right: 10rpx;
  2266. }
  2267. }
  2268. }
  2269. }
  2270. }
  2271. .event_payTime {
  2272. padding: 0 30rpx 24rpx;
  2273. .event_progress {
  2274. margin-top: 50rpx;
  2275. position: relative;
  2276. }
  2277. .progress_step {
  2278. height: 80rpx;
  2279. position: relative;
  2280. padding-left: 60rpx;
  2281. &::before {
  2282. content: '';
  2283. display: block;
  2284. width: 2rpx;
  2285. height: 40rpx;
  2286. background: var(--view-theme);
  2287. position: absolute;
  2288. left: 35rpx;
  2289. top: 18rpx;
  2290. }
  2291. &:nth-child(2) {
  2292. &::before {
  2293. bottom: 64rpx;
  2294. top: auto;
  2295. background: #EFEFEF;
  2296. }
  2297. &::after {
  2298. background: #EFEFEF;
  2299. }
  2300. }
  2301. &::after {
  2302. content: '';
  2303. display: block;
  2304. width: 14rpx;
  2305. height: 14rpx;
  2306. background: var(--view-theme);
  2307. border-radius: 50%;
  2308. position: absolute;
  2309. top: 10rpx;
  2310. left: 29rpx;
  2311. }
  2312. .name {
  2313. float: left;
  2314. color: #282828;
  2315. &.color_red {
  2316. color: var(--view-theme);
  2317. }
  2318. }
  2319. .price {
  2320. float: right;
  2321. color: #282828;
  2322. &.color_red {
  2323. color: var(--view-priceColor);
  2324. }
  2325. }
  2326. }
  2327. .progress_pay {
  2328. padding-left: 60rpx;
  2329. font-size: 24rpx;
  2330. color: #868686;
  2331. margin-top: -34rpx;
  2332. }
  2333. }
  2334. }
  2335. .integral_checked {
  2336. margin-left: 10rpx;
  2337. display: inline;
  2338. .iconfont{
  2339. font-size: 38rpx;
  2340. }
  2341. .icon-weixuanzhong {
  2342. color: #BFBFBF;
  2343. }
  2344. .icon-xuanzhong1 {
  2345. color: var(--view-theme);
  2346. }
  2347. }
  2348. uni-checkbox-group,
  2349. .checkgroup {
  2350. width: 100%;
  2351. .checkbox {
  2352. float: right;
  2353. }
  2354. }
  2355. .icon-wenhao1 {
  2356. color: #868686;
  2357. margin-right: 6rpx;
  2358. }
  2359. .total {
  2360. display: flex;
  2361. justify-content: flex-end;
  2362. padding-right: 30rpx;
  2363. padding-bottom: 30rpx;
  2364. font-size: 26rpx;
  2365. color: #282828;
  2366. .price {
  2367. margin-left: 10rpx;
  2368. color: var(--view-priceColor);
  2369. font-size: 28rpx;
  2370. font-weight: bold;
  2371. text {
  2372. font-size: 20rpx;
  2373. }
  2374. }
  2375. }
  2376. .store-address {
  2377. padding: 30rpx 23rpx;
  2378. margin: 0 30rpx;
  2379. background: #F6F6F6;
  2380. border-radius: 8rpx;
  2381. font-size: 24rpx;
  2382. display: -webkit-box;
  2383. display: -moz-box;
  2384. display: -ms-flexbox;
  2385. display: -webkit-flex;
  2386. display: flex;
  2387. /*垂直居中*/
  2388. -webkit-box-align: center;
  2389. /*旧版本*/
  2390. -moz-box-align: center;
  2391. /*旧版本*/
  2392. -ms-flex-align: center;
  2393. /*混合版本*/
  2394. -webkit-align-items: center;
  2395. /*新版本*/
  2396. align-items: center;
  2397. /*新版本*/
  2398. .name {
  2399. width: 148rpx;
  2400. margin-right: 20rpx;
  2401. }
  2402. .info {
  2403. flex: 1;
  2404. }
  2405. .map {
  2406. text-align: center;
  2407. padding-left: 40rpx;
  2408. position: relative;
  2409. &::before {
  2410. content: '';
  2411. display: inline-block;
  2412. width: 2rpx;
  2413. height: 42rpx;
  2414. background-color: #DDDDDD;
  2415. position: absolute;
  2416. left: 0;
  2417. top: 18rpx;
  2418. }
  2419. .iconfont {
  2420. color: var(--view-theme);
  2421. }
  2422. .map_text {
  2423. color: var(--view-theme);
  2424. }
  2425. }
  2426. }
  2427. .settlementAgreement {
  2428. width: 100%;
  2429. height: 100%;
  2430. position: fixed;
  2431. top: 0;
  2432. left: 0;
  2433. background: rgba(0, 0, 0, .5);
  2434. z-index: 40;
  2435. }
  2436. .settlementAgreement .setAgCount {
  2437. background: #fff;
  2438. width: 656rpx;
  2439. height: 458px;
  2440. position: absolute;
  2441. top: 50%;
  2442. left: 50%;
  2443. border-radius: 12rpx;
  2444. -webkit-border-radius: 12rpx;
  2445. padding: 52rpx;
  2446. -webkit-transform: translate(-50%, -50%);
  2447. -moz-transform: translate(-50%, -50%);
  2448. transform: translate(-50%, -50%);
  2449. overflow: hidden;
  2450. .content {
  2451. height: 900rpx;
  2452. overflow-y: scroll;
  2453. /deep/ p {
  2454. font-size: 13px;
  2455. line-height: 22px;
  2456. }
  2457. /deep/ img {
  2458. max-width: 100%;
  2459. }
  2460. }
  2461. }
  2462. .settlementAgreement .setAgCount .icon {
  2463. font-size: 42rpx;
  2464. color: #b4b1b4;
  2465. position: absolute;
  2466. top: 15rpx;
  2467. right: 15rpx;
  2468. }
  2469. .settlementAgreement .setAgCount .title {
  2470. color: #333;
  2471. font-size: 32rpx;
  2472. text-align: center;
  2473. font-weight: bold;
  2474. }
  2475. .settlementAgreement .setAgCount .content {
  2476. margin-top: 32rpx;
  2477. color: #333;
  2478. font-size: 26rpx;
  2479. line-height: 22px;
  2480. text-align: justify;
  2481. text-justify: distribute-all-lines;
  2482. height: 756rpx;
  2483. overflow-y: scroll;
  2484. }
  2485. </style>