propositionAnalysis.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709
  1. <template>
  2. <ReportModule
  3. :showHeader="false"
  4. :showTitle="false"
  5. :showDescribe="false"
  6. tableOrChart="qita"
  7. :showPrintBtn="false"
  8. :showExportBtn="false"
  9. >
  10. <template #module_qita>
  11. <div class="card_container">
  12. <div
  13. class="paper_card"
  14. v-for="(item, index) in state.paperItems"
  15. :key="index"
  16. :style="{ background: item.background }"
  17. >
  18. <div
  19. class="background-image"
  20. :style="{ backgroundImage: `url(${item.backgroundImage})` }"
  21. ></div>
  22. <div class="statistic" :style="{ color: item.color }">
  23. {{ item.label }}
  24. </div>
  25. <div class="value" :style="{ color: item.color }">
  26. {{ item.value }}
  27. </div>
  28. </div>
  29. </div>
  30. </template>
  31. </ReportModule>
  32. <ReportModule
  33. :titleList="['1、难度与区分度对比图']"
  34. tableOrChart="chart"
  35. :showPrintBtn="false"
  36. :showExportBtn="false"
  37. >
  38. <template #module_table_chart>
  39. <LineChart
  40. v-if="state.lineChartData?.datax?.length"
  41. :datax="state.lineChartData.datax"
  42. :datay="state.lineChartData.datay"
  43. :showCheckBox="false"
  44. :extraText="false"
  45. :showMarkPoint="true"
  46. :showMarkLine="true"
  47. :gridRight="40"
  48. :isSetMarkNumber="true"
  49. :markNumber="state.lineChartData.markNumber"
  50. :title="state.lineChartData.title"
  51. :legendList="state.lineChartData.title"
  52. ></LineChart>
  53. <div
  54. v-else
  55. class="module_chart no_content_data"
  56. v-loading="state.dataLoading"
  57. :element-loading-text="state.loadingText"
  58. :element-loading-spinner="loadingSvgIcon"
  59. element-loading-background="#ffffff"
  60. >
  61. <span>暂无数据</span>
  62. </div>
  63. </template>
  64. <template #module_describe>
  65. 说明:难度指试题的难易程度,通常用P值表示。计算方式为P=X/M(P为难度,X为试题平均得分,M为试题满分)。P值在0到1之间,值越大表示试题越简单,试题通常分为容易题(P≥0.7)、中等题(0.4至0.7之间)和难题(P≤0.4)。
  66. 区分度是衡量试题对不同水平考生的区分能力,通常用D值表示。通过计算高分组和低分组在某一试题上的通过率之差,得到试题区分度。区分度高的试题能将不同水平的考生区分开来,水平高的学生得高分,水平低的学生得低分。D值的取值范围介于-1至1之间,D值越高,区分的效果越好。D≥0.4表明此题的区分度很好,属于优秀;0.3≤D<0.4表明此题的区分度较好,属于良好;0.2≤D<0.4表明此题的区分度一般;D<0.2表明此题的区分度较低。
  67. 分析试题的难度和区分度可以确保试题的质量和有效性,从而更好地评估学生的知识掌握程度和区分不同水平的学生。
  68. </template>
  69. </ReportModule>
  70. <ReportModule
  71. :titleList="['2、难度分布']"
  72. :showDescribe="false"
  73. tableOrChart="qita"
  74. :showPrintBtn="false"
  75. :showExportBtn="false"
  76. >
  77. <template #module_qita>
  78. <div class="content_left">
  79. <PieChart
  80. v-if="state.difficultyChart.data?.length"
  81. height="340"
  82. :data="state.difficultyChart.data"
  83. :refresh="state.difficultyChart.refresh"
  84. @refresh="GetFirstPieRefresh"
  85. />
  86. <div
  87. v-else
  88. class="module_chart no_content_data"
  89. v-loading="state.dataLoading"
  90. :element-loading-text="state.loadingText"
  91. :element-loading-spinner="loadingSvgIcon"
  92. element-loading-background="#ffffff"
  93. >
  94. <span>暂无数据</span>
  95. </div>
  96. </div>
  97. <div class="content_right table_42">
  98. <el-table
  99. border
  100. :data="state.difficultyChart.tableData"
  101. stripe
  102. align="center"
  103. row-key="name"
  104. >
  105. <el-table-column
  106. prop="name"
  107. label="分类"
  108. align="center"
  109. width="100"
  110. show-overflow-tooltip
  111. v-if="state.difficultyChart.tableData.length"
  112. />
  113. <el-table-column
  114. prop="value"
  115. label="难度系数"
  116. align="center"
  117. width="120"
  118. show-overflow-tooltip
  119. v-if="state.difficultyChart.tableData.length"
  120. />
  121. <el-table-column
  122. prop="score"
  123. label="满分"
  124. align="center"
  125. width="80"
  126. show-overflow-tooltip
  127. v-if="state.difficultyChart.tableData.length"
  128. />
  129. <el-table-column
  130. prop="scoreRate"
  131. label="分数占比"
  132. align="center"
  133. width="90"
  134. show-overflow-tooltip
  135. v-if="state.difficultyChart.tableData.length"
  136. >
  137. <template #default="scope">
  138. <span>{{ scope.row.scoreRate }}%</span>
  139. </template>
  140. </el-table-column>
  141. <el-table-column
  142. :prop="item.prop"
  143. :label="item.label"
  144. align="center"
  145. show-overflow-tooltip
  146. v-for="(item, index) in state.discriminationChart.headerData"
  147. :key="index"
  148. >
  149. <template #default="scope">
  150. {{ scope.row[item.prop] || "-" }}
  151. </template>
  152. </el-table-column>
  153. </el-table>
  154. </div>
  155. </template>
  156. </ReportModule>
  157. <ReportModule
  158. :titleList="['3、区分度分布']"
  159. :showDescribe="false"
  160. tableOrChart="qita"
  161. :showPrintBtn="false"
  162. :showExportBtn="false"
  163. >
  164. <template #module_qita>
  165. <div class="content_left">
  166. <PieChart
  167. v-if="state.discriminationChart.data?.length"
  168. :color="['#5470C6', '#3BA272', '#FAC858', '#EE6666']"
  169. height="340"
  170. :data="state.discriminationChart.data"
  171. :refresh="state.discriminationChart.refresh"
  172. @refresh="GetSecondPieRefresh"
  173. />
  174. <div
  175. v-else
  176. class="module_chart no_content_data"
  177. v-loading="state.dataLoading"
  178. :element-loading-text="state.loadingText"
  179. :element-loading-spinner="loadingSvgIcon"
  180. element-loading-background="#ffffff"
  181. >
  182. <span>暂无数据</span>
  183. </div>
  184. </div>
  185. <div class="content_right table_42">
  186. <el-table
  187. border
  188. :data="state.discriminationChart.tableData"
  189. stripe
  190. align="center"
  191. row-key="name"
  192. >
  193. <el-table-column
  194. prop="name"
  195. label="分类"
  196. align="center"
  197. width="70"
  198. v-if="state.discriminationChart.tableData.length"
  199. />
  200. <el-table-column
  201. prop="value"
  202. label="区分度"
  203. align="center"
  204. width="110"
  205. show-overflow-tooltip
  206. v-if="state.discriminationChart.tableData.length"
  207. />
  208. <el-table-column
  209. prop="score"
  210. label="满分"
  211. align="center"
  212. width="80"
  213. show-overflow-tooltip
  214. v-if="state.discriminationChart.tableData.length"
  215. />
  216. <el-table-column
  217. prop="scoreRate"
  218. label="分数占比"
  219. align="center"
  220. width="100"
  221. show-overflow-tooltip
  222. v-if="state.discriminationChart.tableData.length"
  223. >
  224. <template #default="scope">
  225. <span>{{ scope.row.scoreRate }}%</span>
  226. </template>
  227. </el-table-column>
  228. <el-table-column
  229. :prop="item.prop"
  230. :label="item.label"
  231. align="center"
  232. show-overflow-tooltip
  233. v-for="(item, index) in state.discriminationChart.headerData"
  234. :key="index"
  235. >
  236. <template #default="scope">
  237. {{ scope.row[item.prop] || "-" }}
  238. </template>
  239. </el-table-column>
  240. </el-table>
  241. </div>
  242. </template>
  243. </ReportModule>
  244. <ReportModule
  245. ref="reportModuleRef"
  246. :showTitle="true"
  247. :titleList="['4、命题分析表']"
  248. :showDescribe="false"
  249. tableOrChart="table"
  250. :showPrintBtn="false"
  251. :showExportBtn="true"
  252. :currentPage="state.questionData.currentPage"
  253. :pageSize="state.questionData.pageSize"
  254. :total="state.questionData.total"
  255. @ChangePageSize="ChangePageSize"
  256. @ChangeCurrentPage="ChangeCurrentPage"
  257. @ExportExcel="ExportExcel"
  258. >
  259. <template #module_table_chart>
  260. <el-table
  261. :data="questionTable"
  262. border
  263. stripe
  264. align="center"
  265. row-key="showCode"
  266. >
  267. <el-table-column
  268. prop="questionCode"
  269. label="题号"
  270. min-width="120"
  271. align="center"
  272. show-overflow-tooltip
  273. >
  274. <template #default="scope">
  275. <span v-if="scope.row.showCode == 0">全卷</span>
  276. <span v-else>{{ scope.row.questionCode }}</span>
  277. </template>
  278. </el-table-column>
  279. <el-table-column
  280. prop="questionTypeName"
  281. label="题型"
  282. min-width="120"
  283. align="center"
  284. show-overflow-tooltip
  285. />
  286. <el-table-column
  287. prop="studentCount"
  288. label="实考人数"
  289. min-width="100"
  290. align="center"
  291. show-overflow-tooltip
  292. />
  293. <el-table-column
  294. prop="fullMark"
  295. label="满分"
  296. min-width="100"
  297. align="center"
  298. show-overflow-tooltip
  299. />
  300. <el-table-column
  301. prop="difficulty"
  302. label="难度"
  303. min-width="100"
  304. align="center"
  305. show-overflow-tooltip
  306. />
  307. <el-table-column
  308. prop="discrimination"
  309. label="区分度"
  310. min-width="100"
  311. align="center"
  312. show-overflow-tooltip
  313. />
  314. <el-table-column
  315. prop="averageScore"
  316. label="平均分"
  317. min-width="100"
  318. align="center"
  319. show-overflow-tooltip
  320. />
  321. <el-table-column
  322. prop="maxScore"
  323. label="最高分"
  324. min-width="100"
  325. align="center"
  326. show-overflow-tooltip
  327. />
  328. <el-table-column
  329. prop="minScore"
  330. label="最低分"
  331. min-width="100"
  332. align="center"
  333. show-overflow-tooltip
  334. />
  335. <el-table-column
  336. prop="scoreRate"
  337. label="得分率"
  338. min-width="100"
  339. align="center"
  340. show-overflow-tooltip
  341. >
  342. <template #default="scope"> {{ scope.row.scoreRate }}% </template>
  343. </el-table-column>
  344. <el-table-column
  345. prop="standardDeviation"
  346. label="标准差"
  347. min-width="100"
  348. align="center"
  349. show-overflow-tooltip
  350. />
  351. </el-table>
  352. </template>
  353. </ReportModule>
  354. </template>
  355. <script lang="ts" setup>
  356. import { reactive, onMounted, computed, ref, watch } from "vue";
  357. import ReportModule from "@/components/ReportModule.vue";
  358. import LineChart from "@/components/echarts/lineChart.vue";
  359. import PieChart from "@/components/echarts/pieChart.vue";
  360. import paperDifficultyImg from "@/assets/icon/Paper_difficulty.png";
  361. import difficultyRatioImg from "@/assets/icon/difficulty_ratio.png";
  362. import testPaperDistinctionImg from "@/assets/icon/test_paper_distinction.png";
  363. import discriminationRatioImg from "@/assets/icon/discrimination_ratio.png";
  364. import testPaperReliabilityImg from "@/assets/icon/test_paper_reliability.png";
  365. import { useAnalysisStore } from "@/store/analysis";
  366. import { propositionAnalysis, publicExport } from "@/api/analysis";
  367. import {
  368. downloadExcel,
  369. GetExcelFileName,
  370. propositionAnalysisStaticHeaderData,
  371. } from "@/utils/exportExcel";
  372. import {loadingSvgIcon} from "@/utils/common";
  373. const analysisStore = useAnalysisStore();
  374. const reportModuleRef = ref<any>(null);
  375. const getExamName = computed(() => {
  376. return analysisStore.analysisExamInfo.examName || "";
  377. });
  378. interface PaperItem {
  379. label: string;
  380. value: string | number;
  381. background: string;
  382. backgroundImage: string;
  383. color: string;
  384. }
  385. const state = reactive({
  386. paperItems: [
  387. {
  388. label: "试卷难度",
  389. value: "",
  390. background: "linear-gradient(99.67deg, #B4D2FF 0%, #F1F7FF 100%)",
  391. backgroundImage: paperDifficultyImg,
  392. color: "#15325E",
  393. },
  394. {
  395. label: "难度比例(难中易)",
  396. value: "",
  397. background: "linear-gradient(99.67deg, #FFCAE1 0%, #FFF3F8 100%)",
  398. backgroundImage: difficultyRatioImg,
  399. color: "#5d1638",
  400. },
  401. {
  402. label: "试卷区分度",
  403. value: "",
  404. background: "linear-gradient(99.67deg, #D2C6FF 0%, #F7F1FF 100%)",
  405. backgroundImage: testPaperDistinctionImg,
  406. color: "#41155e",
  407. },
  408. {
  409. label: "区分度比例(优良中差)",
  410. value: "",
  411. background: "linear-gradient(99.67deg, #F7E595 0%, #FFFBED 100%)",
  412. backgroundImage: discriminationRatioImg,
  413. color: "#7a581d",
  414. },
  415. {
  416. label: "试卷信度",
  417. value: "",
  418. background: "linear-gradient(99.67deg, #BCF5C9 0%, #ECFFF5 100%)",
  419. backgroundImage: testPaperReliabilityImg,
  420. color: "#0f4c2e",
  421. },
  422. ] as PaperItem[],
  423. keyWord: "",
  424. checkList: [] as string[],
  425. lineChartData: {
  426. datax: [] as string[],
  427. datay: [[], []] as number[][], // 修复: 显式指定为 number[][],防止推断为 never[][]
  428. title: ["难度", "区分度"],
  429. colors: [] as string[],
  430. markNumber: [] as number[],
  431. },
  432. difficultyChart: {
  433. data: [] as any[],
  434. refresh: false,
  435. tableData: [] as any[],
  436. },
  437. discriminationChart: {
  438. data: [] as any[],
  439. refresh: false,
  440. tableData: [] as any[],
  441. headerData: [] as any[],
  442. },
  443. questionData: {
  444. totalTableData: [] as any[],
  445. tableData: [] as any[],
  446. pageSize: 10,
  447. total: 0,
  448. currentPage: 1,
  449. },
  450. exportLoading: false,
  451. dataLoading: false,
  452. loadingText: "加载中,请稍后...",
  453. });
  454. const questionTable = computed(() => {
  455. const start = (state.questionData.currentPage - 1) * state.questionData.pageSize;
  456. const end = start + state.questionData.pageSize;
  457. return state.questionData.tableData.slice(start, end);
  458. });
  459. // 修复: 添加参数类型注解 isRefresh: boolean
  460. const PageInit = async (isRefresh: boolean) => {
  461. if (isRefresh) {
  462. state.difficultyChart.refresh = true;
  463. state.discriminationChart.refresh = true;
  464. }
  465. state.dataLoading = true;
  466. try {
  467. let { code, data } = await propositionAnalysis(analysisStore.filterObject);
  468. state.questionData.currentPage = 1;
  469. if (code == 200 && data) {
  470. const { difficultyList, discriminationList, paperInfo, questionInfoList } = data;
  471. const difficultyChart = difficultyList || [];
  472. // 修复: 将三元表达式赋值改为标准的 if-else,避免 TS 语法警告
  473. const discriminationChart = (discriminationList || []).map((item: any) => {
  474. if (item.name === "及格") {
  475. item.name = "一般";
  476. } else if (item.name === "低分") {
  477. item.name = "较低";
  478. }
  479. return item;
  480. });
  481. state.questionData.totalTableData = questionInfoList || [];
  482. state.questionData.tableData = questionInfoList || [];
  483. const length = state.questionData.totalTableData.length;
  484. // 修复: 使用可选链 ?. 和空值合并 ?? 防止 paperInfo 为空时报错
  485. state.paperItems[0].value = paperInfo?.paperDifficulty ?? "";
  486. state.paperItems[1].value = paperInfo?.difficultyRate ?? "";
  487. state.paperItems[2].value = paperInfo?.paperDiscrimination ?? "";
  488. state.paperItems[3].value = paperInfo?.discriminationRate ?? "";
  489. state.paperItems[4].value = paperInfo?.paperReliability ?? "";
  490. state.lineChartData.datax = [];
  491. state.lineChartData.datay = [[], []] as number[][]; // 修复: 重置时保持类型断言
  492. const lastItem = state.questionData.totalTableData[length - 1];
  493. // 修复: 使用可选链防止 length 为 0 时越界报错
  494. state.lineChartData.markNumber = [
  495. lastItem?.difficulty ?? 0,
  496. lastItem?.discrimination ?? 0,
  497. ];
  498. state.questionData.totalTableData.forEach((item, index) => {
  499. if (index != length - 1) {
  500. state.lineChartData.datax.push(item.questionCode);
  501. state.lineChartData.datay[0].push(item.difficulty);
  502. state.lineChartData.datay[1].push(item.discrimination);
  503. }
  504. });
  505. state.difficultyChart.data = difficultyChart.map((item: any) => {
  506. return { name: item.name, value: item.scoreRate };
  507. });
  508. state.difficultyChart.tableData = difficultyChart;
  509. state.difficultyChart.headerData = data.headerList || [];
  510. state.discriminationChart.data = discriminationChart.map((item: any) => {
  511. return { name: item.name, value: item.scoreRate };
  512. });
  513. state.discriminationChart.headerData = data.headerList || [];
  514. state.discriminationChart.tableData = discriminationChart;
  515. state.questionData.total = length;
  516. } else {
  517. state.lineChartData.datax = [];
  518. state.lineChartData.datay = [[], []] as number[][];
  519. state.lineChartData.title = ["难度", "区分度"];
  520. state.lineChartData.colors = [];
  521. state.lineChartData.markNumber = [];
  522. state.paperItems.map((item) => {
  523. item.value = "";
  524. });
  525. state.difficultyChart.data = [];
  526. state.difficultyChart.tableData = [];
  527. state.difficultyChart.headerData = [];
  528. state.discriminationChart.data = [];
  529. state.discriminationChart.headerData = [];
  530. state.discriminationChart.tableData = [];
  531. state.questionData.totalTableData = [];
  532. state.questionData.tableData = [];
  533. }
  534. } finally {
  535. state.dataLoading = false;
  536. }
  537. };
  538. // 修复: 添加参数类型注解
  539. const GetFirstPieRefresh = (value: boolean) => {
  540. state.difficultyChart.refresh = value;
  541. };
  542. const GetSecondPieRefresh = (value: boolean) => {
  543. state.discriminationChart.refresh = value;
  544. };
  545. // 修复: 添加参数类型注解
  546. const ChangeCurrentPage = (val: number) => {
  547. state.questionData.currentPage = val;
  548. };
  549. const ChangePageSize = (val: number) => {
  550. state.questionData.pageSize = val;
  551. state.questionData.currentPage = 1;
  552. };
  553. const ExportExcel = () => {
  554. reportModuleRef.value?.SetExportLoading?.(true);
  555. const examName = getExamName.value;
  556. const staticHeaderData = propositionAnalysisStaticHeaderData();
  557. let dataList: any[] = [];
  558. state.questionData.tableData.forEach((row: any) => {
  559. const rowData = staticHeaderData.map((header: any) => {
  560. if (header.prop == "questionCode") {
  561. return row.showCode == 0 ? "全卷" : row.questionCode;
  562. } else if (header.prop == "scoreRate") {
  563. return `${row.scoreRate}%`;
  564. } else {
  565. return row[header.prop];
  566. }
  567. });
  568. dataList.push(rowData);
  569. });
  570. let params = {
  571. fileName: `${GetExcelFileName(examName, analysisStore.filterObject, "命题分析表")}`,
  572. examName: examName,
  573. sheetName: "命题分析表",
  574. staticHeaderData: staticHeaderData,
  575. dynamicsHeaderData: [],
  576. childHeaderData: [],
  577. dataList: dataList,
  578. };
  579. downloadExcel(publicExport, params).finally(() => {
  580. reportModuleRef.value?.SetExportLoading?.(false);
  581. });
  582. };
  583. watch(
  584. () => analysisStore.filterObject,
  585. async () => {
  586. PageInit(true);
  587. },
  588. { deep: true },
  589. );
  590. onMounted(() => {
  591. PageInit(false);
  592. });
  593. </script>
  594. <style lang="scss" scoped>
  595. .card_container {
  596. width: 100%;
  597. display: flex;
  598. flex-wrap: wrap;
  599. /* 允许换行 */
  600. /* 设置元素之间间隔 */
  601. gap: 10px;
  602. padding: 10px;
  603. box-sizing: border-box;
  604. .paper_card {
  605. // flex: 0 1 calc((100% - 240px) / 5);
  606. flex-grow: 1; /* 使每个div平分可用空间 */
  607. flex-basis: 0; /* 初始基础大小为0 */
  608. min-width: 180px;
  609. // max-width: 320px;
  610. // width: 238px;
  611. /* 每个卡片占据 18% 宽度,确保能在一行显示五个,考虑间隔 */
  612. // flex: 0 0 16.5%; /* 每个卡片占据 18% 宽度,确保能在一行显示五个,考虑间隔 */
  613. // border: 2px dashed #ccc;
  614. border-radius: 10px;
  615. padding: 20px 16px;
  616. text-align: center;
  617. color: #fff;
  618. /* 文字颜色可以根据背景调整 */
  619. background-size: cover;
  620. background-position: center;
  621. height: 100px;
  622. /* 可调整高度 */
  623. // margin-bottom: 20px; /* 卡片底部间距 */
  624. position: relative;
  625. }
  626. .background-image {
  627. position: absolute;
  628. top: 0;
  629. right: 0;
  630. /* 背景图片宽度 */
  631. width: 100%;
  632. height: 100px;
  633. background-size: contain;
  634. background-repeat: no-repeat;
  635. background-position: center right;
  636. z-index: 1;
  637. /* 确保背景图片在文本之下 */
  638. border-radius: 10px;
  639. }
  640. .statistic,
  641. .value {
  642. position: relative;
  643. z-index: 2;
  644. /* 确保文本在背景图片之上 */
  645. }
  646. .statistic {
  647. font-size: 16px;
  648. font-weight: 400;
  649. line-height: 22px;
  650. text-align: left;
  651. z-index: 2;
  652. }
  653. .value {
  654. font-size: 26px;
  655. font-weight: 600;
  656. line-height: 42px;
  657. text-align: left;
  658. margin-top: 5px;
  659. z-index: 2;
  660. }
  661. }
  662. .module_qita {
  663. align-items: center;
  664. .content_left {
  665. width: 40%;
  666. }
  667. .content_right {
  668. width: 60%;
  669. display: flex;
  670. align-items: center;
  671. &.table_42{
  672. :deep(.el-table){
  673. border-radius: 8px;
  674. .el-table__cell{
  675. height: 52px;
  676. }
  677. }
  678. }
  679. }
  680. }
  681. </style>