index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  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. areaTimeChoose:2,
  95. };
  96. },
  97. mounted() {
  98. uni.hideTabBar();
  99. // this.dataList = [];
  100. // this.getMenu();
  101. },
  102. onShow() {
  103. // this.changeState(this.chooseState);
  104. this.dataList = [];
  105. console.log(123)
  106. this.getMenu();
  107. },
  108. onHide() {
  109. },
  110. methods: {
  111. getMenu(){
  112. uni.getStorage({
  113. key:'menu',
  114. success:(res)=>{
  115. console.log(res.data)
  116. if(res.data.indexOf('105')>-1){
  117. this.hideStateTab=false;
  118. this.stateTab=1;
  119. }else{
  120. this.hideStateTab=true;
  121. this.stateTab=0;
  122. }
  123. var beginDate = '',
  124. endDate = '';
  125. var end = new Date(),start = new Date();
  126. var num = start.getDay();
  127. if (num == 0) {
  128. num = 7;
  129. }
  130. start.setTime(start.getTime() - 3600 * 1000 * 24 * (num - 1));
  131. end.setTime(end.getTime() + 3600 * 1000 * 24 * (7 - num));
  132. beginDate = start.getFullYear() + '-' + (start.getMonth() + 1) + '-' + start.getDate();
  133. endDate = end.getFullYear() + '-' + (end.getMonth() + 1) + '-' + end.getDate();
  134. this.searchDate({beginDate:beginDate,endDate:endDate});
  135. }
  136. })
  137. },
  138. searchDate(data) {
  139. this.startTime = data.beginDate;
  140. this.endTime = data.endDate;
  141. this.dataList = [];
  142. console.log('空数组',this.dataList,data)
  143. this.pageNum = 1;
  144. if (this.stateTab == 0) {
  145. this.getData(this.confirmState);
  146. } else {
  147. this.getWeddingData(this.confirmState);
  148. }
  149. },
  150. changeTab(data) {
  151. this.stateTab = data;
  152. this.changeState();
  153. },
  154. changeState(idx) {
  155. this.chooseState = idx;
  156. this.pageNum = 1;
  157. this.dataList = [];
  158. var confirmState = '';
  159. this.scrollTop = 0;
  160. if (idx == 1) {
  161. confirmState = '03'
  162. } else if (idx == 2) {
  163. confirmState = '04'
  164. } else if (idx == 3) {
  165. confirmState = '01'
  166. } else if (idx == 4) {
  167. confirmState = '02'
  168. }
  169. this.confirmState = confirmState;
  170. if (this.stateTab == 0)
  171. this.getData(confirmState)
  172. else
  173. this.getWeddingData(confirmState);
  174. },
  175. getData(confirmState) {
  176. var houseTypeIds = uni.getStorageSync('searchField') || [];
  177. this.$axios.post('app/order/orderClearList', {
  178. "confirmState": confirmState,
  179. "storeId": uni.getStorageSync('storeId'),
  180. "pageNum": this.pageNum,
  181. "startTime": this.startTime,
  182. "endTime": this.endTime,
  183. "houseTypeIds": houseTypeIds,
  184. "pageSize": 10
  185. }).then(res => {
  186. console.log('普通', res)
  187. this.total = res.data.total;
  188. this.dataList = this.dataList.concat(res.data.list);
  189. this.showLoading = false;
  190. }).catch(err => {
  191. this.showLoading = false;
  192. this.$refs.uToast.error(err.msg)
  193. })
  194. },
  195. getWeddingData(confirmState) {
  196. var houseTypeIds = uni.getStorageSync('searchField') || [];
  197. this.$axios.post('app/wedding/orderWeddingList', {
  198. "confirmState": confirmState,
  199. "storeId": uni.getStorageSync('storeId'),
  200. "pageNum": this.pageNum,
  201. "startTime": this.startTime,
  202. "endTime": this.endTime,
  203. "houseTypeIds": houseTypeIds,
  204. "pageSize": 10
  205. }).then(res => {
  206. console.log('婚庆', res)
  207. this.total = res.data.total;
  208. this.dataList = this.dataList.concat(res.data.list);
  209. this.showLoading = false;
  210. }).catch(err => {
  211. this.$refs.uToast.error(err.msg);
  212. this.showLoading = false;
  213. })
  214. },
  215. gotoDetail(id) {
  216. uni.navigateTo({
  217. url: '../detail/index?type=' + this.stateTab + '&id=' + id+'&idx='+this.chooseState,
  218. success: res => {},
  219. fail: () => {},
  220. complete: () => {}
  221. });
  222. },
  223. gotoSearchPage() {
  224. if (this.stateTab == 0)
  225. uni.navigateTo({
  226. url: '../../search/index?type=2',
  227. success: res => {},
  228. fail: () => {},
  229. complete: () => {}
  230. });
  231. else {
  232. uni.navigateTo({
  233. url: '../../search/index?type=3',
  234. success: res => {},
  235. fail: () => {},
  236. complete: () => {}
  237. });
  238. }
  239. },
  240. //时间段筛选
  241. gotoSearch() {
  242. this.showSearch = true;
  243. },
  244. scroll(e) {
  245. this.scrollTop = e.detail.scrollTop
  246. },
  247. scrolltolower() {
  248. var totalPage = Math.ceil(Number(this.total) / 10)
  249. if (this.pageNum < totalPage) {
  250. this.pageNum++;
  251. this.showLoading = true;
  252. if (this.stateTab == 0) {
  253. this.getData(this.confirmState);
  254. } else {
  255. this.getWeddingData(this.confirmState);
  256. }
  257. }
  258. },
  259. // scrolltoupper(){
  260. // this.pageNum = 1;
  261. // this.dataList=[];
  262. // this.showLoading = true;
  263. // if (this.stateTab == 0) {
  264. // this.getData(this.confirmState);
  265. // } else {
  266. // this.getWeddingData(this.confirmState);
  267. // }
  268. // }
  269. }
  270. }
  271. </script>
  272. <style scoped lang="scss">
  273. .scroll-area {
  274. height: calc(100vh - 294rpx - var(--status-bar-height));
  275. overflow-anchor: auto;
  276. }
  277. .settlement_tab {
  278. position: relative;
  279. background: #354054;
  280. .settlement_tab_search {
  281. position: fixed;
  282. width: 10vw;
  283. height: 98rpx;
  284. line-height: 98rpx;
  285. text-align: center;
  286. font-size: 38rpx;
  287. top:0;
  288. right: 0rpx;
  289. color: rgba(255, 255, 255, 1);
  290. z-index: 444;
  291. background: #354054;
  292. }
  293. .settlement_tab_shaixuan {
  294. position: fixed;
  295. width: 10vw;
  296. height: 98rpx;
  297. line-height: 98rpx;
  298. text-align: center;
  299. top:0;
  300. right:10vw;
  301. font-size: 38rpx;
  302. color: rgba(255, 255, 255, 1);
  303. z-index: 444;
  304. background: #354054;
  305. }
  306. }
  307. .settlement_card {
  308. position: relative;
  309. .settlement_card_left {
  310. .settlement_card_left_name {
  311. font-size: 28rpx;
  312. color: #333333;
  313. }
  314. .settlement_card_left_text1 {
  315. font-size: 24rpx;
  316. color: #888888;
  317. }
  318. .settlement_card_left_text2 {
  319. font-size: 26rpx;
  320. color: #888888;
  321. }
  322. }
  323. .settlement_card_right {
  324. text-align: right;
  325. .settlement_card_right_icon {
  326. width: 22rpx;
  327. height: 22rpx;
  328. font-size: 22rpx;
  329. margin-right: 5rpx;
  330. color: #007AFF;
  331. }
  332. .settlement_card_right_state {
  333. font-size: 25rpx;
  334. transform: scale(0.8);
  335. color: #999999;
  336. }
  337. .settlement_card_right_image {
  338. width: 70rpx;
  339. height: 70rpx;
  340. min-width: 70rpx;
  341. border-radius: 50%;
  342. // border: 2rpx solid rgba(207, 207, 207, 1);
  343. // background: #007AFF;
  344. }
  345. .settlement_card_right_name {
  346. font-size: 24rpx;
  347. color: #555555;
  348. }
  349. }
  350. }
  351. .settlement_card_line_1 {
  352. border-left: 10rpx solid #FDD711;
  353. }
  354. .settlement_card_line_2 {
  355. border-left: 10rpx solid #25B5FD;
  356. }
  357. .settlement_card_line_3 {
  358. border-left: 10rpx solid #3CDF58;
  359. }
  360. .settlement_card_line_4 {
  361. border-left: 10rpx solid #77848C;
  362. }
  363. .state_detail {
  364. margin-left: 40rpx;
  365. margin-bottom: 40rpx;
  366. view {
  367. font-size: 28rpx;
  368. padding: 0 30rpx;
  369. }
  370. .state_square_1 {
  371. border-left: 20rpx solid #FDD711;
  372. }
  373. .state_square_2 {
  374. border-left: 20rpx solid #25B5FD;
  375. }
  376. .state_square_3 {
  377. border-left: 20rpx solid #3CDF58;
  378. }
  379. .state_square_4 {
  380. border-left: 20rpx solid #77848C;
  381. }
  382. }
  383. </style>