AddOrUpdate.vue 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842
  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="corpId">
  14. <el-select
  15. v-model="form.corpId"
  16. placeholder="请输入客户名称"
  17. :clearable="true"
  18. filterable
  19. :disabled="disabled"
  20. size="mini"
  21. style="width: 180px"
  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="disabled"
  38. size="mini"
  39. style="width: 180px"
  40. >
  41. <el-option
  42. v-for="(dict, index) in billTypeList"
  43. :key="index.dictValue"
  44. :label="dict.dictLabel"
  45. :value="dict.dictValue"
  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="disabled"
  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="disabled"
  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="mblno">
  90. <el-input
  91. v-model="form.mblno"
  92. placeholder="请输入提单号"
  93. :disabled="disabled"
  94. size="mini"
  95. style="width: 180px"
  96. @input="mbinput(form.mblno)"
  97. />
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="6">
  101. <el-form-item label="货品名称" prop="goodsId">
  102. <el-select
  103. v-model="form.goodsId"
  104. placeholder="请输入货品名称"
  105. :disabled="disabled"
  106. clearable
  107. filterable
  108. size="mini"
  109. style="width: 180px"
  110. >
  111. <el-option
  112. v-for="(dict, index) in goodsOptions"
  113. :key="index.fId"
  114. :label="dict.fName"
  115. :value="dict.fId"
  116. />
  117. </el-select>
  118. </el-form-item>
  119. </el-col>
  120. <el-col :span="6">
  121. <el-form-item label="计划件数" prop="qtyPlan">
  122. <el-input
  123. v-model="form.qtyPlan"
  124. placeholder="请输入计划件数"
  125. :disabled="disabled"
  126. v-input-limit="2"
  127. size="mini"
  128. style="width: 180px"
  129. />
  130. </el-form-item>
  131. </el-col>
  132. <el-col :span="6">
  133. <el-form-item label="重量(吨)" prop="weightPlan">
  134. <el-input
  135. v-model="form.weightPlan"
  136. placeholder="请输入计划重量"
  137. :disabled="disabled"
  138. v-input-limit="2"
  139. size="mini"
  140. style="width: 180px"
  141. />
  142. </el-form-item>
  143. </el-col>
  144. </el-row>
  145. <el-row>
  146. <el-col :span="6">
  147. <el-form-item label="船名" prop="ysl">
  148. <el-input
  149. v-model="form.ysl"
  150. placeholder="请输入船名"
  151. :disabled="disabled"
  152. size="mini"
  153. style="width: 180px"
  154. />
  155. </el-form-item>
  156. </el-col>
  157. <el-col :span="6">
  158. <el-form-item label="航次" prop="voy">
  159. <el-input
  160. v-model="form.voy"
  161. placeholder="请输入航次"
  162. :disabled="disabled"
  163. size="mini"
  164. style="width: 180px"
  165. />
  166. </el-form-item>
  167. </el-col>
  168. <el-col :span="6">
  169. <el-form-item label="起运港" prop="polId">
  170. <el-select
  171. v-model="form.polId"
  172. placeholder="请输入起运港"
  173. :clearable="true"
  174. filterable
  175. :disabled="disabled"
  176. size="mini"
  177. style="width: 180px"
  178. >
  179. <el-option
  180. v-for="(dict, index) in polList"
  181. :key="index.dictValue"
  182. :label="dict.dictLabel"
  183. :value="dict.dictValue"
  184. />
  185. </el-select>
  186. </el-form-item>
  187. </el-col>
  188. <el-col :span="6">
  189. <el-form-item label="目的港" prop="podId">
  190. <el-select
  191. v-model="form.podId"
  192. placeholder="请输入目的港"
  193. :clearable="true"
  194. filterable
  195. :disabled="disabled"
  196. size="mini"
  197. style="width: 180px"
  198. >
  199. <el-option
  200. v-for="(dict, index) in podList"
  201. :key="index.dictValue"
  202. :label="dict.dictLabel"
  203. :value="dict.dictValue"
  204. />
  205. </el-select>
  206. </el-form-item>
  207. </el-col>
  208. </el-row>
  209. <el-row>
  210. <el-col :span="6">
  211. <el-form-item
  212. v-if="form.transType != 3"
  213. label="提箱地点"
  214. prop="loadAddr"
  215. >
  216. <el-input
  217. v-model="form.loadAddr"
  218. placeholder="请输入提箱地点"
  219. :disabled="disabled"
  220. size="mini"
  221. style="width: 180px"
  222. />
  223. </el-form-item>
  224. <el-form-item v-else label="装货地点" prop="loadAddr">
  225. <el-input
  226. v-model="form.loadAddr"
  227. placeholder="请输入装货地点"
  228. :disabled="disabled"
  229. size="mini"
  230. />
  231. </el-form-item>
  232. </el-col>
  233. <el-col :span="6">
  234. <el-form-item label="计划时间" prop="loadDate">
  235. <el-date-picker
  236. clearable
  237. size="mini"
  238. style="width: 180px"
  239. v-model="form.loadDate"
  240. type="datetime"
  241. placeholder="选择计划装车时间"
  242. :disabled="disabled"
  243. >
  244. </el-date-picker>
  245. </el-form-item>
  246. </el-col>
  247. <el-col :span="6">
  248. <el-form-item label="联系人" prop="loadAttn">
  249. <el-input
  250. v-model="form.loadAttn"
  251. placeholder="请输入装车联系人"
  252. :disabled="disabled"
  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="loadAttntel">
  260. <el-input
  261. v-model="form.loadAttntel"
  262. placeholder="请输入装车联系电话"
  263. :disabled="disabled"
  264. v-input-limit="0"
  265. size="mini"
  266. style="width: 180px"
  267. />
  268. </el-form-item>
  269. </el-col>
  270. </el-row>
  271. <el-row v-if="form.transType != 3">
  272. <el-col :span="6">
  273. <el-form-item
  274. v-if="form.billType == 1"
  275. label="卸货地点"
  276. prop="mdLoadAddr"
  277. >
  278. <el-input
  279. v-model="form.mdLoadAddr"
  280. placeholder="请输入装卸货地点"
  281. :disabled="disabled"
  282. size="mini"
  283. style="width: 180px"
  284. />
  285. </el-form-item>
  286. <el-form-item
  287. v-if="form.billType == 2"
  288. label="装货地点"
  289. prop="mdLoadAddr"
  290. >
  291. <el-input
  292. v-model="form.mdLoadAddr"
  293. placeholder="请输入装货地点"
  294. :disabled="disabled"
  295. size="mini"
  296. style="width: 180px"
  297. />
  298. </el-form-item>
  299. </el-col>
  300. <el-col :span="6" v-if="form.billType == 1 || form.billType == 2">
  301. <el-form-item label="计划时间" prop="mdLoadDate">
  302. <el-date-picker
  303. clearable
  304. size="mini"
  305. style="width: 180px"
  306. v-model="form.mdLoadDate"
  307. type="datetime"
  308. placeholder="选择计划装卸货时间"
  309. :disabled="disabled"
  310. >
  311. </el-date-picker>
  312. </el-form-item>
  313. </el-col>
  314. <el-col :span="6" v-if="form.billType == 1 || form.billType == 2">
  315. <el-form-item label="联系人" prop="mdLoadAttn">
  316. <el-input
  317. v-model="form.mdLoadAttn"
  318. placeholder="请输入装卸货联系人"
  319. :disabled="disabled"
  320. size="mini"
  321. style="width: 180px"
  322. />
  323. </el-form-item>
  324. </el-col>
  325. <el-col :span="6" v-if="form.billType == 1 || form.billType == 2">
  326. <el-form-item label="联系电话" prop="mdLoadAttnTel">
  327. <el-input
  328. v-model="form.mdLoadAttnTel"
  329. placeholder="请输入装卸货联系电话"
  330. :disabled="disabled"
  331. v-input-limit="0"
  332. size="mini"
  333. style="width: 180px"
  334. />
  335. </el-form-item>
  336. </el-col>
  337. </el-row>
  338. <el-row>
  339. <el-col v-if="form.transType != 3" :span="6">
  340. <el-form-item label="卸箱地点" prop="unLoadAddr">
  341. <el-input
  342. v-model="form.unLoadAddr"
  343. placeholder="请输入卸箱地点"
  344. :disabled="disabled"
  345. size="mini"
  346. style="width: 180px"
  347. />
  348. </el-form-item>
  349. </el-col>
  350. <el-col v-else :span="6">
  351. <el-form-item label="卸货地点" prop="unLoadAddr">
  352. <el-input
  353. v-model="form.unLoadAddr"
  354. placeholder="请输入卸箱地点"
  355. :disabled="disabled"
  356. size="mini"
  357. style="width: 180px"
  358. />
  359. </el-form-item>
  360. </el-col>
  361. <el-col :span="6">
  362. <el-form-item label="计划时间" prop="unLoadDate">
  363. <el-date-picker
  364. clearable
  365. size="mini"
  366. style="width: 180px"
  367. v-model="form.unLoadDate"
  368. type="datetime"
  369. placeholder="选择计划卸车时间"
  370. :disabled="disabled"
  371. >
  372. </el-date-picker>
  373. </el-form-item>
  374. </el-col>
  375. <el-col :span="6">
  376. <el-form-item label="联系人" prop="unLoadAttn">
  377. <el-input
  378. v-model="form.unLoadAttn"
  379. placeholder="请输入卸车联系人"
  380. :disabled="disabled"
  381. size="mini"
  382. style="width: 180px"
  383. />
  384. </el-form-item>
  385. </el-col>
  386. <el-col :span="6">
  387. <el-form-item label="联系电话" prop="unLoadAttnTel">
  388. <el-input
  389. v-model="form.unLoadAttnTel"
  390. placeholder="请输入卸车联系电话"
  391. :disabled="disabled"
  392. v-input-limit="0"
  393. size="mini"
  394. style="width: 180px"
  395. />
  396. </el-form-item>
  397. </el-col>
  398. </el-row>
  399. <el-row>
  400. <el-col>
  401. <el-form-item label="线路描述" prop="routeDesc">
  402. <el-input
  403. type="textarea"
  404. :rows="2"
  405. v-model="form.routeDesc"
  406. placeholder="请输入线路描述"
  407. :disabled="disabled"
  408. size="mini"
  409. />
  410. </el-form-item>
  411. </el-col>
  412. </el-row>
  413. <el-row>
  414. <el-col>
  415. <el-form-item label="备注" prop="remarks">
  416. <el-input
  417. type="textarea"
  418. :rows="2"
  419. v-model="form.remarks"
  420. placeholder="请输入备注"
  421. :disabled="disabled"
  422. size="mini"
  423. />
  424. </el-form-item>
  425. </el-col>
  426. </el-row>
  427. <!-- <div style="display: flex; justify-content: flex-end; margin: 10px 0">
  428. <el-button type="danger" @click="submitAllowChanges"
  429. >申请修改</el-button
  430. >
  431. </div> -->
  432. <el-collapse v-model="collapses2">
  433. <el-collapse-item name="1">
  434. <template slot="title">
  435. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  436. ><span
  437. style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  438. >计划货量</span
  439. >
  440. </i>
  441. </template>
  442. <div>
  443. <div
  444. style="
  445. display: flex;
  446. justify-content: space-between;
  447. margin: 10px 0;
  448. "
  449. >
  450. <div>
  451. <el-button
  452. type="primary"
  453. icon="el-icon-plus"
  454. size="mini"
  455. @click="addRow(planList)"
  456. :disabled="disabled"
  457. >添加</el-button
  458. >
  459. </div>
  460. <div v-if="form.transType == 3">
  461. <el-form-item label="损耗单位" prop="goodsLossType">
  462. <el-select
  463. v-model="form.goodsLossType"
  464. placeholder="请选择损耗单位"
  465. >
  466. <el-option
  467. v-for="(dict, index) in goodsLossTypeList"
  468. :key="index.dictValue"
  469. :label="dict.dictLabel"
  470. :value="dict.dictValue"
  471. :disabled="disabled"
  472. />
  473. </el-select>
  474. </el-form-item>
  475. </div>
  476. <div v-if="form.transType == 3">
  477. <el-form-item label="耗损标准" prop="goodsLossStd">
  478. <el-input
  479. v-model="form.goodsLossStd"
  480. placeholder="请输入耗损标准"
  481. v-input-limit="2"
  482. :disabled="disabled"
  483. />
  484. </el-form-item>
  485. </div>
  486. </div>
  487. <el-table :data="planList">
  488. <el-table-column label="箱型" align="center" prop="cntrId">
  489. <template slot-scope="scope">
  490. <el-select
  491. v-model="scope.row.cntrId"
  492. placeholder="请选择箱型"
  493. :disabled="disabled"
  494. @visible-change="noMorecntrId(planList)"
  495. >
  496. <el-option
  497. v-for="(dict, index) in cntrIdList"
  498. :key="index.dictValue"
  499. :label="dict.dictLabel"
  500. :value="dict.dictValue"
  501. :disabled="dict.noOption"
  502. />
  503. </el-select>
  504. </template>
  505. </el-table-column>
  506. <el-table-column
  507. label="计价方式"
  508. align="center"
  509. prop="priceType"
  510. >
  511. <template slot-scope="scope">
  512. <el-select
  513. v-model="scope.row.priceType"
  514. placeholder="请输入计价方式"
  515. :disabled="disabled"
  516. >
  517. <el-option
  518. v-for="(dict, index) in priceTypeList"
  519. :key="index.dictValue"
  520. :label="dict.dictLabel"
  521. :value="dict.dictValue"
  522. />
  523. </el-select>
  524. </template>
  525. </el-table-column>
  526. <el-table-column label="应收运价" align="center" prop="priceDr">
  527. <template slot-scope="scope">
  528. <el-input
  529. v-model="scope.row.priceDr"
  530. placeholder="应收运价"
  531. :disabled="disabled"
  532. v-input-limit="2"
  533. />
  534. </template>
  535. </el-table-column>
  536. <el-table-column label="应付运价" align="center" prop="priceCr">
  537. <template slot-scope="scope">
  538. <el-input
  539. v-model="scope.row.priceCr"
  540. placeholder="应付运价"
  541. :disabled="disabled"
  542. v-input-limit="2"
  543. />
  544. </template>
  545. </el-table-column>
  546. <el-table-column label="计划货量" align="center" prop="cntrQty">
  547. <template slot-scope="scope">
  548. <el-input
  549. v-model="scope.row.cntrQty"
  550. placeholder="计划货量"
  551. :disabled="disabled"
  552. v-input-limit="2"
  553. />
  554. </template>
  555. </el-table-column>
  556. <el-table-column
  557. label="已调度货量"
  558. align="center"
  559. prop="cntrPlanQty"
  560. >
  561. <template slot-scope="scope">
  562. <el-input
  563. v-model="scope.row.cntrPlanQty"
  564. placeholder="已调度货量"
  565. :disabled="true"
  566. />
  567. </template>
  568. </el-table-column>
  569. <el-table-column
  570. label="已派车货量"
  571. align="center"
  572. prop="planQty"
  573. >
  574. <template slot-scope="scope">
  575. <el-input
  576. v-model="scope.row.planQty"
  577. placeholder="已派车货量"
  578. :disabled="true"
  579. />
  580. </template>
  581. </el-table-column>
  582. <el-table-column label="备注" align="center" prop="remarks">
  583. <template slot-scope="scope">
  584. <el-input
  585. v-model="scope.row.remarks"
  586. placeholder="备注"
  587. :disabled="disabled"
  588. />
  589. </template>
  590. </el-table-column>
  591. <el-table-column
  592. label="操作"
  593. align="center"
  594. class-name="small-padding fixed-width"
  595. width="100"
  596. >
  597. <template slot-scope="scope">
  598. <el-button
  599. size="mini"
  600. type="text"
  601. icon="el-icon-delete"
  602. @click.native.prevent="
  603. deleteplansRow(scope.$index, planList, scope.row)
  604. "
  605. :disabled="disabled"
  606. >删除</el-button
  607. >
  608. </template>
  609. </el-table-column>
  610. </el-table>
  611. </div>
  612. </el-collapse-item>
  613. <el-collapse-item name="2" v-if="userType == '00'">
  614. <template slot="title">
  615. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  616. ><span
  617. style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  618. >调度安排</span
  619. >
  620. </i>
  621. </template>
  622. <div>
  623. <div
  624. style="
  625. display: flex;
  626. justify-content: space-between;
  627. margin: 10px 0;
  628. "
  629. >
  630. <div>
  631. <el-button
  632. type="primary"
  633. icon="el-icon-plus"
  634. size="mini"
  635. @click="addschedulingRow(schedulingList)"
  636. :disabled="disabled"
  637. >添加</el-button
  638. >
  639. </div>
  640. </div>
  641. <el-table :data="schedulingList">
  642. <el-table-column label="箱型" align="center" prop="cntrId">
  643. <template slot-scope="scope">
  644. <el-select
  645. v-model="scope.row.cntrId"
  646. placeholder="请选择箱型"
  647. :disabled="scope.row.billStatus >= 6"
  648. @change="checkPid(scope.row)"
  649. >
  650. <el-option
  651. v-for="(dict, index) in cntrId2List"
  652. :key="index.dictValue"
  653. :label="dict.dictLabel"
  654. :value="dict.dictValue"
  655. />
  656. </el-select>
  657. </template>
  658. </el-table-column>
  659. <el-table-column
  660. label="车队名称"
  661. align="center"
  662. prop="carcorPid"
  663. >
  664. <template slot-scope="scope">
  665. <el-select
  666. v-model="scope.row.carcorPid"
  667. placeholder="请输入车队名称"
  668. :clearable="true"
  669. filterable
  670. :disabled="scope.row.billStatus >= 6"
  671. >
  672. <el-option
  673. v-for="(dict, index) in companyList"
  674. :key="index.id"
  675. :label="dict.companyName"
  676. :value="dict.id"
  677. />
  678. </el-select>
  679. </template>
  680. </el-table-column>
  681. <el-table-column
  682. label="调度安排货量"
  683. align="center"
  684. prop="cntrQty"
  685. :disabled="disabled"
  686. >
  687. <template slot-scope="scope">
  688. <el-input
  689. v-model="scope.row.cntrQty"
  690. placeholder="调度安排货量"
  691. v-input-limit="2"
  692. :disabled="scope.row.billStatus >= 6"
  693. />
  694. </template>
  695. </el-table-column>
  696. <el-table-column
  697. label="已派车货量"
  698. align="center"
  699. prop="carQty"
  700. >
  701. <template slot-scope="scope">
  702. <el-input
  703. v-model="scope.row.carQty"
  704. placeholder="已派车货量"
  705. :disabled="true"
  706. />
  707. </template>
  708. </el-table-column>
  709. <el-table-column label="备注" align="center" prop="remarks">
  710. <template slot-scope="scope">
  711. <el-input
  712. v-model="scope.row.remarks"
  713. placeholder="备注"
  714. :disabled="scope.row.billStatus >= 6"
  715. />
  716. </template>
  717. </el-table-column>
  718. <el-table-column
  719. label="操作"
  720. align="center"
  721. class-name="small-padding fixed-width"
  722. width="200"
  723. >
  724. <template slot-scope="scope">
  725. <el-button
  726. size="mini"
  727. type="text"
  728. icon="el-icon-delete"
  729. @click.native.prevent="
  730. delplansRow(scope.$index, schedulingList, scope.row)
  731. "
  732. :disabled="scope.row.billStatus >= 6"
  733. >删除</el-button
  734. >
  735. <el-button
  736. size="mini"
  737. type="text"
  738. icon="el-icon-document-checked"
  739. @click.native.prevent="addplansRow(scope.row)"
  740. :disabled="scope.row.billStatus >= 6"
  741. >提交</el-button
  742. >
  743. <el-button
  744. size="mini"
  745. type="text"
  746. icon="el-icon-document-delete"
  747. @click.native.prevent="
  748. revokeplansRow(scope.$index, schedulingList, scope.row)
  749. "
  750. :disabled="true"
  751. >撤销</el-button
  752. >
  753. <el-button
  754. size="mini"
  755. type="text"
  756. icon="el-icon-refresh"
  757. @click.native.prevent="changeplansRow(scope.row)"
  758. :disabled="scope.row.billStatus < 6"
  759. >变更</el-button
  760. >
  761. </template>
  762. </el-table-column>
  763. </el-table>
  764. </div>
  765. </el-collapse-item>
  766. <el-collapse-item name="3" v-if="userType == '00'">
  767. <template slot="title">
  768. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  769. ><span
  770. style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  771. >收款信息</span
  772. >
  773. </i>
  774. </template>
  775. <div>
  776. <div
  777. style="
  778. display: flex;
  779. justify-content: space-between;
  780. margin: 10px 0;
  781. "
  782. >
  783. <div>
  784. <el-button
  785. type="primary"
  786. icon="el-icon-plus"
  787. size="mini"
  788. @click="addDListRow(DList)"
  789. :disabled="disabled"
  790. >添加</el-button
  791. >
  792. </div>
  793. </div>
  794. <el-table :data="DList">
  795. <el-table-column label="结算单位" align="center" prop="fCorpid">
  796. <template slot-scope="scope">
  797. <el-select
  798. v-model="scope.row.fCorpid"
  799. placeholder="结算单位"
  800. :clearable="true"
  801. filterable
  802. :disabled="disabled"
  803. >
  804. <el-option
  805. v-for="(dict, index) in fMblnoOptions"
  806. :key="index.fId"
  807. :label="dict.fName"
  808. :value="dict.fId"
  809. />
  810. </el-select>
  811. </template>
  812. </el-table-column>
  813. <el-table-column label="费用名称" align="center" prop="fFeeid">
  814. <template slot-scope="scope">
  815. <el-select
  816. v-model="scope.row.fFeeid"
  817. placeholder="费用名称"
  818. clearable
  819. filterable
  820. :disabled="disabled"
  821. >
  822. <el-option
  823. v-for="(dict, index) in fWbuOptions"
  824. :key="index.fId"
  825. :label="dict.fName"
  826. :value="dict.fId"
  827. />
  828. </el-select>
  829. </template>
  830. </el-table-column>
  831. <el-table-column
  832. label="计费单位"
  833. align="center"
  834. prop="fFeeunitid"
  835. >
  836. <template slot-scope="scope">
  837. <el-select
  838. v-model="scope.row.fFeeunitid"
  839. placeholder="计费单位"
  840. :disabled="disabled"
  841. >
  842. <el-option
  843. v-for="(dict, index) in ffeeunitidList"
  844. :key="index.dictValue"
  845. :label="dict.dictLabel"
  846. :value="dict.dictValue"
  847. />
  848. </el-select>
  849. </template>
  850. </el-table-column>
  851. <el-table-column label="计费数量" align="center" prop="fQty">
  852. <template slot-scope="scope">
  853. <el-input
  854. v-model="scope.row.fQty"
  855. placeholder="计费数量"
  856. v-input-limit="0"
  857. :disabled="disabled"
  858. @input="total(scope.row)"
  859. />
  860. </template>
  861. </el-table-column>
  862. <el-table-column label="单价" align="center" prop="fUnitprice">
  863. <template slot-scope="scope">
  864. <el-input
  865. v-model="scope.row.fUnitprice"
  866. placeholder="单价"
  867. v-input-limit="2"
  868. :disabled="disabled"
  869. @input="total(scope.row)"
  870. />
  871. </template>
  872. </el-table-column>
  873. <el-table-column label="币种" align="center" prop="fCurrency">
  874. <template slot-scope="scope">
  875. <el-input
  876. v-model="scope.row.fCurrency"
  877. placeholder="RMB"
  878. :disabled="true"
  879. />
  880. </template>
  881. </el-table-column>
  882. <el-table-column label="汇率" align="center" prop="fExrate">
  883. <template slot-scope="scope">
  884. <el-input
  885. v-model="scope.row.fExrate"
  886. placeholder="汇率"
  887. v-input-limit="2"
  888. :disabled="disabled"
  889. />
  890. </template>
  891. </el-table-column>
  892. <el-table-column label="金额" align="center" prop="fAmount">
  893. <template slot-scope="scope">
  894. <el-input
  895. v-model="scope.row.fAmount"
  896. placeholder="金额"
  897. v-input-limit="2"
  898. :disabled="true"
  899. />
  900. </template>
  901. </el-table-column>
  902. <el-table-column label="税率" align="center" prop="fTaxrate">
  903. <template slot-scope="scope">
  904. <el-input
  905. v-model="scope.row.fTaxrate"
  906. placeholder="税率"
  907. v-input-limit="2"
  908. :disabled="disabled"
  909. />
  910. </template>
  911. </el-table-column>
  912. <el-table-column label="备注" align="center" prop="remarks">
  913. <template slot-scope="scope">
  914. <el-input
  915. v-model="scope.row.remarks"
  916. placeholder="备注"
  917. :disabled="disabled"
  918. />
  919. </template>
  920. </el-table-column>
  921. <el-table-column
  922. label="操作"
  923. align="center"
  924. class-name="small-padding fixed-width"
  925. width="100"
  926. >
  927. <template slot-scope="scope">
  928. <el-button
  929. size="mini"
  930. type="text"
  931. icon="el-icon-delete"
  932. @click.native.prevent="deleteRow(scope.$index, DList)"
  933. :disabled="disabled"
  934. >删除</el-button
  935. >
  936. </template>
  937. </el-table-column>
  938. </el-table>
  939. </div>
  940. </el-collapse-item>
  941. <el-collapse-item name="4" v-if="userType == '00'">
  942. <template slot="title">
  943. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  944. ><span
  945. style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  946. >付款信息</span
  947. >
  948. </i>
  949. </template>
  950. <div>
  951. <div
  952. style="
  953. display: flex;
  954. justify-content: space-between;
  955. margin: 10px 0;
  956. "
  957. >
  958. <div>
  959. <el-button
  960. type="primary"
  961. icon="el-icon-plus"
  962. size="mini"
  963. @click="addDListRow(CList)"
  964. :disabled="disabled"
  965. >添加</el-button
  966. >
  967. </div>
  968. </div>
  969. <el-table :data="CList">
  970. <el-table-column label="结算单位" align="center" prop="fCorpid">
  971. <template slot-scope="scope">
  972. <el-select
  973. v-model="scope.row.fCorpid"
  974. placeholder="结算单位"
  975. :clearable="true"
  976. filterable
  977. :disabled="disabled"
  978. >
  979. <el-option
  980. v-for="(dict, index) in fMblnoOptions"
  981. :key="index.fId"
  982. :label="dict.fName"
  983. :value="dict.fId"
  984. />
  985. </el-select>
  986. </template>
  987. </el-table-column>
  988. <el-table-column label="费用名称" align="center" prop="fFeeid">
  989. <template slot-scope="scope">
  990. <el-select
  991. v-model="scope.row.fFeeid"
  992. placeholder="费用名称"
  993. clearable
  994. filterable
  995. :disabled="disabled"
  996. >
  997. <el-option
  998. v-for="(dict, index) in fWbuOptions"
  999. :key="index.fId"
  1000. :label="dict.fName"
  1001. :value="dict.fId"
  1002. />
  1003. </el-select>
  1004. </template>
  1005. </el-table-column>
  1006. <el-table-column
  1007. label="计费单位"
  1008. align="center"
  1009. prop="fFeeunitid"
  1010. >
  1011. <template slot-scope="scope">
  1012. <el-select
  1013. v-model="scope.row.fFeeunitid"
  1014. placeholder="计费单位"
  1015. :disabled="disabled"
  1016. >
  1017. <el-option
  1018. v-for="(dict, index) in ffeeunitidList"
  1019. :key="index.dictValue"
  1020. :label="dict.dictLabel"
  1021. :value="dict.dictValue"
  1022. />
  1023. </el-select>
  1024. </template>
  1025. </el-table-column>
  1026. <el-table-column label="计费数量" align="center" prop="fQty">
  1027. <template slot-scope="scope">
  1028. <el-input
  1029. v-model="scope.row.fQty"
  1030. placeholder="计费数量"
  1031. v-input-limit="0"
  1032. :disabled="disabled"
  1033. @input="total(scope.row)"
  1034. />
  1035. </template>
  1036. </el-table-column>
  1037. <el-table-column label="单价" align="center" prop="fUnitprice">
  1038. <template slot-scope="scope">
  1039. <el-input
  1040. v-model="scope.row.fUnitprice"
  1041. placeholder="单价"
  1042. v-input-limit="2"
  1043. :disabled="disabled"
  1044. @input="total(scope.row)"
  1045. />
  1046. </template>
  1047. </el-table-column>
  1048. <el-table-column label="币种" align="center" prop="fCurrency">
  1049. <template slot-scope="scope">
  1050. <el-input
  1051. v-model="scope.row.fCurrency"
  1052. placeholder="RMB"
  1053. :disabled="true"
  1054. />
  1055. </template>
  1056. </el-table-column>
  1057. <el-table-column label="汇率" align="center" prop="fExrate">
  1058. <template slot-scope="scope">
  1059. <el-input
  1060. v-model="scope.row.fExrate"
  1061. placeholder="汇率"
  1062. v-input-limit="2"
  1063. :disabled="disabled"
  1064. />
  1065. </template>
  1066. </el-table-column>
  1067. <el-table-column label="金额" align="center" prop="fAmount">
  1068. <template slot-scope="scope">
  1069. <el-input
  1070. v-model="scope.row.fAmount"
  1071. placeholder="金额"
  1072. v-input-limit="2"
  1073. :disabled="true"
  1074. />
  1075. </template>
  1076. </el-table-column>
  1077. <el-table-column label="税率" align="center" prop="fTaxrate">
  1078. <template slot-scope="scope">
  1079. <el-input
  1080. v-model="scope.row.fTaxrate"
  1081. placeholder="税率"
  1082. v-input-limit="2"
  1083. :disabled="disabled"
  1084. />
  1085. </template>
  1086. </el-table-column>
  1087. <el-table-column label="备注" align="center" prop="remarks">
  1088. <template slot-scope="scope">
  1089. <el-input
  1090. v-model="scope.row.remarks"
  1091. placeholder="备注"
  1092. :disabled="disabled"
  1093. />
  1094. </template>
  1095. </el-table-column>
  1096. <el-table-column
  1097. label="操作"
  1098. align="center"
  1099. class-name="small-padding fixed-width"
  1100. width="100"
  1101. >
  1102. <template slot-scope="scope">
  1103. <el-button
  1104. size="mini"
  1105. type="text"
  1106. icon="el-icon-delete"
  1107. @click.native.prevent="deleteRow(scope.$index, DList)"
  1108. :disabled="disabled"
  1109. >删除</el-button
  1110. >
  1111. </template>
  1112. </el-table-column>
  1113. </el-table>
  1114. </div>
  1115. </el-collapse-item>
  1116. <el-collapse-item name="5">
  1117. <template slot="title">
  1118. <i class="header-icon el-icon-circle-plus" style="font-size: 16px"
  1119. ><span
  1120. style="font-size: 16px; font-weight: bolder; margin-left: 5px"
  1121. >附件上传</span
  1122. >
  1123. </i>
  1124. </template>
  1125. <div>
  1126. <div
  1127. style="
  1128. display: flex;
  1129. justify-content: space-between;
  1130. margin: 10px 0;
  1131. "
  1132. >
  1133. <div>
  1134. <el-button
  1135. type="primary"
  1136. icon="el-icon-plus"
  1137. size="mini"
  1138. @click="addRelevt"
  1139. :disabled="disabled"
  1140. >添加</el-button
  1141. >
  1142. </div>
  1143. </div>
  1144. <el-table
  1145. :data="relevantAttachments"
  1146. tooltip-effect="dark"
  1147. border
  1148. stripe
  1149. style="width: 100%"
  1150. height="150"
  1151. >
  1152. <el-table-column label="序号" type="index" width="80">
  1153. </el-table-column>
  1154. <el-table-column
  1155. prop="attachName"
  1156. header-align="center"
  1157. align="center"
  1158. label="附件名称"
  1159. >
  1160. <template slot-scope="scope">
  1161. <el-input
  1162. v-model="scope.row.attachName"
  1163. placeholder="附件名称"
  1164. show-word-limit
  1165. />
  1166. </template>
  1167. </el-table-column>
  1168. <el-table-column
  1169. prop="opuserID "
  1170. header-align="center"
  1171. align="center"
  1172. label="上传人"
  1173. >
  1174. <template slot-scope="scope">
  1175. <el-input
  1176. v-model="scope.row.opuserID"
  1177. placeholder="上传人"
  1178. show-word-limit
  1179. />
  1180. </template>
  1181. </el-table-column>
  1182. <el-table-column
  1183. prop="opdata"
  1184. header-align="center"
  1185. align="center"
  1186. label="上传时间"
  1187. >
  1188. <template slot-scope="scope">
  1189. <el-date-picker
  1190. v-model="scope.row.opdata"
  1191. type="datetime"
  1192. disabled
  1193. placeholder="上传时间"
  1194. format="yyyy-MM-dd HH:mm"
  1195. value-format="timestamp"
  1196. ></el-date-picker>
  1197. </template>
  1198. </el-table-column>
  1199. <el-table-column
  1200. prop="attachUrl"
  1201. header-align="center"
  1202. align="center"
  1203. label="上传附件"
  1204. >
  1205. <template slot-scope="scope">
  1206. <div style="display: flex; justify-content: center">
  1207. <el-upload
  1208. class="upload-demo"
  1209. :action="uploadImgUrl"
  1210. :on-success="
  1211. (res, file) => {
  1212. handleSucces(scope, res, file);
  1213. }
  1214. "
  1215. :headers="headers"
  1216. :disabled="disabled"
  1217. :show-file-list="false"
  1218. :limit="1"
  1219. >
  1220. <el-button size="small" type="text" :disabled="disabled"
  1221. >点击上传</el-button
  1222. >
  1223. </el-upload>
  1224. <el-button
  1225. size="small"
  1226. type="text"
  1227. @click="checkFile(scope)"
  1228. :disabled="disabled"
  1229. style="margin-left: 10px"
  1230. >查看</el-button
  1231. >
  1232. <el-button
  1233. size="small"
  1234. type="text"
  1235. :disabled="disabled"
  1236. @click="deleteFile(scope)"
  1237. >删除</el-button
  1238. >
  1239. </div>
  1240. </template>
  1241. </el-table-column>
  1242. <el-table-column
  1243. header-align="center"
  1244. align="center"
  1245. label="操作"
  1246. width="130PX"
  1247. >
  1248. <template slot-scope="scope">
  1249. <el-button
  1250. size="mini"
  1251. type="text"
  1252. icon="el-icon-delete"
  1253. @click.native.prevent="
  1254. deleteRow(scope.$index, relevantAttachments)
  1255. "
  1256. :disabled="disabled"
  1257. >删除</el-button
  1258. >
  1259. </template>
  1260. </el-table-column>
  1261. </el-table>
  1262. </div>
  1263. </el-collapse-item>
  1264. </el-collapse>
  1265. </el-form>
  1266. </span>
  1267. <span slot="footer" class="dialog-footer">
  1268. <el-button type="primary" @click="submitForm" :disabled="disabled"
  1269. >提 交</el-button
  1270. >
  1271. <!-- <el-button type="success" @click="submitFix">修改</el-button> -->
  1272. <el-button
  1273. type="success"
  1274. @click="submitAllowChanges"
  1275. >修 改</el-button
  1276. >
  1277. <el-button type="info" @click="submitSave" :disabled="disabled"
  1278. >保 存</el-button
  1279. >
  1280. <el-button
  1281. type="warning"
  1282. @click="submitRetreat"
  1283. >撤 回</el-button
  1284. >
  1285. <el-button @click="showDialog = false">取 消</el-button>
  1286. </span>
  1287. </el-dialog>
  1288. </template>
  1289. <script>
  1290. import {
  1291. addFtmsorderbills,
  1292. RetreatFtmsorderbills,
  1293. allowChangesFtmsorderbills,
  1294. updateFtmsorderbills,
  1295. planChangeFtmsorderbills,
  1296. } from "@/api/fleet/ftmsorderbills";
  1297. import {
  1298. singleaddFtmsorderbillsplans,
  1299. revokeFtmsorderbillsplans,
  1300. removeFtmsorderbillsplans,
  1301. changeFtmsorderbillsplans,
  1302. planChangeFtmsorderbillsplans,
  1303. } from "@/api/fleet/ftmsorderbillsplans";
  1304. import { company } from "@/api/fleet/carManage";
  1305. import { listGoods } from "@/api/basicdata/goods";
  1306. import { listCorps } from "@/api/basicdata/corps";
  1307. import { listFees } from "@/api/basicdata/fees";
  1308. import UploadFile from "@/components/Uploadfile";
  1309. import Cookies from "js-cookie";
  1310. import { getToken } from "@/utils/auth";
  1311. export default {
  1312. name: "plans",
  1313. props: {
  1314. addOrUpdateVisible: {
  1315. type: Boolean,
  1316. default: false,
  1317. },
  1318. title: {
  1319. type: String,
  1320. required: "",
  1321. },
  1322. form: Object,
  1323. disabled: {
  1324. type: Boolean,
  1325. default: false,
  1326. },
  1327. disabled2: {
  1328. type: Boolean,
  1329. default: false,
  1330. },
  1331. planList: {
  1332. type: Array,
  1333. default: [],
  1334. },
  1335. DList: {
  1336. type: Array,
  1337. default: [],
  1338. },
  1339. CList: {
  1340. type: Array,
  1341. default: [],
  1342. },
  1343. schedulingList: {
  1344. type: Array,
  1345. default: [],
  1346. },
  1347. collapses: {
  1348. type: Array,
  1349. default: [],
  1350. },
  1351. },
  1352. components: {
  1353. UploadFile,
  1354. },
  1355. data() {
  1356. return {
  1357. dcList: [
  1358. {
  1359. value: "D",
  1360. label: "收款",
  1361. },
  1362. {
  1363. value: "C",
  1364. label: "付款",
  1365. },
  1366. ],
  1367. currencyList: [
  1368. {
  1369. value: "RMB",
  1370. label: "RMB",
  1371. },
  1372. ],
  1373. // 控制弹出框显示隐藏
  1374. showDialog: false,
  1375. // 表单校验
  1376. rules: {
  1377. corpId: [
  1378. { required: true, message: "请输入客户名称", trigger: "blur" },
  1379. ],
  1380. billType: [
  1381. { required: true, message: "请选择业务类型", trigger: "blur" },
  1382. ],
  1383. transType: [
  1384. { required: true, message: "请选择运输方式", trigger: "blur" },
  1385. ],
  1386. loadAddr: [
  1387. { required: true, message: "请输入提箱地点", trigger: "blur" },
  1388. ],
  1389. loadAttntel: [
  1390. {
  1391. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  1392. message: "请正确输入手机号",
  1393. trigger: "blur",
  1394. },
  1395. ],
  1396. mdLoadAttnTel: [
  1397. {
  1398. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  1399. message: "请正确输入手机号",
  1400. trigger: "blur",
  1401. },
  1402. ],
  1403. unLoadAttnTel: [
  1404. {
  1405. pattern: /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/,
  1406. message: "请正确输入手机号",
  1407. trigger: "blur",
  1408. },
  1409. ],
  1410. },
  1411. billTypeList: [],
  1412. transTypeList: [],
  1413. transPropList: [],
  1414. goodsLossTypeList: [],
  1415. relevantAttachments: [],
  1416. cntrIdList: [],
  1417. priceTypeList: [],
  1418. userType: null,
  1419. username: null,
  1420. fMblnoOptions: [],
  1421. cntrId2List: [],
  1422. goodsOptions: [],
  1423. fWbuOptions: [],
  1424. ffeeunitidList: [],
  1425. collapses2: [],
  1426. polList: [],
  1427. podList: [],
  1428. companyList: [],
  1429. uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
  1430. headers: {
  1431. Authorization: "Bearer " + getToken(),
  1432. },
  1433. };
  1434. },
  1435. created() {
  1436. this.getDicts("data_billType").then((response) => {
  1437. this.billTypeList = response.data;
  1438. });
  1439. this.getDicts("data_transType").then((response) => {
  1440. this.transTypeList = response.data;
  1441. });
  1442. this.getDicts("data_transProp").then((response) => {
  1443. this.transPropList = response.data;
  1444. });
  1445. this.getDicts("data_goodsLossType").then((response) => {
  1446. this.goodsLossTypeList = response.data;
  1447. });
  1448. this.getDicts("data_cntrId").then((response) => {
  1449. response.data.map((e) => (e.noOption = false));
  1450. this.cntrIdList = response.data;
  1451. });
  1452. this.getDicts("data_priceType").then((response) => {
  1453. this.priceTypeList = response.data;
  1454. });
  1455. this.getDicts("data_ffeeunitid").then((response) => {
  1456. this.ffeeunitidList = response.data;
  1457. });
  1458. this.getDicts("port_start").then((response) => {
  1459. this.polList = response.data;
  1460. });
  1461. this.getDicts("port_end").then((response) => {
  1462. this.podList = response.data;
  1463. });
  1464. listCorps().then((response) => {
  1465. this.fMblnoOptions = response.rows;
  1466. });
  1467. listGoods().then((response) => {
  1468. this.goodsOptions = response.rows;
  1469. });
  1470. listFees().then((response) => {
  1471. this.fWbuOptions = response.rows;
  1472. });
  1473. company({
  1474. delFlag: "0",
  1475. billStatus: 6,
  1476. }).then((response) => {
  1477. this.companyList = response.rows;
  1478. });
  1479. this.userType = Cookies.get("userType");
  1480. this.username = Cookies.get("userName");
  1481. },
  1482. methods: {
  1483. //选中时赋值pid
  1484. checkPid(row) {
  1485. let arr = this.planList;
  1486. let arr2 = arr.filter((e) => e.cntrId == row.cntrId);
  1487. row["pid"] = arr2[0].id;
  1488. },
  1489. noMorecntrId(e) {
  1490. this.cntrIdList.forEach((item) => (item.noOption = false));
  1491. let arrIds = e.map((item) => item.cntrId);
  1492. this.cntrIdList
  1493. .filter((item) => arrIds.indexOf(item.dictValue) > -1)
  1494. .forEach((item) => (item.noOption = true));
  1495. },
  1496. showSure(val) {
  1497. let pidList = val.filter((e) => e.pid != null);
  1498. let arr1 = pidList;
  1499. let arr1Ids = arr1.map((item) => item.cntrId);
  1500. arr1Ids = [...new Set(arr1Ids)];
  1501. let arr2 = this.cntrIdList;
  1502. this.cntrId2List = arr2.filter(
  1503. (item) => arr1Ids.indexOf(item.dictValue) > -1
  1504. );
  1505. },
  1506. // 新增附件上传
  1507. addRelevt() {
  1508. this.relevantAttachments.push({
  1509. attachUrl: null,
  1510. attachName: null,
  1511. opuserID: this.username,
  1512. opdata: Date.parse(new Date()),
  1513. });
  1514. },
  1515. //附件删除
  1516. deleteFile(scope) {
  1517. this.relevantAttachments[scope.$index].attachName = "";
  1518. this.relevantAttachments[scope.$index].attachUrl = "";
  1519. if (this.relevantAttachments[scope.$index].attachUrl === "") {
  1520. this.$message.success("删除成功");
  1521. } else {
  1522. this.$message.error("未知错误,删除失败");
  1523. }
  1524. },
  1525. //附件查看
  1526. checkFile(scope) {
  1527. if (this.relevantAttachments[scope.$index].attachUrl) {
  1528. window.open(this.relevantAttachments[scope.$index].attachUrl);
  1529. } else {
  1530. this.$message.error("请上传附件");
  1531. }
  1532. },
  1533. //附件上传
  1534. handleSucces(scope, res, file) {
  1535. this.relevantAttachments[scope.$index].attachName = res.fileName;
  1536. this.relevantAttachments[scope.$index].attachUrl = res.url;
  1537. if (this.relevantAttachments[scope.$index].attachUrl === "") {
  1538. this.$message.error("上传失败");
  1539. } else {
  1540. this.$message.success("上传成功");
  1541. }
  1542. },
  1543. // 添加行
  1544. addRow(tableData, event) {
  1545. var obj = {};
  1546. tableData.push(obj);
  1547. },
  1548. addDListRow(tableData, event) {
  1549. var obj = { fcorpid: this.form.corpId, fcurrency: "RMB", fExrate: "1" };
  1550. tableData.push(obj);
  1551. },
  1552. //删除行
  1553. deleteRow(index, rows) {
  1554. rows.splice(index, 1);
  1555. },
  1556. deleteplansRow(index, rows, row) {
  1557. let arr = this.schedulingList;
  1558. let arr2 = arr.filter((e) => e.cntrId == row.cntrId && e.cntrId != null);
  1559. if (arr2.length != 0) {
  1560. this.msgSuccess("调度安排已插入此箱型数据,不能删除");
  1561. } else {
  1562. this.cntrIdList
  1563. .filter((item) => item.dictValue == row.cntrId)
  1564. .forEach((item) => (item.noOption = false));
  1565. rows.splice(index, 1);
  1566. }
  1567. },
  1568. // 上传成功返回数据
  1569. showFile(row) {
  1570. for (let list in this.relevantAttachments) {
  1571. this.$set(this.relevantAttachments[list], "attachUrl", row.url);
  1572. this.$set(this.relevantAttachments[list], "attachName", row.fileName);
  1573. }
  1574. },
  1575. // 弹出框关闭后触发
  1576. handleClose() {
  1577. // 子组件调用父组件方法,并传递参数
  1578. this.$emit("changeShow", "false");
  1579. this.cntrIdList.forEach((item) => (item.noOption = false));
  1580. },
  1581. /** 提交按钮 */
  1582. submitForm() {
  1583. this.$refs["form"].validate((valid) => {
  1584. if (valid) {
  1585. let arr = this.schedulingList.filter((e) => e.billStatus >= 6);
  1586. if (this.schedulingList.length == arr.length) {
  1587. if (this.form.billStatus != 5) {
  1588. this.form["billStatus"] = "6";
  1589. }
  1590. this.DList.map((e) => {
  1591. return (e.fDc = "D");
  1592. });
  1593. this.CList.map((e) => {
  1594. return (e.fDc = "C");
  1595. });
  1596. if (this.planList) {
  1597. let arr2 = [];
  1598. this.planList.map((e) => {
  1599. let arr = this.cntrIdList.filter(
  1600. (item) => item.dictValue == e.cntrId
  1601. );
  1602. arr.map((a) => {
  1603. arr2.push(a.dictLabel + "*" + e.cntrQty);
  1604. });
  1605. });
  1606. this.cntrDesc = [...new Set(arr2)].join(",");
  1607. }
  1608. this.form["cntrDesc"] = this.cntrDesc;
  1609. let formData = new window.FormData();
  1610. console.log(this.form);
  1611. formData.append("tmsorder", JSON.stringify(this.form));
  1612. formData.append(
  1613. "attachs",
  1614. JSON.stringify(this.relevantAttachments)
  1615. );
  1616. formData.append("scntrs", JSON.stringify(this.planList));
  1617. formData.append(
  1618. "fees",
  1619. JSON.stringify(this.DList.concat(this.CList))
  1620. );
  1621. formData.append("plans", JSON.stringify(this.schedulingList));
  1622. if (this.form.billStatus != 5) {
  1623. addFtmsorderbills(formData).then((response) => {
  1624. this.msgSuccess("新增成功");
  1625. this.$parent.getList();
  1626. this.showDialog = false;
  1627. });
  1628. } else {
  1629. planChangeFtmsorderbills(formData).then((response) => {
  1630. this.msgSuccess("修改成功");
  1631. this.$parent.getList();
  1632. this.showDialog = false;
  1633. });
  1634. }
  1635. } else {
  1636. // this.msgSuccess("调度安排中有未提交的数据");
  1637. this.msgSuccess("请先提交调度安排的派车信息");
  1638. }
  1639. }
  1640. });
  1641. },
  1642. //保存
  1643. submitSave() {
  1644. this.form["billStatus"] = "2";
  1645. this.DList.map((e) => {
  1646. return (e.fDc = "D");
  1647. });
  1648. this.CList.map((e) => {
  1649. return (e.fDc = "C");
  1650. });
  1651. let formData = new window.FormData();
  1652. formData.append("tmsorder", JSON.stringify(this.form));
  1653. formData.append("attachs", JSON.stringify(this.relevantAttachments));
  1654. formData.append("scntrs", JSON.stringify(this.planList));
  1655. formData.append("fees", JSON.stringify(this.DList.concat(this.CList)));
  1656. formData.append("plans", JSON.stringify(this.schedulingList));
  1657. addFtmsorderbills(formData).then((response) => {
  1658. if (response.code == 200) {
  1659. this.msgSuccess("保存成功");
  1660. this.$parent.getList();
  1661. this.$parent.getSave(response);
  1662. } else {
  1663. this.msgSuccess("保存失败");
  1664. }
  1665. });
  1666. },
  1667. //撤回
  1668. submitRetreat() {
  1669. if (this.form.billStatus >= 6) {
  1670. const data = { id: this.form.id, actId: 1000 };
  1671. RetreatFtmsorderbills(data).then((response) => {
  1672. if (response.code == 200) {
  1673. this.msgSuccess("撤回成功");
  1674. this.$parent.getList();
  1675. this.$set(this.form, "billStatus", 3);
  1676. this.$emit("fixDisabled", "false");
  1677. }
  1678. });
  1679. } else {
  1680. this.msgSuccess("单据已进行业务调度不允许修改");
  1681. }
  1682. },
  1683. //修改
  1684. submitAllowChanges() {
  1685. if (this.form.billStatus < 6) {
  1686. this.$emit("fixDisabled", "false");
  1687. this.msgSuccess("允许修改");
  1688. } else {
  1689. this.$confirm("该单据已经提交,是否进行变更操作?", "提示", {
  1690. confirmButtonText: "确定",
  1691. cancelButtonText: "取消",
  1692. type: "warning",
  1693. })
  1694. .then(() => {
  1695. const data = { id: this.form.id, actId: 1000 };
  1696. allowChangesFtmsorderbills(data).then((response) => {
  1697. if (response.code == 200) {
  1698. this.$emit("fixDisabled", "false");
  1699. this.msgSuccess("允许修改");
  1700. this.$set(this.form, "billStatus", 5);
  1701. } else {
  1702. this.msgSuccess("不允许修改");
  1703. }
  1704. });
  1705. })
  1706. .catch(() => {
  1707. this.$message({
  1708. type: "info",
  1709. message: "已取消",
  1710. });
  1711. });
  1712. }
  1713. },
  1714. //调度安排新增
  1715. addschedulingRow(tableData, event) {
  1716. const pidList = this.planList.filter((e) => e.pid != null);
  1717. if (
  1718. this.planList.length == 0 ||
  1719. Object.keys(this.planList[0]).length == 0
  1720. ) {
  1721. this.msgSuccess("至少添加一条计划货量");
  1722. } else if (pidList.length != this.planList.length) {
  1723. this.$confirm("计划货量存在未保存数据,是否保存?", "提示", {
  1724. confirmButtonText: "确定",
  1725. cancelButtonText: "取消",
  1726. type: "warning",
  1727. })
  1728. .then(() => {
  1729. this.submitSave();
  1730. })
  1731. .catch(() => {
  1732. this.$message({
  1733. type: "info",
  1734. message: "已取消保存",
  1735. });
  1736. });
  1737. } else {
  1738. var obj = {};
  1739. tableData.push(obj);
  1740. this.showSure(this.planList);
  1741. }
  1742. },
  1743. //单条订单调度提交
  1744. addplansRow(row) {
  1745. let formData = new window.FormData();
  1746. formData.append("tmsorder", JSON.stringify(this.form));
  1747. formData.append("plans", JSON.stringify(row));
  1748. if (row.billStatus == 5) {
  1749. planChangeFtmsorderbillsplans(formData).then((response) => {
  1750. this.msgSuccess("成功提交");
  1751. if (response.code == 200) {
  1752. this.$set(row, "billStatus", 6);
  1753. this.$set(row, "disabled", true);
  1754. }
  1755. });
  1756. } else if (row.billStatus != 6) {
  1757. singleaddFtmsorderbillsplans(formData).then((response) => {
  1758. this.msgSuccess("成功提交");
  1759. if (response.code == 200) {
  1760. this.$set(row, "id", response.data.id);
  1761. this.$set(row, "billStatus", response.data.billStatus);
  1762. }
  1763. });
  1764. } else {
  1765. this.msgSuccess("请勿重复提交");
  1766. }
  1767. },
  1768. delplansRow(index, rows, row) {
  1769. if (row.billStatus != 6 && row.id != null) {
  1770. removeFtmsorderbillsplans(row).then((response) => {
  1771. if (response.code == 200) {
  1772. rows.splice(index, 1);
  1773. this.msgSuccess("成功删除");
  1774. }
  1775. });
  1776. } else {
  1777. rows.splice(index, 1);
  1778. }
  1779. },
  1780. revokeplansRow(index, rows, row) {
  1781. if (row.billStatus == 6) {
  1782. revokeFtmsorderbillsplans(row).then((response) => {
  1783. if (response.code == 200) {
  1784. this.msgSuccess("成功撤回");
  1785. this.$set(row, "billStatus", response.data.billStatus);
  1786. }
  1787. });
  1788. } else {
  1789. this.msgSuccess("此条数据没有提交,不能申请撤回");
  1790. }
  1791. },
  1792. changeplansRow(row) {
  1793. if (row.billStatus != 5) {
  1794. changeFtmsorderbillsplans(row).then((response) => {
  1795. if (response.code == 200) {
  1796. this.msgSuccess("允许变更");
  1797. this.$set(row, "billStatus", 5);
  1798. }
  1799. });
  1800. } else {
  1801. this.msgSuccess("请勿重复变更");
  1802. }
  1803. },
  1804. mbinput(val) {
  1805. this.form.mblno = val.toUpperCase();
  1806. },
  1807. total(row) {
  1808. if (row.fQty && row.fUnitprice) {
  1809. this.$set(row, "fAmount", (row.fQty * row.fUnitprice).toFixed(2));
  1810. } else {
  1811. this.$set(row, "fAmount", 0);
  1812. }
  1813. },
  1814. },
  1815. watch: {
  1816. // 监听 addOrUpdateVisible 改变
  1817. addOrUpdateVisible(oldVal, newVal) {
  1818. this.showDialog = this.addOrUpdateVisible;
  1819. },
  1820. planList(val) {
  1821. this.showSure(val);
  1822. },
  1823. collapses() {
  1824. this.collapses2 = this.collapses;
  1825. },
  1826. },
  1827. };
  1828. </script>