stock.vue 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <!-- 库存管理 -->
  2. <template>
  3. <div class="stock">
  4. <template v-if="!detailVisible && !addOrUpdateVisible && !noticeChangeAttachVisible">
  5. <el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
  6. <el-form-item label="名称">
  7. <el-input v-model="dataForm.materialName" placeholder="请输入名称" clearable/>
  8. </el-form-item>
  9. <el-form-item>
  10. <el-button @click="getDataList()">查询</el-button>
  11. <!-- <el-button v-if="isAuth('wh:stockmanagement:exported')" type="primary" @click="exportExcel()">导出Excel</el-button>-->
  12. <el-button v-if="isAuth('wh:stockmanagement:noteChangeConfig')" type="primary" @click="setNoticeChangeHandel()">库存更改通知设置</el-button>
  13. </el-form-item>
  14. </el-form>
  15. <el-table
  16. :data="dataList"
  17. border
  18. v-loading="dataListLoading"
  19. @selection-change="selectionChangeHandle"
  20. style="width: 100%;">
  21. <el-table-column
  22. type="selection"
  23. header-align="center"
  24. align="center"
  25. width="50">
  26. </el-table-column>
  27. <el-table-column
  28. label="序号"
  29. type="index"
  30. width="50"
  31. align="center">
  32. </el-table-column>
  33. <el-table-column
  34. prop="materialCode"
  35. header-align="center"
  36. align="center"
  37. min-width="180"
  38. :show-tooltip-when-overflow="true"
  39. label="编码">
  40. </el-table-column>
  41. <el-table-column
  42. prop="materialName"
  43. header-align="center"
  44. align="center"
  45. min-width="180"
  46. :show-overflow-tooltip="true"
  47. label="名称">
  48. </el-table-column>
  49. <el-table-column
  50. prop="categoryName"
  51. header-align="center"
  52. align="center"
  53. label="类别">
  54. </el-table-column>
  55. <el-table-column
  56. prop="isInventory"
  57. header-align="center"
  58. align="center"
  59. :formatter="formatState"
  60. label="状态">
  61. </el-table-column>
  62. <el-table-column
  63. prop="lockCnt"
  64. header-align="center"
  65. align="center"
  66. label="锁库数量">
  67. </el-table-column>
  68. <el-table-column
  69. prop="specifications"
  70. header-align="center"
  71. align="center"
  72. min-width="100"
  73. :show-overflow-tooltip="true"
  74. label="规格">
  75. </el-table-column>
  76. <el-table-column
  77. prop="unitName"
  78. header-align="center"
  79. align="center"
  80. label="单位">
  81. </el-table-column>
  82. <el-table-column
  83. prop="cnt"
  84. header-align="center"
  85. align="center"
  86. label="库存">
  87. </el-table-column>
  88. <el-table-column
  89. prop="safeQuantity"
  90. header-align="center"
  91. align="center"
  92. label="安全库存">
  93. </el-table-column>
  94. <el-table-column
  95. prop="amount"
  96. header-align="center"
  97. align="center"
  98. label="金额">
  99. </el-table-column>
  100. <el-table-column
  101. prop="shelveName"
  102. header-align="center"
  103. align="center"
  104. width="140"
  105. :show-overflow-tooltip="true"
  106. label="存放货架">
  107. </el-table-column>
  108. <el-table-column
  109. prop="notes"
  110. header-align="center"
  111. align="center"
  112. width="160"
  113. :show-overflow-tooltip="true"
  114. label="备注">
  115. </el-table-column>
  116. <el-table-column
  117. fixed="right"
  118. header-align="center"
  119. align="center"
  120. width="150"
  121. label="操作">
  122. <template slot-scope="scope">
  123. <el-button v-if="isAuth('wh:stockmanagement:info')" type="text" size="small" @click="details(scope.row.materialId)">查看</el-button>
  124. <el-button v-if="isAuth('wh:stockmanagement:editor')" type="text" size="small" @click="addOrUpdateHandle(scope.row.materialId)">编辑</el-button>
  125. </template>
  126. </el-table-column>
  127. </el-table>
  128. <el-pagination
  129. @size-change="sizeChangeHandle"
  130. @current-change="currentChangeHandle"
  131. :current-page="pageIndex"
  132. :page-sizes="[10, 20, 50, 100]"
  133. :page-size="pageSize"
  134. :total="totalPage"
  135. layout="total, sizes, prev, pager, next, jumper">
  136. </el-pagination>
  137. </template>
  138. <stock-details v-if="detailVisible" ref="details" @onChose="onChose"/>
  139. <stock-add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" @onChose="onChose"/>
  140. <notice-change-setting v-if="noticeChangeAttachVisible" ref="noticeChangeSetting" @onChose="onChose"/>
  141. </div>
  142. </template>
  143. <script>
  144. import StockDetails from './stock-details'
  145. import StockAddOrUpdate from './stock-add-or-update'
  146. import NoticeChangeSetting from './stock-notice-change-setting'
  147. import Vue from 'vue'
  148. export default {
  149. name: 'stock',
  150. components: {
  151. StockAddOrUpdate,
  152. StockDetails,
  153. NoticeChangeSetting
  154. },
  155. data () {
  156. return {
  157. dataForm: {
  158. materialName: ''
  159. },
  160. dataList: [],
  161. pageIndex: 1,
  162. pageSize: 10,
  163. totalPage: 0,
  164. dataListLoading: false,
  165. dataListSelections: [],
  166. detailVisible: false,
  167. addOrUpdateVisible: false,
  168. noticeChangeAttachVisible: false
  169. }
  170. },
  171. activated () {
  172. this.getDataList()
  173. },
  174. methods: {
  175. onChose () {
  176. this.addOrUpdateVisible = false
  177. this.detailVisible = false
  178. this.noticeChangeAttachVisible = false
  179. },
  180. // 获取数据列表
  181. getDataList () {
  182. this.dataListLoading = true
  183. this.$http({
  184. url: this.$http.adornUrl('/biz-service/stock-mg-ctl/list'),
  185. method: 'get',
  186. params: this.$http.adornParams({
  187. 'current': this.pageIndex,
  188. 'size': this.pageSize,
  189. 'materialName': this.dataForm.materialName
  190. })
  191. }).then(({data}) => {
  192. if (data && data.code === '200') {
  193. this.dataList = data.data.records
  194. this.totalPage = Number(data.data.total)
  195. } else {
  196. this.dataList = []
  197. this.totalPage = 0
  198. }
  199. this.dataListLoading = false
  200. })
  201. },
  202. exportExcel () {
  203. let url = this.$http.adornUrl('/biz-service/stock-mg-ctl/exportedExcel')
  204. this.$http({
  205. url: url,
  206. method: 'get',
  207. params: this.$http.adornParams({
  208. 'materialName': this.dataForm.materialName
  209. })
  210. }).then(({data}) => {
  211. if (data && data.code && data.code !== '200') {
  212. this.$message.error(data.msg || '系统错误,请联系管理员')
  213. } else {
  214. window.open(url + '?_token=' + Vue.cookie.get('token') + '?materialName=' + this.dataForm.materialName, '_blank')
  215. }
  216. })
  217. },
  218. // 每页数
  219. sizeChangeHandle (val) {
  220. this.pageSize = val
  221. this.pageIndex = 1
  222. this.getDataList()
  223. },
  224. // 当前页
  225. currentChangeHandle (val) {
  226. this.pageIndex = val
  227. this.getDataList()
  228. },
  229. // 多选
  230. selectionChangeHandle (val) {
  231. this.dataListSelections = val
  232. },
  233. details (id) {
  234. this.detailVisible = true
  235. this.$nextTick(() => {
  236. this.$refs.details.init(id)
  237. })
  238. },
  239. // 新增、修改
  240. addOrUpdateHandle (id) {
  241. this.addOrUpdateVisible = true
  242. this.$nextTick(() => {
  243. this.$refs.addOrUpdate.init(id)
  244. })
  245. },
  246. // 转换属性“状态”
  247. formatState (row) {
  248. if (!row.lockCnt) return ''
  249. return row.lockCnt === '0' ? '正常' : '盘点中'
  250. },
  251. // 变更通知人设置
  252. setNoticeChangeHandel () {
  253. this.noticeChangeAttachVisible = true
  254. this.$nextTick(() => {
  255. this.$refs.noticeChangeSetting.init()
  256. })
  257. }
  258. }
  259. }
  260. </script>
  261. <style scoped>
  262. </style>