user.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807
  1. <template>
  2. <div class="pb_content">
  3. <div class="pb_head">
  4. <div>
  5. <span>账号管理</span>
  6. </div>
  7. </div>
  8. <div class="touTop">
  9. <div class="touLeft">
  10. <div>
  11. <el-input v-model="suser" placeholder="请输入手机号或用户名">
  12. </el-input>
  13. <el-button @click="search">查询</el-button>
  14. </div>
  15. </div>
  16. <div class="touRight">
  17. <div></div>
  18. <div>
  19. <el-button @click="addUser">添加账号</el-button>
  20. </div>
  21. </div>
  22. </div>
  23. <div class="pb_content_body" style="margin: 0 auto">
  24. <div class="student_table">
  25. <el-table
  26. ref="table"
  27. :data="tableData"
  28. border
  29. :height="tableHeight"
  30. :fit="true"
  31. v-loading="isLoading"
  32. style="width: 100%"
  33. :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
  34. :row-class-name="tableRowClassName"
  35. >
  36. <el-table-column label="姓名" min-width="10" align="center">
  37. <template slot-scope="scope">
  38. <div class="userImg">
  39. <div>
  40. {{ scope.row.name }}
  41. </div>
  42. </div>
  43. </template>
  44. </el-table-column>
  45. <el-table-column label="账号" min-width="10" align="center">
  46. <template slot-scope="scope">
  47. <div>{{ scope.row.username }}</div>
  48. </template>
  49. </el-table-column>
  50. <el-table-column label="电话" min-width="10" align="center">
  51. <template slot-scope="scope">
  52. <div>{{ scope.row.phone ? scope.row.phone : "-" }}</div>
  53. </template>
  54. </el-table-column>
  55. <el-table-column
  56. prop="level"
  57. label="权限等级"
  58. min-width="10"
  59. align="center"
  60. ><template slot-scope="scope">
  61. <div>
  62. {{ scope.row.type == 4 ? "评委" : "暂无" }}
  63. </div>
  64. </template>
  65. </el-table-column>
  66. <el-table-column
  67. prop="schoolName"
  68. label="学校"
  69. min-width="10"
  70. align="center"
  71. ><template slot-scope="scope">
  72. <div>
  73. {{ scope.row.schoolName ? scope.row.schoolName : "-" }}
  74. </div>
  75. </template>
  76. </el-table-column>
  77. <el-table-column label="操作" min-width="20">
  78. <template slot-scope="scope">
  79. <div class="tableButton">
  80. <el-button
  81. v-if="scope.row.type == 4"
  82. @click="assCase(scope.row.userid)"
  83. >分配案例</el-button
  84. >
  85. <el-button @click="upUser(scope.row)">修改</el-button>
  86. <el-button @click="deUser(scope.row.userid)">删除</el-button>
  87. </div>
  88. </template>
  89. </el-table-column>
  90. </el-table>
  91. </div>
  92. <div class="student_page">
  93. <el-pagination
  94. background
  95. layout="prev, pager, next"
  96. :page-size="10"
  97. :total="total"
  98. v-if="page"
  99. @current-change="handleCurrentChange"
  100. ></el-pagination>
  101. </div>
  102. </div>
  103. <el-dialog
  104. title="添加管理员"
  105. :visible.sync="dialogVisible"
  106. :append-to-body="true"
  107. width="500px"
  108. :before-close="handleClose"
  109. class="dialog_diy"
  110. >
  111. <el-form class="inputClass">
  112. <el-form-item label="名称" :label-width="formLabelWidth">
  113. <span>
  114. <el-input
  115. placeholder="请输入名称"
  116. clearable
  117. v-model="sName"
  118. class="add_input"
  119. ></el-input>
  120. </span>
  121. </el-form-item>
  122. <el-form-item label="手机号" :label-width="formLabelWidth">
  123. <span>
  124. <el-input
  125. placeholder="请输入手机号"
  126. clearable
  127. v-model="sPhone"
  128. class="add_input"
  129. ></el-input>
  130. </span>
  131. </el-form-item>
  132. <el-form-item label="权限" :label-width="formLabelWidth">
  133. <el-select v-model="sType" placeholder="请选择权限">
  134. <!-- <el-option label="教师" value="1">教师</el-option> -->
  135. <el-option label="评委" value="4">评委</el-option>
  136. </el-select>
  137. </el-form-item>
  138. <el-form-item label="学校选择" :label-width="formLabelWidth">
  139. <el-select
  140. v-model="sSchool"
  141. filterable
  142. clearable
  143. @clear="clearSchoolList"
  144. :allow-create="false"
  145. @focus="remoteMethodclick"
  146. remote
  147. placeholder="请输入学校"
  148. :remote-method="remoteMethod"
  149. :loading="loading"
  150. no-data-text="暂未查询到此学校"
  151. >
  152. <el-option
  153. v-for="item in options"
  154. :key="item.value"
  155. :label="item.label"
  156. :value="item.value"
  157. >
  158. </el-option>
  159. </el-select>
  160. </el-form-item>
  161. <div class="tips">
  162. <div>注:</div>
  163. <div class="tipsList">
  164. <div>1、添加账号账号密码为123456</div>
  165. <div>2、请使用生成的账号登录平台</div>
  166. </div>
  167. </div>
  168. </el-form>
  169. <span slot="footer" class="dialog-footer flex">
  170. <el-button class="left" @click="dialogVisible = false">取消</el-button>
  171. <el-button class="right" @click="addRaceUser" v-if="isAddOrUp == false"
  172. >确认</el-button
  173. >
  174. <el-button
  175. class="right"
  176. @click="updateRaceUser"
  177. v-if="isAddOrUp == true"
  178. >修改</el-button
  179. >
  180. </span>
  181. </el-dialog>
  182. <el-dialog
  183. title="分配案例"
  184. :visible.sync="dialogVisibleMember"
  185. :append-to-body="true"
  186. width="25%"
  187. height="80%"
  188. :before-close="handleClose"
  189. class="dialog_diy1 customWidth"
  190. >
  191. <div class="people">
  192. <div class="people_top">
  193. <div class="people_top_right">
  194. <div class="people_search">
  195. <div>选择评委</div>
  196. <el-select v-model="reviewer" placeholder="请选择评委">
  197. <el-option
  198. v-for="item in reviewerBox"
  199. :key="item.userid"
  200. :label="item.name"
  201. :value="item.userid"
  202. ></el-option>
  203. </el-select>
  204. </div>
  205. </div>
  206. </div>
  207. <el-checkbox
  208. :indeterminate="isIndeterminate"
  209. v-model="checkAll"
  210. @change="handleCheckAllChange"
  211. style="padding: 15px 0 0 15px"
  212. >全选</el-checkbox
  213. >
  214. <el-checkbox-group
  215. v-model="checkboxList"
  216. class="people_name"
  217. v-if="anliBox.length"
  218. @change="handleCheckedAnliChange"
  219. >
  220. <el-checkbox v-for="item in anliBox" :key="item.id" :label="item.id">
  221. <div class="t_j_box">
  222. <div>案例名称:</div>
  223. <el-tooltip
  224. placement="top"
  225. :content="item.info.title ? item.info.title : '暂无姓名'"
  226. >
  227. <span>{{
  228. item.info.title ? item.info.title : "暂无姓名"
  229. }}</span>
  230. </el-tooltip>
  231. </div>
  232. </el-checkbox>
  233. </el-checkbox-group>
  234. <div style="text-align: center; margin-top: 10px" v-else>暂无数据</div>
  235. </div>
  236. <span slot="footer" class="dialog-footer">
  237. <el-button @click="dialogVisibleMember = false">取 消</el-button>
  238. <el-button type="primary" @click="addCase">确定</el-button>
  239. </span>
  240. </el-dialog>
  241. </div>
  242. </template>
  243. <script>
  244. export default {
  245. data() {
  246. return {
  247. suser: "",
  248. tableData: [],
  249. tableHeight: "500px",
  250. isLoading: false,
  251. formLabelWidth: "100px",
  252. page: 1,
  253. total: 0,
  254. dialogVisible: false,
  255. isAddOrUp: false,
  256. dialogVisibleMember: false,
  257. sName: "",
  258. sPhone: "",
  259. sType: "",
  260. upId: "",
  261. reviewer: "",
  262. sSchool: "",
  263. reviewerBox: [],
  264. anliBox: [],
  265. checkboxList: [],
  266. checkboxIdList: [],
  267. isIndeterminate: false,
  268. checkAll: false,
  269. options: [],
  270. list: [],
  271. loading: false,
  272. };
  273. },
  274. mounted() {
  275. this.$nextTick(function () {
  276. this.tableHeight =
  277. window.innerHeight - this.$refs.table.$el.offsetTop - 200;
  278. if (this.tableHeight <= 530) {
  279. this.tableHeight = 530;
  280. }
  281. // 监听窗口大小变化
  282. let self = this;
  283. window.onresize = function () {
  284. self.tableHeight =
  285. window.innerHeight - self.$refs.table.$el.offsetTop - 200;
  286. if (self.tableHeight <= 530) {
  287. self.tableHeight = 530;
  288. }
  289. };
  290. });
  291. },
  292. methods: {
  293. clearSchoolList() {
  294. this.sSchool = "";
  295. },
  296. tableRowClassName({ row, rowIndex }) {
  297. if ((rowIndex + 1) % 2 === 0) {
  298. return "even_row";
  299. } else {
  300. return "";
  301. }
  302. },
  303. remoteMethodclick() {
  304. if (!this.options.length) {
  305. var _option = [];
  306. for (var i = 0; i < 10; i++) {
  307. var _a = this.randomNum(0, 10);
  308. _option.push(this.list[_a]);
  309. }
  310. this.options = _option;
  311. }
  312. },
  313. randomNum(minNum, maxNum) {
  314. switch (arguments.length) {
  315. case 1:
  316. return parseInt(Math.random() * minNum + 1, 10);
  317. break;
  318. case 2:
  319. return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
  320. break;
  321. default:
  322. return 0;
  323. break;
  324. }
  325. },
  326. remoteMethod(query) {
  327. if (query !== "") {
  328. this.loading = true;
  329. setTimeout(() => {
  330. this.loading = false;
  331. this.options = this.list.filter((item) => {
  332. return item.label.toLowerCase().indexOf(query.toLowerCase()) > -1;
  333. });
  334. }, 200);
  335. } else {
  336. // this.options = [];
  337. var _option = [];
  338. for (var i = 0; i < 10; i++) {
  339. var _a = this.randomNum(0, 10);
  340. _option.push(this.list[_a]);
  341. }
  342. this.options = _option;
  343. }
  344. },
  345. getSchool() {
  346. let params = {
  347. n: "",
  348. };
  349. this.ajax
  350. .get(this.$store.state.api + "getSchool", params)
  351. .then((res) => {
  352. this.schoolList = res.data[0];
  353. this.list = this.schoolList.map((item) => {
  354. return { value: item.id, label: item.name };
  355. });
  356. var _option = [];
  357. for (var i = 0; i < 10; i++) {
  358. var _a = this.randomNum(0, this.list.length);
  359. _option.push(this.list[_a]);
  360. }
  361. this.options = _option;
  362. })
  363. .catch((err) => {
  364. console.error(err);
  365. });
  366. },
  367. handleCheckAllChange(val) {
  368. if (this.checkboxIdList.length == 0) {
  369. for (var i = 0; i < this.anliBox.length; i++) {
  370. this.checkboxIdList.push(this.anliBox[i].id);
  371. }
  372. }
  373. this.checkboxList = val ? this.checkboxIdList : [];
  374. this.isIndeterminate = false;
  375. },
  376. handleCheckedAnliChange(value) {
  377. let checkedCount = this.checkboxList.length;
  378. this.checkAll = checkedCount === this.anliBox.length;
  379. this.isIndeterminate =
  380. checkedCount > 0 && checkedCount < this.anliBox.length;
  381. },
  382. handleClose(done) {
  383. done();
  384. },
  385. handleCurrentChange(val) {
  386. this.page = val;
  387. this.getAdmin();
  388. },
  389. search() {
  390. this.page = 1;
  391. this.getAdmin();
  392. },
  393. addUser() {
  394. this.sName = "";
  395. this.sPhone = "";
  396. this.sType = "";
  397. this.isAddOrUp = false;
  398. this.dialogVisible = true;
  399. },
  400. getAdmin() {
  401. let params = {
  402. uid: this.$store.state.userInfo.userid,
  403. cn: this.suser,
  404. page: this.page,
  405. };
  406. this.ajax
  407. .get(this.$store.state.api + "selectReviewer", params)
  408. .then((res) => {
  409. this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  410. this.tableData = res.data[0];
  411. this.reviewerBox = res.data[0];
  412. })
  413. .catch((err) => {
  414. console.error(err);
  415. });
  416. },
  417. addRaceUser() {
  418. if (this.sName == "") {
  419. this.$message.error("请输入名称");
  420. return;
  421. } else if (this.sPhone == "") {
  422. this.$message.error("请输入手机号");
  423. return;
  424. } else if (
  425. this.sId != "" &&
  426. !/^[1][3,4,5,7,8][0-9]{9}$/.test(this.sPhone)
  427. ) {
  428. this.$message.error("手机号格式不正确");
  429. return;
  430. } else if (this.sType == "") {
  431. this.$message.error("请选择权限");
  432. return;
  433. }
  434. // else if (this.sSchool == "") {
  435. // this.$message.error("请选择学校");
  436. // return;
  437. // }
  438. let params = [
  439. {
  440. reg: "",
  441. res: "",
  442. sch: this.sSchool,
  443. n: this.sName,
  444. p: this.sPhone,
  445. t: this.sType,
  446. parent: this.$store.state.userInfo.userid,
  447. },
  448. ];
  449. this.ajax
  450. .post(this.$store.state.api + "addRaceUser", params)
  451. .then((res) => {
  452. this.$message({
  453. message: "创建成功",
  454. type: "success",
  455. });
  456. this.sName = "";
  457. this.sPhone = "";
  458. this.sType = "";
  459. this.sSchool = "";
  460. this.dialogVisible = false;
  461. this.getAdmin();
  462. })
  463. .catch((err) => {
  464. this.$message.error("创建失败");
  465. console.error(err);
  466. });
  467. },
  468. upUser(r) {
  469. this.sName = r.name;
  470. this.sPhone = r.phone;
  471. this.sType = r.type;
  472. this.upId = r.userid;
  473. this.isAddOrUp = true;
  474. this.dialogVisible = true;
  475. },
  476. updateRaceUser() {
  477. let params = {
  478. n: this.sName,
  479. p: this.sPhone,
  480. t: this.sType,
  481. s: this.sSchool,
  482. uid: this.upId,
  483. };
  484. this.ajax
  485. .get(this.$store.state.api + "updateReviewer", params)
  486. .then((res) => {
  487. this.$message({
  488. message: "修改成功",
  489. type: "success",
  490. });
  491. this.sName = "";
  492. this.sPhone = "";
  493. this.sType = "";
  494. this.upId = "";
  495. this.sSchool = "";
  496. this.isAddOrUp = false;
  497. this.dialogVisible = false;
  498. this.getAdmin();
  499. })
  500. .catch((err) => {
  501. console.error(err);
  502. });
  503. },
  504. deUser(id) {
  505. this.$confirm("确定删除该账号吗?", "提示", {
  506. confirmButtonText: "确定",
  507. cancelButtonText: "取消",
  508. type: "warning",
  509. })
  510. .then(() => {
  511. let params = {
  512. uid: id,
  513. };
  514. this.ajax
  515. .get(this.$store.state.api + "deleteReviewer", params)
  516. .then((res) => {
  517. this.$message({
  518. message: "删除成功",
  519. type: "success",
  520. });
  521. this.dialogVisible = false;
  522. this.getAdmin();
  523. })
  524. .catch((err) => {
  525. console.error(err);
  526. });
  527. })
  528. .catch(() => {});
  529. },
  530. getAnliBox() {
  531. this.ajax
  532. .get(this.$store.state.api + "selecAnliBox1")
  533. .then((res) => {
  534. this.anliBox = res.data[0];
  535. for (var i = 0; i < this.anliBox.length; i++) {
  536. this.anliBox[i].info = JSON.parse(this.anliBox[i].info);
  537. this.anliBox[i].overview = JSON.parse(this.anliBox[i].overview);
  538. this.anliBox[i].process = JSON.parse(this.anliBox[i].process);
  539. this.anliBox[i].proact = JSON.parse(this.anliBox[i].proact);
  540. this.anliBox[i].proexc = JSON.parse(this.anliBox[i].proexc);
  541. this.anliBox[i].results = JSON.parse(this.anliBox[i].results);
  542. }
  543. })
  544. .catch((err) => {
  545. console.error(err);
  546. });
  547. },
  548. assCase(id) {
  549. this.reviewer = id;
  550. this.dialogVisibleMember = true;
  551. },
  552. addCase() {
  553. if (this.reviewer == "") {
  554. this.$message.error("请选择评审员");
  555. return;
  556. } else if (this.checkboxList.length == 0) {
  557. this.$message.error("请选择案例");
  558. return;
  559. }
  560. let params = [
  561. {
  562. uid: this.reviewer,
  563. box: this.checkboxList.join(","),
  564. },
  565. ];
  566. this.ajax
  567. .post(this.$store.state.api + "insertCase", params)
  568. .then((res) => {
  569. this.$message({
  570. message: "分配成功",
  571. type: "success",
  572. });
  573. this.reviewer = "";
  574. this.checkboxList = [];
  575. this.isIndeterminate = false;
  576. this.checkAll = false;
  577. this.dialogVisibleMember = false;
  578. })
  579. .catch((err) => {
  580. this.$message.error("网络不佳");
  581. console.error(err);
  582. });
  583. },
  584. },
  585. created() {
  586. this.getAdmin();
  587. this.getAnliBox();
  588. this.getSchool();
  589. },
  590. };
  591. </script>
  592. <style scoped>
  593. .dialog_diy >>> .el-dialog__header,
  594. .dialog_diy1 >>> .el-dialog__header {
  595. background: #3d67bd !important;
  596. padding: 15px 20px;
  597. }
  598. .dialog_diy1 >>> .el-dialog__header {
  599. text-align: center;
  600. }
  601. .dialog_diy >>> .el-dialog__title,
  602. .dialog_diy1 >>> .el-dialog__title {
  603. color: #fff;
  604. }
  605. .dialog_diy >>> .el-dialog__headerbtn,
  606. .dialog_diy1 >>> .el-dialog__headerbtn {
  607. top: 19px;
  608. }
  609. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close,
  610. .dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close {
  611. color: #fff;
  612. }
  613. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover,
  614. .dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close:hover {
  615. color: #fff;
  616. }
  617. .dialog_diy >>> .el-dialog__body,
  618. .dialog_diy >>> .el-dialog__footer,
  619. .dialog_diy1 >>> .el-dialog__body,
  620. .dialog_diy1 >>> .el-dialog__footer {
  621. background: #fafafa;
  622. }
  623. /* .inputClass.is-active >>> .el-input__inner,
  624. .inputClass >>> .el-input__inner:focus {
  625. border-color: #5c549f;
  626. }
  627. .inputClass >>> .el-select .el-input.is-focus .el-input__inner {
  628. border-color: #5c549f;
  629. }
  630. .inputClass >>> .el-select .el-input__inner:focus {
  631. border-color: #5c549f;
  632. } */
  633. .left {
  634. background: #fff !important;
  635. color: #000 !important;
  636. }
  637. .right,
  638. .left {
  639. width: 80px;
  640. color: #fff;
  641. background: #409efe;
  642. margin-bottom: 20px;
  643. }
  644. .touTop {
  645. margin: 15px auto;
  646. display: flex;
  647. flex-direction: row;
  648. flex-wrap: nowrap;
  649. align-items: center;
  650. justify-content: space-between;
  651. width: 95%;
  652. }
  653. .touLeft {
  654. display: flex;
  655. flex-direction: row;
  656. flex-wrap: nowrap;
  657. align-items: center;
  658. }
  659. .touLeft > div {
  660. display: flex;
  661. flex-direction: row;
  662. flex-wrap: nowrap;
  663. align-items: center;
  664. }
  665. .touLeft > div > .el-button {
  666. background: #2268bd;
  667. color: #fff;
  668. margin-left: 10px;
  669. }
  670. .touRight > div:nth-child(2) > .el-button {
  671. background: #2268bd;
  672. color: #fff;
  673. }
  674. .student_table >>> .el-table--border td {
  675. border-right: 0px !important;
  676. }
  677. .student_table >>> .el-table,
  678. .student_table >>> .el-table__body-wrapper {
  679. height: auto !important;
  680. }
  681. .student_page {
  682. margin-top: 10px;
  683. }
  684. .tableButton {
  685. display: flex;
  686. flex-direction: row;
  687. flex-wrap: nowrap;
  688. align-items: center;
  689. }
  690. .tableButton > .el-button {
  691. background: #409efe;
  692. color: #fff;
  693. cursor: pointer;
  694. }
  695. .customWidth >>> .el-dialog {
  696. min-width: 500px !important;
  697. }
  698. .people {
  699. border: 1px solid rgb(229 229 229);
  700. height: 495px;
  701. border-radius: 5px;
  702. width: 100%;
  703. overflow: auto;
  704. background: #fff;
  705. box-shadow: 0px 0px 10px 8px #ededed;
  706. }
  707. .people::-webkit-scrollbar {
  708. /*滚动条整体样式*/
  709. width: 6px;
  710. /*高宽分别对应横竖滚动条的尺寸*/
  711. height: 6px;
  712. }
  713. /*定义滚动条轨道 内阴影+圆角*/
  714. .people::-webkit-scrollbar-track {
  715. border-radius: 10px;
  716. background-color: #eee;
  717. }
  718. /*定义滑块 内阴影+圆角*/
  719. .people::-webkit-scrollbar-thumb {
  720. border-radius: 10px;
  721. -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
  722. background-color: rgba(0, 0, 0, 0.1);
  723. }
  724. .people_top {
  725. display: flex;
  726. width: 100%;
  727. flex-direction: column;
  728. padding: 10px 25px 10px;
  729. box-sizing: border-box;
  730. border-bottom: 1px solid #f4f4f7;
  731. }
  732. .people_top_right {
  733. height: 40px;
  734. margin-bottom: 10px;
  735. }
  736. .people_search {
  737. display: flex;
  738. flex-direction: row;
  739. flex-wrap: nowrap;
  740. align-items: center;
  741. }
  742. .people_search > div:nth-child(1) {
  743. font-size: 20px;
  744. margin-right: 10px;
  745. }
  746. .t_j_box {
  747. display: flex;
  748. }
  749. .t_j_box span:nth-child(1) {
  750. width: 15%;
  751. overflow: hidden;
  752. margin-right: 10px;
  753. text-overflow: ellipsis;
  754. white-space: nowrap;
  755. }
  756. .t_j_box span:nth-child(2) {
  757. width: 300px;
  758. overflow: hidden;
  759. text-overflow: ellipsis;
  760. margin-right: 10px;
  761. }
  762. .t_j_box span:nth-child(3) {
  763. width: calc(55% - 20px);
  764. overflow: hidden;
  765. text-overflow: ellipsis;
  766. }
  767. .people_name {
  768. display: flex;
  769. flex-direction: column;
  770. flex-wrap: wrap;
  771. align-items: flex-start;
  772. padding: 15px 0 0 15px;
  773. }
  774. .people_name >>> .el-checkbox {
  775. margin-bottom: 10px;
  776. }
  777. .tips {
  778. color: #adb3b7;
  779. display: flex;
  780. flex-direction: row;
  781. flex-wrap: nowrap;
  782. align-items: flex-start;
  783. justify-content: center;
  784. }
  785. .tipsList {
  786. display: flex;
  787. flex-direction: column;
  788. flex-wrap: nowrap;
  789. align-items: flex-start;
  790. }
  791. </style>