| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921 |
- <template>
- <ReportModule
- :showTitle="true"
- :titleList="[`1、${state.groupTitle}图`]"
- :showDescribe="true"
- tableOrChart="qita"
- :showPrintBtn="false"
- :showExportBtn="false"
- >
- <template #module_qita>
- <div class="module_chart_query">
- <div class="query_left">
- <span
- >满分:{{
- state.question?.resData?.[state.question.selectIndex]?.fullScore
- ? `${state.question.resData[state.question.selectIndex].fullScore}分`
- : "-"
- }}</span
- >
- <span
- >平均分:{{
- state.question?.resData?.[state.question.selectIndex]?.avgScore
- ? `${state.question.resData[state.question.selectIndex].avgScore}分`
- : "-"
- }}</span
- >
- <span
- >得分率:{{
- state.question?.resData?.[state.question.selectIndex]?.scoreRate
- ? `${state.question.resData[state.question.selectIndex].scoreRate}%`
- : "-"
- }}</span
- >
- <span
- >答案:{{
- state.question?.resData?.[state.question.selectIndex]
- ?.answerValue || "-"
- }}</span
- >
- </div>
- <div class="query_right report_button">
- <div class="select_question">
- <span>当前小题:</span>
- <el-select
- v-model="state.question.select"
- placeholder="请选择小题"
- style="width: 140px"
- @change="ChangeQuestionSelect"
- >
- <el-option
- v-for="item in state.question.questionList"
- :key="item?.questionId"
- :label="item?.questionName"
- :value="item?.questionId"
- ></el-option>
- </el-select>
- </div>
- <el-button
- class="select_btn"
- :disabled="state.question.selectIndex === 0"
- @click="PrevQuestion"
- >上一题</el-button
- >
- <el-button
- class="select_btn"
- :disabled="
- state.question.selectIndex === state.question.lastQuestionIndex
- "
- @click="NextQuestion"
- >下一题</el-button
- >
- </div>
- </div>
- <div class="module_content">
- <div class="content_left">
- <BarChart
- :datax="state.barChartData.datax"
- :datay="state.barChartData.datay"
- :isShowMarkLine="false"
- color=""
- typeName="人数"
- unit="人"
- ></BarChart>
- </div>
- <div class="content_right">
- <PieChart
- :key="state.pieKey"
- v-if="state.pieChart.data.length > 0"
- :data="state.pieChart.data"
- :refresh="state.pieChart.refresh"
- @refresh="GetPieRefresh"
- height="380"
- />
- </div>
- </div>
- </template>
- <template #module_describe>
- 说明:柱图代表每个选项的选择人数,饼图代表每个选项选择人数的占比。通过分析选择题选项的人数和占比,可以评估试题的质量。如果某个选项的选择人数与预期不符,可能意味着试题存在质量问题,需要进一步分析和调整。
- </template>
- </ReportModule>
- <ReportModule
- ref="reportModuleRef"
- :showTitle="true"
- :titleList="[`2、${state.groupTitle}表`]"
- :showDescribe="false"
- tableOrChart="table"
- :showPrintBtn="false"
- :showExportBtn="true"
- :currentPage="state.objectiveAnalysisData.currentPage"
- :pageSize="state.objectiveAnalysisData.pageSize"
- :total="state.objectiveAnalysisData.total"
- @ChangePageSize="ChangePageSize"
- @ChangeCurrentPage="ChangeCurrentPage"
- @ExportExcel="ExportExcel"
- >
- <template #module_table_chart>
- <el-table
- :data="objectiveTable"
- border
- stripe
- align="left"
- row-key="showCode"
- >
- <el-table-column
- prop="questionName"
- label="题号"
- width="74"
- align="center"
- fixed
- show-overflow-tooltip
- v-if="state.objectiveAnalysisData.tableData.length"
- />
- <el-table-column
- prop="questionType"
- label="题型"
- width="114"
- align="center"
- fixed
- show-overflow-tooltip
- v-if="state.objectiveAnalysisData.tableData.length"
- />
- <el-table-column
- prop="answerScore"
- label="分数"
- width="80"
- align="center"
- fixed
- show-overflow-tooltip
- v-if="state.objectiveAnalysisData.tableData.length"
- />
- <el-table-column
- prop="averageScore"
- label="平均分"
- width="80"
- align="center"
- fixed
- show-overflow-tooltip
- v-if="state.objectiveAnalysisData.tableData.length"
- />
- <el-table-column
- prop="scoreRate"
- label="得分率"
- width="80"
- align="center"
- fixed
- show-overflow-tooltip
- v-if="state.objectiveAnalysisData.tableData.length"
- >
- <template #default="{ row: org }">
- <span>{{ org["scoreRate"] }}%</span>
- </template>
- </el-table-column>
- <el-table-column
- prop="answerValue"
- label="答案"
- width="80"
- align="center"
- fixed
- show-overflow-tooltip
- v-if="state.objectiveAnalysisData.tableData.length"
- />
- <el-table-column
- label="各选项选择人数"
- align="center"
- v-if="state.objectiveAnalysisData.tableData.length"
- >
- <el-table-column
- align="center"
- v-for="key in state.objectiveAnalysisData.headLabels"
- :key="key"
- :label="key"
- min-width="70"
- show-overflow-tooltip
- >
- <template #default="{ row: org }">
- <span
- :style="{
- color:
- org?.['answerMap']?.[key]?.['studentNum'] &&
- org?.['answerMap']?.[key]?.['studentNum'] !== '0' &&
- org?.['answerMap']?.[key]?.['studentNum'] != '-'
- ? '#2E64FA'
- : '',
- cursor:
- org?.['answerMap']?.[key]?.['studentNum'] &&
- org?.['answerMap']?.[key]?.['studentNum'] !== '0' &&
- org?.['answerMap']?.[key]?.['studentNum'] != '-'
- ? 'pointer'
- : '',
- }"
- @click="
- showDialogData(
- org.questionCode,
- org.questionId,
- org?.['answerMap']?.[key]?.['name'],
- org?.['answerMap']?.[key]?.['studentNum'],
- org?.['answerMap']?.[key]?.['studentNames'],
- )
- "
- >{{ org?.["answerMap"]?.[key]?.["studentNum"] ?? "-" }}</span
- >
- </template>
- </el-table-column>
- </el-table-column>
- <el-table-column
- label="各选项选择人数占比"
- align="center"
- v-if="state.objectiveAnalysisData.tableData.length"
- >
- <el-table-column
- align="center"
- v-for="key in state.objectiveAnalysisData.headLabels"
- :key="key"
- :label="key"
- min-width="70"
- show-overflow-tooltip
- >
- <template #default="{ row: org }">
- <span
- v-if="
- org?.['answerMap']?.[key]?.['rate'] &&
- org?.['answerMap']?.[key]?.['rate'] != '-'
- "
- >{{ org?.["answerMap"]?.[key]?.["rate"] }}%</span
- >
- <span v-else>{{
- org?.["answerMap"]?.[key]?.["rate"] ?? "-"
- }}</span>
- </template>
- </el-table-column>
- </el-table-column>
- </el-table>
- </template>
- </ReportModule>
- <!-- 各选项选择人数 弹框 -->
- <div class="page_dialog">
- <el-dialog :title="state.dialogData.title" v-model="state.dialogData.show">
- <div class="dialog_center" :key="state.dialogData.dialogKey">
- <div class="center_header">
- <div class="header_left left_center">
- <span class="left_count">总计:{{ state.dialogData.total }}人</span>
- </div>
- <div class="header_right report_button">
- <el-button
- class="button_task_select"
- :loading="state.dialogExportLoading"
- @click="DialogExportExcel()"
- >
- <img
- v-if="!state.dialogExportLoading"
- src="@/assets/icon/export_icon.webp"
- alt="导出Excel"
- />导出Excel
- </el-button>
- </div>
- </div>
- <div class="page_jg_20"></div>
- <div class="page_table table_row_42" style="width: 100%">
- <el-table
- :data="state.dialogData.list"
- height="471px"
- border
- stripe
- row-key="studentCode"
- >
- <el-table-column
- type="index"
- align="center"
- label="序号"
- width="50"
- fixed
- >
- <template #default="{ $index }">
- {{
- (state.dialogData.currentPage - 1) *
- state.dialogData.pageSize +
- $index +
- 1
- }}
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- property="studentCode"
- label="学号"
- width="100"
- show-overflow-tooltip
- fixed
- ></el-table-column>
- <el-table-column
- align="center"
- property="studentName"
- label="姓名"
- width="80"
- show-overflow-tooltip
- fixed
- ></el-table-column>
- <el-table-column
- align="center"
- property="examCode"
- label="考号"
- width="80"
- show-overflow-tooltip
- >
- <template #default="{ row }">
- {{ row.examCode || "-" }}
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- property="className"
- label="行政班"
- width="80"
- show-overflow-tooltip
- >
- <template #default="{ row }">
- {{ row.className || "-" }}
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- property="teacherClassName"
- label="教学班"
- width="80"
- show-overflow-tooltip
- >
- <template #default="{ row }">
- {{ row.teacherClassName || "-" }}
- </template>
- </el-table-column>
- <el-table-column
- align="center"
- v-for="(item, index) in state.dialogData.headerList"
- :key="item"
- :label="item"
- min-width="60"
- show-overflow-tooltip
- >
- <template #header>
- <div class="table_header">
- <el-tooltip
- class="item"
- effect="dark"
- :content="item"
- placement="top"
- >
- <span>{{ item }}</span>
- </el-tooltip>
- </div>
- </template>
- <template #default="scope">
- <span
- :style="{
- color:
- scope.row.questionList?.[index]?.answerValue ===
- scope.row.questionList?.[index]?.studentAnswer
- ? '#606266'
- : '#EE6666',
- }"
- >{{ scope.row.questionList[index].studentAnswer }}</span
- >
- </template>
- </el-table-column>
- </el-table>
- <div class="page_pagination" v-if="state.dialogData.total > 10">
- <el-pagination
- @current-change="GetStudentTableDataChangePage"
- layout="prev, pager, next"
- :current-page="state.dialogData.currentPage"
- :page-size="state.dialogData.pageSize"
- :total="state.dialogData.total"
- >
- </el-pagination>
- </div>
- </div>
- </div>
- </el-dialog>
- </div>
- </template>
- <script lang="ts" setup>
- import ReportModule from "@/components/ReportModule.vue";
- import BarChart from "@/components/echarts/barChart.vue"; //单柱状图
- import PieChart from "@/components/echarts/pieChart.vue";
- import { onMounted, watch, computed, ref, reactive } from "vue";
- import { useAnalysisStore } from "@/store/analysis";
- import {
- selectQuestionAnalysis,
- selectQuestionAnalysisPage,
- selectQuestionStudentPageList,
- exportObjectAnalysis,
- publicExportSelectQuestion,
- } from "@/api/analysis";
- import {
- downloadExcel,
- GetExcelFileName,
- selectQuestionAnalysisStaticHeaderData,
- selectQuestionAnalysisDynamicsHeaderData,
- } from "@/utils/exportExcel";
- const analysisStore = useAnalysisStore();
- const reportModuleRef = ref<any>(null);
- const getExamName = computed(() => {
- return analysisStore.analysisExamInfo.examName || "";
- });
- const state = reactive({
- groupTitle: "选项分析",
- question: {
- resData: [] as any[], // 修复:显式声明为 any[]
- select: "",
- questionList: [] as any[], // 修复:显式声明为 any[]
- selectIndex: 0,
- lastQuestionIndex: null as number | null, // 修复:允许 number 或 null
- },
- barChartData: {
- datax: [] as string[], // 修复
- datay: [] as number[], // 修复
- },
- pieChart: {
- refresh: false,
- data: [] as any[], // 修复
- },
- objectiveAnalysisData: {
- tableData: [] as any[], // 修复
- originalTableData: [] as any[], // 修复
- data: [] as any[], // 修复
- headLabels: [] as string[], // 修复
- pageSize: 10,
- total: 0,
- currentPage: 1,
- },
- dialogData: {
- dialogKey: 1,
- title: "",
- questionId: "",
- answer: "",
- studentCodeList: [] as string[], // 修复
- show: false,
- pageSize: 10,
- total: 0,
- currentPage: 1,
- list: [] as any[], // 修复
- headerList: [] as string[], // 修复
- studentNum: 0,
- },
- exportLoading: false,
- dialogExportLoading: false,
- pieKey: 0,
- });
- const objectiveTable = computed(() => {
- const start =
- (state.objectiveAnalysisData.currentPage - 1) *
- state.objectiveAnalysisData.pageSize;
- const end = start + state.objectiveAnalysisData.pageSize;
- return state.objectiveAnalysisData.tableData.slice(start, end);
- });
- const PageInit = (isRefresh: boolean) => {
- state.objectiveAnalysisData.currentPage = 1;
- if (isRefresh) {
- state.pieChart.refresh = true;
- }
- GetSelectQuestionAnalysisChartData(); //客观题分析(选择题分析图)
- GetSelectQuestionAnalysisPage(); //客观题分析(选择题分析表-分页)
- };
- //客观题分析(选择题分析图)
- const GetSelectQuestionAnalysisChartData = () => {
- selectQuestionAnalysis({ ...analysisStore.filterObject }).then((res) => {
- state.question.questionList = []; //小题下拉选项
- state.question.select = ""; //当前选择小题的值
- state.question.selectIndex = 0; //当前选择小题的索引
- state.question.lastQuestionIndex = null; //最后一题索引
- state.question.resData = [];
- if (res.code == 200 && res.data && res.data.length) {
- const resData = res.data || [];
- state.question.resData = resData;
- state.question.questionList = resData.map((item: any) => {
- return {
- questionId: item.questionId,
- questionName: item.questionName,
- };
- });
- if (state.question.questionList.length > 0) {
- state.question.select = state.question.questionList[0].questionId;
- state.question.lastQuestionIndex =
- state.question.questionList.length - 1; //最后一题索引
- } else {
- state.question.lastQuestionIndex = 0;
- }
- state.pieKey++;
- GetChartData(); //1、选择题分析图 柱状图
- } else {
- state.barChartData.datax = []; // 1、选择题分析图 柱状图 X轴
- state.barChartData.datay = []; // 1、选择题分析图 柱状图 Y轴
- state.pieChart.data = []; //1、选择题分析图 饼状图
- state.question.questionList = []; //小题下拉选项
- state.question.select = ""; //当前选择小题的值
- state.question.selectIndex = 0; //当前选择小题的索引
- state.question.lastQuestionIndex = null; //最后一题索引
- state.question.resData = [];
- }
- });
- };
- //切换小题下拉框
- const ChangeQuestionSelect = () => {
- state.question.selectIndex = state.question.questionList.findIndex(
- (item) => item.questionId == state.question.select,
- );
- state.pieChart.refresh = true;
- GetChartData();
- };
- //上一题
- const PrevQuestion = () => {
- if (state.question.selectIndex > 0) {
- state.question.selectIndex--;
- state.question.select =
- state.question.questionList[state.question.selectIndex].questionId;
- state.pieChart.refresh = true;
- GetChartData();
- }
- };
- //下一题
- const NextQuestion = () => {
- if (state.question.selectIndex < state.question.lastQuestionIndex) {
- state.question.selectIndex++;
- state.question.select =
- state.question.questionList[state.question.selectIndex].questionId;
- state.pieChart.refresh = true;
- GetChartData();
- }
- };
- //获取当前选择的小题 柱状图 + 饼状图
- const GetChartData = () => {
- const answerScoreData =
- state.question?.resData[state.question.selectIndex]?.answerScore || [];
- state.barChartData.datax = []; // 1、选择题分析图 柱状图 X轴
- state.barChartData.datay = []; // 1、选择题分析图 柱状图 Y轴
- state.pieChart.data = []; //1、选择题分析图 饼状图
- answerScoreData.forEach((item: any) => {
- state.barChartData.datax.push(item.name);
- state.barChartData.datay.push(item.studentNum);
- state.pieChart.data.push({
- value: item.rate,
- name: item.name,
- });
- });
- };
- const GetPieRefresh = (val: boolean) => {
- state.pieChart.refresh = val;
- };
- //客观题分析(选择题分析表-分页)
- const GetSelectQuestionAnalysisPage = () => {
- selectQuestionAnalysisPage({
- ...analysisStore.filterObject,
- pageParam: {
- pageNum: state.objectiveAnalysisData.currentPage, //当前页码
- pageSize: 200, //每页显示行数
- },
- }).then((res) => {
- if (res.code == 200 && res.data) {
- const { total, records } = res.data;
- if (records?.length) {
- state.objectiveAnalysisData.tableData = records[0]?.pageResult || []; //表格数据
- state.objectiveAnalysisData.headLabels = records[0]?.label || []; //选项头部信息
- state.objectiveAnalysisData.total = Number(total); //总条数
- } else {
- state.objectiveAnalysisData.tableData = [];
- state.objectiveAnalysisData.headLabels = [];
- state.objectiveAnalysisData.total = 0;
- }
- } else {
- state.objectiveAnalysisData.tableData = [];
- state.objectiveAnalysisData.headLabels = [];
- state.objectiveAnalysisData.total = 0;
- }
- });
- };
- //分页切换
- const ChangeCurrentPage = (val: number) => {
- state.objectiveAnalysisData.currentPage = val;
- };
- const ChangePageSize = (val: number) => {
- state.objectiveAnalysisData.pageSize = val;
- state.objectiveAnalysisData.currentPage = 1;
- };
- // 显示 各选项选择人数 弹框
- const showDialogData = (
- questionCode: string,
- questionId: string,
- answer: string,
- studentNum: any,
- studentCodeList: any[], // 增加类型声明
- ) => {
- if (!studentNum || studentNum == "0" || studentNum == "-") {
- return false;
- }
- console.log("questionCode22");
- state.dialogData.title = `${questionCode} ${answer}选项人数`;
- state.dialogData.show = true;
- state.dialogData.currentPage = 1;
- state.dialogData.questionId = questionId;
- state.dialogData.answer = answer;
- state.dialogData.studentCodeList = studentCodeList || []; // 防止传入 undefined
- state.dialogData.studentNum = studentNum;
- GetSelectQuestionStudentPageList(studentCodeList || [], studentNum);
- };
- const GetSelectQuestionStudentPageList = (
- studentCodeList: any[],
- studentNum: any,
- ) => {
- state.dialogData.dialogKey += 1;
- const start = (state.dialogData.currentPage - 1) * state.dialogData.pageSize;
- const end = start + state.dialogData.pageSize;
- // 修复:使用可选链 ?. 防止 studentCodeList 为 undefined 时调用 slice 报错
- const studentCodeListData = studentCodeList?.slice(start, end) || [];
- state.dialogData.total = Number(studentNum);
- selectQuestionStudentPageList({
- ...analysisStore.filterObject,
- studentCodeList: studentCodeListData,
- pageParam: {
- pageNum: 1,
- pageSize: state.dialogData.pageSize,
- },
- }).then((res) => {
- const { code, data } = res;
- if (code == 200) {
- const { total, records } = data;
- state.dialogData.list = records[0]?.studentPageList || [];
- state.dialogData.headerList = records[0]?.headerList || [];
- }
- });
- };
- //弹框分页切换
- const GetStudentTableDataChangePage = (val: number) => {
- state.dialogData.currentPage = val;
- GetSelectQuestionStudentPageList(
- state.dialogData.studentCodeList,
- state.dialogData.studentNum,
- );
- };
- //弹框导出
- const DialogExportExcel = () => {
- state.dialogExportLoading = true;
- const examName = getExamName.value;
- const title = state.dialogData.title;
- const fileName = `${GetExcelFileName(examName, analysisStore.filterObject, `${state.groupTitle}表_${title.replace(/\s/g, "")}`)}`;
- const sheetName = title.replace(/\s/g, "");
- let params = {
- ...analysisStore.filterObject,
- studentCodeList: state.dialogData.studentCodeList,
- fileName,
- sheetName,
- };
- downloadExcel(publicExportSelectQuestion, params).finally(() => {
- state.dialogExportLoading = false;
- });
- };
- // 客观题分析表数据导出
- const ExportExcel = () => {
- reportModuleRef.value?.SetExportLoading?.(true);
- const examName = getExamName.value;
- const staticHeaderData = selectQuestionAnalysisStaticHeaderData();
- const dynamicsHeaderData = selectQuestionAnalysisDynamicsHeaderData();
- const childHeaderData = state.objectiveAnalysisData.headLabels.map(
- (item: string) => ({
- label: item,
- }),
- );
- let dataList: any[][] = [];
- state.objectiveAnalysisData.tableData.forEach((row) => {
- const staticData = staticHeaderData.map((header) => {
- if (header.prop == "scoreRate") {
- return `${row["scoreRate"]}%`;
- } else {
- return row[header.prop];
- }
- });
- const studentNumData = childHeaderData.map((child) => {
- const value = row?.["answerMap"]?.[child.label]?.["studentNum"] ?? "-";
- if (child.label == row.answerValue) {
- return `${value}答案`;
- } else {
- return value;
- }
- });
- const rateData = childHeaderData.map((child) => {
- const value = `${row?.["answerMap"]?.[child.label]?.["rate"]}${row?.["answerMap"]?.[child.label]?.["rate"] && row?.["answerMap"]?.[child.label]?.["rate"] != "-" ? "%" : ""}`;
- if (child.label == row.answerValue) {
- return `${value}答案`;
- } else {
- return value;
- }
- });
- dataList.push([...staticData, ...studentNumData, ...rateData]);
- });
- let params = {
- fileName: `${GetExcelFileName(examName, analysisStore.filterObject, state.groupTitle)}`,
- examName: examName, //考试名称
- sheetName: state.groupTitle, //sheet页名称
- staticHeaderData: staticHeaderData, //静态表头
- dynamicsHeaderData: dynamicsHeaderData, //动态表头的一级表头
- childHeaderData: childHeaderData, //二级表头
- dataList: dataList, //数据
- };
- downloadExcel(exportObjectAnalysis, params).finally(() => {
- reportModuleRef.value?.SetExportLoading?.(false);
- });
- };
- // 监听筛选条件
- watch(
- () => analysisStore.filterObject,
- async () => {
- PageInit(true);
- },
- { deep: true },
- );
- onMounted(() => {
- PageInit(false);
- });
- </script>
- <style lang="scss" scoped>
- :deep(.module_qita) {
- flex-direction: column;
- .module_chart_query {
- width: calc(100% - 40px);
- margin: auto;
- font-size: 14px;
- color: #333333;
- text-align: left;
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .query_left {
- display: inline-flex;
- flex: 1;
- span {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- min-width: 120px;
- padding: 0 8px;
- font-size: 14px;
- color: #2e64fa;
- box-sizing: border-box;
- height: 36px;
- background: rgba(46, 100, 250, 0.1);
- border-radius: 4px;
- margin-right: 20px;
- &:last-child {
- margin-right: 0;
- }
- }
- }
- .query_right {
- display: flex;
- justify-content: flex-end;
- align-items: center;
- .select_question {
- color: #333333;
- font-size: 14px;
- font-weight: 400;
- }
- }
- }
- .report_button {
- gap: 10px;
- .select_btn {
- border: 1px solid #2e64fa;
- color: #2e64fa;
- margin-left: 0;
- &:hover {
- border-color: #2e64fa;
- background-color: rgba(46, 100, 250, 0.1);
- }
- &.is-disabled {
- color: #bbbbbb;
- border-color: #bbbbbb;
- }
- }
- }
- .module_content {
- display: flex;
- width: 100%;
- .content_left {
- width: 50%;
- }
- .content_right {
- width: 50%;
- }
- }
- }
- //页面表格公共样式
- :deep(.page_table) {
- width: 100%;
- // 表格悬浮效果覆盖
- .el-table__body tr:hover > td {
- background-color: #eaf0ff !important; // 蓝色系悬浮背景
- }
- //表格竖着的边框线样式
- th.el-table__cell {
- border-right: 1px solid #e9e9e9;
- }
- .el-table th.el-table__cell.is-leaf,
- .el-table td.el-table__cell {
- border-bottom: 1px solid #e9e9e9;
- }
- .el-table {
- min-height: 463px;
- border: 0px;
- }
- }
- //表格42行高
- .table_row_42 {
- :deep(.el-table) {
- thead {
- color: #333 !important;
- font-weight: 500;
- font-size: 14px;
- height: 42px !important;
- }
- .el-table__cell {
- padding: 0;
- height: 42px !important;
- }
- }
- }
- :deep(.report_button) {
- display: flex;
- gap: 10px;
- .el-input-group__append {
- .el-button {
- width: 100%;
- justify-content: center;
- }
- }
- .el-icon-loading {
- color: #666;
- }
- .el-button {
- margin-left: 0px;
- height: 36px;
- line-height: 36px;
- padding: 0 10px;
- display: flex;
- align-items: center;
- span {
- // padding: 0px 10px;
- display: flex;
- align-items: center;
- }
- img {
- width: 16px;
- height: 16px;
- margin-right: 4px;
- }
- }
- .el-button--default {
- color: #666;
- font-weight: 400;
- &.is-disabled {
- color: #bbbbbb;
- border-color: #bbbbbb;
- }
- }
- .el-button--primary.is-plain:hover {
- color: #2e64fa;
- background-color: #c0d1fe;
- font-size: 14px;
- }
- //其他按钮可在下面追加
- //对标任务选择按钮
- .button_task_select {
- // 去掉按钮点击后的样式
- &:active,
- &:focus {
- outline: none; // 去掉点击后的轮廓
- box-shadow: none; // 去掉点击后的阴影
- background-color: inherit; // 保持背景颜色不变
- color: #666666; // 保持文字颜色不变
- border: 1px solid #dcdfe6;
- }
- }
- .button_task_select:hover {
- background-color: #f9f9f9;
- border: 1px solid #dcdfe6;
- color: #666;
- }
- }
- </style>
|