list.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <view class="content">
  3. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  4. <view class="wrap">
  5. <view class="item-title">物资信息</view>
  6. <view class="list">
  7. <view class="item u-flex u-row-between" v-for="item in dataList" :key="item.id">
  8. <view class="left u-flex">
  9. <image :src="item.imgUrl" mode="aspectFill"></image>
  10. <view class="text">
  11. <view class="name u-m-b-10">{{item.mateName}}</view>
  12. <view class="u-tips-color">规格:{{item.specCode}}{{filterUnitName(item.unitCode)}}</view>
  13. </view>
  14. </view>
  15. <view class="right">
  16. <view class="" v-if="askforStatus==1" style="color: #003bff;">
  17. {{item.askforNum}}{{filterUnitName(item.unitCode)}}
  18. </view>
  19. </view>
  20. </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. id:'',
  36. // 下拉刷新的配置(可选, 绝大部分情况无需配置)
  37. downOption: {
  38. },
  39. // 上拉加载的配置(可选, 绝大部分情况无需配置)
  40. upOption: {
  41. page: {
  42. size: 10 // 每页数据的数量,默认10
  43. },
  44. noMoreSize: 5, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  45. empty: {
  46. tip: '暂无相关数据'
  47. }
  48. },
  49. // 列表数据
  50. dataList: [],
  51. unitNameList:[],
  52. paymentList:[],
  53. askforStatus:'',
  54. }
  55. },
  56. onLoad(page) {
  57. this.id = page.id;
  58. this.askforStatus = page.askforStatus;
  59. this.unitNameDict();
  60. this.getpaymentList();
  61. },
  62. computed:{
  63. filterUnitName(){
  64. return function(value){
  65. let v = '';
  66. for (let i = 0; i < this.unitNameList.length; i++){
  67. // console.log('value',value);
  68. // console.log('value',this.unitNameList[i]);
  69. let item = this.unitNameList[i];
  70. if (value == item.value) {
  71. v = item.label;
  72. break;
  73. }
  74. }
  75. return v
  76. }
  77. },
  78. filterPaymentName(){
  79. return function(value){
  80. let v = '';
  81. for (let i = 0; i < this.paymentList.length; i++){
  82. console.log('value',value);
  83. console.log('value',this.paymentList[i]);
  84. let item = this.paymentList[i];
  85. if (value == item.value) {
  86. v = item.label;
  87. break;
  88. }
  89. }
  90. return v
  91. }
  92. }
  93. },
  94. methods: {
  95. /*上拉加载的回调*/
  96. upCallback(page) {
  97. let params ={
  98. pageNum:page.num,
  99. pageSize:page.size,
  100. askfoId:this.id,
  101. }
  102. this.$u.api.applyDetailsProduct(params).then(curPageData=>{
  103. console.log('curPageData',curPageData)
  104. //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
  105. // this.mescroll.endSuccess(curPageData.data.total);
  106. this.mescroll.endBySize(curPageData.rows.length, curPageData.total);
  107. //设置列表数据
  108. if(page.num == 1) this.dataList = []; //如果是第一页需手动制空列表
  109. this.dataList=this.dataList.concat(curPageData.rows); //追加新数据
  110. }).catch((err)=>{
  111. uni.showToast({
  112. title:'链接失败'
  113. });
  114. console.log('err',err)
  115. //联网失败, 结束加载
  116. this.mescroll.endErr();
  117. })
  118. },
  119. /*若希望重新加载列表,只需调用此方法即可(内部会自动page.num=1,再主动触发up.callback)*/
  120. reloadList(){
  121. this.mescroll.resetUpScroll();
  122. },
  123. async unitNameDict() {
  124. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'goods_unit_name')
  125. if(code === 200) {
  126. this.unitNameList = data.map(item => {
  127. return {
  128. label: item.dictLabel,
  129. value: item.dictValue
  130. }
  131. })
  132. }
  133. },
  134. async getpaymentList() {
  135. let { code, data, msg} = await this.$u.get(otherApiUrl.getDict + 'payment')
  136. if(code === 200) {
  137. this.paymentList = data.map(item => {
  138. return {
  139. label: item.dictLabel,
  140. value: item.dictValue
  141. }
  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. .left image {
  155. width: 120rpx;
  156. height: 120rpx;
  157. border-radius: 8rpx;
  158. margin-right: 12rpx;
  159. }
  160. }
  161. .info-item{
  162. margin-bottom: 10rpx;
  163. }
  164. </style>