TabelTransfer.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. <template>
  2. <div class="mymain-container">
  3. <slot name="header">
  4. <el-row class="radio">
  5. <el-radio-group v-model="region">
  6. <el-radio label="0">指定经销商</el-radio>
  7. <el-radio
  8. label="1"
  9. v-if="!adminWebsit || !adminWebsit.websitNumber || (adminWebsit && adminWebsit.websitNumber === 'GZ')"
  10. >广州经销商</el-radio
  11. >
  12. <el-radio
  13. label="2"
  14. v-if="!adminWebsit || !adminWebsit.websitNumber || (adminWebsit && adminWebsit.websitNumber === 'FS')"
  15. >佛山经销商</el-radio
  16. >
  17. </el-radio-group>
  18. <el-upload
  19. class="import-btn"
  20. :action="baseURL + 'student/import'"
  21. :http-request="handleImport"
  22. :file-list="importFileList"
  23. :show-file-list="false"
  24. >
  25. <el-button type="primary" size="mini">导入经销商</el-button>
  26. </el-upload>
  27. <el-button type="primary" size="mini" @click="hanleDownloadFiles">下载模板</el-button>
  28. </el-row>
  29. <el-row type="flex">
  30. <el-col :xs="24" :sm="12" :lg="14">
  31. <el-input v-model="keyword" placeholder="查找经销商" size="mini" />
  32. </el-col>
  33. <el-col :xs="24" :sm="1" :lg="1" style="margin-left: 10px"
  34. ><el-button size="mini" @click="submitScreenForm">确定</el-button></el-col
  35. >
  36. <el-col :xs="24" :sm="1" :lg="1" style="margin-left: 20px"
  37. ><el-button size="mini" @click="resetScreenForm">重置</el-button></el-col
  38. >
  39. </el-row>
  40. </slot>
  41. <el-row :gutter="20">
  42. <el-col :span="10" :offset="0">
  43. <h5>未选经销商</h5>
  44. <el-divider direction="horizontal" content-position="left" />
  45. <div class="table">
  46. <el-table
  47. ref="multipleTable"
  48. :data="dataL"
  49. element-loading-text="Loading"
  50. border
  51. height="480px"
  52. fit
  53. highlight-current-row
  54. @select-all="handleSelectionAllChange"
  55. @selection-change="handleSelectionChange"
  56. >
  57. <el-table-column type="selection" width="55" :selectable="selectable" align="left" />
  58. <!-- <el-table-column-->
  59. <!-- prop="number"-->
  60. <!-- label="经销商编码"-->
  61. <!-- align="left"-->
  62. <!-- />-->
  63. <el-table-column prop="name" label="经销商名称" align="left"
  64. ><template slot-scope="scope">
  65. <CopyButton :copy-text="scope.row.name" />
  66. <span>{{ scope.row.name }}</span>
  67. </template>
  68. </el-table-column>
  69. </el-table>
  70. </div>
  71. <!-- 分页 -->
  72. <div style="margin: 20px 0">
  73. <el-pagination
  74. :current-page="currentPages"
  75. :page-sizes="[10, 20, 30, 50]"
  76. :page-size="10"
  77. layout="total, sizes, prev, pager, next, jumper"
  78. :total="clistTotal"
  79. @size-change="handleSizeChanges"
  80. @current-change="handleCurrentChanges"
  81. />
  82. </div>
  83. </el-col>
  84. <el-col :span="4" class="middle_box" :offset="0">
  85. <el-col> <el-button size="mini" :disabled="type == 2" @click="handleAllAdd">全部添加</el-button></el-col>
  86. <el-col> <el-button size="mini" :disabled="type == 2" @click="handleAdd">增加</el-button></el-col>
  87. <el-col> <el-button size="mini" :disabled="type == 1" @click="handleDelete">删除</el-button></el-col>
  88. <el-col> <el-button size="mini" :disabled="type == 1" @click="handleAllDelete">全部删除</el-button></el-col>
  89. </el-col>
  90. <el-col :span="10" :offset="0">
  91. <h5>已选经销商</h5>
  92. <el-divider direction="horizontal" content-position="left" />
  93. <div class="table">
  94. <el-table
  95. v-loading="listLoading"
  96. :data="custoList"
  97. element-loading-text="Loading"
  98. border
  99. height="480px"
  100. fit
  101. highlight-current-row
  102. stripe
  103. @select-all="handleSelectionAllChange2"
  104. @selection-change="handleSelectionChange2"
  105. >
  106. <el-table-column type="selection" width="55" align="left" />
  107. <!-- <el-table-column-->
  108. <!-- prop="customerNumber"-->
  109. <!-- label="经销商编码"-->
  110. <!-- align="left"-->
  111. <!-- />-->
  112. <el-table-column prop="customerName" label="经销商名称" align="left">
  113. <template slot-scope="scope">
  114. <CopyButton :copy-text="scope.row.customerName" />
  115. <span>{{ scope.row.customerName }}</span>
  116. </template>
  117. </el-table-column>
  118. </el-table>
  119. </div>
  120. </el-col>
  121. </el-row>
  122. <div>
  123. <h4 style="display: inline-block; margin-right: 20px">经销商上限</h4>
  124. <el-divider />
  125. </div>
  126. <div style="margin: 20px 0">
  127. <el-upload
  128. class="import-btn cus-btn"
  129. :action="baseURL + 'student/import'"
  130. :http-request="handleImports"
  131. :file-list="importFileList"
  132. :show-file-list="false"
  133. >
  134. <el-button type="primary" size="mini">导入经销商</el-button>
  135. </el-upload>
  136. <el-button type="primary" size="mini" @click="hanleDownloadFilesPolicy">下载模板</el-button>
  137. </div>
  138. <el-row type="flex" style="margin: 20px 0">
  139. <el-col :xs="24" :sm="12" :lg="14">
  140. <el-input v-model="keyword2" placeholder="查找经销商" size="mini" />
  141. </el-col>
  142. <el-col :xs="24" :sm="1" :lg="1" style="margin-left: 10px"
  143. ><el-button size="mini" @click="submitScreenForm2">确定</el-button></el-col
  144. >
  145. <el-col :xs="24" :sm="1" :lg="1" style="margin-left: 20px"
  146. ><el-button size="mini" @click="resetScreenForm2">重置</el-button></el-col
  147. >
  148. </el-row>
  149. <div>
  150. <div class="table">
  151. <el-table
  152. v-loading="clistLoading"
  153. :data="list"
  154. element-loading-text="Loading"
  155. border
  156. fit
  157. highlight-current-row
  158. stripe
  159. @select-all="handleSelectionAllChange2"
  160. @selection-change="handleSelectionChange2"
  161. >
  162. <!-- <el-table-column type="selection" width="55" align="left" /> -->
  163. <el-table-column
  164. prop="customerNumber"
  165. label="经销商编号
  166. "
  167. align="left"
  168. >
  169. <template slot-scope="scope">
  170. <CopyButton :copy-text="scope.row.customerNumber" />
  171. <span>{{ scope.row.customerNumber }}</span>
  172. </template>
  173. </el-table-column>
  174. <el-table-column prop="customerName" label="经销商名称" align="left">
  175. <template slot-scope="scope">
  176. <CopyButton :copy-text="scope.row.customerName" />
  177. <span>{{ scope.row.customerName }}</span>
  178. </template>
  179. </el-table-column>
  180. <el-table-column
  181. prop="materialName"
  182. label="物料名称
  183. "
  184. align="left"
  185. >
  186. <template slot-scope="scope">
  187. <CopyButton :copy-text="scope.row.materialName" />
  188. <span>{{ scope.row.materialName }}</span>
  189. </template>
  190. </el-table-column>
  191. <el-table-column
  192. prop="materialNumber"
  193. label="物料编号
  194. "
  195. align="left"
  196. >
  197. <template slot-scope="scope">
  198. <CopyButton :copy-text="scope.row.materialNumber" />
  199. <span>{{ scope.row.materialNumber }}</span>
  200. </template>
  201. </el-table-column>
  202. <el-table-column
  203. prop="examineOrderNums"
  204. label="已审订单数
  205. "
  206. align="left"
  207. >
  208. <template slot-scope="scope">
  209. {{ scope.row.examineOrderNums | numToFixed }}
  210. </template>
  211. </el-table-column>
  212. <el-table-column
  213. prop="limitQty"
  214. label="购买量上限
  215. "
  216. align="left"
  217. >
  218. <template slot-scope="scope">
  219. {{ scope.row.limitQty | numToFixed }}
  220. </template>
  221. </el-table-column>
  222. </el-table>
  223. </div>
  224. <!-- 分页 -->
  225. <div style="margin: 20px 0">
  226. <el-pagination
  227. :current-page="policyList.currentPages"
  228. :page-sizes="[10, 20, 30, 50]"
  229. :page-size="10"
  230. layout="total, sizes, prev, pager, next, jumper"
  231. :total="cTotal"
  232. @size-change="handleSizeChanges2"
  233. @current-change="handleCurrentChanges2"
  234. />
  235. </div>
  236. </div>
  237. <slot name="footer">
  238. <el-row style="margin: 20px 0 0 0">
  239. <el-button type="primary" size="mini" @click="handleSave">
  240. {{ comCode ? '保存' : '提交审核' }}
  241. </el-button>
  242. <el-button type="primary" size="mini" @click="handleReset">重置</el-button>
  243. </el-row>
  244. </slot>
  245. </div>
  246. </template>
  247. <script>
  248. import {
  249. deleteCondition,
  250. deleteMaterialPolicy,
  251. getConditionList,
  252. getCrList,
  253. getCustomerList,
  254. getPolicyList
  255. } from '@/api/policy_list'
  256. import { downloadFiles, handleImport } from '@/utils/util'
  257. import EditCondition from './EditCondition'
  258. import ImageUpload from '@/components/Common/image-upload.vue'
  259. import Minxin from '@/mixin'
  260. export default {
  261. name: 'Examine',
  262. components: {
  263. EditCondition,
  264. ImageUpload
  265. },
  266. mixins: [Minxin],
  267. // eslint-disable-next-line vue/require-prop-types
  268. props: ['code', 'yregion'],
  269. data() {
  270. return {
  271. keyword: '',
  272. keyword2: '',
  273. region: '0',
  274. baseURL: '',
  275. dcurrentPage: 1,
  276. dpageSize: 10,
  277. dlistTotal: 0,
  278. currentPages: 1, // 当前页码
  279. pageSizes: 10, // 每页数量
  280. input: '',
  281. remark: '',
  282. fileList: [],
  283. listLoading: false,
  284. imageUrl: '',
  285. dataList: [],
  286. examineStatus: 'OK',
  287. options: {},
  288. value: '',
  289. detail: {},
  290. srcList: [],
  291. screenForm: {
  292. code: '',
  293. createBy: '',
  294. endCreateTime: '',
  295. endTime1: '',
  296. endTime2: '',
  297. examineBy: '',
  298. remark: '',
  299. startCreateTime: '',
  300. startTime1: '',
  301. startTime2: '',
  302. status: '',
  303. title: '',
  304. type: ''
  305. },
  306. conditionList: [],
  307. custoList: [],
  308. isEdit: 1,
  309. cid: '',
  310. cpolicyId: '',
  311. dataL: [],
  312. clistTotal: 0,
  313. clistTotals: 0,
  314. type: 1,
  315. importFileList: [],
  316. leftData: [],
  317. rightData: [],
  318. typeOptions: [
  319. {
  320. value: 'PROVISION',
  321. label: '配提'
  322. },
  323. {
  324. value: 'LIMIT',
  325. label: '限量'
  326. }
  327. ],
  328. comCode: '',
  329. policyList: {
  330. pageNum: 1,
  331. pageSize: 10,
  332. policyId: '',
  333. keyword: '',
  334. currentPages: 1
  335. },
  336. list: [],
  337. cTotal: 1,
  338. clistLoading: false
  339. }
  340. },
  341. computed: {
  342. adminWebsit() {
  343. return JSON.parse(localStorage.getItem('supply_user')).adminWebsit
  344. }
  345. },
  346. watch: {
  347. dataL: (val, oval) => {
  348. console.log(val, oval)
  349. }
  350. },
  351. created() {
  352. this.comCode = this.code
  353. if (this.comCode) {
  354. if (this.yregion || this.yregion == 0) {
  355. this.region = '' + this.yregion
  356. }
  357. this.getCond()
  358. this.getPolicyList()
  359. }
  360. },
  361. methods: {
  362. getList() {
  363. this.getCrList()
  364. },
  365. onChange() {
  366. this.getCrList()
  367. },
  368. getCrList() {
  369. const customerParams = {
  370. pageNum: this.currentPages,
  371. pageSize: this.pageSizes,
  372. keyword: this.keyword,
  373. region: '',
  374. websitNumber: this.region == '0' && this.adminWebsit ? this.adminWebsit.websitNumber : ''
  375. }
  376. // 获取经销商列表
  377. getCrList(customerParams).then(res => {
  378. for (let j = 0; j < this.custoList.length; j++) {
  379. for (let i = 0; i < res.data.records.length; i++) {
  380. if (res.data.records[i].id === this.custoList[j].customerId) {
  381. res.data.records[i].disabled = true
  382. }
  383. }
  384. }
  385. this.dataL = res.data.records
  386. for (let k = 0; k < this.dataL.length; k++) {
  387. ;(this.dataL[k].customerId = this.dataL[k].id),
  388. (this.dataL[k].customerName = this.dataL[k].name),
  389. (this.dataL[k].customerNumber = this.dataL[k].number)
  390. }
  391. this.clistTotal = res.data.total
  392. })
  393. },
  394. getPolicyList() {
  395. this.clistLoading = true
  396. getPolicyList({
  397. pageNum: this.policyList.currentPages,
  398. pageSize: this.policyList.pageSize,
  399. policyId: this.comCode || this.code,
  400. keyword: this.keyword2
  401. }).then(res => {
  402. this.list = res.data.records
  403. console.log(this.list, '785787')
  404. this.cTotal = res.data.total
  405. this.clistLoading = false
  406. })
  407. },
  408. // 更改每页数量
  409. handleSizeChanges2(val) {
  410. this.policyList.pageSizes = val
  411. this.policyList.currentPages = 1
  412. this.getPolicyList()
  413. },
  414. // 更改当前页
  415. handleCurrentChanges2(val) {
  416. this.policyList.currentPages = val
  417. this.getPolicyList()
  418. },
  419. // 更改每页数量
  420. handleSizeChanges(val) {
  421. this.pageSizes = val
  422. this.currentPages = 1
  423. this.getCrList()
  424. },
  425. // 更改当前页
  426. handleCurrentChanges(val) {
  427. this.currentPages = val
  428. this.getCrList()
  429. },
  430. // 提交筛选表单
  431. submitScreenForm() {
  432. this.currentPages = 1
  433. this.getCrList()
  434. },
  435. // 重置筛选表单
  436. resetScreenForm() {
  437. this.keyword = ''
  438. this.currentPages = 1
  439. this.getCrList()
  440. },
  441. // 提交筛选表单
  442. submitScreenForm2() {
  443. this.policyList.currentPages = 1
  444. this.getPolicyList()
  445. },
  446. // 重置筛选表单
  447. resetScreenForm2() {
  448. this.keyword2 = ''
  449. this.policyList.currentPages = 1
  450. this.getPolicyList()
  451. },
  452. // 去掉相同数据
  453. resArr(arr1, arr2) {
  454. return arr1.filter(v => arr2.every(val => val.id !== v.id))
  455. },
  456. // 导入经销商模板
  457. async handleImport(param) {
  458. this.importLoading = true
  459. const file = param.file
  460. const formData = new FormData()
  461. formData.append('file', file)
  462. // formData.append('policyId', this.searchForm.code)
  463. // formData.append("mainId", this.searchForm.mainId);
  464. const result = await handleImport('policy/importCustomer', formData)
  465. console.log(result)
  466. this.importLoading = false
  467. this.importFileList = []
  468. if (result.code === 200) {
  469. await this.$alert(result.message, '导入成功', {
  470. confirmButtonText: '确定'
  471. })
  472. for (let i = 0; i < result.data.length; i++) {
  473. result.data[i].customerNumber = result.data[i].number
  474. result.data[i].customerName = result.data[i].name
  475. result.data[i].customerId = result.data[i].id
  476. }
  477. if (this.custoList.length) {
  478. this.custoList = [...this.custoList, ...this.resArr(this.custoList, result.data)]
  479. } else {
  480. this.custoList = result.data
  481. }
  482. } else {
  483. await this.$alert(result.message, '导入失败', {
  484. confirmButtonText: '确定'
  485. })
  486. }
  487. },
  488. async handleImports(param) {
  489. this.importLoading = true
  490. const file = param.file
  491. const formData = new FormData()
  492. formData.append('file', file)
  493. formData.append('policyId', this.comCode || this.code)
  494. // formData.append("mainId", this.searchForm.mainId);
  495. const result = await handleImport('policy/limit/import', formData)
  496. console.log(result)
  497. this.importLoading = false
  498. this.importFileList = []
  499. if (result.code === 200) {
  500. await this.$alert(result.message, '导入成功', {
  501. confirmButtonText: '确定'
  502. })
  503. this.list = result.data
  504. this.getPolicyList()
  505. } else {
  506. await this.$alert(result.message, '导入失败', {
  507. confirmButtonText: '确定'
  508. })
  509. }
  510. },
  511. // 下载经销商模板
  512. hanleDownloadFiles() {
  513. downloadFiles('policy/downloadCustomer')
  514. },
  515. hanleDownloadFilesPolicy() {
  516. downloadFiles('policy/limit/download')
  517. },
  518. getCommonApi(row) {
  519. ;(this.isEdit = 2), (this.cid = row.id), (this.cpolicyId = row.policyId)
  520. console.log(this.cpolicyId, this.comCode, this.cpolicyId === this.comCode)
  521. },
  522. getCond() {
  523. this.listLoading = true
  524. const custoParams = {
  525. pageNum: 1,
  526. pageSize: -1,
  527. policyId: this.comCode || this.code
  528. }
  529. getCustomerList(custoParams).then(res => {
  530. this.custoList = res.data.records
  531. console.log(this.custoList, '已选的')
  532. this.clistTotals = res.data.total
  533. this.listLoading = false
  534. // this.getCrList()
  535. })
  536. },
  537. handleCondition(id, index) {
  538. deleteCondition({ id }).then(res => {
  539. this.getConditionList()
  540. this.$successMsg('删除成功')
  541. })
  542. },
  543. getConditionList() {
  544. const condParams = {
  545. policyId: this.comCode
  546. }
  547. getConditionList(condParams).then(res => {
  548. this.conditionList = res.data
  549. })
  550. },
  551. // 删除
  552. hanleDelete(id) {
  553. const params = { policyMaterialId: id }
  554. deleteMaterialPolicy(params).then(res => {
  555. this.$successMsg('删除成功')
  556. })
  557. },
  558. /**
  559. * 根据条件禁用行复选框
  560. * 函数返回值为false则禁用选择(反之亦然)
  561. * @param {Object} row - 行数据
  562. * @param {String} index - 索引值
  563. * @return Boolean
  564. */
  565. selectable: function (row, index) {
  566. // row.disabled == undefined 才能被选中
  567. if (row.disabled === undefined || row.disabled === false) {
  568. return true
  569. } else {
  570. return false
  571. }
  572. // 函数必须有返回值且是布尔值
  573. // 页面刷新后该函数会执行 N 次进行判断(N 为表格行数)
  574. // 如果没有返回值则默认返回false(全部无法选中)
  575. },
  576. handleSelectionAllChange(e) {
  577. this.leftData = e
  578. this.type = 1
  579. },
  580. handleSelectionChange(e) {
  581. this.leftData = e
  582. this.type = 1
  583. },
  584. handleSelectionAllChange2(e) {
  585. this.rightData = e
  586. this.type = 2
  587. },
  588. handleSelectionChange2(e) {
  589. this.rightData = e
  590. this.type = 2
  591. },
  592. handleLeft(e) {
  593. this.type = 1
  594. },
  595. handleRight(e) {
  596. this.type = 2
  597. },
  598. handleAllAdd() {
  599. if (this.type === 1 && this.leftData.length) {
  600. for (let i = 0; i < this.dataL.length; i++) {
  601. for (let j = 0; j < this.leftData.length; j++) {
  602. if (this.dataL[i].id === this.leftData[j].id) {
  603. this.dataL[i].disabled = true
  604. }
  605. }
  606. }
  607. this.custoList = [...this.custoList, ...this.leftData]
  608. this.$refs.multipleTable.clearSelection()
  609. } else {
  610. this.$errorMsg('请选择要添加的经销商')
  611. }
  612. },
  613. handleAllDelete() {
  614. if (this.type === 2 && this.rightData.length) {
  615. for (let i = 0; i < this.dataL.length; i++) {
  616. for (let j = 0; j < this.rightData.length; j++) {
  617. if (this.dataL[i].id === this.rightData[j].customerId) {
  618. this.$set(this.dataL[i], 'disabled', false)
  619. // this.dataL[i].disabled = false
  620. }
  621. }
  622. }
  623. this.custoList = this.resArr(this.custoList, this.rightData)
  624. this.$refs.multipleTable.clearSelection()
  625. } else {
  626. this.$errorMsg('请选择要删除的经销商')
  627. }
  628. },
  629. handleAdd() {
  630. if (this.type === 1 && this.leftData.length) {
  631. for (let i = 0; i < this.dataL.length; i++) {
  632. for (let j = 0; j < this.leftData.length; j++) {
  633. if (this.dataL[i].id === this.leftData[j].id) {
  634. this.dataL[i].disabled = true
  635. }
  636. }
  637. }
  638. this.custoList = [...this.custoList, ...this.leftData]
  639. this.leftData = []
  640. this.$refs.multipleTable.clearSelection()
  641. } else {
  642. this.$errorMsg('请选择要添加的经销商')
  643. }
  644. },
  645. handleDelete() {
  646. if (this.type === 2 && this.rightData.length) {
  647. for (let i = 0; i < this.dataL.length; i++) {
  648. for (let j = 0; j < this.rightData.length; j++) {
  649. if (this.dataL[i].id === this.rightData[j].customerId) {
  650. this.$set(this.dataL[i], 'disabled', false)
  651. // this.dataL[i].disabled = false
  652. }
  653. }
  654. }
  655. this.custoList = this.resArr(this.custoList, this.rightData)
  656. this.$refs.multipleTable.clearSelection()
  657. } else {
  658. this.$errorMsg('请选择要删除的经销商')
  659. }
  660. },
  661. // 提交数据
  662. async handleSave() {
  663. this.$emit('handlEditPolicy', this.custoList, this.region)
  664. },
  665. handleReset() {
  666. this.dataR = this.rightData = []
  667. this.keyword = ''
  668. this.$emit('handleReset')
  669. }
  670. }
  671. }
  672. </script>
  673. <style lang="scss" scoped>
  674. .radio {
  675. display: flex;
  676. align-items: center;
  677. margin: 0 0 20px 0;
  678. }
  679. .import-btn {
  680. margin: 0 20px;
  681. }
  682. .cus-btn {
  683. margin: 0;
  684. }
  685. .value {
  686. ::v-deep .el-input__prefix {
  687. display: none;
  688. }
  689. }
  690. .descriptions {
  691. // border: #EBEEF5;
  692. border: 1px solid #ebeef5;
  693. border-bottom: none;
  694. .el-row {
  695. height: 40px;
  696. line-height: 40px;
  697. }
  698. .el-col:nth-child(odd) {
  699. background-color: #ebeef5;
  700. }
  701. .el-col {
  702. padding: 0 15px;
  703. height: 100%;
  704. border-bottom: 1px solid #ebeef5;
  705. }
  706. }
  707. .el-divider--horizontal {
  708. margin: 20px 0;
  709. }
  710. .col {
  711. height: 100px;
  712. }
  713. .import-btn {
  714. margin-right: 10px;
  715. display: inline-block;
  716. }
  717. ::v-deep .el-input__icon .el-icon-time {
  718. display: none;
  719. }
  720. .middle_box {
  721. margin-top: 80px;
  722. text-align: center;
  723. height: 430px;
  724. display: flex;
  725. flex-direction: column;
  726. align-content: center;
  727. justify-content: space-between;
  728. align-items: center;
  729. }
  730. .img-box {
  731. height: 150px;
  732. display: flex;
  733. align-items: center;
  734. }
  735. </style>