stock-add.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <div>
  3. <div class="my-title">新增</div>
  4. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
  5. <el-row class="my-row">
  6. <el-col :span="8">
  7. <el-form-item label="名称" prop="materialName">
  8. <el-input v-model="dataForm.materialName" placeholder="物品(零件)名称" ></el-input>
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="8">
  12. <el-form-item label="类别" prop="materialTypeId">
  13. <material-type-component v-model="dataForm.materialTypeId" :type-id.sync="dataForm.materialTypeId"></material-type-component>
  14. </el-form-item>
  15. </el-col>
  16. <el-col :span="8">
  17. <el-form-item label="规格" prop="specifications">
  18. <el-input v-model="dataForm.specifications" placeholder="物品(零件)规格" ></el-input>
  19. </el-form-item>
  20. </el-col>
  21. </el-row>
  22. <el-row class="my-row">
  23. <el-col :span="8">
  24. <el-form-item label="数量" prop="cnt">
  25. <el-input-number v-model="dataForm.cnt" :min="0" placeholder="物品(零件)数量" ></el-input-number>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="8">
  29. <el-form-item label="单价" prop="price">
  30. <el-input-number v-model="dataForm.price" :precision="2" :step="0.1" :min="0.0" placeholder="物品(零件)单价" ></el-input-number>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="8">
  34. <el-form-item label="金额" prop="amount">
  35. <el-input :value="!id?(dataForm.price * dataForm.cnt):dataForm.amount" :disabled="true" placeholder="物品(零件)总金额"></el-input>
  36. </el-form-item>
  37. </el-col>
  38. </el-row>
  39. <el-row class="my-row">
  40. <el-col :span="8">
  41. <el-form-item label="单位" prop="unitName">
  42. <el-input v-model="dataForm.unitName" placeholder="单位" ></el-input>
  43. </el-form-item>
  44. </el-col>
  45. <el-col :span="8">
  46. <el-form-item label="存放仓库" prop="warehouseId">
  47. <warehouse-select ref="warehouse" v-model:warehouse-id="dataForm.warehouseId" @select="warehouseChanged"/>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="8">
  51. <el-form-item label="存放货架" prop="shelveId">
  52. <shelve-select ref="shelve" v-model="dataForm.shelveId" :warehouse-id.sync="dataForm.warehouseId" :shelve-id.sync="dataForm.shelveId"/>
  53. </el-form-item>
  54. </el-col>
  55. </el-row>
  56. <el-row class="my-row">
  57. <el-col :span="8">
  58. <el-form-item label="安全库存" prop="safeQuantity">
  59. <el-input-number v-model="dataForm.safeQuantity" :min="0" placeholder="安全库存"></el-input-number>
  60. </el-form-item>
  61. </el-col>
  62. </el-row>
  63. <el-row class="my-row">
  64. <el-col :span="24">
  65. <el-form-item label="备注" prop="notes">
  66. <el-input type="textarea" v-model="dataForm.notes" placeholder="备注" ></el-input>
  67. </el-form-item>
  68. </el-col>
  69. </el-row>
  70. </el-form>
  71. <span slot="footer" class="dialog-footer">
  72. <el-button @click="onChose">取消</el-button>
  73. <el-button type="primary" @click="dataFormSubmit()" v-reClick>确定</el-button>
  74. </span>
  75. </div>
  76. </template>
  77. <script>
  78. import WarehouseSelect from './warehouse-select'
  79. import ShelveSelect from './shelve-select'
  80. import UserComponent from '../common/user-component'
  81. import MaterialTypeComponent from '@/views/modules/common/material-type-component.vue'
  82. export default {
  83. name: 'stock-add',
  84. components: {MaterialTypeComponent, UserComponent, ShelveSelect, WarehouseSelect},
  85. data () {
  86. return {
  87. visible: false,
  88. dictType: 'material_type',
  89. id: 0,
  90. dataForm: {
  91. materialId: 0,
  92. materialCode: '',
  93. materialName: '',
  94. materialTypeId: '',
  95. cateId: '',
  96. specifications: '',
  97. unitName: '',
  98. cnt: '',
  99. price: '',
  100. amount: '',
  101. warehouseId: '',
  102. shelveId: '',
  103. shelveName: '',
  104. notes: ''
  105. },
  106. dataRule: {
  107. materialName: [{ required: true, message: '物品(零件)名称不能为空', trigger: 'blur' }],
  108. specifications: [{ required: true, message: '规格不能为空', trigger: 'blur' }],
  109. materialTypeId: [{ required: true, message: '类别不能为空', trigger: 'blur' }],
  110. cnt: [{ required: true, message: '数量不能为空', trigger: 'blur' }],
  111. price: [{ required: true, message: '单价不能为空', trigger: 'blur' }],
  112. unitName: [{ required: true, message: '单位不能为空', trigger: 'blur' }],
  113. safeQuantity: [{ required: true, message: '安全库存不能为空', trigger: 'blur' }]
  114. }
  115. }
  116. },
  117. methods: {
  118. onChose () {
  119. this.$emit('onChose')
  120. },
  121. async init (id) {
  122. this.visible = true
  123. this.id = id || 0
  124. this.dataForm = {}
  125. },
  126. // 表单提交
  127. dataFormSubmit () {
  128. this.$refs['dataForm'].validate((valid) => {
  129. if (valid) {
  130. this.$http({
  131. url: this.$http.adornUrl(`/biz-service/stock-mg-ctl/materialSave`),
  132. method: 'post',
  133. data: this.$http.adornData(this.dataForm)
  134. }).then(({data}) => {
  135. if (data && data.code === '200') {
  136. this.$message({
  137. message: '操作成功',
  138. type: 'success',
  139. duration: 1500,
  140. onClose: () => {
  141. this.onChose()
  142. this.$emit('refreshDataList')
  143. }
  144. })
  145. } else {
  146. this.$message.error(data.msg)
  147. }
  148. })
  149. }
  150. })
  151. },
  152. validateField (type) {
  153. this.$refs.dataForm.validateField(type)
  154. },
  155. warehouseChanged (item) {
  156. this.dataForm.warehouseId = item
  157. this.$refs.shelve.init(item, this.dataForm.shelveId)
  158. }
  159. }
  160. }
  161. </script>
  162. <style scoped>{
  163. }
  164. </style>