index.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. <template>
  2. <div>
  3. <basic-container v-if="isShow">
  4. <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :search.sync="query"
  5. v-model="form" id="out-table" :header-cell-class-name="headerClassName" ref="crud" @row-del="rowDel"
  6. @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
  7. @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
  8. @resetColumn="resetColumn('crud', 'option', 'optionBack', 446)"
  9. @saveColumn="saveColumn('crud', 'option', 'optionBack', 446)" @on-load="onLoad">
  10. <template slot="sortSearch">
  11. <el-radio-group v-model="query.sort">
  12. <el-radio :label="0">按箱利润</el-radio>
  13. <el-radio :label="1">按起运港</el-radio>
  14. <el-radio :label="2">按目的港</el-radio>
  15. </el-radio-group>
  16. </template>
  17. <template slot="menuLeft">
  18. <el-button type="primary" size="small" icon="el-icon-plus" @click="addButton">创建单据
  19. </el-button>
  20. <el-button type="success" size="small" :disabled="selectionList.length != 1"
  21. @click="copyButton">复制单据
  22. </el-button>
  23. <el-button type="warning" size="small" @click="outExport">导 出
  24. </el-button>
  25. <el-button type="danger" size="small" icon="el-icon-refresh" @click="swap">
  26. </el-button>
  27. <el-button type="success" size="small" @click="checkBills" :disabled="!selectionList.length">提交
  28. </el-button>
  29. <el-button type="danger" size="small" @click="batchRevoke" :disabled="!selectionList.length">撤销
  30. </el-button>
  31. <el-button type="success" size="small" :disabled="selectionList.length == 0"
  32. @click="allClick('批量复制')">批量复制
  33. </el-button>
  34. </template>
  35. <template slot="menu" slot-scope="{ row, index }">
  36. <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑</el-button>
  37. <el-button size="small" icon="el-icon-delete" type="text" @click="rowDel(row, index)"
  38. :disabled="row.status != '录入'">删 除</el-button>
  39. </template>
  40. <template slot="businessNo" slot-scope="{ row }">
  41. <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.businessNo }}</span>
  42. </template>
  43. <template slot="status" slot-scope="{ row }">
  44. <span v-if="row.status == '录入'"
  45. style="color: #fff;border-radius: 30px;padding: 2px 15px;background-color: #409EFF;">{{
  46. row.status }}</span>
  47. <span v-if="row.status != '录入'"
  48. style="color: #fff;border-radius: 30px;padding: 2px 15px;background-color: #67C23A;">{{
  49. row.status }}</span>
  50. </template>
  51. </avue-crud>
  52. </basic-container>
  53. <el-dialog title="导入模板" append-to-body :visible.sync="copyDia" width="555px" :close-on-click-modal="false"
  54. v-dialog-drag>
  55. <avue-form v-if="copyDia" ref="copy" :option="copyOption" v-model="copyForm">
  56. <template slot="curCode">
  57. <dic-select v-model="copyForm.curCode" placeholder="币别" label="code"
  58. :url="'/blade-los/bcurrency/obtainRate?deptId=' + copyForm.deptId + '&date=' + copyForm.effectiveStartDate + '&type=1'"
  59. :filterable="true" @selectChange="dicChange('curCode', $event)"></dic-select>
  60. </template>
  61. </avue-form>
  62. <span slot="footer" class="dialog-footer">
  63. <el-button @click="copyDia = false" size="mini">取 消</el-button>
  64. <el-button type="primary" @click="allClick('确认复制')" size="mini">确 定</el-button>
  65. </span>
  66. </el-dialog>
  67. <detailsPage v-if="!isShow" :detailData="detailData" :pageIds="pageIds" @goBack="goBack"></detailsPage>
  68. </div>
  69. </template>
  70. <script>
  71. import { getList, remove, checkBillsBatch, batchRevoke, batchCopy } from "@/api/iosBasicData/costcenter/soc";
  72. import { getWorkDicts } from "@/api/system/dictbiz";
  73. import detailsPage from "./detailsPage";
  74. import { getToken } from "@/util/auth";
  75. import { dateFormat } from "@/util/date";
  76. import dicSelect from "@/components/dicSelect/main";
  77. import _ from "lodash";
  78. export default {
  79. data() {
  80. return {
  81. copyForm: {
  82. deptId: JSON.parse(localStorage.getItem('sysitemData')).deptId,
  83. effectiveStartDate: dateFormat(new Date(), 'yyyy-MM-dd') + ' 00:00:00',
  84. },
  85. copyDia: false,
  86. copyOption: {
  87. submitBtn: false,
  88. emptyBtn: false,
  89. column: [
  90. {
  91. label: "有效期起",
  92. prop: "effectiveStartDate",
  93. width: "120",
  94. disabled: false,
  95. type: "date",
  96. format: "yyyy-MM-dd",
  97. valueFormat: "yyyy-MM-dd 00:00:00",
  98. rules: [{
  99. required: true,
  100. message: "请选择日期",
  101. trigger: "blur"
  102. }]
  103. },
  104. {
  105. label: "有效期止",
  106. prop: "effectiveEndDate",
  107. width: "120",
  108. disabled: false,
  109. type: "date",
  110. format: "yyyy-MM-dd",
  111. valueFormat: "yyyy-MM-dd 23:59:59",
  112. rules: [{
  113. required: true,
  114. message: "请选择日期",
  115. trigger: "blur"
  116. }]
  117. },
  118. {
  119. label: "币别",
  120. prop: "curCode",
  121. width: "80",
  122. disabled: false,
  123. rules: [
  124. {
  125. required: true,
  126. message: ' ',
  127. trigger: 'blur'
  128. }
  129. ]
  130. },
  131. {
  132. label: "汇率",
  133. prop: "exrate",
  134. width: "80",
  135. disabled: false,
  136. rules: [
  137. {
  138. required: true,
  139. message: ' ',
  140. trigger: 'blur'
  141. }
  142. ]
  143. },
  144. ]
  145. },
  146. isShow: true,
  147. detailData: {},
  148. form: {},
  149. query: {
  150. businessType: 'SOC',
  151. sort: 0,
  152. effectiveStartDate: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00:00"
  153. },
  154. loading: false,
  155. page: {
  156. pageSize: 10,
  157. currentPage: 1,
  158. total: 0
  159. },
  160. selectionList: [],
  161. option: {},
  162. optionBack: {
  163. height: 'auto',
  164. calcHeight: 30,
  165. menuWidth: 140,
  166. tip: false,
  167. searchShow: true,
  168. searchMenuSpan: 24,
  169. border: true,
  170. index: true,
  171. addBtn: false,
  172. viewBtn: false,
  173. editBtn: false,
  174. delBtn: false,
  175. selection: true,
  176. searchIcon: true,
  177. align: 'center',
  178. searchIndex: 3,
  179. summaryText: "合计",
  180. showSummary: true,
  181. sumColumnList: [
  182. {
  183. name: 'profit20',
  184. type: 'sum',
  185. decimals: 2
  186. },
  187. {
  188. name: 'profit40',
  189. type: 'sum',
  190. decimals: 2
  191. },
  192. {
  193. name: 'profitHc',
  194. type: 'sum',
  195. decimals: 2
  196. },
  197. {
  198. name: 'otherProfit',
  199. type: 'sum',
  200. decimals: 2
  201. }
  202. ],
  203. column: [
  204. {
  205. label: "系统号",
  206. prop: "businessNo",
  207. width: "120",
  208. search: true,
  209. searchOrder: 1,
  210. overHidden: true,
  211. },
  212. {
  213. label: "起运港",
  214. prop: "podCname",
  215. width: "80",
  216. overHidden: true,
  217. search: true,
  218. searchOrder: 2,
  219. type: 'select',
  220. filterable: true,
  221. remote: true,
  222. dicUrl: "/api/blade-los/bports/list?current=1&size=5&cnName={{key}}",
  223. props: {
  224. label: 'cnName',
  225. value: 'cnName',
  226. desc: 'code',
  227. res: 'data.records'
  228. },
  229. },
  230. {
  231. label: "目的港",
  232. prop: "destinationCname",
  233. width: "80",
  234. overHidden: true,
  235. search: true,
  236. searchOrder: 3,
  237. type: 'select',
  238. filterable: true,
  239. remote: true,
  240. dicUrl: "/api/blade-los/bports/list?current=1&size=5&cnName={{key}}",
  241. props: {
  242. label: 'cnName',
  243. value: 'cnName',
  244. desc: 'code',
  245. res: 'data.records'
  246. },
  247. },
  248. {
  249. label: "承运人",
  250. prop: "shippingCompanyCname",
  251. width: "80",
  252. overHidden: true,
  253. search: true,
  254. searchOrder: 4,
  255. type: 'select',
  256. filterable: true,
  257. remote: true,
  258. dicUrl: "/api/blade-los/bcorps/list?current=1&size=5&corpTypeName=船公司&cnName={{key}}",
  259. props: {
  260. label: 'shortName',
  261. value: 'shortName',
  262. desc: 'code',
  263. res: 'data.records'
  264. },
  265. },
  266. {
  267. label: "20利润",
  268. prop: "profit20",
  269. width: "70",
  270. overHidden: true,
  271. },
  272. {
  273. label: "40利润",
  274. prop: "profit40",
  275. width: "70",
  276. overHidden: true,
  277. },
  278. {
  279. label: "40HC利润",
  280. prop: "profitHc",
  281. width: "80",
  282. overHidden: true,
  283. },
  284. {
  285. label: "其他利润",
  286. prop: "otherProfit",
  287. width: "70",
  288. overHidden: true,
  289. },
  290. {
  291. label: "运输条款",
  292. prop: "transportationTerms",
  293. width: "80",
  294. search: true,
  295. searchOrder: 8,
  296. type: 'select',
  297. filterable: true,
  298. remote: true,
  299. dicUrl: "/api/blade-los/bserviceterms/list?cnName={{key}}",
  300. props: {
  301. label: 'cnName',
  302. value: 'cnName',
  303. res: 'data.records'
  304. },
  305. overHidden: true,
  306. },
  307. {
  308. label: "状态",
  309. prop: "status",
  310. width: "100",
  311. overHidden: true
  312. },
  313. {
  314. label: "中转港",
  315. prop: "transitPortCname",
  316. width: "80",
  317. overHidden: true,
  318. },
  319. {
  320. label: "转船类型",
  321. prop: "changeShipType",
  322. width: "80",
  323. overHidden: true,
  324. },
  325. {
  326. label: "有效期起",
  327. prop: "effectiveStartDate",
  328. width: "100",
  329. overHidden: true,
  330. search: true,
  331. searchOrder: 9,
  332. type: "date",
  333. format: "yyyy-MM-dd",
  334. valueFormat: "yyyy-MM-dd 00:00:00",
  335. searchValue: dateFormat(new Date(), "yyyy-MM-dd") + " 00:00:00",
  336. },
  337. {
  338. label: "有效期止",
  339. prop: "effectiveEndDate",
  340. width: "100",
  341. overHidden: true,
  342. search: true,
  343. searchOrder: 10,
  344. type: "date",
  345. format: "yyyy-MM-dd",
  346. valueFormat: "yyyy-MM-dd 23:59:59",
  347. },
  348. {
  349. label: "船名",
  350. prop: "shipCname",
  351. width: "80",
  352. overHidden: true,
  353. search: true,
  354. searchOrder: 6,
  355. type: 'select',
  356. filterable: true,
  357. remote: true,
  358. dicUrl: "/api/blade-los/bvessels/list?current=1&size=5&cnName={{key}}",
  359. props: {
  360. label: 'cnName',
  361. value: 'cnName',
  362. desc: 'code',
  363. res: 'data.records'
  364. },
  365. },
  366. {
  367. label: "航次",
  368. prop: "voyage",
  369. width: "80",
  370. overHidden: true,
  371. search: true,
  372. searchOrder: 7,
  373. },
  374. {
  375. label: "航行天数",
  376. prop: "navigateDay",
  377. width: "80",
  378. overHidden: true,
  379. },
  380. {
  381. label: "航线",
  382. prop: "airlineCname",
  383. width: "80",
  384. overHidden: true,
  385. search: true,
  386. searchOrder: 5,
  387. type: 'select',
  388. filterable: true,
  389. remote: true,
  390. dicUrl: "/api/blade-los/blines/list?cnName={{key}}",
  391. props: {
  392. label: 'cnName',
  393. value: 'cnName',
  394. res: 'data.records'
  395. },
  396. },
  397. {
  398. label: "制单人",
  399. prop: "createUserName",
  400. width: "100",
  401. overHidden: true,
  402. },
  403. {
  404. label: "制单日期",
  405. prop: "createTime",
  406. width: "120",
  407. overHidden: true,
  408. },
  409. {
  410. label: "修改人",
  411. prop: "updateUserName",
  412. width: "100",
  413. overHidden: true
  414. },
  415. {
  416. label: "修改日期",
  417. prop: "updateTime",
  418. width: "120",
  419. overHidden: true,
  420. },
  421. {
  422. label: "备注",
  423. prop: "remarks",
  424. width: "100",
  425. overHidden: true
  426. },
  427. {
  428. label: "排序方式",
  429. prop: "sort",
  430. width: "100",
  431. overHidden: true,
  432. hide: true,
  433. showColumn: false,
  434. search: true,
  435. searchOrder: 11,
  436. searchSpan: 12,
  437. searchValue: 0,
  438. }
  439. ]
  440. },
  441. data: [],
  442. pageIds: []
  443. };
  444. },
  445. components: {
  446. detailsPage,
  447. dicSelect
  448. },
  449. async created() {
  450. this.option = await this.getColumnData(this.getColumnName(446), this.optionBack);
  451. },
  452. activated() {
  453. setTimeout(() => {
  454. if (this.$route.query.home) {
  455. this.addButton();
  456. }
  457. }, 100);
  458. },
  459. methods: {
  460. dicChange(name, row) {
  461. if (name == 'curCode') {
  462. if (row) {
  463. console.log(row)
  464. this.copyForm.exrate = row.exrateReceivable
  465. } else {
  466. this.copyForm.exrate = null
  467. }
  468. }
  469. },
  470. allClick(name) {
  471. if (name == '批量复制') {
  472. this.copyForm = this.$options.data().copyForm;
  473. this.copyDia = true
  474. }
  475. if (name == '确认复制') {
  476. this.$refs["copy"].validate((valid, done) => {
  477. done();
  478. if (valid) {
  479. let ids = []
  480. for (let item of this.selectionList) {
  481. ids.push(item.id)
  482. }
  483. let obj = {
  484. ids: ids.join(','),
  485. ...this.copyForm,
  486. type: 'SOC',
  487. }
  488. const loading = this.$loading({
  489. lock: true,
  490. text: '加载中',
  491. spinner: 'el-icon-loading',
  492. background: 'rgba(255,255,255,0.7)'
  493. });
  494. batchCopy(obj).then(res => {
  495. this.$message.success("操作成功");
  496. this.copyDia = false
  497. this.onLoad(this.page, this.query);
  498. }).finally(() => {
  499. loading.close()
  500. })
  501. } else {
  502. return false;
  503. }
  504. });
  505. }
  506. },
  507. checkBills() {
  508. for (let item of this.selectionList) {
  509. if (item.status != '录入') {
  510. return this.$message.error("单据已提交审核,请勿重复操作");
  511. }
  512. }
  513. let ids = []
  514. for (let item of this.selectionList) {
  515. ids.push(item.id)
  516. }
  517. let obj = {
  518. ids: ids.join(","),
  519. url: '/iosBasicData/costcenter/soc/index',
  520. pageStatus: "",
  521. pageLabel: "航线成本(SOC)",
  522. }
  523. this.$confirm('是否批量单据请核?', '提示', {
  524. confirmButtonText: '确定',
  525. cancelButtonText: '取消',
  526. type: 'warning'
  527. }).then(() => {
  528. const loading = this.$loading({
  529. lock: true,
  530. text: '加载中',
  531. spinner: 'el-icon-loading',
  532. background: 'rgba(255,255,255,0.7)'
  533. });
  534. checkBillsBatch(obj).then(res => {
  535. this.$message.success("操作成功!");
  536. this.onLoad(this.page, this.query);
  537. }).finally(() => {
  538. loading.close();
  539. })
  540. })
  541. },
  542. batchRevoke() {
  543. for (let item of this.selectionList) {
  544. if (item.status == '录入') {
  545. return this.$message.error("单据未提交审核,请正确操作");
  546. }
  547. }
  548. let ids = []
  549. for (let item of this.selectionList) {
  550. ids.push(item.id)
  551. }
  552. let obj = {
  553. ids: ids.join(","),
  554. }
  555. this.$confirm('是否批量单据请核?', '提示', {
  556. confirmButtonText: '确定',
  557. cancelButtonText: '取消',
  558. type: 'warning'
  559. }).then(() => {
  560. const loading = this.$loading({
  561. lock: true,
  562. text: '加载中',
  563. spinner: 'el-icon-loading',
  564. background: 'rgba(255,255,255,0.7)'
  565. });
  566. batchRevoke(obj).then(res => {
  567. this.$message.success("操作成功!");
  568. this.onLoad(this.page, this.query);
  569. }).finally(() => {
  570. loading.close();
  571. })
  572. })
  573. },
  574. swap() {
  575. let obj = this.deepClone(this.query)
  576. this.query.podCname = obj.destinationCname
  577. this.query.destinationCname = obj.podCname
  578. },
  579. addButton() {
  580. this.pageIds = []
  581. this.isShow = false
  582. this.detailData = {
  583. type: 'new'
  584. }
  585. },
  586. copyButton() {
  587. this.isShow = false
  588. this.detailData = {
  589. copyId: this.selectionList[0].id
  590. };
  591. },
  592. rowEdit(row) {
  593. this.pageIds = []
  594. this.data.forEach(item => {
  595. this.pageIds.push(item.id)
  596. })
  597. this.detailData = {
  598. id: row.id
  599. };
  600. this.isShow = false
  601. },
  602. // 删除
  603. rowDel(row, index) {
  604. if (row.item == 1) {
  605. return this.$message.error("存在明细不允许删除");
  606. }
  607. this.$confirm("确定将选择数据删除?", {
  608. confirmButtonText: "确定",
  609. cancelButtonText: "取消",
  610. type: "warning"
  611. }).then(() => {
  612. remove({ ids: row.id }).then(res => {
  613. this.onLoad(this.page, this.query);
  614. this.$message.success("成功删除");
  615. })
  616. })
  617. },
  618. searchReset() {
  619. this.query = this.$options.data().query;
  620. this.onLoad(this.page);
  621. },
  622. // 搜索按钮点击
  623. searchChange(params, done) {
  624. this.page.currentPage = 1;
  625. this.onLoad(this.page, this.query);
  626. done();
  627. },
  628. selectionChange(list) {
  629. this.selectionList = list;
  630. },
  631. currentChange(currentPage) {
  632. this.page.currentPage = currentPage;
  633. },
  634. sizeChange(pageSize) {
  635. this.page.pageSize = pageSize;
  636. },
  637. refreshChange() {
  638. this.onLoad(this.page, this.query);
  639. },
  640. onLoad(page, params = {}) {
  641. let obj = {}
  642. obj = {
  643. ...Object.assign(params, this.query),
  644. }
  645. this.loading = true;
  646. getList(page.currentPage, page.pageSize, obj).then(res => {
  647. this.data = res.data.data.records;
  648. this.page.total = res.data.data.total;
  649. this.$nextTick(() => {
  650. this.$refs.crud.doLayout();
  651. this.$refs.crud.dicInit();
  652. });
  653. }).finally(() => {
  654. this.loading = false;
  655. })
  656. },
  657. // 详情的返回列表
  658. goBack() {
  659. // 初始化数据
  660. this.pageIds = []
  661. if (JSON.stringify(this.$route.query) != "{}") {
  662. this.$router.$avueRouter.closeTag();
  663. this.$router.push({
  664. path: "/iosBasicData/costcenter/soc/index"
  665. });
  666. }
  667. this.detailData = {}
  668. this.isShow = true;
  669. this.onLoad(this.page, this.query);
  670. },
  671. outExport() {
  672. let config = { params: { ...this.query } }
  673. if (config.params) {
  674. for (const propName of Object.keys(config.params)) {
  675. const value = config.params[propName];
  676. if (value !== null && typeof (value) !== "undefined") {
  677. if (value instanceof Array) {
  678. for (const key of Object.keys(value)) {
  679. let params = propName + '[' + key + ']';
  680. config.params[params] = value[key]
  681. }
  682. delete config.params[propName]
  683. }
  684. }
  685. }
  686. }
  687. const routeData = this.$router.resolve({
  688. path: '/api/blade-los/routecost/exportRouteCost', //跳转目标窗口的地址
  689. query: {
  690. ...config.params, //括号内是要传递给新窗口的参数
  691. identification: this.url
  692. }
  693. })
  694. window.open(routeData.href.slice(1, routeData.href.length) + '&' + `${this.website.tokenHeader}=${getToken()}`);
  695. },
  696. //自定义列保存
  697. async saveColumn(ref, option, optionBack, code) {
  698. /**
  699. * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
  700. * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
  701. * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
  702. */
  703. const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
  704. if (inSave) {
  705. this.$message.success("保存成功");
  706. //关闭窗口
  707. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  708. this.selectionList = []
  709. this.searchReset()
  710. this.$nextTick(() => {
  711. this.$refs.crud.refreshTable();
  712. this.$refs.crud.dicInit();
  713. });
  714. }
  715. },
  716. //自定义列重置
  717. async resetColumn(ref, option, optionBack, code) {
  718. this[option] = this[optionBack];
  719. const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
  720. if (inSave) {
  721. this.$message.success("重置成功");
  722. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  723. this.selectionList = []
  724. this.searchReset()
  725. this.$nextTick(() => {
  726. this.$refs.crud.refreshTable();
  727. this.$refs.crud.dicInit();
  728. });
  729. }
  730. },
  731. // 更改表格颜色
  732. headerClassName(tab) {
  733. //颜色间隔
  734. let back = ""
  735. if (tab.columnIndex >= 0 && tab.column.level === 1) {
  736. if (tab.columnIndex % 2 === 0) {
  737. back = "back-one"
  738. } else if (tab.columnIndex % 2 === 1) {
  739. back = "back-two"
  740. }
  741. }
  742. return back;
  743. },
  744. }
  745. }
  746. </script>
  747. <style lang="scss" scoped>
  748. ::v-deep #out-table .back-one {
  749. background: #ecf5ff !important;
  750. text-align: center;
  751. }
  752. ::v-deep #out-table .back-two {
  753. background: #ecf5ff !important;
  754. text-align: center;
  755. }
  756. .pointerClick {
  757. cursor: pointer;
  758. color: #1e9fff;
  759. }
  760. ::v-deep .el-col-md-8 {
  761. width: 24.33333%;
  762. }
  763. </style>