docAsnDetails-add-or-update.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <template>
  2. <el-dialog
  3. :title="!dataForm.id ? '明细新增' : '明细修改'"
  4. :close-on-click-modal="false"
  5. :modal="false"
  6. :visible.sync="visible">
  7. <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()"
  8. label-width="80px">
  9. <el-row>
  10. <el-col :span="8">
  11. <el-form-item label="入库单号" prop="asnNo">
  12. <el-input v-model="dataForm.asnNo" placeholder=""></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="8">
  16. <el-form-item label="物料" prop="sku">
  17. <el-input v-model="dataForm.sku" placeholder="">
  18. <i class="el-icon-search el-input__icon" slot="suffix" @click="handleSkuIconClick"></i>
  19. </el-input>
  20. </el-form-item>
  21. </el-col>
  22. <el-col :span="8">
  23. <el-form-item label="状态" prop="lineStatus">
  24. <el-select v-model="dataForm.lineStatus" :disabled="true" placeholder="请选择" style="width: 100%">
  25. <el-option
  26. v-for="dict in dict.type.asn_status"
  27. :key="dict.value"
  28. :label="dict.label"
  29. :value="dict.value"
  30. />
  31. </el-select>
  32. </el-form-item>
  33. </el-col>
  34. </el-row>
  35. <el-row>
  36. <el-col :span="8">
  37. <el-form-item label="指定区域" prop="locationZone">
  38. <el-select v-model="dataForm.locationZone" @change="locationZoneChange" placeholder="请选择库区" clearable
  39. size="small" style="width: 100%">
  40. <el-option
  41. v-for="dict in this.locationZoneCombo"
  42. :key="dict.zoneId"
  43. :label="dict.zoneName"
  44. :value="dict.zoneId"
  45. />
  46. </el-select>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="8">
  50. <el-form-item label="指定库位" prop="locationId">
  51. <el-select v-model="dataForm.locationId" placeholder="请选择库位" clearable size="small" style="width: 100%">
  52. <el-option
  53. v-for="dict in locationCombo"
  54. :key="dict.id"
  55. :label="dict.locationNo"
  56. :value="dict.id"
  57. ></el-option>
  58. </el-select>
  59. </el-form-item>
  60. </el-col>
  61. <el-col :span="8">
  62. <el-form-item label="预期数量" prop="expectedQty">
  63. <el-input v-model="dataForm.expectedQty" placeholder="" type="number"></el-input>
  64. </el-form-item>
  65. </el-col>
  66. </el-row>
  67. <el-row>
  68. <el-col :span="8">
  69. <el-form-item label="收货数量" prop="receivedQty">
  70. <el-input v-model="dataForm.receivedQty" placeholder="" type="number"></el-input>
  71. </el-form-item>
  72. </el-col>
  73. <el-col :span="8">
  74. <el-form-item label="备注" prop="notes">
  75. <el-input v-model="dataForm.notes" placeholder=""></el-input>
  76. </el-form-item>
  77. </el-col>
  78. </el-row>
  79. <div style="cursor: pointer;" @click="showHidden">
  80. <el-divider content-position="center">批次属性信息...</el-divider>
  81. </div>
  82. <el-table v-show="attShowFlag" :data="tableOption" ref="flowConfigDetails">
  83. <el-table-column label="批次属性" prop="lotattId">
  84. <template slot-scope="scope">
  85. <div style="display: inline-block;width: 10px;color:red;">
  86. <div v-show="scope.row.lotattFlag === 'Required'">*</div>
  87. </div>
  88. <div style="display: inline-block;width: 185px;">
  89. {{scope.row.lotattName}}
  90. </div>
  91. </template>
  92. </el-table-column>
  93. <el-table-column label="属性值" prop="defaultValue">
  94. <template slot-scope="scope">
  95. <div v-if="scope.row.inputType === 'Text'">
  96. <el-input v-model="scope.row.defaultValue" placeholder=""/>
  97. </div>
  98. <div v-if="scope.row.inputType === 'DateBox'">
  99. <el-date-picker v-model="scope.row.defaultValue" type="date" placeholder="" style="width: 100%"
  100. value-format="yyyy-MM-dd"/>
  101. </div>
  102. <div v-if="scope.row.inputType === 'ComboBox'">
  103. <el-select v-model="scope.row.defaultValue" placeholder="请选择" clearable size="small" style="width: 100%">
  104. <el-option
  105. v-for="dict in dict.type[scope.row.inputScope]"
  106. :key="dict.value"
  107. :label="dict.label"
  108. :value="dict.value"
  109. />
  110. </el-select>
  111. </div>
  112. </template>
  113. </el-table-column>
  114. </el-table>
  115. <sku-search-dialog v-if="skuSearchDialogVisible" ref="skuSearch" @dochose="afterChoseUser"></sku-search-dialog>
  116. </el-form>
  117. <span slot="footer" class="dialog-footer">
  118. <el-button @click="visible = false">取消</el-button>
  119. <el-button type="primary" @click="dataFormSubmit()">确定</el-button>
  120. </span>
  121. </el-dialog>
  122. </template>
  123. <script>
  124. import {lotattConfigList} from "@/api/ams/config"
  125. import {queryLocationZoneDict} from "@/api/base/locationZone"
  126. import {addDocAsnDetails} from "@/api/docAsn/docAsn"
  127. import SkuSearchDialog from '@/views/base/baseSku/skuSearchDialog'
  128. import {queryLocationDict} from "@/api/base/locationInfo"
  129. export default {
  130. dicts: ['sys_yes_no', 'ams_inv_quality', 'asn_status'],
  131. data() {
  132. return {
  133. visible: false,
  134. skuSearchDialogVisible: false,
  135. roleList: [],
  136. dataForm: {
  137. asnNo: '',
  138. sku: '',
  139. expectedQty: null,
  140. expectedQtyEach: null,
  141. receivedQty: null,
  142. receivedQtyEach: null,
  143. holdRejectreason: '',
  144. notes: '',
  145. locationZone: '',
  146. locationId: '',
  147. packId: '',
  148. lineStatus: '00',
  149. lotatt01: '',
  150. lotatt02: '',
  151. lotatt03: '',
  152. lotatt04: '',
  153. lotatt05: '',
  154. lotatt06: '',
  155. lotatt07: '',
  156. lotatt08: '',
  157. lotatt09: '',
  158. lotatt10: '',
  159. lotatt11: '',
  160. lotatt12: '',
  161. lotatt13: '',
  162. lotatt14: '',
  163. lotatt15: '',
  164. lotatt16: '',
  165. lotatt17: '',
  166. lotatt18: ''
  167. },
  168. dataRule: {},
  169. tableOption: [],
  170. attShowFlag: false,
  171. locationZoneCombo: [],
  172. locationCombo: []
  173. }
  174. },
  175. components: {
  176. SkuSearchDialog
  177. },
  178. methods: {
  179. init(id) {
  180. this.initData()
  181. this.dataForm.asnNo = id
  182. this.visible = true
  183. this.$nextTick(() => {
  184. //查询明细
  185. })
  186. },
  187. // 表单提交
  188. dataFormSubmit() {
  189. this.$refs["dataForm"].validate(valid => {
  190. if (valid) {
  191. for (let i = 0; i < this.tableOption.length; i++) {
  192. this.dataForm['' + this.tableOption[i].lotattId] = this.tableOption[i].defaultValue
  193. }
  194. console.log(this.dataForm)
  195. addDocAsnDetails(this.dataForm).then(response => {
  196. this.$modal.msgSuccess("新增成功");
  197. });
  198. }
  199. });
  200. },
  201. initData() {
  202. this.tableOption.length = 0
  203. lotattConfigList().then(response => {
  204. this.tableOption = response.data
  205. })
  206. queryLocationZoneDict().then(response => {
  207. this.locationZoneCombo = response.data
  208. })
  209. },
  210. showHidden() {
  211. this.attShowFlag = !this.attShowFlag
  212. },
  213. handleSkuIconClick() {
  214. this.skuSearchDialogVisible = true
  215. this.$nextTick(() => {
  216. this.$refs.skuSearch.init()
  217. })
  218. },
  219. afterChoseUser: function (userName, value) {
  220. this.dataForm.sku = value
  221. },
  222. locationZoneChange: function (value) {
  223. let param = 0
  224. if (value != '') {
  225. param = value
  226. }
  227. queryLocationDict(param).then(response => {
  228. this.locationCombo = response.data
  229. })
  230. }
  231. }
  232. }
  233. </script>