index.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <template>
  2. <div class="productWeido pagePadding" style="padding: 0">
  3. <div
  4. v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
  5. >
  6. <ex-table
  7. v-loading="false"
  8. :table="table"
  9. :data="tableData"
  10. :columns="columns"
  11. :page="pageInfo"
  12. :size="size"
  13. @page-curr-change="handlePageChange"
  14. @page-size-change="handleSizeChange"
  15. @screen-reset="
  16. pageInfo.curr = 1;
  17. parmValue.page = 1;
  18. searchList();
  19. "
  20. @screen-submit="
  21. pageInfo.curr = 1;
  22. parmValue.page = 1;
  23. searchList();
  24. "
  25. >
  26. <template #table-header="{}">
  27. <div style="width: 100%">
  28. <el-row style="padding: 0 0 0 80px">
  29. <el-col :span="24">
  30. <el-col :span="10">
  31. <el-input
  32. v-model="parmValue.type_code"
  33. :size="searchSize"
  34. placeholder="商品属性编码"
  35. />
  36. </el-col>
  37. <!-- 搜索 -->
  38. <el-col :span="4" style="width: 54px">
  39. <el-button
  40. :size="searchSize"
  41. type="primary"
  42. class="fr"
  43. icon="el-icon-search"
  44. label=""
  45. @click="searchList"
  46. ></el-button>
  47. </el-col>
  48. <!-- 重置 -->
  49. <el-col
  50. :span="4"
  51. style="width: 56px; margin-left: 10px"
  52. class="mr5"
  53. >
  54. <el-button
  55. :size="searchSize"
  56. class="fr"
  57. type="warning"
  58. @click="restSearch"
  59. >重置</el-button
  60. >
  61. </el-col>
  62. </el-col>
  63. </el-row>
  64. </div>
  65. </template>
  66. <template #expand="{ scope }">
  67. <el-table
  68. :data="scope.row.child"
  69. style="width: 100%; paddind: 20px"
  70. border
  71. size="small"
  72. >
  73. <el-table-column
  74. label="仓库名称"
  75. prop="wsm_name"
  76. width="80"
  77. ></el-table-column>
  78. <el-table-column
  79. label="仓库编码"
  80. prop="wsm_code"
  81. width="180"
  82. ></el-table-column>
  83. <el-table-column
  84. label="当前库存"
  85. prop="total_stock"
  86. ></el-table-column>
  87. <el-table-column
  88. label="待入库"
  89. prop="wait_in_stock"
  90. ></el-table-column>
  91. <el-table-column
  92. label="待出库"
  93. prop="wait_out_stock"
  94. ></el-table-column>
  95. <el-table-column
  96. label="可用库存"
  97. prop="usable_stock"
  98. ></el-table-column>
  99. <el-table-column
  100. label="在途库存"
  101. prop="intra_stock"
  102. ></el-table-column>
  103. </el-table>
  104. </template>
  105. </ex-table>
  106. <add-edit
  107. :id="modelId"
  108. :sitem="sitem"
  109. :show-model="showModel"
  110. :is-detail="isDetail"
  111. @refresh="searchList"
  112. @cancel="showModel = false"
  113. />
  114. </div>
  115. <div v-else>
  116. <no-auth></no-auth>
  117. </div>
  118. </div>
  119. </template>
  120. <script>
  121. import mixinPage from "@/mixins/elPaginationHandle";
  122. import resToken from "@/mixins/resToken";
  123. import statusList from "@/assets/js/statusList";
  124. import asyncRequest from "@/apis/service/stock/productWeido";
  125. import { mapGetters } from "vuex";
  126. import columns from "./columns";
  127. export default {
  128. name: "productWeido",
  129. mixins: [mixinPage, resToken],
  130. components: {},
  131. computed: {
  132. ...mapGetters(["tablebtnSize", "searchSize", "size"]),
  133. powers() {
  134. let tran =
  135. this.$store.getters.btnList.find(
  136. (item) => item.menu_route == "stockCount"
  137. ) || {};
  138. if (tran && tran.action && tran.action.length > 0) {
  139. return tran.action;
  140. } else {
  141. return [];
  142. }
  143. },
  144. },
  145. data() {
  146. return {
  147. statusList: statusList,
  148. loading: true,
  149. showModel: false,
  150. isDetail: false,
  151. modelId: 0,
  152. //入参参数
  153. parmValue: {
  154. type_code: "", //商品属性编码
  155. page: 1, // 页码
  156. size: 15, // 每页显示条数
  157. },
  158. tableData: [], //渲染表格数据
  159. // 表格 - 参数
  160. table: {
  161. stripe: true,
  162. border: true,
  163. _defaultHeader_: ["setcol"],
  164. },
  165. // 表格 - 分页
  166. pageInfo: {
  167. size: 15,
  168. curr: 1,
  169. total: 0,
  170. },
  171. // 表格 - 列参数
  172. columns: columns,
  173. };
  174. },
  175. mounted() {
  176. this.searchList();
  177. },
  178. methods: {
  179. //重置参数
  180. restSearch() {
  181. // 表格 - 分页
  182. this.pageInfo = {
  183. size: 15,
  184. curr: 1,
  185. total: 0,
  186. };
  187. this.parmValue = {
  188. type_code: "",
  189. size: 15,
  190. curr: 1,
  191. };
  192. this.searchList();
  193. },
  194. //获取列表功能
  195. async searchList() {
  196. this.loading = true;
  197. // { type_code: "GY202104290049" }
  198. console.log(this.parmValue);
  199. const res = await asyncRequest.list(this.parmValue);
  200. if (res && res.code === 0 && res.data) {
  201. this.tableData = res.data.list;
  202. this.pageInfo.total = Number(res.data.count);
  203. } else if (res && res.code >= 100 && res.code <= 104) {
  204. await this.logout();
  205. } else {
  206. this.tableData = [];
  207. this.pageInfo.total = 0;
  208. }
  209. this.loading = false;
  210. },
  211. },
  212. };
  213. </script>