index.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <template>
  2. <view class="mainBox">
  3. <uni-nav-bar fixed="true" statusBar="true" left-icon="back" title="盘点工单" @clickLeft="back"></uni-nav-bar>
  4. <template>
  5. <view class="tab-title">
  6. <view v-for="(item, index) in tabList" :key="index" class="tab-item" v-text="item.label" :class="index === pickTabIndex ? 'active' : ''" @click="changeChartsTab(index)"></view>
  7. </view>
  8. </template>
  9. <u-list v-if="listData.length > 0" @scrolltolower="scrolltolower" class="z_list">
  10. <view class="list-wrap" v-for="(item, index) in listData" :key="index" v-show="listData.length !== 0">
  11. <CardTime :time="item.createTime" />
  12. <KdCard :title="item.code" :status="true" :item="item" type="check" />
  13. </view>
  14. </u-list>
  15. <view v-else class="no_data">
  16. <u-empty mode="data"></u-empty>
  17. </view>
  18. </view>
  19. </template>
  20. <script>
  21. import { post } from '@/utils/api.js'
  22. import { getPlanOrderList } from '@/api/warehouseManagement'
  23. import KdCard from './components/KdCard/index.vue'
  24. import CardTime from './components/CardTime.vue'
  25. // import dictMixins from '@/mixins/dictMixins'
  26. // let [page, size, isEnd] = [1, 10, true]
  27. export default {
  28. // mixins: [dictMixins],
  29. components: {
  30. KdCard,
  31. CardTime
  32. },
  33. data() {
  34. return {
  35. page: 1,
  36. size: 10,
  37. isEnd: true,
  38. tabList: [
  39. {
  40. value: '',
  41. label: '全部'
  42. },
  43. {
  44. value: 0,
  45. label: '待处理'
  46. },
  47. {
  48. value: 1,
  49. label: '执行中'
  50. },
  51. {
  52. value: 2,
  53. label: '已完成'
  54. }
  55. ],
  56. pickTabIndex: 0, //Tab选择
  57. listData: []
  58. }
  59. },
  60. onLoad() {
  61. // this.requestDict('物品类型')
  62. this.getFirstList()
  63. },
  64. //加载更多
  65. // onReachBottom() {
  66. // if (this.isEnd) {
  67. // return
  68. // }
  69. // // 显示加载图标
  70. // this.getMoreLists()
  71. // },
  72. methods: {
  73. scrolltolower() {
  74. console.log('scrolltolower-----------')
  75. if (this.isEnd) {
  76. return
  77. }
  78. // 显示加载图标
  79. this.getMoreLists()
  80. },
  81. //首次加载
  82. getFirstList() {
  83. this.page = 1
  84. this.isEnd = true
  85. this.getList()
  86. },
  87. //获取更多列表
  88. getMoreLists() {
  89. //获取更多数据
  90. this.page++
  91. this.getList()
  92. },
  93. //获取数据列表
  94. getList() {
  95. uni.showLoading({
  96. title: '加载中'
  97. })
  98. let data = {
  99. pageNum: this.page,
  100. size: this.size,
  101. status: this.tabList[this.pickTabIndex].value
  102. }
  103. getPlanOrderList(data)
  104. .then(res => {
  105. let data = res.list
  106. let pageTotal = res.count
  107. if (this.page === 1) {
  108. this.listData = data
  109. } else {
  110. this.listData = this.listData.concat(data)
  111. }
  112. this.listData.length < pageTotal ? (this.isEnd = false) : (this.isEnd = true)
  113. })
  114. .finally(() => {
  115. uni.hideLoading()
  116. })
  117. //2 - 99 [已完成]
  118. // let par = this.URLSearchParams(Pagination)
  119. // post(this.apiUrl + '/workOrder/getWorkOrderList?' + par, data)
  120. // .then(res => {
  121. // let data = res.data.records
  122. // let pageTotal = res.data.pages
  123. // if (page === 1) {
  124. // this.listData = data
  125. // } else {
  126. // data.forEach(element => {
  127. // this.listData.push(element)
  128. // })
  129. // }
  130. // page < pageTotal ? (isEnd = false) : (isEnd = true)
  131. // })
  132. // .then(() => {
  133. // uni.hideLoading()
  134. // })
  135. },
  136. //切换菜单Tab
  137. changeChartsTab(index) {
  138. this.pickTabIndex = index
  139. this.getFirstList()
  140. },
  141. // 跳转盘点清单
  142. goInventory(item) {
  143. let par = this.URLSearchParams({
  144. id: item.id,
  145. status: item.status
  146. })
  147. uni.navigateTo({
  148. url: '/pages/warehouse/workOrder/inventory/inventory?' + par
  149. })
  150. }
  151. }
  152. }
  153. </script>
  154. <style lang="scss" scoped>
  155. .mainBox {
  156. height: 100vh;
  157. display: flex;
  158. flex-direction: column;
  159. }
  160. /*Tab条*/
  161. .tab-title {
  162. width: 100%;
  163. display: flex;
  164. justify-content: space-between;
  165. align-items: center;
  166. height: $tab-height;
  167. line-height: $tab-height;
  168. background-color: #ffffff;
  169. border-bottom: 1px solid #f2f2f2;
  170. box-sizing: border-box;
  171. .tab-item {
  172. width: 25%;
  173. text-align: center;
  174. font-size: 32rpx;
  175. color: $uni-text-color-grey;
  176. }
  177. .tab-item.active {
  178. color: $j-primary-border-green;
  179. border-bottom: 1px solid $j-primary-border-green;
  180. font-weight: bold;
  181. }
  182. .tab-item.filter {
  183. flex: 1;
  184. padding: 0px 30rpx;
  185. .uni-icons {
  186. display: flex;
  187. padding-top: 5px;
  188. font-weight: bold;
  189. }
  190. }
  191. }
  192. .no_data {
  193. flex: 1;
  194. display: flex;
  195. justify-content: center;
  196. align-items: center;
  197. }
  198. .z_list {
  199. flex: 1;
  200. overflow: hidden;
  201. }
  202. /*列表信息*/
  203. .list-wrap {
  204. padding: 10rpx;
  205. background-color: $page-bg;
  206. // .item {
  207. // display: flex;
  208. // justify-content: space-between;
  209. // padding: 10rpx;
  210. // color: rgb(170, 170, 170);
  211. // font-size: 28rpx;
  212. // word-break: break-all;
  213. // .title {
  214. // color: #333333;
  215. // font-size: 28rpx;
  216. // }
  217. // .state {
  218. // font-size: 12px;
  219. // display: inline;
  220. // padding: 2px 5px;
  221. // border-radius: 10px;
  222. // }
  223. // .asset {
  224. // font-size: 12px;
  225. // color: #7f7f7f;
  226. // background: #f1f1f1;
  227. // padding: 2px 5px;
  228. // border-radius: 2px;
  229. // }
  230. // }
  231. & + .list-wrap {
  232. border-top: 1px solid rgba(242, 242, 242, 1);
  233. }
  234. }
  235. </style>