ManageSchool.vue 25 KB

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