works.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811
  1. <template>
  2. <div
  3. class="pb_content"
  4. style="
  5. background: unset;
  6. overflow: auto;
  7. padding: 20px;
  8. margin: 0;
  9. box-sizing: border-box;
  10. "
  11. >
  12. <div
  13. style="
  14. position: absolute;
  15. width: 100%;
  16. top: 0;
  17. height: 100%;
  18. overflow: auto;
  19. left: 50%;
  20. transform: translateX(-50%);
  21. "
  22. >
  23. <div
  24. class="pb_content_body"
  25. style="
  26. background: #fff;
  27. padding: 0px 21px;
  28. box-sizing: border-box;
  29. border-radius: 5px;
  30. "
  31. >
  32. <div class="pb_head">
  33. <!-- <span>备注:教师可以根据课程、班级条件筛选学生并查看该学生信息</span> -->
  34. <span
  35. v-if="type == '2'"
  36. @click="
  37. goTo(
  38. '/tcStudent?userid=' + userid + '&oid=' + oid + '&org=' + org
  39. )
  40. "
  41. >学生管理</span
  42. >
  43. <span
  44. v-else
  45. @click="
  46. goTo(
  47. '/course?userid=' +
  48. userid +
  49. '&oid=' +
  50. oid +
  51. '&org=' +
  52. org +
  53. '&role=' +
  54. role
  55. )
  56. "
  57. >课程管理</span
  58. >
  59. <span class="sub_head">评价管理</span>
  60. <span
  61. @click="
  62. goTo(
  63. '/worksReport?userid=' + userid + '&oid=' + oid + '&org=' + org
  64. )
  65. "
  66. >数据报告</span
  67. >
  68. </div>
  69. <div class="student_head">
  70. <div class="student_search">
  71. <div>班级筛选</div>
  72. <el-select v-model="classChoose" @change="search">
  73. <el-option label="全部" value="">全部</el-option>
  74. <el-option
  75. v-for="(c, cIndex) in classJuri"
  76. :key="cIndex"
  77. :value="c.id"
  78. :label="c.name"
  79. ></el-option>
  80. </el-select>
  81. <!-- <div
  82. style="
  83. line-height: 35px;
  84. font-size: 14px;
  85. min-width: 60px;
  86. margin-left: 10px;
  87. "
  88. >
  89. 目标筛选
  90. </div> -->
  91. <!-- <el-select v-model="eChoose" @change="search" clear="mbCss">
  92. <el-option label="全部" value="">全部</el-option>
  93. <el-option
  94. v-for="(e, eIndex) in evaJuri"
  95. :key="eIndex"
  96. :value="e.id"
  97. :label="e.title"
  98. ></el-option>
  99. </el-select> -->
  100. <el-input
  101. v-model="cn"
  102. placeholder="筛选课程名称"
  103. @input="search"
  104. ></el-input>
  105. </div>
  106. <!-- <div
  107. style="
  108. margin-left: 10px;
  109. cursor: pointer;
  110. float: right;
  111. min-width: 100px;
  112. "
  113. @click="
  114. goTo(
  115. '/studentWorks?userid=' + userid + '&oid=' + oid + '&org=' + org
  116. )
  117. "
  118. >
  119. 学生评价管理
  120. </div> -->
  121. </div>
  122. </div>
  123. <div class="pb_content_body">
  124. <div class="student_table">
  125. <el-table
  126. ref="table"
  127. :data="tableData1"
  128. border
  129. :height="tableHeight"
  130. :fit="true"
  131. v-loading="isLoading"
  132. style="width: 100%"
  133. :header-cell-style="{ background: '#f1f1f1', fontSize: '17px' }"
  134. :row-class-name="tableRowClassName"
  135. >
  136. <el-table-column
  137. prop="title"
  138. label="课程"
  139. min-width="30"
  140. align="center"
  141. ></el-table-column>
  142. <el-table-column label="班级" min-width="30" align="center">
  143. <template slot-scope="scope">
  144. {{
  145. tableData1[scope.$index].classJson.className
  146. ? tableData1[scope.$index].classJson.className
  147. : "-"
  148. }}
  149. </template>
  150. </el-table-column>
  151. <el-table-column
  152. prop="uname"
  153. label="创建人"
  154. min-width="30"
  155. align="center"
  156. ></el-table-column>
  157. <!-- <el-table-column
  158. prop="evaTitle"
  159. label="目标名称"
  160. min-width="30"
  161. align="center"
  162. >
  163. <template slot-scope="scope">
  164. {{ scope.row.evaTitle ? scope.row.evaTitle : "-" }}
  165. </template>
  166. </el-table-column>
  167. <el-table-column
  168. prop="time"
  169. label="时间"
  170. min-width="20"
  171. align="center"
  172. ></el-table-column> -->
  173. <el-table-column align="center" label="操作" width="200px">
  174. <template slot-scope="scope">
  175. <!-- <el-button
  176. type="primary"
  177. size="small"
  178. @click="
  179. goTo(
  180. '/worksDetail?cid=' +
  181. scope.row.courseId +
  182. '&userid=' +
  183. userid +
  184. '&oid=' +
  185. oid
  186. )
  187. "
  188. >查看学生</el-button>-->
  189. <!-- <el-button type="primary" size="small" @click="getWorkData(scope.row)">生成报告</el-button> -->
  190. <el-button
  191. type="primary"
  192. size="small"
  193. @click="getWorkData(scope.row)"
  194. >查看作业</el-button
  195. >
  196. <el-button
  197. type="primary"
  198. size="small"
  199. @click="getStudnet(scope.row)"
  200. >查看报告</el-button
  201. >
  202. </template>
  203. </el-table-column>
  204. </el-table>
  205. </div>
  206. <div class="student_page">
  207. <el-pagination
  208. background
  209. layout="prev, pager, next"
  210. :page-size="10"
  211. :total="total"
  212. v-if="page"
  213. @current-change="handleCurrentChange"
  214. ></el-pagination>
  215. </div>
  216. </div>
  217. </div>
  218. <!-- <el-dialog
  219. title="查看报告"
  220. :visible.sync="dialogVisible"
  221. :append-to-body="true"
  222. width="750px"
  223. :before-close="handleClose"
  224. class="dialog_diy"
  225. >
  226. <div>
  227. <div class="a_addBox">
  228. <WorkDate :dataJson="dataJson"></WorkDate>
  229. </div>
  230. </div>
  231. <span slot="footer" class="dialog-footer">
  232. <el-button @click="dialogVisible = false">关 闭</el-button>
  233. </span>
  234. </el-dialog>-->
  235. <WorkDate
  236. :dataJson="dataJson"
  237. :uid="userid"
  238. :cid="dataJson.courseId"
  239. :ooid="oid"
  240. @cancel="cancel"
  241. :dialogVisibleBao.sync="dialogVisibleBao"
  242. :dialogVisible.sync="dialogVisible"
  243. v-if="dialogVisible"
  244. class="workdates"
  245. ></WorkDate>
  246. <el-dialog
  247. title="自定义导出报告"
  248. :visible.sync="dialogVisibleBao"
  249. :append-to-body="true"
  250. width="550px"
  251. :before-close="handleClose"
  252. class="dialog_diy r_diy"
  253. >
  254. <div>
  255. <div>
  256. <Report :cid="dataJson.courseId"></Report>
  257. </div>
  258. </div>
  259. <span slot="footer" class="dialog-footer"> </span>
  260. </el-dialog>
  261. <el-dialog
  262. title="选择学生"
  263. :visible.sync="signDialog"
  264. width="500px"
  265. :before-close="handleClose"
  266. class="dialog_diy check_diy"
  267. >
  268. <div>
  269. <div class="student_search" style="margin-bottom: 10px">
  270. <div>筛选</div>
  271. <div style="display: flex; width: 90%">
  272. <el-select
  273. class="r_select"
  274. v-model="uname"
  275. placeholder="请选择学生"
  276. filterable
  277. @change="searchWork2"
  278. >
  279. <el-option label="所有班级" value></el-option>
  280. <el-option
  281. v-for="item in userAarray"
  282. :key="item.id"
  283. :label="item.name"
  284. :value="item.id"
  285. ></el-option>
  286. </el-select>
  287. </div>
  288. </div>
  289. <div>
  290. <el-table
  291. v-loading="isLoading2"
  292. ref="table"
  293. :data="res2"
  294. border
  295. :height="400"
  296. :fit="true"
  297. style="width: 100%"
  298. :row-class-name="tableRowClassName"
  299. :header-cell-style="{ background: 'rgb(238,238,238)' }"
  300. >
  301. <el-table-column
  302. prop="sName"
  303. label="姓名"
  304. min-width="20"
  305. align="center"
  306. ></el-table-column>
  307. <el-table-column
  308. label="班级"
  309. min-width="20"
  310. show-overflow-tooltip
  311. align="center"
  312. >
  313. <template slot-scope="scope">
  314. <div>{{ scope.row.class ? scope.row.class : '-' }}</div>
  315. </template>
  316. </el-table-column>
  317. <el-table-column align="center" label="操作" min-width="20">
  318. <template slot-scope="scope">
  319. <el-button
  320. type="primary"
  321. size="small"
  322. @click="getReport(scope.row)"
  323. >查看报告</el-button
  324. >
  325. </template>
  326. </el-table-column>
  327. </el-table>
  328. <div style="margin-top: 10px">
  329. <el-pagination
  330. background
  331. layout="prev, pager, next"
  332. :page-size="10"
  333. :total="total2"
  334. @current-change="handleCurrentChange2"
  335. ></el-pagination>
  336. </div>
  337. </div>
  338. </div>
  339. <span slot="footer" class="dialog-footer">
  340. <el-button @click="signDialog = false">关闭</el-button>
  341. </span>
  342. </el-dialog>
  343. <div class="report_box" v-if="reportVisible">
  344. <studentReport
  345. :checkCourse="checkCourse"
  346. :checkStudent="checkStudent"
  347. @cancelR="cancelR"
  348. :oid="oid"
  349. ></studentReport>
  350. </div>
  351. <!-- <div class="cancelbox" v-if="reportVisible">
  352. <el-button @click="cancelR" type="primary" size="small">返回</el-button>
  353. </div> -->
  354. </div>
  355. </template>
  356. <script>
  357. import WorkDate from "./components/workData";
  358. import Report from "./components/report";
  359. import studentReport from "./components/studentReport";
  360. import "../../common/aws-sdk-2.235.1.min.js";
  361. export default {
  362. components: {
  363. WorkDate,
  364. Report,
  365. studentReport,
  366. },
  367. data() {
  368. return {
  369. tableHeight: "500px",
  370. isLoading: false,
  371. formLabelWidth: "100px",
  372. tableData1: [],
  373. subject: "",
  374. sClass: "",
  375. subjectJuri: [],
  376. projectJuri: [],
  377. classJuri: [],
  378. evaJuri: [],
  379. grade: [],
  380. projectchoose: "",
  381. page: 1,
  382. total: 0,
  383. groupA: "0",
  384. classChoose: "",
  385. eChoose: "",
  386. cn: "",
  387. userid: this.$route.query.userid,
  388. org: this.$route.query.org,
  389. role: this.$route.query.role,
  390. oid: this.$route.query.oid,
  391. type: this.$route.query.type,
  392. dialogVisible: false,
  393. dialogVisibleBao: false,
  394. dataJson: {},
  395. signDialog: false,
  396. isLoading2: false,
  397. page2: 1,
  398. total2: 0,
  399. res2: [],
  400. checkCourse: "",
  401. reportVisible: false,
  402. checkStudent: "",
  403. userAarray: [],
  404. uname: "",
  405. };
  406. },
  407. mounted() {
  408. this.$nextTick(function () {
  409. this.tableHeight =
  410. window.innerHeight - this.$refs.table.$el.offsetTop - 200;
  411. if (this.tableHeight <= 530) {
  412. this.tableHeight = 530;
  413. }
  414. // 监听窗口大小变化
  415. let self = this;
  416. window.onresize = function () {
  417. self.tableHeight =
  418. window.innerHeight - self.$refs.table.$el.offsetTop - 200;
  419. if (self.tableHeight <= 530) {
  420. self.tableHeight = 530;
  421. }
  422. };
  423. });
  424. },
  425. methods: {
  426. goTo(path) {
  427. this.$router.push(path);
  428. },
  429. tableRowClassName({ row, rowIndex }) {
  430. if ((rowIndex + 1) % 2 === 0) {
  431. return "even_row";
  432. } else {
  433. return "";
  434. }
  435. },
  436. handleClose(done) {
  437. done();
  438. },
  439. handleCurrentChange(val) {
  440. this.page = val;
  441. this.getProject();
  442. },
  443. handleCurrentChange2(val) {
  444. this.page2 = val;
  445. this.getStudnet();
  446. },
  447. //获取班级列表
  448. // getClass() {
  449. // this.isLoading = true;
  450. // let params = {
  451. // cu: "",
  452. // cn: this.sClass,
  453. // page: this.page,
  454. // };
  455. // this.ajax
  456. // .get(this.$store.state.api + "selectClass", params)
  457. // .then((res) => {
  458. // this.isLoading = false;
  459. // this.grade = res.data[0];
  460. // })
  461. // .catch((err) => {
  462. // this.isLoading = false;
  463. // console.error(err);
  464. // });
  465. // },
  466. getProject() {
  467. this.isLoading = true;
  468. let params = {
  469. uid: this.userid,
  470. cid: this.classChoose,
  471. eid: this.eChoose,
  472. cn: this.cn,
  473. page: this.page,
  474. };
  475. this.ajax
  476. .get(this.$store.state.api + "getProject1", params)
  477. .then((res) => {
  478. this.isLoading = false;
  479. this.total = res.data[0].length > 0 ? res.data[0][0].num : 0;
  480. this.tableData1 = res.data[0];
  481. this.classJuri = res.data[2];
  482. var cJuri = res.data[1];
  483. for (var j = 0; j < this.tableData1.length; j++) {
  484. this.tableData1[j].classJson = { className: "" };
  485. for (var i = 0; i < cJuri.length; i++) {
  486. if (this.tableData1[j].courseId == cJuri[i].courseId) {
  487. if (cJuri[i].cName != undefined && cJuri[i].cName != null) {
  488. if (this.tableData1[j].classJson.className == "") {
  489. this.tableData1[j].classJson.className += cJuri[i].cName;
  490. } else {
  491. this.tableData1[j].classJson.className +=
  492. "," + cJuri[i].cName;
  493. }
  494. }
  495. }
  496. }
  497. }
  498. })
  499. .catch((err) => {
  500. this.isLoading = false;
  501. console.error(err);
  502. });
  503. },
  504. search() {
  505. this.page = 1;
  506. this.getProject();
  507. },
  508. getWorkData(res) {
  509. this.dataJson = res;
  510. this.dialogVisible = true;
  511. },
  512. cancel() {
  513. this.dataJson = "";
  514. this.dialogVisible = false;
  515. },
  516. cancelR() {
  517. this.checkStudent = "";
  518. this.reportVisible = false;
  519. this.signDialog = true;
  520. },
  521. searchWork2() {
  522. (this.page2 = 1), this.getStudnet();
  523. },
  524. getStudnet(row) {
  525. //获取作业
  526. this.signDialog = true;
  527. this.isLoading2 = true;
  528. this.checkCourse = row ? row.courseId : this.checkCourse;
  529. this.getCourseDetail();
  530. let params = {
  531. cid: this.checkCourse,
  532. uname: this.uname,
  533. stage: "",
  534. task: "",
  535. page: this.page2,
  536. };
  537. this.ajax
  538. .get(this.$store.state.api + "getCourseWorks3Copy", params)
  539. .then((res) => {
  540. this.isLoading2 = false;
  541. this.total2 = res.data[0].length > 0 ? res.data[0][0].num : 0;
  542. this.res2 = res.data[0];
  543. })
  544. .catch((err) => {
  545. this.isLoading2 = false;
  546. console.error(err);
  547. });
  548. },
  549. downloadFile(url){
  550. var credentials = {
  551. accessKeyId: "AKIATLPEDU37QV5CHLMH",
  552. secretAccessKey: "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",
  553. }; //秘钥形式的登录上传
  554. window.AWS.config.update(credentials);
  555. window.AWS.config.region = "cn-northwest-1"; //设置区域
  556. let url2 = url;
  557. let _url2 = "";
  558. if (
  559. url2.indexOf("https://view.officeapps.live.com/op/view.aspx?src=") != -1
  560. ) {
  561. _url2 = url2.split(
  562. "https://view.officeapps.live.com/op/view.aspx?src="
  563. )[1];
  564. } else {
  565. _url2 = url2;
  566. }
  567. let _this = this;
  568. _this.downLoading = true
  569. var s3 = new window.AWS.S3({ params: { Bucket: "ccrb" } });
  570. let name = decodeURIComponent(_url2.split("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/")[1])
  571. var params = {
  572. Bucket: "ccrb",
  573. Key: name
  574. };
  575. s3.getObject(params, function (err, data) {
  576. _this.downLoading = false
  577. if (err) console.log(err, err.stack); // an error occurred
  578. else {
  579. let url = window.URL.createObjectURL(new Blob([data.Body]));
  580. let a = document.createElement("a");
  581. a.name = 'student01-学生成长报告.pdf';
  582. a.href = url;
  583. a.download = 'student01-学生成长报告.pdf';
  584. a.click();
  585. console.log(data);
  586. } // sxuccessful response
  587. });
  588. },
  589. getCourseDetail() {
  590. let params = {
  591. cid: this.checkCourse,
  592. };
  593. this.ajax
  594. .get(this.$store.state.api + "getCourseReportClassList", params)
  595. .then((res) => {
  596. this.userAarray = res.data[0];
  597. })
  598. .catch((err) => {
  599. console.error(err);
  600. });
  601. },
  602. getReport(row) {
  603. this.checkStudent = row.userid;
  604. this.reportVisible = true;
  605. this.signDialog = false;
  606. },
  607. // getClass() {
  608. // let params = {
  609. // oid: this.oid,
  610. // };
  611. // this.ajax
  612. // .get(this.$store.state.api + "selectClassBySchool", params)
  613. // .then((res) => {
  614. // this.classJuri = res.data[0];
  615. // })
  616. // .catch((err) => {
  617. // console.error(err);
  618. // });
  619. // },
  620. getEva() {
  621. let params = {
  622. oid: this.oid,
  623. };
  624. this.ajax
  625. .get(this.$store.state.api + "selectAllEvaluation", params)
  626. .then((res) => {
  627. this.evaJuri = res.data[0];
  628. })
  629. .catch((err) => {
  630. console.error(err);
  631. });
  632. },
  633. },
  634. created() {
  635. this.page = 1;
  636. // this.getClass();
  637. this.getEva();
  638. this.getProject();
  639. },
  640. };
  641. </script>
  642. <style scoped>
  643. .sub_head {
  644. position: relative;
  645. margin: 0 10px;
  646. }
  647. .sub_head::after {
  648. content: "";
  649. width: 100%;
  650. background: #5a9cea;
  651. height: 2px;
  652. position: absolute;
  653. left: 0;
  654. bottom: -12px;
  655. }
  656. .pb_head > span:nth-child(1),
  657. .pb_head > span:nth-child(3) {
  658. /* font-size: 16px; */
  659. font-size: 26px;
  660. cursor: pointer;
  661. /* color: #ab582f; */
  662. /* color: #409eff; */
  663. color: #999;
  664. }
  665. .pb_head > span:nth-child(1):hover,
  666. .pb_head > span:nth-child(3):hover {
  667. color: #000;
  668. }
  669. .pb_head {
  670. margin: 0 !important;
  671. width: 100% !important;
  672. }
  673. .student_page {
  674. margin-top: 10px;
  675. }
  676. .student_head {
  677. margin-top: 10px;
  678. padding-bottom: 15px;
  679. display: flex;
  680. justify-content: space-between;
  681. }
  682. .student_search {
  683. display: flex;
  684. flex-direction: row;
  685. align-items: center;
  686. }
  687. .student_search > div:nth-child(1) {
  688. line-height: 35px;
  689. font-size: 14px;
  690. min-width: 60px;
  691. }
  692. .student_search > div:nth-child(4) {
  693. min-width: 100px;
  694. margin-left: 10px;
  695. cursor: pointer;
  696. }
  697. .student_search >>> .el-input__inner {
  698. width: 190px;
  699. height: 35px;
  700. margin-left: 10px;
  701. }
  702. .student_table >>> .el-table--border td {
  703. border-right: 0px !important;
  704. }
  705. .student_page {
  706. margin-top: 10px;
  707. }
  708. .student_table >>> .el-table,
  709. .student_table >>> .el-table__body-wrapper {
  710. height: auto !important;
  711. }
  712. .el-table >>> .even_row {
  713. background-color: #f1f1f1 !important;
  714. }
  715. .dialog_diy >>> .el-dialog__header {
  716. padding: 9px 20px 10px;
  717. background: #32455b !important;
  718. }
  719. .dialog_diy >>> .el-dialog__title {
  720. color: #fff;
  721. font-size: 15px;
  722. }
  723. .dialog_diy >>> .el-dialog__headerbtn {
  724. top: 14px;
  725. }
  726. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  727. color: #fff;
  728. }
  729. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  730. color: #fff;
  731. }
  732. .check_diy >>> .el-dialog__body {
  733. padding-bottom: 0;
  734. }
  735. .dialog_diy >>> .el-dialog__body,
  736. .dialog_diy >>> .el-dialog__footer {
  737. background: #fafafa;
  738. }
  739. .r_diy >>> .el-dialog__footer {
  740. padding: 0;
  741. }
  742. .a_addBox {
  743. height: 570px;
  744. overflow: auto;
  745. }
  746. .workdates {
  747. height: 100%;
  748. position: absolute;
  749. top: 0;
  750. background: #fff;
  751. overflow: auto;
  752. z-index: 1;
  753. width: 95%;
  754. left: 50%;
  755. transform: translateX(-50%);
  756. padding: 20px;
  757. box-sizing: border-box;
  758. }
  759. .cancelbox {
  760. position: absolute;
  761. z-index: 2;
  762. /* left: 50%; */
  763. right: 0;
  764. /* width: 95%; */
  765. transform: translateX(-50%);
  766. display: flex;
  767. justify-content: flex-end;
  768. /* padding: 0 90px 0px 0px; */
  769. box-sizing: border-box;
  770. }
  771. .report_box {
  772. height: 100%;
  773. position: absolute;
  774. top: 0;
  775. /* background: #fff; */
  776. background: rgb(231, 242, 252);
  777. overflow: auto;
  778. z-index: 1;
  779. width: 100%;
  780. left: 50%;
  781. transform: translateX(-50%);
  782. padding: 20px;
  783. box-sizing: border-box;
  784. }
  785. .mbCss >>> .el-input__inner {
  786. margin: 0 !important;
  787. }
  788. .student_search >>> .el-input {
  789. width: auto !important;
  790. }
  791. </style>