student.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657
  1. <template>
  2. <div class="content-box">
  3. <div class="pageIndex">
  4. <div class="left">
  5. <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
  6. <span class="cameratxt">学生综合素质评价</span>
  7. </div>
  8. <div class="middle">
  9. <div class="filter">
  10. <div class="condition">
  11. <el-input
  12. :clearable="true"
  13. @clear="searchBtn"
  14. v-model.trim="searchInput.keyWord"
  15. class="sel"
  16. placeholder="请输入学生姓名或学号"
  17. /><el-button
  18. color="rgba(0, 97, 255, 1)"
  19. type="primary"
  20. class="search"
  21. @click="searchBtn"
  22. >查询</el-button
  23. >
  24. </div>
  25. <div class="condition">
  26. <span class="title">学期 :</span>
  27. <el-select
  28. v-model="searchInput.semester"
  29. class="sel"
  30. placeholder="请选择学期"
  31. style="width: 250px"
  32. @change="searchBtn"
  33. :clearable="true"
  34. >
  35. <el-option
  36. :label="i.name"
  37. :value="i.id"
  38. v-for="i in semesterData"
  39. />
  40. </el-select>
  41. </div>
  42. <div class="condition">
  43. <span class="title">年级 :</span>
  44. <el-select
  45. v-model="searchInput.grade"
  46. placeholder="请选择年级"
  47. style="width: 160px"
  48. @change="yearClassChange"
  49. :clearable="true"
  50. >
  51. <el-option
  52. v-for="i in gradeData"
  53. :label="i.name"
  54. :value="`${i.name}-${i.id}`"
  55. >
  56. </el-option>
  57. </el-select>
  58. </div>
  59. <div class="condition">
  60. <span class="title">班级 :</span>
  61. <el-tooltip
  62. class="box-item"
  63. effect="dark"
  64. content="请先选择年级"
  65. placement="top"
  66. >
  67. <el-select
  68. v-model="searchInput.class"
  69. placeholder="请选择班级"
  70. style="width: 160px"
  71. @change="searchBtn"
  72. :clearable="true"
  73. >
  74. <el-option
  75. v-for="i in classsData"
  76. :label="i.name"
  77. :value="i.name"
  78. />
  79. </el-select>
  80. </el-tooltip>
  81. </div>
  82. <!-- <div class="condition">
  83. <span class="title">测评等级 :</span>
  84. <el-select
  85. v-model="searchInput.appraisal"
  86. class="sel"
  87. placeholder="请选择测评等级"
  88. >
  89. <el-option label="全部" value="1" />
  90. <el-option label="优等" value="2" />
  91. <el-option label="良" value="2" />
  92. </el-select>
  93. </div> -->
  94. <el-button
  95. type="primary"
  96. color="rgba(0, 97, 255, 1)"
  97. plain
  98. @click="scoreItemClick"
  99. >评分项管理</el-button
  100. >
  101. </div>
  102. </div>
  103. <div class="scroll">
  104. <div class="footer" v-loading="loading">
  105. <el-table
  106. :row-class-name="tableRowClassName"
  107. :data="tableData.list"
  108. @selection-change="handleSelectionChange"
  109. style="width: 100%"
  110. :header-cell-style="{
  111. background: 'rgba(240, 243, 247, 1)',
  112. height: '50px',
  113. border: 0,
  114. }"
  115. >
  116. <!-- <el-table-column align="center" type="selection" width="80" /> -->
  117. <el-table-column
  118. width="80"
  119. align="center"
  120. type="index"
  121. label="序号"
  122. />
  123. <el-table-column
  124. align="center"
  125. prop="term"
  126. width="200"
  127. label="学期"
  128. />
  129. <el-table-column align="center" prop="gradeName" label="年级" />
  130. <el-table-column align="center" prop="className" label="班级" />
  131. <el-table-column align="center" prop="name" label="姓名" />
  132. <el-table-column
  133. align="center"
  134. prop="scoreLevel"
  135. label="测评等级"
  136. />
  137. <el-table-column align="center" label="操作">
  138. <template #default="scope">
  139. <div class="edit">
  140. <div class="look" @click="teacherInfoClick(scope.row)">
  141. 教师寄语
  142. </div>
  143. </div>
  144. </template>
  145. </el-table-column>
  146. </el-table>
  147. </div>
  148. <!-- 分页组件 -->
  149. <div class="pageSize">
  150. <span></span>
  151. <el-pagination
  152. background
  153. :current-page="currentPage"
  154. :page-size="pageSize"
  155. layout="total, prev, pager, next, jumper, slot"
  156. :total="total"
  157. @update:current-page="handleCurrentChange"
  158. />
  159. </div>
  160. </div>
  161. </div>
  162. <!-- 教师寄语 -->
  163. <el-dialog
  164. class="teacherDialog"
  165. v-model="teacherVisible"
  166. :close-on-click-modal="false"
  167. :close-on-press-escape="false"
  168. title="教师寄语"
  169. align-center
  170. width="600"
  171. :before-close="cancelTeacher"
  172. >
  173. <el-input
  174. v-model="teacherRemark"
  175. style="width: 540px"
  176. :rows="12"
  177. type="textarea"
  178. placeholder="请输入评语"
  179. />
  180. <div class="options">
  181. <el-button
  182. color="rgba(41, 109, 227, 1)"
  183. class="queding"
  184. type="primary"
  185. @click="configTeacher"
  186. >
  187. 确认
  188. </el-button>
  189. <el-button @click="cancelTeacher">取消</el-button>
  190. </div>
  191. </el-dialog>
  192. <!-- 评分项管理 -->
  193. <el-dialog
  194. class="scoreItemDialog"
  195. v-model="scoreItemVisible"
  196. :close-on-click-modal="false"
  197. :close-on-press-escape="false"
  198. title="评分项管理"
  199. align-center
  200. width="1000"
  201. :before-close="cancelScoreItem"
  202. >
  203. <div class="selObject">
  204. <el-button
  205. type="primary"
  206. color="rgba(0, 97, 255, 1)"
  207. plain
  208. @click="criterionClick"
  209. >增加</el-button
  210. >
  211. </div>
  212. <el-table
  213. :row-class-name="tableRowClassName"
  214. :data="scoreItemData.list"
  215. :header-cell-style="{
  216. background: 'rgba(240, 243, 247, 1)',
  217. height: '50px',
  218. }"
  219. >
  220. <el-table-column width="80" align="center" type="index" label="序号" />
  221. <el-table-column width="160" align="center" prop="grade" label="年级" />
  222. <el-table-column width="230" align="center" prop="term" label="学期" />
  223. <el-table-column
  224. width="230"
  225. align="center"
  226. prop="createTime"
  227. label="创建时间"
  228. />
  229. <el-table-column align="center" prop="status" label="操作">
  230. <template #default="{ index, row }">
  231. <div class="option">
  232. <div class="edit" @click="criterionEditClick(row)">编辑</div>
  233. <div class="edit" @click="delScoreScope(row)">删除</div>
  234. </div>
  235. </template>
  236. </el-table-column>
  237. </el-table>
  238. </el-dialog>
  239. <!-- 新增评分项管理按钮 -->
  240. <el-dialog
  241. class="criterionDialog"
  242. v-model="criterionVisible"
  243. :close-on-click-modal="false"
  244. :close-on-press-escape="false"
  245. :title="criterionTitle"
  246. align-center
  247. width="825"
  248. :before-close="cancelCriterion"
  249. >
  250. <div class="criterion">
  251. <el-form
  252. ref="assessRef"
  253. :model="assessRuleForm"
  254. :rules="assessRules"
  255. label-width="90px"
  256. class="demo-ruleForm"
  257. :size="formSize"
  258. label-position="right"
  259. status-icon
  260. >
  261. <el-form-item label="考核年级 :" prop="grade">
  262. <el-select
  263. v-model="assessRuleForm.grade"
  264. :reserve-keyword="false"
  265. placeholder="请选择考核年级"
  266. style="width: 400px"
  267. @change="assessgradeChange"
  268. >
  269. <el-option
  270. :label="i.name"
  271. :value="i.name"
  272. v-for="i in gradeData"
  273. />
  274. </el-select>
  275. </el-form-item>
  276. <el-form-item label="学期 :" prop="term">
  277. <el-select
  278. v-model="assessRuleForm.term"
  279. placeholder="请选择学期"
  280. style="width: 400px"
  281. >
  282. <el-option
  283. :label="i.name"
  284. :value="i.name"
  285. v-for="i in semesterData"
  286. />
  287. </el-select>
  288. </el-form-item>
  289. <el-form-item label="考试类型 :" prop="type">
  290. <el-select
  291. v-model="assessRuleForm.type"
  292. placeholder="请先选择考试类型"
  293. multiple
  294. style="width: 400px"
  295. >
  296. <el-option
  297. :label="i.name"
  298. :value="i.name"
  299. v-for="i in examTypeData"
  300. />
  301. </el-select>
  302. <span style="margin-left: 10px; font-size: 12px">多选</span>
  303. </el-form-item>
  304. <div class="selObject">
  305. <ul>
  306. <li class="sel">平均成绩</li>
  307. </ul>
  308. </div>
  309. <el-table
  310. :row-class-name="tableRowClassName"
  311. :data="scoreScope.list"
  312. :header-cell-style="{
  313. background: 'rgba(240, 243, 247, 1)',
  314. height: '50px',
  315. }"
  316. >
  317. <el-table-column
  318. width="160"
  319. align="center"
  320. type="index"
  321. label="序号"
  322. />
  323. <el-table-column
  324. width="208"
  325. align="center"
  326. prop="status"
  327. label="等级"
  328. >
  329. <template #default="{ row, index }">
  330. <el-input
  331. :clearable="true"
  332. @clear="searchBtn"
  333. v-model.trim="row.status"
  334. class="grade_right"
  335. placeholder="请输入等级"
  336. style="width: 180px"
  337. v-if="row.flag"
  338. />
  339. <span v-else>{{ row.level }}</span>
  340. </template>
  341. </el-table-column>
  342. <el-table-column
  343. width="230"
  344. align="center"
  345. prop="score"
  346. label="分值区间"
  347. >
  348. <template #default="{ row, index }">
  349. <div class="grade" v-if="row.flag">
  350. <el-input
  351. :clearable="true"
  352. @clear="searchBtn"
  353. v-model.trim="row.scoreB"
  354. class="grade_left"
  355. placeholder="最低区间"
  356. style="width: 90px"
  357. />
  358. <span class="line">-</span>
  359. <el-input
  360. :clearable="true"
  361. @clear="searchBtn"
  362. v-model.trim="row.scoreT"
  363. class="grade_right"
  364. placeholder="最高区间"
  365. style="width: 90px"
  366. />
  367. </div>
  368. <span v-else>{{ row.scoreRange }}</span>
  369. </template>
  370. </el-table-column>
  371. <el-table-column align="center" prop="status" label="操作">
  372. <template #default="{ index, row }">
  373. <div class="edit" @click="editScoreScope(index, row)">编辑</div>
  374. </template>
  375. </el-table-column>
  376. </el-table>
  377. <el-form-item class="options">
  378. <el-button
  379. color="rgba(41, 109, 227, 1)"
  380. class="queding"
  381. type="primary"
  382. @click="confirmAssess(assessRef)"
  383. >
  384. 确认
  385. </el-button>
  386. <el-button @click="cancelAssess">取消</el-button>
  387. </el-form-item>
  388. </el-form>
  389. </div>
  390. </el-dialog>
  391. <!-- 编辑评分等级 -->
  392. <el-dialog
  393. class="addItemDialog"
  394. v-model="editCriterionVisible"
  395. :close-on-click-modal="false"
  396. :close-on-press-escape="false"
  397. title="编辑评分等级"
  398. align-center
  399. width="550"
  400. :before-close="cancelEditCriterion"
  401. >
  402. <el-form
  403. ref="editCriterionRef"
  404. :model="editCriterionRuleForm"
  405. :rules="editCriterionRules"
  406. label-width="100px"
  407. class="demo-ruleForm"
  408. :size="formSize"
  409. label-position="right"
  410. status-icon
  411. >
  412. <el-form-item label="等级 :" prop="level">
  413. <el-input
  414. v-model.trim="editCriterionRuleForm.level"
  415. placeholder="请输入等级名称"
  416. style="width: 300px"
  417. />
  418. </el-form-item>
  419. <el-form-item label="最小分 :" prop="scoreMin">
  420. <el-input
  421. v-model.trim="editCriterionRuleForm.scoreMin"
  422. placeholder="请输入最小分"
  423. style="width: 300px"
  424. />
  425. </el-form-item>
  426. <el-form-item label="最大分 :" prop="scoreMax">
  427. <el-input
  428. v-model.trim="editCriterionRuleForm.scoreMax"
  429. placeholder="请输入最大分"
  430. style="width: 300px"
  431. />
  432. </el-form-item>
  433. <el-form-item class="options">
  434. <el-button
  435. color="rgba(41, 109, 227, 1)"
  436. class="queding"
  437. type="primary"
  438. @click="confirmEditCriterion(editCriterionRef)"
  439. >
  440. 确认
  441. </el-button>
  442. <el-button @click="cancelEditCriterion">取消</el-button>
  443. </el-form-item>
  444. </el-form>
  445. </el-dialog>
  446. </div>
  447. </template>
  448. <script setup>
  449. import * as echarts from "echarts";
  450. import { markRaw } from "vue";
  451. import {
  452. ref,
  453. reactive,
  454. watch,
  455. nextTick,
  456. onBeforeMount,
  457. onMounted,
  458. onUnmounted,
  459. } from "vue";
  460. import { useRouter } from "vue-router";
  461. import { ElMessage, ElMessageBox } from "element-plus";
  462. import { Calendar } from "@element-plus/icons-vue";
  463. import vidiconsApi from "@/api/vidicons.js";
  464. import { dayjs } from "element-plus";
  465. import lodash from "lodash";
  466. import eds from "@/utils/eds.js";
  467. import axios from "axios";
  468. import { useStore } from "vuex";
  469. const store = useStore();
  470. const api = ref("");
  471. const router = useRouter();
  472. // 表格数据
  473. const loading = ref(false);
  474. const tableData = reactive({
  475. list: [
  476. {
  477. type: "2019-2020秋季学期(下学期)",
  478. name: "消息平台",
  479. link: "2020152",
  480. status: 1,
  481. describe: "消息平台",
  482. },
  483. ],
  484. });
  485. const searchInput = reactive({
  486. keyWord: "",
  487. semester: "", // 学期
  488. grade: "", // 年级
  489. class: "", // 班级
  490. appraisal: "", // 测评等级
  491. }); // 搜索按钮数据
  492. const currentPage = ref(1); // 当前页
  493. const pageSize = ref(10);
  494. const total = ref(5); // 当前总数
  495. const selectData = reactive({
  496. list: [
  497. { a: 1, b: 2, c: 1, d: 1, e: 1, f: 1, g: 1, h: 1, i: 1, j: 1, k: 1, l: 1 },
  498. ],
  499. }); // 表格勾选的数据
  500. const semesterData = ref(); //学期下拉数据
  501. const gradeData = ref(); //年级下拉数据
  502. const classsData = ref(); //班级下拉数据
  503. const examTypeData = ref(); //考试类型数据
  504. // 教师寄语
  505. const teacherVisible = ref(false);
  506. const teacherRemark = ref();
  507. const teacherId = ref();
  508. // 评分项管理 弹窗 (-------------------------------------------------)
  509. const scoreItemVisible = ref(false);
  510. const scoreItemData = reactive({
  511. list: [
  512. {
  513. grade: "七年级",
  514. semester: "2023年春季",
  515. createTime: "2023-04-11 12:20:10",
  516. },
  517. ],
  518. });
  519. // 评分项管理中的 新增页面 (------------------------------------------------)
  520. // 考核年级 、考核学期、考核考试类型数据上面已设置
  521. const assessRef = ref();
  522. const criterionTitle = ref("新增评分项");
  523. const criterionVisible = ref(false);
  524. const scoreScope = reactive({
  525. list: [],
  526. }); // 评分等级数据
  527. const assessRuleForm = reactive({
  528. grade: "", // 考核年级
  529. term: "", // 考核学期
  530. type: "", // 考核考试类型
  531. id: "",
  532. });
  533. // 表单验证
  534. const assessRules = reactive({
  535. grade: [{ required: true, message: "考核年级不能为空", trigger: "blur" }],
  536. term: [{ required: true, message: "学期不能为空", trigger: "blur" }],
  537. type: [{ required: true, message: "考试类型不能为空", trigger: "blur" }],
  538. });
  539. // 编辑评分等级(---------------------------)
  540. const editCriterionVisible = ref(false); // 编辑评分等级弹窗
  541. const editCriterionRef = ref();
  542. const editCriterionRuleForm = reactive({
  543. level: "", // 等级
  544. scoreMax: "",
  545. scoreMin: "",
  546. id: "",
  547. });
  548. const validateScoreMin = (rule, value, callback) => {
  549. if (!/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/.test(value)) {
  550. callback("请输入正确的分值");
  551. } else if (
  552. Number(editCriterionRuleForm.scoreMax) <
  553. Number(editCriterionRuleForm.scoreMin)
  554. ) {
  555. callback(new Error("最小分应小于最大分"));
  556. } else {
  557. callback();
  558. }
  559. };
  560. const validateScoreMax = (rule, value, callback) => {
  561. if (!/^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/.test(value)) {
  562. callback("请输入正确的分值");
  563. } else if (
  564. Number(editCriterionRuleForm.scoreMax) <
  565. Number(editCriterionRuleForm.scoreMin)
  566. ) {
  567. callback(new Error("最大分应大于最小分"));
  568. } else {
  569. callback();
  570. }
  571. };
  572. // 表单验证
  573. const editCriterionRules = reactive({
  574. level: [{ required: true, message: "等级不能为空", trigger: "blur" }],
  575. scoreMax: [
  576. { required: true, message: "最大分不能为空", trigger: "blur" },
  577. { validator: validateScoreMax, trigger: "blur" },
  578. ],
  579. scoreMin: [
  580. { required: true, message: "最小分不能为空", trigger: "blur" },
  581. // { validator: validateScoreMin, trigger: "blur" },
  582. ],
  583. });
  584. // 学生列表
  585. const getList = async () => {
  586. loading.value = true;
  587. let params = {
  588. currentPage: currentPage.value,
  589. pageCount: pageSize.value,
  590. };
  591. let data = {
  592. name: searchInput.keyWord,
  593. term: searchInput.semester,
  594. gradeName: searchInput.grade.split("-")[0],
  595. className: searchInput.class,
  596. // scoreLevel: searchInput.appraisal,
  597. };
  598. let res = await axios({
  599. method: "post",
  600. url: api.value + "/wanzai/api/smartEvaluateStudent/queryEvaluateStudent",
  601. headers: {
  602. token: sessionStorage.getItem("token"),
  603. user_head: sessionStorage.getItem("userhead"),
  604. },
  605. params: params,
  606. data: data,
  607. });
  608. console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "学生信息分页");
  609. if (res.data.code == 200) {
  610. loading.value = false;
  611. tableData.list = JSON.parse(eds.decryptDes(res.data.data)).list;
  612. total.value = JSON.parse(eds.decryptDes(res.data.data)).totalCount;
  613. // ElMessage({
  614. // type: "success",
  615. // showClose: true,
  616. // message: res.data.message,
  617. // center: true,
  618. // });
  619. } else {
  620. loading.value = false;
  621. ElMessage({
  622. type: "error",
  623. showClose: true,
  624. message: res.data.message,
  625. center: true,
  626. });
  627. }
  628. };
  629. // 获取学期下拉
  630. const semesterList = async () => {
  631. let semester = await axios({
  632. method: "get",
  633. url: api.value + "/wanzai/api/smartScore/querySmartSemesters",
  634. headers: {
  635. token: sessionStorage.getItem("token"),
  636. user_head: sessionStorage.getItem("userhead"),
  637. },
  638. // params: data,
  639. });
  640. console.log(
  641. semester,
  642. JSON.parse(eds.decryptDes(semester.data.data)),
  643. "学期下拉数据"
  644. );
  645. semesterData.value = JSON.parse(eds.decryptDes(semester.data.data));
  646. };
  647. // 年级数据下拉
  648. const classDataList = async () => {
  649. semesterList();
  650. let grade = await axios({
  651. method: "get",
  652. url: api.value + "/wanzai/api/smartGrade/querySmartGrades",
  653. headers: {
  654. token: sessionStorage.getItem("token"),
  655. user_head: sessionStorage.getItem("userhead"),
  656. },
  657. // params: data,
  658. });
  659. console.log(
  660. grade,
  661. JSON.parse(eds.decryptDes(grade.data.data)),
  662. "年级下拉数据"
  663. );
  664. gradeData.value = JSON.parse(eds.decryptDes(grade.data.data));
  665. };
  666. // 改变年级选择
  667. const yearClassChange = async (value) => {
  668. console.log(value);
  669. let arr = value.split("-");
  670. if (value) {
  671. classInfoList(arr[1]);
  672. } else {
  673. classsData.value = [];
  674. searchInput.class = "";
  675. }
  676. getList();
  677. };
  678. // 班级数据下拉
  679. const classInfoList = async (value) => {
  680. let data = {
  681. gradeId: value,
  682. };
  683. let classs = await axios({
  684. method: "get",
  685. url: api.value + "/wanzai/api/smartClass/querySmartClasss",
  686. headers: {
  687. token: sessionStorage.getItem("token"),
  688. user_head: sessionStorage.getItem("userhead"),
  689. },
  690. params: data,
  691. });
  692. console.log(
  693. classs,
  694. JSON.parse(eds.decryptDes(classs.data.data)),
  695. "班级下拉数据"
  696. );
  697. classsData.value = JSON.parse(eds.decryptDes(classs.data.data));
  698. };
  699. // 考试类型下拉
  700. const assessType = async (value) => {
  701. let data = {
  702. gradeId: value,
  703. };
  704. let examType = await axios({
  705. method: "get",
  706. url: api.value + "/wanzai/api/smartScore/queryExamTypes",
  707. headers: {
  708. token: sessionStorage.getItem("token"),
  709. user_head: sessionStorage.getItem("userhead"),
  710. },
  711. params: data,
  712. });
  713. // console.log(
  714. // examType,
  715. // JSON.parse(eds.decryptDes(examType.data.data)),
  716. // "考试类型下拉数据"
  717. // );
  718. console.log(examType, "考试类型下拉数据");
  719. if (examType.data.code == 200) {
  720. examTypeData.value = JSON.parse(eds.decryptDes(examType.data.data));
  721. // ElMessage({
  722. // type: "success",
  723. // showClose: true,
  724. // message: examType.data.message,
  725. // center: true,
  726. // });
  727. } else {
  728. ElMessage({
  729. type: "error",
  730. showClose: true,
  731. message: examType.data.message,
  732. center: true,
  733. });
  734. }
  735. };
  736. // 搜索功能
  737. const searchBtn = lodash.debounce(async () => {
  738. getList();
  739. }, 300);
  740. // 教师寄语弹窗
  741. const teacherInfoClick = (row) => {
  742. teacherVisible.value = true;
  743. teacherRemark.value = row.scoreComment;
  744. teacherId.value = row.id;
  745. };
  746. const configTeacher = async () => {
  747. let data = new FormData();
  748. data.append("id", teacherId.value);
  749. data.append("scoreComment", teacherRemark.value);
  750. let res = await axios({
  751. method: "post",
  752. url: api.value + "/wanzai/api/smartEvaluateStudent2/evaluateScore",
  753. headers: {
  754. token: sessionStorage.getItem("token"),
  755. user_head: sessionStorage.getItem("userhead"),
  756. },
  757. data: data,
  758. });
  759. if (res.data.code == 200) {
  760. teacherVisible.value = false;
  761. ElMessage({
  762. type: "success",
  763. showClose: true,
  764. message: res.data.message,
  765. center: true,
  766. });
  767. } else {
  768. ElMessage({
  769. type: "error",
  770. showClose: true,
  771. message: res.data.message,
  772. center: true,
  773. });
  774. }
  775. };
  776. const cancelTeacher = (row) => {
  777. teacherVisible.value = false;
  778. };
  779. // 评分项管理(-----------------------------------------------)
  780. const scoreItemClick = () => {
  781. scoreItemVisible.value = true;
  782. scoreItemList();
  783. };
  784. // 评分项管理数据
  785. const scoreItemList = async () => {
  786. let data = new FormData();
  787. data.append("currentPage", 1);
  788. data.append("pageCount", 200);
  789. let res = await axios({
  790. method: "post",
  791. url: api.value + "/wanzai/api/smartEvaluateStudent2/queryTemplatePage",
  792. headers: {
  793. token: sessionStorage.getItem("token"),
  794. user_head: sessionStorage.getItem("userhead"),
  795. },
  796. data: data,
  797. });
  798. console.log(res, "评分项管理表格数据");
  799. if (res.data.code == 200) {
  800. scoreItemData.list = res.data.data.list;
  801. } else {
  802. ElMessage({
  803. type: "error",
  804. showClose: true,
  805. message: res.data.message,
  806. center: true,
  807. });
  808. }
  809. };
  810. const cancelScoreItem = () => {
  811. scoreItemVisible.value = false;
  812. };
  813. // 删除评分管理
  814. const delScoreScope = async (row) => {
  815. let data = new FormData();
  816. data.append("id", row.id);
  817. let res = await axios({
  818. method: "post",
  819. url:
  820. api.value + "/wanzai/api/smartEvaluateStudent2/delSmartSubjectTemplate",
  821. headers: {
  822. token: sessionStorage.getItem("token"),
  823. user_head: sessionStorage.getItem("userhead"),
  824. },
  825. data: data,
  826. });
  827. if (res.data.code == 200) {
  828. scoreItemList();
  829. ElMessage({
  830. type: "success",
  831. showClose: true,
  832. message: res.data.message,
  833. center: true,
  834. });
  835. } else {
  836. ElMessage({
  837. type: "error",
  838. showClose: true,
  839. message: res.data.message,
  840. center: true,
  841. });
  842. }
  843. };
  844. //导出功能 (-------------------------------------------------)
  845. const importExcel = async () => {
  846. // if (searchInput.createTime == null) {
  847. // searchInput.createTime = "";
  848. // }
  849. // let data = new FormData();
  850. // data.set("car_number", searchInput.carnumber);
  851. // data.set("create_time", searchInput.createTime);
  852. // let res = await axios({
  853. // method: "post",
  854. // url: api.value + "/carBook/cinfotoExcel.action",
  855. // headers: {
  856. // token: sessionStorage.getItem("token"),
  857. // user_head: sessionStorage.getItem("userhead"),
  858. // },
  859. // data: data,
  860. // });
  861. // // console.log(res, "导出账号");
  862. // if (res.data.code == 200) {
  863. // // const elt = document.createElement("a");
  864. // // elt.setAttribute(
  865. // // "href",
  866. // // "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl
  867. // // );
  868. // // elt.setAttribute("download", "file.png");
  869. // // elt.style.display = "none";
  870. // // document.body.appendChild(elt);
  871. // // elt.click();
  872. // var downloadPath = "https://chtech.ncjti.edu.cn/carstop" + res.data.downurl;
  873. // console.log("获得地址数据:", downloadPath);
  874. // var downloadLink = document.createElement("a");
  875. // downloadLink.style.display = "none"; // 使其隐藏
  876. // downloadLink.href = downloadPath;
  877. // downloadLink.download = "";
  878. // downloadLink.click();
  879. // document.body.appendChild(downloadLink);
  880. // document.body.removeChild(downloadLink);
  881. // ElMessage({
  882. // type: "success",
  883. // showClose: true,
  884. // message: res.data.message,
  885. // center: true,
  886. // });
  887. // } else {
  888. // ElMessage({
  889. // type: "error",
  890. // showClose: true,
  891. // message: res.data.message,
  892. // center: true,
  893. // });
  894. // }
  895. };
  896. // 增加评分项按钮(----------------------------------------------------------------)
  897. const criterionClick = () => {
  898. criterionVisible.value = true;
  899. criterionTitle.value = "新增评分项";
  900. criterionDataList(); // 评分标准数据
  901. assessRuleForm.grade = "";
  902. assessRuleForm.term = "";
  903. assessRuleForm.type = "";
  904. assessRuleForm.id = "";
  905. };
  906. // 改变年级 改变考试类型
  907. const assessgradeChange = (value) => {
  908. let id = "";
  909. gradeData.value.forEach((item) => {
  910. if (item.name == value) {
  911. id = item.id;
  912. }
  913. });
  914. assessType(id);
  915. assessRuleForm.type = [];
  916. };
  917. // 等级标准数据
  918. const criterionDataList = async () => {
  919. let res = await axios({
  920. method: "post",
  921. url: api.value + "/wanzai/api/smartEvaluateStudent/querySubjectRule",
  922. headers: {
  923. token: sessionStorage.getItem("token"),
  924. user_head: sessionStorage.getItem("userhead"),
  925. },
  926. });
  927. console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "评分标准数据");
  928. if (res.data.code == 200) {
  929. scoreScope.list = JSON.parse(
  930. eds.decryptDes(res.data.data)
  931. ).smartSubjectRuleInLists[6].subjectRuleList;
  932. console.log(scoreScope.list, "标准评分表格");
  933. } else {
  934. ElMessage({
  935. type: "error",
  936. showClose: true,
  937. message: res.data.message,
  938. center: true,
  939. });
  940. }
  941. };
  942. const confirmAssess = (formEl) => {
  943. formEl.validate(async (valid, fields) => {
  944. if (valid) {
  945. let arr = [];
  946. scoreScope.list.forEach((item, index) => {
  947. arr.push({ level: item.level, scoreRange: item.scoreRange });
  948. });
  949. let data = {
  950. smartSubjectTemplate: {
  951. grade: assessRuleForm.grade,
  952. term: assessRuleForm.term,
  953. examType: assessRuleForm.type.join(","),
  954. },
  955. ruleList: arr,
  956. };
  957. console.log(data);
  958. if (assessRuleForm.id) {
  959. data.smartSubjectTemplate.id = assessRuleForm.id;
  960. let res = await axios({
  961. method: "post",
  962. url:
  963. api.value +
  964. "/wanzai/api/smartEvaluateStudent2/updateSmartSubjectTemplate",
  965. headers: {
  966. token: sessionStorage.getItem("token"),
  967. user_head: sessionStorage.getItem("userhead"),
  968. },
  969. data: data,
  970. });
  971. console.log(res, "评分管理-新增/更新/删除");
  972. if (res.data.code == 200) {
  973. scoreItemList();
  974. criterionVisible.value = false;
  975. ElMessage({
  976. type: "success",
  977. showClose: true,
  978. message: res.data.message,
  979. center: true,
  980. });
  981. } else {
  982. ElMessage({
  983. type: "error",
  984. showClose: true,
  985. message: res.data.message,
  986. center: true,
  987. });
  988. }
  989. } else {
  990. let res = await axios({
  991. method: "post",
  992. url:
  993. api.value +
  994. "/wanzai/api/smartEvaluateStudent2/addSmartSubjectTemplate",
  995. headers: {
  996. token: sessionStorage.getItem("token"),
  997. user_head: sessionStorage.getItem("userhead"),
  998. },
  999. data: data,
  1000. });
  1001. console.log(res, "评分管理-新增/更新/删除");
  1002. if (res.data.code == 200) {
  1003. scoreItemList();
  1004. criterionVisible.value = false;
  1005. ElMessage({
  1006. type: "success",
  1007. showClose: true,
  1008. message: res.data.message,
  1009. center: true,
  1010. });
  1011. } else {
  1012. ElMessage({
  1013. type: "error",
  1014. showClose: true,
  1015. message: res.data.message,
  1016. center: true,
  1017. });
  1018. }
  1019. }
  1020. }
  1021. });
  1022. };
  1023. const cancelAssess = () => {
  1024. criterionVisible.value = false;
  1025. assessRef.value.resetFields();
  1026. };
  1027. // 编辑评分项按钮(----------------------------------------------------------------)
  1028. const criterionEditClick = async (row) => {
  1029. criterionVisible.value = true;
  1030. criterionTitle.value = "编辑评分项";
  1031. console.log(row);
  1032. let id = "";
  1033. gradeData.value.forEach((item) => {
  1034. if (item.name == row.grade) {
  1035. id = item.id;
  1036. }
  1037. });
  1038. assessType(id);
  1039. assessRuleForm.grade = row.grade;
  1040. assessRuleForm.term = row.term;
  1041. assessRuleForm.id = row.id;
  1042. assessRuleForm.type = row.examType.split(",");
  1043. // 编辑时的等级表格数据
  1044. let formData = new FormData();
  1045. formData.append("id", row.id);
  1046. let res = await axios({
  1047. method: "post",
  1048. url: api.value + "/wanzai/api/smartEvaluateStudent2/queryTemplateRulePage",
  1049. headers: {
  1050. token: sessionStorage.getItem("token"),
  1051. user_head: sessionStorage.getItem("userhead"),
  1052. },
  1053. data: formData,
  1054. });
  1055. // console.log(res, JSON.parse(eds.decryptDes(res.data.data)), "评分标准数据");
  1056. console.log(res, "编辑时的等级表格数据");
  1057. if (res.data.code == 200) {
  1058. scoreScope.list = res.data.data;
  1059. } else {
  1060. ElMessage({
  1061. type: "error",
  1062. showClose: true,
  1063. message: res.data.message,
  1064. center: true,
  1065. });
  1066. }
  1067. };
  1068. // 编辑评分等级(----------------------------------------)
  1069. const editScoreScope = (index, row) => {
  1070. console.log(row, "编辑等级");
  1071. editCriterionVisible.value = true;
  1072. editCriterionRuleForm.level = row.level;
  1073. editCriterionRuleForm.id = row.id;
  1074. let arr = row.scoreRange.split("-");
  1075. editCriterionRuleForm.scoreMin = arr[0];
  1076. editCriterionRuleForm.scoreMax = arr[1];
  1077. };
  1078. const confirmEditCriterion = (formEl) => {
  1079. if (!formEl) return;
  1080. formEl.validate(async (valid, fields) => {
  1081. if (valid) {
  1082. scoreScope.list.forEach((item, index) => {
  1083. if (item.id == editCriterionRuleForm.id) {
  1084. item.level = editCriterionRuleForm.level;
  1085. item.scoreRange =
  1086. editCriterionRuleForm.scoreMin +
  1087. "-" +
  1088. editCriterionRuleForm.scoreMax;
  1089. }
  1090. editCriterionVisible.value = false;
  1091. });
  1092. }
  1093. });
  1094. };
  1095. const cancelEditCriterion = () => {
  1096. editCriterionVisible.value = false;
  1097. };
  1098. // 表格斑马纹颜色修改
  1099. const tableRowClassName = ({ row, rowIndex }) => {
  1100. if (rowIndex % 2 === 0) {
  1101. return "even";
  1102. } else if (rowIndex % 2 !== 0) {
  1103. return "odd";
  1104. }
  1105. return "";
  1106. };
  1107. // 分页
  1108. const handleCurrentChange = (value) => {
  1109. // console.log(value);
  1110. currentPage.value = value;
  1111. getList();
  1112. };
  1113. onBeforeMount(async () => {
  1114. api.value = store.state.user.api;
  1115. getList();
  1116. classDataList();
  1117. });
  1118. onMounted(() => {});
  1119. onUnmounted(() => {
  1120. // scoreEcharts.value.dispose();
  1121. });
  1122. </script>
  1123. <style scoped lang="scss">
  1124. .content-box {
  1125. min-width: 1000px;
  1126. width: calc(100vw - 260px);
  1127. height: calc(100vh - 105px);
  1128. margin: 20px auto;
  1129. background-color: #fff;
  1130. display: flex;
  1131. flex-direction: column;
  1132. box-shadow: 0px 3px 10px rgba(0, 97, 255, 0.2);
  1133. .pageIndex {
  1134. width: 100%;
  1135. height: 100%;
  1136. display: flex;
  1137. flex-direction: column;
  1138. }
  1139. .left {
  1140. // width: calc(100wh - 40px);
  1141. display: flex;
  1142. align-items: center;
  1143. height: 60px;
  1144. margin: 0 30px;
  1145. border-bottom: 1px solid #ccc;
  1146. color: rgb(0, 0, 0);
  1147. font-size: 18px;
  1148. font-weight: 600;
  1149. span {
  1150. display: block;
  1151. height: 60px;
  1152. line-height: 60px;
  1153. }
  1154. .is_active {
  1155. color: rgba(111, 182, 184, 1);
  1156. }
  1157. }
  1158. .scroll {
  1159. // height: calc(100% - 175px);
  1160. flex: 1;
  1161. overflow: auto;
  1162. }
  1163. .middle {
  1164. width: 96%;
  1165. margin: 0 auto;
  1166. color: #000;
  1167. // border-bottom: 1px solid rgb(231, 231, 231);
  1168. .filter {
  1169. display: flex;
  1170. flex-wrap: wrap;
  1171. align-items: center;
  1172. margin: 10px 0 0 0;
  1173. .search {
  1174. color: #fff;
  1175. }
  1176. .condition {
  1177. display: flex;
  1178. align-items: center;
  1179. margin: 10px 30px 10px 0;
  1180. .title {
  1181. padding-right: 5px;
  1182. }
  1183. .sel {
  1184. margin-right: 10px;
  1185. }
  1186. :deep(.el-input .el-input__inner) {
  1187. font-size: 14px;
  1188. }
  1189. }
  1190. }
  1191. .gongneng {
  1192. margin: 10px 0 20px 0;
  1193. span {
  1194. color: #fff;
  1195. }
  1196. .el-button {
  1197. margin-right: 10px;
  1198. }
  1199. }
  1200. :deep(.download) {
  1201. display: flex;
  1202. align-items: center;
  1203. margin: 10px;
  1204. }
  1205. :deep(.download span) {
  1206. font-size: 16px;
  1207. margin-left: 20px;
  1208. }
  1209. }
  1210. .footer {
  1211. width: 96%;
  1212. height: calc(100% - 70px);
  1213. margin: 10px auto;
  1214. .el-table--fit {
  1215. height: 100%;
  1216. :deep(.el-table__header-wrapper) {
  1217. background-color: #000;
  1218. font-size: 14px;
  1219. }
  1220. :deep(.el-table__row) {
  1221. height: 50px;
  1222. font-size: 14px;
  1223. // color: #000;
  1224. &:hover {
  1225. td {
  1226. background-color: rgba(223, 236, 254, 1);
  1227. }
  1228. }
  1229. }
  1230. :deep(.el-table__row td) {
  1231. padding: 0;
  1232. .normal {
  1233. cursor: pointer;
  1234. color: rgba(0, 97, 255, 1);
  1235. }
  1236. }
  1237. .el-button--primary {
  1238. margin-left: 5px;
  1239. }
  1240. :deep(.el-table__body .even) {
  1241. background-color: #fff;
  1242. }
  1243. :deep(.el-table__body .odd) {
  1244. background-color: rgba(240, 243, 247, 1);
  1245. }
  1246. :deep(.edit) {
  1247. display: flex;
  1248. align-items: center;
  1249. justify-content: center;
  1250. color: rgba(111, 182, 184, 1);
  1251. }
  1252. :deep(.look) {
  1253. padding: 0 10px;
  1254. cursor: pointer;
  1255. color: rgba(30, 125, 251, 1);
  1256. }
  1257. .del {
  1258. padding: 0 10px;
  1259. color: rgba(212, 48, 48, 1);
  1260. cursor: pointer;
  1261. }
  1262. // :deep(.look):hover {
  1263. // color: red;
  1264. // }
  1265. // :deep(.del):hover {
  1266. // color: red;
  1267. // }
  1268. }
  1269. }
  1270. // 评分项管理
  1271. :deep(.scoreItemDialog) {
  1272. border-radius: 11px;
  1273. .el-dialog__header {
  1274. border-radius: 11px 11px 0 0;
  1275. background: rgba(237, 241, 245, 1);
  1276. font-weight: 600;
  1277. margin: 0;
  1278. .el-dialog__headerbtn {
  1279. outline: none;
  1280. }
  1281. }
  1282. .el-dialog__body {
  1283. padding: 0 30px 20px;
  1284. .selObject {
  1285. padding: 10px 0;
  1286. }
  1287. .el-table--fit {
  1288. height: 500px;
  1289. .el-table__header-wrapper {
  1290. font-size: 14px;
  1291. .cell {
  1292. color: #000;
  1293. }
  1294. }
  1295. .el-table__row {
  1296. height: 50px;
  1297. font-size: 14px;
  1298. color: #000;
  1299. td {
  1300. padding: 0;
  1301. border-right: 1px solid rgba(230, 230, 230, 1);
  1302. &:nth-child(1) {
  1303. border-left: 1px solid rgba(230, 230, 230, 1);
  1304. }
  1305. }
  1306. .option {
  1307. display: flex;
  1308. align-items: center;
  1309. justify-content: center;
  1310. .edit {
  1311. color: rgba(0, 97, 255, 1);
  1312. cursor: pointer;
  1313. padding-right: 10px;
  1314. }
  1315. }
  1316. }
  1317. }
  1318. .options {
  1319. margin: 30px 20px 0 0;
  1320. width: 100%;
  1321. display: flex;
  1322. flex-direction: row-reverse;
  1323. .queding {
  1324. color: #fff;
  1325. margin-left: 15px;
  1326. }
  1327. }
  1328. }
  1329. }
  1330. // 去评分按钮
  1331. :deep(.criterionDialog) {
  1332. // height: 420px;
  1333. border-radius: 11px;
  1334. .el-dialog__header {
  1335. border-radius: 11px 11px 0 0;
  1336. background: rgba(237, 241, 245, 1);
  1337. font-weight: 600;
  1338. margin: 0;
  1339. .el-dialog__headerbtn {
  1340. outline: none;
  1341. }
  1342. }
  1343. .el-dialog__body {
  1344. padding: 15px 30px 30px 30px;
  1345. .criterion {
  1346. .selObject {
  1347. ul {
  1348. display: flex;
  1349. list-style: none;
  1350. padding: 0;
  1351. li {
  1352. width: 70px;
  1353. height: 37px;
  1354. text-align: center;
  1355. line-height: 37px;
  1356. padding: 0;
  1357. margin-right: 10px;
  1358. border-radius: 5px;
  1359. background: rgba(242, 242, 242, 1);
  1360. border: 1px solid rgba(204, 204, 204, 1);
  1361. color: rgba(166, 166, 166, 1);
  1362. cursor: pointer;
  1363. }
  1364. .sel {
  1365. color: rgba(0, 97, 255, 1);
  1366. background: rgba(235, 242, 255, 1);
  1367. border: 1px solid rgba(0, 97, 255, 1);
  1368. }
  1369. }
  1370. }
  1371. .el-table--fit {
  1372. height: calc(100% - 92px);
  1373. .el-table__header-wrapper {
  1374. font-size: 14px;
  1375. .cell {
  1376. color: #000;
  1377. }
  1378. }
  1379. .el-table__row {
  1380. height: 50px;
  1381. font-size: 14px;
  1382. color: #000;
  1383. td {
  1384. padding: 0;
  1385. border-right: 1px solid rgba(230, 230, 230, 1);
  1386. &:nth-child(1) {
  1387. border-left: 1px solid rgba(230, 230, 230, 1);
  1388. }
  1389. }
  1390. .edit {
  1391. color: rgba(0, 97, 255, 1);
  1392. cursor: pointer;
  1393. }
  1394. .grade {
  1395. display: flex;
  1396. justify-content: center;
  1397. .el-input {
  1398. .el-input__wrapper {
  1399. box-shadow: none;
  1400. }
  1401. }
  1402. .grade_left {
  1403. border-top: 1px solid #dcdfe6;
  1404. border-bottom: 1px solid #dcdfe6;
  1405. border-left: 1px solid #dcdfe6;
  1406. border-top-left-radius: 4px;
  1407. border-bottom-left-radius: 4px;
  1408. }
  1409. .line {
  1410. display: block;
  1411. height: 32px;
  1412. line-height: 32px;
  1413. padding: 0 8px;
  1414. border-top: 1px solid #dcdfe6;
  1415. border-bottom: 1px solid #dcdfe6;
  1416. }
  1417. .grade_right {
  1418. border-top: 1px solid #dcdfe6;
  1419. border-bottom: 1px solid #dcdfe6;
  1420. border-right: 1px solid #dcdfe6;
  1421. border-top-right-radius: 4px;
  1422. border-bottom-right-radius: 4px;
  1423. }
  1424. }
  1425. &:hover {
  1426. td {
  1427. // background-color: rgba(223, 236, 254, 0.6);
  1428. background-color: transparent;
  1429. }
  1430. }
  1431. }
  1432. }
  1433. }
  1434. .options {
  1435. margin: 30px 20px 0 0;
  1436. width: 100%;
  1437. display: flex;
  1438. flex-direction: row-reverse;
  1439. .el-form-item__content {
  1440. flex: none;
  1441. }
  1442. .queding {
  1443. color: #fff;
  1444. margin-left: 15px;
  1445. }
  1446. }
  1447. }
  1448. }
  1449. // 等级评分
  1450. :deep(.addItemDialog) {
  1451. // height: 420px;
  1452. border-radius: 11px;
  1453. .el-dialog__header {
  1454. border-radius: 11px 11px 0 0;
  1455. background: rgba(237, 241, 245, 1);
  1456. font-weight: 600;
  1457. margin: 0;
  1458. .el-dialog__headerbtn {
  1459. outline: none;
  1460. }
  1461. }
  1462. .el-dialog__body {
  1463. padding: 30px 30px 10px 30px;
  1464. .el-form-item__content {
  1465. width: 200px;
  1466. .el-input-group__append {
  1467. background-color: rgba(222, 234, 252, 1);
  1468. color: rgba(0, 97, 255, 1);
  1469. cursor: pointer;
  1470. user-select: none;
  1471. }
  1472. }
  1473. .el-form {
  1474. .typeTitle {
  1475. display: block;
  1476. color: red;
  1477. margin: 0 0 6px 100px;
  1478. }
  1479. .account {
  1480. display: flex;
  1481. justify-content: space-between;
  1482. .el-form-item {
  1483. .el-form-item__content {
  1484. width: 300px;
  1485. }
  1486. .el-input {
  1487. width: 300px;
  1488. }
  1489. }
  1490. }
  1491. }
  1492. .options {
  1493. margin: 50px 20px 20px 0;
  1494. width: 100%;
  1495. .el-form-item__content {
  1496. display: flex;
  1497. flex-direction: row-reverse;
  1498. }
  1499. .queding {
  1500. color: #fff;
  1501. margin-left: 15px;
  1502. }
  1503. }
  1504. }
  1505. }
  1506. // 教师寄语
  1507. :deep(.teacherDialog) {
  1508. // height: 420px;
  1509. border-radius: 11px;
  1510. .el-dialog__header {
  1511. border-radius: 11px 11px 0 0;
  1512. background: rgba(237, 241, 245, 1);
  1513. font-weight: 600;
  1514. margin: 0;
  1515. .el-dialog__headerbtn {
  1516. outline: none;
  1517. }
  1518. }
  1519. .el-dialog__body {
  1520. padding: 20px 30px;
  1521. .options {
  1522. margin-top: 15px;
  1523. width: 100%;
  1524. display: flex;
  1525. flex-direction: row-reverse;
  1526. .queding {
  1527. color: #fff;
  1528. margin-left: 15px;
  1529. }
  1530. }
  1531. }
  1532. }
  1533. .pageSize {
  1534. display: flex;
  1535. align-items: center;
  1536. justify-content: space-between;
  1537. margin: 0 30px;
  1538. span {
  1539. color: #000;
  1540. }
  1541. .el-pagination {
  1542. // width: 1600px;
  1543. :deep(.el-pagination__total) {
  1544. color: #000;
  1545. }
  1546. :deep(.el-pagination__goto) {
  1547. color: #000;
  1548. }
  1549. :deep(.el-pagination__classifier) {
  1550. color: #000;
  1551. }
  1552. :deep(.el-input__wrapper) {
  1553. border: 1px solid rgba(0, 0, 0, 1);
  1554. border-radius: 5px;
  1555. box-shadow: none;
  1556. }
  1557. :deep(.el-pager li) {
  1558. margin: 0 5px;
  1559. border: 1px solid rgba(0, 0, 0, 1);
  1560. border-radius: 5px;
  1561. background-color: transparent;
  1562. }
  1563. :deep(.el-pager li.is-active) {
  1564. // background-color: rgba(0, 97, 255, 0.8);
  1565. border: 1px solid rgba(0, 97, 255, 1);
  1566. color: rgba(0, 97, 255, 1);
  1567. }
  1568. :deep(.btn-prev) {
  1569. margin-right: 5px;
  1570. border: 1px solid rgba(0, 0, 0, 1);
  1571. border-radius: 5px;
  1572. background-color: transparent;
  1573. }
  1574. :deep(.btn-next) {
  1575. margin-left: 5px;
  1576. border: 1px solid rgba(0, 0, 0, 1);
  1577. border-radius: 5px;
  1578. background-color: transparent;
  1579. }
  1580. }
  1581. }
  1582. }
  1583. .el-input {
  1584. width: 192px;
  1585. }
  1586. </style>