InRequestForm.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840
  1. <template>
  2. <div class="app-container">
  3. <div class="page-header">
  4. <div class="header-content">
  5. <!-- 按钮区域 -->
  6. <div class="header-buttons">
  7. <el-button
  8. type="primary"
  9. :loading="formLoading"
  10. plain
  11. size="mini"
  12. :disabled="isFormDisabled"
  13. @click="submitForm"
  14. >
  15. 保 存
  16. </el-button>
  17. <!-- 提交菜单 -->
  18. <el-dropdown class="ml-5" trigger="click">
  19. <el-button type="primary" size="mini" plain>
  20. 提交菜单
  21. <i class="el-icon-arrow-down el-icon--right" />
  22. </el-button>
  23. <el-dropdown-menu slot="dropdown">
  24. <el-dropdown-item :disabled="isFormDisabled"
  25. >提交</el-dropdown-item
  26. >
  27. <el-dropdown-item :disabled="isFormDisabled"
  28. >撤销</el-dropdown-item
  29. >
  30. </el-dropdown-menu>
  31. </el-dropdown>
  32. <!-- 审批菜单 -->
  33. <el-dropdown class="ml-5 mr-5" trigger="click">
  34. <el-button type="warning" size="mini" plain>
  35. 审批菜单
  36. <i class="el-icon-arrow-down el-icon--right" />
  37. </el-button>
  38. <el-dropdown-menu slot="dropdown">
  39. <el-dropdown-item :disabled="isFormDisabled"
  40. >审核</el-dropdown-item
  41. >
  42. <el-dropdown-item>反审核</el-dropdown-item>
  43. </el-dropdown-menu>
  44. </el-dropdown>
  45. <!-- <el-button @click="reset" plain>重置</el-button> -->
  46. <el-button
  47. type="primary"
  48. size="mini"
  49. plain
  50. :disabled="isFormDisabled"
  51. @click="add()"
  52. >新增明细</el-button
  53. >
  54. <el-button plain size="mini" @click="handleCancel">返回</el-button>
  55. </div>
  56. </div>
  57. </div>
  58. <el-form
  59. ref="formRef"
  60. v-loading="formLoading"
  61. :model="formData"
  62. :rules="formRules"
  63. label-width="150px"
  64. class="form-container"
  65. >
  66. <el-row :gutter="20">
  67. <el-col :span="12"
  68. ><el-form-item label="业务类型" prop="businessType">
  69. <el-select
  70. v-model="formData.businessType"
  71. placeholder="请选择业务类型"
  72. :disabled="isFormDisabled"
  73. @change="changeBusinessType"
  74. >
  75. <el-option
  76. v-for="dict in getDictDatas('in_business_type')"
  77. :key="dict.value"
  78. :label="dict.label"
  79. :value="dict.value"
  80. />
  81. </el-select>
  82. </el-form-item>
  83. </el-col>
  84. <el-col :span="12">
  85. <el-form-item label="部门" prop="departmentNo">
  86. <DepartMentSelect
  87. ref="departMentSelect"
  88. v-model="formData.departmentNo"
  89. :disabled="isFormDisabled || !formData.businessType"
  90. placeholder="请选择部门"
  91. clearable
  92. @change="selectDepart"
  93. />
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="12"
  97. ><el-form-item label="业务分类名称" prop="businessDescribe">
  98. <el-select
  99. v-model="formData.businessDescribe"
  100. :disabled="isFormDisabled || !formData.businessType"
  101. placeholder="请选择业务类型"
  102. @change="changeBusinessDescribe"
  103. >
  104. <el-option
  105. v-for="dict in businessDescribeList"
  106. :key="dict.label"
  107. :label="dict.label"
  108. :value="dict.label"
  109. />
  110. </el-select> </el-form-item
  111. ></el-col>
  112. <el-col :span="12"
  113. ><el-form-item label="优先级" prop="priority">
  114. <el-select
  115. v-model="formData.priority"
  116. :disabled="isFormDisabled || !formData.businessType"
  117. placeholder="请选择优先级"
  118. >
  119. <el-option
  120. v-for="dict in getDictDatas('priority')"
  121. :key="dict.value"
  122. :label="dict.label"
  123. :value="dict.value"
  124. />
  125. </el-select>
  126. </el-form-item>
  127. </el-col>
  128. <el-col :span="12">
  129. <el-form-item label="供应商编码" prop="supplierCode">
  130. <el-input
  131. v-model="formData.supplierCode"
  132. :disabled="isFormDisabled || !formData.businessType"
  133. placeholder="请输入供应商编码"
  134. />
  135. </el-form-item>
  136. </el-col>
  137. <el-col :span="12">
  138. <el-form-item label="客户编码" prop="customerCode">
  139. <el-input
  140. v-model="formData.customerCode"
  141. :disabled="isFormDisabled || !formData.businessType"
  142. placeholder="请输入客户编码"
  143. />
  144. </el-form-item>
  145. </el-col>
  146. <el-col :span="12">
  147. <el-form-item label="源单编号" prop="sourceOrderNo">
  148. <el-select
  149. v-model="formData.sourceOrderNo"
  150. filterable
  151. remote
  152. :disabled="isFormDisabled || !formData.businessType"
  153. reserve-keyword
  154. placeholder="请输入源单编号"
  155. :remote-method="remoteMethod"
  156. :loading="loading"
  157. @change="changeSourceOrderNo"
  158. >
  159. <el-option
  160. v-for="item in sourceOrderNoList"
  161. :key="item.sourceOrderNo"
  162. :label="item.sourceOrderNo"
  163. :value="item.sourceOrderNo"
  164. />
  165. </el-select>
  166. </el-form-item>
  167. </el-col>
  168. <el-col :span="12">
  169. <el-form-item label="预计出入库时间" prop="expectedTime">
  170. <el-date-picker
  171. v-model="formData.expectedTime"
  172. :disabled="isFormDisabled || !formData.businessType"
  173. clearable
  174. type="date"
  175. value-format="timestamp"
  176. placeholder="选择预计出入库时间"
  177. /> </el-form-item
  178. ></el-col>
  179. <el-col :span="12">
  180. <el-form-item label="实际出入库时间" prop="actualTime">
  181. <el-date-picker
  182. v-model="formData.actualTime"
  183. clearable
  184. :disabled="isFormDisabled || !formData.businessType"
  185. type="date"
  186. value-format="timestamp"
  187. placeholder="选择实际出入库时间"
  188. /> </el-form-item
  189. ></el-col>
  190. <el-col :span="12">
  191. <el-form-item label="备注" prop="remark">
  192. <el-input
  193. v-model="formData.remark"
  194. :disabled="isFormDisabled || !formData.businessType"
  195. placeholder="请输入备注"
  196. /> </el-form-item
  197. ></el-col>
  198. <el-col :span="12">
  199. <el-form-item label="存储地点" prop="warehouseId">
  200. <el-select
  201. v-model="formData.warehouseId"
  202. filterable
  203. remote
  204. :disabled="isFormDisabled || !formData.businessType"
  205. reserve-keyword
  206. placeholder="请输入存储地点"
  207. :remote-method="remoteWarehouse"
  208. :loading="loading"
  209. >
  210. <el-option
  211. v-for="item in warehouseList"
  212. :key="item.erpId"
  213. :label="item.name"
  214. :value="item.erpId"
  215. />
  216. </el-select>
  217. </el-form-item>
  218. </el-col>
  219. <el-col :span="12">
  220. <el-form-item label="状态" prop="status" aria-disabled="true">
  221. <el-select
  222. v-model="formData.status"
  223. disabled
  224. placeholder="请选择状态"
  225. >
  226. <el-option
  227. v-for="dict in getDictDatas('in_out_status')"
  228. :key="dict.value"
  229. :label="dict.label"
  230. :value="dict.value"
  231. />
  232. </el-select>
  233. </el-form-item>
  234. </el-col>
  235. </el-row>
  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="sourceLineNo"
  249. width="160"
  250. show-overflow-tooltip
  251. />
  252. <el-table-column
  253. label="物料编码"
  254. align="center"
  255. prop="materialNo"
  256. width="200"
  257. show-overflow-tooltip
  258. >
  259. <template v-slot="scope">
  260. <el-select
  261. v-model="scope.row.materialNo"
  262. filterable
  263. remote
  264. reserve-keyword
  265. placeholder="请选择物料编码"
  266. :remote-method="
  267. (query) => remoteMaterialSearch(query, 'code', scope.$index)
  268. "
  269. :loading="loading"
  270. @change="(value) => changeMaterial(value, scope.$index, 'code')"
  271. >
  272. <el-option
  273. v-for="item in materialNoList"
  274. :key="item.code"
  275. :label="item.code"
  276. :value="item.code"
  277. />
  278. </el-select>
  279. </template>
  280. </el-table-column>
  281. <el-table-column
  282. label="物料名称"
  283. align="center"
  284. prop="materialName"
  285. width="200"
  286. show-overflow-tooltip
  287. >
  288. <template v-slot="scope">
  289. <el-select
  290. v-model="scope.row.materialName"
  291. filterable
  292. remote
  293. reserve-keyword
  294. placeholder="请选择物料名称"
  295. :remote-method="
  296. (query) => remoteMaterialSearch(query, 'name', scope.$index)
  297. "
  298. :loading="loading"
  299. @change="(value) => changeMaterial(value, scope.$index, 'name')"
  300. >
  301. <el-option
  302. v-for="item in materialNameList"
  303. :key="item.code"
  304. :label="item.name"
  305. :value="item.name"
  306. />
  307. </el-select>
  308. </template>
  309. </el-table-column>
  310. <el-table-column
  311. label="客户编码"
  312. align="center"
  313. prop="customerCode"
  314. width="150"
  315. show-overflow-tooltip
  316. />
  317. <el-table-column
  318. label="客户名称"
  319. align="center"
  320. prop="customerName"
  321. width="160"
  322. show-overflow-tooltip
  323. />
  324. <el-table-column
  325. label="本次出入数量"
  326. align="center"
  327. prop="nowDeliveredQty"
  328. width="160"
  329. >
  330. <template slot-scope="scope">
  331. <el-input
  332. v-model="scope.row.nowDeliveredQty"
  333. :disabled="isFormDisabled"
  334. @change="deliverChange"
  335. />
  336. </template>
  337. </el-table-column>
  338. <el-table-column
  339. label="已出入数量"
  340. align="center"
  341. prop="completedQty"
  342. width="120"
  343. />
  344. <el-table-column
  345. label="应出入数量"
  346. align="center"
  347. prop="planQty"
  348. width="120"
  349. />
  350. <el-table-column
  351. label="申请数量"
  352. align="center"
  353. prop="requireQty"
  354. width="120"
  355. />
  356. <el-table-column
  357. label="单位"
  358. align="center"
  359. prop="unitName"
  360. width="150"
  361. show-overflow-tooltip
  362. />
  363. <el-table-column label="行备注" align="center" prop="remark" width="200">
  364. <template slot-scope="scope">
  365. <el-input v-model="scope.row.remark" :disabled="isFormDisabled" />
  366. </template>
  367. </el-table-column>
  368. <el-table-column
  369. label="操作"
  370. align="center"
  371. fixed="right"
  372. width="150px"
  373. class-name="small-padding fixed-width"
  374. >
  375. <template v-slot="scope">
  376. <el-button
  377. size="mini"
  378. type="text"
  379. icon="el-icon-delete"
  380. :disabled="isFormDisabled"
  381. @click="handleDelete(scope)"
  382. >删除</el-button
  383. >
  384. </template>
  385. </el-table-column>
  386. </el-table>
  387. </div>
  388. </template>
  389. <script>
  390. import * as InRequestApi from "@/api/wms/output/inrequest";
  391. import DepartMentSelect from "./components/DepartMentSelect.vue";
  392. // import ShipmentNotification from "./ShipmentNotification.vue";
  393. export default {
  394. name: "InRequestForm",
  395. components: {
  396. // ShipmentNotification,
  397. DepartMentSelect,
  398. },
  399. data() {
  400. return {
  401. materialNameList: [],
  402. materialNoList: [],
  403. sourceOrderNoList: [],
  404. businessDescribeList: [],
  405. warehouseList: [],
  406. loading: false,
  407. // 页面标题
  408. dialogTitle: "",
  409. // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  410. formLoading: false,
  411. // 表单参数
  412. formData: {
  413. departmentNo: undefined,
  414. id: undefined,
  415. requestNo: undefined,
  416. requestType: undefined,
  417. businessType: undefined,
  418. businessCategory: undefined,
  419. businessDescribe: undefined,
  420. businessSubType: undefined,
  421. status: undefined,
  422. priority: undefined,
  423. warehouseId: undefined,
  424. relatedWarehouseId: undefined,
  425. supplierCode: undefined,
  426. customerCode: undefined,
  427. sourceOrderNo: undefined,
  428. expectedTime: undefined,
  429. actualTime: undefined,
  430. totalQty: undefined,
  431. totalSku: undefined,
  432. totalLine: undefined,
  433. remark: undefined,
  434. extendInfo: undefined,
  435. submitter: undefined,
  436. submitTime: undefined,
  437. auditor: undefined,
  438. auditTime: undefined,
  439. erpWriteFlag: undefined,
  440. erpErrMsg: undefined,
  441. erpBackId: undefined,
  442. list: [],
  443. },
  444. // 表单校验
  445. formRules: {
  446. departmentNo: [
  447. { required: true, message: "请选择部门", trigger: "blur" },
  448. ],
  449. requestNo: [
  450. { required: true, message: "申请单号不能为空", trigger: "blur" },
  451. ],
  452. expectedTime: [
  453. { required: true, message: "预计入库时间不能为空", trigger: "blur" },
  454. ],
  455. requestType: [
  456. {
  457. required: true,
  458. message: "申请类型(0入库 1出库)不能为空",
  459. trigger: "change",
  460. },
  461. ],
  462. businessType: [
  463. {
  464. required: true,
  465. message:
  466. "业务类型(0采购入库 3生产退料 4成品入库 6销售退货 8委外退料 9委外入库 11其他入库 13转移调拨 14仓库盘点)不能为空",
  467. trigger: "change",
  468. },
  469. ],
  470. businessSubType: [
  471. {
  472. required: true,
  473. message: "业务子类型(0正常 1补料)不能为空",
  474. trigger: "change",
  475. },
  476. ],
  477. status: [
  478. {
  479. required: false,
  480. message:
  481. "状态(0草稿 1已提交 2已审核 3执行中 4已完成 5已取消)不能为空",
  482. trigger: "blur",
  483. },
  484. ],
  485. priority: [
  486. {
  487. required: true,
  488. message: "优先级(0普通 1紧急 2加急)不能为空",
  489. trigger: "blur",
  490. },
  491. ],
  492. },
  493. };
  494. },
  495. computed: {
  496. isFormDisabled() {
  497. // 当路径有id且status>=2时禁用表单
  498. const hasId = this.$route.query.id;
  499. const status = parseInt(this.formData.status || "0");
  500. return hasId && status >= 2;
  501. },
  502. },
  503. watch: {
  504. "$route.query.id": {
  505. immediate: true,
  506. handler(newId) {
  507. // 只有当前路由路径包含"/inStorageManage/in-request/InRequestForm"时才处理,避免标签跳转时错误调用API
  508. if (
  509. this.$route.path.includes("/inStorageManage/in-request/InRequestForm")
  510. ) {
  511. if (newId) {
  512. this.initData(newId);
  513. } else {
  514. this.reset();
  515. }
  516. }
  517. },
  518. },
  519. },
  520. created() {
  521. // 从路由参数获取ID
  522. const id = this.$route.query.id;
  523. if (id) {
  524. this.dialogTitle = "修改";
  525. // this.initData(id)
  526. } else {
  527. this.dialogTitle = "新增";
  528. }
  529. },
  530. methods: {
  531. handleDelete(row) {
  532. console.log(row);
  533. this.formData.list.splice(row.$index, 1);
  534. },
  535. selectDepart(item) {
  536. this.formData.deptCode = item.code;
  537. this.formData.deptName = item.name;
  538. },
  539. remoteMaterialSearch(query, type, index) {
  540. if (query !== "") {
  541. this.loading = true;
  542. setTimeout(async () => {
  543. this.loading = false;
  544. const params = {
  545. pageSize: 999,
  546. };
  547. // 根据搜索类型设置参数
  548. if (type === "code") {
  549. params.code = query;
  550. } else {
  551. params.name = query;
  552. }
  553. try {
  554. const {
  555. data: { list },
  556. } = await InRequestApi.getMaterialPage(params);
  557. // 每次搜索都重新赋值,保证列表始终是最新数据
  558. if (type === "code") {
  559. this.materialNoList = list || [];
  560. } else {
  561. this.materialNameList = list || [];
  562. }
  563. } catch (error) {
  564. console.error("搜索物料失败:", error);
  565. // 出错时清空列表
  566. if (type === "code") {
  567. this.materialNoList = [];
  568. } else {
  569. this.materialNameList = [];
  570. }
  571. }
  572. }, 200);
  573. } else {
  574. // 清空对应的列表
  575. if (type === "code") {
  576. this.materialNoList = [];
  577. } else {
  578. this.materialNameList = [];
  579. }
  580. }
  581. },
  582. remoteMethod(query) {
  583. if (query !== "") {
  584. const that = this;
  585. this.loading = true;
  586. setTimeout(async () => {
  587. this.loading = false;
  588. const { data } = await InRequestApi.getSourceOrder({
  589. businessType: that.formData.businessType,
  590. sourceOrderNo: query,
  591. pageSize: 999,
  592. });
  593. this.sourceOrderNoList = data || [];
  594. }, 200);
  595. } else {
  596. this.sourceOrderNoList = [];
  597. }
  598. },
  599. add() {
  600. if (!this.formData.businessType) {
  601. return this.$message.error("请先选择业务类型");
  602. }
  603. this.formData.list = this.formData.list || [];
  604. this.formData.list.push({});
  605. this.formData = { ...this.formData };
  606. },
  607. remoteWarehouse(query) {
  608. if (query !== "") {
  609. const that = this;
  610. this.loading = true;
  611. setTimeout(async () => {
  612. this.loading = false;
  613. const {
  614. data: { list },
  615. } = await InRequestApi.getStockPage({
  616. name: query,
  617. pageSize: 999,
  618. });
  619. this.warehouseList = list || [];
  620. }, 200);
  621. } else {
  622. this.warehouseList = [];
  623. }
  624. },
  625. changeSourceOrderNo(value) {
  626. this.sourceOrderNoList.map((v) => {
  627. if (v.sourceOrderNo == value) {
  628. this.formData.list = v.list;
  629. }
  630. });
  631. },
  632. changeMaterial(value, index, type) {
  633. // 根据选择的类型获取对应的列表
  634. const list =
  635. type === "code" ? this.materialNoList : this.materialNameList;
  636. // 查找选中的物料信息
  637. let selectedMaterial = null;
  638. if (type === "code") {
  639. selectedMaterial = list.find((item) => item.code === value);
  640. // 如果在当前列表找不到,尝试从另一个列表找
  641. if (!selectedMaterial) {
  642. selectedMaterial = this.materialNameList.find(
  643. (item) => item.code === value
  644. );
  645. }
  646. } else {
  647. selectedMaterial = list.find((item) => item.name === value);
  648. // 如果在当前列表找不到,尝试从另一个列表找
  649. if (!selectedMaterial) {
  650. selectedMaterial = this.materialNoList.find(
  651. (item) => item.name === value
  652. );
  653. }
  654. }
  655. if (selectedMaterial) {
  656. // 更新表单中的物料信息
  657. const newRow = {
  658. ...this.formData.list[index],
  659. materialNo: selectedMaterial.code,
  660. materialName: selectedMaterial.name,
  661. unitName: selectedMaterial.unit || "",
  662. };
  663. // 更新行数据
  664. this.$set(this.formData.list, index, newRow);
  665. // 强制更新列表,确保页面正常展示
  666. this.formData.list = [...this.formData.list];
  667. }
  668. },
  669. changeBusinessDescribe(e) {
  670. this.businessDescribeList.map((v) => {
  671. if (v.label == e) {
  672. this.formData.businessCategory = v.value;
  673. }
  674. });
  675. },
  676. async changeBusinessType(value) {
  677. this.formData.businessType = value;
  678. this.formData.businessDescribe = "";
  679. this.formData.businessCategory = "";
  680. const { data } = await InRequestApi.getDictByOrderType({
  681. orderType: value,
  682. });
  683. this.businessDescribeList = data;
  684. },
  685. /** 初始化数据 */
  686. async initData(id) {
  687. this.formLoading = true;
  688. try {
  689. const res = await InRequestApi.getRequest(id);
  690. res.data.businessType = res.data.businessType
  691. ? res.data.businessType.toString()
  692. : "0";
  693. res.data.businessDescribe = res.data.businessDescribe
  694. ? res.data.businessDescribe.toString()
  695. : "";
  696. res.data.priority = res.data.priority
  697. ? res.data.priority.toString()
  698. : "0";
  699. res.data.status = res.data.status ? res.data.status.toString() : "0";
  700. // res.data.list = res.data.list || [];
  701. this.formData = res.data;
  702. } finally {
  703. this.formLoading = false;
  704. }
  705. },
  706. /** 提交按钮 */
  707. async submitForm() {
  708. // 校验主表
  709. await this.$refs["formRef"].validate();
  710. this.formLoading = true;
  711. try {
  712. const data = this.formData;
  713. data.list = data.list
  714. .filter((v) => v.nowDeliveredQty)
  715. .map(
  716. ({
  717. completedQty,
  718. actualQty,
  719. stock_code,
  720. area_code,
  721. location_code,
  722. status,
  723. lineNo,
  724. inventory_status,
  725. ...rest
  726. }) => rest
  727. );
  728. // 修改的提交
  729. if (data.id) {
  730. await InRequestApi.updateRequest(data);
  731. this.$modal.msgSuccess("修改成功");
  732. this.$router.push({
  733. path: "/inStorageManage/in-request",
  734. });
  735. return;
  736. }
  737. // 添加的提交
  738. await InRequestApi.createRequest(data);
  739. this.$modal.msgSuccess("新增成功");
  740. this.$router.push({
  741. path: "/inStorageManage/in-request",
  742. });
  743. } finally {
  744. this.formLoading = false;
  745. }
  746. },
  747. /** 返回按钮 */
  748. handleCancel() {
  749. this.reset();
  750. this.$router.push({
  751. path: "/inStorageManage/in-request",
  752. });
  753. },
  754. /** 表单重置 */
  755. reset() {
  756. this.formData = {
  757. id: undefined,
  758. // list: [],
  759. requestNo: undefined,
  760. requestType: undefined,
  761. businessType: undefined,
  762. businessCategory: undefined,
  763. businessDescribe: undefined,
  764. businessSubType: undefined,
  765. status: undefined,
  766. priority: undefined,
  767. warehouseId: undefined,
  768. relatedWarehouseId: undefined,
  769. supplierCode: undefined,
  770. customerCode: undefined,
  771. sourceOrderNo: undefined,
  772. expectedTime: undefined,
  773. actualTime: undefined,
  774. totalQty: undefined,
  775. totalSku: undefined,
  776. totalLine: undefined,
  777. remark: undefined,
  778. extendInfo: undefined,
  779. submitter: undefined,
  780. submitTime: undefined,
  781. auditor: undefined,
  782. auditTime: undefined,
  783. erpWriteFlag: undefined,
  784. erpErrMsg: undefined,
  785. erpBackId: undefined,
  786. list: [],
  787. };
  788. this.resetForm("formRef");
  789. },
  790. deliverChange(val) {
  791. // 这里可以写“本次出入数量”变化后的校验或计算逻辑
  792. console.log("deliverChange", val);
  793. },
  794. },
  795. };
  796. </script>
  797. <style scoped>
  798. .page-header {
  799. margin-bottom: 20px;
  800. padding: 15px 0;
  801. border-bottom: 1px solid #eee;
  802. }
  803. .header-content {
  804. display: flex;
  805. flex-direction: column;
  806. align-items: flex-start;
  807. }
  808. .breadcrumb {
  809. margin-bottom: 15px;
  810. }
  811. .header-buttons {
  812. display: flex;
  813. justify-content: flex-start;
  814. align-items: center;
  815. }
  816. .header-buttons .el-button {
  817. margin-right: 10px;
  818. }
  819. .form-container {
  820. margin-bottom: 20px;
  821. }
  822. </style>