index.vue 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. <template>
  2. <div class="productWeido pagePadding" style="padding: 0">
  3. <div v-if="powers.some((i) => i == '001')">
  4. <ex-table
  5. v-loading="loading"
  6. :table="table"
  7. :data="tableData"
  8. :columns="columns"
  9. :page="pageInfo"
  10. :size="size"
  11. @page-curr-change="handlePageChange"
  12. @page-size-change="handleSizeChange"
  13. @screen-reset="
  14. pageInfo.curr = 1;
  15. parmValue.page = 1;
  16. searchList();
  17. "
  18. @screen-submit="
  19. pageInfo.curr = 1;
  20. parmValue.page = 1;
  21. searchList();
  22. "
  23. >
  24. <template #table-header="{}">
  25. <div style="width: 100%">
  26. <el-row style="padding: 0 0 0 80px" gutter="10">
  27. <el-col :span="24">
  28. <el-col :span="5">
  29. <el-input
  30. v-model="parmValue.type_code"
  31. :size="searchSize"
  32. maxlength="40"
  33. placeholder="sku编码"
  34. />
  35. </el-col>
  36. <el-col :span="5">
  37. <el-input
  38. v-model="parmValue.good_name"
  39. :size="searchSize"
  40. maxlength="40"
  41. placeholder="商品名称"
  42. />
  43. </el-col>
  44. <el-col style="width:400px">
  45. <company-select
  46. style="width:100%"
  47. :value="parmValue.companyNo"
  48. @change="handleCompanyChange"
  49. size="mini"
  50. clearable
  51. placeholder="业务公司"
  52. :noCompanyCode="true"
  53. />
  54. </el-col>
  55. <!-- 搜索 -->
  56. <el-col style="width: 54px">
  57. <el-button
  58. :size="searchSize"
  59. type="primary"
  60. class="fr"
  61. icon="el-icon-search"
  62. label
  63. @click="searchList"
  64. />
  65. </el-col>
  66. <!-- 重置 -->
  67. <el-col style="width: 56px; margin-left: 10px" class="mr5">
  68. <el-button :size="searchSize" class="fr" type="warning" @click="restSearch">重置</el-button>
  69. </el-col>
  70. </el-col>
  71. </el-row>
  72. </div>
  73. </template>
  74. <template #good_code="{ scope }">
  75. <div style="display:flex;align-items:center">
  76. <el-tooltip placement="top" content="查看商品详情" v-if="goodCostPremission.includes('007')">
  77. <i
  78. @click="linkToGoodDetail(scope.row)"
  79. class="el-icon-link"
  80. style="cursor:pointer;margin-right:5px;font-size:16px"
  81. />
  82. </el-tooltip>
  83. <p>{{scope.row.good_code}}</p>
  84. </div>
  85. </template>
  86. <template #expand="{ scope }">
  87. <el-table :data="scope.row.child" style="width: 100%; paddind: 20px" border size="small">
  88. <el-table-column label="仓库名称" prop="wsm_name" show-overflow-tooltip min-width="150">
  89. <template slot-scope="scope">
  90. <div style="display:flex;align-items:center">
  91. <el-tooltip :content="'仓库编码 : ' + scope.row.wsm_code" placement="top">
  92. <i class="el-icon-warning-outline" style="margin-right:2px;cursor:pointer" />
  93. </el-tooltip>
  94. <p>{{scope.row.wsm_name}}</p>
  95. </div>
  96. </template>
  97. </el-table-column>
  98. <el-table-column label="仓库负责人" prop="contactor_name" show-overflow-tooltip width="120" />
  99. <!-- <el-table-column
  100. label="仓库编码"
  101. prop="wsm_code"
  102. show-overflow-tooltip
  103. width="170"
  104. ></el-table-column>-->
  105. <el-table-column
  106. label="仓库所在公司名称"
  107. prop="supplierName"
  108. show-overflow-tooltip
  109. min-width="150"
  110. >
  111. <template slot-scope="scope">
  112. <div style="display:flex;align-items:center">
  113. <el-tooltip :content="'仓库所在公司编码 : ' + scope.row.supplierNo" placement="top">
  114. <i class="el-icon-warning-outline" style="margin-right:2px;cursor:pointer" />
  115. </el-tooltip>
  116. <p>{{scope.row.supplierName}}</p>
  117. </div>
  118. </template>
  119. </el-table-column>
  120. <el-table-column label="供应商负责人" prop="person" show-overflow-tooltip width="120" />
  121. <!-- <el-table-column
  122. label="仓库所在公司编码"
  123. prop="supplierNo"
  124. show-overflow-tooltip
  125. width="160"
  126. ></el-table-column>-->
  127. <el-table-column label="仓库业务公司名称" prop="company" show-overflow-tooltip min-width="150">
  128. <template slot-scope="scope">
  129. <div style="display:flex;align-items:center">
  130. <el-tooltip :content="'仓库业务公司名称 : ' + scope.row.companyNo" placement="top">
  131. <i class="el-icon-warning-outline" style="margin-right:2px;cursor:pointer" />
  132. </el-tooltip>
  133. <p>{{scope.row.company}}</p>
  134. </div>
  135. </template>
  136. </el-table-column>
  137. <!-- <el-table-column
  138. label="仓库业务公司编码"
  139. prop="companyNo"
  140. show-overflow-tooltip
  141. width="160"
  142. ></el-table-column>-->
  143. <el-table-column label="当前库存" width="100" show-overflow-tooltip prop="total_stock"></el-table-column>
  144. <el-table-column label="待入库" width="100" show-overflow-tooltip prop="wait_in_stock"></el-table-column>
  145. <el-table-column label="待出库" width="100" show-overflow-tooltip prop="wait_out_stock"></el-table-column>
  146. <el-table-column label="可用库存" width="100" show-overflow-tooltip prop="usable_stock"></el-table-column>
  147. <el-table-column label="在途库存" width="100" show-overflow-tooltip prop="intra_stock"></el-table-column>
  148. </el-table>
  149. </template>
  150. <template #specinfo="{ scope }">
  151. <span
  152. v-for="(si, sii) in scope.row.specinfo"
  153. :key="sii + si.spec_value_id"
  154. >{{ sii === 0 ? "" : "-" }}{{ si.spec_name }}[{{ si.spec_value_name }}]</span>
  155. </template>
  156. </ex-table>
  157. <add-edit
  158. :id="modelId"
  159. :sitem="sitem"
  160. :show-model="showModel"
  161. :is-detail="isDetail"
  162. @refresh="searchList"
  163. @cancel="showModel = false"
  164. />
  165. </div>
  166. <div v-else>
  167. <no-auth></no-auth>
  168. </div>
  169. </div>
  170. </template>
  171. <script>
  172. import mixinPage from "@/mixins/elPaginationHandle";
  173. import resToken from "@/mixins/resToken";
  174. import { statusList } from "@/assets/js/statusList";
  175. import asyncRequest from "@/apis/service/stock/productWeido";
  176. import { mapGetters } from "vuex";
  177. import columns from "./columns";
  178. import CompanySelect from "@/layout/components/company-select";
  179. export default {
  180. name: "productWeido",
  181. mixins: [mixinPage, resToken],
  182. components: { CompanySelect },
  183. computed: {
  184. ...mapGetters(["tablebtnSize", "searchSize", "size"]),
  185. powers() {
  186. const tran =
  187. this.$store.getters.btnList.find(
  188. item => item.menu_route == "stockCount"
  189. ) || {};
  190. const { action } = tran ?? {};
  191. return action ?? [];
  192. },
  193. goodCostPremission() {
  194. const tran =
  195. this.$store.getters.btnList.find(
  196. item => item.menu_route == "goodsCost"
  197. ) || {};
  198. const { action } = tran ?? {};
  199. return action ?? [];
  200. }
  201. },
  202. data() {
  203. return {
  204. statusList: statusList,
  205. loading: true,
  206. showModel: false,
  207. isDetail: false,
  208. modelId: 0,
  209. //入参参数
  210. parmValue: {
  211. companyNo: "",
  212. type_code: "", //商品属性编码
  213. good_name: "", //商品名称
  214. page: 1, // 页码
  215. size: 15 // 每页显示条数
  216. },
  217. tableData: [], //渲染表格数据
  218. // 表格 - 参数
  219. table: {
  220. stripe: true,
  221. border: true,
  222. _defaultHeader_: ["setcol"]
  223. },
  224. // 表格 - 分页
  225. pageInfo: {
  226. size: 15,
  227. curr: 1,
  228. total: 0
  229. },
  230. // 表格 - 列参数
  231. columns: columns
  232. };
  233. },
  234. mounted() {
  235. this.searchList();
  236. },
  237. methods: {
  238. handleCompanyChange(code) {
  239. this.parmValue.companyNo = code;
  240. this.searchList();
  241. },
  242. linkToGoodDetail(row) {
  243. // console.log(row)
  244. // http://localhost:8081/#/goodStore/goodsCostDetail?id=SKU2305311527349138&type=view
  245. this.$router.push(
  246. `/goodStore/goodsCostDetail?id=${row.good_code}&type=view`
  247. );
  248. },
  249. //重置参数
  250. restSearch() {
  251. // 表格 - 分页
  252. this.pageInfo = {
  253. size: 15,
  254. curr: 1,
  255. total: 0
  256. };
  257. this.parmValue = {
  258. companyNo: "",
  259. type_code: "",
  260. good_name: "", //商品名称
  261. size: 15,
  262. curr: 1
  263. };
  264. this.searchList();
  265. },
  266. //获取列表功能
  267. async searchList() {
  268. this.loading = true;
  269. const res = await asyncRequest.list({
  270. ...this.parmValue,
  271. relaComNo: this.parmValue.companyNo,
  272. useSelfComNo: true
  273. });
  274. if (res && res.code === 0 && res.data) {
  275. this.tableData = res.data.list;
  276. this.pageInfo.total = Number(res.data.count);
  277. } else if (res && res.code >= 100 && res.code <= 104) {
  278. await this.logout();
  279. } else {
  280. this.tableData = [];
  281. this.pageInfo.total = 0;
  282. }
  283. this.loading = false;
  284. }
  285. }
  286. };
  287. </script>