index.vue 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441
  1. <template>
  2. <div>
  3. <basic-container v-show="show">
  4. <div class="home-container" v-if="roleName.indexOf('平台') !== -1 || roleName.indexOf('客户') !== -1 || roleName.indexOf('administrator') !== -1 || roleName.indexOf('admin') !== -1">
  5. <div style="display: flex;justify-content: center;">
  6. <div class="content">
  7. <div class="content-item" @click="handleClick('')">
  8. <div class="card">
  9. <div class="card-title card-title1">
  10. <span>
  11. </span>
  12. </div>
  13. <div class="card-content">
  14. <span class="card-content-num" :class="!activeName?'selected':''">{{ totalData.all }}</span>
  15. <span class="card-content-text" :class="!activeName?'selected':''">全部</span>
  16. </div>
  17. </div>
  18. </div>
  19. <div class="divider"/>
  20. <div class="content-item" @click="handleClick('0')">
  21. <div class="card">
  22. <div class="card-title card-title7">
  23. <span>
  24. </span>
  25. </div>
  26. <div class="card-content">
  27. <span class="card-content-num" :class="activeName === '0'?'selected':''">{{ totalData.last }}</span>
  28. <span class="card-content-text" :class="activeName === '0'?'selected':''">未提交</span>
  29. </div>
  30. </div>
  31. </div>
  32. <div class="divider"/>
  33. <div class="content-item" @click="handleClick('1')">
  34. <div class="card">
  35. <div class="card-title card-title2">
  36. <span>
  37. </span>
  38. </div>
  39. <div class="card-content">
  40. <span class="card-content-num" :class="activeName === '1'?'selected':''">{{ totalData.zero }}</span>
  41. <span class="card-content-text" :class="activeName === '1'?'selected':''">未调度</span>
  42. </div>
  43. </div>
  44. </div>
  45. <div class="divider"/>
  46. <div class="content-item" @click="handleClick('2')">
  47. <div class="card">
  48. <div class="card-title card-title3">
  49. <span>
  50. </span>
  51. </div>
  52. <div class="card-content">
  53. <span class="card-content-num" :class="activeName === '2'?'selected':''">{{ totalData.one }}</span>
  54. <span class="card-content-text" :class="activeName === '2'?'selected':''">未派车</span>
  55. </div>
  56. </div>
  57. </div>
  58. <div class="divider"/>
  59. <div class="content-item" @click="handleClick('3')">
  60. <div class="card">
  61. <div class="card-title card-title4">
  62. <span>
  63. </span>
  64. </div>
  65. <div class="card-content">
  66. <span class="card-content-num" :class="activeName === '3'?'selected':''">{{ totalData.two }}</span>
  67. <span class="card-content-text" :class="activeName === '3'?'selected':''">未受理</span>
  68. </div>
  69. </div>
  70. </div>
  71. <div class="divider"/>
  72. <div class="content-item" @click="handleClick('4,6')">
  73. <div class="card">
  74. <div class="card-title card-title5">
  75. <span>
  76. </span>
  77. </div>
  78. <div class="card-content">
  79. <span class="card-content-num" :class="activeName === '4,6'?'selected':''">{{ totalData.three }}</span>
  80. <span class="card-content-text" :class="activeName === '4,6'?'selected':''">未完工</span>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="divider"/>
  85. <div class="content-item" @click="handleClick('5')">
  86. <div class="card">
  87. <div class="card-title card-title6">
  88. <span>
  89. </span>
  90. </div>
  91. <div class="card-content">
  92. <span class="card-content-num" :class="activeName === '5'?'selected':''">{{ totalData.four }}</span>
  93. <span class="card-content-text" :class="activeName === '5'?'selected':''">已关闭</span>
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. <div class="home-container" v-if="roleName.indexOf('车队') !== -1">
  101. <div style="display: flex;justify-content: center;">
  102. <div class="content">
  103. <div class="content-item" @click="handleClick('')">
  104. <div class="card">
  105. <div class="card-title card-title1">
  106. <span>
  107. </span>
  108. </div>
  109. <div class="card-content">
  110. <span class="card-content-num" :class="!activeName?'selected':''">{{ totalData.all }}</span>
  111. <span class="card-content-text" :class="!activeName?'selected':''">全部</span>
  112. </div>
  113. </div>
  114. </div>
  115. <div class="divider"/>
  116. <div class="content-item" @click="handleClick('2')">
  117. <div class="card">
  118. <div class="card-title card-title3">
  119. <span>
  120. </span>
  121. </div>
  122. <div class="card-content">
  123. <span class="card-content-num" :class="activeName === '2'?'selected':''">{{ totalData.one }}</span>
  124. <span class="card-content-text" :class="activeName === '2'?'selected':''">未派车</span>
  125. </div>
  126. </div>
  127. </div>
  128. <div class="divider"/>
  129. <div class="content-item" @click="handleClick('3')">
  130. <div class="card">
  131. <div class="card-title card-title4">
  132. <span>
  133. </span>
  134. </div>
  135. <div class="card-content">
  136. <span class="card-content-num" :class="activeName === '3'?'selected':''">{{ totalData.two }}</span>
  137. <span class="card-content-text" :class="activeName === '3'?'selected':''">未受理</span>
  138. </div>
  139. </div>
  140. </div>
  141. <div class="divider"/>
  142. <div class="content-item" @click="handleClick('4,6')">
  143. <div class="card">
  144. <div class="card-title card-title5">
  145. <span>
  146. </span>
  147. </div>
  148. <div class="card-content">
  149. <span class="card-content-num" :class="activeName === '4,6'?'selected':''">{{ totalData.three }}</span>
  150. <span class="card-content-text" :class="activeName === '4,6'?'selected':''">未完工</span>
  151. </div>
  152. </div>
  153. </div>
  154. <div class="divider"/>
  155. <div class="content-item" @click="handleClick('5')">
  156. <div class="card">
  157. <div class="card-title card-title6">
  158. <span>
  159. </span>
  160. </div>
  161. <div class="card-content">
  162. <span class="card-content-num" :class="activeName === '5'?'selected':''">{{ totalData.four }}</span>
  163. <span class="card-content-text" :class="activeName === '5'?'selected':''">已关闭</span>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="home-container" v-if="roleName.indexOf('司机') !== -1">
  171. <div style="display: flex;justify-content: center;">
  172. <div class="content">
  173. <div class="content-item" @click="handleClick('')">
  174. <div class="card">
  175. <div class="card-title card-title1">
  176. <span>
  177. </span>
  178. </div>
  179. <div class="card-content">
  180. <span class="card-content-num" :class="!activeName?'selected':''">{{ totalData.all }}</span>
  181. <span class="card-content-text" :class="!activeName?'selected':''">全部</span>
  182. </div>
  183. </div>
  184. </div>
  185. <div class="divider"/>
  186. <div class="content-item" @click="handleClick('3')">
  187. <div class="card">
  188. <div class="card-title card-title4">
  189. <span>
  190. </span>
  191. </div>
  192. <div class="card-content">
  193. <span class="card-content-num" :class="activeName === '3'?'selected':''">{{ totalData.two }}</span>
  194. <span class="card-content-text" :class="activeName === '3'?'selected':''">未受理</span>
  195. </div>
  196. </div>
  197. </div>
  198. <div class="divider"/>
  199. <div class="content-item" @click="handleClick('4,6')">
  200. <div class="card">
  201. <div class="card-title card-title5">
  202. <span>
  203. </span>
  204. </div>
  205. <div class="card-content">
  206. <span class="card-content-num" :class="activeName === '4,6'?'selected':''">{{ totalData.three }}</span>
  207. <span class="card-content-text" :class="activeName === '4,6'?'selected':''">未完工</span>
  208. </div>
  209. </div>
  210. </div>
  211. <div class="divider"/>
  212. <div class="content-item" @click="handleClick('5')">
  213. <div class="card">
  214. <div class="card-title card-title6">
  215. <span>
  216. </span>
  217. </div>
  218. <div class="card-content">
  219. <span class="card-content-num" :class="activeName === '5'?'selected':''">{{ totalData.four }}</span>
  220. <span class="card-content-text" :class="activeName === '5'?'selected':''">已关闭</span>
  221. </div>
  222. </div>
  223. </div>
  224. </div>
  225. </div>
  226. </div>
  227. </basic-container>
  228. <basic-container v-show="show">
  229. <avue-crud
  230. :key="key"
  231. :table-loading="loading"
  232. :page.sync="page"
  233. :data="dataList"
  234. ref="crud"
  235. :option="option"
  236. @on-load="onLoad"
  237. @row-del="rowDel"
  238. @search-reset="query={};activeName = ''"
  239. @selection-change="selectionChange"
  240. @resetColumn="resetColumn"
  241. @saveColumn="saveColumn"
  242. @search-criteria-switch="searchCriteriaSwitch"
  243. @search-change="searchChange">
  244. <template slot="menuLeft" slot-scope="{size}" v-if="roleName.indexOf('客户') !== -1 || roleName.indexOf('分管调度') !== -1 || roleName.indexOf('administrator') !== -1 || roleName.indexOf('admin') !== -1">
  245. <el-button type="primary" icon="el-icon-plus" :size="size" @click="rowSave">创建单据</el-button>
  246. <el-button type="success" :size="size" :disabled="selectionList.length !== 1" @click="copyDocument">复制单据
  247. </el-button>
  248. <el-button type="info" :size="size" icon="el-icon-printer">报表打印</el-button>
  249. </template>
  250. <template slot="plateNo" slot-scope="{row}" v-if="!row.$cellEdit">
  251. <span class="el-button--text" style="cursor: pointer" @click="openTrack(row)">{{ row.plateNo }}</span>
  252. </template>
  253. <template slot="corpNameSearch" slot-scope="{ row,index}">
  254. <crop-select
  255. v-model="row.corpId"
  256. :corpType="'KH'"
  257. :label="'shortName'"
  258. ></crop-select>
  259. </template>
  260. <!-- <template slot="corpNameSearch" slot-scope="{ row,index}">-->
  261. <!-- <crop-select-->
  262. <!-- v-model="row.corpId"-->
  263. <!-- ></crop-select>-->
  264. <!-- </template>-->
  265. <template slot="addressDetail" slot-scope="{ row,index}">
  266. <el-tooltip class="item" effect="dark" placement="top">
  267. <div v-html="ToBreak(row.addressDetail)" slot="content"></div>
  268. <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">{{ row.addressDetail }}</div>
  269. </el-tooltip>
  270. </template>
  271. <template slot="unloadingPlace" slot-scope="{ row,index}">
  272. <el-tooltip class="item" effect="dark" placement="top">
  273. <div v-html="ToBreak(row.unloadingPlace)" slot="content"></div>
  274. <div style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">{{ row.unloadingPlace }}</div>
  275. </el-tooltip>
  276. </template>
  277. <template slot-scope="{row,index}" slot="menu">
  278. <el-button type="text"
  279. icon="el-icon-edit"
  280. size="small"
  281. @click.stop="rowCell(row,index)">查看
  282. </el-button>
  283. <el-button type="text"
  284. icon="el-icon-delete"
  285. size="small"
  286. :disabled="roleName.indexOf('经理') !== -1 || roleName.indexOf('部门经理') !== -1 || roleName.indexOf('总经理') !== -1 || roleName.indexOf('总调度') !== -1"
  287. v-if="row.status < 1"
  288. @click.stop="$refs.crud.rowDel(row,index)">删除
  289. </el-button>
  290. </template>
  291. <template slot="corpName" slot-scope="{row,index}">
  292. <span class="el-button--text" style="cursor: pointer"
  293. @click.stop="rowCell(row,index)">{{ row.corpName }}</span>
  294. </template>
  295. <template slot="dispatchNumber" slot-scope="{row,index}">
  296. <span class="el-button--text" style="cursor: pointer"
  297. @click.stop="rowCell(row,index)">{{ row.dispatchNumber }}</span>
  298. </template>
  299. <template slot="orderNo" slot-scope="{row,index}">
  300. <span class="el-button--text" style="cursor: pointer"
  301. @click.stop="rowCell(row,index)">{{ row.orderNo }}</span>
  302. </template>
  303. <template slot="contractNo" slot-scope="{row,index}">
  304. <span class="el-button--text" style="cursor: pointer" @click.stop="rowCell(row,index)">{{ row.contractNo }}</span>
  305. </template>
  306. <template slot="fleetNameDetail" slot-scope="{row,index}">
  307. <span class="el-button--text" style="cursor: pointer" @click.stop="rowCell(row,index)">{{ row.fleetNameDetail }}</span>
  308. </template>
  309. </avue-crud>
  310. </basic-container>
  311. <detail-page v-if="!show" @backToList="backToList" :id="id" :home="home"></detail-page>
  312. <el-dialog
  313. title="实时位置"
  314. append-to-body
  315. custom-class="dialog_two"
  316. :visible.sync="dialogVisible"
  317. lock-scroll
  318. width="80%">
  319. <div id="container"></div>
  320. </el-dialog>
  321. </div>
  322. </template>
  323. <script>
  324. import detailPage from './detailPage'
  325. import {getSalesman, removeDelegationList, selectInvoiceList, totalList} from "@/api/landTransportation/bulkCargo";
  326. import {getQueryString} from "@/util/util";
  327. import {businessStatisticsFrequency} from "@/api/wel";
  328. import {gaude, location} from "@/api/gaude";
  329. import {customerList, fleetList} from "@/api/basicData/customerInformation";
  330. export default {
  331. name: "index",
  332. components: {
  333. detailPage
  334. },
  335. data() {
  336. return {
  337. id: '',
  338. map: null,
  339. infoWindow: null,
  340. marker: null,
  341. dialogVisible: false,
  342. lineArr: [],
  343. activeName: '0',
  344. show: true,
  345. query: {},
  346. selectionList: [],
  347. dataList: [],
  348. loading: false,
  349. page: {
  350. pageSize: 10,
  351. currentPage: 1,
  352. total: 0,
  353. pageSizes: [10, 50, 100, 200, 300]
  354. },
  355. key: 0,
  356. totalData: {},
  357. option: {},
  358. optionList:{},
  359. //客户
  360. optionListOne: {
  361. align: 'center',
  362. stripe: true,
  363. index: true,
  364. menu: true,
  365. menuWidth: 120,
  366. addBtn: false,
  367. editBtn: false,
  368. delBtn: false,
  369. height: "auto",
  370. searchSpan: 8,
  371. searchIcon: true,
  372. searchIndex: 2,
  373. selection: true,
  374. highlightCurrentRow: true,
  375. showSummary: true,
  376. summaryText: "合计",
  377. sumColumnList: [{
  378. name: 'freightCollect',
  379. type: 'sum',
  380. decimals: 2
  381. },{
  382. name: 'freightPay',
  383. type: 'sum',
  384. decimals: 2
  385. }],
  386. column: [
  387. {
  388. label: '货运日期',
  389. prop: 'arrivalTime',
  390. overHidden: true,
  391. type: "date",
  392. searchRange: true,
  393. defaultTime: ['00:00:00', '23:59:59'],
  394. format: "yyyy-MM-dd HH:mm",
  395. valueFormat: "yyyy-MM-dd HH:mm:ss",
  396. index: 1,
  397. width: 126,
  398. search: true,
  399. }, {
  400. label: '业务员',
  401. index: 2,
  402. width: 70,
  403. prop: 'salesmanName',
  404. searchProp: 'salesman',
  405. search: true,
  406. overHidden: true,
  407. filterable: true,
  408. type: "select",
  409. dicUrl: "/api/blade-user/userList?roleAlias=业务员",
  410. props: {
  411. label: "realName",
  412. value: "id"
  413. }
  414. }, {
  415. label: '物流运输',
  416. prop: 'dispatchDeptName',
  417. searchProp: 'dispatchDept',
  418. search: true,
  419. filterable: true,
  420. dicUrl: "/api/blade-system/dept/top-list?deptCategory=1",
  421. type: "select",
  422. props: {
  423. label: "deptName",
  424. value: "id"
  425. },
  426. overHidden: true,
  427. index: 3,
  428. width: 80
  429. },{
  430. label: '运输调度',
  431. prop: 'dispatcherName',
  432. overHidden: true,
  433. index: 4,
  434. width: 70,
  435. }, {
  436. label: '派车单号',
  437. width: 80,
  438. index: 5,
  439. prop: 'dispatchNumber',
  440. overHidden: true,
  441. search: true,
  442. }, {
  443. label: '装货地点',
  444. prop: 'addressDetail',
  445. index: 6,
  446. width: 132,
  447. search: true,
  448. }, {
  449. label: '卸货地点',
  450. prop: 'unloadingPlace',
  451. index: 7,
  452. width: 132,
  453. search: true,
  454. }, {
  455. label: '车队',
  456. width: 90,
  457. index: 8,
  458. overHidden: true,
  459. prop: 'fleetName',
  460. searchProp: 'fleetId',
  461. type: 'select',
  462. cascader: ['plateNo'],
  463. props: {
  464. label: "cname",
  465. value: "id",
  466. res: "data.records"
  467. },
  468. filterable: true,
  469. search: true,
  470. }, {
  471. label: '车型',
  472. width: 90,
  473. index: 9,
  474. prop: 'fleetVolum'
  475. }, {
  476. label: '运费',
  477. index: 11,
  478. width: 100,
  479. prop: 'freightCollect'
  480. }, {
  481. label: '状态',
  482. prop: 'status',
  483. index: 12,
  484. dicUrl: "/api/blade-system/dict-biz/dictionary?code=land_order_status_two",
  485. props: {
  486. label: "dictValue",
  487. value: "dictKey"
  488. },
  489. dataType: "string",
  490. type: 'select',
  491. overHidden: true,
  492. search: true,
  493. width: 90
  494. },{
  495. label: '备注',
  496. index: 13,
  497. overHidden: true,
  498. width: 130,
  499. prop: 'remarks',
  500. }, {
  501. label: '公司名称',
  502. prop: 'corpName',
  503. overHidden: true,
  504. index: 14,
  505. width: 120,
  506. search: true,
  507. }, {
  508. label: '制单人',
  509. prop: 'createUserName',
  510. overHidden: true,
  511. index: 15,
  512. width: 60,
  513. }, {
  514. label: '制单日期',
  515. overHidden: true,
  516. prop: 'createTime',
  517. type: "date",
  518. searchRange: true,
  519. defaultTime: ['00:00:00', '23:59:59'],
  520. format: "yyyy-MM-dd HH:mm",
  521. valueFormat: "yyyy-MM-dd HH:mm:ss",
  522. index: 16,
  523. width: 135,
  524. search: true,
  525. }]
  526. },
  527. //调度
  528. optionListTwo:{
  529. align: 'center',
  530. stripe: true,
  531. index: true,
  532. menu: true,
  533. menuWidth: 120,
  534. addBtn: false,
  535. editBtn: false,
  536. delBtn: false,
  537. height: "auto",
  538. searchSpan: 8,
  539. searchIcon: true,
  540. searchIndex: 2,
  541. selection: true,
  542. highlightCurrentRow: true,
  543. showSummary: true,
  544. summaryText: "合计",
  545. sumColumnList: [{
  546. name: 'freightCollect',
  547. type: 'sum',
  548. decimals: 2
  549. },{
  550. name: 'freightPay',
  551. type: 'sum',
  552. decimals: 2
  553. }],
  554. column: [
  555. {
  556. label: '货运日期',
  557. prop: 'arrivalTime',
  558. overHidden: true,
  559. type: "date",
  560. searchRange: true,
  561. defaultTime: ['00:00:00', '23:59:59'],
  562. format: "yyyy-MM-dd HH:mm",
  563. valueFormat: "yyyy-MM-dd HH:mm:ss",
  564. index: 1,
  565. width: 126,
  566. search: true,
  567. }, {
  568. label: '业务员',
  569. index: 2,
  570. width: 70,
  571. prop: 'salesmanName',
  572. searchProp: 'salesman',
  573. search: true,
  574. overHidden: true,
  575. filterable: true,
  576. type: "select",
  577. dicUrl: "/api/blade-user/userList?roleAlias=业务员",
  578. props: {
  579. label: "realName",
  580. value: "id"
  581. }
  582. },{
  583. label: '运输调度',
  584. prop: 'dispatcherName',
  585. overHidden: true,
  586. index: 3,
  587. width: 70,
  588. }, {
  589. label: '派车单号',
  590. width: 80,
  591. index: 4,
  592. prop: 'dispatchNumber',
  593. overHidden: true,
  594. search: true,
  595. }, {
  596. label: '装货地点',
  597. prop: 'addressDetail',
  598. index: 5,
  599. width: 132,
  600. search: true,
  601. }, {
  602. label: '卸货地点',
  603. prop: 'unloadingPlace',
  604. index: 6,
  605. width: 132,
  606. search: true,
  607. }, {
  608. label: '车队',
  609. width: 90,
  610. index: 7,
  611. overHidden: true,
  612. prop: 'fleetName',
  613. searchProp: 'fleetId',
  614. type: 'select',
  615. dicData:[],
  616. cascader: ['plateNo'],
  617. props: {
  618. label: "cname",
  619. value: "id",
  620. res: "data.records"
  621. },
  622. filterable: true,
  623. search: true,
  624. }, {
  625. label: '车号',
  626. width: 90,
  627. index: 8,
  628. prop: 'plateNo'
  629. },{
  630. label: '车型',
  631. width: 90,
  632. index: 9,
  633. prop: 'fleetVolum'
  634. }, {
  635. label: '应收运费',
  636. index: 11,
  637. width: 100,
  638. prop: 'freightCollect'
  639. }, {
  640. label: '状态',
  641. prop: 'status',
  642. index: 12,
  643. dicUrl: "/api/blade-system/dict-biz/dictionary?code=land_order_status_two",
  644. props: {
  645. label: "dictValue",
  646. value: "dictKey"
  647. },
  648. dataType: "string",
  649. type: 'select',
  650. overHidden: true,
  651. search: true,
  652. width: 90
  653. },{
  654. label: '应付运费',
  655. prop: 'freightPay',
  656. overHidden: true,
  657. width: 100,
  658. index: 13,
  659. },{
  660. label: '备注',
  661. index: 14,
  662. overHidden: true,
  663. width: 130,
  664. prop: 'remarks',
  665. }, {
  666. label: '公司名称',
  667. prop: 'corpName',
  668. overHidden: true,
  669. index: 15,
  670. width: 120,
  671. search: true,
  672. }, {
  673. label: '制单人',
  674. prop: 'createUserName',
  675. overHidden: true,
  676. index: 16,
  677. width: 60,
  678. }, {
  679. label: '制单日期',
  680. overHidden: true,
  681. prop: 'createTime',
  682. type: "date",
  683. searchRange: true,
  684. defaultTime: ['00:00:00', '23:59:59'],
  685. format: "yyyy-MM-dd HH:mm",
  686. valueFormat: "yyyy-MM-dd HH:mm:ss",
  687. index: 17,
  688. width: 135,
  689. search: true,
  690. }]
  691. },
  692. optionListThree:{
  693. align: 'center',
  694. stripe: true,
  695. index: true,
  696. menu: true,
  697. menuWidth: 120,
  698. addBtn: false,
  699. editBtn: false,
  700. delBtn: false,
  701. height: "auto",
  702. searchSpan: 8,
  703. searchIcon: true,
  704. searchIndex: 2,
  705. selection: true,
  706. highlightCurrentRow: true,
  707. showSummary: true,
  708. summaryText: "合计",
  709. sumColumnList: [{
  710. name: 'freightCollect',
  711. type: 'sum',
  712. decimals: 2
  713. },{
  714. name: 'freightPay',
  715. type: 'sum',
  716. decimals: 2
  717. }],
  718. column: [
  719. {
  720. label: '货运日期',
  721. prop: 'arrivalTime',
  722. overHidden: true,
  723. type: "date",
  724. searchRange: true,
  725. defaultTime: ['00:00:00', '23:59:59'],
  726. format: "yyyy-MM-dd HH:mm",
  727. valueFormat: "yyyy-MM-dd HH:mm:ss",
  728. index: 1,
  729. width: 126,
  730. search: true,
  731. }, {
  732. label: '物流运输',
  733. prop: 'dispatchDeptName',
  734. searchProp: 'dispatchDept',
  735. search: true,
  736. filterable: true,
  737. dicUrl: "/api/blade-system/dept/top-list?deptCategory=1",
  738. type: "select",
  739. props: {
  740. label: "deptName",
  741. value: "id"
  742. },
  743. overHidden: true,
  744. index: 2,
  745. width: 80
  746. },{
  747. label: '运输调度',
  748. prop: 'dispatcherName',
  749. overHidden: true,
  750. index: 3,
  751. width: 70,
  752. }, {
  753. label: '派车单号',
  754. width: 80,
  755. index: 4,
  756. prop: 'dispatchNumber',
  757. overHidden: true,
  758. search: true,
  759. }, {
  760. label: '装货地点',
  761. prop: 'addressDetail',
  762. index: 5,
  763. width: 132,
  764. search: true,
  765. }, {
  766. label: '卸货地点',
  767. prop: 'unloadingPlace',
  768. index: 6,
  769. width: 132,
  770. search: true,
  771. }, {
  772. label: '车队',
  773. width: 90,
  774. index: 7,
  775. overHidden: true,
  776. prop: 'fleetName',
  777. searchProp: 'fleetId',
  778. type: 'select',
  779. cascader: ['plateNo'],
  780. props: {
  781. label: "cname",
  782. value: "id",
  783. res: "data.records"
  784. },
  785. filterable: true,
  786. search: true,
  787. }, {
  788. label: '车号',
  789. width: 90,
  790. index: 8,
  791. prop: 'plateNo',
  792. type: "select",
  793. cascader: ['driverId'],
  794. dicUrl: "/api/blade-client/land-vehicle/vehicle-list?fleetId={{key}}",
  795. props: {
  796. label: "plateNo",
  797. value: "plateNo"
  798. },
  799. filterable: true,
  800. search: true,
  801. }, {
  802. label: '司机',
  803. width: 70,
  804. index: 9,
  805. prop: 'driverName',
  806. searchProp: 'driverId',
  807. filterable: true,
  808. type: "select",
  809. dicUrl: "/api/blade-client/land-driver/driver-list?plateNo={{key}}",
  810. props: {
  811. label: "name",
  812. value: "id"
  813. },
  814. search: true,
  815. }, {
  816. label: '电话',
  817. width: 120,
  818. index: 10,
  819. prop: 'driverTel'
  820. }, {
  821. label: '车型',
  822. width: 90,
  823. index: 11,
  824. prop: 'fleetVolum'
  825. },
  826. // {
  827. // label: '状态',
  828. // prop: 'status',
  829. // index: 13,
  830. // dicUrl: "/api/blade-system/dict-biz/dictionary?code=land_order_status_two",
  831. // props: {
  832. // label: "dictValue",
  833. // value: "dictKey"
  834. // },
  835. // dataType: "string",
  836. // type: 'select',
  837. // overHidden: true,
  838. // search: true,
  839. // width: 140
  840. // },
  841. {
  842. label: '应付运费',
  843. prop: 'freightPay',
  844. overHidden: true,
  845. width: 100,
  846. index: 13,
  847. },{
  848. label: '备注',
  849. index: 14,
  850. overHidden: true,
  851. width: 130,
  852. prop: 'remarks',
  853. }]
  854. },
  855. optionListFour:{
  856. align: 'center',
  857. stripe: true,
  858. index: true,
  859. menu: true,
  860. menuWidth: 120,
  861. addBtn: false,
  862. editBtn: false,
  863. delBtn: false,
  864. height: "auto",
  865. searchSpan: 8,
  866. searchIcon: true,
  867. searchIndex: 2,
  868. selection: true,
  869. highlightCurrentRow: true,
  870. showSummary: false,
  871. summaryText: "合计",
  872. sumColumnList: [{
  873. name: 'freightCollect',
  874. type: 'sum',
  875. decimals: 2
  876. },{
  877. name: 'freightPay',
  878. type: 'sum',
  879. decimals: 2
  880. }],
  881. column: [
  882. {
  883. label: '货运日期',
  884. prop: 'arrivalTime',
  885. overHidden: true,
  886. type: "date",
  887. searchRange: true,
  888. defaultTime: ['00:00:00', '23:59:59'],
  889. format: "yyyy-MM-dd HH:mm",
  890. valueFormat: "yyyy-MM-dd HH:mm:ss",
  891. index: 1,
  892. width: 126,
  893. search: true,
  894. }, {
  895. label: '物流运输',
  896. prop: 'dispatchDeptName',
  897. searchProp: 'dispatchDept',
  898. search: true,
  899. filterable: true,
  900. dicUrl: "/api/blade-system/dept/top-list?deptCategory=1",
  901. type: "select",
  902. props: {
  903. label: "deptName",
  904. value: "id"
  905. },
  906. overHidden: true,
  907. index: 2,
  908. width: 80
  909. },{
  910. label: '运输调度',
  911. prop: 'dispatcherName',
  912. overHidden: true,
  913. index: 3,
  914. width: 70,
  915. }, {
  916. label: '派车单号',
  917. width: 80,
  918. index: 4,
  919. prop: 'dispatchNumber',
  920. overHidden: true,
  921. search: true,
  922. }, {
  923. label: '装货地点',
  924. prop: 'addressDetail',
  925. index: 5,
  926. width: 132,
  927. search: true,
  928. }, {
  929. label: '卸货地点',
  930. prop: 'unloadingPlace',
  931. index: 6,
  932. width: 132,
  933. search: true,
  934. }, {
  935. label: '车队',
  936. width: 90,
  937. index: 7,
  938. overHidden: true,
  939. prop: 'fleetName',
  940. searchProp: 'fleetId',
  941. type: 'select',
  942. cascader: ['plateNo'],
  943. dicUrl: "/api/blade-client/corpsdesc/list?size=500&current=1&corpType=CD",
  944. props: {
  945. label: "cname",
  946. value: "id",
  947. res: "data.records"
  948. },
  949. filterable: true,
  950. search: true,
  951. }, {
  952. label: '车号',
  953. width: 90,
  954. index: 8,
  955. prop: 'plateNo',
  956. type: "select",
  957. cascader: ['driverId'],
  958. dicUrl: "/api/blade-client/land-vehicle/vehicle-list?fleetId={{key}}",
  959. props: {
  960. label: "plateNo",
  961. value: "plateNo"
  962. },
  963. filterable: true,
  964. search: true,
  965. }, {
  966. label: '司机',
  967. width: 70,
  968. index: 9,
  969. prop: 'driverName',
  970. searchProp: 'driverId',
  971. filterable: true,
  972. type: "select",
  973. dicUrl: "/api/blade-client/land-driver/driver-list?plateNo={{key}}",
  974. props: {
  975. label: "name",
  976. value: "id"
  977. },
  978. search: true,
  979. }, {
  980. label: '电话',
  981. width: 120,
  982. index: 10,
  983. prop: 'tel'
  984. }, {
  985. label: '车型',
  986. width: 90,
  987. index: 11,
  988. prop: 'fleetVolum'
  989. },
  990. // {
  991. // label: '状态',
  992. // prop: 'status',
  993. // index: 13,
  994. // dicUrl: "/api/blade-system/dict-biz/dictionary?code=land_order_status_two",
  995. // props: {
  996. // label: "dictValue",
  997. // value: "dictKey"
  998. // },
  999. // dataType: "string",
  1000. // type: 'select',
  1001. // overHidden: true,
  1002. // search: true,
  1003. // width: 140
  1004. // },
  1005. {
  1006. label: '备注',
  1007. index: 14,
  1008. overHidden: true,
  1009. width: 130,
  1010. prop: 'remarks',
  1011. }]
  1012. },
  1013. home: false,
  1014. entrustTimer: null,
  1015. roleName: localStorage.getItem("roleName").split(','),
  1016. }
  1017. },
  1018. activated() {
  1019. if (this.$route.query.id) {
  1020. this.rowCell({id: this.$route.query.id}, 0)
  1021. this.$router.$avueRouter.closeTag(window.location.hash.slice(1))
  1022. this.home = true
  1023. // this.$router.push({ query: {} });
  1024. }
  1025. },
  1026. async created() {
  1027. // this.option = this.optionListOne
  1028. // this.option = this.optionListTwo
  1029. // this.option = this.optionListThree
  1030. if (this.roleName.indexOf('客户') !== -1 || this.roleName.indexOf('admin') !== -1){
  1031. this.optionList = this.optionListOne
  1032. }else if (this.roleName.indexOf('平台') !== -1){
  1033. this.optionList = this.optionListTwo
  1034. }else if (this.roleName.indexOf('车队') !== -1){
  1035. this.optionList = this.optionListThree
  1036. }else {
  1037. this.optionList = this.optionListFour
  1038. }
  1039. this.option = await this.getColumnData(this.getColumnName(85.7), this.optionList);
  1040. this.key++
  1041. fleetList().then(res=>{
  1042. this.findObject(this.option.column, "fleetName").dicData = res.data.data
  1043. })
  1044. getSalesman().then(res=>{
  1045. this.findObject(this.option.column, "salesmanName").dicData = res.data.data
  1046. })
  1047. let i = 0;
  1048. this.option.column.forEach(item => {
  1049. if (item.search) i++
  1050. })
  1051. if (this.roleName.indexOf('经理') !== -1 || this.roleName.indexOf('部门经理') !== -1 || this.roleName.indexOf('总经理') !== -1 || this.roleName.indexOf('总调度') !== -1) {
  1052. // this.option.menu = false
  1053. this.option.header = false
  1054. }
  1055. if (i % 3 !== 0) {
  1056. const num = 3 - Number(i % 3)
  1057. this.option.searchMenuSpan = num * 8;
  1058. this.option.searchMenuPosition = "right";
  1059. }
  1060. },
  1061. mounted() {
  1062. businessStatisticsFrequency().then(res=>{
  1063. // let this_ = this
  1064. // this_.entrustTimer = setInterval(function () {
  1065. // if (JSON.parse(localStorage.getItem("saber-token")).content) {
  1066. // totalList(1).then(res => {
  1067. // this_.totalData = res.data.data
  1068. // })
  1069. // }
  1070. // }, Number(res.data.data[0].dictKey)*1000)
  1071. })
  1072. },
  1073. beforeDestroy() {
  1074. this.map && this.map.destroy();
  1075. clearInterval(this.entrustTimer); //关闭
  1076. },
  1077. methods: {
  1078. openTrack(row) {
  1079. location({itemId: row.itemId, plateNo: row.plateNo, tenantId: '234557', color: '2'}).then(res => {
  1080. this.dialogVisible = true
  1081. let this_ = this
  1082. setTimeout(function () {
  1083. this_.initMap(res.data.data, row.plateNo);
  1084. }, 1000)
  1085. })
  1086. },
  1087. markerClick(e) {
  1088. this.infoWindow.setContent(e.target.content);
  1089. this.infoWindow.open(this.map, e.target.getPosition());
  1090. },
  1091. initMap(data, plateNo) {
  1092. console.log(data,plateNo)
  1093. this.map = new AMap.Map("container", {resizeEnable: true});
  1094. this.infoWindow = new AMap.InfoWindow({
  1095. ffset: new AMap.Pixel(0, -30),
  1096. offset: new AMap.Pixel(0, -30)
  1097. });
  1098. let icon = new AMap.Icon({
  1099. size: new AMap.Size(52, 26), // 图标尺寸
  1100. image: 'https://trade.tubaosoft.com/file/bladex/000000/1123598821738675201/che.png',
  1101. imageSize: new AMap.Size(52, 26), // 根据所设置的大小拉伸或压缩图片
  1102. });
  1103. this.marker = new AMap.Marker({
  1104. position: data.location,
  1105. map: this.map,
  1106. icon: icon,
  1107. markerMeta: new AMap.Size(28, 28),
  1108. offset: new AMap.Pixel(-26, -15),
  1109. autoRotation: true,
  1110. angle: -15
  1111. });
  1112. this.marker.content = '<div style="width: 300px;">'
  1113. + '<p style="font-size: 22px;font-weight: bold;background-color: #2d8cf0;color: #fff;">' + plateNo + '</p>'
  1114. + '<p style="padding: 5px 0"><span style="color: #a0a0a0">最后上报时间:</span>' + new Date(Number(data.time) + 8 * 60 * 60 * 1000).toJSON().split('T').join(' ').substr(0, 19) + '</p>'
  1115. + '<div style="width: 150px;float: left;">'
  1116. + '<p style="padding: 5px 0"><span style="color: #a0a0a0">车辆状态:</span>' + (data.speed > 0 ? '行驶中' : '停车') + '</p>'
  1117. + '</div>'
  1118. + '<div style="width: 150px;float: right;">'
  1119. + '<p style="padding: 5px 0"><span style="color: #a0a0a0">速度:</span>' + data.speed + 'km/h</p>'
  1120. + '</div>'
  1121. + '<p><span style="color: #a0a0a0">当前位置:</span>' + data.address + '</p>'
  1122. + '<p style="padding: 5px 0"><span style="color: #a0a0a0">经纬度:</span>' + data.location.join(',') + '</p>'
  1123. + '</div>'
  1124. this.infoWindow.open(this.map, this.map.getCenter());
  1125. this.marker.on('click', this.markerClick);
  1126. this.marker.emit('click', {target: this.marker});
  1127. this.map.setFitView();
  1128. },
  1129. selectionChange(list) {
  1130. this.selectionList = list
  1131. // this.$message.success('选中的数据'+ JSON.stringify(list));
  1132. },
  1133. //自定义列保存
  1134. async saveColumn() {
  1135. /**
  1136. * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
  1137. * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
  1138. * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
  1139. */
  1140. const inSave = await this.saveColumnData(this.getColumnName(85.7), this.option);
  1141. if (inSave) {
  1142. this.$message.success("保存成功");
  1143. //关闭窗口
  1144. this.$refs.crud.$refs.dialogColumn.columnBox = false;
  1145. }
  1146. },
  1147. //自定义列重置
  1148. async resetColumn() {
  1149. this.option = this.optionList;
  1150. const inSave = await this.delColumnData(this.getColumnName(85.7), this.optionList);
  1151. if (inSave) {
  1152. this.$message.success("重置成功");
  1153. this.$refs.crud.$refs.dialogColumn.columnBox = false;
  1154. if (this.roleName.indexOf('经理') !== -1 || this.roleName.indexOf('部门经理') !== -1 || this.roleName.indexOf('总经理') !== -1) {
  1155. this.option.menu = false
  1156. this.option.header = false
  1157. }
  1158. }
  1159. },
  1160. // 获得高度
  1161. searchCriteriaSwitch(type) {
  1162. if (type) {
  1163. this.option.height = this.option.height - 138
  1164. } else {
  1165. this.option.height = this.option.height + 138
  1166. }
  1167. this.$refs.crud.getTableHeight()
  1168. },
  1169. //切换订单状态
  1170. handleClick(tab) {
  1171. this.activeName = tab
  1172. this.onLoad(this.page)
  1173. },
  1174. onLoad(page, params = {}) {
  1175. totalList().then(res => {
  1176. this.totalData = res.data.data
  1177. })
  1178. let queryParams = {
  1179. size: page.pageSize,
  1180. current: page.currentPage,
  1181. // itemStatus: this.activeName,
  1182. statusIds: this.activeName,
  1183. ...Object.assign(params, this.query)
  1184. }
  1185. this.loading = true;
  1186. selectInvoiceList(queryParams).then(res => {
  1187. this.dataList = res.data.data.records
  1188. this.page.total = res.data.data.total
  1189. this.option.height = window.innerHeight - 350;
  1190. }).finally(() => {
  1191. this.loading = false;
  1192. })
  1193. },
  1194. //搜索
  1195. searchChange(params, done) {
  1196. let data = params
  1197. if (params.arrivalTime) {
  1198. data.beginArrivalTime = params.arrivalTime[0]
  1199. data.endArrivalTime = params.arrivalTime[1]
  1200. }
  1201. if (params.createTime) {
  1202. data.beginCrateTime = params.createTime[0]
  1203. data.endCrateTime = params.createTime[1]
  1204. }
  1205. delete data.arrivalTime
  1206. delete data.createTime
  1207. this.query = data;
  1208. this.onLoad(this.page, data)
  1209. done();
  1210. },
  1211. //列表删除
  1212. rowDel(row) {
  1213. this.$confirm('此操作将永久删除该单据, 是否继续?', '提示', {
  1214. confirmButtonText: '确定',
  1215. cancelButtonText: '取消',
  1216. type: 'warning'
  1217. }).then(() => {
  1218. removeDelegationList({ids: row.id}).then(res => {
  1219. this.$message.success('删除成功');
  1220. this.onLoad(this.page)
  1221. })
  1222. }).catch(() => {
  1223. this.$message({
  1224. type: 'info',
  1225. message: '已取消删除'
  1226. });
  1227. });
  1228. },
  1229. //行编辑
  1230. rowCell(row, index) {
  1231. // console.log(localStorage.getItem("roleName").split(','))
  1232. this.id = row.id
  1233. this.show = false
  1234. },
  1235. rowSave() {
  1236. this.show = false
  1237. },
  1238. //复制单据
  1239. copyDocument() {
  1240. this.id = 'copy' + this.selectionList[0].id
  1241. this.show = false
  1242. },
  1243. backToList(type) {
  1244. if (type) {
  1245. this.home = false
  1246. this.$router.push({
  1247. path: '/landTransportation/bulkCargo/index'
  1248. });
  1249. }
  1250. this.id = ''
  1251. this.show = true
  1252. this.onLoad(this.page)
  1253. },
  1254. ToBreak(val) {
  1255. if (val) return val.replace(/\n/g, '<br/>')
  1256. }
  1257. }
  1258. }
  1259. </script>
  1260. <style lang="scss" scoped>
  1261. .selected{
  1262. color: #1e9fff !important;
  1263. }
  1264. .home-container {
  1265. padding: 0px 5px 5px 5px;
  1266. box-sizing: border-box;
  1267. height: 100%;
  1268. ::v-deep .el-card__body {
  1269. padding: 10px 5px;
  1270. font-size: 14px;
  1271. }
  1272. &__card {
  1273. width: 100%;
  1274. height: 100%;
  1275. }
  1276. .title {
  1277. display: flex;
  1278. justify-content: space-between;
  1279. .right {
  1280. display: flex;
  1281. align-items: center;
  1282. &_but {
  1283. margin-right: 10px;
  1284. border: 1px solid #409eff;
  1285. width: 80px;
  1286. border-radius: 3px;
  1287. display: flex;
  1288. &_left {
  1289. width: 40px;
  1290. text-align: center;
  1291. color: #409eff;
  1292. cursor: pointer;
  1293. }
  1294. &_right {
  1295. width: 40px;
  1296. text-align: center;
  1297. color: #409eff;
  1298. cursor: pointer;
  1299. }
  1300. &_active {
  1301. color: #fff;
  1302. background-color: #409eff;
  1303. }
  1304. }
  1305. }
  1306. }
  1307. }
  1308. .content {
  1309. display: flex;
  1310. justify-content: center;
  1311. align-items: center;
  1312. height: 6vh;
  1313. width: 80vw;
  1314. .divider {
  1315. display: block;
  1316. height: 0px;
  1317. width: 100%;
  1318. border-top: 1px dashed #dcdfe6;
  1319. }
  1320. &-item {
  1321. margin-left: 1vw;
  1322. .card {
  1323. width: 130px;
  1324. display: flex;
  1325. align-items: center;
  1326. &-title {
  1327. width: 40px;
  1328. height: 40px;
  1329. text-align: center;
  1330. border-radius: 50%;
  1331. font-size: 20px;
  1332. font-weight: 600;
  1333. display: flex;
  1334. justify-content: center;
  1335. align-items: center;
  1336. span {
  1337. line-height: 20px;
  1338. }
  1339. }
  1340. &-title1 {
  1341. color: #037fe1;
  1342. background-color: rgba(3, 127, 225, 0.15);
  1343. }
  1344. &-title2 {
  1345. color: #ffa21e;
  1346. background-color: rgba(255, 162, 30, 0.15);
  1347. }
  1348. &-title3 {
  1349. color: #fb5b60;
  1350. background-color: rgba(251, 91, 96, 0.15);
  1351. }
  1352. &-title4 {
  1353. color: #42bc6f;
  1354. background-color: rgba(66, 188, 111, 0.15);
  1355. }
  1356. &-title5 {
  1357. color: #14cde1;
  1358. background-color: rgba(52, 149, 161, 0.15);
  1359. }
  1360. &-title6 {
  1361. color: rgba(4, 66, 31, 0.63);
  1362. background-color: rgba(66, 188, 111, 0.15);
  1363. }
  1364. &-title7 {
  1365. color: rgba(231, 90, 15, 0.63);
  1366. background-color: rgba(220, 150, 42, 0.15);
  1367. }
  1368. &-content {
  1369. padding-left: 1vw;
  1370. display: flex;
  1371. flex-direction: column;
  1372. &-num {
  1373. font-size: 20px;
  1374. font-weight: 600;
  1375. }
  1376. &-text {
  1377. color: #909399;
  1378. }
  1379. }
  1380. }
  1381. }
  1382. }
  1383. #container {
  1384. height: 80vh;
  1385. width: 100%;
  1386. }
  1387. ::v-deep .el-dialog {
  1388. margin-top: 5vh !important;
  1389. margin-bottom: 0 !important;
  1390. }
  1391. ::v-deep .amap-info-close {
  1392. right: 10px !important;
  1393. top: 12px !important;
  1394. }
  1395. ::v-deep .amap-info-content {
  1396. padding: 5px 5px 5px 5px !important;
  1397. }
  1398. </style>