store-material.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <!-- 物料库存 直接出入库 -->
  2. <template>
  3. <view class="container-wrap">
  4. <uni-nav-bar title="物料库存" :status-bar="true" background-color="#3F92F9" color="#FFF">
  5. <view slot="left">
  6. <u-icon name="account-fill" color="#FFF" size="35"></u-icon>
  7. <span style="padding: 0 5rpx;color: #FFFFFF;">{{ userInfo.name }}</span>
  8. </view>
  9. <view slot="right" @tap="$utils.back()">
  10. <span style="color: #FFFFFF;">返回</span>
  11. </view>
  12. </uni-nav-bar>
  13. <view class="container">
  14. <scroll-view
  15. scroll-y="true"
  16. style="height: calc(100vh - var(--status-bar-height) - 44px);"
  17. @scrolltolower="loadMore"
  18. @refresherrefresh="onRefresh"
  19. refresher-background="transparent"
  20. :refresher-triggered="triggered"
  21. :refresher-enabled="true">
  22. <view class="content">
  23. <!-- 卡片列表 -->
  24. <view class="card" v-for="(item, index) in data" :key="index">
  25. <view class="row">
  26. <view class="col">
  27. <text class="label">物料编码:</text>
  28. <text class="value">{{ item.materialCode }}</text>
  29. </view>
  30. </view>
  31. <view class="row">
  32. <view class="col">
  33. <text class="label">物料名称:</text>
  34. <text class="value">{{ item.materialName }}</text>
  35. </view>
  36. </view>
  37. <view class="row">
  38. <view class="col">
  39. <text class="label">库存:</text>
  40. <text class="value">{{ item.quantity }}</text>
  41. </view>
  42. </view>
  43. <view class="row">
  44. <view class="col">
  45. <text class="label">单位:</text>
  46. <text class="value">{{ item.unitName }}</text>
  47. </view>
  48. <view class="col">
  49. <u-button throttleTime="300" type="primary" size="mini" style="margin-right: 0;" @click="storeHandle(1, item)">出库</u-button>
  50. <u-modal v-model="outShow" :title-style="{color: 'red'}">
  51. <view class="slot-content">
  52. 出库
  53. <input type="text" value="" />
  54. </view>
  55. </u-modal>
  56. </view>
  57. </view>
  58. <view class="row">
  59. <view class="col">
  60. <text class="label">规格:</text>
  61. <text class="value">{{ item.spec }}</text>
  62. </view>
  63. <view class="col">
  64. <u-button throttleTime="300" type="success" size="mini" style="margin-right: 0;" @click="storeHandle(0, item)">入库</u-button>
  65. </view>
  66. </view>
  67. </view>
  68. </view>
  69. <u-loadmore :status="loadStatus" @loadmore="loadMore" style="margin-bottom: 30rpx;" />
  70. </scroll-view>
  71. </view>
  72. <uni-popup ref="popup">
  73. <view class="popup-content">
  74. <view class="title">提示</view>
  75. <view class="content">
  76. <view class="row">
  77. <view class="col">
  78. <view class="label">数量:</view>
  79. <view class="value">
  80. <u-input v-model="form.quantity" :border="true" />
  81. </view>
  82. </view>
  83. </view>
  84. <view class="row">
  85. <view class="col">
  86. <view class="label">领料人:</view>
  87. <view class="value">
  88. <select-lay
  89. :value="form.operateUser"
  90. placeholder="默认当前用户"
  91. :options="userList"
  92. @selectitem="selectitem" :zindex="9999">
  93. </select-lay>
  94. </view>
  95. </view>
  96. </view>
  97. </view>
  98. <view class="footer flex-between">
  99. <u-button throttleTime="300" type="primary" size="mini" style="width: 200rpx;">提交</u-button>
  100. <u-button throttleTime="300" size="mini" style="width: 200rpx;">取消</u-button>
  101. </view>
  102. </view>
  103. </uni-popup>
  104. </view>
  105. </template>
  106. <script>
  107. export default {
  108. data() {
  109. return {
  110. userList: [],
  111. data: [],
  112. outShow: false,
  113. inShow: false,
  114. form: {
  115. inOutType: 0,
  116. materialCode: '',
  117. operateUser: '',
  118. quantity: 0,
  119. remark: ''
  120. }
  121. };
  122. },
  123. methods:{
  124. /* 选择领料人 */
  125. selectitem(index, item) {
  126. this.form.operateUser = item.value;
  127. },
  128. storeHandle (type, item) {
  129. this.inOutType = type
  130. this.materialCode = item.materialCode
  131. this.$refs.popup.open('center')
  132. },
  133. /* 获取用户列表 */
  134. getUserPageList() {
  135. this.$http.GetUserPageList({
  136. pageIndex: 1,
  137. pageSize: 999
  138. }).then(res => {
  139. if(res.code == 0) {
  140. let list = res.result.list.map(item => {
  141. return {
  142. label: item.realName,
  143. value: item.id
  144. }
  145. })
  146. this.userList = list
  147. }
  148. })
  149. },
  150. // 获取全部数据
  151. getList() {
  152. this.$http.GetStockDataPageList({
  153. pageIndex: this.pageIndex,
  154. pageSize: this.pageSize
  155. }).then(res => {
  156. console.log(res)
  157. if(res.code == 0) {
  158. let data = res.result
  159. if(data.isLastPage) {
  160. this.loadStatus = 'nomore'
  161. }else {
  162. this.loadStatus = 'loadmore'
  163. }
  164. if(data.totalCount > 0) {
  165. this.data.push(...data.list)
  166. }
  167. }
  168. })
  169. }
  170. },
  171. onLoad(option) {
  172. this.getList()
  173. this.getUserPageList()
  174. }
  175. }
  176. </script>
  177. <style lang="scss" scoped>
  178. .container-wrap{
  179. .container {
  180. .content {
  181. padding: 20rpx;
  182. .card {
  183. position: relative;
  184. margin-bottom: 20rpx;
  185. padding: 20rpx 30rpx;
  186. border-radius: 10rpx;
  187. background-color: #FFFFFF;
  188. box-shadow: 0 1px 6px -2px rgba(0, 0, 0, 0.4);
  189. &:last-child {
  190. margin-bottom: 0;
  191. }
  192. .row {
  193. align-items: flex-start;
  194. /deep/span {
  195. line-height: 25px;
  196. }
  197. }
  198. }
  199. }
  200. }
  201. .popup-content {
  202. position: relative;
  203. padding: 70rpx 0;
  204. width: 600rpx;
  205. height: 400rpx;
  206. overflow: auto;
  207. background-color: #FFFFFF;
  208. border-radius: 10rpx;
  209. .title {
  210. position: absolute;
  211. left: 0;
  212. top: 0;
  213. padding: 20rpx 0;
  214. width: 100%;
  215. font-size: 30rpx;
  216. font-weight: bold;
  217. text-align: center;
  218. }
  219. .content {
  220. padding: 0 20rpx;
  221. height: 100%;
  222. .row {
  223. align-items: center;
  224. .col {
  225. align-items: center;
  226. .label {
  227. width: 120rpx;
  228. }
  229. }
  230. }
  231. }
  232. .footer {
  233. padding: 10rpx 0;
  234. width: 100%;
  235. position: absolute;
  236. left: 0;
  237. bottom: 0;
  238. }
  239. }
  240. }
  241. </style>