voyageList.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792
  1. <template>
  2. <div class="line-container-p24">
  3. <div style="display: flex; justify-content: space-between">
  4. <div class="df aic">
  5. <div
  6. @click="changeVoyageType(0)"
  7. :class="
  8. status == 0
  9. ? 'currentbtn radio-btns left-radius'
  10. : 'radio-btns left-radius'
  11. "
  12. >
  13. 全部航次
  14. </div>
  15. <div
  16. style="border-left: none"
  17. @click="changeVoyageType(1)"
  18. :class="status == 1 ? 'currentbtn radio-btns' : 'radio-btns'"
  19. >
  20. 装货中
  21. </div>
  22. <div
  23. style="border-left: none"
  24. @click="changeVoyageType(2)"
  25. :class="status == 2 ? 'currentbtn radio-btns' : 'radio-btns'"
  26. >
  27. 运输中
  28. </div>
  29. <div
  30. style="border-left: none"
  31. @click="changeVoyageType(3)"
  32. :class="status == 3 ? 'currentbtn radio-btns' : 'radio-btns'"
  33. >
  34. 卸货中
  35. </div>
  36. <div
  37. @click="changeVoyageType(4)"
  38. :class="
  39. status == 4
  40. ? 'currentbtn radio-btns right-radius'
  41. : 'radio-btns right-radius '
  42. "
  43. style="margin-right: 40px; border-left: none"
  44. >
  45. 历史航次
  46. </div>
  47. <!-- <div style="color: #333; margin-right: 10px; font-size: 14px">
  48. 预计到港时间:
  49. </div>
  50. <el-radio-group v-model="sortradio">
  51. <el-radio :label="-1">默认排序</el-radio>
  52. <el-radio :label="0">降序</el-radio>
  53. <el-radio :label="1">升序</el-radio>
  54. </el-radio-group> -->
  55. <el-input
  56. placeholder="请输入船名/MMSI"
  57. prefix-icon="el-icon-search"
  58. v-model="term"
  59. clearable
  60. style="width: 330px"
  61. ></el-input>
  62. <div class="search-btn" @click="getVoyageList()">查询</div>
  63. </div>
  64. <!-- <div class="cargo-owner-add" @click="voyageAddDialogVisible = true">
  65. 添加航次
  66. </div> -->
  67. </div>
  68. <el-dialog v-model="voyageAddDialogVisible" title="添加航次">
  69. <el-form
  70. :rules="rules"
  71. label-position="right"
  72. label-width="80px"
  73. ref="addVoyageForm"
  74. :model="voyageForm"
  75. :before-close="resetAddVoyageForm"
  76. >
  77. <div class="df ffw">
  78. <!-- <el-form-item prop="voyageName" label="航次名称">
  79. <el-input v-model="voyageForm.voyageName"></el-input>
  80. </el-form-item>
  81. <el-form-item label=""></el-form-item> -->
  82. <el-form-item prop="shipName" label="船舶">
  83. <!-- <el-input v-model="voyageForm.shipOwnerId"></el-input> -->
  84. <el-autocomplete
  85. v-model="voyageForm.shipName"
  86. :fetch-suggestions="searchShip"
  87. placeholder="选择船舶"
  88. @blur="clear('shipId')"
  89. @select="selectShip"
  90. />
  91. </el-form-item>
  92. <el-form-item prop="cargoOwnerName" label="货主">
  93. <el-autocomplete
  94. v-model="voyageForm.cargoOwnerName"
  95. :fetch-suggestions="searchCargoOwner"
  96. @blur="clear('cargoOwnerId')"
  97. placeholder="选择货主"
  98. @select="selectCargoOwner"
  99. />
  100. </el-form-item>
  101. <el-form-item prop="startTime" label="开始时间">
  102. <el-date-picker
  103. v-model="voyageForm.startTime"
  104. type="date"
  105. value-format="YYYY/MM/DD"
  106. placeholder="航次开始时间"
  107. ></el-date-picker>
  108. </el-form-item>
  109. <el-form-item prop="endTime" label="结束时间">
  110. <el-date-picker
  111. v-model="voyageForm.endTime"
  112. type="date"
  113. value-format="YYYY/MM/DD"
  114. placeholder="航次结束时间"
  115. disabled
  116. ></el-date-picker>
  117. </el-form-item>
  118. <el-form-item prop="loadPort" label="装货港">
  119. <el-autocomplete
  120. v-model="voyageForm.loadPort"
  121. :fetch-suggestions="getCol"
  122. @blur="clear('loadPort')"
  123. placeholder="选择装货港"
  124. @select="selectLoadPort"
  125. />
  126. </el-form-item>
  127. <el-form-item prop="dischargeProt" label="卸货港">
  128. <el-autocomplete
  129. v-model="voyageForm.dischargeProt"
  130. :fetch-suggestions="getCol"
  131. @blur="clear('dischargeProt')"
  132. placeholder="选择卸货港"
  133. @select="selectDischargeProt"
  134. />
  135. </el-form-item>
  136. <el-form-item prop="cargo" label="货种">
  137. <el-input v-model="voyageForm.cargo"></el-input>
  138. </el-form-item>
  139. <el-form-item prop="tons" label="吨位">
  140. <el-input v-model="voyageForm.tons"></el-input>
  141. </el-form-item>
  142. </div>
  143. </el-form>
  144. <template #footer>
  145. <span class="dialog-footer">
  146. <el-button @click="resetAddVoyageForm">取消</el-button>
  147. <el-button type="primary" @click="addVoyage">确定</el-button>
  148. </span>
  149. </template>
  150. </el-dialog>
  151. <el-table :data="tableData" stripe style="width: 100%; margin-top: 24px">
  152. <el-table-column
  153. type="index"
  154. label="序号"
  155. min-width="80"
  156. align="center"
  157. ></el-table-column>
  158. <el-table-column
  159. prop="voyageName"
  160. label="航次名称"
  161. min-width="140"
  162. align="center"
  163. ></el-table-column>
  164. <el-table-column
  165. prop="loadDiscPort"
  166. label="装货港-卸货港"
  167. min-width="200"
  168. align="center"
  169. ></el-table-column>
  170. <el-table-column
  171. prop="setSailTime"
  172. label="开航时间"
  173. min-width="180"
  174. align="center"
  175. ></el-table-column>
  176. <el-table-column
  177. prop="expectedArrivalTime"
  178. label="预计到港时间"
  179. min-width="180"
  180. align="center"
  181. ></el-table-column>
  182. <el-table-column
  183. prop="daysInPort"
  184. label="在港天数"
  185. min-width="80"
  186. align="center"
  187. ></el-table-column>
  188. <el-table-column
  189. prop="todayPhotoCount"
  190. label="今日照片"
  191. min-width="80"
  192. align="center"
  193. ></el-table-column>
  194. <el-table-column
  195. prop="cargo"
  196. label="货种"
  197. min-width="80"
  198. align="center"
  199. ></el-table-column>
  200. <el-table-column
  201. prop="tons"
  202. label="吨位(吨)"
  203. min-width="80"
  204. align="center"
  205. ></el-table-column>
  206. <el-table-column
  207. prop="waybillStatus"
  208. sortable
  209. label="签单状态"
  210. min-width="100"
  211. align="center"
  212. >
  213. <template v-slot="scope">
  214. {{
  215. scope.row.waybillStatus == 0
  216. ? ""
  217. : scope.row.waybillStatus == 1
  218. ? "未签单"
  219. : "已签单"
  220. }}
  221. </template>
  222. </el-table-column>
  223. <!-- <el-table-column
  224. prop="transStatus"
  225. label="船舶状态"
  226. min-width="100"
  227. align="center"
  228. ></el-table-column> -->
  229. <el-table-column
  230. prop="hasInsurance"
  231. label="保险单状态"
  232. min-width="100"
  233. align="center"
  234. >
  235. <template v-slot="scope">
  236. {{ scope.row.hasInsurance == 0 ? "未购买" : "已购买" }}
  237. </template>
  238. </el-table-column>
  239. <el-table-column
  240. sortable
  241. prop="createTime"
  242. label="创建时间"
  243. min-width="100"
  244. align="center"
  245. ></el-table-column>
  246. <el-table-column
  247. prop="remark"
  248. label="备注"
  249. min-width="100"
  250. align="center"
  251. ></el-table-column>
  252. <el-table-column
  253. v-auth="'VOYAGEDETAIL'"
  254. label="操作"
  255. min-width="80"
  256. align="center"
  257. >
  258. <template v-slot="scope">
  259. <el-button
  260. @click="voyageDetail(scope.row.id, tableData)"
  261. type="text"
  262. size="small"
  263. >
  264. 查看详情
  265. </el-button>
  266. </template>
  267. </el-table-column>
  268. </el-table>
  269. <div style="width: 100%; text-align: right; margin-top: 43px">
  270. <el-pagination
  271. background
  272. layout="prev, pager, next"
  273. :total="total"
  274. @current-change="pageChange"
  275. ></el-pagination>
  276. </div>
  277. </div>
  278. </template>
  279. <script>
  280. import { ref, h, reactive, toRefs, onMounted } from "vue";
  281. import { ElNotification, ElMessageBox, ElMessage } from "element-plus";
  282. import store from "../../store";
  283. import router from "../../router";
  284. import md5 from "md5";
  285. import api from "../../apis/fetch";
  286. import _ from "lodash";
  287. export default {
  288. setup() {
  289. let currentPage = ref(1);
  290. let term = ref("");
  291. let tableData = ref([]);
  292. let total = ref(0);
  293. let status = ref(0);
  294. async function getVoyageList() {
  295. tableData.value = [];
  296. let res = await api.getVoyageList({
  297. loginAccountId: localStorage.loginAccountId,
  298. cargoOwnerId: localStorage.userId,
  299. shipId: 0,
  300. status: status.value,
  301. term: term.value,
  302. currentPage: currentPage.value,
  303. size: 10,
  304. });
  305. term.value = "";
  306. if (res.data.status == 0) {
  307. tableData.value = res.data.result;
  308. total.value = res.data.total;
  309. } else {
  310. ElNotification({
  311. type: "error",
  312. title: res.data.msg,
  313. });
  314. }
  315. }
  316. function changeVoyageType(s) {
  317. term.value = "";
  318. currentPage.value = 1;
  319. status.value = s;
  320. getVoyageList();
  321. }
  322. async function voyageDetail(id) {
  323. router.push({
  324. path: "/voyage/voyageDetail",
  325. query: {
  326. id,
  327. },
  328. });
  329. }
  330. function pageChange(e) {
  331. currentPage.value = e;
  332. getVoyageList();
  333. }
  334. function goToVoyageAdd() {
  335. router.push({
  336. path: "/voyage/voyageAdd",
  337. });
  338. }
  339. let voyageAddDialogVisible = ref(false);
  340. const rules = reactive({
  341. rules: {
  342. voyageName: [
  343. { required: false, message: "请填写航次名称", trigger: "blur" },
  344. ],
  345. shipName: [{ required: true, message: "请选择船舶", trigger: "blur" }],
  346. cargoOwnerName: [
  347. { required: true, message: "请选择货主", trigger: "blur" },
  348. ],
  349. startTime: [
  350. { required: true, message: "请填写开始时间", trigger: "blur" },
  351. ],
  352. loadPort: [
  353. { required: true, message: "请填写装货港", trigger: "blur" },
  354. ],
  355. dischargeProt: [
  356. { required: true, message: "请填写卸货港", trigger: "blur" },
  357. ],
  358. cargo: [{ required: true, message: "请填写货种", trigger: "blur" }],
  359. tons: [{ required: true, message: "请填写吨位", trigger: "blur" }],
  360. },
  361. });
  362. let voyageForm = reactive({
  363. voyageForm: {
  364. voyageName: "",
  365. cargoOwnerId: "",
  366. cargoOwnerName: "",
  367. startTime: "",
  368. endTime: "",
  369. loadPort: "",
  370. dischargeProt: "",
  371. cargo: "",
  372. tons: "",
  373. loadPortId: "",
  374. dischargeProtId: "",
  375. shipId: "",
  376. shipName: "",
  377. },
  378. });
  379. function clear(type) {
  380. setTimeout(() => {
  381. switch (type) {
  382. case "shipId": {
  383. let index = ref(-1);
  384. for (let i in shipsCache.value) {
  385. if (
  386. voyageForm.voyageForm.shipName == shipsCache.value[i].shipName
  387. ) {
  388. index.value = i;
  389. break;
  390. }
  391. }
  392. if (index.value != -1) {
  393. voyageForm.voyageForm.shipId =
  394. shipsCache.value[index.value].shipId;
  395. } else {
  396. let b = shipsCache.value.some((item) => {
  397. return (
  398. item.shipId == voyageForm.voyageForm.shipId &&
  399. item.shipName == voyageForm.voyageForm.shipName
  400. );
  401. });
  402. voyageForm.voyageForm["shipId"] = "";
  403. voyageForm.voyageForm["shipName"] = "";
  404. }
  405. break;
  406. }
  407. case "cargoOwnerId": {
  408. let index = ref(-1);
  409. for (let i in cargoOwnersCache.value) {
  410. if (
  411. voyageForm.voyageForm.cargoOwnerName ==
  412. cargoOwnersCache.value[i].userName
  413. ) {
  414. index.value = i;
  415. break;
  416. }
  417. }
  418. if (index.value != -1) {
  419. voyageForm.voyageForm.cargoOwnerId =
  420. cargoOwnersCache.value[index.value].userId;
  421. } else {
  422. let b = cargoOwnersCache.value.some((item) => {
  423. return (
  424. item.userId == voyageForm.voyageForm.cargoOwnerId &&
  425. item.userName == voyageForm.voyageForm.cargoOwnerName
  426. );
  427. });
  428. if (!b) {
  429. voyageForm.voyageForm["cargoOwnerId"] = "";
  430. voyageForm.voyageForm["cargoOwnerName"] = "";
  431. }
  432. }
  433. break;
  434. }
  435. case "loadPort": {
  436. let index = ref(-1);
  437. for (let i in colCache.value) {
  438. if (voyageForm.voyageForm.loadPort == colCache.value[i].value) {
  439. index.value = i;
  440. break;
  441. }
  442. }
  443. if (index.value != -1) {
  444. voyageForm.voyageForm.loadPortId =
  445. colCache.value[index.value].key;
  446. } else {
  447. let b = colCache.value.some((item) => {
  448. return (
  449. item.value == voyageForm.voyageForm.loadPort &&
  450. item.key == voyageForm.voyageForm.loadPortId
  451. );
  452. });
  453. if (!b) {
  454. voyageForm.voyageForm["loadPort"] = "";
  455. voyageForm.voyageForm["loadPortId"] = "";
  456. }
  457. }
  458. break;
  459. }
  460. case "dischargeProt": {
  461. let index = ref(-1);
  462. for (let i in colCache.value) {
  463. if (
  464. voyageForm.voyageForm.dischargeProt == colCache.value[i].value
  465. ) {
  466. index.value = i;
  467. break;
  468. }
  469. }
  470. if (index.value != -1) {
  471. voyageForm.voyageForm.dischargeProtId =
  472. colCache.value[index.value].key;
  473. } else {
  474. let b = colCache.value.some((item) => {
  475. return (
  476. item.value == voyageForm.voyageForm.dischargeProt &&
  477. item.key == voyageForm.voyageForm.dischargeProtId
  478. );
  479. });
  480. if (!b) {
  481. voyageForm.voyageForm["dischargeProt"] = "";
  482. voyageForm.voyageForm["dischargeProtId"] = "";
  483. }
  484. }
  485. break;
  486. }
  487. }
  488. }, 200);
  489. }
  490. let addVoyageForm = ref(null);
  491. async function addVoyage() {
  492. addVoyageForm.value.validate(async (valid) => {
  493. if (valid) {
  494. console.log("提交", voyageForm.voyageForm);
  495. let res = await api.addVoyage({
  496. ...voyageForm.voyageForm,
  497. });
  498. if (res.data.status == 0) {
  499. ElNotification({
  500. title: res.data.msg,
  501. type: "success",
  502. });
  503. resetAddVoyageForm();
  504. getVoyageList();
  505. } else {
  506. console.log(res);
  507. ElNotification({
  508. title: res.data.msg,
  509. type: "error",
  510. });
  511. }
  512. } else {
  513. console.log("未提交", voyageForm.voyageForm);
  514. }
  515. });
  516. }
  517. let shipsCache = ref([]);
  518. let colCache = ref([]);
  519. let cargoOwnersCache = ref([]);
  520. const searchShip = _.debounce(
  521. async (queryString, cb) => {
  522. if (!queryString) return;
  523. let res = await api.searchShip({
  524. term: queryString,
  525. });
  526. let ships = [];
  527. if (res.data.status == 0) {
  528. ships = res.data.result;
  529. for (let i of ships) {
  530. i.value = `${i.shipName}`;
  531. }
  532. shipsCache.value = ships;
  533. cb(ships);
  534. }
  535. },
  536. 1000,
  537. { leading: true }
  538. );
  539. const selectShip = (item) => {
  540. voyageForm.voyageForm.shipId = item.shipId;
  541. };
  542. const searchCargoOwner = _.debounce(
  543. async (queryString, cb) => {
  544. if (!queryString) return;
  545. let res = await api.searchUser({
  546. term: queryString,
  547. identity: 2,
  548. });
  549. let cargoOwners = [];
  550. if (res.data.status == 0) {
  551. cargoOwners = res.data.result;
  552. for (let i of cargoOwners) {
  553. i.value = `${i.userName}`;
  554. }
  555. cargoOwnersCache.value = cargoOwners;
  556. cb(cargoOwners);
  557. }
  558. },
  559. 1000,
  560. { leading: true }
  561. );
  562. const selectCargoOwner = (item) => {
  563. voyageForm.voyageForm.cargoOwnerId = item.userId;
  564. };
  565. const getCol = _.debounce(
  566. async (queryString, cb) => {
  567. if (!queryString) return;
  568. let res = await api.getCol({
  569. term: queryString,
  570. });
  571. if (res.data.status == 0) {
  572. colCache.value = [...colCache.value, ...res.data.result];
  573. colCache.value = _.uniqBy(colCache.value, "key");
  574. cb(res.data.result);
  575. }
  576. },
  577. 1000,
  578. { leading: true }
  579. );
  580. const selectLoadPort = (item) => {
  581. voyageForm.voyageForm.loadPortId = item.key;
  582. voyageForm.voyageForm.loadPort = item.value;
  583. };
  584. const selectDischargeProt = (item) => {
  585. voyageForm.voyageForm.dischargeProtId = item.key;
  586. voyageForm.voyageForm.dischargeProt = item.value;
  587. };
  588. function resetAddVoyageForm() {
  589. voyageAddDialogVisible.value = false;
  590. addVoyageForm.value.resetFields();
  591. }
  592. let sortradio = ref(0);
  593. getVoyageList();
  594. onMounted(() => {});
  595. return {
  596. currentPage,
  597. term,
  598. tableData,
  599. total,
  600. status,
  601. changeVoyageType,
  602. getVoyageList,
  603. voyageDetail,
  604. pageChange,
  605. goToVoyageAdd,
  606. addVoyage,
  607. voyageAddDialogVisible,
  608. addVoyageForm,
  609. ...toRefs(rules),
  610. ...toRefs(voyageForm),
  611. searchShip,
  612. selectShip,
  613. searchCargoOwner,
  614. selectCargoOwner,
  615. resetAddVoyageForm,
  616. getCol,
  617. selectLoadPort,
  618. selectDischargeProt,
  619. clear,
  620. sortradio,
  621. };
  622. },
  623. };
  624. </script>
  625. <style scoped>
  626. .search-btn {
  627. display: inline-block;
  628. width: 60px;
  629. height: 32px;
  630. background: #0094fe;
  631. border-radius: 2px;
  632. font-size: 14px;
  633. font-family: PingFangSC-Regular, PingFang SC;
  634. font-weight: 400;
  635. color: #ffffff;
  636. text-align: center;
  637. line-height: 32px;
  638. margin-left: 10px;
  639. cursor: pointer;
  640. }
  641. .cargo-owner-add {
  642. width: 80px;
  643. height: 32px;
  644. border-radius: 2px;
  645. border: 1px solid #0094fe;
  646. font-size: 14px;
  647. font-family: PingFangSC-Regular, PingFang SC;
  648. font-weight: 400;
  649. color: #0094fe;
  650. line-height: 32px;
  651. text-align: center;
  652. cursor: pointer;
  653. }
  654. :deep().el-dialog {
  655. width: 560px;
  656. padding: 20px 50px;
  657. border-radius: 6px;
  658. }
  659. :deep() .el-dialog__title {
  660. font-size: 18px;
  661. font-family: PingFangSC-Regular, PingFang SC;
  662. font-weight: 400;
  663. color: #0094fe;
  664. }
  665. .normal-label {
  666. font-size: 14px;
  667. font-family: PingFangSC-Regular, PingFang SC;
  668. font-weight: 400;
  669. color: #353a42;
  670. margin-right: 10px;
  671. }
  672. .show-input {
  673. width: 280px;
  674. height: 32px;
  675. background: #ffffff;
  676. border-radius: 2px;
  677. border: 1px solid #dee0e3;
  678. font-size: 14px;
  679. font-family: PingFangSC-Regular, PingFang SC;
  680. font-weight: 400;
  681. color: #333333;
  682. line-height: 32px;
  683. padding-left: 12px;
  684. margin-right: 40px;
  685. }
  686. .radio-btns {
  687. height: 38px;
  688. width: 70px;
  689. border: 1px solid #1486f9;
  690. line-height: 38px;
  691. text-align: center;
  692. font-size: 14px;
  693. font-family: PingFangSC-Regular, PingFang SC;
  694. font-weight: 400;
  695. color: #0094fe;
  696. cursor: pointer;
  697. }
  698. .left-radius {
  699. border-top-left-radius: 19px;
  700. border-bottom-left-radius: 19px;
  701. width: 80px;
  702. }
  703. .right-radius {
  704. border-top-right-radius: 19px;
  705. border-bottom-right-radius: 19px;
  706. width: 80px;
  707. }
  708. .currentbtn {
  709. background: #1486f9;
  710. color: #fff;
  711. }
  712. .search-btn {
  713. display: inline-block;
  714. width: 60px;
  715. height: 38px;
  716. background: #0094fe;
  717. border-radius: 2px;
  718. font-size: 14px;
  719. font-family: PingFangSC-Regular, PingFang SC;
  720. font-weight: 400;
  721. color: #ffffff;
  722. text-align: center;
  723. line-height: 38px;
  724. margin-left: 10px;
  725. cursor: pointer;
  726. }
  727. .voyage-add {
  728. width: 80px;
  729. height: 36px;
  730. border-radius: 2px;
  731. border: 1px solid #0094fe;
  732. font-size: 14px;
  733. font-family: PingFangSC-Regular, PingFang SC;
  734. font-weight: 400;
  735. color: #0094fe;
  736. line-height: 36px;
  737. text-align: center;
  738. cursor: pointer;
  739. }
  740. :deep() .el-dialog {
  741. width: 800px;
  742. }
  743. :deep() .el-form-item {
  744. margin-right: 22px;
  745. width: 300px;
  746. }
  747. :deep() .el-autocomplete {
  748. width: 220px;
  749. }
  750. .el-radio {
  751. margin-right: 10px;
  752. }
  753. .el-radio:last-child {
  754. margin-right: 20px;
  755. }
  756. </style>