order.vue 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <ax-body @init="initBody" blank="0">
  3. <view class="body">
  4. <view class="app-flex c-between top">
  5. <view class="tabs">
  6. <view v-for="(item,index) in tabs.data" :key="index" @click="tabs.index=index"
  7. class="tab" :class="{active:tabs.index==index}">{{item.name}}</view>
  8. </view>
  9. <view><text @click="openFilter()" class="ax-iconline i-setting filter-icon"></text></view>
  10. </view>
  11. <view class="list app-hide-scrollbar">
  12. <view v-for="(item,index) in orders.data" :key="index" class="item">
  13. <view class="title" @click="toOrderDeile(item)">
  14. <view class="name">{{item.params.stationName}}</view>
  15. <view class="state" :class="[getSates(item).color]">{{getSates(item).name}}</view>
  16. </view>
  17. <view class="subinfo" @click="toOrderDeile(item)">
  18. <view>
  19. <view>订单时间: {{item.createTime}}</view>
  20. <view>终端名称: {{item.params.deviceName}}</view>
  21. </view>
  22. </view>
  23. <view class="bottom" @click="toOrderDeile(item)">
  24. <view class="money-txt">充电费用:</view>
  25. <view class="money">
  26. <text style="color:red;" v-if="item.discountMoney||item.firmPrice">共减 ¥{{(item.discountMoney+item.firmPrice+item.couponPrice).toFixed(4)}}</text>
  27. <text style="width: 20rpx;display: inline-block;"></text>
  28. <text :style="{color:`${item.discountMoney||item.firmPrice?'':'red'}`}"><text v-if="item.discountMoney||item.firmPrice">实付</text> ¥{{item.realCost.toFixed(4) || ''}}</text>
  29. </view>
  30. </view>
  31. <view class="button-box">
  32. <view @click.stop="customerService()" class="invoice">开发票</view>
  33. <view class="arrears-btn-box" v-if="item.maspStatus===1" @click="$app.url.goto('/pages/coupon-buy/coupon-buy')">
  34. <view class="overflow-mon">超{{(item.maspAmount+item.maspRealAmount).toFixed(2)}}元</view>
  35. <view class="arrears-btn">去补缴</view>
  36. </view>
  37. </view>
  38. </view>
  39. <view v-if="orders.data.length==0" class="empty">
  40. <icon class="ax-iconblock i-meiyou icon"></icon>
  41. <view>暂无数据</view>
  42. </view>
  43. <view v-if="orders.total>orders.data.length" @click="loadData(true)" class="loadmore"><text>点击加载更多</text></view>
  44. </view>
  45. <!-- 筛选查询 -->
  46. <ax-popup ref="filter" position="top" maskType="black" maskEnable maskClose>
  47. <view class="filter-box" :style="{'--filter-padding-top':`${bodyTop+60}px`}">
  48. <view class="divider"></view>
  49. <view class="filter-form">
  50. <view class="cell">
  51. <view class="lable">开始时间</view>
  52. <picker @change="onChange('start',$event)" :value="filter.start" class="content" mode="date">
  53. <text>{{filter.start}}</text>
  54. <text class="ax-iconline i-arrow-right icon"></text>
  55. </picker>
  56. </view>
  57. <view class="cell">
  58. <view class="lable">结束时间</view>
  59. <picker @change="onChange('end',$event)" :value="filter.end" class="content" mode="date">
  60. <text>{{filter.end}}</text>
  61. <text class="ax-iconline i-arrow-right icon"></text>
  62. </picker>
  63. </view>
  64. </view>
  65. <view class="fast">
  66. <view class="cell">
  67. <view class="lable">快速设定</view>
  68. </view>
  69. <view class="shortcut-list">
  70. <view v-for="(item,index) in shortcuts" :key="index" @click="shortcut(item)" class="shortcut">{{item.name}}</view>
  71. </view>
  72. </view>
  73. <view @click="submit()" class="submit">确认查询</view>
  74. </view>
  75. </ax-popup>
  76. </view>
  77. </ax-body>
  78. </template>
  79. <script>
  80. export default {
  81. onLoad(options) {
  82. this.shortcut({code:'currentMonth'});
  83. if(options.index){
  84. this.tabs.index=options.index
  85. this.formSubmitPara.type=1
  86. }else{
  87. this.loadData();
  88. }
  89. },
  90. data() {
  91. return {
  92. bodyTop: 0,
  93. tabs:{
  94. index: 0,
  95. data:[{name:'全部订单',type:-1},{name:'进行中',type:1},{name:'已完成',type:2}]
  96. },
  97. shortcuts:[
  98. {name:'近7天',code:'7day'},
  99. {name:'近30天',code:'30day'},
  100. {name:'近三月',code:'3months'},
  101. {name:'本月份',code:'currentMonth'},
  102. ],
  103. orders:{
  104. total: 0,
  105. data:[],
  106. },
  107. filter:{
  108. start: '',
  109. end: '',
  110. },
  111. formSubmitPara : {//提交的参数信息
  112. startDate: '',
  113. endDate: '',
  114. pageNum : 1,
  115. pageSize : 10,
  116. type:-1,//全部订单
  117. }
  118. }
  119. },
  120. watch:{
  121. "tabs.index":function(){
  122. this.loadData();
  123. }
  124. },
  125. methods: {
  126. initBody(data){
  127. this.bodyTop = data.top;
  128. },
  129. shortcut(item){
  130. const now = new Date();
  131. const format = this.$app.date.format;
  132. switch (item.code){
  133. case '7day':
  134. now.setDate(now.getDate()-7);
  135. this.filter.start = format('yyyy-MM-dd',now);
  136. this.filter.end = this.$app.date.format('yyyy-MM-dd');
  137. break;
  138. case '30day':
  139. now.setDate(now.getDate()-30);
  140. this.filter.start = format('yyyy-MM-dd',now);
  141. this.filter.end = this.$app.date.format('yyyy-MM-dd');
  142. break;
  143. case '3months':
  144. this.filter.start = format('yyyy-MM-dd',new Date(now.getFullYear(),now.getMonth()-3,1));
  145. this.filter.end = format('yyyy-MM-dd',new Date(now.getFullYear(),now.getMonth()+1,0));
  146. break;
  147. case 'currentMonth':
  148. this.filter.start = format('yyyy-MM-dd',new Date(now.getFullYear(),now.getMonth(),1));
  149. this.filter.end = format('yyyy-MM-dd',new Date(now.getFullYear(),now.getMonth()+1,0));
  150. break;
  151. }
  152. },
  153. openFilter(){
  154. this.$refs.filter.open();
  155. },
  156. submit(){
  157. console.log(this.filter);
  158. this.formSubmitPara.startDate = this.filter.start;
  159. this.formSubmitPara.endDate = this.filter.end;
  160. this.loadData();
  161. this.$refs.filter.close();
  162. },
  163. onChange(name,e){
  164. this.filter[name] = e.detail.value;
  165. },
  166. loadData(append){
  167. this.formSubmitPara.type = this.tabs.data[this.tabs.index].type;
  168. if(append){
  169. //点击加载更多的调用
  170. this.formSubmitPara.pageNum = this.formSubmitPara.pageNum + 1;
  171. }else{
  172. this.formSubmitPara.pageNum = 0;
  173. this.orders.data =[];
  174. this.orders.total = 0;
  175. }
  176. this.$api.base("post","/chargeApi/queryOrderList",this.formSubmitPara,{}).then(res=>{
  177. console.log("订单列表:",res)
  178. this.orders.data = this.orders.data.concat(res.table.rows);
  179. this.orders.total = res.table.total;
  180. })
  181. },
  182. //映射状态信息
  183. getSates(item){
  184. var obj = {color:"",name:"未知"};
  185. if(item.status == 0){
  186. obj.color = "";
  187. obj.name = "待充电";
  188. }else if(item.status == 1){
  189. obj.color = "green";
  190. obj.name = "充电中";
  191. }else if(item.status == 2){
  192. obj.color = "green";
  193. obj.name = "结算中";
  194. }else if(item.status == 3){
  195. obj.color = "blue";
  196. obj.name = "已完成";
  197. }else if(item.status == 5){
  198. obj.color = "blue";
  199. obj.name = "订单取消";
  200. }
  201. return obj;
  202. },
  203. toOrderDeile(item){
  204. if(item.status == 0 || item.status == 1){
  205. //有充电中的订单,点击时跳转到充电中页面进行查看
  206. this.$app.url.goto('/pages/charging/charging?orderId='+item.id+"&deviceId="+item.deviceId,true);
  207. }else{
  208. this.$app.url.goto('/pages/order-detail/order-detail?orderId='+item.id);
  209. }
  210. },
  211. // 打开客服
  212. customerService(){
  213. const cs = this.$config.customerService;
  214. this.$app.act.customerService(cs.id,cs.url).catch(err=>{
  215. console.log(err);
  216. this.$app.popup.alert('客服中心失联啦,请联系管理员!');
  217. });
  218. },
  219. }
  220. }
  221. </script>
  222. <style scoped>
  223. @import url("order.css");
  224. </style>