You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

251 lines
8.7 KiB

  1. <template>
  2. <div class="mod-partspare">
  3. <el-dialog
  4. @close="closeDialog"
  5. v-drag
  6. :title=" !this.addOrUpdate ? '新增' : '修改'"
  7. :close-on-click-modal="false"
  8. width="500px"
  9. :visible.sync="visible">
  10. <el-form :inline="true" label-position="top" :model="dataForm" ref="dataForm"
  11. @keyup.enter.native="dataFormSubmit()"
  12. label-width="120px">
  13. <el-form-item required label="备品备件编码" >
  14. <el-input :disabled="addOrUpdate" v-model="dataForm.partNo"></el-input>
  15. </el-form-item>
  16. <el-form-item required label="备品备件名称">
  17. <el-input v-model="dataForm.partDescription"></el-input>
  18. </el-form-item>
  19. <el-form-item required label="规格型号">
  20. <el-input v-model="dataForm.spec"></el-input>
  21. </el-form-item>
  22. <el-form-item required label="产品组编码">
  23. <el-input v-model="dataForm.groupId"></el-input>
  24. </el-form-item>
  25. <el-form-item required label="计价单位">
  26. <el-input v-model="dataForm.averagePrice"></el-input>
  27. </el-form-item>
  28. <el-form-item required label="单价单位">
  29. <el-input v-model="dataForm.umid"></el-input>
  30. </el-form-item>
  31. <el-form-item required label="预计使用寿命">
  32. <el-input-number :min="0" style="width: 146px" v-model="dataForm.estUseQty" :step="2"
  33. step-strictly></el-input-number>
  34. </el-form-item>
  35. <el-form-item required label="最高库存数量">
  36. <el-input-number :min="0" style="width: 146px" v-model="dataForm.maxStock" :step="2"
  37. step-strictly></el-input-number>
  38. </el-form-item>
  39. <el-form-item required label="最低库存数量">
  40. <el-input-number :min="0" style="width: 146px" v-model="dataForm.minStock" :step="2"
  41. step-strictly></el-input-number>
  42. </el-form-item>
  43. <el-form-item required label="状态">
  44. <el-select v-model="dataForm.active">
  45. <el-option value="Y" label="启用"></el-option>
  46. <el-option value="N" label="禁用"></el-option>
  47. </el-select>
  48. </el-form-item>
  49. <el-form-item required >
  50. <span slot="label" style="" @click="getBaseList(110)"><a herf="#">供应商编码</a></span>
  51. <el-input v-model="dataForm.supplierId"></el-input>
  52. </el-form-item>
  53. <el-form-item required>
  54. <span slot="label" style="" @click="getBaseList(111)"><a herf="#">仓库编码</a></span>
  55. <el-input v-model="dataForm.warehouseId"></el-input>
  56. </el-form-item>
  57. <el-form-item required>
  58. <el-link v-if="dataForm.warehouseId" slot="label" @click="getBaseList(112)">货位编码</el-link>
  59. <span v-if="!dataForm.warehouseId" slot="label">货位编码</span>
  60. <el-input v-model="dataForm.locationId"></el-input>
  61. </el-form-item>
  62. </el-form>
  63. <span slot="footer" class="dialog-footer">
  64. <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
  65. <el-button type="primary" @click="visible = false">取消</el-button>
  66. </span>
  67. </el-dialog>
  68. <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
  69. </div>
  70. </template>
  71. <script>
  72. import Chooselist from '@/views/modules/common/Chooselist_eam'
  73. import {getPartSpareInfo, savePartSpare, updatePartSpare} from '@/api/partspare/partspare.js'
  74. export default {
  75. data() {
  76. return {
  77. visible: false,
  78. dataForm: {
  79. active: "Y",
  80. averagePrice: '',
  81. createdBy: '',
  82. estUseQty: 0,
  83. id: '',
  84. locationId: '',
  85. maxStock: 0,
  86. minStock: 0,
  87. partDescription: "",
  88. partNo: '',
  89. sCodeControlFlag: '',
  90. site: this.$store.state.user.site,
  91. spec: '',
  92. supplierId: '',
  93. umid: '',
  94. warehouseId: '',
  95. groupId:'',
  96. },
  97. addOrUpdate: false,
  98. tagNo: 0,
  99. }
  100. },
  101. components: {
  102. Chooselist
  103. },
  104. methods: {
  105. // 获取基础数据列表S
  106. getBaseList(val, type) {
  107. this.tagNo = val
  108. this.$nextTick(() => {
  109. let strVal = ''
  110. let conSql = ''
  111. if (val === 110) {
  112. strVal = this.dataForm.supplierId
  113. }
  114. if (val === 111) {
  115. strVal = this.dataForm.warehouseId
  116. }
  117. if (val === 112) {
  118. strVal = this.dataForm.locationId
  119. let whereValue = this.dataForm.warehouseId ? "'" + this.dataForm.warehouseId + "'" : "'*'"
  120. conSql = ' and warehouse_id = ' + whereValue
  121. }
  122. this.$refs.baseList.init(val, strVal, conSql)
  123. })
  124. },
  125. /* 列表方法的回调 */
  126. getBaseData(val) {
  127. if (this.tagNo === 110) {
  128. this.dataForm.supplierId = val.supplier_id
  129. }
  130. if (this.tagNo === 111) {
  131. this.dataForm.warehouseId = val.warehouse_id
  132. }
  133. if (this.tagNo === 112) {
  134. this.dataForm.locationId = val.location_id
  135. }
  136. },
  137. init(row) {
  138. this.addOrUpdate = row ? true : false
  139. this.visible = true
  140. this.$nextTick(() => {
  141. if (this.addOrUpdate) {
  142. this.dataForm.site = row.site
  143. this.dataForm.partNo = row.partNo
  144. getPartSpareInfo(this.dataForm).then(({data}) => {
  145. if (data && data.code === 0) {
  146. this.dataForm.active = data.partSpare.active
  147. this.dataForm.averagePrice = data.partSpare.averagePrice
  148. this.dataForm.createdBy = data.partSpare.createdBy
  149. this.dataForm.umid = data.partSpare.umid
  150. this.dataForm.minStock = data.partSpare.minStock
  151. this.dataForm.maxStock = data.partSpare.maxStock
  152. this.dataForm.supplierId = data.partSpare.supplierId
  153. this.dataForm.createDate = data.partSpare.createDate
  154. this.dataForm.lastUpdateBy = data.partSpare.lastUpdateBy
  155. this.dataForm.estUseQty = data.partSpare.estUseQty
  156. this.dataForm.sCodeControlFlag = data.partSpare.sCodeControlFlag
  157. this.dataForm.locationId = data.partSpare.locationId
  158. this.dataForm.warehouseId = data.partSpare.warehouseId
  159. this.dataForm.partDescription = data.partSpare.partDescription
  160. this.dataForm.partNo = data.partSpare.partNo
  161. this.dataForm.site = data.partSpare.site
  162. this.dataForm.spec = data.partSpare.spec
  163. this.dataForm.groupId = data.partSpare.groupId
  164. }
  165. })
  166. }
  167. })
  168. },
  169. // 表单提交
  170. dataFormSubmit() {
  171. if (!this.dataForm.partNo) {
  172. this.$message.warning("备品备件编码不能为空!")
  173. return;
  174. }
  175. if (!this.dataForm.partDescription) {
  176. this.$message.warning("备品备件名称不能为空!")
  177. return;
  178. }
  179. if (!this.dataForm.partNo) {
  180. this.$message.warning("规格型号不能为空!")
  181. return;
  182. }
  183. if (!this.dataForm.groupId) {
  184. this.$message.warning("产品组编码不能为空")
  185. return;
  186. }
  187. if (!this.dataForm.averagePrice) {
  188. this.$message.warning("计价单位不能为空")
  189. return;
  190. }
  191. if (!this.dataForm.umid) {
  192. this.$message.warning("单价单位不能为空")
  193. return;
  194. }
  195. if (!this.dataForm.estUseQty) {
  196. this.$message.warning("预计使用寿命必须大于0")
  197. return;
  198. }
  199. if (!this.dataForm.maxStock) {
  200. this.$message.warning("最高库存数量必须大于0")
  201. return;
  202. }
  203. if (this.dataForm.minStock != '') {
  204. this.$message.warning("最低库存数量不能为空")
  205. return;
  206. }
  207. if (!this.dataForm.supplierId) {
  208. this.$message.warning("供应商编码不能为空")
  209. return;
  210. }
  211. if (!this.dataForm.warehouseId) {
  212. this.$message.warning("仓库编码不能为空")
  213. return;
  214. }
  215. if (!this.dataForm.locationId) {
  216. this.$message.warning("货位编码不能为空")
  217. return;
  218. }
  219. if (this.addOrUpdate) {
  220. updatePartSpare(this.dataForm).then(({data}) => {
  221. if (data && data.code == 0) {
  222. this.$message.success(data.msg)
  223. this.visible = false
  224. } else {
  225. this.$message.warning(data.msg)
  226. }
  227. })
  228. } else {
  229. savePartSpare(this.dataForm).then(({data}) => {
  230. if (data && data.code == 0) {
  231. this.$message.success(data.msg)
  232. this.visible = false
  233. } else {
  234. this.$message.warning(data.msg)
  235. }
  236. })
  237. }
  238. },
  239. closeDialog() {
  240. this.$nextTick(() => {
  241. this.$emit('refreshDataList')
  242. Object.assign(this.$data, this.$options.data.call(this));
  243. })
  244. },
  245. }
  246. }
  247. </script>