AddOrUpdate.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952
  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="90px">
  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.loadDate"
  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-col :span="6">
  167. <el-form-item label="接单时间" prop="acceptDate">
  168. <el-date-picker
  169. clearable
  170. size="mini"
  171. style="width: 180px"
  172. v-model="form.acceptDate"
  173. type="date"
  174. value-format="yyyy-MM-dd"
  175. placeholder="选择接单时间"
  176. :disabled="true"
  177. >
  178. </el-date-picker>
  179. </el-form-item>
  180. </el-col>
  181. <el-col :span="6">
  182. <el-form-item label="回单时间" prop="waybillDate">
  183. <el-date-picker
  184. clearable
  185. size="mini"
  186. style="width: 180px"
  187. v-model="form.waybillDate"
  188. type="date"
  189. value-format="yyyy-MM-dd"
  190. placeholder="选择回单时间"
  191. :disabled="true"
  192. >
  193. </el-date-picker>
  194. </el-form-item>
  195. </el-col>
  196. </el-row>
  197. <el-row>
  198. <el-col :span="6">
  199. <el-form-item label="提单号" prop="mblno">
  200. <el-input
  201. v-model="form.mblno"
  202. placeholder="请输入提单号"
  203. :disabled="true"
  204. size="mini"
  205. style="width: 180px"
  206. />
  207. </el-form-item>
  208. </el-col>
  209. <el-col :span="6">
  210. <el-form-item label="货品名称" prop="goodsId">
  211. <el-select
  212. v-model="form.goodsId"
  213. placeholder="请输入货品名称"
  214. :disabled="true"
  215. clearable
  216. filterable
  217. size="mini"
  218. style="width: 180px"
  219. >
  220. <el-option
  221. v-for="(dict, index) in goodsOptions"
  222. :key="index.fId"
  223. :label="dict.fName"
  224. :value="dict.fId"
  225. />
  226. </el-select>
  227. </el-form-item>
  228. </el-col>
  229. <el-col :span="6">
  230. <el-form-item label="计划件数" prop="qtyPlan">
  231. <el-input
  232. v-model="form.qtyPlan"
  233. placeholder="请输入计划件数"
  234. :disabled="true"
  235. v-input-limit="2"
  236. size="mini"
  237. style="width: 180px"
  238. />
  239. </el-form-item>
  240. </el-col>
  241. <el-col :span="6">
  242. <el-form-item label="重量(吨)" prop="weightPlan">
  243. <el-input
  244. v-model="form.weightPlan"
  245. placeholder="请输入计划重量"
  246. :disabled="true"
  247. v-input-limit="2"
  248. size="mini"
  249. style="width: 180px"
  250. />
  251. </el-form-item>
  252. </el-col>
  253. </el-row>
  254. <el-row>
  255. <el-col :span="6">
  256. <el-form-item label="船名" prop="ysl">
  257. <el-input
  258. v-model="form.ysl"
  259. placeholder="请输入船名"
  260. :disabled="true"
  261. size="mini"
  262. style="width: 180px"
  263. />
  264. </el-form-item>
  265. </el-col>
  266. <el-col :span="6">
  267. <el-form-item label="航次" prop="voy">
  268. <el-input
  269. v-model="form.voy"
  270. placeholder="请输入航次"
  271. :disabled="true"
  272. size="mini"
  273. style="width: 180px"
  274. />
  275. </el-form-item>
  276. </el-col>
  277. <el-col :span="6">
  278. <el-form-item label="起运港" prop="polId">
  279. <el-input
  280. v-model="form.polId"
  281. placeholder="请输入起运港"
  282. :disabled="true"
  283. size="mini"
  284. style="width: 180px"
  285. />
  286. </el-form-item>
  287. </el-col>
  288. <el-col :span="6">
  289. <el-form-item label="目的港" prop="podId">
  290. <el-input
  291. v-model="form.podId"
  292. placeholder="请输入目的港"
  293. :disabled="true"
  294. size="mini"
  295. style="width: 180px"
  296. />
  297. </el-form-item>
  298. </el-col>
  299. </el-row>
  300. <el-row>
  301. <el-col :span="6">
  302. <el-form-item label="油气费" prop="oilAmt">
  303. <el-input
  304. v-model="form.oilAmt"
  305. placeholder="请输入油气费"
  306. size="mini"
  307. style="width: 180px"
  308. v-input-limit="2"
  309. :disabled="disabled"
  310. />
  311. </el-form-item>
  312. </el-col>
  313. <el-col :span="6">
  314. <el-form-item label="单趟提成" prop="driverbonus">
  315. <el-input
  316. v-model="form.driverbonus"
  317. placeholder="请输入单趟提成"
  318. size="mini"
  319. style="width: 180px"
  320. v-input-limit="2"
  321. :disabled="disabled"
  322. />
  323. </el-form-item>
  324. </el-col>
  325. <el-col :span="6">
  326. <el-form-item label="其他费用" prop="costOth">
  327. <el-input
  328. v-model="form.costOth"
  329. placeholder="请输入其他费用"
  330. size="mini"
  331. style="width: 180px"
  332. v-input-limit="2"
  333. :disabled="disabled"
  334. />
  335. </el-form-item>
  336. </el-col>
  337. <el-col :span="6">
  338. <el-form-item label="备注" prop="costRemarks">
  339. <el-input
  340. v-model="form.costRemarks"
  341. placeholder="请输入备注"
  342. size="mini"
  343. style="width: 180px"
  344. :disabled="disabled"
  345. />
  346. </el-form-item>
  347. </el-col>
  348. </el-row>
  349. <el-row v-if="form.billType == 1">
  350. <el-col :span="6">
  351. <el-form-item label="修洗费" prop="costomAmt03">
  352. <el-input
  353. v-model="form.costomAmt03"
  354. placeholder="请输入修洗费"
  355. size="mini"
  356. style="width: 180px"
  357. v-input-limit="2"
  358. :disabled="disabled"
  359. />
  360. </el-form-item>
  361. </el-col>
  362. <el-col :span="6">
  363. <el-form-item label="吊装费" prop="costomAmt04">
  364. <el-input
  365. v-model="form.costomAmt04"
  366. placeholder="请输入吊装费"
  367. size="mini"
  368. style="width: 180px"
  369. v-input-limit="2"
  370. :disabled="disabled"
  371. />
  372. </el-form-item>
  373. </el-col>
  374. <el-col :span="6">
  375. <el-form-item label="其他费用" prop="costomAmt02">
  376. <el-input
  377. v-model="form.costomAmt02"
  378. placeholder="请输入其他费用"
  379. size="mini"
  380. style="width: 180px"
  381. v-input-limit="2"
  382. :disabled="disabled"
  383. />
  384. </el-form-item>
  385. </el-col>
  386. <el-col :span="6">
  387. <el-form-item label="费用备注" prop="costomStr02">
  388. <el-input
  389. v-model="form.costomStr02"
  390. placeholder="请输入备注"
  391. size="mini"
  392. style="width: 180px"
  393. :disabled="disabled"
  394. />
  395. </el-form-item>
  396. </el-col>
  397. </el-row>
  398. <el-row v-if="form.billType == 2">
  399. <el-col :span="6">
  400. <el-form-item label="港杂费" prop="costomAmt03">
  401. <el-input
  402. v-model="form.costomAmt03"
  403. placeholder="请输入港杂费"
  404. size="mini"
  405. style="width: 180px"
  406. v-input-limit="2"
  407. :disabled="disabled"
  408. />
  409. </el-form-item>
  410. </el-col>
  411. <el-col :span="6">
  412. <el-form-item label="提箱费" prop="costomAmt04">
  413. <el-input
  414. v-model="form.costomAmt04"
  415. placeholder="请输入提箱费"
  416. size="mini"
  417. style="width: 180px"
  418. v-input-limit="2"
  419. :disabled="disabled"
  420. />
  421. </el-form-item>
  422. </el-col>
  423. <el-col :span="6">
  424. <el-form-item label="其他费用" prop="costomAmt01">
  425. <el-input
  426. v-model="form.costomAmt01"
  427. placeholder="请输入其他费用"
  428. size="mini"
  429. style="width: 180px"
  430. v-input-limit="2"
  431. :disabled="disabled"
  432. />
  433. </el-form-item>
  434. </el-col>
  435. <el-col :span="6">
  436. <el-form-item label="费用备注" prop="costomStr01">
  437. <el-input
  438. v-model="form.costomStr01"
  439. placeholder="请输入备注"
  440. size="mini"
  441. style="width: 180px"
  442. :disabled="disabled"
  443. />
  444. </el-form-item>
  445. </el-col>
  446. </el-row>
  447. </el-form>
  448. <template slot="title">
  449. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  450. ><span style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  451. >添加费用明细</span
  452. >
  453. </i>
  454. </template>
  455. <div>
  456. <div
  457. style="display: flex; justify-content: space-between; margin: 10px 0"
  458. >
  459. <div>
  460. <el-button
  461. type="primary"
  462. icon="el-icon-plus"
  463. size="mini"
  464. @click="addRelevt"
  465. :disabled="disabled"
  466. >添加费用</el-button
  467. >
  468. </div>
  469. </div>
  470. </div>
  471. <el-table :data="feesList" style="width: 100%">
  472. <el-table-column
  473. prop="fCorpid"
  474. label="结算单位"
  475. align="center"
  476. width="180"
  477. >
  478. <template slot-scope="scope">
  479. <el-select
  480. v-model="scope.row.fCorpid"
  481. placeholder="请输入客户名称"
  482. :clearable="true"
  483. filterable
  484. size="mini"
  485. style="width: 160px"
  486. :disabled="scope.row.actId != 1090||disabled"
  487. >
  488. <el-option
  489. v-for="(dict, index) in fMblnoOptions"
  490. :key="index.fId"
  491. :label="dict.fName"
  492. :value="dict.fId"
  493. />
  494. </el-select>
  495. </template>
  496. </el-table-column>
  497. <el-table-column prop="fFeeid" label="费用名称">
  498. <template slot-scope="scope">
  499. <el-select
  500. v-model="scope.row.fFeeid"
  501. filterable
  502. :disabled="scope.row.actId != 1090||disabled"
  503. remote
  504. placeholder="费用名称"
  505. >
  506. <el-option
  507. v-for="(dict, index) in fCNameOptions"
  508. :key="index.fId"
  509. :label="dict.fName"
  510. :value="dict.fId"
  511. ></el-option>
  512. </el-select>
  513. </template>
  514. </el-table-column>
  515. <el-table-column prop="fDc" label="收付">
  516. <template slot-scope="scope">
  517. <el-select
  518. v-model="scope.row.fDc"
  519. placeholder="请选择"
  520. :disabled="scope.row.actId != 1090||disabled"
  521. >
  522. <el-option label="收" value="D"></el-option>
  523. <el-option label="付" value="C"></el-option>
  524. </el-select>
  525. </template>
  526. </el-table-column>
  527. <el-table-column prop="fFeeunitid" label="计费单位">
  528. <template slot-scope="scope">
  529. <el-select
  530. v-model="scope.row.fFeeunitid"
  531. placeholder="请选择计费单位"
  532. :disabled="scope.row.actId != 1090||disabled"
  533. clearable
  534. >
  535. <el-option
  536. v-for="dict in jFeetunitOptions"
  537. :key="dict.dictValue"
  538. :label="dict.dictLabel"
  539. :value="dict.dictValue"
  540. />
  541. </el-select>
  542. </template>
  543. </el-table-column>
  544. <el-table-column prop="fBillingQty" label="计费数量">
  545. <template slot-scope="scope">
  546. <el-input
  547. v-model="scope.row.fBillingQty"
  548. :disabled="scope.row.actId != 1090||disabled"
  549. placeholder="请输入内容"
  550. @input="total(scope.row)"
  551. v-input-limit="2"
  552. ></el-input>
  553. </template>
  554. </el-table-column>
  555. <el-table-column prop="fUnitprice" label="单价">
  556. <template slot-scope="scope">
  557. <el-input
  558. v-model="scope.row.fUnitprice"
  559. :disabled="scope.row.actId != 1090||disabled"
  560. placeholder="请输入内容"
  561. @input="total(scope.row)"
  562. v-input-limit="2"
  563. ></el-input>
  564. </template>
  565. </el-table-column>
  566. <el-table-column prop="fCurrency" label="币种">
  567. <template slot-scope="scope">
  568. <el-input
  569. v-model="scope.row.fCurrency"
  570. :disabled="scope.row.actId != 1090||disabled"
  571. placeholder="请输入内容"
  572. ></el-input>
  573. </template>
  574. </el-table-column>
  575. <el-table-column prop="fExrate" label="汇率">
  576. <template slot-scope="scope">
  577. <el-input
  578. v-model="scope.row.fExrate"
  579. :disabled="scope.row.actId != 1090||disabled"
  580. placeholder="请输入内容"
  581. ></el-input>
  582. </template>
  583. </el-table-column>
  584. <el-table-column prop="fAmount" label="金额">
  585. <template slot-scope="scope">
  586. <el-input
  587. v-model="scope.row.fAmount"
  588. :disabled="scope.row.actId != 1090||disabled"
  589. placeholder="请输入内容"
  590. ></el-input>
  591. </template>
  592. </el-table-column>
  593. <el-table-column prop="fTaxrate" label="税率">
  594. <template slot-scope="scope">
  595. <el-input
  596. v-model="scope.row.fTaxrate"
  597. :disabled="scope.row.actId != 1090||disabled"
  598. placeholder="请输入内容"
  599. ></el-input>
  600. </template>
  601. </el-table-column>
  602. <el-table-column prop="remarks" label="备注">
  603. <template slot-scope="scope">
  604. <el-input
  605. v-model="scope.row.remarks"
  606. :disabled="scope.row.actId != 1090||disabled"
  607. placeholder="请输入内容"
  608. ></el-input>
  609. </template>
  610. </el-table-column>
  611. <el-table-column prop="remarks" label="费用来源">
  612. <template slot-scope="scope">
  613. <span v-if="scope.row.actId == 1030">接单</span>
  614. <span v-if="scope.row.actId == 1040">提箱</span>
  615. <span v-if="scope.row.actId == 1050">装卸柜</span>
  616. <span v-if="scope.row.actId == 1060">还卸柜</span>
  617. <span v-if="scope.row.actId == 1070">回单</span>
  618. <span v-if="scope.row.actId == 1090">追加费用</span>
  619. </template>
  620. </el-table-column>
  621. <el-table-column
  622. label="操作"
  623. align="center"
  624. class-name="small-padding fixed-width"
  625. fixed="right"
  626. width="100px"
  627. >
  628. <template slot-scope="scope">
  629. <el-button
  630. size="mini"
  631. type="text"
  632. icon="el-icon-delete"
  633. :disabled="scope.row.actId != 1090||disabled"
  634. @click.native.prevent="deleteRow(scope.$index)"
  635. >删除</el-button
  636. >
  637. </template>
  638. </el-table-column>
  639. </el-table>
  640. </span>
  641. <span slot="footer" class="dialog-footer">
  642. <el-button type="primary" :disabled="disabled" @click="submitForm"
  643. >提 交</el-button
  644. >
  645. <el-button type="success" @click="submitAllowChanges">修 改</el-button>
  646. <el-button type="info" :disabled="disabled" @click="submitSave"
  647. >保 存</el-button
  648. >
  649. <el-button type="warning" :disabled="disabled" @click="submitRetreat"
  650. >撤 回</el-button
  651. >
  652. <el-button @click="showDialog = false">取 消</el-button>
  653. </span>
  654. </el-dialog>
  655. </template>
  656. <script>
  657. import { removeFtmsorderbillscars } from "@/api/fleet/ftmsorderbillscars";
  658. import { query, submit } from "@/api/track/singleCost";
  659. import { listGoods } from "@/api/basicdata/goods";
  660. import { listCorps } from "@/api/basicdata/corps";
  661. import { listFees } from "@/api/basicdata/fees";
  662. import UploadFile from "@/components/Uploadfile";
  663. import Cookies from "js-cookie";
  664. export default {
  665. name: "plans",
  666. props: {
  667. addOrUpdateVisible: {
  668. type: Boolean,
  669. default: false,
  670. },
  671. title: {
  672. type: String,
  673. required: "",
  674. },
  675. fname: Object,
  676. },
  677. components: {
  678. UploadFile,
  679. },
  680. data() {
  681. return {
  682. jFeetunitOptions: [],
  683. form: {},
  684. feesList: [],
  685. // 控制弹出框显示隐藏
  686. showDialog: false,
  687. // 表单校验
  688. rules: {
  689. corpId: [
  690. { required: true, message: "请输入客户名称", trigger: "blur" },
  691. ],
  692. billType: [
  693. { required: true, message: "请选择业务类型", trigger: "blur" },
  694. ],
  695. transType: [
  696. { required: true, message: "请选择运输方式", trigger: "blur" },
  697. ],
  698. loadAddr: [
  699. { required: true, message: "请输入提箱地点", trigger: "blur" },
  700. ],
  701. loadAttntel: [
  702. {
  703. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  704. message: "请正确输入手机号",
  705. trigger: "blur",
  706. },
  707. ],
  708. mdLoadAttnTel: [
  709. {
  710. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  711. message: "请正确输入手机号",
  712. trigger: "blur",
  713. },
  714. ],
  715. unLoadAttnTel: [
  716. {
  717. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  718. message: "请正确输入手机号",
  719. trigger: "blur",
  720. },
  721. ],
  722. },
  723. billTypeList: [],
  724. transTypeList: [],
  725. transPropList: [],
  726. goodsLossTypeList: [],
  727. relevantAttachments: [],
  728. cntrIdList: [],
  729. priceTypeList: [],
  730. userType: null,
  731. username: null,
  732. collapses: [],
  733. fMblnoOptions: [],
  734. cntrId2List: [],
  735. goodsOptions: [],
  736. fWbuOptions: [],
  737. disabled:false,
  738. };
  739. },
  740. created() {
  741. this.getDicts("data_unitfees").then((response) => {
  742. if (response.data) {
  743. this.jFeetunitOptions = response.data;
  744. }
  745. });
  746. listFees().then((response) => {
  747. this.fCNameOptions = response.rows;
  748. });
  749. this.getDicts("data_billType").then((response) => {
  750. this.billTypeList = response.data;
  751. });
  752. this.getDicts("data_transType").then((response) => {
  753. this.transTypeList = response.data;
  754. });
  755. this.getDicts("data_transProp").then((response) => {
  756. this.transPropList = response.data;
  757. });
  758. this.getDicts("data_goodsLossType").then((response) => {
  759. this.goodsLossTypeList = response.data;
  760. });
  761. this.getDicts("data_cntrId").then((response) => {
  762. if (response.data) {
  763. response.data.map((e) => (e.noOption = false));
  764. this.cntrIdList = response.data;
  765. }
  766. });
  767. this.getDicts("data_priceType").then((response) => {
  768. this.priceTypeList = response.data;
  769. });
  770. listCorps().then((response) => {
  771. this.fMblnoOptions = response.rows;
  772. });
  773. listGoods().then((response) => {
  774. this.goodsOptions = response.rows;
  775. });
  776. listFees().then((response) => {
  777. this.fWbuOptions = response.rows;
  778. });
  779. this.userType = Cookies.get("userType");
  780. this.username = Cookies.get("userName");
  781. },
  782. methods: {
  783. deleteRow(index) {
  784. this.feesList.splice(index, 1);
  785. },
  786. init() {
  787. this.showDialog = true;
  788. query(this.fname.id).then((data) => {
  789. this.form = data.data;
  790. this.feesList = data.data.ftmsorderbillsfees;
  791. for (let item in this.feesList) {
  792. this.feesList[item].fFeeunitid = this.feesList[item].fFeeunitid + "";
  793. }
  794. if(this.feesList.length>=0){
  795. this.disabled=true
  796. }
  797. });
  798. },
  799. //选中时赋值pid
  800. checkPid(row) {
  801. let arr = this.schedulingList;
  802. let arr2 = arr.filter((e) => e.cntrId == row.cntrId);
  803. row["pid"] = arr2[0].id;
  804. },
  805. noMorecntrId(e) {
  806. this.cntrIdList.forEach((item) => (item.noOption = false));
  807. let arrIds = e.map((item) => item.cntrId);
  808. this.cntrIdList
  809. .filter((item) => arrIds.indexOf(item.dictValue) > -1)
  810. .forEach((item) => (item.noOption = true));
  811. },
  812. showSure(val) {
  813. let pidList = val.filter((e) => e.pid != null);
  814. let arr1 = pidList;
  815. let arr1Ids = arr1.map((item) => item.cntrId);
  816. arr1Ids = [...new Set(arr1Ids)];
  817. let arr2 = this.cntrIdList;
  818. this.cntrId2List = arr2.filter(
  819. (item) => arr1Ids.indexOf(item.dictValue) > -1
  820. );
  821. },
  822. // 新增附件上传
  823. addRelevt() {
  824. this.feesList.push({
  825. actId: "1090",
  826. fCorpid: this.form.fCorpId,
  827. fFeeid: "",
  828. fDc: "",
  829. fFeeunitid: "1",
  830. fBillingQty: 0,
  831. fUnitprice: 0,
  832. fCurrency: "RMB",
  833. fTaxrate: null,
  834. fAmount: 0,
  835. fExrate: 1,
  836. remarks: "",
  837. });
  838. },
  839. deleteplansRow(index, rows, row) {
  840. let arr = this.schedulingList;
  841. let arr2 = arr.filter((e) => e.cntrId == row.cntrId && e.cntrId != null);
  842. if (arr2.length != 0) {
  843. this.msgSuccess("调度安排已插入此箱型数据,不能删除");
  844. } else {
  845. this.cntrIdList
  846. .filter((item) => item.dictValue == row.cntrId)
  847. .forEach((item) => (item.noOption = false));
  848. rows.splice(index, 1);
  849. }
  850. },
  851. // 上传成功返回数据
  852. showFile(row) {
  853. for (let list in this.relevantAttachments) {
  854. this.$set(this.relevantAttachments[list], "attachUrl", row.url);
  855. this.$set(this.relevantAttachments[list], "attachName", row.fileName);
  856. }
  857. },
  858. // 弹出框关闭后触发
  859. handleClose() {
  860. // 子组件调用父组件方法,并传递参数
  861. this.$emit("changeShow", "false");
  862. this.cntrIdList.forEach((item) => (item.noOption = false));
  863. this.collapses = [];
  864. },
  865. /** 提交按钮 */
  866. submitForm() {
  867. this.$refs["form"].validate((valid) => {
  868. if (valid) {
  869. let formDatae = new window.FormData();
  870. formDatae.append("status", 6);
  871. formDatae.append("cars", JSON.stringify(this.form));
  872. formDatae.append("ftmsorderbillsfees", JSON.stringify(this.feesList));
  873. submit(formDatae).then((data) => {
  874. this.feesList = data.data.ftmsorderbillsfeesList;
  875. for (let item in this.feesList) {
  876. this.feesList[item].fFeeunitid =
  877. this.feesList[item].fFeeunitid + "";
  878. }
  879. this.$message.success("提交成功");
  880. this.$parent.getList();
  881. this.showDialog = false;
  882. });
  883. }
  884. });
  885. },
  886. //修改
  887. submitFix() {
  888. this.$refs["form"].validate((valid) => {
  889. if (valid) {
  890. }
  891. });
  892. },
  893. //保存
  894. submitSave() {
  895. let formDatae = new window.FormData();
  896. formDatae.append("status", 2);
  897. formDatae.append("cars", JSON.stringify(this.form));
  898. formDatae.append("ftmsorderbillsfees", JSON.stringify(this.feesList));
  899. submit(formDatae).then((data) => {
  900. this.feesList = data.data.ftmsorderbillsfeesList;
  901. for (let item in this.feesList) {
  902. this.feesList[item].fFeeunitid = this.feesList[item].fFeeunitid + "";
  903. }
  904. this.$message.success("保存成功");
  905. });
  906. },
  907. //撤回
  908. submitRetreat() {},
  909. //修改
  910. submitAllowChanges() {
  911. this.disabled = !this.disabled;
  912. },
  913. //单条订单调度提交
  914. addscarsRow(row) {},
  915. delscarsRow(index, rows, row) {
  916. if (row.billStatus != 6 && row.id != null) {
  917. removeFtmsorderbillscars(row).then((response) => {
  918. if (response.code == 200) {
  919. rows.splice(index, 1);
  920. this.msgSuccess("成功删除");
  921. }
  922. });
  923. } else {
  924. rows.splice(index, 1);
  925. }
  926. },
  927. revokescarsRow(index, rows, row) {},
  928. changescarsRow(row) {},
  929. total(row) {
  930. if (row.fBillingQty && row.fUnitprice) {
  931. console.log(row.fBillingQty);
  932. this.$set(
  933. row,
  934. "fAmount",
  935. (row.fBillingQty * row.fUnitprice).toFixed(2)
  936. );
  937. } else {
  938. this.$set(row, "fAmount", 0);
  939. }
  940. },
  941. },
  942. watch: {
  943. // 监听 addOrUpdateVisible 改变
  944. addOrUpdateVisible(oldVal, newVal) {
  945. this.showDialog = this.addOrUpdateVisible;
  946. },
  947. },
  948. };
  949. </script>