ManageUser.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  1. <script setup>
  2. import { computed, onMounted, onUnmounted, watch, ref } from "vue";
  3. import { useRouter } from 'vue-router';
  4. import { Search } from '@element-plus/icons-vue';
  5. import { ElMessage } from 'element-plus';
  6. const router = useRouter();
  7. // let state = ref({
  8. // organizationList: [],
  9. // userListParams: {
  10. // keyword: '',
  11. // page: 1,
  12. // limit: 5,
  13. // },
  14. // userList: [],
  15. // userTotal: 0,
  16. // showDialog: false,
  17. // ids: [],
  18. // showDel: false,
  19. // });
  20. let state = ref({
  21. // 全部班级列表
  22. "organizationList": [
  23. {
  24. "orgType": {
  25. "code": "class",
  26. "name": "专业班级"
  27. },
  28. "id": 656845035987013,
  29. "name": "2025级通讯班",
  30. "pid": 656843881177157,
  31. "code": null,
  32. "type": "class",
  33. "weigh": 0
  34. }
  35. ],
  36. // 用户提交分页查询数据
  37. "userListParams": {
  38. // 搜索的内容
  39. "keyword": "",
  40. // 第几页
  41. "page": 1,
  42. // 每页显示多少数据
  43. "limit": 5
  44. },
  45. // 具体分页的数据
  46. "userList": [
  47. {
  48. "id": 661434193309765,
  49. "level": 0,
  50. "orgName": "信息论与编码基础教研组",
  51. "zoneName": null,
  52. "rolesName": [
  53. "教师"
  54. ],
  55. "createTime": "2025-04-03 10:42:39",
  56. "name": "教师测试账号",
  57. "code": null,
  58. "username": "teacher",
  59. "phone": null,
  60. "duty": null,
  61. "photo": null,
  62. "orgId": 656844968038469,
  63. "roles": [
  64. 661429664665669
  65. ],
  66. "email": null,
  67. "status": 1,
  68. "type": 1
  69. },
  70. {
  71. "id": 668917601919045,
  72. "level": 0,
  73. "orgName": "2025级通讯班",
  74. "zoneName": null,
  75. "rolesName": [
  76. "学生"
  77. ],
  78. "createTime": "2025-04-24 14:12:43",
  79. "name": "刘瑾见",
  80. "code": "110220",
  81. "username": "14367845673",
  82. "phone": null,
  83. "duty": null,
  84. "photo": null,
  85. "orgId": 656845035987013,
  86. "roles": [
  87. 661441664479301
  88. ],
  89. "email": null,
  90. "status": 1,
  91. "type": 0
  92. },
  93. {
  94. "id": 668916601290821,
  95. "level": 0,
  96. "orgName": "2025级通讯班",
  97. "zoneName": null,
  98. "rolesName": [
  99. "学生"
  100. ],
  101. "createTime": "2025-04-24 14:08:39",
  102. "name": "王伟",
  103. "code": "1234525",
  104. "username": "13234367546",
  105. "phone": null,
  106. "duty": null,
  107. "photo": null,
  108. "orgId": 656845035987013,
  109. "roles": [
  110. 661441664479301
  111. ],
  112. "email": null,
  113. "status": 1,
  114. "type": 0
  115. },
  116. {
  117. "id": 668923933716550,
  118. "level": 0,
  119. "orgName": "2025级通讯班",
  120. "zoneName": null,
  121. "rolesName": [
  122. "学生"
  123. ],
  124. "createTime": "2025-04-24 14:38:29",
  125. "name": "威威",
  126. "code": "25242345",
  127. "username": "1431163",
  128. "phone": null,
  129. "duty": null,
  130. "photo": null,
  131. "orgId": 656845035987013,
  132. "roles": [
  133. 661441664479301
  134. ],
  135. "email": null,
  136. "status": 1,
  137. "type": 0
  138. },
  139. {
  140. "id": 661442553135174,
  141. "level": 0,
  142. "orgName": "2025级通讯班",
  143. "zoneName": null,
  144. "rolesName": [
  145. "学生"
  146. ],
  147. "createTime": "2025-04-03 11:16:40",
  148. "name": "学生测试账号",
  149. "code": null,
  150. "username": "student",
  151. "phone": null,
  152. "duty": null,
  153. "photo": {
  154. "name": "sl.jpg",
  155. "url": "/upload/Files/2025/04/28/0b326e2784ba73f56ef9f40aae86695c.jpg"
  156. },
  157. "orgId": 656845035987013,
  158. "roles": [
  159. 661441664479301
  160. ],
  161. "email": null,
  162. "status": 1,
  163. "type": 2
  164. }
  165. ],
  166. // 用户总数量
  167. "userTotal": 6,
  168. // 是否弹出添加账号UI
  169. "showDialog": false,
  170. // 当前分页列表,多选的数据
  171. "ids": [],
  172. "showDel": false
  173. });
  174. // 用于表单验证规则必须要的对象
  175. const ruleFormRef = ref();
  176. /**
  177. * 添加账号,最后提交的数据
  178. */
  179. const userAddParams = ref({
  180. name: '',
  181. username: '',
  182. password: '123456',
  183. orgId: '',
  184. roles: [],
  185. });
  186. /**
  187. * 添加账号,字段相关验证规则
  188. */
  189. const userAddRules = ref({
  190. name: [{ required: true, message: '请填写姓名', trigger: 'blur' }],
  191. username: [{ required: true, message: '请填写学号', trigger: 'blur' }],
  192. orgId: [
  193. {
  194. required: true,
  195. message: '请选择班级',
  196. trigger: 'change',
  197. },
  198. ],
  199. })
  200. /**
  201. * 查找分页数据
  202. */
  203. const pageUpdateEvent = () => {
  204. console.log(
  205. "查找分页数据 pageUpdateEvent", state.value.userListParams
  206. );
  207. }
  208. /**
  209. * 弹出添加账号UI
  210. */
  211. const btnAddStudent = (formEl) => {
  212. state.value.showDialog = true;
  213. if (!formEl) {
  214. return;
  215. }
  216. formEl.resetFields();
  217. }
  218. /**
  219. * 触发搜索账号逻辑
  220. */
  221. const btnSearchName = () => {
  222. pageUpdateEvent();
  223. }
  224. /**
  225. * 更新选中的班级逻辑
  226. * @param val
  227. */
  228. const classChange = (val) => {
  229. state.value.userListParams.orgId = val;
  230. pageUpdateEvent();
  231. }
  232. /**
  233. * 上一页,下一页改变
  234. */
  235. const handleSizeChange = (val) => {
  236. // 重新查找分页数据
  237. pageUpdateEvent();
  238. }
  239. /**
  240. * 上一页,下一页改变
  241. */
  242. const handleCurrentChange = (val) => {
  243. // 重新查找分页数据
  244. pageUpdateEvent();
  245. }
  246. /**
  247. * 分页多选,更新多选的相关数据
  248. * @param res
  249. */
  250. const selectionChange = (res) => {
  251. state.value.ids = [];
  252. res.forEach((item) => {
  253. // state.value.ids.push(item.id);
  254. state.value.ids.push(item);
  255. });
  256. console.log("分页多选,更新多选的相关数据", state.value.ids);
  257. }
  258. /**
  259. * 添加账号的时候,选中的班级的时候
  260. * @param val
  261. */
  262. const selectClass = (val) => {
  263. userAddParams.value.orgId = val;
  264. }
  265. /**
  266. * 添加账号 点击提交
  267. * @param formEl
  268. */
  269. const submitForm = async (formEl) => {
  270. if (!formEl) return
  271. await formEl.validate((valid, fields) => {
  272. if (valid) {
  273. console.log(
  274. "userAddParams", userAddParams.value
  275. );
  276. // 接口请求完成,隐藏模态框
  277. state.value.showDialog = false;
  278. } else {
  279. // console.log('error submit!', fields)
  280. }
  281. })
  282. }
  283. /**
  284. * 删除选中分页的某个数据
  285. * @param res
  286. */
  287. const btnDel = (res) => {
  288. console.log(
  289. "删除选中分页的某个数据", res
  290. );
  291. ElMessage({
  292. type: 'success',
  293. message: '删除成功',
  294. });
  295. // 重新查找分页数据
  296. pageUpdateEvent();
  297. }
  298. /**
  299. * 弹出批量删除模态框逻辑
  300. */
  301. const btnShowDel = () => {
  302. if (state.value.ids && state.value.ids.length > 0) {
  303. state.value.showDel = true
  304. }
  305. }
  306. /**
  307. * 开始批量删除处理
  308. */
  309. const btnBatchDel = () => {
  310. console.log(
  311. "开始批量删除处理", state.value.ids
  312. );
  313. ElMessage({
  314. type: 'success',
  315. message: '删除成功',
  316. });
  317. // 重新查找分页数据
  318. pageUpdateEvent();
  319. // 批量选中的列表重置
  320. state.value.ids = [];
  321. // 隐藏模态框
  322. state.value.showDel = false;
  323. }
  324. </script>
  325. <template>
  326. <div class="ManageUser">
  327. <div class="content commonsScrollbar">
  328. <div class="contentTitle">
  329. <div class="contentTitle-line"></div>
  330. <div class="contentTitle-text">账号管理</div>
  331. </div>
  332. <div class="contentRow">
  333. <div class="rowLeft">
  334. <div class="rowSelect">
  335. <el-select
  336. v-model="state.userListParams.orgId"
  337. clearable
  338. placeholder="全部班级"
  339. size="large"
  340. style="width: 15rem"
  341. @change="classChange"
  342. >
  343. <el-option v-for="item in state.organizationList" :key="item.id" :label="item.name" :value="item.id" />
  344. </el-select>
  345. </div>
  346. <div class="rowBtn rowBtn1" @click="btnAddStudent(ruleFormRef)">
  347. <img src="./assets/img/manageUser/add.svg" alt="" />
  348. <span class="rowBtn-text rowBtn-text1">添加账号</span>
  349. </div>
  350. <div class="rowBtn rowBtn2">
  351. <img src="./assets/img/manageUser/download.svg" alt="" />
  352. <span class="rowBtn-text rowBtn-text2">模板下载</span>
  353. </div>
  354. <div class="rowBtn rowBtn1">
  355. <img src="./assets/img/manageUser/import.svg" alt="" />
  356. <span class="rowBtn-text rowBtn-text1">批量导入</span>
  357. </div>
  358. <div class="rowBtn rowBtn1">
  359. <img src="./assets/img/manageUser/export.svg" alt="" />
  360. <span class="rowBtn-text rowBtn-text1">批量导出</span>
  361. </div>
  362. <div class="rowBtn rowBtn3" @click="btnShowDel">
  363. <img src="./assets/img/manageUser/delete.svg" alt="" />
  364. <span class="rowBtn-text rowBtn-text3">批量删除</span>
  365. </div>
  366. </div>
  367. <div class="rowRight">
  368. <el-input
  369. v-model="state.userListParams.keyword"
  370. :prefix-icon="Search"
  371. clearable
  372. style="width: 17rem; height: 3rem"
  373. placeholder="搜索账号/姓名"
  374. @clear="btnSearchName"
  375. />
  376. <div class="rowSearch" @click="btnSearchName">搜索</div>
  377. </div>
  378. </div>
  379. <div class="contentTable commonsScrollbar">
  380. <el-table :data="state.userList" style="width: 100%" @selection-change="selectionChange">
  381. <el-table-column align="center" type="selection" width="110" />
  382. <el-table-column prop="name" label="账号" />
  383. <el-table-column prop="name" label="姓名" />
  384. <el-table-column prop="orgName" label="班级" />
  385. <el-table-column prop="orgName" label="状态" />
  386. <el-table-column label="操作">
  387. <template #default="scope">
  388. <el-button link type="primary" @click="btnDetail(scope.row)">详情</el-button>
  389. <el-popconfirm :title="`你确定删除${scope.row.name}吗?`" @confirm="btnDel(scope.row)">
  390. <template #reference>
  391. <el-button link type="danger" style="margin-left: 3rem">移除</el-button>
  392. </template>
  393. </el-popconfirm>
  394. </template>
  395. </el-table-column>
  396. </el-table>
  397. </div>
  398. <el-pagination
  399. class="classPagination"
  400. v-model:current-page="state.userListParams.page"
  401. v-model:page-size="state.userListParams.limit"
  402. :page-sizes="[10, 20, 50, 100]"
  403. background
  404. :layout="' ->, total,prev, pager, next, jumper'"
  405. :total="state.userTotal"
  406. @size-change="handleSizeChange"
  407. @current-change="handleCurrentChange"
  408. >
  409. </el-pagination>
  410. </div>
  411. <!-- 添加账号模态框 -->
  412. <el-dialog v-model="state.showDialog" class="dialog">
  413. <template #header>
  414. <div class="dialog-title">添加账号</div>
  415. </template>
  416. <div class="dialogBody">
  417. <el-form ref="ruleFormRef" :model="userAddParams" :rules="userAddRules">
  418. <el-form-item label="姓名" prop="name">
  419. <el-input v-model="userAddParams.name" clearable placeholder="请填写姓名"></el-input>
  420. </el-form-item>
  421. <el-form-item label="学号" prop="username">
  422. <el-input v-model="userAddParams.username" type="number" clearable placeholder="请填写学号"></el-input>
  423. </el-form-item>
  424. <el-form-item label="学校" prop="orgId">
  425. <el-select v-model="userAddParams.orgId" clearable placeholder="请选择学校" @change="selectClass">
  426. <el-option v-for="item in state.organizationList" :key="item.id" :label="item.name" :value="item.id" />
  427. </el-select>
  428. </el-form-item>
  429. <el-form-item label="班级" prop="orgId">
  430. <el-select v-model="userAddParams.orgId" clearable placeholder="请选择班级" @change="selectClass">
  431. <el-option v-for="item in state.organizationList" :key="item.id" :label="item.name" :value="item.id" />
  432. </el-select>
  433. </el-form-item>
  434. </el-form>
  435. <div class="dialogFoot">
  436. <el-button color="#EAEAEA" @click="state.showDialog = false" style="margin-right: 0.6rem">取消</el-button>
  437. <el-button color="#2C68FF" @click="submitForm(ruleFormRef)">确认</el-button>
  438. </div>
  439. </div>
  440. </el-dialog>
  441. <!-- 用于批量删除模态框 -->
  442. <el-dialog v-model="state.showDel" width="600" class="del">
  443. <template #header>
  444. <div style="display: flex; align-items: center">
  445. <img class="del-img" src="./assets/img/manageUser/error-line.svg" alt="" />
  446. <div class="del-name">批量删除</div>
  447. </div>
  448. </template>
  449. <span class="delBody">是否确认删除学生信息?删除后不可恢复!</span>
  450. <template #footer>
  451. <div class="dialog-footer">
  452. <el-button @click="state.showDel = false">取消</el-button>
  453. <el-button type="primary" @click="btnBatchDel">删除</el-button>
  454. </div>
  455. </template>
  456. </el-dialog>
  457. </div>
  458. </template>
  459. <style lang="scss" scoped>
  460. @use './css/commonsScrollbar.scss';
  461. .ManageUser * {
  462. -moz-user-select: none;
  463. -webkit-user-select: none;
  464. -ms-user-select: none;
  465. -khtml-user-select: none;
  466. user-select: none;
  467. box-sizing:border-box;
  468. -moz-box-sizing:border-box; /* Firefox */
  469. -webkit-box-sizing:border-box; /* Safari */
  470. }
  471. .ManageUser {
  472. position: relative;
  473. z-index: 0;
  474. width: 100%;
  475. height: 100%;
  476. top: 0px;
  477. left: 0px;
  478. background-color: #ffffff;
  479. .content {
  480. position: relative;
  481. width: 100%;
  482. height: 100%;
  483. border-radius: 1rem;
  484. background: #ffffff;
  485. padding: 2rem 4rem 2rem 3rem;
  486. box-sizing: border-box;
  487. .contentTitle {
  488. padding: 0 0.5rem;
  489. box-sizing: border-box;
  490. display: flex;
  491. align-items: center;
  492. .contentTitle-line {
  493. width: 0.35rem;
  494. height: 2rem;
  495. background: #2c68ff;
  496. border-radius: 0.85rem;
  497. }
  498. .contentTitle-text {
  499. font-weight: bold;
  500. font-size: 1.8rem;
  501. color: #373737;
  502. margin-left: 1.4rem;
  503. }
  504. }
  505. .contentRow {
  506. margin-top: 2.8rem;
  507. padding: 0 1.5rem 0 1rem;
  508. box-sizing: border-box;
  509. display: flex;
  510. align-items: center;
  511. justify-content: space-between;
  512. .rowLeft {
  513. display: flex;
  514. align-items: center;
  515. .rowSelect {
  516. :deep(.el-select__wrapper) {
  517. height: 3rem;
  518. font-size: 1.1rem;
  519. min-height: 0;
  520. border-radius: 0.57rem;
  521. }
  522. }
  523. .rowBtn {
  524. cursor: pointer;
  525. width: 8.8rem;
  526. height: 3rem;
  527. border-radius: 0.57rem;
  528. display: flex;
  529. align-items: center;
  530. justify-content: center;
  531. margin-left: 2rem;
  532. img {
  533. width: 1.5rem;
  534. height: 1.5rem;
  535. }
  536. .rowBtn-text {
  537. font-size: 1.15rem;
  538. margin-left: 0.7rem;
  539. }
  540. .rowBtn-text1 {
  541. color: #3d7cff;
  542. }
  543. .rowBtn-text2 {
  544. color: #d8a216;
  545. }
  546. .rowBtn-text3 {
  547. color: #e84d4d;
  548. }
  549. }
  550. .rowBtn1 {
  551. background: #e5eeff;
  552. &:hover {
  553. background: #edf3ff;
  554. }
  555. }
  556. .rowBtn2 {
  557. background: rgba(214, 154, 1, 0.1);
  558. &:hover {
  559. background: #f4e5bd;
  560. }
  561. }
  562. .rowBtn3 {
  563. background: rgba(232, 77, 77, 0.05);
  564. &:hover {
  565. background: #fad4d4;
  566. }
  567. }
  568. }
  569. .rowRight {
  570. display: flex;
  571. :deep(.el-input__wrapper) {
  572. font-size: 1rem;
  573. border-radius: 0.57rem;
  574. }
  575. .rowSearch {
  576. cursor: pointer;
  577. width: 3.9rem;
  578. height: 3rem;
  579. background: #3d7cff;
  580. border-radius: 0.57rem;
  581. font-size: 1.1rem;
  582. color: #ffffff;
  583. display: flex;
  584. align-items: center;
  585. justify-content: center;
  586. margin-left: 0.7rem;
  587. &:hover {
  588. background: #77a3ff;
  589. }
  590. }
  591. }
  592. }
  593. .contentTable {
  594. margin-top: 2.3rem;
  595. height: 36rem;
  596. :deep(tr) {
  597. border-radius: 0.57rem;
  598. }
  599. :deep(th) {
  600. background: #f5f7fa;
  601. height: 5rem;
  602. font-size: 1.4rem;
  603. color: #333746;
  604. font-weight: 500;
  605. }
  606. :deep(td) {
  607. height: 5rem;
  608. font-size: 1.2rem;
  609. color: #333333;
  610. }
  611. :deep(.cell) {
  612. height: 2rem;
  613. }
  614. :deep(.el-checkbox) {
  615. --el-checkbox-input-height: 2rem;
  616. --el-checkbox-input-width: 2rem;
  617. --el-checkbox-border-radius: 0.28rem;
  618. // border: 1px solid #cad2d8;
  619. }
  620. :deep(.el-checkbox__inner:after) {
  621. height: 1.07rem;
  622. left: 0.64rem;
  623. top: 0.21rem;
  624. width: 0.5rem;
  625. }
  626. :deep(.el-checkbox__inner::before) {
  627. top: 0.85rem;
  628. }
  629. :deep(.el-button) {
  630. font-size: 1.2rem;
  631. }
  632. }
  633. :deep(.classPagination) {
  634. .el-pagination__rightwrapper {
  635. justify-content: center;
  636. .el-pagination__total {
  637. color: #000000;
  638. }
  639. .btn-prev,
  640. .btn-next {
  641. background: #f7f7f7;
  642. color: #000000;
  643. border-radius: 1rem;
  644. }
  645. .number {
  646. background: #f7f7f7;
  647. color: #000000;
  648. border-radius: 0.5rem;
  649. }
  650. .is-active {
  651. background: #2c68ff;
  652. color: #ffffff;
  653. }
  654. .el-pagination__jump {
  655. color: #000000;
  656. .el-pagination__editor.el-input {
  657. width: 4.57rem;
  658. .el-input__wrapper {
  659. border-radius: 1rem;
  660. }
  661. }
  662. }
  663. }
  664. }
  665. }
  666. :deep(.dialog) {
  667. width: 55rem;
  668. padding: 0;
  669. border-radius: 1.1rem;
  670. .el-dialog__header {
  671. padding: 0px;
  672. margin: 0px;
  673. }
  674. .dialog-title {
  675. // width: 55rem;
  676. width: 100%;
  677. height: 5.9rem;
  678. background: #2c68ff;
  679. font-size: 1.8rem;
  680. color: #ffffff;
  681. display: flex;
  682. align-items: center;
  683. border-radius: 1.1rem 1.1rem 0 0;
  684. padding-left: 4rem;
  685. box-sizing: border-box;
  686. }
  687. .el-dialog__headerbtn {
  688. font-size: 1.7rem;
  689. width: 3.57rem;
  690. height: 3.57rem;
  691. top: 1rem;
  692. right: 1rem;
  693. .el-dialog__close {
  694. color: #ffffff;
  695. font-size: 3.7rem;
  696. }
  697. }
  698. .dialogBody {
  699. padding: 0.8rem 8rem 3.5rem 6.7rem;
  700. box-sizing: border-box;
  701. .el-form-item {
  702. align-items: center;
  703. margin-bottom: 2rem;
  704. }
  705. .el-form-item__label {
  706. font-size: 1.2rem;
  707. color: #000000;
  708. padding-right: 2rem;
  709. }
  710. .el-input {
  711. height: 3.7rem;
  712. --el-input-bg-color: #efefef;
  713. font-size: 1.2rem;
  714. --el-input-border-radius: 0.57rem;
  715. --el-input-border-color: #efefef;
  716. --el-input-focus-border-color: #efefef;
  717. --el-input-hover-border-color: #efefef;
  718. .el-input__wrapper {
  719. padding: 0 2rem;
  720. }
  721. }
  722. .el-select {
  723. .el-select__wrapper {
  724. height: 3.7rem;
  725. background-color: #efefef;
  726. font-size: 1.2rem;
  727. border-radius: 0.57rem;
  728. // box-shadow: 0 0 0 1px #efefef inset;
  729. padding: 0 2rem;
  730. .el-select__caret {
  731. color: #555555;
  732. }
  733. }
  734. }
  735. .dialogFoot {
  736. display: flex;
  737. justify-content: end;
  738. margin-top: 4rem;
  739. .el-button {
  740. width: 8.5rem;
  741. height: 3.2rem;
  742. border-radius: 0.57rem;
  743. font-size: 1.2rem;
  744. }
  745. }
  746. }
  747. }
  748. :deep(.del) {
  749. .del-img {
  750. width: 1.5rem;
  751. height: 1.5rem;
  752. margin-right: 0.3rem;
  753. }
  754. .del-name {
  755. font-size: 1.2rem;
  756. color: #e84d4d;
  757. }
  758. .el-dialog__body {
  759. width: 100%;
  760. height: 10rem;
  761. display: flex;
  762. justify-content: center;
  763. padding-top: 3rem;
  764. color: #000000;
  765. box-sizing: border-box;
  766. font-size: 1.2rem;
  767. }
  768. }
  769. }
  770. </style>