allocate.vue 6.2 KB

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