order.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. <template>
  2. <view>
  3. <view class="cu-card article no-card margin-tb">
  4. <view class="cu-item shadow">
  5. <view class="title">
  6. <view class="text-cut">订单号:{{order.ordersn}}</view>
  7. </view>
  8. <view class="content">
  9. <image :src="order.tilpic" mode="aspectFill"></image>
  10. <view class="desc">
  11. <view class="text-content">{{order.title}}</view>
  12. <view>
  13. <view class="cu-tag bg-red light sm round">{{order.gintegral}}积分 + ¥{{order.gpaymoney}}</view>
  14. </view>
  15. </view>
  16. </view>
  17. </view>
  18. </view>
  19. <view class="cu-list menu sm-border margin-bottom">
  20. <view class="cu-item">
  21. <view class="content">
  22. <text class="cuIcon-tag text-grey"></text>
  23. <text class="text-grey">兑购量</text>
  24. </view>
  25. <view class="action">
  26. <text class="text-lg">{{order.buynumber}} 件</text>
  27. </view>
  28. </view>
  29. <view class="cu-item">
  30. <view class="content">
  31. <text class="cuIcon-choiceness text-grey"></text>
  32. <text class="text-grey">订单积分</text>
  33. </view>
  34. <view class="action">
  35. <text class="text-lg" v-if="order.status==2">已扣除</text> <text class="text-lg"> {{order.integral}}积分</text>
  36. </view>
  37. </view>
  38. <view class="cu-item">
  39. <view class="content">
  40. <text class="cuIcon-moneybag text-grey"></text>
  41. <text class="text-grey">订单金额</text>
  42. </view>
  43. <view class="action">
  44. <text class="text-lg">¥ {{order.paymoney}}</text>
  45. </view>
  46. </view>
  47. </view>
  48. <radio-group class="block margin-bottom" v-if="order.status==2">
  49. <view class="cu-form-group">
  50. <view class="title padding-left-xs">微信支付</view>
  51. <radio class="checked" checked="true"></radio>
  52. </view>
  53. </radio-group>
  54. <view class="cu-list menu sm-border margin-bottom" v-if="order.status>=3">
  55. <view class="cu-item">
  56. <view class="content">
  57. <text class="cuIcon-pay text-grey"></text>
  58. <text class="text-grey">支付方式</text>
  59. </view>
  60. <view class="action">
  61. <text class="text-lg">微信支付</text>
  62. </view>
  63. </view>
  64. </view>
  65. <view class="cu-list menu sm-border margin-bottom">
  66. <view class="cu-item arrow">
  67. <view class="content">
  68. <text class="cuIcon-location text-grey"></text>
  69. <text class="text-grey">收件信息</text>
  70. </view>
  71. <view class="action" @tap="selAddress" v-if="order.status==2">
  72. <text class="text-lg">点击选择</text>
  73. </view>
  74. </view>
  75. <view class="padding-lr padding-tb-sm bg-white" v-if="order.username!=''">
  76. <view class="text-bold margin-bottom-sm">
  77. <text>{{order.username}}</text>
  78. <text class="margin-left">{{order.usermobile}}</text>
  79. </view>
  80. <view>
  81. <text>{{order.province}} {{order.city}} {{order.county}} {{order.detailinfo}}</text>
  82. </view>
  83. </view>
  84. </view>
  85. <view class="padding-tb padding-lr solid-bottom bg-white text-red" v-if="order.mallGoods.oremark!=''">{{order.mallGoods.oremark}}</view>
  86. <view class="cu-form-group" v-if="order.status==2">
  87. <textarea maxlength="-1" @input="remarkInput" placeholder="请输入备注信息..." :value="order.remark"></textarea>
  88. </view>
  89. <view class="cu-form-group padding-tb" v-else>
  90. <text>{{order.remark}}</text>
  91. </view>
  92. <view class="padding-sm"></view>
  93. <view class="padding-xl"></view>
  94. <view class="cu-bar bg-white tabbar border shop foot" v-if="order.status==2">
  95. <view class="bg-white submit flex align-end">
  96. <text class="text-sm">需支付金额:</text>
  97. <text class="text-lg text-red">¥{{order.paymoney}}元</text>
  98. </view>
  99. <view class="bg-red submit" @click="payOrder">立即支付</view>
  100. </view>
  101. <view class="cu-bar bg-white tabbar border shop foot" v-else>
  102. <view class="bg-white submit flex align-end">
  103. <text class="text-sm">订单金额:</text>
  104. <text class="text-lg text-red">¥{{order.paymoney}}元</text>
  105. </view>
  106. <view class="bg-red submit" v-if="order.status==1">订单已取消</view>
  107. <view class="bg-red submit" v-if="order.status==3">订单已支付</view>
  108. <view class="bg-red submit" v-if="order.status==4">订单已完成</view>
  109. <view class="bg-red submit" v-if="order.status==5">订单已退单</view>
  110. </view>
  111. </view>
  112. </template>
  113. <script>
  114. var _this;
  115. export default {
  116. data() {
  117. return {
  118. isRotate: false,
  119. userinfo: false,
  120. order: {}
  121. };
  122. },
  123. onLoad: function(option) {
  124. _this = this;
  125. var userinfo = uni.getStorageSync('userinfo') || false;
  126. if (userinfo == false) {
  127. uni.redirectTo({
  128. url: '/pages/login/login'
  129. });
  130. return false;
  131. }
  132. _this.userinfo = userinfo;
  133. var orderid = option.orderid || 0;
  134. _this.$req.ajax({
  135. path: "mall/getorder",
  136. data: {
  137. orderid: orderid,
  138. userid: userinfo.id
  139. }
  140. }).then((data) => {
  141. _this.order = data.order;
  142. }).catch((err) => {
  143. uni.showModal({
  144. title: '信息提示',
  145. content: err,
  146. showCancel: false,
  147. success: function(res) {
  148. uni.redirectTo({
  149. url: '/pages/mall/myorder'
  150. });
  151. }
  152. });
  153. });
  154. },
  155. methods: {
  156. payOrder: function(e) {
  157. if (_this.isRotate) {
  158. return false;
  159. }
  160. _this.isRotate = true;
  161. _this.$req.ajax({
  162. path: "mall/payorder",
  163. title: "支付处理中",
  164. data: {
  165. orderid: _this.order.id,
  166. userid: _this.userinfo.id,
  167. remark: _this.order.remark
  168. }
  169. }).then((data) => {
  170. console.log("data: " + JSON.stringify(data));
  171. if (data.ostatus == 3) {
  172. uni.showModal({
  173. title: '信息提示',
  174. content: '支付成功。',
  175. showCancel: false,
  176. success: function(res) {
  177. uni.redirectTo({
  178. url: '/pages/mall/myorder'
  179. });
  180. }
  181. });
  182. } else if (data.ostatus == 2) {
  183. var payinfo = data.payinfo;
  184. uni.requestPayment({
  185. provider: 'wxpay',
  186. timeStamp: payinfo.timeStamp.toString(),
  187. nonceStr: payinfo.nonceStr,
  188. package: payinfo.package,
  189. signType: payinfo.signType,
  190. paySign: payinfo.paySign,
  191. success: function(res) {
  192. uni.showModal({
  193. title: '信息提示',
  194. content: '支付成功。',
  195. showCancel: false,
  196. success: function(res) {
  197. uni.redirectTo({
  198. url: '/pages/mall/myorder'
  199. });
  200. }
  201. });
  202. },
  203. fail: function(err) {
  204. console.log('fail:' + JSON.stringify(err));
  205. }
  206. });
  207. }
  208. _this.isRotate = false;
  209. }).catch((err) => {
  210. uni.showModal({
  211. title: '信息提示',
  212. content: err,
  213. showCancel: false
  214. });
  215. _this.isRotate = false;
  216. });
  217. },
  218. selAddress: function(e) {
  219. wx.chooseAddress({
  220. success(res) {
  221. _this.$req.ajax({
  222. path: "mall/setorderaddress",
  223. data: {
  224. orderid: _this.order.id,
  225. userid: _this.userinfo.id,
  226. username: res.userName,
  227. usermobile: res.telNumber,
  228. province: res.provinceName,
  229. city: res.cityName,
  230. county: res.countyName,
  231. detailinfo: res.detailInfo,
  232. }
  233. }).then((data) => {
  234. _this.order = data.order;
  235. }).catch((err) => {
  236. uni.showModal({
  237. title: '信息提示',
  238. content: err,
  239. showCancel: false,
  240. success: function(res) {
  241. uni.redirectTo({
  242. url: '/pages/mall/myorder'
  243. });
  244. }
  245. });
  246. });
  247. }
  248. });
  249. },
  250. remarkInput: function(e) {
  251. _this.order.remark = e.detail.value
  252. },
  253. },
  254. }
  255. </script>
  256. <style>
  257. </style>