工具条按钮样式统一

This commit is contained in:
2026-09-18 11:50:09 +08:00
parent b529f0b523
commit e27b61b5fe
8 changed files with 290 additions and 241 deletions
@@ -86,20 +86,16 @@
</el-form> </el-form>
</div> </div>
<!-- 标题 --> <!-- 数据表格 -->
<div class="page-title">{{ pageTitle }}</div> <div class="table-card">
<div class="list-header">
<!-- 下载操作按钮 --> <div class="list-title">{{ pageTitle }}</div>
<el-card shadow="never" class="action-card"> <div class="list-actions">
<div class="button-row">
<el-button type="primary" plain size="mini" @click="handleExportPlan">学期教学实施计划</el-button> <el-button type="primary" plain size="mini" @click="handleExportPlan">学期教学实施计划</el-button>
<el-button type="primary" plain size="mini" @click="handleExportGrades">学期成绩表</el-button> <el-button type="primary" plain size="mini" @click="handleExportGrades">学期成绩表</el-button>
<el-button type="primary" plain size="mini" @click="handleExportCourses">课程列表另存Excel</el-button> <el-button type="primary" plain size="mini" @click="handleExportCourses">课程列表另存Excel</el-button>
</div> </div>
</el-card> </div>
<!-- 数据表格 -->
<div class="table-card">
<el-table :data="shiftData" v-loading="loading" border stripe style="width: 100%"> <el-table :data="shiftData" v-loading="loading" border stripe style="width: 100%">
<el-table-column type="index" label="序号" width="60" align="center" /> <el-table-column type="index" label="序号" width="60" align="center" />
<el-table-column label="课程名称/课时系数" min-width="220" align="center"> <el-table-column label="课程名称/课时系数" min-width="220" align="center">
@@ -445,21 +441,29 @@ export default {
} }
} }
.page-title { .list-header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 12px;
.list-title {
font-size: 17px; font-size: 17px;
font-weight: 700; font-weight: 700;
color: #303133; color: #303133;
text-align: center;
margin-bottom: 12px;
} }
.action-card { .list-actions {
margin-bottom: 12px;
.button-row {
display: flex; display: flex;
align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
gap: 8px; gap: 8px;
.el-button + .el-button {
margin-left: 0;
}
} }
} }
} }
+12
View File
@@ -51,6 +51,7 @@
<!-- 数据列表区域 --> <!-- 数据列表区域 -->
<div class="list-heading"> <div class="list-heading">
<div class="list-title">公告列表</div> <div class="list-title">公告列表</div>
<div class="list-actions">
<el-button <el-button
type="primary" type="primary"
icon="el-icon-plus" icon="el-icon-plus"
@@ -58,6 +59,7 @@
@click="handleAdd" @click="handleAdd"
>新增</el-button> >新增</el-button>
</div> </div>
</div>
<el-table v-loading="loading" :data="noticeList" border :height="tableHeight"> <el-table v-loading="loading" :data="noticeList" border :height="tableHeight">
<el-table-column label="序号" type="index" align="center" width="70" /> <el-table-column label="序号" type="index" align="center" width="70" />
<el-table-column label="发布时间" align="center" width="165"> <el-table-column label="发布时间" align="center" width="165">
@@ -483,6 +485,16 @@ export default {
gap: 16px; gap: 16px;
margin-bottom: 12px; margin-bottom: 12px;
} }
.list-actions {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
.el-button + .el-button {
margin-left: 0;
}
}
.list-title { .list-title {
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
@@ -71,31 +71,6 @@
</div> </div>
</div> </div>
<!-- ==================== 4. 操作按钮区域 ==================== -->
<div class="section-card action-card">
<div class="section-heading section-heading--compact">
<div>
<h2 class="section-title">选修课操作</h2>
<p class="section-description">新建选修课或对已选数据执行批量操作</p>
</div>
</div>
<div class="action-row">
<el-button type="primary" icon="el-icon-plus" @click="handleOpenNew">新建选修课</el-button>
<el-button type="primary" plain icon="el-icon-circle-check" @click="handleOpenEarly">
所选批量开放报名
</el-button>
<el-button type="warning" plain icon="el-icon-remove-outline" @click="handleCancelEarly">
所选批量取消开放报名
</el-button>
<el-button type="danger" plain icon="el-icon-circle-close" @click="handleStopSignup">
批量停止报名
</el-button>
<!-- <el-button icon="el-icon-refresh" @click="handleReverseRange">
所选批量根据学员反向确定班次范围
</el-button> -->
</div>
</div>
<!-- ==================== 5. 文件上传区域 ==================== --> <!-- ==================== 5. 文件上传区域 ==================== -->
<div class="section-card upload-card"> <div class="section-card upload-card">
<div class="section-heading section-heading--compact"> <div class="section-heading section-heading--compact">
@@ -118,10 +93,19 @@
<!-- ==================== 6. 数据表格区域 ==================== --> <!-- ==================== 6. 数据表格区域 ==================== -->
<div class="section-card table-card"> <div class="section-card table-card">
<div class="section-heading section-heading--compact table-heading"> <div class="list-header">
<div> <div class="list-title">选修课列表<span class="list-sub"> {{ total }} 条数据</span></div>
<h2 class="section-title">选修课列表</h2> <div class="list-actions">
<p class="section-description"> {{ total }} 条数据</p> <el-button type="primary" icon="el-icon-plus" @click="handleOpenNew">新建选修课</el-button>
<el-button type="primary" plain icon="el-icon-circle-check" @click="handleOpenEarly">
所选批量开放报名
</el-button>
<el-button type="warning" plain icon="el-icon-remove-outline" @click="handleCancelEarly">
所选批量取消开放报名
</el-button>
<el-button type="danger" plain icon="el-icon-circle-close" @click="handleStopSignup">
批量停止报名
</el-button>
</div> </div>
</div> </div>
<el-table v-loading="loading" :data="tableData" border stripe class="main-table" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="tableData" border stripe class="main-table" @selection-change="handleSelectionChange">
@@ -534,20 +518,6 @@ export default {
align-items: center; align-items: center;
} }
// ==================== 4. 操作按钮区域 ====================
.action-card {
.action-row {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 12px;
&:last-child {
margin-bottom: 0;
}
}
}
// ==================== 5. 文件上传区域 ==================== // ==================== 5. 文件上传区域 ====================
.upload-card { .upload-card {
.upload-row { .upload-row {
@@ -581,6 +551,39 @@ export default {
// ==================== 6. 数据表格区域 ==================== // ==================== 6. 数据表格区域 ====================
.table-card { .table-card {
.list-header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 16px;
.list-title {
font-size: 16px;
font-weight: 600;
color: #303133;
.list-sub {
margin-left: 10px;
font-size: 13px;
font-weight: 400;
color: #909399;
}
}
.list-actions {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
.el-button + .el-button {
margin-left: 0;
}
}
}
.main-table { .main-table {
::v-deep .cell { ::v-deep .cell {
font-size: 12px; font-size: 12px;
+29 -12
View File
@@ -42,21 +42,16 @@
</el-form> </el-form>
<!-- 操作按钮区域 --> <!-- 操作按钮区域 -->
<el-row :gutter="10" class="mb8"> <div class="list-header">
<el-col :span="1.5"> <div class="list-title">教研室列表</div>
<div class="list-actions">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="openImport">导入</el-button> <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="openImport">导入</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleDownloadTemplate">模板下载</el-button> <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleDownloadTemplate">模板下载</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="el-icon-refresh" size="mini" :loading="alignLoading" @click="handleAlignDepts">对齐组织部门</el-button> <el-button type="success" plain icon="el-icon-refresh" size="mini" :loading="alignLoading" @click="handleAlignDepts">对齐组织部门</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </div>
</div>
<!-- 数据列表区域 --> <!-- 数据列表区域 -->
<el-table v-loading="loading" :data="officeList" border :height="tableHeight"> <el-table v-loading="loading" :data="officeList" border :height="tableHeight">
@@ -412,8 +407,30 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
.teach-office { .teach-office {
.mb8 { .list-header {
margin-bottom: 8px; display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 12px;
.list-title {
font-size: 16px;
font-weight: 600;
color: #303133;
}
.list-actions {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
.el-button + .el-button {
margin-left: 0;
}
}
} }
.sync-tip { .sync-tip {
@@ -44,9 +44,11 @@
</el-form> </el-form>
</el-card> </el-card>
<!-- ==================== 2. 工具栏按钮区 ==================== --> <!-- ==================== 2. 班次学期信息列表 ==================== -->
<div class="list-toolbar"> <el-card shadow="never" class="table-card">
<div class="left-group"> <div class="list-header">
<div class="list-title">班次学期列表</div>
<div class="list-actions">
<el-button type="primary" icon="el-icon-plus" @click="handleBatchAdd">批量创建班次学期</el-button> <el-button type="primary" icon="el-icon-plus" @click="handleBatchAdd">批量创建班次学期</el-button>
<el-button type="primary" plain icon="el-icon-document-add" @click="handleAdd">新增</el-button> <el-button type="primary" plain icon="el-icon-document-add" @click="handleAdd">新增</el-button>
<el-button type="primary" plain icon="el-icon-edit" :disabled="!currentRow" @click="handleEdit">编辑</el-button> <el-button type="primary" plain icon="el-icon-edit" :disabled="!currentRow" @click="handleEdit">编辑</el-button>
@@ -59,8 +61,6 @@
<el-button type="warning" plain :disabled="selection.length < 2" @click="handleWaveMerge">预设合班</el-button> <el-button type="warning" plain :disabled="selection.length < 2" @click="handleWaveMerge">预设合班</el-button>
<el-button type="warning" plain :disabled="!selection.length" @click="handleWaveSplit">预设拆班</el-button> <el-button type="warning" plain :disabled="!selection.length" @click="handleWaveSplit">预设拆班</el-button>
<el-button type="primary" plain :disabled="!selection.length" @click="handleBatchGenerateTasks">批量生成必修课程</el-button> <el-button type="primary" plain :disabled="!selection.length" @click="handleBatchGenerateTasks">批量生成必修课程</el-button>
</div>
<div class="right-group">
<el-button type="success" plain icon="el-icon-date" :disabled="!currentRow" @click="handleEditEventCalendar">编辑班历</el-button> <el-button type="success" plain icon="el-icon-date" :disabled="!currentRow" @click="handleEditEventCalendar">编辑班历</el-button>
<el-button type="success" plain icon="el-icon-calendar" :disabled="!currentRow" @click="handleEditCalendar">编辑班次教学任务</el-button> <el-button type="success" plain icon="el-icon-calendar" :disabled="!currentRow" @click="handleEditCalendar">编辑班次教学任务</el-button>
<el-button type="success" plain icon="el-icon-data-line" :disabled="!currentRow" @click="handleAllocation">教学配当</el-button> <el-button type="success" plain icon="el-icon-data-line" :disabled="!currentRow" @click="handleAllocation">教学配当</el-button>
@@ -69,9 +69,6 @@
<el-button type="danger" plain icon="el-icon-delete-solid" :disabled="!selection.length" @click="handleWithdrawRunning">删除运行课表</el-button> <el-button type="danger" plain icon="el-icon-delete-solid" :disabled="!selection.length" @click="handleWithdrawRunning">删除运行课表</el-button>
</div> </div>
</div> </div>
<!-- ==================== 3. 班次学期信息列表 ==================== -->
<el-card shadow="never" class="table-card">
<el-table <el-table
ref="tableRef" ref="tableRef"
v-loading="loading" v-loading="loading"
@@ -1000,8 +997,9 @@ export default {
margin-bottom: 16px; margin-bottom: 16px;
} }
// ========== 2. 工具栏按钮区 ========== // ========== 2. 数据表格区 ==========
.list-toolbar { .table-card {
.list-header {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@@ -1009,17 +1007,26 @@ export default {
gap: 12px; gap: 12px;
margin-bottom: 16px; margin-bottom: 16px;
.left-group, .list-title {
.right-group { font-size: 16px;
font-weight: 600;
color: #303133;
white-space: nowrap;
}
.list-actions {
display: flex; display: flex;
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: flex-end;
gap: 8px; gap: 8px;
.el-button + .el-button {
margin-left: 0;
}
} }
} }
// ========== 3. 数据表格区 ==========
.table-card {
.class-table { .class-table {
width: 100%; width: 100%;
} }
@@ -52,23 +52,6 @@
</el-card> </el-card>
<!-- ==================== 3. 操作按钮区域 ==================== -->
<el-card shadow="never" class="action-card">
<div class="section-heading section-heading--compact">
<div>
<h2 class="section-title">课程科目操作</h2>
<p class="section-description">维护课程科目或下载业务数据与导入模板</p>
</div>
</div>
<div class="action-row">
<el-button type="primary" icon="el-icon-plus" @click="handleOpenDialog">新建课程科目</el-button>
<el-button type="danger" plain icon="el-icon-delete" @click="handleBatchDelete">删除所选</el-button>
</div>
<div class="action-row">
<el-button icon="el-icon-download" @click="handleDownloadTemplate">课程科目数据文件模板下载</el-button>
</div>
</el-card>
<!-- ==================== 4. 文件上传区域 ==================== --> <!-- ==================== 4. 文件上传区域 ==================== -->
<el-card shadow="never" class="upload-card"> <el-card shadow="never" class="upload-card">
<div class="section-heading section-heading--compact"> <div class="section-heading section-heading--compact">
@@ -92,10 +75,12 @@
<!-- ==================== 6. 数据表格区域 ==================== --> <!-- ==================== 6. 数据表格区域 ==================== -->
<el-card shadow="never" class="table-card"> <el-card shadow="never" class="table-card">
<div class="section-heading section-heading--compact table-heading"> <div class="list-header">
<div> <div class="list-title">课程科目列表<span class="list-sub"> {{ total }} 条数据</span></div>
<h2 class="section-title">课程科目列表</h2> <div class="list-actions">
<p class="section-description"> {{ total }} 条数据</p> <el-button type="primary" icon="el-icon-plus" @click="handleOpenDialog">新建课程科目</el-button>
<el-button type="danger" plain icon="el-icon-delete" @click="handleBatchDelete">删除所选</el-button>
<el-button icon="el-icon-download" @click="handleDownloadTemplate">课程科目数据文件模板下载</el-button>
</div> </div>
</div> </div>
<el-table v-loading="loading" :data="tableData" stripe border highlight-current-row <el-table v-loading="loading" :data="tableData" stripe border highlight-current-row
@@ -642,22 +627,6 @@ export default {
} }
// ==================== 3. 操作按钮区域 ====================
.action-card {
margin-bottom: 16px;
.action-row {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 12px;
&:last-child {
margin-bottom: 0;
}
}
}
// ==================== 4. 文件上传区域 ==================== // ==================== 4. 文件上传区域 ====================
.upload-card { .upload-card {
margin-bottom: 16px; margin-bottom: 16px;
@@ -702,6 +671,39 @@ export default {
// ==================== 6. 数据表格区域 ==================== // ==================== 6. 数据表格区域 ====================
.table-card { .table-card {
.list-header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 16px;
.list-title {
font-size: 16px;
font-weight: 600;
color: #303133;
.list-sub {
margin-left: 10px;
font-size: 13px;
font-weight: 400;
color: #909399;
}
}
.list-actions {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
.el-button + .el-button {
margin-left: 0;
}
}
}
.pagination-wrapper { .pagination-wrapper {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
@@ -36,9 +36,11 @@
</el-form> </el-form>
</el-card> </el-card>
<!-- ==================== 2. 操作区域 ==================== --> <!-- ==================== 2. 数据表格 ==================== -->
<div class="list-toolbar"> <el-card shadow="never" class="table-card">
<div class="left-group"> <div class="list-header">
<div class="list-title">教学任务列表</div>
<div class="list-actions">
<el-button type="primary" icon="el-icon-plus" @click="handleAdd">新建教学任务</el-button> <el-button type="primary" icon="el-icon-plus" @click="handleAdd">新建教学任务</el-button>
<el-button <el-button
type="success" type="success"
@@ -52,14 +54,9 @@
:disabled="!selection.length" :disabled="!selection.length"
@click="handleBatchDelete" @click="handleBatchDelete"
>批量删除{{ selection.length }}</el-button> >批量删除{{ selection.length }}</el-button>
</div>
<div class="right-group">
<el-button icon="el-icon-collection" @click="openOfficeSummary">教研室任务书汇总</el-button> <el-button icon="el-icon-collection" @click="openOfficeSummary">教研室任务书汇总</el-button>
</div> </div>
</div> </div>
<!-- ==================== 3. 数据表格 ==================== -->
<el-card shadow="never" class="table-card">
<el-table <el-table
v-loading="loading" v-loading="loading"
:data="tableData" :data="tableData"
@@ -660,8 +657,9 @@ export default {
} }
} }
// ========== 2. 工具栏 ========== // ========== 2. 数据表格区域 ==========
.list-toolbar { .table-card {
.list-header {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@@ -669,17 +667,24 @@ export default {
gap: 12px; gap: 12px;
margin-bottom: 16px; margin-bottom: 16px;
.left-group, .list-title {
.right-group { font-size: 16px;
font-weight: 600;
color: #303133;
}
.list-actions {
display: flex; display: flex;
align-items: center; align-items: center;
flex-wrap: wrap; flex-wrap: wrap;
gap: 10px; gap: 10px;
.el-button + .el-button {
margin-left: 0;
}
} }
} }
// ========== 3. 数据表格区域 ==========
.table-card {
.task-table { .task-table {
width: 100%; width: 100%;
} }
@@ -33,21 +33,18 @@
</el-card> </el-card>
<!-- 教员列表 --> <!-- 教员列表 -->
<div class="list-title">教员列表</div> <el-card shadow="never" class="table-card">
<div class="list-toolbar"> <div class="list-header">
<div class="left-group"> <div class="list-title">教员列表</div>
<div class="list-actions">
<el-button type="primary" icon="el-icon-plus" @click="handleNew">新建</el-button> <el-button type="primary" icon="el-icon-plus" @click="handleNew">新建</el-button>
<el-button type="danger" plain icon="el-icon-delete" @click="handleDeleteSelected">删除所选</el-button> <el-button type="danger" plain icon="el-icon-delete" @click="handleDeleteSelected">删除所选</el-button>
</div>
<div class="right-group">
<el-button icon="el-icon-upload2" @click="openImportDialog">导入</el-button> <el-button icon="el-icon-upload2" @click="openImportDialog">导入</el-button>
<el-button icon="el-icon-download" @click="handleExport">导出</el-button> <el-button icon="el-icon-download" @click="handleExport">导出</el-button>
<el-button icon="el-icon-document" @click="handleDownloadTemplate">下载模板</el-button> <el-button icon="el-icon-document" @click="handleDownloadTemplate">下载模板</el-button>
<el-button type="success" plain icon="el-icon-refresh" :loading="alignLoading" @click="handleAlignUsers">对齐到用户表</el-button> <el-button type="success" plain icon="el-icon-refresh" :loading="alignLoading" @click="handleAlignUsers">对齐到用户表</el-button>
</div> </div>
</div> </div>
<el-card shadow="never" class="table-card">
<el-table v-loading="loading" :data="tableData" stripe border highlight-current-row <el-table v-loading="loading" :data="tableData" stripe border highlight-current-row
@selection-change="handleSelectionChange"> @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <el-table-column type="selection" width="50" align="center" />
@@ -1363,32 +1360,34 @@ export default {
} }
} }
.table-card {
margin-bottom: 16px;
.list-header {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 16px;
.list-title { .list-title {
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
color: #303133; color: #303133;
margin-bottom: 12px;
} }
.list-toolbar { .list-actions {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between;
gap: 12px;
flex-wrap: wrap; flex-wrap: wrap;
margin-bottom: 16px; gap: 12px;
.left-group, .el-button + .el-button {
.right-group { margin-left: 0;
display: flex; }
align-items: center;
gap: 12px;
flex-wrap: wrap;
} }
} }
.table-card {
margin-bottom: 16px;
::v-deep(.el-table) { ::v-deep(.el-table) {
width: 100%; width: 100%;