tranManagementShippingFeedback.vue 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493
  1. //装船反馈
  2. <template>
  3. <div class="container">
  4. <el-row>
  5. <el-col :span="12">
  6. <h2 class="bg-left title">船运装船反馈</h2>
  7. </el-col>
  8. <el-col :span="12" class="bg-right">
  9. <el-button
  10. class="bg-bottom"
  11. type="primary"
  12. size="small"
  13. @click="returnsales()"
  14. >
  15. <img
  16. width="6"
  17. height="10"
  18. style="vertical-align: bottom; margin-right: 3px"
  19. src="../../../public/img/lujing.png"
  20. alt
  21. />返回
  22. </el-button>
  23. </el-col>
  24. </el-row>
  25. <ws-form
  26. class="position"
  27. ref="deptBudgetList"
  28. :rules="rules"
  29. :model="deptBudgetList"
  30. >
  31. <div class="small-title" style="font-size: 16px">任务详情</div>
  32. <ws-info-table>
  33. <!--任务编号-->
  34. <ws-form-item label="任务编号" span="1" prop="processNo">{{
  35. deptBudgetList.processNo
  36. }}</ws-form-item>
  37. <!--货名-->
  38. <ws-form-item label="货名" span="1" prop="goodsName">{{
  39. deptBudgetList.goodsName
  40. }}</ws-form-item>
  41. <!--重量(吨)-->
  42. <ws-form-item label="重量(吨)" span="1" prop="weight">{{
  43. deptBudgetList.weight
  44. }}</ws-form-item>
  45. <!--发货地址-->
  46. <ws-form-item label="发货地址" span="1" prop="sendDetailedAddress">
  47. {{ deptBudgetList.sendPrivate }}{{ deptBudgetList.sendCity
  48. }}{{ deptBudgetList.sendArea }}
  49. </ws-form-item>
  50. <!--发货人-->
  51. <ws-form-item label="发货人" span="1" prop="sender" class="readonly">{{
  52. deptBudgetList.sender
  53. }}</ws-form-item>
  54. <!--发货人电话-->
  55. <ws-form-item
  56. label="发货人电话"
  57. span="1"
  58. prop="senderPhone"
  59. class="readonly"
  60. >{{ deptBudgetList.senderPhone }}
  61. </ws-form-item>
  62. <!--收货地址-->
  63. <ws-form-item label="收货地址" span="1" prop="receiveDetailedAddress">
  64. {{ deptBudgetList.receivePrivate }}{{ deptBudgetList.receiveCity
  65. }}{{ deptBudgetList.receiveArea }}
  66. </ws-form-item>
  67. <!--收货人-->
  68. <ws-form-item label="收货人" span="1" prop="receiver">{{
  69. deptBudgetList.receiver
  70. }}</ws-form-item>
  71. <!--收货人电话-->
  72. <ws-form-item label="收货人电话" span="1" prop="receiverPhone">{{
  73. deptBudgetList.receiverPhone
  74. }}</ws-form-item>
  75. <!--发货日期-->
  76. <ws-form-item label="发货日期" span="1" prop="deliveryDateStart"
  77. >{{ deptBudgetList.deliveryDateStart }}
  78. </ws-form-item>
  79. <!--最晚到货日期-->
  80. <ws-form-item label="最晚到货日期" span="1" prop="deliveryDateEnd">{{
  81. deptBudgetList.deliveryDateEnd
  82. }}</ws-form-item>
  83. <!--合同编号-->
  84. <ws-form-item label="合同编号" span="1" prop="contractNo">{{
  85. deptBudgetList.contractNo
  86. }}</ws-form-item>
  87. <!-- 运输方式 -->
  88. <ws-form-item label="运输方式" span="1" prop="tranType">{{
  89. deptBudgetList.tranType
  90. }}</ws-form-item>
  91. </ws-info-table>
  92. <div class="small-title" style="font-size: 16px">联络员及航次</div>
  93. <ws-info-table>
  94. <!-- 姓名 -->
  95. <ws-form-item label="姓名" span="1" prop="driver">{{
  96. deptBudgetList.driver
  97. }}</ws-form-item>
  98. <!-- 电话 -->
  99. <ws-form-item label="电话" span="1" prop="driverPhone">{{
  100. deptBudgetList.driverPhone
  101. }}</ws-form-item>
  102. <!--发船日期-->
  103. <ws-form-item label="发船日期" span="1" prop="sendDateStart">
  104. <ws-date-picker
  105. v-model="deptBudgetList.sendDateStart"
  106. type="date"
  107. placeholder="请选择发船日期"
  108. value-format="yyyy-MM-dd"
  109. />
  110. </ws-form-item>
  111. <!-- 预计到港日期 -->
  112. <ws-form-item label="预计到港日期" span="1" prop="receiveDateEnd">{{
  113. deptBudgetList.receiveDateEnd
  114. }}</ws-form-item>
  115. <!-- 船名 -->
  116. <ws-form-item label="船名" span="1" prop="shipName">{{
  117. deptBudgetList.shipName
  118. }}</ws-form-item>
  119. <!-- 航次 -->
  120. <ws-form-item label="航次" span="1" prop="shipNo">{{
  121. deptBudgetList.shipNo
  122. }}</ws-form-item>
  123. <!-- 类型 -->
  124. <ws-form-item label="类型" span="1" prop="shipType">{{
  125. deptBudgetList.shipType
  126. }}</ws-form-item>
  127. <!-- 数量 -->
  128. <ws-form-item
  129. label="数量"
  130. span="1"
  131. prop="boxNumber"
  132. v-if="deptBudgetList.shipType == '集装箱'"
  133. >
  134. {{ deptBudgetList.boxNumber }}</ws-form-item
  135. >
  136. </ws-info-table>
  137. <div class="small-title" style="font-size: 16px; width: 50%; float: left">
  138. 装船详情
  139. </div>
  140. <!-- 导入 -->
  141. <div
  142. style="
  143. font-size: 16px;
  144. width: 50%;
  145. float: left;
  146. text-align: right;
  147. display: flex;
  148. justify-content: end;
  149. "
  150. >
  151. <el-link
  152. href="https://taohaoliang.oss-cn-beijing.aliyuncs.com/pcfiles/%E5%8F%8D%E9%A6%88%E6%A8%A1%E6%9D%BF/%E8%88%B9%E8%BF%90%E8%A3%85%E8%BD%A6%E5%8F%8D%E9%A6%88%E6%A8%A1%E6%9D%BF.xlsx"
  153. style="margin-left: 8px"
  154. >
  155. <el-button type="primary">模板下载</el-button>
  156. </el-link>
  157. <el-upload
  158. style="margin-left: 8px"
  159. class="upload-demo inline-block margin-right-10"
  160. action
  161. :on-change="handleChange"
  162. :show-file-list="false"
  163. accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
  164. :auto-upload="false"
  165. >
  166. <el-button type="primary">导入</el-button>
  167. </el-upload>
  168. </div>
  169. <div class="liaison" v-if="deptBudgetList.tranCarInfoList.length > 0">
  170. <div
  171. style="width: 100%"
  172. class="flex position"
  173. v-for="(item, index) in freightspace"
  174. :key="index"
  175. >
  176. <ws-info-table>
  177. <div class="catNos" v-if="item.shipType == '集装箱'">
  178. 集装箱-{{ index + 1 }}
  179. <span class="noservice" v-show="item.status == '未装车'"
  180. >未装船</span
  181. >
  182. <span class="service" v-show="item.status == '已装车'"
  183. >已装船</span
  184. >
  185. <span class="serviced" v-show="item.status == '已送达'">
  186. {{ item.status }}
  187. </span>
  188. </div>
  189. <div class="catNos" v-if="item.shipType == '散船'">
  190. 仓位号-{{ index + 1 }}
  191. <span class="noservice" v-show="item.status == '未装车'"
  192. >未装船</span
  193. >
  194. <span class="service" v-show="item.status == '已装车'"
  195. >已装船</span
  196. >
  197. <span class="serviced" v-show="item.status == '已送达'">
  198. {{ item.status }}
  199. </span>
  200. </div>
  201. <!--箱号-->
  202. <el-form-item
  203. label="箱号"
  204. prop="caseNo"
  205. v-if="item.shipType == '集装箱'"
  206. >
  207. <el-input
  208. v-if="item.status == '已装车' || item.status == '已送达'"
  209. :disabled="readonly"
  210. v-model="item.caseNo"
  211. placeholder="请输入箱号"
  212. ></el-input>
  213. <el-input
  214. v-else
  215. v-model="item.caseNo"
  216. placeholder="请输入箱号"
  217. ></el-input>
  218. </el-form-item>
  219. <!--封号-->
  220. <el-form-item
  221. label="封号"
  222. prop="titleNo"
  223. v-if="item.shipType == '集装箱'"
  224. >
  225. <el-input
  226. v-if="item.status == '已装车' || item.status == '已送达'"
  227. :disabled="readonly"
  228. v-model="item.titleNo"
  229. placeholder="请输入封号"
  230. ></el-input>
  231. <el-input
  232. v-else
  233. v-model="item.titleNo"
  234. placeholder="请输入封号"
  235. ></el-input>
  236. </el-form-item>
  237. <!-- 仓位号 -->
  238. <ws-form-item
  239. span="1"
  240. prop="binNumber"
  241. v-if="item.shipType == '散船'"
  242. >{{ item.binNumber }}</ws-form-item
  243. >
  244. <!-- 计划重量 -->
  245. <ws-form-item
  246. label="计划重量(吨)"
  247. span="1"
  248. prop="positionWeight"
  249. v-if="item.shipType == '散船'"
  250. >
  251. {{ item.positionWeight }}</ws-form-item
  252. >
  253. <!--装船净重-->
  254. <ws-form-item label="装船净重:" span="1" prop="loadNetWeight">
  255. <ws-input
  256. v-if="item.status == '已装车' || item.status == '已送达'"
  257. :disabled="readonly"
  258. v-model="item.loadNetWeight"
  259. placeholder="请输入装船净重"
  260. maxlength="20"
  261. size="small"
  262. />
  263. <ws-input
  264. v-else
  265. v-model="item.loadNetWeight"
  266. placeholder="请输入装船净重"
  267. maxlength="20"
  268. size="small"
  269. />
  270. </ws-form-item>
  271. <!--装船日期-->
  272. <el-form-item
  273. label="装船日期:"
  274. span="1"
  275. prop="loadingDate"
  276. label-width="100px"
  277. >
  278. <ws-date-picker
  279. v-if="item.status == '已装车' || item.status == '已送达'"
  280. :disabled="readonly"
  281. v-model="item.loadingDate"
  282. type="date"
  283. style="width: 150px"
  284. placeholder="请选择日期"
  285. value-format="yyyy-MM-dd"
  286. />
  287. <ws-date-picker
  288. v-else
  289. v-model="item.loadingDate"
  290. type="date"
  291. style="width: 150px"
  292. placeholder="请选择日期"
  293. value-format="yyyy-MM-dd"
  294. />
  295. </el-form-item>
  296. <div v-show="item.signStatus == '未签合同'" class="signStatus">
  297. {{ item.signStatus }}
  298. </div>
  299. <div v-show="item.signStatus == '已签合同'" class="signStatus1">
  300. {{ item.signStatus }}
  301. </div>
  302. </ws-info-table>
  303. </div>
  304. </div>
  305. <div v-if="deptBudgetList.tranCarInfoList.length > 0" class="yd-bottom">
  306. <ws-form-item
  307. label="运单:"
  308. span="1"
  309. prop="loadPoundImg"
  310. class="yd-bottom-left"
  311. v-if="freightspace[0].status == '已装车'"
  312. >
  313. <!-- slot-scope="scope" -->
  314. <template>
  315. <el-upload
  316. action="https://www.zthymaoyi.com/upload/admin"
  317. :show-file-list="false"
  318. :on-success="
  319. (res) => {
  320. uploadSuccessHandle1(res)
  321. }
  322. "
  323. class="avatar-uploader"
  324. accept=".jpg, .jpeg, .png, .gif"
  325. multiple
  326. >
  327. <img
  328. width="18"
  329. height="20"
  330. style="vertical-align: text-top; position: relative"
  331. src="../../../public/img/fujian.png"
  332. alt
  333. />
  334. </el-upload>
  335. <div class="tupian">
  336. <span
  337. v-if="
  338. deptBudgetList.tranCarInfoList.length > 0 &&
  339. deptBudgetList.tranCarInfoList[0].loadPoundImg != null
  340. "
  341. >{{ pictureTotal }}</span
  342. >
  343. <span
  344. v-if="
  345. deptBudgetList.tranCarInfoList.length > 0 &&
  346. deptBudgetList.tranCarInfoList[0].loadPoundImg == null
  347. "
  348. >未上传</span
  349. >
  350. </div>
  351. <el-button v-if="deptBudgetList.tranCarInfoList.length>0&&deptBudgetList.tranCarInfoList[0].loadPoundImg != null"
  352. class="bg-bottom-preview" type="primary" size="small" :data-img="deptBudgetList.tranCarInfoList[0].loadPoundImg" @click="$imgPreview">预览</el-button>
  353. </template>
  354. </ws-form-item>
  355. <div
  356. style="
  357. text-align: right;
  358. color: #8890b1;
  359. font-size: 16px;
  360. width: 100%;
  361. "
  362. >
  363. 合计(吨):{{ total }}/{{ deptBudgetList.weight }}
  364. <!--阶段状态-->
  365. <span
  366. class="noservice"
  367. v-show="deptBudgetList.feedbackStatus == '执行中'"
  368. >未完货</span
  369. >
  370. <span
  371. class="service"
  372. v-show="deptBudgetList.feedbackStatus == '已完货'"
  373. >{{ deptBudgetList.feedbackStatus }}</span
  374. >
  375. </div>
  376. </div>
  377. <div v-if="this.deptBudgetList.tranCarInfoList.length == 0">暂无船次</div>
  378. <!--运单-->
  379. <!-- <div
  380. style="width: 100%"
  381. class="flex position"
  382. v-for="(item, index) in this.freightspace"
  383. :key="index"
  384. >-->
  385. <!-- </div> -->
  386. </ws-form>
  387. <!-- 完货 -->
  388. <div style="text-align: right; padding: 10px" class="center">
  389. <el-button
  390. class="bg-bottom"
  391. type="primary"
  392. size="small"
  393. @click="submit(deptBudgetList)"
  394. >提交</el-button
  395. >
  396. <el-button
  397. class="bg-bottom"
  398. type="primary"
  399. size="small"
  400. @click="finished(deptBudgetList)"
  401. >完货</el-button
  402. >
  403. </div>
  404. </div>
  405. </template>
  406. <script>
  407. import { regionData } from 'element-china-area-data'
  408. import Pagination from '@/components/Pagination'
  409. import {
  410. seeCat,
  411. packList,
  412. feedback,
  413. state,
  414. importApplFileUrl,
  415. } from '@/model/transport/index'
  416. import { getstaff } from '@/model/warehouse/index'
  417. import WsUpload from '@/components/WsUpload'
  418. import mapDrag from '@/components/mapdrag/mapdrag'
  419. export default {
  420. name: 'viewSpareMoney',
  421. components: {
  422. WsUpload,
  423. mapDrag,
  424. },
  425. watch: {
  426. vesselId(val) {
  427. this.getVesselData()
  428. },
  429. isShow(val) {
  430. this.showType = val
  431. },
  432. },
  433. data() {
  434. return {
  435. excelFreightspace: [],
  436. pictureTotal: 0,
  437. deptBudgetList: {
  438. totalStorage: 0,
  439. sendDateStart: '',
  440. tranCarInfoList: [],
  441. },
  442. tranCarInfoList: {
  443. loadPoundImg: '',
  444. },
  445. options_: regionData,
  446. heightData: '600px',
  447. zoom: 7,
  448. selectedOptions: [],
  449. center: [116.244694, 39.517344],
  450. window: '',
  451. radio: 1,
  452. personCharge: [],
  453. district: null,
  454. driverList: [],
  455. readonly: true,
  456. listDate: {
  457. country: '中国',
  458. level: 'country',
  459. city: '',
  460. },
  461. citylist: [],
  462. compId: sessionStorage.getItem('ws-pf_compId'),
  463. rules: {
  464. warehouseName: [
  465. {
  466. required: true,
  467. message: '请输入仓库名称',
  468. trigger: 'blur',
  469. },
  470. {
  471. min: 2,
  472. max: 20,
  473. message: '仓库名长度不符合要求,请输入2-20字符之内',
  474. trigger: 'blur',
  475. },
  476. ],
  477. },
  478. tranType: 1,
  479. size: 10,
  480. value1: '',
  481. unitList: [],
  482. fileTemp: '',
  483. freightspace: [
  484. {
  485. caseNo: '',
  486. titleNo: '',
  487. binNumber: '',
  488. positionWeight: '',
  489. loadNetWeight: '',
  490. loadingDate: '',
  491. },
  492. // {loadPoundImg:{}},
  493. ],
  494. name: '',
  495. staffList: [],
  496. options: [],
  497. carModel: [],
  498. tranCarInfoList: {
  499. loadPoundImg: '',
  500. },
  501. //上传
  502. accessoryTFs: false,
  503. fileList: [],
  504. appendixIdsAdd: '',
  505. }
  506. },
  507. activated() {
  508. this.deptBudgetList.id = this.$route.query.id
  509. this.getList()
  510. },
  511. computed: {
  512. totalStorage: function () {
  513. var maxStorage = 0
  514. for (var i = 0; i < this.freightspace.length; i++) {
  515. maxStorage += Number(this.freightspace[i].maxStorage)
  516. }
  517. return maxStorage
  518. },
  519. total: function () {
  520. if (this.deptBudgetList.tranCarInfoList != null) {
  521. var maxStorage = 0
  522. for (var i = 0; i < this.deptBudgetList.tranCarInfoList.length; i++) {
  523. maxStorage += Number(
  524. this.deptBudgetList.tranCarInfoList[i].loadNetWeight
  525. )
  526. }
  527. return maxStorage
  528. } else {
  529. return 0
  530. }
  531. },
  532. },
  533. methods: {
  534. dataFilter(val) {
  535. this.deptBudgetList.personCharge = val
  536. if (val) {
  537. this.options = this.staffList.filter((item) => {
  538. if (
  539. !!~item.staffName.indexOf(val) ||
  540. !!~item.staffName.toUpperCase().indexOf(val.toUpperCase())
  541. ) {
  542. return true
  543. }
  544. })
  545. } else {
  546. this.options = this.staffList
  547. }
  548. },
  549. selectstaff(e) {
  550. for (var i = 0; i < this.staffList.length; i++) {
  551. if (this.staffList[i].staffName == e) {
  552. this.deptBudgetList.driverPhone = this.staffList[i].staffMobilePhone
  553. this.freightspace[i].driverPhone = this.staffList[i].staffMobilePhone
  554. this.deptBudgetList.personChargeKey = this.staffList[i].staffId
  555. }
  556. }
  557. },
  558. marker: function (item) {
  559. this.deptBudgetList.warehousePositioning =
  560. item.lnglat.lat + ',' + item.lnglat.lng
  561. },
  562. selectedAddress(e) {
  563. this.deptBudgetList.warehousePositioning =
  564. e.center.lat + ',' + e.center.lng
  565. },
  566. confirmPositioncity() {
  567. this.listDate.level = 'city'
  568. this.listDate.country = this.name
  569. },
  570. // 关闭 dialog时 处理文件url 初始化upload组件
  571. handleClose() {
  572. this.dialogViewSpareMoney = false
  573. },
  574. //下拉司机姓名改变事件
  575. selectdriver() {},
  576. handleChange(value) {
  577. this.selectedOptions = value
  578. },
  579. returnsales() {
  580. this.deptBudgetList = {}
  581. this.freightspace = {}
  582. this.selectedOptions = ''
  583. this.deptBudgetList.tranCarInfoList = []
  584. this.$router.push({
  585. path: 'tranManagementTransporHairRespond',
  586. })
  587. },
  588. // 上传附件
  589. uploadSuccess(data, files, url) {
  590. console.log(data, files, url)
  591. },
  592. handleClose() {
  593. this.accessoryTFs = false
  594. },
  595. handleChange(file, fileList) {
  596. this.fileTemp = file.raw
  597. let fileName = file.raw.name
  598. let fileType = fileName.substring(fileName.lastIndexOf('.') + 1)
  599. // 判断上传文件格式
  600. if (this.fileTemp) {
  601. if (fileType == 'xlsx' || fileType == 'xls') {
  602. this.importf(this.fileTemp)
  603. } else {
  604. this.$message({
  605. type: 'warning',
  606. message: '附件格式错误,请删除后重新上传!',
  607. })
  608. }
  609. } else {
  610. this.$message({
  611. type: 'warning',
  612. message: '请上传附件!',
  613. })
  614. }
  615. },
  616. importf(obj) {
  617. this.excelFreightspace = []
  618. this.dialogVisible = true
  619. let _this = this
  620. let inputDOM = this.$refs.inputer // 通过DOM取文件数据
  621. this.file = event.currentTarget.files[0]
  622. var rABS = false //是否将文件读取为二进制字符串
  623. var f = this.file
  624. var reader = new FileReader()
  625. //if (!FileReader.prototype.readAsBinaryString) {
  626. FileReader.prototype.readAsBinaryString = function (f) {
  627. var binary = ''
  628. var rABS = false //是否将文件读取为二进制字符串
  629. var pt = this
  630. var wb //读取完成的数据
  631. var outdata
  632. var reader = new FileReader()
  633. reader.onload = function (e) {
  634. var bytes = new Uint8Array(reader.result)
  635. var length = bytes.byteLength
  636. for (var i = 0; i < length; i++) {
  637. binary += String.fromCharCode(bytes[i])
  638. }
  639. var XLSX = require('xlsx')
  640. if (rABS) {
  641. wb = XLSX.read(btoa(fixdata(binary)), {
  642. //手动转化
  643. type: 'base64',
  644. })
  645. } else {
  646. wb = XLSX.read(binary, {
  647. type: 'binary',
  648. })
  649. }
  650. // outdata就是你想要的东西 excel导入的数据
  651. outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
  652. // excel 数据再处理
  653. let arr = []
  654. outdata.map((v) => {
  655. // let jsonString = JSON.stringify(v).replace(/\*/g, '').replace(/\s/ig,'');
  656. let jsonString = JSON.stringify(v)
  657. .replace(/\//g, '')
  658. .replace(/\s/gi, '')
  659. console.log(jsonString)
  660. v = JSON.parse(jsonString)
  661. let obj = {}
  662. //xxx代表列名
  663. obj.caseNo = v.箱号
  664. obj.titleNo = v.封号
  665. obj.binNumber = v.仓位号
  666. obj.positionWeight = v.散船重量
  667. obj.loadNetWeight = v.装船净重
  668. obj.loadingDate = v.装船日期
  669. obj.status = v.状态
  670. obj.shipType = v.类型
  671. console.log(obj)
  672. _this.excelFreightspace.push(obj)
  673. })
  674. let _ispushData = true
  675. console.log(arr, _this.freightspace)
  676. for (let i = 0; i < _this.excelFreightspace.length; i++) {
  677. _ispushData = true
  678. for (let k = 0; k < _this.freightspace.length; k++) {
  679. if (
  680. _this.excelFreightspace[i].binNumber ==
  681. _this.freightspace[k].binNumber
  682. ) {
  683. _this.freightspace[k] = _this.excelFreightspace[i]
  684. _ispushData = false
  685. }
  686. }
  687. if (_ispushData) {
  688. _this.freightspace.push(_this.excelFreightspace[i])
  689. _ispushData = true
  690. }
  691. }
  692. _this.$forceUpdate()
  693. }
  694. reader.readAsArrayBuffer(f)
  695. }
  696. if (rABS) {
  697. reader.readAsArrayBuffer(f)
  698. } else {
  699. reader.readAsBinaryString(f)
  700. }
  701. console.log(reader)
  702. },
  703. uploadSectionFile(param) {
  704. var fileName = param.file.name.split('.')
  705. var fileSuffix = fileName[fileName.length - 1]
  706. if (
  707. !(
  708. fileSuffix.toLowerCase() == 'xlsx' ||
  709. fileSuffix.toLowerCase() == 'xls'
  710. )
  711. ) {
  712. EventBus.$emit('error', this.$t('upload.message08'))
  713. loading.close()
  714. return
  715. }
  716. var data = new FormData()
  717. data.append('file', param.file)
  718. data.append('compId', sessionStorage.getItem('ws-pf_compId'))
  719. data.append('userId', sessionStorage.getItem('ws-pf_userId'))
  720. importApplFileUrl(data)
  721. .toPromise()
  722. .then((success) => {
  723. console.log(success)
  724. })
  725. },
  726. //完货
  727. finished() {
  728. this.$confirm(`完货操作后,装船信息不可修改,是否确定完货?`, {
  729. confirmButtonText: '确定',
  730. cancelButtonText: '取消',
  731. type: 'warning',
  732. })
  733. .then(() => {
  734. this.$refs.deptBudgetList.validate((valid) => {
  735. if (valid) {
  736. var tranProcessInfo = {}
  737. tranProcessInfo.id = this.deptBudgetList.id
  738. state(tranProcessInfo)
  739. .toPromise()
  740. .then((response) => {
  741. this.$message.success('完货成功')
  742. this.deptBudgetList = {}
  743. this.freightspace = {}
  744. this.selectedOptions = ''
  745. this.$router.push({
  746. path: 'tranManagementTransporHairRespond',
  747. })
  748. })
  749. } else {
  750. return false
  751. }
  752. })
  753. })
  754. .catch(() => {
  755. return false
  756. })
  757. },
  758. submit() {
  759. for (let i = 0; i < this.freightspace.length; i++) {
  760. if (this.freightspace.shipType == '集装箱') {
  761. if (!this.freightspace[i].caseNo) {
  762. this.$message({
  763. message: '箱号不能为空!',
  764. type: 'warning',
  765. })
  766. return
  767. }
  768. if (
  769. this.freightspace[i].caseNo.length > 15 ||
  770. this.freightspace[i].caseNo.length < 1
  771. ) {
  772. this.$message({
  773. message: '箱号输入错误!',
  774. type: 'warning',
  775. })
  776. return
  777. }
  778. if (!this.freightspace[i].titleNo) {
  779. this.$message({
  780. message: '封号不能为空!',
  781. type: 'warning',
  782. })
  783. return
  784. }
  785. if (
  786. this.freightspace[i].titleNo.length > 15 ||
  787. this.freightspace[i].titleNo.length < 1
  788. ) {
  789. this.$message({
  790. message: '封号输入错误!',
  791. type: 'warning',
  792. })
  793. return
  794. }
  795. } else if (this.freightspace.shipType == '散船') {
  796. if (!this.freightspace[i].binNumber) {
  797. this.$message({
  798. message: '仓位号不能为空!',
  799. type: 'warning',
  800. })
  801. return
  802. }
  803. }
  804. if (!this.freightspace[i].loadNetWeight) {
  805. this.$message({
  806. message: '装船净重不能为空!',
  807. type: 'warning',
  808. })
  809. return
  810. }
  811. if (
  812. (this.freightspace[i].loadNetWeight &&
  813. String(this.freightspace[i].loadNetWeight).indexOf('.') != -1 &&
  814. String(this.freightspace[i].loadNetWeight).length -
  815. (String(this.freightspace[i].loadNetWeight).indexOf('.') + 1) >
  816. 2) ||
  817. this.freightspace[i].loadNetWeight > 10000 ||
  818. this.freightspace[i].loadNetWeight < 0
  819. ) {
  820. this.$message({
  821. message: '装船净重输入错误',
  822. type: 'warning',
  823. })
  824. return
  825. }
  826. if (!this.freightspace[i].loadingDate) {
  827. this.$message({
  828. message: '装船日期不能为空!',
  829. type: 'warning',
  830. })
  831. return
  832. }
  833. }
  834. this.$confirm(`提交成功后装船信息不可修改,是否确定提交?`, {
  835. confirmButtonText: '确定',
  836. cancelButtonText: '取消',
  837. type: 'warning',
  838. })
  839. .then(() => {
  840. this.$refs.deptBudgetList.validate((valid) => {
  841. if (valid) {
  842. this.tranCarInfoList = this.freightspace
  843. this.tranCarInfoList[0].sendDateStart =
  844. this.deptBudgetList.sendDateStart
  845. for (var i = 0; i < this.tranCarInfoList.length; i++) {
  846. this.tranCarInfoList[i].id = this.freightspace[i].id
  847. }
  848. var tranProcessInfo = {}
  849. tranProcessInfo.id = this.deptBudgetList.id
  850. tranProcessInfo.infoId = this.deptBudgetList.infoId
  851. tranProcessInfo.processNo = this.deptBudgetList.processNo
  852. tranProcessInfo.tranCarInfoList = this.tranCarInfoList
  853. feedback(tranProcessInfo)
  854. .toPromise()
  855. .then((response) => {
  856. this.$message.success('提交成功')
  857. this.deptBudgetList = {}
  858. this.freightspace = {}
  859. this.selectedOptions = ''
  860. this.$router.push({
  861. path: 'tranManagementTransporHairRespond',
  862. })
  863. })
  864. } else {
  865. // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  866. return false
  867. }
  868. })
  869. })
  870. .catch(() => {
  871. return false
  872. })
  873. },
  874. resetForm(deptBudgetList) {
  875. this.$refs[deptBudgetList].resetFields()
  876. },
  877. getList() {
  878. seeCat({
  879. id: this.deptBudgetList.id,
  880. })
  881. .toPromise()
  882. .then((response) => {
  883. this.deptBudgetList = response
  884. if (response.tranCarInfoList.length > 0) {
  885. this.deptBudgetList.driver = response.tranCarInfoList[0].driver
  886. this.deptBudgetList.driverPhone =
  887. response.tranCarInfoList[0].driverPhone
  888. this.$set(
  889. this.deptBudgetList,
  890. 'sendDateStart',
  891. response.tranCarInfoList[0].sendDateStart
  892. )
  893. this.deptBudgetList.receiveDateEnd =
  894. response.tranCarInfoList[0].receiveDateEnd
  895. this.deptBudgetList.shipName = response.tranCarInfoList[0].shipName
  896. this.deptBudgetList.shipNo = response.tranCarInfoList[0].shipNo
  897. this.deptBudgetList.shipType = response.tranCarInfoList[0].shipType
  898. this.deptBudgetList.boxNumber = response.tranCarInfoList[0].boxNumber
  899. //上传附件计数
  900. if (this.deptBudgetList.tranCarInfoList[0].loadPoundImg) {
  901. this.pictureTotal =
  902. this.deptBudgetList.tranCarInfoList[0].loadPoundImg.split(
  903. ','
  904. ).length
  905. }
  906. this.freightspace = response.tranCarInfoList
  907. }
  908. for (var i = 0; i < this.freightspace.length; i++) {
  909. if (!this.freightspace[i].loadNetWeight) {
  910. this.freightspace[i].loadNetWeight = 0
  911. }
  912. }
  913. })
  914. //司机姓名下拉
  915. getstaff({
  916. compId: sessionStorage.getItem('ws-pf_compId'),
  917. })
  918. .toPromise()
  919. .then((response) => {
  920. this.options = response
  921. this.staffList = response
  922. }),
  923. //车型
  924. packList({
  925. constId: 'TRAN5',
  926. })
  927. .toPromise()
  928. .then((response) => {
  929. this.carModel = response
  930. })
  931. },
  932. handleExamine() {},
  933. approve() {},
  934. // returnsales() {
  935. // this.$router.push({ path: 'purchaseContract' })
  936. // },
  937. selectChapterTwo(e) {
  938. for (var i = 0; i < this.ChapterTwoList.length; i++) {
  939. if (this.ChapterTwoList[i].constValue == e) {
  940. this.deptBudgetList.gradeKey = this.ChapterTwoList[i].constKey
  941. }
  942. }
  943. },
  944. selectunitList(e) {
  945. for (var i = 0; i < this.unitList.length; i++) {
  946. if (this.unitList[i].constValue == e) {
  947. this.deptBudgetList.acceptanceMethodKey = this.unitList[i].constKey
  948. }
  949. }
  950. },
  951. selectgrade(e) {
  952. for (var i = 0; i < this.gradeList.length; i++) {
  953. if (this.gradeList[i].constValue == e) {
  954. this.deptBudgetList.gradeKey = this.gradeList[i].constKey
  955. }
  956. }
  957. },
  958. selectgoodsName(e) {
  959. for (var i = 0; i < this.goodnameList.length; i++) {
  960. if (this.goodnameList[i].constValue == e) {
  961. this.deptBudgetList.goodsNameKey = this.goodnameList[i].constKey
  962. }
  963. }
  964. },
  965. selectpackingMethod(e) {
  966. for (var i = 0; i < this.packtypeList.length; i++) {
  967. if (this.packtypeList[i].constValue == e) {
  968. this.deptBudgetList.packingMethodKey = this.packtypeList[i].constKey
  969. }
  970. }
  971. },
  972. uploadSuccessHandle1(e) {
  973. this.pictureTotal++
  974. if (this.deptBudgetList.tranCarInfoList[0].loadPoundImg) {
  975. this.deptBudgetList.tranCarInfoList[0].loadPoundImg += ',' + e.url
  976. } else {
  977. this.deptBudgetList.tranCarInfoList[0].loadPoundImg = e.url
  978. }
  979. console.log(this.deptBudgetList.tranCarInfoList, 'duixiang1')
  980. feedback(this.deptBudgetList)
  981. .toPromise()
  982. .then((response) => {})
  983. },
  984. },
  985. }
  986. </script>
  987. <style lang="scss" scoped>
  988. /deep/.totalStorage .el-input__inner {
  989. color: #afb5cb;
  990. background: #f5f7fa;
  991. }
  992. .small-title {
  993. position: relative;
  994. padding: 10px;
  995. font-weight: 600;
  996. }
  997. .small-title::before {
  998. position: absolute;
  999. content: '';
  1000. display: block;
  1001. background: #5473e8;
  1002. width: 4px;
  1003. height: 14px;
  1004. left: 0px;
  1005. top: 13px;
  1006. }
  1007. .position {
  1008. position: relative;
  1009. }
  1010. .del {
  1011. position: absolute;
  1012. right: -38px;
  1013. top: 14px;
  1014. cursor: pointer;
  1015. right: 0;
  1016. display: inline-block;
  1017. font-size: 26px;
  1018. width: 26px;
  1019. height: 10px;
  1020. line-height: 0px;
  1021. }
  1022. .amap-page-container {
  1023. width: 300px;
  1024. height: 300px;
  1025. }
  1026. .el-form {
  1027. padding: 0 10%;
  1028. }
  1029. /deep/.ws-info-table .el-form-item {
  1030. border-right: 1px solid transparent;
  1031. border-bottom: 1px solid transparent;
  1032. }
  1033. .readonly {
  1034. position: relative;
  1035. }
  1036. .readonly:after {
  1037. content: '*';
  1038. color: #ff2727;
  1039. position: absolute;
  1040. right: 8px;
  1041. z-index: 10;
  1042. top: 21%;
  1043. font-size: 20px;
  1044. }
  1045. .title {
  1046. position: relative;
  1047. }
  1048. .title::before {
  1049. content: '';
  1050. display: inline-block;
  1051. width: 5px;
  1052. height: 30px;
  1053. background: #5473e8;
  1054. position: absolute;
  1055. left: 0;
  1056. }
  1057. .el-button--primary {
  1058. background-color: #5878e8;
  1059. border-color: #5878e8;
  1060. }
  1061. .el-col {
  1062. background: #f6f7fc;
  1063. }
  1064. /deep/.ws-info-table .el-form-item .el-form-item__content {
  1065. padding: 0 25px;
  1066. border-left: 1px solid transparent;
  1067. background: #fff;
  1068. display: flex;
  1069. }
  1070. /deep/.ws-info-table .el-form-item .el-form-item__label {
  1071. width: 100px;
  1072. text-align: center;
  1073. background: #fff;
  1074. // border: 1px solid #cdd2dc;
  1075. }
  1076. .button-container {
  1077. display: flex;
  1078. flex-wrap: nowrap;
  1079. justify-content: space-between;
  1080. align-items: center;
  1081. background-color: #fff;
  1082. width: 100%;
  1083. height: 50px;
  1084. padding: 0 10px;
  1085. & > div {
  1086. margin-left: 10px;
  1087. display: flex;
  1088. flex-wrap: nowrap;
  1089. flex-direction: row;
  1090. & > span {
  1091. line-height: 50px;
  1092. }
  1093. }
  1094. /deep/.auditFlow-box {
  1095. position: unset;
  1096. margin-left: 10px;
  1097. &/deep/.auditFlow-icon {
  1098. width: auto;
  1099. padding-right: 30px;
  1100. }
  1101. &/deep/.auditFlow-main {
  1102. position: absolute;
  1103. }
  1104. }
  1105. }
  1106. .box-app {
  1107. display: inline-block;
  1108. float: left;
  1109. margin-left: 30px;
  1110. line-height: 50px;
  1111. }
  1112. /deep/.el-dialog {
  1113. .el-form-item {
  1114. margin-bottom: 0 !important;
  1115. .el-input--medium {
  1116. textarea {
  1117. min-height: 100px !important;
  1118. }
  1119. }
  1120. }
  1121. }
  1122. .collapse-bottom {
  1123. margin-bottom: 20px;
  1124. }
  1125. .input-main .textarea .el-textarea__inner {
  1126. width: 100%;
  1127. z-index: 1;
  1128. }
  1129. .bg-left {
  1130. padding-left: 30px;
  1131. }
  1132. .bg-right {
  1133. padding-right: 10px;
  1134. text-align: right;
  1135. }
  1136. .bg-bottom {
  1137. margin: 15px 0px;
  1138. }
  1139. .wenzi {
  1140. width: 900px;
  1141. margin: 0 auto;
  1142. }
  1143. .wenzi h3 {
  1144. display: inline-block;
  1145. left: 10px;
  1146. }
  1147. .wenzi p {
  1148. display: inline-block;
  1149. }
  1150. .center {
  1151. width: 900px;
  1152. margin: 0 auto;
  1153. }
  1154. .center1 {
  1155. width: 100px;
  1156. margin: 0 auto;
  1157. margin-top: -2%;
  1158. }
  1159. .el-form-item {
  1160. width: 50%;
  1161. }
  1162. .el-form-item__label {
  1163. text-align: center;
  1164. }
  1165. .ce {
  1166. width: 900px;
  1167. margin: 0 auto;
  1168. }
  1169. /*.crt-main .textarea /deep/ .el-form-item__label {*/
  1170. /* height: 82px;*/
  1171. /*}*/
  1172. // 控制select为只读的时候显示样式
  1173. .hide-sel {
  1174. .el-input__inner {
  1175. border: 0px;
  1176. }
  1177. .el-icon-arrow-up {
  1178. display: none;
  1179. }
  1180. .el-textarea__inner {
  1181. background-color: #fff !important;
  1182. border: 0;
  1183. }
  1184. .el-date-editor {
  1185. i {
  1186. display: none;
  1187. }
  1188. }
  1189. // .is-disabled {
  1190. // .el-input__inner:hover {
  1191. // background-color: #fff !important;
  1192. // border: 0;
  1193. // }
  1194. // color: #606266;
  1195. // .el-input__inner {
  1196. // background-color: #fff !important;
  1197. // border: 0;
  1198. // color: #606266;
  1199. // }
  1200. // .el-textarea__inner {
  1201. // background-color: #fff !important;
  1202. // border: 0;
  1203. // color: #606266;
  1204. // }
  1205. // }
  1206. }
  1207. // 控制select为只读的时候显示样式
  1208. /deep/.ws-class-table-col {
  1209. height: auto;
  1210. padding: 0px 2px;
  1211. /deep/.el-input__inner {
  1212. padding: 0px 2px;
  1213. }
  1214. }
  1215. // /deep/.is-disabled {
  1216. // .el-input__prefix,
  1217. // .el-input__suffix {
  1218. // display: none;
  1219. // }
  1220. // .el-input__inner {
  1221. // background-color: #fff;
  1222. // border-color: #fff !important;
  1223. // color: #000 !important;
  1224. // font-size: 14px;
  1225. // cursor: text;
  1226. // padding: 0 !important;
  1227. // }
  1228. // }
  1229. .winseaview-view {
  1230. padding: 0 0 20px;
  1231. }
  1232. .container {
  1233. overflow: scroll;
  1234. height: 93vh;
  1235. }
  1236. .ws-info-table .el-form-item {
  1237. width: 33.3333%;
  1238. }
  1239. .readonly:after {
  1240. display: none;
  1241. }
  1242. .el-textarea__inner {
  1243. display: none;
  1244. }
  1245. .el-form {
  1246. margin-top: 50px;
  1247. }
  1248. .readonly {
  1249. width: 16%;
  1250. }
  1251. //去边框
  1252. /deep/.el-form-item {
  1253. border-right: 0px;
  1254. border-bottom: 0px;
  1255. }
  1256. /deep/.ws-info-table {
  1257. border-left: 0px;
  1258. border-top: 0px;
  1259. }
  1260. .ws-info-table .el-form-item .el-form-item__content {
  1261. border: none;
  1262. }
  1263. /deep/.ws-info-table .el-form-item {
  1264. border: none;
  1265. height: 50px;
  1266. }
  1267. /deep/.ws-info-table .el-form-item .el-form-item__content {
  1268. background: #f5f7fa;
  1269. border-radius: 4px;
  1270. border: 1px solid #d8dce6;
  1271. font-family: PingFangSC-Regular, PingFang SC;
  1272. margin-bottom: 5px;
  1273. background-color: #fff;
  1274. font-size: 14px;
  1275. font-weight: 400;
  1276. color: #8890b1;
  1277. line-height: 16px;
  1278. }
  1279. /deep/.ws-info-table .el-form-item .el-form-item__label {
  1280. background-color: #fff;
  1281. font-size: 13px;
  1282. font-family: PingFangSC-Regular, PingFang SC;
  1283. font-weight: 400;
  1284. color: #8890b1;
  1285. line-height: 16px;
  1286. }
  1287. /deep/.ws-info-table .el-form-item .el-form-item__content {
  1288. background: #f5f7fa;
  1289. border-radius: 4px;
  1290. border: 1px solid #d8dce6;
  1291. }
  1292. /deep/.flex .ws-info-table .el-form-item .el-form-item__content {
  1293. border: 0px;
  1294. }
  1295. //联络员及车次
  1296. /deep/.liaison .ws-info-table .el-form-item {
  1297. width: 19%;
  1298. }
  1299. /deep/.liaison .ws-info-table .el-form-item .el-form-item__label {
  1300. width: 37%;
  1301. background: #f6f7fc;
  1302. }
  1303. /deep/.liaison .ws-info-table {
  1304. width: 100%;
  1305. background: #f6f7fc;
  1306. border-radius: 4px;
  1307. border: 1px solid #d8dce6;
  1308. margin-top: 20px;
  1309. }
  1310. .catNos {
  1311. width: 100%;
  1312. height: 30px;
  1313. margin-top: 10px;
  1314. margin-left: 20px;
  1315. font-size: 14px;
  1316. }
  1317. .catNosCor {
  1318. color: #5473e8;
  1319. }
  1320. .add {
  1321. width: 130px;
  1322. height: 34px;
  1323. background: #f6f7fb;
  1324. border-radius: 17px;
  1325. color: #5473e8;
  1326. font-size: 14px;
  1327. border: none;
  1328. }
  1329. .add img {
  1330. display: inline-block;
  1331. margin-top: 3px;
  1332. margin-left: -30px;
  1333. }
  1334. .add .spans {
  1335. display: table-caption;
  1336. width: 56px;
  1337. height: 20px;
  1338. line-height: 18px;
  1339. }
  1340. .signStatus {
  1341. height: 25px;
  1342. border-radius: 3px;
  1343. border: 1px solid #5473e8;
  1344. padding: 0 3px;
  1345. color: #ffffff;
  1346. background: #c4cada;
  1347. line-height: 24px;
  1348. margin-left: 18px;
  1349. }
  1350. .signStatus1 {
  1351. height: 25px;
  1352. background: #e6ebff;
  1353. border-radius: 3px;
  1354. border: 1px solid #5473e8;
  1355. padding: 0 3px;
  1356. margin-left: 18px;
  1357. color: #5473e8;
  1358. line-height: 24px;
  1359. }
  1360. .line {
  1361. height: 26px;
  1362. margin-top: 6px;
  1363. left: 2px;
  1364. }
  1365. /deep/.liaison .ws-info-table .el-form-item .el-form-item__content {
  1366. padding: 0px;
  1367. }
  1368. .noservice {
  1369. background: #c4cada;
  1370. color: #ffffff;
  1371. padding: 5px 7px;
  1372. border-radius: 4px;
  1373. }
  1374. .service {
  1375. background: #e5f1f7;
  1376. color: #50cad4;
  1377. }
  1378. .tupian {
  1379. // margin-left: 14%;
  1380. // margin-top: -7%;
  1381. }
  1382. /deep/.el-input--suffix .el-input__inner {
  1383. padding-right: 0px;
  1384. }
  1385. .liaison {
  1386. margin-bottom: 20px;
  1387. }
  1388. .yd-bottom {
  1389. display: flex;
  1390. justify-content: space-between;
  1391. }
  1392. .yd-bottom-left {
  1393. display: flex;
  1394. }
  1395. .avatar-uploader {
  1396. margin-right: 10px;
  1397. }
  1398. /deep/.yd-bottom-left .el-form-item__content {
  1399. display: flex;
  1400. }
  1401. </style>