index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431
  1. <template>
  2. <view>
  3. <z-navbar hideTitle></z-navbar>
  4. <view class="settlement_tab flex-n fac">
  5. <z-tabs v-if="!hideStateTab" width="80vw" :tabs="['场地预定','婚庆预定']" v-model="stateTab" @change="changeTab"></z-tabs>
  6. <view style="width:80vw;height: 98rpx;" v-else></view>
  7. <view class="settlement_tab_shaixuan iconfont iconxuanzhong2x" @click="gotoSearch"></view>
  8. <view class="settlement_tab_search iconfont iconjuxing5" @click="gotoSearchPage"></view>
  9. </view>
  10. <date-search :visible.sync="showSearch" :select="areaTimeChoose" @searchDate="searchDate"></date-search>
  11. <z-tabs bgcolor="white" textcolor="#999999" textselectedcolor="#333333" v-model="chooseState" shadow :tabs="['全部','待确认','待结算','已完成','已取消']"
  12. @change="changeState" :colorList="['#0075ff','#FDD711','#25B5FD','#3CDF58','#77848C']"></z-tabs>
  13. <scroll-view scroll-y class="scroll-area" @scrolltolower="scrolltolower" :show-scrollbar="false" @scroll="scroll"
  14. :scroll-anchoring="true">
  15. <view style="height: 30rpx;"></view>
  16. <template v-if="stateTab==0">
  17. <z-card class="mb-20 settlement_card " :class="[{settlement_card_line_1:item.confirmState=='03',settlement_card_line_2:item.confirmState=='04',settlement_card_line_3:item.confirmState=='01',settlement_card_line_4:item.confirmState=='02'}]"
  18. v-for="(item,index) in dataList" :key="index" @click.native="gotoDetail(item.id)">
  19. <view class="flex-n fac fjb ptb-25">
  20. <view class="settlement_card_left ml-40">
  21. <view class="settlement_card_left_name">{{item.customName}}</view>
  22. <view class="settlement_card_left_text1 mt-20">{{item.orderDate}} {{item.activityBeginTime}}~{{item.activityEndTime}}
  23. {{item.houseName}}</view>
  24. <view class="settlement_card_left_text2 mt-20">应收:{{item.orderNeedMoney||0}}元 实收:{{item.realPayment||0}} 元</view>
  25. </view>
  26. <view class="settlement_card_right mr-20">
  27. <view class="flex-n fac fje">
  28. <view class="settlement_card_right_icon iconfont iconjuxing20" v-if="item.confirmState=='01'"></view>
  29. <view class="settlement_card_right_icon iconfont iconjuxing21kaobei2" v-if="item.confirmState=='02'"></view>
  30. <view class="settlement_card_right_icon iconfont iconjuxing44" v-if="item.confirmState=='03'"></view>
  31. <view class="settlement_card_right_icon iconfont iconjuxing18" v-if="item.confirmState=='04'"></view>
  32. <view class="settlement_card_right_state">{{item.confirmStateText}}</view>
  33. </view>
  34. <image class="settlement_card_right_image" :src="item.headImageSrc||'../../../static/touxiang_1.png'"></image>
  35. <view class="settlement_card_right_name">{{item.createUserName}}</view>
  36. </view>
  37. </view>
  38. </z-card>
  39. </template>
  40. <template v-else>
  41. <z-card class="mb-20 settlement_card settlement_card_line_1" :class="[{settlement_card_line_1:item.confirmState=='03',settlement_card_line_2:item.confirmState=='04',settlement_card_line_3:item.confirmState=='01',settlement_card_line_4:item.confirmState=='02'}]"
  42. v-for="(item,index) in dataList" :key="index" @click.native="gotoDetail(item.orderId)">
  43. <view class="flex-n fac fjb ptb-25">
  44. <view class="settlement_card_left ml-40">
  45. <view class="settlement_card_left_name">{{item.maleName}}/{{item.femaleName}}</view>
  46. <view class="settlement_card_left_text1 mt-20">{{item.orderDate}} {{item.activityBeginTime}}~{{item.activityEndTime}}
  47. {{item.houseName}}</view>
  48. <view class="settlement_card_left_text2 mt-20">应收:{{item.orderMoney||0}}元 实收:{{item.realPayment||0}} 元</view>
  49. </view>
  50. <view class="settlement_card_right mr-20">
  51. <view class="flex-n fac">
  52. <view class="settlement_card_right_icon iconfont iconjuxing20" v-if="item.confirmState=='01'"></view>
  53. <view class="settlement_card_right_icon iconfont iconjuxing21kaobei2" v-if="item.confirmState=='02'"></view>
  54. <view class="settlement_card_right_icon iconfont iconjuxing44" v-if="item.confirmState=='03'"></view>
  55. <view class="settlement_card_right_icon iconfont iconjuxing18" v-if="item.confirmState=='04'"></view>
  56. <view class="settlement_card_right_state">{{item.confirmStateText}}</view>
  57. </view>
  58. <image class="settlement_card_right_image" :src="item.headImageSrc||'../../../static/touxiang_1.png'"></image>
  59. <view class="settlement_card_right_name">{{item.createUserName}}</view>
  60. </view>
  61. </view>
  62. </z-card>
  63. </template>
  64. <z-nodata class="mt-100" v-if="dataList.length==0"></z-nodata>
  65. <z-loading :showLoading="showLoading" :length="dataList.length" :total="total" v-else></z-loading>
  66. </scroll-view>
  67. <z-tabbar></z-tabbar>
  68. <u-toast ref="uToast"></u-toast>
  69. </view>
  70. </template>
  71. <script>
  72. import dateSearch from './sub/dateSearch.vue'
  73. const app = getApp({
  74. allowDefault: true
  75. });
  76. export default {
  77. components: {
  78. dateSearch
  79. },
  80. data() {
  81. return {
  82. stateTab: 0,
  83. chooseState: 0,
  84. total: 0,
  85. pageNum: 1,
  86. scrollTop: 0,
  87. showLoading: false,
  88. showSearch: false,
  89. confirmState: '',
  90. hideStateTab:false,
  91. dataList: [],
  92. startTime: '',
  93. endTime: '',
  94. createTimeBegin:'',
  95. createTimeEnd:'',
  96. areaTimeChoose:2,
  97. };
  98. },
  99. mounted() {
  100. uni.hideTabBar();
  101. // this.dataList = [];
  102. // this.getMenu();
  103. },
  104. onShow() {
  105. // this.changeState(this.chooseState);
  106. this.dataList = [];
  107. console.log(123)
  108. this.getMenu();
  109. },
  110. onHide() {
  111. },
  112. methods: {
  113. getMenu(){
  114. uni.getStorage({
  115. key:'menu',
  116. success:(res)=>{
  117. console.log(res.data)
  118. if(res.data.indexOf('105')>-1){
  119. this.hideStateTab=false;
  120. this.stateTab=1;
  121. }else{
  122. this.hideStateTab=true;
  123. this.stateTab=0;
  124. }
  125. var beginDate = '',
  126. endDate = '';
  127. var end = new Date(),start = new Date();
  128. var num = start.getDay();
  129. if (num == 0) {
  130. num = 7;
  131. }
  132. start.setTime(start.getTime() - 3600 * 1000 * 24 * (num - 1));
  133. end.setTime(end.getTime() + 3600 * 1000 * 24 * (7 - num));
  134. beginDate = start.getFullYear() + '-' + (start.getMonth() + 1) + '-' + start.getDate();
  135. endDate = end.getFullYear() + '-' + (end.getMonth() + 1) + '-' + end.getDate();
  136. this.searchDate({beginDate:beginDate,endDate:endDate});
  137. }
  138. })
  139. },
  140. searchDate(data) {
  141. this.startTime = data.beginDate;
  142. this.endTime = data.endDate;
  143. this.createTimeBegin=data.createTimeBegin;
  144. this.createTimeEnd=data.createTimeEnd;
  145. this.dataList = [];
  146. console.log('空数组',this.dataList,data)
  147. this.pageNum = 1;
  148. if (this.stateTab == 0) {
  149. this.getData(this.confirmState);
  150. } else {
  151. this.getWeddingData(this.confirmState);
  152. }
  153. },
  154. changeTab(data) {
  155. this.stateTab = data;
  156. this.changeState();
  157. },
  158. changeState(idx) {
  159. this.chooseState = idx;
  160. this.pageNum = 1;
  161. this.dataList = [];
  162. var confirmState = '';
  163. this.scrollTop = 0;
  164. if (idx == 1) {
  165. confirmState = '03'
  166. } else if (idx == 2) {
  167. confirmState = '04'
  168. } else if (idx == 3) {
  169. confirmState = '01'
  170. } else if (idx == 4) {
  171. confirmState = '02'
  172. }
  173. this.confirmState = confirmState;
  174. if (this.stateTab == 0)
  175. this.getData(confirmState)
  176. else
  177. this.getWeddingData(confirmState);
  178. },
  179. getData(confirmState) {
  180. var houseTypeIds = uni.getStorageSync('searchField') || [];
  181. this.$axios.post('app/order/orderClearList', {
  182. "confirmState": confirmState,
  183. "storeId": uni.getStorageSync('storeId'),
  184. "pageNum": this.pageNum,
  185. "startTime": this.startTime,
  186. "endTime": this.endTime,
  187. "createTimeBegin":this.createTimeBegin,
  188. "createTimeEnd":this.createTimeEnd,
  189. "houseTypeIds": houseTypeIds,
  190. "pageSize": 10
  191. }).then(res => {
  192. console.log('普通', res)
  193. this.total = res.data.total;
  194. this.dataList = this.dataList.concat(res.data.list);
  195. this.showLoading = false;
  196. }).catch(err => {
  197. this.showLoading = false;
  198. this.$refs.uToast.error(err.msg)
  199. })
  200. },
  201. getWeddingData(confirmState) {
  202. var houseTypeIds = uni.getStorageSync('searchField') || [];
  203. this.$axios.post('app/wedding/orderWeddingList', {
  204. "confirmState": confirmState,
  205. "storeId": uni.getStorageSync('storeId'),
  206. "pageNum": this.pageNum,
  207. "startTime": this.startTime,
  208. "endTime": this.endTime,
  209. "createTimeBegin":this.createTimeBegin,
  210. "createTimeEnd":this.createTimeEnd,
  211. "houseTypeIds": houseTypeIds,
  212. "pageSize": 10
  213. }).then(res => {
  214. console.log('婚庆', res)
  215. this.total = res.data.total;
  216. this.dataList = this.dataList.concat(res.data.list);
  217. this.showLoading = false;
  218. }).catch(err => {
  219. this.$refs.uToast.error(err.msg);
  220. this.showLoading = false;
  221. })
  222. },
  223. gotoDetail(id) {
  224. uni.navigateTo({
  225. url: '../detail/index?type=' + this.stateTab + '&id=' + id+'&idx='+this.chooseState,
  226. success: res => {},
  227. fail: () => {},
  228. complete: () => {}
  229. });
  230. },
  231. gotoSearchPage() {
  232. if (this.stateTab == 0)
  233. uni.navigateTo({
  234. url: '../../search/index?type=2',
  235. success: res => {},
  236. fail: () => {},
  237. complete: () => {}
  238. });
  239. else {
  240. uni.navigateTo({
  241. url: '../../search/index?type=3',
  242. success: res => {},
  243. fail: () => {},
  244. complete: () => {}
  245. });
  246. }
  247. },
  248. //时间段筛选
  249. gotoSearch() {
  250. this.showSearch = true;
  251. },
  252. scroll(e) {
  253. this.scrollTop = e.detail.scrollTop
  254. },
  255. scrolltolower() {
  256. var totalPage = Math.ceil(Number(this.total) / 10)
  257. if (this.pageNum < totalPage) {
  258. this.pageNum++;
  259. this.showLoading = true;
  260. if (this.stateTab == 0) {
  261. this.getData(this.confirmState);
  262. } else {
  263. this.getWeddingData(this.confirmState);
  264. }
  265. }
  266. },
  267. // scrolltoupper(){
  268. // this.pageNum = 1;
  269. // this.dataList=[];
  270. // this.showLoading = true;
  271. // if (this.stateTab == 0) {
  272. // this.getData(this.confirmState);
  273. // } else {
  274. // this.getWeddingData(this.confirmState);
  275. // }
  276. // }
  277. }
  278. }
  279. </script>
  280. <style scoped lang="scss">
  281. .scroll-area {
  282. height: calc(100vh - 294rpx - var(--status-bar-height));
  283. overflow-anchor: auto;
  284. }
  285. .settlement_tab {
  286. position: relative;
  287. background: #354054;
  288. .settlement_tab_search {
  289. position: fixed;
  290. width: 10vw;
  291. height: 98rpx;
  292. line-height: 98rpx;
  293. text-align: center;
  294. font-size: 38rpx;
  295. top:0;
  296. right: 0rpx;
  297. color: rgba(255, 255, 255, 1);
  298. z-index: 444;
  299. background: #354054;
  300. }
  301. .settlement_tab_shaixuan {
  302. position: fixed;
  303. width: 10vw;
  304. height: 98rpx;
  305. line-height: 98rpx;
  306. text-align: center;
  307. top:0;
  308. right:10vw;
  309. font-size: 38rpx;
  310. color: rgba(255, 255, 255, 1);
  311. z-index: 444;
  312. background: #354054;
  313. }
  314. }
  315. .settlement_card {
  316. position: relative;
  317. .settlement_card_left {
  318. .settlement_card_left_name {
  319. font-size: 28rpx;
  320. color: #333333;
  321. }
  322. .settlement_card_left_text1 {
  323. font-size: 24rpx;
  324. color: #888888;
  325. }
  326. .settlement_card_left_text2 {
  327. font-size: 26rpx;
  328. color: #888888;
  329. }
  330. }
  331. .settlement_card_right {
  332. text-align: right;
  333. .settlement_card_right_icon {
  334. width: 22rpx;
  335. height: 22rpx;
  336. font-size: 22rpx;
  337. margin-right: 5rpx;
  338. color: #007AFF;
  339. }
  340. .settlement_card_right_state {
  341. font-size: 25rpx;
  342. transform: scale(0.8);
  343. color: #999999;
  344. }
  345. .settlement_card_right_image {
  346. width: 70rpx;
  347. height: 70rpx;
  348. min-width: 70rpx;
  349. border-radius: 50%;
  350. // border: 2rpx solid rgba(207, 207, 207, 1);
  351. // background: #007AFF;
  352. }
  353. .settlement_card_right_name {
  354. font-size: 24rpx;
  355. color: #555555;
  356. }
  357. }
  358. }
  359. .settlement_card_line_1 {
  360. border-left: 10rpx solid #FDD711;
  361. }
  362. .settlement_card_line_2 {
  363. border-left: 10rpx solid #25B5FD;
  364. }
  365. .settlement_card_line_3 {
  366. border-left: 10rpx solid #3CDF58;
  367. }
  368. .settlement_card_line_4 {
  369. border-left: 10rpx solid #77848C;
  370. }
  371. .state_detail {
  372. margin-left: 40rpx;
  373. margin-bottom: 40rpx;
  374. view {
  375. font-size: 28rpx;
  376. padding: 0 30rpx;
  377. }
  378. .state_square_1 {
  379. border-left: 20rpx solid #FDD711;
  380. }
  381. .state_square_2 {
  382. border-left: 20rpx solid #25B5FD;
  383. }
  384. .state_square_3 {
  385. border-left: 20rpx solid #3CDF58;
  386. }
  387. .state_square_4 {
  388. border-left: 20rpx solid #77848C;
  389. }
  390. }
  391. </style>