book-list.vue 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <template>
  2. <view class="book-list">
  3. <scroll-view class="book-list_scroll " scroll-y @scrolltolower="scrolltolower"
  4. :show-scrollbar="false" @scroll="scroll">
  5. <view class="mlr-30">
  6. <view v-for="(item,index) in dataList" v-if="dataList.length>0" :key="index">
  7. <view class="month mt-20">{{item.month}}月</view>
  8. <z-timeline align="center" showDay :date="itm.date" v-for="(itm,idx) in item.dateList" :key="idx">
  9. <z-timeline-item v-for="(itm2,idx2) in itm.list" :key="idx2">
  10. <view class="item shadow-1 mtb-5 flex-n fac" @click="gotoDetail(itm2.id)">
  11. <view class="content1 flex-1">
  12. <view class="content1_1">{{itm2.customName}} {{itm2.activityBeginTime}}~{{itm2.activityEndTime}}</view>
  13. <view class="content1_2">{{itm2.houseName}} {{itm2.mainPayTypeText}}{{itm2.paycontent}}</view>
  14. </view>
  15. <view class="content2">已订</view>
  16. <view class="content3 ml-55 iconfont icondianhua-copy" v-if="itm2.phone" @click.stop="showMakePhone=true;callPhone=itm2.phone"></view>
  17. <view class="content3 ml-55 iconfont icondianhua-copy" style="color: #eee;" v-else></view>
  18. </view>
  19. </z-timeline-item>
  20. </z-timeline>
  21. </view>
  22. <z-nodata state="nodata" v-if="dataList.length==0"></z-nodata>
  23. <z-loading :showLoading="showLoading" :length="nowDateCount" :total="total" v-else></z-loading>
  24. </view>
  25. </scroll-view>
  26. <z-select-popup :visible.sync="showMakePhone">
  27. <view @click="gotoMakePhone">{{callPhone}}</view>
  28. </z-select-popup>
  29. <u-toast ref="uToast"></u-toast>
  30. </view>
  31. </template>
  32. <script>
  33. const app = getApp({
  34. allowDefault: true
  35. });
  36. export default {
  37. name: 'book-list',
  38. props: {
  39. refresh: Boolean,
  40. date:String
  41. },
  42. data() {
  43. return {
  44. showMakePhone: false,
  45. callPhone: '',
  46. dataList: [],
  47. total: 0,
  48. pageNum: 1,
  49. nowDateCount:0,
  50. scrollTop: 0,
  51. showLoading: false,
  52. startTime: ''
  53. }
  54. },
  55. watch: {
  56. // '$store.state.searchDate'(newval, oldval) {
  57. // console.log('选择的日期',newval)
  58. // this.startTime = newval;
  59. // this.nowDateCount=0;
  60. // this.dataList=[];
  61. // this.getData();
  62. // },
  63. // refresh(newval, oldval) {
  64. // if (newval) {
  65. // // this.bookList(this.date);
  66. // console.log(this.$store.state.searchDate)
  67. // this.pageNum=1;
  68. // this.dataList=[];
  69. // this.nowDateCount=0;
  70. // this.getData();
  71. // }
  72. // },
  73. date(newval,oldval){
  74. console.log('监听',newval,oldval)
  75. this.startTime=this.date;
  76. this.pageNum=1;
  77. this.dataList=[];
  78. this.nowDateCount=0;
  79. this.getData();
  80. }
  81. },
  82. mounted(){
  83. // this.startTime=this.$Date.getDayDate().date;
  84. // this.startTime=this.date;
  85. this.nowDateCount=0;
  86. this.getData();
  87. },
  88. methods: {
  89. getData() {
  90. var houseTypeIds = uni.getStorageSync('searchField')||[];
  91. console.log(this.$store.state.searchDate,this.$store.state.tabbarIndex)
  92. this.$axios.post('app/order/orderListOrderByDate', {
  93. storeId: uni.getStorageSync('storeId'),
  94. "startTime": this.$store.state.searchDate,
  95. "endTime": "",
  96. // "confirmState": "-1",
  97. "houseTypeIds": houseTypeIds,
  98. "pageNum": this.pageNum,
  99. "pageSize": 10
  100. }).then(res => {
  101. console.log(res.data);
  102. var list = res.data.list;
  103. this.nowDateCount +=list.length;
  104. var dataList = [],
  105. date = {};
  106. var monthList = [],
  107. pos = 0;
  108. if (list.length > 0)
  109. monthList.push(Number(list[0].orderDate.split('-')[1]))
  110. //先找有几个月份 ,过滤
  111. for (var i in list) {
  112. if (Number(list[pos].orderDate.split('-')[1]) != Number(list[i].orderDate.split('-')[1])) {
  113. monthList.push(Number(list[i].orderDate.split('-')[1]));
  114. pos=i;
  115. }
  116. var paycontent='';
  117. // if(list[i].mainPayType=='03'){
  118. // paycontent +='包场地'
  119. // if(list[i].payTypes.length>1){
  120. // paycontent +='('
  121. // }
  122. // }
  123. for(var j in list[i].payTypes){
  124. if(list[i].payTypes[j].payTypeCode=='01'){
  125. paycontent +=(list[i].payTypes[j].orderCount||0)+'人、'
  126. }
  127. if(list[i].payTypes[j].payTypeCode=='02'){
  128. paycontent +=(list[i].payTypes[j].orderCount||0)+'桌、'
  129. }
  130. }
  131. if(paycontent.length>0){
  132. paycontent=paycontent.substring(0,paycontent.length-1);
  133. }
  134. // if(list[i].mainPayType=='03'&&list[i].payTypes.length>1){
  135. // paycontent +=')'
  136. // }
  137. list[i].paycontent=paycontent.length>0?('['+paycontent+']'):''
  138. }
  139. // dataList=[];
  140. for (var i in monthList) {
  141. dataList.push({
  142. month: monthList[i],
  143. dateList: []
  144. })
  145. var pos2=0;
  146. var item = list.filter(item => Number(item.orderDate.split('-')[1]) == monthList[i]);
  147. var dateList=[];
  148. for (var j in item) {
  149. var dataContent = item[j].orderDate.split('-');
  150. date = this.$Date.getDayDate({
  151. yy: dataContent[0],
  152. mm: dataContent[1],
  153. dd: dataContent[2]
  154. })
  155. if (j == 0) {
  156. dateList.push({
  157. date: date,
  158. list: []
  159. });
  160. } else {
  161. if (item[j - 1].orderDate != item[j].orderDate) {
  162. dateList.push({
  163. date: date,
  164. list: []
  165. });
  166. pos2++;
  167. }
  168. }
  169. dateList[pos2].list.push(item[j]);
  170. dataList[i].dateList=dateList;
  171. }
  172. }
  173. console.log('预定列表',dataList)
  174. this.total = res.data.total;
  175. if(this.dataList.length>0&&this.dataList[this.dataList.length-1].month==dataList[0].month){
  176. var data=this.dataList[this.dataList.length-1].dateList[this.dataList[this.dataList.length-1].dateList.length-1];
  177. var data2=dataList[0].dateList[0];
  178. //数据里的日期一样
  179. console.log(data,data2)
  180. if(data.date.date==data2.date.date){
  181. console.log(3,data2.list)
  182. this.dataList[this.dataList.length-1].dateList[this.dataList[this.dataList.length-1].dateList.length-1].list=data.list.concat(data2.list);
  183. console.log(this.dataList)
  184. console.log(dataList)
  185. dataList[0].dateList.splice(0,1);
  186. }
  187. }
  188. this.dataList =this.dataList.concat(dataList) ;
  189. this.showLoading = false;
  190. }).catch(err => {
  191. // this.$refs.uToast.error(err.msg)
  192. })
  193. },
  194. getHouseDataList(dataList){
  195. this.$axios.post('app/house/houseList',{
  196. storeId:uni.getStorageSync('storeId')
  197. }).then(res=>{
  198. console.log('场地列表',res.data)
  199. console.log(dataList)
  200. var houseList=res.data.list;
  201. for(var i in houseList){
  202. this.dataList.push({houseName:houseList[i].houseName});
  203. this.dataList[i].list=[];
  204. for(var j in dataList){
  205. //同厅
  206. if(houseList[i].id==dataList[j].houseId){
  207. this.dataList[i].list.push(dataList[j])
  208. }
  209. }
  210. }
  211. return this.dataList;
  212. uni.hideLoading();
  213. }).catch(err=>{
  214. uni.hideLoading();
  215. // this.$refs.uToast.error(err.msg)
  216. })
  217. },
  218. gotoDetail(id) {
  219. console.log(id)
  220. uni.navigateTo({
  221. url: '../detail/index?id=' + id
  222. })
  223. },
  224. //拨打电话
  225. gotoMakePhone() {
  226. var that = this;
  227. uni.makePhoneCall({
  228. phoneNumber: this.callPhone,
  229. complete: function() {
  230. that.showMakePhone = false;
  231. }
  232. });
  233. },
  234. scroll(e) {
  235. this.scrollTop = e.detail.scrollTop
  236. },
  237. scrolltolower() {
  238. var totalPage=Math.ceil(Number(this.total)/10)
  239. if (this.pageNum < totalPage) {
  240. this.pageNum ++;
  241. this.showLoading = true;
  242. this.getData();
  243. }
  244. },
  245. scrolltoupper() {
  246. this.pageNum = 1;
  247. this.dataList=[];
  248. this.showLoading = true;
  249. this.getData();
  250. }
  251. }
  252. }
  253. </script>
  254. <style scoped lang="scss">
  255. .book-list {
  256. .month {
  257. font-size: 30rpx;
  258. color: #333333;
  259. }
  260. .book-list_scroll {
  261. height: calc(100vh - 98rpx - var(--status-bar-height) - 84rpx - 98rpx);
  262. }
  263. .day_info {
  264. text-align: center;
  265. font-size: 18rpx;
  266. color: #0075FF;
  267. }
  268. .item {
  269. padding: 10rpx 20rpx 10rpx 30rpx;
  270. .content1 {
  271. .content1_1 {
  272. color: #999999;
  273. font-size: 20rpx;
  274. }
  275. .content1_2 {
  276. color: #333333;
  277. font-size: 24rpx;
  278. }
  279. }
  280. .content2 {
  281. color: #999999;
  282. font-size: 20rpx;
  283. }
  284. .content3 {
  285. width: 38rpx;
  286. min-width: 38rpx;
  287. height: 38rpx;
  288. font-size: 38rpx;
  289. color: #007AFF;
  290. }
  291. }
  292. }
  293. </style>