seach.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <view class="content">
  3. <!-- 自定义导航 -->
  4. <view class="navbar-box">
  5. <u-navbar title="库存查询" :safeAreaInsetTop="true" @leftClick="leftClick">
  6. </u-navbar>
  7. </view>
  8. <view class="screen-box">
  9. <view class="screen-class">
  10. <u-search
  11. placeholder="搜索"
  12. height="70"
  13. bg-color="#f7f7f7"
  14. v-model="mateName"
  15. @search="search"
  16. @custom="search"></u-search>
  17. </view>
  18. </view>
  19. <mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback" :down="downOption" :up="upOption">
  20. <view v-for="item in dataList" :key="item.id">
  21. <view class="item u-border-bottom">
  22. <view class="name">{{item.mateName}}</view>
  23. <view class="u-tips-color u-m-b-10">规格:{{item.specName}}/{{item.unitName}}</view>
  24. <view class="u-tips-color u-m-b-10">存放仓库:{{filterStoreName(item.storeId)}}</view>
  25. <view class="number">{{item.mateNum}}{{item.unitName}}</view>
  26. </view>
  27. </view>
  28. </mescroll-body>
  29. </view>
  30. </template>
  31. <script>
  32. import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
  33. export default {
  34. mixins: [MescrollMixin], // 使用mixin
  35. components: {
  36. },
  37. data() {
  38. return {
  39. // 下拉刷新的配置(可选, 绝大部分情况无需配置)
  40. downOption: {
  41. },
  42. // 上拉加载的配置(可选, 绝大部分情况无需配置)
  43. upOption: {
  44. page: {
  45. size: 10 // 每页数据的数量,默认10
  46. },
  47. noMoreSize: 5, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  48. empty: {
  49. tip: '暂无相关数据'
  50. }
  51. },
  52. mateName:'',
  53. // 列表数据
  54. dataList: [],
  55. storeList:[],
  56. }
  57. },
  58. onLoad() {
  59. this.getStoreList();
  60. },
  61. computed:{
  62. filterStoreName(){
  63. return function(value){
  64. let v = '';
  65. for (let i = 0; i < this.storeList.length; i++){
  66. // console.log('value',value);
  67. // console.log('value',this.storeList[i]);
  68. let item = this.storeList[i];
  69. if (value == item.value) {
  70. v = item.label;
  71. break;
  72. }
  73. }
  74. return v
  75. }
  76. }
  77. },
  78. methods: {
  79. /*上拉加载的回调*/
  80. upCallback(page) {
  81. let params ={
  82. pageNum:page.num,
  83. pageSize:page.size,
  84. mateName:this.mateName
  85. }
  86. this.$u.api.stockList(params).then(curPageData=>{
  87. console.log('curPageData',curPageData)
  88. //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
  89. // this.mescroll.endSuccess(curPageData.total);
  90. this.mescroll.endBySize(curPageData.rows.length, curPageData.total);
  91. //设置列表数据
  92. if(page.num == 1) this.dataList = []; //如果是第一页需手动制空列表
  93. this.dataList=this.dataList.concat(curPageData.rows); //追加新数据
  94. }).catch((err)=>{
  95. uni.showToast({
  96. title:'链接失败'
  97. });
  98. console.log('err',err)
  99. //联网失败, 结束加载
  100. this.mescroll.endErr();
  101. })
  102. },
  103. /*若希望重新加载列表,只需调用此方法即可(内部会自动page.num=1,再主动触发up.callback)*/
  104. reloadList(){
  105. this.mescroll.resetUpScroll();
  106. },
  107. leftClick() {
  108. let canNavBack = getCurrentPages();
  109. if(canNavBack && canNavBack.length>1) {
  110. uni.navigateBack({
  111. delta: 1
  112. });
  113. } else {
  114. history.back();
  115. }
  116. },
  117. goCheck(item){
  118. this.$u.route({
  119. url: 'pages/check/checkItem/checkItem',
  120. params: {
  121. id: item.id
  122. }
  123. })
  124. console.log('goPutOut',item)
  125. },
  126. search(){
  127. this.mescroll.resetUpScroll();
  128. },
  129. async getStoreList() {
  130. let { code, data, msg} = await this.$u.api.storeList();
  131. if(code === 200) {
  132. this.storeList = data.map(item => {
  133. return {
  134. label: item.text,
  135. value: item.value
  136. }
  137. })
  138. }
  139. },
  140. }
  141. }
  142. </script>
  143. <style lang="scss" scoped>
  144. .item{
  145. margin: 24rpx;
  146. padding-bottom: 24rpx;
  147. .name{
  148. font-size: 34rpx;
  149. margin-bottom: 10rpx;
  150. }
  151. .number{
  152. color: var(--main-color);
  153. font-size: 32rpx;
  154. }
  155. }
  156. </style>