examine.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915
  1. <template>
  2. <div class="table_container">
  3. <div class="title_examine">
  4. <div class="pub_title">账号审核</div>
  5. <div style="margin-left: auto">
  6. <el-button v-if="type == 0" type="primary" size="small" @click="bactchConfirm(1)"
  7. >批量通过</el-button
  8. >
  9. <el-button v-if="type == 0" type="primary" size="small" @click="bactchConfirm(2)"
  10. >批量忽略</el-button
  11. >
  12. <el-button v-if="type == 2" type="primary" size="small" @click="bactchConfirm(0)"
  13. >批量操作</el-button
  14. >
  15. </div>
  16. </div>
  17. <div class="table_content">
  18. <div class="button_top">
  19. <div class="examine_title">
  20. <a
  21. @click="showData(0)"
  22. :style="{
  23. color: type == 0 ? 'black' : 'rgb(179, 179, 179)',
  24. fontWeight: 'bold',
  25. }"
  26. >待审核({{ tableData }})</a
  27. >
  28. </div>
  29. <div class="examine_title">
  30. <a
  31. @click="showData(1)"
  32. :style="{
  33. color: type == 1 ? 'black' : 'rgb(179, 179, 179)',
  34. fontWeight: 'bold',
  35. }"
  36. >已通过({{ approvedData }})</a
  37. >
  38. </div>
  39. <div class="examine_title">
  40. <a
  41. @click="showData(2)"
  42. :style="{
  43. color: type == 2 ? 'black' : 'rgb(179, 179, 179)',
  44. fontWeight: 'bold',
  45. }"
  46. >已忽略({{ RefusedData }})</a
  47. >
  48. </div>
  49. <div class="examine_title">
  50. <a
  51. @click="showData(3)"
  52. :style="{
  53. color: type == 3 ? 'black' : 'rgb(179, 179, 179)',
  54. fontWeight: 'bold',
  55. }"
  56. >全部记录({{ AllData }})</a
  57. >
  58. </div>
  59. </div>
  60. <div class="content">
  61. <!-- 待审核的数据 -->
  62. <div class="tableBox">
  63. <!-- 禁用 stripe 属性,完全自定义背景色 -->
  64. <el-table
  65. :data="currentTableData"
  66. stripe
  67. border
  68. style="width: 100%"
  69. :header-cell-style="headerCellStyle"
  70. @selection-change="handleSelectionChange"
  71. :row-key="(row) => row.id"
  72. ref="rtable"
  73. @sort-change="onSortChange"
  74. >
  75. <el-table-column type="selection" width="50px"></el-table-column>
  76. <el-table-column
  77. label="组织名称"
  78. min-width="45"
  79. show-overflow-tooltip
  80. >
  81. <template slot-scope="scope">{{
  82. scope.row.orgName ? scope.row.orgName : "-"
  83. }}</template>
  84. </el-table-column>
  85. <el-table-column
  86. label="学校名字"
  87. min-width="45"
  88. show-overflow-tooltip
  89. >
  90. <template slot-scope="scope">{{
  91. scope.row.schoolName ? scope.row.schoolName : "-"
  92. }}</template>
  93. </el-table-column>
  94. <el-table-column
  95. show-overflow-tooltip
  96. prop="contact_info"
  97. label="电话/邮箱"
  98. min-width="45"
  99. ></el-table-column>
  100. <el-table-column
  101. prop="name"
  102. label="姓名"
  103. min-width="45"
  104. show-overflow-tooltip
  105. :label-class-name="'address-column'"
  106. ></el-table-column>
  107. <el-table-column
  108. prop="username"
  109. label="账号"
  110. min-width="45"
  111. show-overflow-tooltip
  112. :label-class-name="'address-column'"
  113. ></el-table-column>
  114. <el-table-column
  115. prop="time"
  116. label="提交时间"
  117. width="180px"
  118. sortable="custom"
  119. ></el-table-column>
  120. <el-table-column
  121. prop="utime"
  122. label="审核时间"
  123. width="180px"
  124. sortable="custom"
  125. v-if="type !== 0"
  126. >
  127. <template slot-scope="scope">{{scope.row.utime ? scope.row.utime : '-'}}</template>
  128. </el-table-column>
  129. <el-table-column label="状态" min-width="45">
  130. <template slot-scope="scope">{{
  131. getStatusText(scope.row.type)
  132. }}</template>
  133. </el-table-column>
  134. <el-table-column
  135. prop="remarks"
  136. label="备注"
  137. min-width="45"
  138. ></el-table-column>
  139. <el-table-column label="操作" width="150px" v-if="type == 0 || type == 2">
  140. <template slot-scope="{ row }">
  141. <button
  142. v-if="type == 0"
  143. @click="ajax_move_user(1, row)"
  144. style="
  145. color: #308fff;
  146. background: none;
  147. border: none;
  148. cursor: pointer;
  149. margin-left: 25px;
  150. "
  151. >
  152. 通过
  153. </button>
  154. <button
  155. v-if="type == 0"
  156. @click="ajax_move_user(2, row)"
  157. style="
  158. color: #ff2570;
  159. background: none;
  160. border: none;
  161. cursor: pointer;
  162. margin-left: 35px;
  163. "
  164. >
  165. 忽略
  166. </button>
  167. <button
  168. v-if="type == 2"
  169. @click="ajax_move_user(0, row)"
  170. style="
  171. color: #308fff;
  172. background: none;
  173. border: none;
  174. cursor: pointer;
  175. margin-left: 25px;
  176. "
  177. >
  178. 移动至待审核
  179. </button>
  180. </template>
  181. </el-table-column>
  182. </el-table>
  183. </div>
  184. <!-- 分页组件 -->
  185. <el-pagination
  186. :current-page="currentPage"
  187. :page-size="pageSize"
  188. :total="total"
  189. @current-change="handlePageChange"
  190. layout="total,prev, pager, next, jumper"
  191. >
  192. </el-pagination>
  193. </div>
  194. </div>
  195. </div>
  196. </template>
  197. <script>
  198. import { API_CONFIG } from "@/common/apiConfig";
  199. import { mapGetters } from "vuex";
  200. import { addUser } from "@/api/user.js";
  201. export default {
  202. name: "IndexTable",
  203. components: {},
  204. data() {
  205. return {
  206. checked: true,
  207. selectedOptions: [], // 用于存储选中的复选框
  208. showCompany: false, // 默认隐藏
  209. selectedOrg: "CN", // 默认选中CN组织
  210. checkboxStates: Array(10).fill(false), // 确保初始化为一个包含10个元素的数组
  211. selectedSchools: Array(16).fill(""), // 确保初始化为一个包含16个空字符串的数组
  212. button: Array(10).fill(false), // 确保初始化为一个包含10个元素的数组
  213. currentPage: 1,
  214. currentApprovedPage: 1,
  215. currentRefusedPage: 1,
  216. currentAllPage: 1,
  217. total: 0,
  218. pageSize: 10, // 每页显示的条目数
  219. pageSizeOptions: [10, 25, 50], // 可选的页大小
  220. currentTableData: [],
  221. Pending_request: true,
  222. type: 0,
  223. tableData: 0,
  224. approvedData: 0,
  225. RefusedData: 0,
  226. AllData: 0,
  227. checkArray: [],
  228. checkArray2: [],
  229. sortF: "add_time",
  230. sortO: "DESC",
  231. };
  232. },
  233. computed: {
  234. ...mapGetters(["userid"]),
  235. },
  236. methods: {
  237. // 获取状态文本
  238. getStatusText(status) {
  239. const statusMap = {
  240. 0: "待审核",
  241. 1: "已通过",
  242. 2: "已忽略",
  243. };
  244. return statusMap[status] || "未知状态";
  245. },
  246. // 获取状态对应的按钮类型
  247. getButtonType(status) {
  248. const typeMap = {
  249. 0: "primary", // 待审核 -> 蓝色
  250. 1: "success", // 已通过 -> 绿色
  251. 2: "danger", // 已忽略 -> 红色
  252. };
  253. return typeMap[status] || "default"; // 默认为默认按钮类型
  254. },
  255. // 表头的背景色
  256. headerCellStyle() {
  257. return { backgroundColor: "#f1f1f1" };
  258. },
  259. handlePageChange(page) {
  260. API_CONFIG.allRecords.page = page;
  261. this.$forceUpdate();
  262. this.ajaxAll();
  263. },
  264. showData(type) {
  265. this.sortF = "add_time"
  266. this.sortO = "DESC"
  267. this.type = type;
  268. this.$refs.rtable.clearSort();
  269. this.ajaxAll();
  270. },
  271. handleSelectionChange(selectedRows) {
  272. console.log(selectedRows);
  273. this.checkArray = selectedRows.map((row) => row.id);
  274. this.checkArray2 = selectedRows
  275. },
  276. // 用于显示全部记录的表格数据
  277. ajaxAll() {
  278. console.log("获取所有记录");
  279. // 根据 allRecords 配置生成请求
  280. const params = [
  281. {
  282. functionName: API_CONFIG.allRecords.functionName,
  283. r_type: this.type == 3 ? '""' : this.type,
  284. page: API_CONFIG.allRecords.page,
  285. r_num: API_CONFIG.allRecords.num,
  286. sort_field: this.sortF,
  287. sort_order: this.sortO
  288. },
  289. ];
  290. this.currentTableData = [];
  291. this.$ajax
  292. .post(API_CONFIG.baseUrl, params)
  293. .then((res) => {
  294. if (res.data) {
  295. this.currentTableData = res.data[0];
  296. this.total = res.data[0].length ? res.data[0][0].total_count : 0;
  297. this.tableData = res.data[1][0].num;
  298. this.approvedData = res.data[2][0].num;
  299. this.RefusedData = res.data[3][0].num;
  300. this.AllData = res.data[4][0].num;
  301. }
  302. console.log("返回的结果为:", res.data);
  303. })
  304. .catch((err) => {
  305. console.error("请求失败,错误信息:", err);
  306. });
  307. },
  308. addUser(row) {
  309. let params = {
  310. alias: row.name,
  311. username: row.username,
  312. org: row.orgid,
  313. oid: row.oid,
  314. ph: row.phonenumber,
  315. cid: "",
  316. type: 1,
  317. opid: "",
  318. dest: "",
  319. eduid: "",
  320. };
  321. addUser(params)
  322. .then((response) => {
  323. if (response) {
  324. this.$message({
  325. type: "success",
  326. message: "操作成功",
  327. });
  328. this.ajaxAll(); // 例如刷新表格数据
  329. }
  330. })
  331. .catch((error) => {
  332. console.error("请求失败,错误信息:", error);
  333. });
  334. },
  335. async bactchConfirm(type) {
  336. if (!this.checkArray.length) {
  337. this.$message.error(`请选择要操作的用户`);
  338. return;
  339. }
  340. const confirmationMessage = type === 1 ? "您确定同意这些用户申请并创建吗?" : type ==0 ? "您确定将这些用户移动至待审核吗?" : "您确定忽略这些用户申请吗?";
  341. const requestType = type;
  342. // 弹出确认框
  343. this.$confirm(confirmationMessage, "确认操作", {
  344. confirmButtonText: "确定",
  345. cancelButtonText: "取消",
  346. type: "warning",
  347. })
  348. .then(async () => {
  349. for (const row of this.checkArray2) {
  350. // 确认后发起请求
  351. const params = [{
  352. functionName: API_CONFIG.moveUser.functionName,
  353. uid: row.id,
  354. type: requestType,
  355. euid: this.userid,
  356. }];
  357. try {
  358. const res = await this.$ajax.post(API_CONFIG.baseUrl, params);
  359. console.log(res);
  360. if (type === 1) {
  361. await this.addUser(row);
  362. } else {
  363. this.$message.success("操作成功");
  364. }
  365. console.log("此条数据处理后的id为:", row.id);
  366. } catch (err) {
  367. this.$message.error("操作失败");
  368. console.error("请求失败,错误信息:", err);
  369. }
  370. }
  371. // 所有请求完成后刷新表格数据
  372. await this.ajaxAll();
  373. })
  374. .catch(() => {
  375. // 取消操作后的提示
  376. });
  377. },
  378. onSortChange({ prop, order }){
  379. if(order){
  380. this.sortF = prop == 'time' ? 'add_time' : 'update_time'
  381. this.sortO = order == 'descending' ? 'DESC' : 'ASC'
  382. }else{
  383. this.sortF = 'add_time'
  384. this.sortO = 'DESC'
  385. }
  386. this.ajaxAll()
  387. console.log(prop, order);
  388. },
  389. // 忽略操作,将数据移到已忽略
  390. ajax_move_user(type, row) {
  391. let string = "";
  392. if (type == 1) {
  393. string = "您确定同意此用户申请并创建吗?";
  394. } else if (type == 2) {
  395. string = "您确定忽略此用户申请吗?";
  396. } else if (type == 0) {
  397. string = "您确定将此用户移动至待审核吗?";
  398. }
  399. let _type = type;
  400. // 弹出确认框
  401. this.$confirm(string, "确认操作", {
  402. confirmButtonText: "确定",
  403. cancelButtonText: "取消",
  404. type: "warning",
  405. })
  406. .then(() => {
  407. // 确认后发起请求
  408. let params = [
  409. {
  410. functionName: API_CONFIG.moveUser.functionName, // 这里是将数据移至已忽略状态的操作,使用配置中的存储过程名称
  411. uid: row.id,
  412. type: _type,
  413. euid: this.userid,
  414. },
  415. ];
  416. // 发起请求
  417. this.$ajax
  418. .post(API_CONFIG.baseUrl, params)
  419. .then((res) => {
  420. console.log(res);
  421. if (type == 1) {
  422. this.addUser(row);
  423. } else {
  424. this.$message({
  425. type: "success",
  426. message: "操作成功",
  427. });
  428. // 更新数据状态
  429. this.ajaxAll(); // 例如刷新表格数据
  430. }
  431. console.log("此条数据处理后的id为:", row.id);
  432. })
  433. .catch((err) => {
  434. this.$message.error("操作失败");
  435. console.error("请求失败,错误信息:", err);
  436. });
  437. })
  438. .catch(() => {
  439. // 取消操作后的提示
  440. });
  441. },
  442. },
  443. mounted() {
  444. this.ajaxAll(); // 组件挂载后调用 ajaxAll 方法
  445. },
  446. };
  447. </script>
  448. <style scoped>
  449. .content {
  450. /* flex-direction: column; */
  451. width: 100%;
  452. }
  453. /* 表格容器样式 */
  454. .table_container {
  455. width: 100%;
  456. height: 100%;
  457. padding: 10px;
  458. box-sizing: border-box;
  459. overflow: auto;
  460. }
  461. .el-table {
  462. width: 100%;
  463. border: 1px solid #dcdfe6;
  464. /* 设置表格边框 */
  465. }
  466. .el-table th,
  467. .el-table td {
  468. border: 1px solid #dcdfe6;
  469. /* 设置单元格边框 */
  470. height: 80px;
  471. }
  472. /* 使用v-deep深度,进入元素设置表格行的背景色 */
  473. ::v-deep
  474. .el-table--striped
  475. .el-table__body
  476. tr.el-table__row--striped
  477. td.el-table__cell {
  478. background-color: #f1f1f1;
  479. }
  480. .address-column {
  481. margin: 0;
  482. /* 调整边距 */
  483. padding: 5px;
  484. /* 调整填充 */
  485. }
  486. /*审核框架 */
  487. .button_top {
  488. width: 100%;
  489. display: flex;
  490. align-items: center;
  491. margin: 10px 0;
  492. }
  493. .examine_title a {
  494. cursor: pointer;
  495. color: black;
  496. font-weight: bold;
  497. }
  498. .button_top .examine_title + .examine_title {
  499. margin-left: 20px;
  500. }
  501. /* 新增账户对话框样式 */
  502. .add-account-button {
  503. margin-top: 20px;
  504. /* 添加顶部间距 */
  505. padding: 10px 20px;
  506. /* 添加内边距 */
  507. background-color: transparent;
  508. /* 去掉按钮背景 */
  509. color: black;
  510. /* 设置字体颜色为黑色 */
  511. border-radius: 4px;
  512. /* 设置圆角 */
  513. cursor: pointer;
  514. /* 鼠标悬停时显示手型 */
  515. font-size: 18px;
  516. /* 增大字体 */
  517. display: flex;
  518. /* 使用 Flexbox 布局 */
  519. border: none;
  520. align-items: center;
  521. /* 垂直居中对齐 */
  522. }
  523. .add-icon {
  524. width: 20px;
  525. /* 设置小图片的宽度 */
  526. height: 20px;
  527. /* 设置小图片的高度 */
  528. margin-right: 8px;
  529. /* 图片与文字之间的间距 */
  530. }
  531. /* 对话框内容样式 */
  532. .modal-content {
  533. display: flex;
  534. flex-direction: column;
  535. }
  536. /* 标题样式 */
  537. .modal-header {
  538. display: flex;
  539. gap: 80px;
  540. /* 设置元素之间的固定间距 */
  541. justify-content: center;
  542. /* 居中对齐所有元素 */
  543. align-items: center;
  544. /* 垂直居中对齐 */
  545. cursor: pointer;
  546. /* 鼠标悬停时显示手型 */
  547. }
  548. /* 组织标题样式 */
  549. .org-title {
  550. display: flex;
  551. align-items: center;
  552. margin-bottom: 15px;
  553. }
  554. .org-title h3 {
  555. margin-right: 10px;
  556. font-weight: bold;
  557. }
  558. /* dialog搜索框容器 */
  559. .dialogsearch-container input {
  560. border: none;
  561. /* 去掉边框 */
  562. padding: 0 10px;
  563. /* 添加内边距 */
  564. padding-left: 15px;
  565. /* 增加左内边距以移动文字 */
  566. font-size: 18px;
  567. /* 增大字体大小 */
  568. outline: none;
  569. /* 去掉聚焦时的轮廓 */
  570. color: black;
  571. border: 1px solid black;
  572. }
  573. /* dialog搜索框按钮样式 */
  574. .dialogsearch-button {
  575. position: absolute;
  576. /* 设置为绝对定位 */
  577. right: 310px;
  578. /* 右对齐,距离右边310px */
  579. height: 40px;
  580. /* 设置按钮高度与输入框一致 */
  581. border: none;
  582. /* 去掉边框 */
  583. background: none;
  584. /* 去掉背景 */
  585. cursor: pointer;
  586. /* 鼠标悬停时显示手型 */
  587. padding: 0;
  588. /* 去掉内边距 */
  589. }
  590. /* 复选框容器样式 */
  591. .checkbox-container {
  592. display: flex;
  593. flex-direction: row;
  594. /* 水平排列 */
  595. gap: 10px;
  596. /* justify-content: space-between; 在两排之间留出空间 */
  597. margin-top: 100px;
  598. /* 添加顶部间距 */
  599. }
  600. /* 复选框组样式 */
  601. .checkbox-group {
  602. float: right;
  603. margin-left: 140px;
  604. /* border: 1px solid red; */
  605. height: 400px;
  606. width: 350px;
  607. padding-top: 20px;
  608. }
  609. /* 复选框在右侧样式 */
  610. .checkbox-left {
  611. flex-direction: row-reverse;
  612. /* 选择框在右侧 */
  613. display: flex;
  614. /* 使用 Flexbox */
  615. align-items: center;
  616. /* 垂直居中 */
  617. position: relative;
  618. /* 为下划线定位 */
  619. padding-top: 15px;
  620. /* 设置文本与下划线之间的间距 */
  621. }
  622. /*复选框文本样式 */
  623. .checkbox-left::after {
  624. content: "";
  625. display: block;
  626. width: 150%;
  627. height: 1px;
  628. background-color: black;
  629. position: absolute;
  630. bottom: 0;
  631. left: -12%;
  632. }
  633. hr {
  634. margin: 20px 0;
  635. /* 上下间距 */
  636. border: 1px solid #dcdfe6;
  637. /* 分隔线颜色 */
  638. }
  639. /* dialog学校复选框样式 */
  640. .checkbox-group span.el-checkbox__inner {
  641. position: absolute;
  642. right: -125px;
  643. width: 20px;
  644. height: 20px;
  645. }
  646. /* dialog组织下拉框复选框样式 */
  647. .checkbox-company span.el-checkbox__inner {
  648. width: 20px;
  649. height: 20px;
  650. }
  651. /* 复选框在右侧样式 */
  652. .checkbox-company {
  653. float: right;
  654. margin-left: 140px;
  655. /* border: 1px solid red; */
  656. height: 400px;
  657. width: 350px;
  658. padding-top: 20px;
  659. }
  660. .checkbox-right {
  661. align-items: center;
  662. /* 垂直居中 */
  663. position: relative;
  664. /* 为下划线定位 */
  665. padding-bottom: 5px;
  666. /* 设置文本与下划线之间的间距 */
  667. padding-top: 15px;
  668. }
  669. .checkbox-right::after {
  670. content: "";
  671. /* 创建伪元素 */
  672. display: block;
  673. /* 使其成为块级元素 */
  674. width: 80%;
  675. /* 下划线宽度,调整为所需的宽度 */
  676. height: 1px;
  677. /* 下划线高度 */
  678. background-color: black;
  679. /* 下划线颜色 */
  680. position: absolute;
  681. /* 绝对定位 */
  682. bottom: 0;
  683. /* 距离底部 */
  684. left: 8%;
  685. /* 调整下划线的水平位置,设置为10% */
  686. }
  687. /* 为 select 添加自定义下拉箭头 */
  688. .select_right {
  689. border: none;
  690. /* 去掉边框 */
  691. outline: none;
  692. /* 去掉聚焦时的轮廓线 */
  693. }
  694. /* 公司下拉菜单 */
  695. .company_checkbox {
  696. position: absolute;
  697. /* 设置为绝对定位 */
  698. width: 278px;
  699. background-color: rgb(255, 255, 255);
  700. border: 1px solid rgb(239, 239, 239);
  701. margin-left: 28px;
  702. margin-top: 6px;
  703. z-index: 200;
  704. padding: 10px 0;
  705. /* 给下拉菜单加一点内边距,避免内容太紧 */
  706. }
  707. /* 每个下拉项的容器,使用flexbox布局 */
  708. .com_check {
  709. display: flex;
  710. /* 使用flex布局 */
  711. justify-content: space-between;
  712. /* 让文本和复选框两端对齐 */
  713. align-items: center;
  714. /* 让文本和复选框垂直居中对齐 */
  715. padding: 5px 20px;
  716. /* 给复选框加点内边距,避免紧凑 */
  717. position: relative;
  718. /* 确保伪元素的定位是相对当前元素 */
  719. margin-bottom: 10px;
  720. /* 给每个复选框之间留点空隙 */
  721. }
  722. /* 复选框下的下划线 */
  723. .com_check::after {
  724. content: "";
  725. /* 创建伪元素 */
  726. display: block;
  727. /* 使其成为块级元素 */
  728. width: 100%;
  729. /* 下划线宽度与复选框相同 */
  730. height: 1px;
  731. /* 下划线高度 */
  732. background-color: rgb(214, 214, 214);
  733. /* 下划线颜色 */
  734. position: absolute;
  735. /* 绝对定位 */
  736. bottom: 0;
  737. /* 距离底部 */
  738. left: 0;
  739. /* 距离左边 */
  740. }
  741. /* 新增学校按钮 */
  742. .com_but {
  743. width: 275px;
  744. height: 35px;
  745. margin-top: 10px;
  746. /* 给按钮与上面的选项留一点空隙 */
  747. border: none;
  748. background-color: rgb(255, 255, 255);
  749. /* 按钮背景色 */
  750. outline: none;
  751. color: rgb(98, 98, 98);
  752. text-align: left;
  753. text-indent: 20px;
  754. /* 左侧文字缩进 */
  755. font-size: 15px;
  756. padding-bottom: 5px;
  757. /* 设置文本与下划线之间的间距 */
  758. }
  759. /* 给每个下拉项之间加点空隙 */
  760. .checkbox-right {
  761. margin-bottom: 10px;
  762. /* 给每个项之间留点空隙 */
  763. }
  764. /* 弹窗部分的样式 */
  765. .confirmation-dialog .el-dialog {
  766. position: absolute;
  767. top: 20%;
  768. left: 40%;
  769. }
  770. /* 弹窗内容部分的样式 */
  771. .modal-content .el-overlay .el-dialog {
  772. text-align: center;
  773. padding: 20px;
  774. }
  775. /* 弹窗标题部分的样式 */
  776. /* 是否通知申请人弹窗标题部分的样式 */
  777. .confirmation-modal {
  778. position: fixed;
  779. /* 使用固定定位 */
  780. transform: translate(-50%, -50%);
  781. /* 使其真正居中 */
  782. background-color: rgba(255, 255, 255, 0.9);
  783. /* 背景颜色 */
  784. border: 1px solid #ccc;
  785. /* 边框 */
  786. box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  787. /* 阴影效果 */
  788. padding: 20px;
  789. /* 内边距 */
  790. z-index: 2000;
  791. /* 确保在其他元素之上 */
  792. }
  793. /* 是否通知申请人弹窗标题部分按钮的样式 */
  794. .button-container {
  795. display: flex;
  796. /* 使用flex布局 */
  797. justify-content: space-around;
  798. /* 按钮之间的间距 */
  799. margin-top: 120px;
  800. /* 按钮与文本之间的间距 */
  801. }
  802. /* 分页功能的样式 */
  803. .el-pagination {
  804. /* 调整分页组件的顶部向上方距离50px */
  805. margin-top: 10px;
  806. padding: 0;
  807. }
  808. /* 设置分页按钮的宽度 */
  809. .el-pagination .el-pagination__prev,
  810. .el-pagination .el-pagination__next {
  811. width: 60px;
  812. /* 设置上一页和下一页按钮的宽度 */
  813. }
  814. /* 设置页码按钮的宽度 */
  815. .el-pagination .el-pager li {
  816. width: 50px;
  817. /* 设置每个页码按钮的宽度 */
  818. }
  819. /* 设置分页大小选择框的宽度 */
  820. .el-pagination .el-select {
  821. width: 80px;
  822. /* 设置分页大小选择框的宽度 */
  823. }
  824. /*取消dialog学校最后一个的margin值 */
  825. .el-checkbox {
  826. margin-right: none !important;
  827. }
  828. .cell {
  829. position: absolute;
  830. }
  831. .el-checkbox span {
  832. margin-left: 3px;
  833. }
  834. /* 取消 ElTableColumn 默认的 inline-block 和 vertical-align 样式 */
  835. .el-scrollbar__view {
  836. display: block !important;
  837. /* 或者 display: flex; 根据你的需求 */
  838. }
  839. /* 取消 ElTableColumn 的下方滚动条样式 */
  840. .el-table--scrollable-x .el-table__body-wrapper {
  841. overflow-x: hidden !important; /* 禁止水平滚动 */
  842. overflow-y: auto; /* 保留垂直滚动(如果需要) */
  843. }
  844. .tableBox {
  845. width: 100%;
  846. }
  847. .table_content {
  848. width: 100%;
  849. overflow: auto;
  850. height: calc(100% - 75px);
  851. }
  852. </style>