docOrderDetails-add-or-update.vue 9.8 KB

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