addInvoiceDialog.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837
  1. <template>
  2. <ele-modal
  3. custom-class="ele-dialog-form long-dialog-form"
  4. :centered="true"
  5. v-if="visible"
  6. :visible.sync="visible"
  7. :title="title"
  8. :close-on-click-modal="false"
  9. :append-to-body="true"
  10. width="70%"
  11. :maxable="true"
  12. :resizable="true"
  13. @close="cancel"
  14. >
  15. <el-form
  16. ref="form"
  17. :model="form"
  18. :rules="rules"
  19. class="el-form-box"
  20. label-width="120px"
  21. >
  22. <headerTitle title="发货信息"></headerTitle>
  23. <el-row :gutter="12">
  24. <el-col :span="12">
  25. <el-form-item label="销售订单" prop="orderNo">
  26. <el-input
  27. clearable
  28. v-model="form.orderNo"
  29. @click.native="handleOrderBtn"
  30. placeholder="请输入"
  31. :disabled="!!saleOrderData.id"
  32. />
  33. </el-form-item>
  34. </el-col>
  35. <el-col :span="12">
  36. <el-form-item label="受托收货单">
  37. <el-input
  38. clearable
  39. :disabled="!!saleOrderData.id"
  40. v-model="form.entrustedCode"
  41. @click.native="handleEntrustedReceive"
  42. placeholder="请输入"
  43. />
  44. </el-form-item>
  45. </el-col>
  46. </el-row>
  47. <el-row :gutter="12">
  48. <el-col :span="12">
  49. <el-form-item label="客户名称" prop="contactName">
  50. <el-input v-model="form.contactName" disabled></el-input>
  51. </el-form-item>
  52. </el-col>
  53. <el-col :span="12">
  54. <el-form-item label="客户联系人" prop="linkName">
  55. <el-input clearable v-model="form.linkName" placeholder="请输入" />
  56. </el-form-item>
  57. </el-col>
  58. </el-row>
  59. <el-row :gutter="12">
  60. <el-col :span="12">
  61. <el-form-item label="客户电话" prop="linkPhone">
  62. <el-input clearable v-model="form.linkPhone" placeholder="请输入" />
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="12">
  66. <el-form-item label="收货地址" prop="receiveAddress">
  67. <el-input
  68. clearable
  69. v-model="form.receiveAddress"
  70. placeholder="请输入"
  71. />
  72. </el-form-item>
  73. </el-col>
  74. <el-col :span="12">
  75. <el-form-item label="项目名称" prop="projectName">
  76. <el-input clearable v-model="form.projectName" :disabled="true" />
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="12">
  80. <el-form-item label="车牌号" prop="carNo">
  81. <el-select
  82. v-model="form.carNo"
  83. style="width: 100%"
  84. clearable
  85. multiple
  86. >
  87. <el-option
  88. :label="item.trakNumber"
  89. :value="item.trakNumber"
  90. v-for="(item, index) in carList"
  91. :key="index"
  92. ></el-option>
  93. </el-select>
  94. </el-form-item>
  95. </el-col>
  96. <el-col :span="12">
  97. <el-form-item label="托盘数" prop="trayNum">
  98. <el-input clearable v-model="form.trayNum" />
  99. </el-form-item>
  100. </el-col>
  101. <el-col :span="12">
  102. <el-form-item label="打印编码" prop="printNo">
  103. <el-input clearable v-model="form.printNo" />
  104. </el-form-item>
  105. </el-col>
  106. <el-col :span="12">
  107. <el-form-item prop="sendFiles" label="发货附件">
  108. <fileMain v-model="form.sendFiles"></fileMain>
  109. </el-form-item>
  110. </el-col>
  111. <el-col :span="12">
  112. <el-form-item prop="repliedFiles" label="回执附件">
  113. <fileMain v-model="form.repliedFiles"></fileMain>
  114. </el-form-item>
  115. </el-col>
  116. <el-col :span="12">
  117. <el-form-item prop="makerName" label="制单人" v-if="form.makerName">
  118. <el-input disabled v-model="form.makerName" />
  119. </el-form-item>
  120. </el-col>
  121. </el-row>
  122. </el-form>
  123. <el-tabs v-model="activeName" style="margin-top: 15px" type="border-card">
  124. <el-tab-pane label="物品清单" name="first">
  125. <inventoryTable
  126. :pricingWay="form.pricingWay"
  127. :entrustedCode="form.entrustedCode"
  128. ref="inventoryTableref"
  129. :orderId="form.orderId"
  130. :orderIds="form.orderIds"
  131. @replaceTableChange="replaceTableChange"
  132. :needProduce="saleOrderValue.needProduce"
  133. :typeIds="saleOrderValue.typedetailIds"
  134. :isTotalCount="isTotalCount"
  135. ></inventoryTable>
  136. </el-tab-pane>
  137. <el-tab-pane label="托盘清单" name="second">
  138. <palletTable
  139. ref="palletTableRef"
  140. @totalCountChange="totalCountChange"
  141. ></palletTable>
  142. </el-tab-pane>
  143. <el-tab-pane label="装载车叉车信息" name="third">
  144. <stowageTable ref="stowageTableRef"></stowageTable>
  145. </el-tab-pane>
  146. <el-tab-pane label="运输清单" name="fourth">
  147. <taskInfoTable
  148. ref="taskInfoTableRef"
  149. @setAddress="setAddress"
  150. ></taskInfoTable>
  151. </el-tab-pane>
  152. <el-tab-pane label="替代料" name="5">
  153. <replaceTable
  154. :pricingWay="form.pricingWay"
  155. ref="replaceRef"
  156. ></replaceTable>
  157. </el-tab-pane>
  158. </el-tabs>
  159. <div slot="footer" class="footer">
  160. <el-button type="primary" @click="save" v-click-once>保存</el-button>
  161. <el-button
  162. type="primary"
  163. v-if="isNeed_process_is_close"
  164. @click="save('sub')"
  165. v-click-once
  166. >提交</el-button
  167. >
  168. <el-button @click="cancel">返回</el-button>
  169. </div>
  170. <orderListDialog
  171. ref="orderListDialogRef"
  172. @changeParent="changeOrder"
  173. :contactData="contactData"
  174. :isAll="true"
  175. :isTotalCount="isTotalCount"
  176. ></orderListDialog>
  177. <!-- 受托发货单 -->
  178. <entrusted-receive-dialog
  179. :entrusted-receive-dialog-flag.sync="entrustedReceiveDialogFlag"
  180. v-if="entrustedReceiveDialogFlag"
  181. @changeParent="getInfo"
  182. ref="entrustedReceiveDialogRef"
  183. ></entrusted-receive-dialog>
  184. <process-submit-dialog
  185. :isNotNeedProcess="false"
  186. :processSubmitDialogFlag.sync="processSubmitDialogFlag"
  187. v-if="processSubmitDialogFlag"
  188. ref="processSubmitDialogRef"
  189. @reload="reload"
  190. ></process-submit-dialog>
  191. </ele-modal>
  192. </template>
  193. <script>
  194. import { treeClassifyCodeEnum } from '@/enum/dict';
  195. import fileUpload from '@/components/upload/fileUpload';
  196. import dictMixins from '@/mixins/dictMixins';
  197. import parentList from '@/views/saleManage/contact/components/parentList.vue';
  198. import {
  199. getSaleOrderDetail,
  200. getSaleOrderDetails
  201. } from '@/api/saleManage/saleorder';
  202. import taskInfoTable from './taskInfoTable.vue';
  203. import {
  204. addSendInformation,
  205. UpdateSendInformation,
  206. getSendSaleOrderrecordDetailSplit,
  207. submit
  208. } from '@/api/saleManage/saleordersendrecord';
  209. import { getPSaleEntrustedReceiveDetailAPI } from '@/api/saleManage/entrustedReceive';
  210. import { getcontactlink } from '@/api/saleManage/businessFollow';
  211. import inventoryTable from './inventoryTable.vue';
  212. import replaceTable from './replaceTable.vue';
  213. import stowageTable from './stowageTable.vue';
  214. import orderListDialog from './orderListDialog.vue';
  215. import { copyObj } from '@/utils/util';
  216. import entrustedReceiveDialog from './entrustedReceiveDialog.vue';
  217. import outSourceSendDialog from '@/views/purchasingManage/purchaseOrder/invoice/components/outSourceSendDialog.vue';
  218. import PalletTable from '@/views/saleManage/saleOrder/invoice/components/palletTable.vue';
  219. // import fileMain from '@/components/addDoc/index.vue';
  220. import processSubmitDialog from '@/BIZComponents/processSubmitDialog/processSubmitDialog.vue';
  221. import { carBookPageListAPI } from '@/api/transportManager/carBook';
  222. import { projectsGetByIdAPI } from '@/api/pro';
  223. import { parameterGetByCode } from '@/api/main/index.js';
  224. export default {
  225. mixins: [dictMixins],
  226. components: {
  227. processSubmitDialog,
  228. // fileMain,
  229. PalletTable,
  230. outSourceSendDialog,
  231. taskInfoTable,
  232. fileUpload,
  233. inventoryTable,
  234. orderListDialog,
  235. parentList,
  236. entrustedReceiveDialog,
  237. stowageTable,
  238. replaceTable
  239. },
  240. //客户管理数据
  241. props: {
  242. contactData: {
  243. type: Object,
  244. default: () => {
  245. return {};
  246. }
  247. },
  248. saleOrderData: {
  249. type: Object,
  250. default: () => {
  251. return {};
  252. }
  253. }
  254. },
  255. data() {
  256. let formDef = {
  257. id: '',
  258. contactId: '',
  259. contactName: '',
  260. entrustedCode: '',
  261. entrustedId: '',
  262. pricingWay: 1,
  263. sendFiles: [],
  264. repliedFiles: [],
  265. projectName: '',
  266. projectId: '',
  267. receiveAddress: '',
  268. deviceName: '',
  269. deviceId: '',
  270. carNo: [],
  271. linkName: '',
  272. linkPhone: '',
  273. orderNo: '',
  274. orderId: '',
  275. replied: 0,
  276. trayNum: '',
  277. replaceList: []
  278. };
  279. return {
  280. fullscreen: false,
  281. saleOrderValue: {},
  282. detailData: {},
  283. payWayOptions: [],
  284. delDetailIds: [],
  285. carList: [],
  286. visible: false,
  287. entrustedReceiveDialogFlag: false,
  288. processSubmitDialogFlag: false,
  289. title: '',
  290. activeName: 'first',
  291. formDef,
  292. form: copyObj(formDef),
  293. rules: {
  294. partaName: [
  295. { required: true, message: '请选择客户名称', trigger: 'change' }
  296. ],
  297. linkName: [
  298. { required: true, message: '请输入', trigger: ['blur', 'change'] }
  299. ],
  300. orderNo: [{ required: true, message: '请选择', trigger: 'change' }],
  301. receiveAddress: [
  302. { required: true, message: '请输入', trigger: 'change' }
  303. ],
  304. deviceName: [
  305. { required: true, message: '前选择车辆', trigger: 'change' }
  306. ]
  307. },
  308. // 提交状态
  309. loading: false,
  310. // 是否是修改
  311. isUpdate: false,
  312. businessId: '',
  313. isTotalCount: 0
  314. };
  315. },
  316. computed: {
  317. allcountAmount() {
  318. return this.$store.state.order.allcountAmount;
  319. }
  320. },
  321. methods: {
  322. //销售发货数量是否限制不能大于采购总数//0否 1是
  323. parameterGetByCode() {
  324. parameterGetByCode({
  325. code: 'saleOrder_invoice_productList_totalCount'
  326. }).then((res) => {
  327. this.isTotalCount = res.value;
  328. });
  329. },
  330. //选择订单回调
  331. changeOrder(obj) {
  332. this.form = Object.assign({}, this.form, {
  333. orderIds: obj.map((item) => item.id).toString(),
  334. orderNo: obj.map((item) => item.orderNo).toString()
  335. });
  336. this.getSaleOrderDetails(obj.map((item) => item.id));
  337. },
  338. setData(res, type) {
  339. let data = {
  340. ...res[0],
  341. orderIds: res.map((item) => item.id).toString(),
  342. orderNo: res.map((item) => item.orderNo).toString(),
  343. productList: res.map((item) => item.productList).flat(),
  344. typedetailIds: res.map((item) => item.typedetailIds).flat(),
  345. totalAmount: res.reduce(
  346. (sum, obj) =>
  347. sum + ((obj.totalAmount && Number(obj.totalAmount)) || 0),
  348. 0
  349. ),
  350. payAmount: res.reduce(
  351. (sum, obj) => sum + ((obj.payAmount && Number(obj.payAmount)) || 0),
  352. 0
  353. ),
  354. projectName: res
  355. .filter((item) => item.projectName)
  356. .map((item) => item.projectName)
  357. .toString(),
  358. projectId: res
  359. .filter((item) => item.projectId)
  360. .map((item) => item.projectId)
  361. .toString(),
  362. projectCode: res
  363. .filter((item) => item.projectCode)
  364. .map((item) => item.projectCode)
  365. .toString()
  366. };
  367. this.loading = false;
  368. this.saleOrderValue = data;
  369. this.partbAddress = data.partbAddress;
  370. if (type == 'sendInit') {
  371. return;
  372. }
  373. this.$nextTick(() => {
  374. let {
  375. partaId,
  376. partaName,
  377. partaTel,
  378. orderIds,
  379. orderNo,
  380. partaLinkName,
  381. partaAddress,
  382. productList,
  383. trayList,
  384. trakNoteList,
  385. totalAmount,
  386. payAmount,
  387. projectName,
  388. projectId,
  389. projectCode,
  390. totalPrice,
  391. receiveAddress
  392. } = data;
  393. if (productList && productList.length > 0) {
  394. productList.forEach((v) => {
  395. v.orderTotalCount = v.totalCount;
  396. v.extField = {};
  397. });
  398. }
  399. this.form = Object.assign({}, this.form, {
  400. contactId: partaId,
  401. contactName: partaName,
  402. linkName: partaLinkName,
  403. linkPhone: partaTel,
  404. orderNo,
  405. orderIds,
  406. receiveAddress: receiveAddress || partaAddress,
  407. productList,
  408. trakNoteList,
  409. trayList,
  410. totalAmount,
  411. totalPrice,
  412. payAmount,
  413. projectName,
  414. projectId,
  415. projectSn: projectCode
  416. });
  417. productList.forEach((item, index) => {
  418. item['tempId'] = index;
  419. item.id = '';
  420. });
  421. this.$refs.inventoryTableref &&
  422. this.$refs.inventoryTableref.putTableValue(productList);
  423. this.$refs.taskInfoTableRef &&
  424. this.$refs.taskInfoTableRef.putTableValue(trakNoteList);
  425. this.setAddress();
  426. if (projectId) {
  427. this.getProjectData(projectId);
  428. }
  429. });
  430. },
  431. // //获取订单详情
  432. // async getSaleOrderDetail(id) {
  433. // this.loading = true;
  434. // this.form = Object.assign({}, this.form, {
  435. // orderIds: id,
  436. // });
  437. // // const data = await getSaleOrderDetail(id);
  438. // this.setData(data);
  439. // },
  440. //获取订单详情 多id
  441. async getSaleOrderDetails(ids) {
  442. this.loading = true;
  443. let res = await getSaleOrderDetails(ids);
  444. if (res?.length) {
  445. this.setData(res);
  446. }
  447. },
  448. setAddress() {
  449. this.$refs.taskInfoTableRef.setAddress(
  450. this.partbAddress,
  451. this.form.receiveAddress
  452. );
  453. },
  454. async getProjectData(id) {
  455. const data = await projectsGetByIdAPI(id);
  456. if (data.contactAddressId) {
  457. this.form.receiveAddress =
  458. data.contactAddressName + data.contactAddress;
  459. this.setAddress();
  460. }
  461. if (data.contactRelationPhone) {
  462. this.form.linkPhone = data.contactRelationPhone;
  463. }
  464. if (data.contactRelationUserName) {
  465. this.form.linkName = data.contactRelationUserName;
  466. }
  467. },
  468. //发货单详情
  469. async getSendSaleOrderDetail(id) {
  470. this.businessId = id;
  471. this.loading = true;
  472. const data = await getSendSaleOrderrecordDetailSplit(id);
  473. // this.partbAddress = data.saleOrder[0].partbAddress;
  474. // this.saleOrderValue = data.saleOrder;
  475. if (data.saleOrderList) {
  476. this.setData(data.saleOrderList, 'sendInit');
  477. } else if (data.saleOrder) {
  478. this.setData([data.saleOrder], 'sendInit');
  479. }
  480. this.loading = false;
  481. if (data) {
  482. this.$nextTick(() => {
  483. data.productList.forEach((item) => {
  484. item['tempId'] = item.id;
  485. });
  486. data.carNo = data.carNo ? data.carNo.split(',') : [];
  487. this.form = data;
  488. this.$refs.inventoryTableref &&
  489. this.$refs.inventoryTableref.putTableValue(data.productList);
  490. this.$refs.stowageTableRef &&
  491. this.$refs.stowageTableRef.putTableValue(data.carList);
  492. this.$refs.taskInfoTableRef &&
  493. this.$refs.taskInfoTableRef.putTableValue(
  494. data.logisticTrakListNoteVOList
  495. );
  496. this.$refs.palletTableRef &&
  497. this.$refs.palletTableRef.putTableValue(data.trayList);
  498. this.$refs.replaceRef &&
  499. this.$refs.replaceRef.putTableValue(data.replaceList);
  500. });
  501. }
  502. },
  503. //选择受托收货单弹框
  504. handleEntrustedReceive(e) {
  505. if (e.target.nodeName == 'I') {
  506. this.form = Object.assign({}, this.form, {
  507. carNo: [],
  508. deviceName: '',
  509. deviceId: '',
  510. linkName: '',
  511. linkPhone: '',
  512. orderNo: '',
  513. orderId: '',
  514. contactId: '',
  515. contactName: '',
  516. entrustedCode: '',
  517. entrustedId: '',
  518. sendNoteNo: '',
  519. pricingWay: ''
  520. });
  521. this.$refs.inventoryTableref &&
  522. this.$refs.inventoryTableref.putTableValue([]);
  523. return;
  524. }
  525. this.searchParams = {
  526. orderId: this.form.orderId
  527. };
  528. this.entrustedReceiveDialogFlag = true;
  529. this.$nextTick(() => {
  530. this.$refs.entrustedReceiveDialogRef.init();
  531. });
  532. },
  533. //获取受托收货单数据回调
  534. async getInfo(row) {
  535. const data = await getPSaleEntrustedReceiveDetailAPI(row.id);
  536. this.$nextTick(() => {
  537. let {
  538. carNo,
  539. code,
  540. id,
  541. linkName,
  542. linkPhone,
  543. orderId,
  544. orderNo,
  545. productList,
  546. contactId,
  547. contactName,
  548. pricingWay = data?.saleOrder?.pricingWay
  549. } = data;
  550. if (productList && productList.length > 0) {
  551. productList.forEach((v) => {
  552. v.orderTotalCount = v.orderTotalCount || v.totalCount;
  553. v.extField = {};
  554. });
  555. }
  556. this.form = Object.assign({}, this.form, {
  557. contactId,
  558. contactName,
  559. linkName,
  560. linkPhone,
  561. orderNo,
  562. orderIds: orderId,
  563. productList,
  564. carNo: carNo ? carNo.split(',') : [],
  565. pricingWay,
  566. entrustedCode: code,
  567. entrustedId: id
  568. });
  569. productList.forEach((item, index) => {
  570. item.id = '';
  571. item['tempId'] = index;
  572. });
  573. this.$refs.inventoryTableref &&
  574. this.$refs.inventoryTableref.putTableValue(productList, code);
  575. });
  576. },
  577. //替代料
  578. replaceTableChange(list) {
  579. this.$refs.replaceRef.putTableValue(list, 'add');
  580. },
  581. //选择订单弹框
  582. handleOrderBtn(e) {
  583. if (e.target.nodeName == 'I') {
  584. this.form = Object.assign({}, this.form, {
  585. contactId: '',
  586. contactName: '',
  587. carNo: [],
  588. deviceName: '',
  589. deviceId: '',
  590. linkName: '',
  591. linkPhone: '',
  592. orderNo: '',
  593. orderId: '',
  594. pricingWay: '',
  595. entrustedCode: '',
  596. entrustedId: ''
  597. });
  598. this.$refs.inventoryTableref &&
  599. this.$refs.inventoryTableref.putTableValue([]);
  600. return;
  601. }
  602. let item = {
  603. id: this.form.orderId
  604. };
  605. this.$refs.orderListDialogRef.open(item);
  606. },
  607. //打开新增编辑弹框
  608. async open(type, row, orderId) {
  609. this.title = type === 'add' ? '新增发货单' : '修改';
  610. this.parameterGetByCode();
  611. this.visible = true;
  612. this.carList = await carBookPageListAPI({ pageNum: 1, size: 100 });
  613. if (orderId) {
  614. await this.getSaleOrderDetails(orderId);
  615. }
  616. if (this.saleOrderData.id) {
  617. await this.getSaleOrderDetails([this.saleOrderData.id]);
  618. }
  619. if (row && row?.id) {
  620. await this.getSendSaleOrderDetail(row?.id);
  621. }
  622. if (type == 'add') {
  623. this.isUpdate = false;
  624. } else {
  625. this.isUpdate = true;
  626. }
  627. },
  628. entrustedReceiveInit(row) {
  629. this.title = '新增发货单';
  630. this.visible = true;
  631. this.isUpdate = false;
  632. this.getInfo(row);
  633. },
  634. totalCountChange(num) {
  635. this.form.trayNum = num;
  636. },
  637. getValidate() {
  638. return Promise.all([
  639. new Promise((resolve, reject) => {
  640. this.$refs.form.validate((valid) => {
  641. if (!valid) {
  642. reject(false);
  643. } else {
  644. resolve(true);
  645. }
  646. });
  647. }),
  648. new Promise((resolve, reject) => {
  649. this.$refs.inventoryTableref.validateForm((valid) => {
  650. if (!valid) {
  651. reject(false);
  652. } else {
  653. resolve(true);
  654. }
  655. });
  656. }),
  657. new Promise((resolve, reject) => {
  658. this.$refs.taskInfoTableRef.getTableValidate((valid) => {
  659. if (!valid) {
  660. reject(false);
  661. } else {
  662. resolve(true);
  663. }
  664. });
  665. }),
  666. new Promise((resolve, reject) => {
  667. this.$refs.palletTableRef.validateForm((valid) => {
  668. if (!valid) {
  669. reject(false);
  670. } else {
  671. resolve(true);
  672. }
  673. });
  674. })
  675. ]).catch((e) => {
  676. return Promise.reject(e);
  677. });
  678. },
  679. async save(type) {
  680. try {
  681. await this.getValidate();
  682. // 表单验证通过,执行保存操作
  683. this.loading = true;
  684. if (!this.isUpdate) {
  685. delete this.form.id;
  686. }
  687. this.form.repliedFiles = this.form.repliedFiles || [];
  688. this.form.replied = this.form.repliedFiles.length > 0 ? 1 : 0;
  689. const replaceList =
  690. (this.$refs.replaceRef && this.$refs.replaceRef.getTableValue()) ||
  691. [];
  692. const productList = this.$refs.inventoryTableref.getTableValue();
  693. productList.forEach((item) => {
  694. if (
  695. replaceList.map((_item) => _item.relationId).includes(item.tempId)
  696. ) {
  697. item['isReplace'] = 1;
  698. }
  699. });
  700. let commitData = Object.assign({}, this.form, {
  701. productList,
  702. replaceList,
  703. trayList: this.$refs.palletTableRef.getTableValue(),
  704. carList: this.$refs.stowageTableRef.getTableValue(),
  705. trakNoteList: this.$refs.taskInfoTableRef.getTableValue()
  706. });
  707. commitData.carNo = commitData.carNo.toString();
  708. if (this.isUpdate) {
  709. UpdateSendInformation(commitData)
  710. .then((res) => {
  711. this.loading = false;
  712. this.$message.success('修改成功');
  713. if (type === 'sub') {
  714. this.sendSubmit(res);
  715. return;
  716. }
  717. this.cancel();
  718. this.$emit('done');
  719. })
  720. .catch((e) => {
  721. //this.loading = false;
  722. });
  723. } else {
  724. addSendInformation(commitData)
  725. .then((res) => {
  726. this.loading = false;
  727. this.$message.success('新增成功');
  728. if (type === 'sub') {
  729. this.sendSubmit(res);
  730. return;
  731. }
  732. this.cancel();
  733. this.$emit('done');
  734. })
  735. .catch((e) => {
  736. //this.loading = false;
  737. });
  738. }
  739. } catch (error) {
  740. console.log(error);
  741. // 表单验证未通过,不执行保存操作
  742. }
  743. },
  744. async sendSubmit(res) {
  745. const data = await getSendSaleOrderrecordDetailSplit(
  746. this.businessId || res
  747. );
  748. this.processSubmitDialogFlag = true;
  749. this.$nextTick(() => {
  750. let params = {
  751. businessId: this.businessId || res,
  752. businessKey:
  753. data.saleTypeName.indexOf('技改') != '-1'
  754. ? 'sele_order_send_correction'
  755. : data.saleTypeName.indexOf('三包') != '-1'
  756. ? 'eom_sh'
  757. : data.saleTypeName.indexOf('补发') != '-1'
  758. ? 'eom_sh'
  759. : data.saleTypeName.indexOf('赠品') != '-1'
  760. ? 'sale_order_send_giftAndOther'
  761. : 'sales_send_approve',
  762. formCreateUserId: data.createUserId,
  763. variables: {
  764. businessCode: data.docNo,
  765. businessName: data.contactName,
  766. businessType: '销售发货单'
  767. }
  768. };
  769. this.$refs.processSubmitDialogRef.init(params);
  770. });
  771. },
  772. reload() {
  773. this.cancel();
  774. this.$emit('done');
  775. },
  776. cancel() {
  777. this.$nextTick(() => {
  778. this.activeName = 'first';
  779. // 关闭后,销毁所有的表单数据
  780. this.$refs['otherForm'] && this.$refs['otherForm'].resetFields();
  781. this.$refs['formRef'] && this.$refs['formRef'].resetFields();
  782. this.$store.commit('order/clearUserData');
  783. this.form = copyObj(this.formDef);
  784. this.visible = false;
  785. });
  786. }
  787. }
  788. };
  789. </script>
  790. <style scoped lang="scss">
  791. .TotalAmount {
  792. font-size: 16px;
  793. padding-right: 30px;
  794. }
  795. .headbox {
  796. display: flex;
  797. justify-content: flex-start;
  798. align-items: center;
  799. .amount {
  800. font-size: 14px;
  801. font-weight: bold;
  802. margin-right: 20px;
  803. }
  804. }
  805. </style>