add-order.html 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=no,minimal-ui">
  7. <title>菩提阁</title>
  8. <link rel="icon" href="../images/favico.ico">
  9. <!--不同屏幕尺寸根字体设置-->
  10. <script src="../js/base.js"></script>
  11. <!--element-ui的样式-->
  12. <link rel="stylesheet" href="../../backend/plugins/element-ui/index.css" />
  13. <!--引入vant样式-->
  14. <link rel="stylesheet" href="../styles/vant.min.css"/>
  15. <!-- 引入样式 -->
  16. <link rel="stylesheet" href="../styles/index.css" />
  17. <!--本页面内容的样式-->
  18. <link rel="stylesheet" href="../styles/add-order.css" />
  19. </head>
  20. <body>
  21. <div id="add_order" class="app">
  22. <div class="divHead">
  23. <div class="divTitle">
  24. <i class="el-icon-arrow-left" @click="goBack"></i>菩提阁
  25. </div>
  26. </div>
  27. <div class="divContent">
  28. <div class="divAddress">
  29. <div @click="toAddressPage">
  30. <div class="address">{{address.detail}}</div>
  31. <div class="name">
  32. <span>{{address.consignee}}{{address.sex === '1' ? '先生':'女士'}}</span>
  33. <span>{{address.phone}}</span>
  34. </div>
  35. <i class="el-icon-arrow-right"></i>
  36. </div>
  37. <div class="divSplit"></div>
  38. <div class="divFinishTime">预计{{finishTime}}送达</div>
  39. </div>
  40. <div class="order">
  41. <div class="title">订单明细</div>
  42. <div class="divSplit"></div>
  43. <div class="itemList">
  44. <div class="item" v-for="(item,index) in cartData" :key="index">
  45. <el-image :src="imgPathConvert(item.image)">
  46. <div slot="error" class="image-slot">
  47. <img src="../images/noImg.png"/>
  48. </div>
  49. </el-image>
  50. <div class="desc">
  51. <div class="name">{{item.name}}</div>
  52. <div class="numPrice">
  53. <span class="num">x{{item.number}}</span>
  54. <div class="price">
  55. <span class="spanMoney"></span>{{item.amount}}</div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="note">
  62. <div class="title">备注</div>
  63. <van-field
  64. v-model="note"
  65. rows="2"
  66. autosize
  67. type="textarea"
  68. maxlength="50"
  69. placeholder="请输入您需要备注的信息"
  70. show-word-limit
  71. />
  72. </div>
  73. </div>
  74. <div class="divCart">
  75. <div :class="{imgCartActive: cartData && cartData.length > 0, imgCart:!cartData || cartData.length<1}"></div>
  76. <div :class="{divGoodsNum:1===1, moreGoods:cartData && cartData.length > 99}" v-if="cartData && cartData.length > 0">{{ goodsNum }}</div>
  77. <div class="divNum">
  78. <span></span>
  79. <span>{{goodsPrice}}</span>
  80. </div>
  81. <div class="divPrice"></div>
  82. <div :class="{btnSubmitActive: cartData && cartData.length > 0, btnSubmit:!cartData || cartData.length<1}" @click="goToPaySuccess">去支付</div>
  83. </div>
  84. </div>
  85. <!-- 开发环境版本,包含了有帮助的命令行警告 -->
  86. <script src="../../backend/plugins/vue/vue.js"></script>
  87. <!-- 引入组件库 -->
  88. <script src="../../backend/plugins/element-ui/index.js"></script>
  89. <!-- 引入vant样式 -->
  90. <script src="../js/vant.min.js"></script>
  91. <script src="../api/address.js"></script>
  92. <!-- 引入axios -->
  93. <script src="../../backend/plugins/axios/axios.min.js"></script>
  94. <script src="../js/request.js"></script>
  95. <script src="../js/common.js"></script>
  96. <script src="../api/main.js"></script>
  97. <script src="../api/order.js"></script>
  98. <script>
  99. new Vue({
  100. el:"#add_order",
  101. data(){
  102. return {
  103. address:{
  104. phone:'',//手机号
  105. consignee:'',//姓名
  106. detail:'',//详细地址
  107. sex:'1',
  108. id:undefined
  109. },
  110. finishTime:'',//送达时间
  111. cartData:[],
  112. note:''//备注信息
  113. }
  114. },
  115. computed:{
  116. goodsNum(){
  117. let num = 0
  118. this.cartData.forEach(item=>{
  119. num += item.number
  120. })
  121. if(num <99){
  122. return num
  123. }else{
  124. return '99+'
  125. }
  126. },
  127. goodsPrice(){
  128. let price = 0
  129. this.cartData.forEach(item=>{
  130. price += (item.number * item.amount)
  131. })
  132. return price
  133. }
  134. },
  135. created(){
  136. this.initData()
  137. },
  138. mounted(){},
  139. methods:{
  140. goBack(){
  141. history.go(-1)
  142. },
  143. initData(){
  144. //获取默认的地址
  145. this.defaultAddress()
  146. //获取购物车的商品
  147. this.getCartData()
  148. },
  149. //获取默认地址
  150. async defaultAddress(){
  151. const res = await getDefaultAddressApi()
  152. if(res.code === 1){
  153. this.address = res.data
  154. this.getFinishTime()
  155. }else{
  156. window.requestAnimationFrame(()=>{
  157. window.location.href = '/front/page/address-edit.html'
  158. })
  159. }
  160. },
  161. //获取送达时间
  162. getFinishTime(){
  163. let now = new Date()
  164. let hour = now.getHours() +1
  165. let minute = now.getMinutes()
  166. if(hour.toString().length <2){
  167. hour = '0' + hour
  168. }
  169. if(minute.toString().length <2){
  170. minute = '0' + minute
  171. }
  172. this.finishTime = hour + ':' + minute
  173. },
  174. toAddressPage(){
  175. window.requestAnimationFrame(()=>{
  176. window.location.href = '/front/page/address.html'
  177. })
  178. },
  179. //获取购物车数据
  180. async getCartData(){
  181. const res = await cartListApi({})
  182. if(res.code === 1){
  183. this.cartData = res.data
  184. }else{
  185. this.$notify({ type:'warning', message:res.msg});
  186. }
  187. },
  188. async goToPaySuccess(){
  189. const params = {
  190. remark:this.note,
  191. payMethod:1,
  192. addressBookId:this.address.id
  193. }
  194. const res = await addOrderApi(params)
  195. if(res.code === 1){
  196. window.requestAnimationFrame(()=>{
  197. window.location.replace('/front/page/pay-success.html')
  198. })
  199. }else{
  200. this.$notify({ type:'warning', message:res.msg});
  201. }
  202. },
  203. //网络图片路径转换
  204. imgPathConvert(path){
  205. return imgPath(path)
  206. },
  207. }
  208. })
  209. </script>
  210. </body>
  211. </html>