AddOrUpdate.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775
  1. <template>
  2. <el-dialog
  3. :title="title"
  4. :visible.sync="showDialog"
  5. width="80%"
  6. @close="handleClose"
  7. :close-on-click-modal="false"
  8. >
  9. <span>
  10. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  11. <el-row>
  12. <el-col :span="6">
  13. <el-form-item label="客户名称" prop="fCorpId">
  14. <el-select
  15. v-model="form.fCorpId"
  16. placeholder="请输入客户名称"
  17. :clearable="true"
  18. filterable
  19. size="mini"
  20. style="width: 180px"
  21. :disabled="true"
  22. >
  23. <el-option
  24. v-for="(dict, index) in fMblnoOptions"
  25. :key="index.fId"
  26. :label="dict.fName"
  27. :value="dict.fId"
  28. />
  29. </el-select>
  30. </el-form-item>
  31. </el-col>
  32. <el-col :span="6">
  33. <el-form-item label="业务类型" prop="billType">
  34. <el-select
  35. v-model="form.billType"
  36. placeholder="请选择业务类型"
  37. :disabled="true"
  38. size="mini"
  39. style="width: 180px"
  40. >
  41. <el-option
  42. v-for="(dict, index) in billTypeList"
  43. :key="index.dictSort"
  44. :label="dict.dictLabel"
  45. :value="dict.dictSort"
  46. />
  47. </el-select>
  48. </el-form-item>
  49. </el-col>
  50. <el-col :span="6">
  51. <el-form-item label="运输方式" prop="transType">
  52. <el-select
  53. v-model="form.transType"
  54. placeholder="请选择运输方式"
  55. :disabled="true"
  56. size="mini"
  57. style="width: 180px"
  58. >
  59. <el-option
  60. v-for="(dict, index) in transTypeList"
  61. :key="index.dictValue"
  62. :label="dict.dictLabel"
  63. :value="dict.dictValue"
  64. />
  65. </el-select>
  66. </el-form-item>
  67. </el-col>
  68. <el-col :span="6">
  69. <el-form-item label="运输性质" prop="transProp">
  70. <el-select
  71. v-model="form.transProp"
  72. placeholder="请选择运输方式"
  73. :disabled="true"
  74. size="mini"
  75. style="width: 180px"
  76. >
  77. <el-option
  78. v-for="(dict, index) in transPropList"
  79. :key="index.dictValue"
  80. :label="dict.dictLabel"
  81. :value="dict.dictValue"
  82. />
  83. </el-select>
  84. </el-form-item>
  85. </el-col>
  86. </el-row>
  87. <el-row>
  88. <el-col :span="6">
  89. <el-form-item label="提箱地点" prop="tLoadAddr">
  90. <el-input
  91. v-model="form.tLoadAddr"
  92. placeholder="请输入提箱地点"
  93. :disabled="true"
  94. size="mini"
  95. style="width: 180px"
  96. />
  97. </el-form-item>
  98. </el-col>
  99. <el-col :span="6">
  100. <el-form-item label="提箱时间" prop="loadDate">
  101. <el-date-picker
  102. clearable
  103. size="mini"
  104. style="width: 180px"
  105. v-model="form.tLoadDate"
  106. type="date"
  107. :disabled="true"
  108. value-format="yyyy-MM-dd"
  109. placeholder="选择卸箱时间"
  110. >
  111. </el-date-picker>
  112. </el-form-item>
  113. </el-col>
  114. <el-col :span="6">
  115. <el-form-item label="装货地点" prop="mdLoadAddr">
  116. <el-input
  117. v-model="form.tMdLoadAddr"
  118. placeholder="装货地点"
  119. :disabled="true"
  120. size="mini"
  121. style="width: 180px"
  122. />
  123. </el-form-item>
  124. </el-col>
  125. <el-col :span="6">
  126. <el-form-item label="装货时间" prop="mdLoadDate">
  127. <el-date-picker
  128. clearable
  129. size="mini"
  130. style="width: 180px"
  131. v-model="form.mdLoadDate"
  132. type="date"
  133. :disabled="true"
  134. value-format="yyyy-MM-dd"
  135. placeholder="选择装货时间"
  136. >
  137. </el-date-picker>
  138. </el-form-item>
  139. </el-col>
  140. <el-col :span="6">
  141. <el-form-item label="卸箱地点" prop="unLoadAddr">
  142. <el-input
  143. v-model="form.unLoadAddr"
  144. placeholder="请输入装卸箱地点"
  145. :disabled="true"
  146. size="mini"
  147. style="width: 180px"
  148. />
  149. </el-form-item>
  150. </el-col>
  151. <el-col :span="6">
  152. <el-form-item label="卸箱时间" prop="unLoadDate">
  153. <el-date-picker
  154. clearable
  155. size="mini"
  156. style="width: 180px"
  157. v-model="form.unLoadDate"
  158. type="date"
  159. :disabled="true"
  160. value-format="yyyy-MM-dd"
  161. placeholder="选择卸箱时间"
  162. >
  163. </el-date-picker>
  164. </el-form-item>
  165. </el-col>
  166. </el-row>
  167. <el-row>
  168. <el-col :span="6">
  169. <el-form-item label="提单号" prop="mblno">
  170. <el-input
  171. v-model="form.mblno"
  172. placeholder="请输入提单号"
  173. :disabled="true"
  174. size="mini"
  175. style="width: 180px"
  176. />
  177. </el-form-item>
  178. </el-col>
  179. <el-col :span="6">
  180. <el-form-item label="货品名称" prop="goodsId">
  181. <el-select
  182. v-model="form.goodsId"
  183. placeholder="请输入货品名称"
  184. :disabled="true"
  185. clearable
  186. filterable
  187. size="mini"
  188. style="width: 180px"
  189. >
  190. <el-option
  191. v-for="(dict, index) in goodsOptions"
  192. :key="index.fId"
  193. :label="dict.fName"
  194. :value="dict.fId"
  195. />
  196. </el-select>
  197. </el-form-item>
  198. </el-col>
  199. <el-col :span="6">
  200. <el-form-item label="计划件数" prop="qtyPlan">
  201. <el-input
  202. v-model="form.qtyPlan"
  203. placeholder="请输入计划件数"
  204. :disabled="true"
  205. v-input-limit="2"
  206. size="mini"
  207. style="width: 180px"
  208. />
  209. </el-form-item>
  210. </el-col>
  211. <el-col :span="6">
  212. <el-form-item label="重量(吨)" prop="weightPlan">
  213. <el-input
  214. v-model="form.weightPlan"
  215. placeholder="请输入计划重量"
  216. :disabled="true"
  217. v-input-limit="2"
  218. size="mini"
  219. style="width: 180px"
  220. />
  221. </el-form-item>
  222. </el-col>
  223. </el-row>
  224. <el-row>
  225. <el-col :span="6">
  226. <el-form-item label="船名" prop="ysl">
  227. <el-input
  228. v-model="form.ysl"
  229. placeholder="请输入船名"
  230. :disabled="true"
  231. size="mini"
  232. style="width: 180px"
  233. />
  234. </el-form-item>
  235. </el-col>
  236. <el-col :span="6">
  237. <el-form-item label="航次" prop="voy">
  238. <el-input
  239. v-model="form.voy"
  240. placeholder="请输入航次"
  241. :disabled="true"
  242. size="mini"
  243. style="width: 180px"
  244. />
  245. </el-form-item>
  246. </el-col>
  247. <el-col :span="6">
  248. <el-form-item label="起运港" prop="polId">
  249. <el-input
  250. v-model="form.polId"
  251. placeholder="请输入起运港"
  252. :disabled="true"
  253. size="mini"
  254. style="width: 180px"
  255. />
  256. </el-form-item>
  257. </el-col>
  258. <el-col :span="6">
  259. <el-form-item label="目的港" prop="podId">
  260. <el-input
  261. v-model="form.podId"
  262. placeholder="请输入目的港"
  263. :disabled="true"
  264. size="mini"
  265. style="width: 180px"
  266. />
  267. </el-form-item>
  268. </el-col>
  269. </el-row>
  270. </el-form>
  271. <template slot="title">
  272. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  273. ><span style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  274. >添加费用明细</span
  275. >
  276. </i>
  277. </template>
  278. <div>
  279. <div
  280. style="display: flex; justify-content: space-between; margin: 10px 0"
  281. >
  282. <div>
  283. <el-button
  284. type="primary"
  285. icon="el-icon-plus"
  286. size="mini"
  287. @click="addRelevt"
  288. :disabled="disabled"
  289. >添加费用</el-button
  290. >
  291. </div>
  292. </div>
  293. </div>
  294. <el-table :data="feesList" style="width: 100%">
  295. <el-table-column
  296. prop="fCorpid"
  297. label="结算单位"
  298. align="center"
  299. width="180"
  300. >
  301. <template slot-scope="scope">
  302. <el-select
  303. v-model="scope.row.fCorpid"
  304. placeholder="请输入客户名称"
  305. :clearable="true"
  306. filterable
  307. size="mini"
  308. style="width: 160px"
  309. disabled
  310. >
  311. <el-option
  312. v-for="(dict, index) in fMblnoOptions"
  313. :key="index.fId"
  314. :label="dict.fName"
  315. :value="dict.fId"
  316. />
  317. </el-select>
  318. </template>
  319. </el-table-column>
  320. <el-table-column prop="fFeeid" label="费用名称">
  321. <template slot-scope="scope">
  322. <el-select
  323. v-model="scope.row.fFeeid"
  324. filterable
  325. :disabled="scope.row.actId != 1090||disabled"
  326. remote
  327. placeholder="费用名称"
  328. >
  329. <el-option
  330. v-for="(dict, index) in fCNameOptions"
  331. :key="index.fId"
  332. :label="dict.fName"
  333. :value="dict.fId"
  334. ></el-option>
  335. </el-select>
  336. </template>
  337. </el-table-column>
  338. <el-table-column prop="fDc" label="收付">
  339. <template slot-scope="scope">
  340. <el-select
  341. v-model="scope.row.fDc"
  342. placeholder="请选择"
  343. :disabled="scope.row.actId != 1090||disabled"
  344. >
  345. <el-option label="收" value="D"></el-option>
  346. <el-option label="付" value="C"></el-option>
  347. </el-select>
  348. </template>
  349. </el-table-column>
  350. <el-table-column prop="fFeeunitid" label="计费单位">
  351. <template slot-scope="scope">
  352. <el-select
  353. v-model="scope.row.fFeeunitid"
  354. placeholder="请选择计费单位"
  355. :disabled="scope.row.actId != 1090||disabled"
  356. clearable
  357. >
  358. <el-option
  359. v-for="dict in jFeetunitOptions"
  360. :key="dict.dictValue"
  361. :label="dict.dictLabel"
  362. :value="dict.dictValue"
  363. />
  364. </el-select>
  365. </template>
  366. </el-table-column>
  367. <el-table-column prop="fBillingQty" label="计费数量">
  368. <template slot-scope="scope">
  369. <el-input
  370. v-model="scope.row.fBillingQty"
  371. :disabled="scope.row.actId != 1090||disabled"
  372. placeholder="请输入内容"
  373. @input="total(scope.row)"
  374. v-input-limit="2"
  375. ></el-input>
  376. </template>
  377. </el-table-column>
  378. <el-table-column prop="fUnitprice" label="单价">
  379. <template slot-scope="scope">
  380. <el-input
  381. v-model="scope.row.fUnitprice"
  382. :disabled="scope.row.actId != 1090||disabled"
  383. placeholder="请输入内容"
  384. @input="total(scope.row)"
  385. v-input-limit="2"
  386. ></el-input>
  387. </template>
  388. </el-table-column>
  389. <el-table-column prop="fCurrency" label="币种">
  390. <template slot-scope="scope">
  391. <el-input
  392. v-model="scope.row.fCurrency"
  393. :disabled="scope.row.actId != 1090||disabled"
  394. placeholder="请输入内容"
  395. ></el-input>
  396. </template>
  397. </el-table-column>
  398. <el-table-column prop="fExrate" label="汇率">
  399. <template slot-scope="scope">
  400. <el-input
  401. v-model="scope.row.fExrate"
  402. :disabled="scope.row.actId != 1090||disabled"
  403. placeholder="请输入内容"
  404. ></el-input>
  405. </template>
  406. </el-table-column>
  407. <el-table-column prop="fAmount" label="金额">
  408. <template slot-scope="scope">
  409. <el-input
  410. v-model="scope.row.fAmount"
  411. :disabled="scope.row.actId != 1090||disabled"
  412. placeholder="请输入内容"
  413. ></el-input>
  414. </template>
  415. </el-table-column>
  416. <el-table-column prop="fTaxrate" label="税率">
  417. <template slot-scope="scope">
  418. <el-input
  419. v-model="scope.row.fTaxrate"
  420. :disabled="scope.row.actId != 1090||disabled"
  421. placeholder="请输入内容"
  422. ></el-input>
  423. </template>
  424. </el-table-column>
  425. <el-table-column prop="remarks" label="备注">
  426. <template slot-scope="scope">
  427. <el-input
  428. v-model="scope.row.remarks"
  429. :disabled="scope.row.actId != 1090||disabled"
  430. placeholder="请输入内容"
  431. ></el-input>
  432. </template>
  433. </el-table-column>
  434. <el-table-column prop="remarks" label="费用来源">
  435. <template slot-scope="scope">
  436. <span v-if="scope.row.actId == 1030">接单</span>
  437. <span v-if="scope.row.actId == 1040">提箱</span>
  438. <span v-if="scope.row.actId == 1050">装卸柜</span>
  439. <span v-if="scope.row.actId == 1060">还卸柜</span>
  440. <span v-if="scope.row.actId == 1070">回单</span>
  441. <span v-if="scope.row.actId == 1090">追加费用</span>
  442. </template>
  443. </el-table-column>
  444. <el-table-column
  445. label="操作"
  446. align="center"
  447. class-name="small-padding fixed-width"
  448. fixed="right"
  449. width="100px"
  450. >
  451. <template slot-scope="scope">
  452. <el-button
  453. size="mini"
  454. type="text"
  455. icon="el-icon-delete"
  456. :disabled="scope.row.actId != 1090||disabled"
  457. @click.native.prevent="deleteRow(scope.$index)"
  458. >删除</el-button
  459. >
  460. </template>
  461. </el-table-column>
  462. </el-table>
  463. </span>
  464. <span slot="footer" class="dialog-footer">
  465. <el-button type="primary" :disabled="disabled" @click="submitForm"
  466. >提 交</el-button
  467. >
  468. <el-button type="success" @click="submitAllowChanges">修 改</el-button>
  469. <el-button type="info" :disabled="disabled" @click="submitSave"
  470. >保 存</el-button
  471. >
  472. <el-button type="warning" :disabled="disabled" @click="submitRetreat"
  473. >撤 回</el-button
  474. >
  475. <el-button @click="showDialog = false">取 消</el-button>
  476. </span>
  477. </el-dialog>
  478. </template>
  479. <script>
  480. import { removeFtmsorderbillscars } from "@/api/fleet/ftmsorderbillscars";
  481. import { query, submit } from "@/api/track/singleCost";
  482. import { listGoods } from "@/api/basicdata/goods";
  483. import { listCorps } from "@/api/basicdata/corps";
  484. import { listFees } from "@/api/basicdata/fees";
  485. import UploadFile from "@/components/Uploadfile";
  486. import Cookies from "js-cookie";
  487. export default {
  488. name: "plans",
  489. props: {
  490. addOrUpdateVisible: {
  491. type: Boolean,
  492. default: false,
  493. },
  494. title: {
  495. type: String,
  496. required: "",
  497. },
  498. fname: Object,
  499. },
  500. components: {
  501. UploadFile,
  502. },
  503. data() {
  504. return {
  505. jFeetunitOptions: [],
  506. form: {},
  507. feesList: [],
  508. // 控制弹出框显示隐藏
  509. showDialog: false,
  510. // 表单校验
  511. rules: {
  512. corpId: [
  513. { required: true, message: "请输入客户名称", trigger: "blur" },
  514. ],
  515. billType: [
  516. { required: true, message: "请选择业务类型", trigger: "blur" },
  517. ],
  518. transType: [
  519. { required: true, message: "请选择运输方式", trigger: "blur" },
  520. ],
  521. loadAddr: [
  522. { required: true, message: "请输入提箱地点", trigger: "blur" },
  523. ],
  524. loadAttntel: [
  525. {
  526. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  527. message: "请正确输入手机号",
  528. trigger: "blur",
  529. },
  530. ],
  531. mdLoadAttnTel: [
  532. {
  533. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  534. message: "请正确输入手机号",
  535. trigger: "blur",
  536. },
  537. ],
  538. unLoadAttnTel: [
  539. {
  540. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  541. message: "请正确输入手机号",
  542. trigger: "blur",
  543. },
  544. ],
  545. },
  546. billTypeList: [],
  547. transTypeList: [],
  548. transPropList: [],
  549. goodsLossTypeList: [],
  550. relevantAttachments: [],
  551. cntrIdList: [],
  552. priceTypeList: [],
  553. userType: null,
  554. username: null,
  555. collapses: [],
  556. fMblnoOptions: [],
  557. cntrId2List: [],
  558. goodsOptions: [],
  559. fWbuOptions: [],
  560. disabled:false,
  561. };
  562. },
  563. created() {
  564. this.getDicts("data_unitfees").then((response) => {
  565. if (response.data) {
  566. this.jFeetunitOptions = response.data;
  567. }
  568. });
  569. listFees().then((response) => {
  570. this.fCNameOptions = response.rows;
  571. });
  572. this.getDicts("data_billType").then((response) => {
  573. this.billTypeList = response.data;
  574. });
  575. this.getDicts("data_transType").then((response) => {
  576. this.transTypeList = response.data;
  577. });
  578. this.getDicts("data_transProp").then((response) => {
  579. this.transPropList = response.data;
  580. });
  581. this.getDicts("data_goodsLossType").then((response) => {
  582. this.goodsLossTypeList = response.data;
  583. });
  584. this.getDicts("data_cntrId").then((response) => {
  585. if (response.data) {
  586. response.data.map((e) => (e.noOption = false));
  587. this.cntrIdList = response.data;
  588. }
  589. });
  590. this.getDicts("data_priceType").then((response) => {
  591. this.priceTypeList = response.data;
  592. });
  593. listCorps().then((response) => {
  594. this.fMblnoOptions = response.rows;
  595. });
  596. listGoods().then((response) => {
  597. this.goodsOptions = response.rows;
  598. });
  599. listFees().then((response) => {
  600. this.fWbuOptions = response.rows;
  601. });
  602. this.userType = Cookies.get("userType");
  603. this.username = Cookies.get("userName");
  604. },
  605. methods: {
  606. deleteRow(index) {
  607. this.feesList.splice(index, 1);
  608. },
  609. init() {
  610. this.showDialog = true;
  611. query(this.fname.id).then((data) => {
  612. this.form = data.data;
  613. this.feesList = data.data.ftmsorderbillsfees;
  614. for (let item in this.feesList) {
  615. this.feesList[item].fFeeunitid = this.feesList[item].fFeeunitid + "";
  616. }
  617. if(this.feesList.length>=0){
  618. this.disabled=true
  619. }
  620. });
  621. },
  622. //选中时赋值pid
  623. checkPid(row) {
  624. let arr = this.schedulingList;
  625. let arr2 = arr.filter((e) => e.cntrId == row.cntrId);
  626. row["pid"] = arr2[0].id;
  627. },
  628. noMorecntrId(e) {
  629. this.cntrIdList.forEach((item) => (item.noOption = false));
  630. let arrIds = e.map((item) => item.cntrId);
  631. this.cntrIdList
  632. .filter((item) => arrIds.indexOf(item.dictValue) > -1)
  633. .forEach((item) => (item.noOption = true));
  634. },
  635. showSure(val) {
  636. let pidList = val.filter((e) => e.pid != null);
  637. let arr1 = pidList;
  638. let arr1Ids = arr1.map((item) => item.cntrId);
  639. arr1Ids = [...new Set(arr1Ids)];
  640. let arr2 = this.cntrIdList;
  641. this.cntrId2List = arr2.filter(
  642. (item) => arr1Ids.indexOf(item.dictValue) > -1
  643. );
  644. },
  645. // 新增附件上传
  646. addRelevt() {
  647. this.feesList.push({
  648. actId: "1090",
  649. fCorpid: this.form.fCorpId,
  650. fFeeid: "",
  651. fDc: "",
  652. fFeeunitid: "1",
  653. fBillingQty: 0,
  654. fUnitprice: 0,
  655. fCurrency: "RMB",
  656. fTaxrate: null,
  657. fAmount: 0,
  658. fExrate: 1,
  659. remarks: "",
  660. });
  661. },
  662. deleteplansRow(index, rows, row) {
  663. let arr = this.schedulingList;
  664. let arr2 = arr.filter((e) => e.cntrId == row.cntrId && e.cntrId != null);
  665. if (arr2.length != 0) {
  666. this.msgSuccess("调度安排已插入此箱型数据,不能删除");
  667. } else {
  668. this.cntrIdList
  669. .filter((item) => item.dictValue == row.cntrId)
  670. .forEach((item) => (item.noOption = false));
  671. rows.splice(index, 1);
  672. }
  673. },
  674. // 上传成功返回数据
  675. showFile(row) {
  676. for (let list in this.relevantAttachments) {
  677. this.$set(this.relevantAttachments[list], "attachUrl", row.url);
  678. this.$set(this.relevantAttachments[list], "attachName", row.fileName);
  679. }
  680. },
  681. // 弹出框关闭后触发
  682. handleClose() {
  683. // 子组件调用父组件方法,并传递参数
  684. this.$emit("changeShow", "false");
  685. this.cntrIdList.forEach((item) => (item.noOption = false));
  686. this.collapses = [];
  687. },
  688. /** 提交按钮 */
  689. submitForm() {
  690. this.$refs["form"].validate((valid) => {
  691. if (valid) {
  692. let formDatae = new window.FormData();
  693. formDatae.append("status", 6);
  694. formDatae.append("cars", JSON.stringify(this.form));
  695. formDatae.append("ftmsorderbillsfees", JSON.stringify(this.feesList));
  696. submit(formDatae).then((data) => {
  697. this.feesList = data.data.ftmsorderbillsfeesList;
  698. for (let item in this.feesList) {
  699. this.feesList[item].fFeeunitid =
  700. this.feesList[item].fFeeunitid + "";
  701. }
  702. this.$message.success("提交成功");
  703. this.$parent.getList();
  704. this.showDialog = false;
  705. });
  706. }
  707. });
  708. },
  709. //修改
  710. submitFix() {
  711. this.$refs["form"].validate((valid) => {
  712. if (valid) {
  713. }
  714. });
  715. },
  716. //保存
  717. submitSave() {
  718. let formDatae = new window.FormData();
  719. formDatae.append("status", 2);
  720. formDatae.append("cars", JSON.stringify(this.form));
  721. formDatae.append("ftmsorderbillsfees", JSON.stringify(this.feesList));
  722. submit(formDatae).then((data) => {
  723. this.feesList = data.data.ftmsorderbillsfeesList;
  724. for (let item in this.feesList) {
  725. this.feesList[item].fFeeunitid = this.feesList[item].fFeeunitid + "";
  726. }
  727. this.$message.success("保存成功");
  728. });
  729. },
  730. //撤回
  731. submitRetreat() {},
  732. //修改
  733. submitAllowChanges() {
  734. this.disabled = !this.disabled;
  735. },
  736. //单条订单调度提交
  737. addscarsRow(row) {},
  738. delscarsRow(index, rows, row) {
  739. if (row.billStatus != 6 && row.id != null) {
  740. removeFtmsorderbillscars(row).then((response) => {
  741. if (response.code == 200) {
  742. rows.splice(index, 1);
  743. this.msgSuccess("成功删除");
  744. }
  745. });
  746. } else {
  747. rows.splice(index, 1);
  748. }
  749. },
  750. revokescarsRow(index, rows, row) {},
  751. changescarsRow(row) {},
  752. total(row) {
  753. if (row.fBillingQty && row.fUnitprice) {
  754. console.log(row.fBillingQty);
  755. this.$set(
  756. row,
  757. "fAmount",
  758. (row.fBillingQty * row.fUnitprice).toFixed(2)
  759. );
  760. } else {
  761. this.$set(row, "fAmount", 0);
  762. }
  763. },
  764. },
  765. watch: {
  766. // 监听 addOrUpdateVisible 改变
  767. addOrUpdateVisible(oldVal, newVal) {
  768. this.showDialog = this.addOrUpdateVisible;
  769. },
  770. },
  771. };
  772. </script>