applylist.vue 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <template>
  2. <view class="content">
  3. <!-- 自定义导航 -->
  4. <view class="navbar-box">
  5. <u-navbar title="申请记录" :safeAreaInsetTop="true" @leftClick="leftClick"></u-navbar>
  6. </view>
  7. <u-tabs :list="tabList" :is-scroll="false" height="108" bar-width="100" :current="tabCurrent" @change="tabChange"></u-tabs>
  8. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  9. <view class="item u-tips-color" @click="itemClick(item.id)" v-for="item in dataList" :key="item.id">
  10. <view class="u-flex u-row-between">
  11. <view class="left">
  12. <view class="name u-line-1 u-m-b-10">{{item.mateNames}}</view>
  13. <view class="">申请时间:</view>
  14. <view class="">{{item.createTime}}</view>
  15. </view>
  16. <view class="right u-text-center">
  17. <view class="u-m-b-10">{{filterPaymentName(item.storeOutType)}}</view>
  18. <view class="">联系人:{{item.contactPerson}}</view>
  19. </view>
  20. <view class=""></view>
  21. </view>
  22. </view>
  23. </mescroll-body>
  24. </view>
  25. </template>
  26. <script>
  27. import {otherApiUrl} from '@/common/apiurl.js';
  28. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  29. export default {
  30. mixins: [MescrollMixin], // 使用mixin
  31. components: {
  32. },
  33. data() {
  34. return {
  35. // 下拉刷新的配置(可选, 绝大部分情况无需配置)
  36. downOption: {
  37. },
  38. // 上拉加载的配置(可选, 绝大部分情况无需配置)
  39. upOption: {
  40. page: {
  41. size: 10 // 每页数据的数量,默认10
  42. },
  43. noMoreSize: 5, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  44. empty: {
  45. tip: '暂无相关数据'
  46. }
  47. },
  48. // 列表数据
  49. dataList: [],
  50. tabCurrent:0,
  51. tabList:[
  52. {name:'申请中',status:'1'},
  53. {name:'已通过',status:'2'},
  54. {name:'已驳回',status:'3'},
  55. ],
  56. paymentList:[],
  57. }
  58. },
  59. onLoad() {
  60. this.getpaymentList();
  61. },
  62. computed:{
  63. filterPaymentName(){
  64. return function(value){
  65. let v = '';
  66. for (let i = 0; i < this.paymentList.length; i++){
  67. // console.log('value',value);
  68. // console.log('value',this.paymentList[i]);
  69. let item = this.paymentList[i];
  70. if (value == item.value) {
  71. v = item.label;
  72. break;
  73. }
  74. }
  75. return v
  76. }
  77. }
  78. },
  79. methods: {
  80. /*上拉加载的回调*/
  81. upCallback(page) {
  82. let params ={
  83. pageNum:page.num,
  84. pageSize:page.size,
  85. askforStatus:this.askforStatus||'1',
  86. }
  87. this.$u.api.applyList(params).then(curPageData=>{
  88. // console.log('curPageData',curPageData)
  89. //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
  90. // this.mescroll.endSuccess(curPageData.total);
  91. this.mescroll.endBySize(curPageData.rows.length, curPageData.total);
  92. //设置列表数据
  93. if(page.num == 1) this.dataList = []; //如果是第一页需手动制空列表
  94. this.dataList=this.dataList.concat(curPageData.rows); //追加新数据
  95. }).catch((err)=>{
  96. uni.showToast({
  97. title:'链接失败'
  98. });
  99. console.log('err',err)
  100. //联网失败, 结束加载
  101. this.mescroll.endErr();
  102. })
  103. },
  104. /*若希望重新加载列表,只需调用此方法即可(内部会自动page.num=1,再主动触发up.callback)*/
  105. reloadList(){
  106. this.mescroll.resetUpScroll();
  107. },
  108. leftClick() {
  109. let canNavBack = getCurrentPages();
  110. if(canNavBack && canNavBack.length>1) {
  111. uni.navigateBack({
  112. delta: 1
  113. });
  114. } else {
  115. history.back();
  116. }
  117. },
  118. // 切换菜单
  119. tabChange(index) {
  120. this.tabCurrent = index;
  121. this.askforStatus = this.tabList[index].status;
  122. this.reloadList()
  123. },
  124. async getpaymentList() {
  125. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'payment')
  126. if(code === 200) {
  127. this.paymentList = data.map(item => {
  128. return {
  129. label: item.dictLabel,
  130. value: item.dictValue
  131. }
  132. })
  133. }
  134. },
  135. itemClick(id){
  136. console.log('itemClick',id);
  137. this.$u.route({
  138. url: 'pages/apply/applyItem/applyItem',
  139. params: {
  140. id: id,
  141. askforStatus:this.askforStatus||'1'
  142. }
  143. })
  144. }
  145. }
  146. }
  147. </script>
  148. <style lang="scss" scoped>
  149. .item{
  150. margin: 24rpx;
  151. padding: 24rpx;
  152. border: 1px solid #ddd;
  153. border-radius: 10rpx;
  154. .name{
  155. color: #444;
  156. font-size: 30rpx;
  157. }
  158. .left{
  159. max-width: 240px;
  160. flex: 1;
  161. }
  162. .right{
  163. }
  164. }
  165. </style>