InRequestForm.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. <template>
  2. <div class="app-container">
  3. <!-- 对话框(添加 / 修改) -->
  4. <el-dialog
  5. v-dialogDrag
  6. :title="dialogTitle"
  7. :visible.sync="dialogVisible"
  8. width="65%"
  9. append-to-body
  10. >
  11. <el-form
  12. ref="formRef"
  13. v-loading="formLoading"
  14. :model="formData"
  15. :rules="formRules"
  16. label-width="150px"
  17. >
  18. <el-col :span="12"
  19. ><el-form-item label="业务类型" prop="businessType">
  20. <el-select
  21. v-model="formData.businessType"
  22. @change="changeBusinessType"
  23. placeholder="请选择业务类型"
  24. >
  25. <el-option
  26. v-for="dict in getDictDatas('inout_business_type')"
  27. :key="dict.label"
  28. :label="dict.label"
  29. :value="dict.label"
  30. />
  31. </el-select> </el-form-item
  32. ></el-col>
  33. <el-col :span="12"
  34. ><el-form-item label="业务分类名称" prop="businessDescribe">
  35. <!-- <el-input
  36. v-model="formData.businessDescribe"
  37. :disabled="formData.businessType ? false : true"
  38. placeholder="请输入业务分类名称"
  39. /> -->
  40. <el-select
  41. v-model="formData.businessDescribe"
  42. :disabled="formData.businessType ? false : true"
  43. placeholder="请选择业务类型"
  44. >
  45. <el-option
  46. v-for="dict in businessDescribeList"
  47. :key="dict.label"
  48. :label="dict.label"
  49. :value="dict.label"
  50. />
  51. </el-select> </el-form-item
  52. ></el-col>
  53. <!-- <el-form-item label="申请单号" prop="requestNo">
  54. <el-input v-model="formData.requestNo" placeholder="请输入申请单号" />
  55. </el-form-item>
  56. <el-form-item label="申请类型" prop="requestType">
  57. <el-select
  58. v-model="formData.requestType"
  59. placeholder="请选择申请类型"
  60. >
  61. <el-option label="请选择字典生成" value="" />
  62. </el-select>
  63. </el-form-item> -->
  64. <!-- <el-form-item label="业务分类编码" prop="businessCategory">
  65. <el-input
  66. :disabled="formData.businessType ? false : true"
  67. v-model="formData.businessCategory"
  68. placeholder="请输入业务分类编码"
  69. />
  70. </el-form-item> -->
  71. <!-- <el-form-item label="业务子类型" prop="businessSubType">
  72. <el-select
  73. v-model="formData.businessSubType"
  74. :disabled="formData.businessType ? false : true"
  75. placeholder="请选择业务子类型"
  76. >
  77. <el-option label="请选择字典生成" value="" />
  78. </el-select>
  79. </el-form-item> -->
  80. <!-- <el-form-item label="状态" prop="status">
  81. <el-select
  82. v-model="formData.status"
  83. placeholder="请选择状态"
  84. :disabled="formData.businessType ? false : true"
  85. >
  86. <el-option label="请选择字典生成" value="" />
  87. </el-select>
  88. </el-form-item> -->
  89. <el-col :span="12"
  90. ><el-form-item label="优先级" prop="priority">
  91. <el-select
  92. v-model="formData.priority"
  93. :disabled="formData.businessType ? false : true"
  94. placeholder="请选择优先级"
  95. >
  96. <el-option
  97. v-for="dict in getDictDatas('priority')"
  98. :key="dict.value"
  99. :label="dict.label"
  100. :value="dict.value"
  101. />
  102. </el-select>
  103. </el-form-item>
  104. </el-col>
  105. <el-col :span="12">
  106. <el-form-item label="供应商编码" prop="supplierCode">
  107. <el-input
  108. v-model="formData.supplierCode"
  109. :disabled="formData.businessType ? false : true"
  110. placeholder="请输入供应商编码"
  111. />
  112. </el-form-item>
  113. </el-col>
  114. <el-col :span="12">
  115. <el-form-item label="客户编码" prop="customerCode">
  116. <el-input
  117. v-model="formData.customerCode"
  118. :disabled="formData.businessType ? false : true"
  119. placeholder="请输入客户编码"
  120. />
  121. </el-form-item>
  122. </el-col>
  123. <el-col :span="12">
  124. <el-form-item label="源单编号" prop="sourceOrderNo">
  125. <!-- <el-input
  126. v-model="formData.sourceOrderNo"
  127. :disabled="formData.businessType ? false : true"
  128. placeholder="请输入源单编号"
  129. /> -->
  130. <el-select
  131. v-model="formData.sourceOrderNo"
  132. filterable
  133. remote
  134. :disabled="formData.businessType ? false : true"
  135. reserve-keyword
  136. placeholder="请输入源单编号"
  137. :remote-method="remoteMethod"
  138. :loading="loading"
  139. @change="changeSourceOrderNo"
  140. >
  141. <el-option
  142. v-for="item in sourceOrderNoList"
  143. :key="item.sourceOrderNo"
  144. :label="item.sourceOrderNo"
  145. :value="item.sourceOrderNo"
  146. >
  147. </el-option>
  148. </el-select>
  149. </el-form-item>
  150. </el-col>
  151. <el-col :span="12">
  152. <el-form-item label="预计出入库时间" prop="expectedTime">
  153. <el-date-picker
  154. v-model="formData.expectedTime"
  155. :disabled="formData.businessType ? false : true"
  156. clearable
  157. type="date"
  158. value-format="timestamp"
  159. placeholder="选择预计出入库时间"
  160. /> </el-form-item
  161. ></el-col>
  162. <el-col :span="12">
  163. <el-form-item label="实际出入库时间" prop="actualTime">
  164. <el-date-picker
  165. v-model="formData.actualTime"
  166. clearable
  167. :disabled="formData.businessType ? false : true"
  168. type="date"
  169. value-format="timestamp"
  170. placeholder="选择实际出入库时间"
  171. /> </el-form-item
  172. ></el-col>
  173. <!-- <el-form-item label="总数量" prop="totalQty">
  174. <el-input
  175. v-model="formData.totalQty"
  176. :disabled="formData.businessType ? false : true"
  177. placeholder="请输入总数量"
  178. />
  179. </el-form-item>
  180. <el-form-item label="总SKU数" prop="totalSku">
  181. <el-input
  182. v-model="formData.totalSku"
  183. :disabled="formData.businessType ? false : true"
  184. placeholder="请输入总SKU数"
  185. />
  186. </el-form-item>
  187. <el-form-item label="总行数" prop="totalLine">
  188. <el-input
  189. v-model="formData.totalLine"
  190. :disabled="formData.businessType ? false : true"
  191. placeholder="请输入总行数"
  192. />
  193. </el-form-item> -->
  194. <el-col :span="12">
  195. <el-form-item label="备注" prop="remark">
  196. <el-input
  197. v-model="formData.remark"
  198. :disabled="formData.businessType ? false : true"
  199. placeholder="请输入备注"
  200. /> </el-form-item
  201. ></el-col>
  202. <!-- <el-form-item label="提交人" prop="submitter">
  203. <el-input
  204. v-model="formData.submitter"
  205. :disabled="formData.businessType ? false : true"
  206. placeholder="请输入提交人"
  207. />
  208. </el-form-item>
  209. <el-form-item label="提交时间" prop="submitTime">
  210. <el-date-picker
  211. :disabled="formData.businessType ? false : true"
  212. v-model="formData.submitTime"
  213. clearable
  214. type="date"
  215. value-format="timestamp"
  216. placeholder="选择提交时间"
  217. />
  218. </el-form-item>
  219. <el-form-item label="审核人" prop="auditor">
  220. <el-input
  221. v-model="formData.auditor"
  222. :disabled="formData.businessType ? false : true"
  223. placeholder="请输入审核人"
  224. />
  225. </el-form-item>
  226. <el-form-item label="审核时间" prop="auditTime">
  227. <el-date-picker
  228. v-model="formData.auditTime"
  229. :disabled="formData.businessType ? false : true"
  230. clearable
  231. type="date"
  232. value-format="timestamp"
  233. placeholder="选择审核时间"
  234. />
  235. </el-form-item> -->
  236. </el-form>
  237. <el-table :data="formData.list" border size="mini">
  238. <el-table-column
  239. label="源单编号"
  240. align="center"
  241. prop="sourceRequestId"
  242. width="160"
  243. show-overflow-tooltip
  244. />
  245. <el-table-column
  246. label="物料编码"
  247. align="center"
  248. prop="materialNo"
  249. width="160"
  250. show-overflow-tooltip
  251. />
  252. <el-table-column
  253. label="物料名称"
  254. align="center"
  255. prop="materialName"
  256. width="150"
  257. show-overflow-tooltip
  258. />
  259. <el-table-column
  260. label="客户编码"
  261. align="center"
  262. prop="customerCode"
  263. width="150"
  264. show-overflow-tooltip
  265. />
  266. <el-table-column
  267. label="客户名称"
  268. align="center"
  269. prop="customerName"
  270. width="160"
  271. show-overflow-tooltip
  272. />
  273. <el-table-column
  274. label="本次出货数量"
  275. align="center"
  276. prop="nowDeliveredQty"
  277. >
  278. <template slot-scope="scope">
  279. <el-input
  280. v-model="scope.row.nowDeliveredQty"
  281. @change="deliverChange"
  282. />
  283. </template>
  284. </el-table-column>
  285. <el-table-column
  286. label="已出货数量"
  287. align="center"
  288. prop="deliveredQty"
  289. width="120"
  290. />
  291. <el-table-column
  292. label="应出货数量"
  293. align="center"
  294. prop="shouldDeliveredQty"
  295. width="120"
  296. />
  297. <el-table-column
  298. label="单位"
  299. align="center"
  300. prop="unitName"
  301. width="150"
  302. show-overflow-tooltip
  303. />
  304. <el-table-column label="行备注" align="center" prop="remark">
  305. <template slot-scope="scope">
  306. <el-input v-model="scope.row.remark" />
  307. </template>
  308. </el-table-column>
  309. </el-table>
  310. <div slot="footer" class="dialog-footer">
  311. <el-button type="primary" :disabled="formLoading" @click="submitForm"
  312. >确 定</el-button
  313. >
  314. <el-button @click="dialogVisible = false">取 消</el-button>
  315. </div>
  316. </el-dialog>
  317. <!-- <ShipmentNotification
  318. ref="shipmentNotification"
  319. :model="formData.sourceOrderNo"
  320. @createComplete="getList"
  321. /> -->
  322. </div>
  323. </template>
  324. <script>
  325. import * as InRequestApi from "@/api/wms/output/inrequest";
  326. // import ShipmentNotification from "./ShipmentNotification.vue";
  327. export default {
  328. name: "InRequestForm",
  329. components: {
  330. // ShipmentNotification,
  331. },
  332. data() {
  333. return {
  334. sourceOrderNoList: [],
  335. businessDescribeList: [],
  336. loading: false,
  337. // 弹出层标题
  338. dialogTitle: "",
  339. // 是否显示弹出层
  340. dialogVisible: false,
  341. // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  342. formLoading: false,
  343. // 表单参数
  344. formData: {
  345. id: undefined,
  346. requestNo: undefined,
  347. requestType: undefined,
  348. businessType: undefined,
  349. businessCategory: undefined,
  350. businessDescribe: undefined,
  351. businessSubType: undefined,
  352. status: undefined,
  353. priority: undefined,
  354. warehouseId: undefined,
  355. relatedWarehouseId: undefined,
  356. supplierCode: undefined,
  357. customerCode: undefined,
  358. sourceOrderNo: undefined,
  359. expectedTime: undefined,
  360. actualTime: undefined,
  361. totalQty: undefined,
  362. totalSku: undefined,
  363. totalLine: undefined,
  364. remark: undefined,
  365. extendInfo: undefined,
  366. submitter: undefined,
  367. submitTime: undefined,
  368. auditor: undefined,
  369. auditTime: undefined,
  370. erpWriteFlag: undefined,
  371. erpErrMsg: undefined,
  372. erpBackId: undefined,
  373. list: [],
  374. },
  375. // 表单校验
  376. formRules: {
  377. requestNo: [
  378. { required: true, message: "申请单号不能为空", trigger: "blur" },
  379. ],
  380. requestType: [
  381. {
  382. required: true,
  383. message: "申请类型(0入库 1出库)不能为空",
  384. trigger: "change",
  385. },
  386. ],
  387. businessType: [
  388. {
  389. required: true,
  390. message:
  391. "业务类型(0采购入库 3生产退料 4成品入库 6销售退货 8委外退料 9委外入库 11其他入库 13转移调拨 14仓库盘点)不能为空",
  392. trigger: "change",
  393. },
  394. ],
  395. businessSubType: [
  396. {
  397. required: true,
  398. message: "业务子类型(0正常 1补料)不能为空",
  399. trigger: "change",
  400. },
  401. ],
  402. status: [
  403. {
  404. required: true,
  405. message:
  406. "状态(0草稿 1已提交 2已审核 3执行中 4已完成 5已取消)不能为空",
  407. trigger: "blur",
  408. },
  409. ],
  410. priority: [
  411. {
  412. required: true,
  413. message: "优先级(0普通 1紧急 2加急)不能为空",
  414. trigger: "blur",
  415. },
  416. ],
  417. },
  418. };
  419. },
  420. methods: {
  421. remoteMethod(query) {
  422. if (query !== "") {
  423. let that = this;
  424. this.loading = true;
  425. setTimeout(async () => {
  426. this.loading = false;
  427. let { data } = await InRequestApi.getSourceOrder({
  428. businessType: that.formData.businessType,
  429. sourceOrderNo: query,
  430. });
  431. this.sourceOrderNoList = data || [];
  432. }, 200);
  433. } else {
  434. this.sourceOrderNoList = [];
  435. }
  436. },
  437. changeSourceOrderNo(value) {
  438. this.sourceOrderNoList.map((v) => {
  439. if (v.sourceOrderNo == value) {
  440. this.formData.list = v.list;
  441. }
  442. });
  443. },
  444. async changeBusinessType(value) {
  445. this.formData = {
  446. id: this.formData.id,
  447. businessType: this.formData.businessType,
  448. };
  449. this.formData = { ...this.formData };
  450. let { data } = await InRequestApi.getDictByOrderType({
  451. orderType: this.formData.businessType,
  452. });
  453. this.businessDescribeList = data;
  454. },
  455. /** 打开弹窗 */
  456. async open(id) {
  457. this.dialogVisible = true;
  458. this.reset();
  459. // 修改时,设置数据
  460. if (id) {
  461. this.formLoading = true;
  462. try {
  463. const res = await InRequestApi.getInRequest(id);
  464. res.data.businessType = res.data.businessType
  465. ? res.data.businessType.toString()
  466. : "0";
  467. res.data.businessDescribe = res.data.businessDescribe
  468. ? res.data.businessDescribe.toString()
  469. : "";
  470. res.data.priority = res.data.priority
  471. ? res.data.priority.toString()
  472. : "0";
  473. this.formData = res.data;
  474. this.dialogTitle = "修改";
  475. } finally {
  476. this.formLoading = false;
  477. }
  478. }
  479. this.dialogTitle = "新增";
  480. },
  481. /** 提交按钮 */
  482. async submitForm() {
  483. // 校验主表
  484. await this.$refs["formRef"].validate();
  485. this.formLoading = true;
  486. try {
  487. // this.$refs.shipmentNotification.open = true;
  488. const data = this.formData;
  489. // 修改的提交;
  490. if (data.id) {
  491. await InRequestApi.updateInRequest(data);
  492. this.$modal.msgSuccess("修改成功");
  493. this.dialogVisible = false;
  494. this.$emit("success");
  495. return;
  496. }
  497. // 添加的提交
  498. await InRequestApi.createInRequest(data);
  499. this.$modal.msgSuccess("新增成功");
  500. this.dialogVisible = false;
  501. this.$emit("success");
  502. } finally {
  503. this.formLoading = false;
  504. }
  505. },
  506. /** 表单重置 */
  507. reset() {
  508. this.formData = {
  509. id: undefined,
  510. requestNo: undefined,
  511. requestType: undefined,
  512. businessType: undefined,
  513. businessCategory: undefined,
  514. businessDescribe: undefined,
  515. businessSubType: undefined,
  516. status: undefined,
  517. priority: undefined,
  518. warehouseId: undefined,
  519. relatedWarehouseId: undefined,
  520. supplierCode: undefined,
  521. customerCode: undefined,
  522. sourceOrderNo: undefined,
  523. expectedTime: undefined,
  524. actualTime: undefined,
  525. totalQty: undefined,
  526. totalSku: undefined,
  527. totalLine: undefined,
  528. remark: undefined,
  529. extendInfo: undefined,
  530. submitter: undefined,
  531. submitTime: undefined,
  532. auditor: undefined,
  533. auditTime: undefined,
  534. erpWriteFlag: undefined,
  535. erpErrMsg: undefined,
  536. erpBackId: undefined,
  537. };
  538. this.resetForm("formRef");
  539. },
  540. },
  541. };
  542. </script>