order.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. <template>
  2. <view>
  3. <!--pages/order/order.wxml-->
  4. <view class="tab">
  5. <view v-for="(item, index) in TabList" :key="index" :class="'li ' + (item.active ? 'active' : '')" :data-index="index" @tap="switchTab">{{item.label}}</view>
  6. </view>
  7. <block v-if="pageList.length > 0">
  8. <view v-for="(item, index) in pageList" :key="index" class="lists">
  9. <view @tap="showOrder" :data-code="item.code" :data-id="item.id" :data-state="item.state">
  10. <view class="ddbh">
  11. <view class="dflex ">
  12. <image src="/mine/static/mine/images/ioc_hwg.png" class="ioc" v-if="item.orderType==10"></image>编号:{{item.id}}
  13. </view>
  14. <view class="tihuoma" v-if="item.mode == 1 && item.state < 8 && item.state >= 1">
  15. 提货码:<text>{{item.code}}</text></view>
  16. <block>
  17. <image src="/static/pages/images/jishida.png" class="type" v-if="item.orderType == 5"></image>
  18. <image src="/mine/static/mine/images/tuangou.png" class="type" v-if="item.orderType == 2"></image>
  19. <image src="/mine/static/mine/images/pingtuan.png" class="type" v-if="item.orderType == 4"></image>
  20. <image src="/mine/static/mine/images/kanjia.png" class="type" v-if="item.orderType == 7"></image>
  21. <image src="/mine/static/mine/images/seckill.png" class="type" v-if="item.orderType == 3"></image>
  22. <image src="/mine/static/mine/images/newbornZone.png" class="type" v-if="item.orderType == 6"></image>
  23. </block>
  24. </view>
  25. <view v-for="(itempro, index2) in item.products" :key="index2" class="li">
  26. <image :src="itempro.pic + '?x-oss-process=style/w160'" mode="aspectFit" class="cimg"></image>
  27. <view class="zhinfo">
  28. <view class="zhtit">{{itempro.title}}</view>
  29. <view v-if="itempro.propertiesList" class="guigecontent">规格:
  30. <text v-for="(itemGuige, index) in itempro.propertiesList" :key="index" class="guige" decode="true">{{itemGuige.value}}&nbsp;
  31. </text>
  32. </view>
  33. <view class="jiage">
  34. <view class="zhjia" v-if="item.orderType!=11">¥{{itempro.salePrice}}</view>
  35. <view class="zhjia" v-if="item.orderType==11">{{itempro.integral}}积分+¥{{itempro.salePrice}}</view>
  36. <view class="num">×{{itempro.quantity}}</view>
  37. </view>
  38. </view>
  39. </view>
  40. <view class="total">
  41. <!-- <view>共{{item.count}}件商品</view> -->
  42. <view>
  43. <block v-if="item.orderType!=11">
  44. 总金额:<text>¥{{item.money}}</text>
  45. </block>
  46. <block v-if="item.orderType==11">
  47. 合计:<text>{{item.discountMoney}}积分+¥{{item.money}}</text>
  48. </block>
  49. <block v-if="item.discountMoney>0&&item.orderType!=11">
  50. 优惠金额:<text>¥{{item.discountMoney}}</text>
  51. </block>
  52. </view>
  53. </view>
  54. </view>
  55. <view class="status">
  56. <block v-if="item.mode == 1 && item.state == 3">
  57. <view class="flex">待配货</view>
  58. </block>
  59. <block v-else>
  60. <view class="flex">{{item.stateName}}</view>
  61. </block>
  62. <block v-if="item.orderType==4">
  63. </block>
  64. <block v-else>
  65. <view class="sta-btn" @tap="refund" :data-id="item.id" :data-index="index" v-if="item.state>=2&&item.state<=6 && isrefund==1&&(item.orderType==1||item.orderType==10 ||item.orderType==5||item.orderType==11)">
  66. 申请售后</view>
  67. </block>
  68. <view class="sta-btn" @tap="cancelOrder" :data-index="index" v-if="item.state == 1">取消订单</view>
  69. <!-- <navigator class="sta-btn" url="/mine/orderDet/orderDet?id={{item.id}}" hover-class="none">查看详情</navigator> -->
  70. <view class="sta-btn red" @tap="confirmOrder" :data-index="index" v-if="item.state == 5">确认收货</view>
  71. <view @tap="payOrder" :data-index="index" class="sta-btn red" v-if="item.state == 1">立即付款</view>
  72. <view @tap="scoreOrder" :data-index="index" class="sta-btn red" v-if="item.state == 7 && isOpenComments==1">立即评价</view>
  73. </view>
  74. </view>
  75. </block>
  76. <view class="nodata" v-if="ishow">
  77. <image :src="picUrlss+'empty_dd.png'"></image>
  78. <text>还没有订单哦</text>
  79. </view>
  80. <view class="placeholder-view" :style="'height:' + (bottomBlankHeight + 155) + 'rpx'"></view>
  81. <foot channel="order" :isUpdate="isUpdate" product-type="2"></foot>
  82. </view>
  83. </template>
  84. <script>
  85. // pages/order/order.js
  86. const app = getApp();
  87. const req = require("../../utils/request.js");
  88. import foot from "../components/integral-nav/index";
  89. export default {
  90. data() {
  91. return {
  92. picUrlss: req.public.picUrls,
  93. bottomBlankHeight: app.globalData.isIPhoneX ? 68 : 0,
  94. TabList: [{
  95. label: '全部',
  96. active: true
  97. }, {
  98. label: '待付款',
  99. state: 1
  100. }, {
  101. label: '待发货',
  102. state: 3
  103. }, {
  104. label: '待收货',
  105. state: 5
  106. }, {
  107. label: '已完成',
  108. state: 7
  109. }],
  110. form: {
  111. page: 1,
  112. size: 5
  113. },
  114. pageList: [],
  115. isLoad: true,
  116. index: "",
  117. ishow: false,
  118. isrefund: "",
  119. isOpenComments: ""
  120. };
  121. },
  122. components: {
  123. foot
  124. },
  125. props: {},
  126. onLoad: function (options) {
  127. let that = this;
  128. let title = "";
  129. this.isrefundFun();
  130. this.isOpenCommentsFun();
  131. if (options.orderType) {
  132. this.form.orderType = options.orderType;
  133. if (options.orderType == 2) title = '团购订单';
  134. if (options.orderType == 4) title = '拼团订单';
  135. if (options.orderType == 7) title = '砍价订单';
  136. if (options.orderType == 11) title = '积分订单';
  137. uni.setNavigationBarTitle({
  138. title: title
  139. });
  140. }
  141. const index = that.TabList.findIndex(it => it.state == options.state);
  142. if (options && options.state > 0) that.switchTab({
  143. currentTarget: {
  144. dataset: {
  145. index: index
  146. }
  147. }
  148. });else that.getList();
  149. this.setData({
  150. index: index
  151. });
  152. },
  153. onShow() {
  154. this.switchTab({
  155. currentTarget: {
  156. dataset: {
  157. index: this.index
  158. }
  159. }
  160. });
  161. },
  162. onReachBottom() {
  163. this.form.page++;
  164. this.getList();
  165. },
  166. methods: {
  167. switchTab(event) {
  168. let index = event.currentTarget.dataset.index;
  169. // console.log(index);
  170. let def = this.TabList.findIndex(it => it.active);
  171. let d = {};
  172. d['TabList[' + def + '].active'] = false;
  173. d['TabList[' + index + '].active'] = true;
  174. this.isLoad = true;
  175. this.form.page = 1;
  176. d['pageList'] = []; // this.data.form.states=this.data.TabList[index].state.toString();
  177. this.form.state = this.TabList[index].state;
  178. this.setData({
  179. index: index
  180. });
  181. this.setData(d);
  182. this.getList();
  183. },
  184. getList() {
  185. let isShowLoading = false;
  186. if (this.form.page == 1 && !isShowLoading) {
  187. req.loadIng('加载中');
  188. isShowLoading = true;
  189. }
  190. // console.log(!this.isLoad);
  191. if (!this.isLoad) return false;
  192. this.isLoad = false;
  193. let that = this;
  194. req.getRequest('/api/order/list', this.form, data => {
  195. // console.log(data);
  196. if (data && data.length == 10) this.isLoad = true;
  197. if (that.form.page > 1) data = that.pageList.concat(data);
  198. that.setData({
  199. pageList: data
  200. });
  201. // console.log(data);
  202. if (data.length <= 0) {
  203. that.setData({
  204. ishow: true
  205. });
  206. } else {
  207. that.setData({
  208. ishow: false
  209. });
  210. }
  211. if (isShowLoading) {
  212. uni.hideLoading();
  213. isShowLoading = false;
  214. }
  215. });
  216. },
  217. showOrder(e) {
  218. let id = e.currentTarget.dataset.id;
  219. let code = e.currentTarget.dataset.code;
  220. let state = e.currentTarget.dataset.state; // if(state!=8){
  221. app.globalData.openPage('mine/orderDet/orderDet?id=' + id + '&isrefund=' + this.isrefund + '&code=' + code); // }else{
  222. // req.msg("订单已取消")
  223. // }
  224. },
  225. cancelOrder(event) {
  226. //取消订单
  227. let index = event.currentTarget.dataset.index;
  228. let page = this.pageList[index];
  229. let that = this;
  230. req.msgConfirm('确定取消该订单?', () => {
  231. req.postRequest('/api/order/cancel', {
  232. id: page.id
  233. }, () => {
  234. let d = {};
  235. d['pageList[' + index + '].stateName'] = '订单取消';
  236. d['pageList[' + index + '].state'] = 8;
  237. that.setData(d);
  238. that.switchTab({
  239. currentTarget: {
  240. dataset: {
  241. index: this.index
  242. }
  243. }
  244. });
  245. });
  246. });
  247. },
  248. confirmOrder(event) {
  249. //确认收货
  250. let index = event.currentTarget.dataset.index;
  251. let page = this.pageList[index];
  252. let that = this;
  253. // console.log(that.index);
  254. req.msgConfirm('确认执行该操作?', () => {
  255. req.postRequest('/api/order/receiving', {
  256. id: page.id
  257. }, () => {
  258. let d = {};
  259. d['pageList[' + index + '].stateName'] = '订单完成';
  260. d['pageList[' + index + '].state'] = 7;
  261. that.setData(d);
  262. that.switchTab({
  263. currentTarget: {
  264. dataset: {
  265. index: this.index
  266. }
  267. }
  268. });
  269. });
  270. });
  271. },
  272. payOrder(event) {
  273. //支付订单
  274. let index = event.currentTarget.dataset.index;
  275. let page = this.pageList[index];
  276. let that = this;
  277. req.payOrder(page.id, success => {
  278. // console.log(success);
  279. if (success) {
  280. //支付成功
  281. let d = {};
  282. d['pageList[' + index + '].stateName'] = '待发货';
  283. d['pageList[' + index + '].state'] = 3;
  284. that.setData(d);
  285. that.switchTab({
  286. currentTarget: {
  287. dataset: {
  288. index: this.index
  289. }
  290. }
  291. });
  292. }
  293. });
  294. },
  295. refund(event) {
  296. //申请退款
  297. let id = event.currentTarget.dataset.id;
  298. uni.navigateTo({
  299. url: '/mine/refund/refundType/refundType?id=' + id
  300. }); // let id = event.currentTarget.dataset.id;
  301. // req.postRequest('/api/order/refund',{id:id},res=>{
  302. // req.msg('退款审核中')
  303. // })
  304. },
  305. isrefundFun() {
  306. //是否开启售后
  307. let isrefund = JSON.parse(req.getStorage('configRes'));
  308. if (isrefund.isRefund) {
  309. this.setData({
  310. isrefund: isrefund.isRefund
  311. });
  312. } // if(isrefund.isRefund==1){
  313. // req.getRequest('/api/orderRefund/refundReason','',data=>{
  314. // req.setStorage('isrefund',data)
  315. // })
  316. // }
  317. },
  318. isOpenCommentsFun() {
  319. //是否开启评论
  320. let isOpenComments = JSON.parse(req.getStorage('configRes'));
  321. if (isOpenComments.is_open_comments) {
  322. this.setData({
  323. isOpenComments: isOpenComments.is_open_comments
  324. });
  325. }
  326. },
  327. scoreOrder(event) {
  328. //评价订单
  329. let index = event.currentTarget.dataset.index;
  330. let page = this.pageList[index];
  331. let that = this;
  332. app.globalData.openPage('mine/comments/comments?id=' + page.id);
  333. }
  334. }
  335. };
  336. </script>
  337. <style>
  338. @import "./order.css";
  339. </style>