index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798
  1. <!-- eslint-disable vue/no-parsing-error -->
  2. <template>
  3. <div style="height: 100%">
  4. <div v-show="!secondId" class="tab5">
  5. <div class="insideTop">专题管理</div>
  6. <div class="obstruct"></div>
  7. <div class="content">
  8. <div class="search">
  9. <div class="btns">
  10. <div class="left">
  11. <el-button
  12. v-for="tab in level1Data.filter((item) => item.level === 1)"
  13. :type="Number(activeTopId) === tab.id ? 'primary' : ''"
  14. v-bind:key="tab.id"
  15. @click="handleLevelTopClick(tab.id)"
  16. >{{ tab.name }}
  17. </el-button>
  18. </div>
  19. <div class="right">
  20. <el-button @click="level1Modal = true">一级专题管理</el-button>
  21. <el-button
  22. @click="
  23. (level2ModalFormVisible = true) &&
  24. handleAllReset() &&
  25. (level2ModalForm.id = activeTopId)
  26. "
  27. >
  28. 新增二级专题
  29. </el-button>
  30. </div>
  31. </div>
  32. </div>
  33. <div class="table">
  34. <el-table :data="tableData" style="width: 100%" height="100%">
  35. <el-table-column prop="name" label="二级专题"></el-table-column>
  36. <el-table-column prop="thumb" label="封面">
  37. <template #default="{ row }">
  38. <img
  39. style="margin: 0 auto"
  40. class="thumb"
  41. :src="getImageURL(row.thumb)"
  42. alt=""
  43. />
  44. </template>
  45. </el-table-column>
  46. <el-table-column prop="sort" label="排序值"></el-table-column>
  47. <el-table-column label="操作">
  48. <!-- <template #default="{ row }">-->
  49. <template #default="{ row }">
  50. <el-button type="text" @click="handleVillageSettings(row.id)"
  51. >村落设置</el-button
  52. >
  53. <el-button type="text" @click="handleLevel2Edit(row.id)"
  54. >编辑</el-button
  55. >
  56. <el-popconfirm
  57. title="确定删除吗?"
  58. @confirm="handleLevel1Delete(row.id)"
  59. >
  60. <el-button slot="reference" type="text" style="padding: 0 5px"
  61. >删除</el-button
  62. >
  63. </el-popconfirm>
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. </div>
  68. <el-dialog
  69. :visible.sync="level1Modal"
  70. width="50%"
  71. destroy-on-close
  72. center
  73. >
  74. <div class="table">
  75. <el-table :data="level1Data" style="width: 100%" min-height="450px">
  76. <el-table-column prop="name" label="专题名称"></el-table-column>
  77. <el-table-column prop="name" label="排序值"></el-table-column>
  78. <el-table-column label="操作">
  79. <template #default="{ row }">
  80. <el-button type="text" @click="handleLevel1Edit(row.id)"
  81. >编辑</el-button
  82. >
  83. <el-popconfirm
  84. title="确定删除吗?"
  85. @confirm="handleLevel1Delete(row.id)"
  86. >
  87. <el-button
  88. slot="reference"
  89. type="text"
  90. style="padding: 0 5px"
  91. >删除</el-button
  92. >
  93. </el-popconfirm>
  94. </template>
  95. </el-table-column>
  96. </el-table>
  97. </div>
  98. <div slot="title" class="lv1-modal-header">
  99. <span>一级专题</span>
  100. <el-button type="primary" @click="level1ModalFormVisible = true"
  101. >新增</el-button
  102. >
  103. </div>
  104. <span slot="footer" class="dialog-footer">
  105. <el-button @click="level1Modal = false">取 消</el-button>
  106. <el-button type="primary" @click="level1Modal = false"
  107. >发 布</el-button
  108. >
  109. </span>
  110. </el-dialog>
  111. <el-dialog
  112. @close="cancelLevel1ModalForm"
  113. :visible.sync="level1ModalFormVisible"
  114. destroy-on-close
  115. width="30%"
  116. center
  117. >
  118. <div slot="title" class="lv1-modal-header">
  119. <span>新增</span>
  120. </div>
  121. <el-form
  122. ref="level1Form"
  123. label-position="right"
  124. label-width="80px"
  125. :model="level1ModalForm"
  126. :rules="level1ModalFormRules"
  127. >
  128. <el-form-item label="专题名称" prop="name">
  129. <el-input
  130. v-model="level1ModalForm.name"
  131. :maxLength="20"
  132. placeholder="请输入内容,最多20字"
  133. ></el-input>
  134. </el-form-item>
  135. <el-form-item label="排序值" prop="sort">
  136. <el-input-number
  137. controls-position="right"
  138. placeholder="请输入1~999的数字。数字越小,排序越靠前。"
  139. v-model="level1ModalForm.sort"
  140. ></el-input-number>
  141. </el-form-item>
  142. </el-form>
  143. <span slot="footer" class="dialog-footer">
  144. <el-button @click="cancelLevel1ModalForm()">取 消</el-button>
  145. <el-button type="primary" @click="handleLevel1Submit"
  146. >发 布</el-button
  147. >
  148. </span>
  149. </el-dialog>
  150. <!-- 二级专题管理 -->
  151. <el-dialog
  152. destroy-on-close
  153. :visible.sync="level2ModalFormVisible"
  154. @close="cancelLevel2ModalForm()"
  155. width="30%"
  156. center
  157. >
  158. <div slot="title" class="lv1-modal-header">
  159. <span>{{ level2ModalForm.id ? "编辑" : "新增" }}二级专题</span>
  160. </div>
  161. <el-form
  162. ref="level2Form"
  163. label-position="right"
  164. label-width="80px"
  165. :model="level2ModalForm"
  166. :rules="level1ModalFormRules"
  167. >
  168. <el-form-item label="专题名称" prop="name">
  169. <el-input
  170. v-model="level2ModalForm.name"
  171. placeholder="请输入内容,最多20字"
  172. :maxLength="20"
  173. ></el-input>
  174. </el-form-item>
  175. <el-form-item label="封面" prop="thumb">
  176. <el-upload
  177. action=""
  178. :class="{ isUplad: level2ModalForm.thumb }"
  179. :limit="1"
  180. :http-request="handleFileUpload"
  181. :before-upload="beforeFileUpload"
  182. list-type="picture-card"
  183. accept=".jpeg,.jpg,.png,.png"
  184. :file-list="level2ModalForm.filelist"
  185. :on-remove="handleFileRemove"
  186. >
  187. <i class="el-icon-plus"></i>
  188. <div slot="tip" class="el-upload__tip">
  189. 格式要求:支持png、jpg图片格式;最大支持5M,最多1张
  190. </div>
  191. </el-upload>
  192. </el-form-item>
  193. <el-form-item label="排序值" prop="sort">
  194. <el-input-number
  195. controls-position="right"
  196. placeholder="请输入1~999的数字。数字越小,排序越靠前。"
  197. v-model="level2ModalForm.sort"
  198. ></el-input-number>
  199. </el-form-item>
  200. </el-form>
  201. <span slot="footer" class="dialog-footer">
  202. <el-button @click="cancelLevel2ModalForm()">取 消</el-button>
  203. <el-button type="primary" @click="handleLevel2Submit"
  204. >发 布</el-button
  205. >
  206. </span>
  207. </el-dialog>
  208. </div>
  209. </div>
  210. <div v-if="secondId" class="tab5">
  211. <div class="insideTop">
  212. <span class="back" @click="secondId = null">
  213. <i class="el-icon-arrow-left"></i>返回 </span
  214. >村落设置
  215. </div>
  216. <div class="obstruct"></div>
  217. <div class="content">
  218. <div class="search">
  219. <div class="btns">
  220. <div class="left"></div>
  221. <div class="right">
  222. <el-button type="primary" @click="editVillage('add')"
  223. >新增</el-button
  224. >
  225. </div>
  226. </div>
  227. </div>
  228. <div class="table">
  229. <el-table :data="villageData" style="width: 100%" height="100%">
  230. <el-table-column prop="name" label="村落名称"></el-table-column>
  231. <el-table-column prop="thumb" label="封面">
  232. <template #default="{ row }">
  233. <img
  234. style="margin: 0 auto"
  235. class="thumb"
  236. :src="getImageURL(row.thumb)"
  237. alt=""
  238. />
  239. </template>
  240. </el-table-column>
  241. <el-table-column prop="remark" label="简介"></el-table-column>
  242. <el-table-column prop="link" label="跳转链接"></el-table-column>
  243. <el-table-column label="操作">
  244. <!-- <template #default="{ row }">-->
  245. <template #default="{ row }">
  246. <!-- <el-button type="text" @click="handleVillageSettings(row.id)"
  247. >村落设置</el-button
  248. > -->
  249. <el-button type="text" @click="handleVillageEdit(row.id)"
  250. >编辑</el-button
  251. >
  252. <el-popconfirm
  253. title="确定删除吗?"
  254. @confirm="handleVillageDelete(row.id)"
  255. >
  256. <el-button slot="reference" type="text" style="padding: 0 5px"
  257. >删除</el-button
  258. >
  259. </el-popconfirm>
  260. </template>
  261. </el-table-column>
  262. </el-table>
  263. </div>
  264. <el-dialog
  265. :visible.sync="showVillageForm"
  266. destroy-on-close
  267. width="30%"
  268. @close="cancelVillage"
  269. center
  270. >
  271. <div slot="title" class="lv1-modal-header">
  272. <span>{{ villageForm?.id ? "新增" : "新增" }}</span>
  273. </div>
  274. <el-form
  275. ref="villageForm"
  276. label-position="right"
  277. label-width="80px"
  278. :model="villageForm"
  279. :rules="villageFormRules"
  280. >
  281. <el-form-item label="村落名称" prop="name">
  282. <el-input
  283. v-model="villageForm.name"
  284. :maxLength="20"
  285. placeholder="请输入内容,最多20字"
  286. ></el-input>
  287. </el-form-item>
  288. <el-form-item label="封面" prop="thumb">
  289. <el-upload
  290. :class="{ isUplad: villageForm.thumb }"
  291. action=""
  292. :limit="1"
  293. :http-request="handleVillageFileUpload"
  294. :before-upload="beforeFileUpload"
  295. list-type="picture-card"
  296. accept=".jpeg,.jpg,.png"
  297. :file-list="villageForm.filelist"
  298. :on-remove="handleVillageFileRemove"
  299. >
  300. <i class="el-icon-plus"></i>
  301. <div slot="tip" class="el-upload__tip">
  302. 格式要求:支持png、jpg图片格式;最大支持5M,最多1张
  303. </div>
  304. </el-upload>
  305. </el-form-item>
  306. <el-form-item label="简介" prop="remark">
  307. <el-input
  308. type="textarea"
  309. :maxLength="800"
  310. placeholder="请输入内容,最多800字"
  311. v-model="villageForm.remark"
  312. ></el-input>
  313. </el-form-item>
  314. <el-form-item label="跳转链接" prop="link">
  315. <el-input
  316. :maxLength="200"
  317. v-model="villageForm.link"
  318. placeholder="请输入内容,最多200字"
  319. ></el-input>
  320. </el-form-item>
  321. <el-form-item label="排序值" prop="sort">
  322. <el-input-number
  323. controls-position="right"
  324. placeholder="请输入1~999的数字。数字越小,排序越靠前。"
  325. v-model="villageForm.sort"
  326. ></el-input-number>
  327. </el-form-item>
  328. </el-form>
  329. <span slot="footer" class="dialog-footer">
  330. <el-button @click="cancelVillage">取 消</el-button>
  331. <el-button type="primary" @click="handleVillageSubmit"
  332. >发 布</el-button
  333. >
  334. </span>
  335. </el-dialog>
  336. </div>
  337. </div>
  338. </div>
  339. </template>
  340. <script>
  341. import {
  342. getTopList,
  343. getSecondList,
  344. addEntity,
  345. deleteEntity,
  346. getEntity,
  347. fileUpload
  348. } from '@/apis/tab5'
  349. export default {
  350. name: 'tab5',
  351. components: {},
  352. data () {
  353. // 这里存放数据
  354. return {
  355. secondId: null,
  356. activeTopId: '1',
  357. name: '',
  358. villageData: [],
  359. tableData: [],
  360. level1Data: [],
  361. level1Modal: false,
  362. level1ModalFormVisible: false,
  363. level1ModalForm: {},
  364. villageForm: {},
  365. showVillageForm: false,
  366. level1ModalFormRules: {
  367. name: [{ required: true, message: '请输入名称', trigger: 'change' }],
  368. sort: [{ required: true, message: '请输入排序值', trigger: 'change' }],
  369. thumb: [{ required: true, message: '请上传封面图' }]
  370. },
  371. villageFormRules: {
  372. name: [{ required: true, message: '请输入名称', trigger: 'change' }],
  373. remark: [{ required: true, message: '请输入简介', trigger: 'change' }],
  374. link: [{ required: true, message: '请输入链接', trigger: 'change' }],
  375. sort: [{ required: true, message: '请输入排序值', trigger: 'change' }],
  376. thumb: [{ required: true, message: '请上传封面图' }]
  377. },
  378. level2ModalFormVisible: false,
  379. level2ModalForm: {
  380. filelist: []
  381. }
  382. }
  383. },
  384. // 监听属性 类似于data概念
  385. computed: {
  386. getImageURL: (url) => {
  387. return (url) => {
  388. const domain =
  389. process.env.NODE_ENV === 'development'
  390. ? 'http://project.4dage.com:8016'
  391. : ''
  392. return domain + url
  393. }
  394. }
  395. },
  396. // 监控data中的数据变化
  397. watch: {},
  398. // 方法集合
  399. methods: {
  400. cancelLevel1ModalForm () {
  401. this.level1ModalFormVisible = false
  402. this.handleAllReset()
  403. },
  404. cancelLevel2ModalForm () {
  405. this.level2ModalFormVisible = false
  406. this.handleAllReset()
  407. },
  408. cancelVillage () {
  409. this.showVillageForm = false
  410. this.villageForm = {
  411. name: '',
  412. thumb: '',
  413. remark: '',
  414. link: '',
  415. fileList: [],
  416. sort: 1
  417. }
  418. },
  419. editVillage (add = false) {
  420. if (add) {
  421. this.villageForm = {
  422. name: '',
  423. thumb: '',
  424. remark: '',
  425. link: '',
  426. fileList: [],
  427. sort: 1
  428. }
  429. setTimeout(() => {
  430. this.showVillageForm = true
  431. }, 0)
  432. }
  433. },
  434. async handleVillageSettings (id) {
  435. this.secondId = id
  436. this.villageData = []
  437. this.getVillageList()
  438. },
  439. async getVillageList () {
  440. const list = await getSecondList(this.secondId)
  441. this.villageData = list.data
  442. },
  443. handleVillageSubmit () {
  444. this.$refs.villageForm.validate(async (valid) => {
  445. if (valid) {
  446. const params = {
  447. parentId: this.secondId,
  448. level: 3,
  449. ...this.villageForm
  450. }
  451. const res = await addEntity(params)
  452. if (res.code === 0) {
  453. this.$message({
  454. message: '上线发布成功',
  455. type: 'success'
  456. })
  457. this.cancelVillage()
  458. await this.getVillageList()
  459. } else {
  460. this.$message({
  461. message: res.msg,
  462. type: 'error'
  463. })
  464. // this.villageForm = null
  465. // this.showVillageForm = false
  466. }
  467. } else {
  468. console.error('error submit!!')
  469. return false
  470. }
  471. })
  472. },
  473. handleClick () {},
  474. handleLevelTopClick (id) {
  475. this.activeTopId = id
  476. this.handleRefreshList()
  477. },
  478. async handleRefreshLevel1List () {
  479. const list = await getTopList()
  480. if (list.data.length > 0) {
  481. this.activeTopId = list.data[0].id
  482. await this.handleRefreshList()
  483. this.level1Data = list.data
  484. }
  485. },
  486. async handleRefreshList () {
  487. const list = await getSecondList(this.activeTopId)
  488. // console.log('handleRefreshList', list)
  489. this.tableData = list.data
  490. },
  491. handleLevel1Submit () {
  492. this.$refs.level1Form.validate(async (valid) => {
  493. if (valid) {
  494. const params = {
  495. name: this.level1ModalForm.name,
  496. sort: this.level1ModalForm.sort,
  497. level: 1
  498. }
  499. if (this.level1ModalForm.id) {
  500. params.id = this.level1ModalForm.id
  501. }
  502. const res = await addEntity(params)
  503. await this.handleRefreshLevel1List()
  504. this.level1ModalFormVisible = false
  505. if (res.code === 0) {
  506. this.$message({
  507. message: '上线发布成功',
  508. type: 'success'
  509. })
  510. } else {
  511. this.$message({
  512. message: res.msg,
  513. type: 'error'
  514. })
  515. }
  516. } else {
  517. console.log('error submit!!')
  518. return false
  519. }
  520. })
  521. },
  522. async handleLevel1Delete (id) {
  523. const res = await deleteEntity(id)
  524. if (res.code === 0) {
  525. this.$message({
  526. message: '删除成功!',
  527. type: 'success'
  528. })
  529. } else {
  530. this.$message({
  531. message: res.msg,
  532. type: 'error'
  533. })
  534. }
  535. await this.handleRefreshLevel1List()
  536. },
  537. async handleVillageDelete (id) {
  538. const res = await deleteEntity(id)
  539. if (res.code === 0) {
  540. this.$message({
  541. message: '删除成功!',
  542. type: 'success'
  543. })
  544. } else {
  545. this.$message({
  546. message: res.msg,
  547. type: 'error'
  548. })
  549. }
  550. await this.getVillageList()
  551. },
  552. async handleVillageEdit (id) {
  553. this.showVillageForm = true
  554. const res = await getEntity(id)
  555. const domain =
  556. process.env.NODE_ENV === 'development'
  557. ? 'http://project.4dage.com:8016'
  558. : ''
  559. this.villageForm = {
  560. id: res.data.id,
  561. name: res.data.name,
  562. thumb: res.data.thumb,
  563. remark: res.data.remark,
  564. link: res.data.link,
  565. sort: res.data.sort,
  566. filelist: [{ name: 'food.jpg', url: domain + res.data.thumb }]
  567. }
  568. console.log('res', res)
  569. },
  570. async handleLevel1Edit (id) {
  571. this.level1ModalFormVisible = true
  572. const res = await getEntity(id)
  573. this.level1ModalForm = {
  574. id: id,
  575. name: res.data.name,
  576. sort: res.data.sort
  577. }
  578. console.log('res', res)
  579. },
  580. handleFileRemove () {
  581. this.level2ModalForm.thumb = ''
  582. },
  583. async handleFileUpload ({ file }) {
  584. const res = await fileUpload({
  585. file: file,
  586. type: 'thumb'
  587. })
  588. this.level2ModalForm.thumb = res.data.filePath
  589. },
  590. handleVillageFileRemove () {
  591. this.villageForm.thumb = ''
  592. },
  593. async handleVillageFileUpload ({ file }) {
  594. const res = await fileUpload({
  595. file: file,
  596. type: 'thumb'
  597. })
  598. console.log('res', res.data.filePath)
  599. this.villageForm.thumb = res.data.filePath
  600. },
  601. beforeFileUpload (file) {
  602. const isLt2M = file.size / 1024 / 1024 < 5
  603. const isFormat =
  604. file.type === 'image/jpeg' ||
  605. file.type === 'image/jpg' ||
  606. file.type === 'image/png'
  607. if (!isFormat) {
  608. this.$message.error('支持png、jpg格式!')
  609. }
  610. if (!isLt2M) {
  611. this.$message.error('大小不能超过 5MB!')
  612. }
  613. return isLt2M && isFormat
  614. },
  615. handleLevel2Submit () {
  616. this.$refs.level2Form.validate(async (valid) => {
  617. if (valid) {
  618. const params = {
  619. name: this.level2ModalForm.name,
  620. sort: this.level2ModalForm.sort,
  621. level: 2,
  622. parentId: this.activeTopId,
  623. thumb: this.level2ModalForm.thumb
  624. }
  625. if (this.level2ModalForm.id) {
  626. params.id = this.level2ModalForm.id
  627. }
  628. const res = await addEntity(params)
  629. await this.handleRefreshList()
  630. this.level2ModalFormVisible = false
  631. if (res.code === 0) {
  632. this.$message({
  633. message: '上线发布成功',
  634. type: 'success'
  635. })
  636. } else {
  637. this.$message({
  638. message: res.msg,
  639. type: 'error'
  640. })
  641. }
  642. this.level1ModalForm = {}
  643. } else {
  644. console.log('error submit!!')
  645. return false
  646. }
  647. })
  648. },
  649. async handleLevel2Edit (id) {
  650. console.log(id)
  651. this.level2ModalFormVisible = true
  652. const res = await getEntity(id)
  653. const domain =
  654. process.env.NODE_ENV === 'development'
  655. ? 'http://project.4dage.com:8016'
  656. : ''
  657. this.level2ModalForm = {
  658. id: id,
  659. name: res.data.name,
  660. sort: res.data.sort,
  661. thumb: res.data.thumb,
  662. filelist: [{ name: 'food.jpg', url: domain + res.data.thumb }]
  663. }
  664. },
  665. handleAllReset () {
  666. this.level1ModalForm = {
  667. id: '',
  668. name: '',
  669. sort: ''
  670. }
  671. this.level2ModalForm = {
  672. id: '',
  673. name: '',
  674. thumb: '',
  675. sort: '',
  676. filelist: []
  677. }
  678. }
  679. },
  680. // 生命周期 - 创建完成(可以访问当前this实例)
  681. async created () {
  682. // const res = await villageList()
  683. // this.tableData = res.data
  684. },
  685. // 生命周期 - 挂载完成(可以访问DOM元素)
  686. async mounted () {
  687. await this.handleRefreshLevel1List()
  688. },
  689. beforeCreate () {}, // 生命周期 - 创建之前
  690. beforeMount () {}, // 生命周期 - 挂载之前
  691. beforeUpdate () {}, // 生命周期 - 更新之前
  692. updated () {}, // 生命周期 - 更新之后
  693. beforeDestroy () {}, // 生命周期 - 销毁之前
  694. destroyed () {}, // 生命周期 - 销毁完成
  695. activated () {} // 如果页面有keep-alive缓存功能,这个函数会触发
  696. }
  697. </script>
  698. <style lang="less" scoped>
  699. .tab5 {
  700. width: 100%;
  701. height: 100%;
  702. .content {
  703. padding: 0 20px;
  704. height: calc(100% - 52px);
  705. .search {
  706. height: 70px;
  707. display: flex;
  708. align-items: center;
  709. // border-bottom: 1px solid black;
  710. .btns {
  711. display: flex;
  712. width: 100%;
  713. flex-direction: row;
  714. justify-content: space-between;
  715. }
  716. /deep/ .el-input {
  717. width: 300px;
  718. margin-right: 12px;
  719. }
  720. /deep/ .el-input__inner {
  721. padding-right: 45px;
  722. }
  723. }
  724. .table {
  725. height: calc(100% - 70px);
  726. /deep/ .el-table {
  727. overflow-y: auto;
  728. }
  729. /deep/ .el-table .cell {
  730. padding: 3px 0;
  731. }
  732. /deep/ .el-tabs__header {
  733. min-height: 108px;
  734. .el-tabs__nav-wrap {
  735. height: 100%;
  736. }
  737. }
  738. }
  739. }
  740. /deep/ .el-input-number {
  741. width: 400px;
  742. text-align: left;
  743. }
  744. .lv1-modal-header {
  745. display: flex;
  746. align-items: center;
  747. gap: 0 30px;
  748. span {
  749. font-size: 24px;
  750. }
  751. }
  752. .thumb {
  753. // max-height: 100px;
  754. // width: auto;
  755. width: 100px; /* 最大宽度 */
  756. height: 100px; /* 最大高度 */
  757. object-fit: contain;
  758. // width: auto; /* 宽度自适应 */
  759. // height: auto; /* 高度自适应 */
  760. display: block; /* 避免底部空白 */
  761. }
  762. }
  763. .back {
  764. margin-right: 10px;
  765. cursor: pointer;
  766. }
  767. .isUplad {
  768. /deep/ div[tabindex="0"] {
  769. display: none;
  770. }
  771. }
  772. </style>