storage.vue 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <base-page>
  3. <view class="goodslist">
  4. <view class="goodslist-box">
  5. <view class="goodslist-left">
  6. <view class="goods-title">
  7. 入库单查询
  8. <text class="iconfont icongengduo1"></text>
  9. </view>
  10. <view class="goods-search">
  11. <view class="search">
  12. <text class="iconfont icon31sousuo"></text>
  13. <input type="text" v-model="search_text" @input="search" placeholder="搜索入库单号" />
  14. </view>
  15. </view>
  16. <scroll-view scroll-y="true" class="goods-list-scroll" :show-scrollbar="false" @scrolltolower="getListData">
  17. <view
  18. class="item"
  19. @click="getDetailData(item.document_id, index)"
  20. v-for="(item, index) in list"
  21. :key="index"
  22. :class="{ itemhover: selectGoodsKeys == index }"
  23. >
  24. <view class="title">
  25. <view>{{ item.document_no }}</view>
  26. <view>{{ item.type_name }}</view>
  27. </view>
  28. <view class="other-info">
  29. <view>¥{{ item.document_money }}</view>
  30. <view>{{ item.operater_name }}</view>
  31. <view>{{ $util.timeFormat(item.create_time) }}</view>
  32. </view>
  33. </view>
  34. <view class="notYet" v-if="!list.length">暂无数据</view>
  35. </scroll-view>
  36. <button type="default" class="add-wastage" v-if="storeInfo && storeInfo.stock_type == 'store'" @click="add()">添加入库单</button>
  37. </view>
  38. <view class="goodslist-right">
  39. <view class="goods-title">入库单详情</view>
  40. <view class="order-information" v-if="Object.keys(detail).length">
  41. <view class="order-status">基本信息</view>
  42. <view class="order-types">
  43. <view class="type type1">
  44. <view>制单人:</view>
  45. <view>{{ detail.operater_name || '--' }}</view>
  46. </view>
  47. <view class="type type1">
  48. <view>制单时间:</view>
  49. <view class="message">{{ detail.create_time }}</view>
  50. </view>
  51. <view class="type type1">
  52. <view>单据类型:</view>
  53. <view class="message">{{ detail.type_name }}</view>
  54. </view>
  55. </view>
  56. <view class="goods-info">
  57. <view class="title">商品明细</view>
  58. <view class="table">
  59. <view class="table-th table-all">
  60. <view class="table-td" style="width:45%;justify-content: flex-start;">商品名称/规格/条形码</view>
  61. <view class="table-td" style="width:15%">单位</view>
  62. <view class="table-td" style="width:10%">数量</view>
  63. <view class="table-td" style="width:15%">单价(元)</view>
  64. <view class="table-td" style="width:15%;justify-content: flex-end;">金额(元)</view>
  65. </view>
  66. <view class="table-tr table-all" v-for="(item, index) in detail.goods_sku_list_array" :key="index">
  67. <view class="table-td table-goods-name" style="width:45%;justify-content: flex-start;">
  68. <image :src="$util.img(item.goods_sku_img)" mode="aspectFill"></image>
  69. <text class="multi-hidden">{{ item.goods_sku_name }}</text>
  70. </view>
  71. <view class="table-td" style="width:15%">{{ item.goods_unit }}</view>
  72. <view class="table-td" style="width:10%">{{ item.goods_num }}</view>
  73. <view class="table-td" style="width:15%">{{ item.goods_price }}</view>
  74. <view class="table-td" style="width:15%;justify-content: flex-end;">{{ parseFloat(item.goods_sum).toFixed(2) }}</view>
  75. </view>
  76. </view>
  77. <view class="total-money-num">
  78. <view class="box">
  79. <view>商品种类</view>
  80. <view class="money">{{ detail.goods_count }}种</view>
  81. </view>
  82. <view class="box">
  83. <view>商品数量</view>
  84. <view class="money">{{ detail.goods_piece }}{{ detail.goods_unit }}</view>
  85. </view>
  86. <view class="box total">
  87. <view>合计金额</view>
  88. <view class="money">¥{{ parseFloat(detail.goods_total_price).toFixed(2) }}</view>
  89. </view>
  90. </view>
  91. </view>
  92. </view>
  93. <block v-else><image class="cart-empty" :src="$util.img('public/uniapp/cashier/goods_empty.png')" mode="widthFix"></image></block>
  94. </view>
  95. </view>
  96. </view>
  97. </base-page>
  98. </template>
  99. <script>
  100. export default {
  101. data() {
  102. return {
  103. selectGoodsKeys: 0,
  104. //获取订单的页数
  105. page: 1,
  106. //每次获取订单的条数
  107. page_size: 9,
  108. // 订单搜索是用到的数据
  109. search_text: '',
  110. //初始时加载详情数据判断
  111. one_judge: true,
  112. // 订单列表数据
  113. list: [],
  114. //订单详情数据
  115. detail: {}
  116. };
  117. },
  118. onLoad(option) {
  119. if (option.id) {
  120. this.search_text = option.id;
  121. }
  122. this.getListData();
  123. },
  124. methods: {
  125. // 搜索
  126. search() {
  127. this.page = 1;
  128. this.list = [];
  129. this.one_judge = true;
  130. this.getListData();
  131. },
  132. /**
  133. * 获取订单列表
  134. */
  135. getListData() {
  136. this.$api.sendRequest({
  137. url: '/stock/storeapi/storage/lists',
  138. data: {
  139. page: this.page,
  140. page_size: this.page_size,
  141. search_text: this.search_text
  142. },
  143. success: res => {
  144. if (res.data.list.length == 0 && this.one_judge) {
  145. this.detail = {};
  146. this.one_judge = false;
  147. }
  148. if (res.code >= 0 && res.data.list.length != 0) {
  149. this.page += 1;
  150. if (this.list.length == 0) {
  151. this.list = res.data.list;
  152. } else {
  153. this.list = this.list.concat(res.data.list);
  154. }
  155. //初始时加载一遍详情数据
  156. if (this.one_judge) {
  157. this.getDetailData(this.list[0].document_id);
  158. }
  159. }
  160. }
  161. });
  162. },
  163. /**
  164. * 获取订单详情数据
  165. */
  166. getDetailData(document_id, keys = 0) {
  167. this.selectGoodsKeys = keys;
  168. this.type = 'detail';
  169. this.$api.sendRequest({
  170. url: '/stock/storeapi/storage/detail',
  171. data: {
  172. document_id
  173. },
  174. success: res => {
  175. if (res.code >= 0) {
  176. this.detail = res.data;
  177. this.$forceUpdate();
  178. this.one_judge = false;
  179. }
  180. }
  181. });
  182. },
  183. add(data) {
  184. this.$util.redirectTo('/pages/stock/stockin');
  185. }
  186. }
  187. };
  188. </script>
  189. <style scoped lang="scss">
  190. @import './public/css/orderlist.scss';
  191. </style>