Commit b36af8045f093a65ff05c8b91886efef5dcbdcc3

Authored by “wangming”
1 parent c715e03d

优化工资管理页面UI样式,统一现代化设计风格

- 统一所有工资列表页面样式,采用灰色系渐变配色方案
- 优化页面头部、搜索区域、表格容器样式,添加渐变背景和阴影效果
- 修复表格固定列和多选框的z-index问题,确保多选框可正常点击
- 统一按钮样式,使用灰色渐变替代蓝色
- 添加图标hover动画效果(缩放和旋转)
- 优化表格行hover效果,使用渐变背景和位移动画
- 统一字体大小、间距、圆角等设计元素

涉及页面:
- assistants.vue (店助工资)
- director.vue (总监工资)
- business-unit-managers.vue (事业部经理工资)
- major-project-directors.vue (大项目总监工资)
- major-project-teachers.vue (大项目老师工资)
- cienceTeacher.vue (科学老师工资)
- tech-general-managers.vue (技术总经理工资)
- tech-stock.vue (技术库存)
- shop.vue (门店工资)
- shop-stock.vue (门店库存)
- headquarters-stock.vue (总部库存)
- healthCoach.vue (健康师工资)
antis-ncc-admin/src/views/wageManagement/assistants.vue
@@ -7,36 +7,17 @@ @@ -7,36 +7,17 @@
7 <p class="page-desc">管理店助工资数据,包括业绩、提成、阶段奖励、补贴、扣款等信息</p> 7 <p class="page-desc">管理店助工资数据,包括业绩、提成、阶段奖励、补贴、扣款等信息</p>
8 </div> 8 </div>
9 <div class="header-right"> 9 <div class="header-right">
10 - <el-button  
11 - type="warning"  
12 - icon="el-icon-upload2"  
13 - @click="showImportDialog"  
14 - :loading="importLoading"  
15 - > 10 + <el-button type="warning" icon="el-icon-upload2" @click="showImportDialog" :loading="importLoading">
16 导入 11 导入
17 </el-button> 12 </el-button>
18 - <el-button  
19 - type="success"  
20 - icon="el-icon-download"  
21 - @click="handleExport"  
22 - :loading="exportLoading"  
23 - :disabled="!list || list.length === 0"  
24 - > 13 + <el-button type="success" icon="el-icon-download" @click="handleExport" :loading="exportLoading"
  14 + :disabled="!list || list.length === 0">
25 导出 15 导出
26 </el-button> 16 </el-button>
27 - <el-button  
28 - type="primary"  
29 - icon="el-icon-cpu"  
30 - @click="showCalculateDialog"  
31 - :loading="calculateLoading"  
32 - > 17 + <el-button type="primary" icon="el-icon-cpu" @click="showCalculateDialog" :loading="calculateLoading">
33 计算工资 18 计算工资
34 </el-button> 19 </el-button>
35 - <el-button  
36 - icon="el-icon-refresh"  
37 - @click="getList"  
38 - :loading="loading"  
39 - > 20 + <el-button icon="el-icon-refresh" @click="getList" :loading="loading">
40 刷新 21 刷新
41 </el-button> 22 </el-button>
42 </div> 23 </div>
@@ -46,29 +27,12 @@ @@ -46,29 +27,12 @@
46 <div class="search-container"> 27 <div class="search-container">
47 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px"> 28 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px">
48 <el-form-item label="月份" prop="month"> 29 <el-form-item label="月份" prop="month">
49 - <el-date-picker  
50 - v-model="queryParams.month"  
51 - type="month"  
52 - placeholder="选择月份"  
53 - format="yyyyMM"  
54 - value-format="yyyyMM"  
55 - style="width: 200px"  
56 - /> 30 + <el-date-picker v-model="queryParams.month" type="month" placeholder="选择月份" format="yyyyMM"
  31 + value-format="yyyyMM" style="width: 200px" />
57 </el-form-item> 32 </el-form-item>
58 <el-form-item label="门店" prop="storeId"> 33 <el-form-item label="门店" prop="storeId">
59 - <el-select  
60 - v-model="queryParams.storeId"  
61 - placeholder="请选择门店"  
62 - clearable  
63 - filterable  
64 - style="width: 200px"  
65 - >  
66 - <el-option  
67 - v-for="store in storeList"  
68 - :key="store.id"  
69 - :label="store.fullName"  
70 - :value="store.id"  
71 - /> 34 + <el-select v-model="queryParams.storeId" placeholder="请选择门店" clearable filterable style="width: 200px">
  35 + <el-option v-for="store in storeList" :key="store.id" :label="store.fullName" :value="store.id" />
72 </el-select> 36 </el-select>
73 </el-form-item> 37 </el-form-item>
74 <el-form-item> 38 <el-form-item>
@@ -79,30 +43,13 @@ @@ -79,30 +43,13 @@
79 <!-- 批量操作区域 --> 43 <!-- 批量操作区域 -->
80 <div class="batch-action-container" v-if="selectedRows.length > 0"> 44 <div class="batch-action-container" v-if="selectedRows.length > 0">
81 <span class="selected-count">已选择 {{ selectedRows.length }} 条记录</span> 45 <span class="selected-count">已选择 {{ selectedRows.length }} 条记录</span>
82 - <el-button  
83 - type="warning"  
84 - icon="el-icon-lock"  
85 - size="small"  
86 - @click="handleBatchLock"  
87 - :loading="lockLoading"  
88 - > 46 + <el-button type="warning" icon="el-icon-lock" size="small" @click="handleBatchLock" :loading="lockLoading">
89 批量锁定 47 批量锁定
90 </el-button> 48 </el-button>
91 - <el-button  
92 - type="success"  
93 - icon="el-icon-unlock"  
94 - size="small"  
95 - @click="handleBatchUnlock"  
96 - :loading="lockLoading"  
97 - > 49 + <el-button type="success" icon="el-icon-unlock" size="small" @click="handleBatchUnlock" :loading="lockLoading">
98 批量解锁 50 批量解锁
99 </el-button> 51 </el-button>
100 - <el-button  
101 - type="info"  
102 - icon="el-icon-close"  
103 - size="small"  
104 - @click="handleClearSelection"  
105 - > 52 + <el-button type="info" icon="el-icon-close" size="small" @click="handleClearSelection">
106 取消选择 53 取消选择
107 </el-button> 54 </el-button>
108 </div> 55 </div>
@@ -110,16 +57,8 @@ @@ -110,16 +57,8 @@
110 57
111 <!-- 数据表格 --> 58 <!-- 数据表格 -->
112 <div class="table-container"> 59 <div class="table-container">
113 - <NCC-table  
114 - ref="table"  
115 - v-loading="loading"  
116 - :data="list"  
117 - border  
118 - stripe  
119 - height="calc(100vh - 420px)"  
120 - :header-cell-style="{ background: '#f5f7fa', color: '#606266' }"  
121 - @selection-change="handleSelectionChange"  
122 - > 60 + <NCC-table ref="table" v-loading="loading" :data="list" border stripe height="calc(100vh - 420px)"
  61 + :header-cell-style="{ background: '#f5f7fa', color: '#606266' }" @selection-change="handleSelectionChange">
123 <!-- 多选列 --> 62 <!-- 多选列 -->
124 <el-table-column type="selection" width="55" align="center" fixed="left" /> 63 <el-table-column type="selection" width="55" align="center" fixed="left" />
125 <!-- 基本信息 --> 64 <!-- 基本信息 -->
@@ -358,32 +297,15 @@ @@ -358,32 +297,15 @@
358 <!-- 操作列 --> 297 <!-- 操作列 -->
359 <el-table-column label="操作" width="250" align="center" fixed="right"> 298 <el-table-column label="操作" width="250" align="center" fixed="right">
360 <template slot-scope="scope"> 299 <template slot-scope="scope">
361 - <el-button  
362 - type="primary"  
363 - size="mini"  
364 - icon="el-icon-view"  
365 - @click="handleViewDetail(scope.row)"  
366 - > 300 + <el-button type="primary" size="mini" icon="el-icon-view" @click="handleViewDetail(scope.row)">
367 详情 301 详情
368 </el-button> 302 </el-button>
369 - <el-button  
370 - v-if="scope.row.IsLocked === 1"  
371 - type="success"  
372 - size="mini"  
373 - icon="el-icon-unlock"  
374 - @click="handleUnlock(scope.row)"  
375 - :loading="lockLoading"  
376 - > 303 + <el-button v-if="scope.row.IsLocked === 1" type="success" size="mini" icon="el-icon-unlock"
  304 + @click="handleUnlock(scope.row)" :loading="lockLoading">
377 解锁 305 解锁
378 </el-button> 306 </el-button>
379 - <el-button  
380 - v-else  
381 - type="warning"  
382 - size="mini"  
383 - icon="el-icon-lock"  
384 - @click="handleLock(scope.row)"  
385 - :loading="lockLoading"  
386 - > 307 + <el-button v-else type="warning" size="mini" icon="el-icon-lock" @click="handleLock(scope.row)"
  308 + :loading="lockLoading">
387 锁定 309 锁定
388 </el-button> 310 </el-button>
389 </template> 311 </template>
@@ -392,74 +314,38 @@ @@ -392,74 +314,38 @@
392 </div> 314 </div>
393 315
394 <!-- 计算工资弹窗 --> 316 <!-- 计算工资弹窗 -->
395 - <el-dialog  
396 - title="计算店助工资"  
397 - :visible="calculateDialogVisible"  
398 - width="500px"  
399 - :close-on-click-modal="false"  
400 - @close="handleCalculateDialogClose"  
401 - > 317 + <el-dialog title="计算店助工资" :visible="calculateDialogVisible" width="500px" :close-on-click-modal="false"
  318 + @close="handleCalculateDialogClose">
402 <el-form label-width="100px" label-position="right"> 319 <el-form label-width="100px" label-position="right">
403 <el-form-item label="选择月份" required> 320 <el-form-item label="选择月份" required>
404 - <el-date-picker  
405 - v-model="calculateMonth"  
406 - type="month"  
407 - placeholder="请选择月份"  
408 - format="yyyyMM"  
409 - value-format="yyyyMM"  
410 - style="width: 100%"  
411 - /> 321 + <el-date-picker v-model="calculateMonth" type="month" placeholder="请选择月份" format="yyyyMM"
  322 + value-format="yyyyMM" style="width: 100%" />
412 </el-form-item> 323 </el-form-item>
413 </el-form> 324 </el-form>
414 <div slot="footer" class="dialog-footer"> 325 <div slot="footer" class="dialog-footer">
415 <el-button @click="handleCalculateDialogClose">取消</el-button> 326 <el-button @click="handleCalculateDialogClose">取消</el-button>
416 - <el-button  
417 - type="primary"  
418 - @click="handleCalculateConfirm"  
419 - :loading="calculateLoading"  
420 - > 327 + <el-button type="primary" @click="handleCalculateConfirm" :loading="calculateLoading">
421 确定 328 确定
422 </el-button> 329 </el-button>
423 </div> 330 </div>
424 </el-dialog> 331 </el-dialog>
425 332
426 <!-- 详情弹窗 --> 333 <!-- 详情弹窗 -->
427 - <assistant-detail-dialog  
428 - :visible.sync="detailDialogVisible"  
429 - :detail-data="currentDetailData"  
430 - @close="handleDetailDialogClose"  
431 - /> 334 + <assistant-detail-dialog :visible.sync="detailDialogVisible" :detail-data="currentDetailData"
  335 + @close="handleDetailDialogClose" />
432 336
433 <!-- 导入弹窗 --> 337 <!-- 导入弹窗 -->
434 - <el-dialog  
435 - title="导入店助工资数据"  
436 - :visible="importDialogVisible"  
437 - width="500px"  
438 - :close-on-click-modal="false"  
439 - @close="handleImportDialogClose"  
440 - >  
441 - <el-upload  
442 - ref="upload"  
443 - action=""  
444 - :auto-upload="false"  
445 - :on-change="handleFileChange"  
446 - :file-list="fileList"  
447 - :limit="1"  
448 - accept=".xlsx,.xls"  
449 - drag  
450 - > 338 + <el-dialog title="导入店助工资数据" :visible="importDialogVisible" width="500px" :close-on-click-modal="false"
  339 + @close="handleImportDialogClose">
  340 + <el-upload ref="upload" action="" :auto-upload="false" :on-change="handleFileChange" :file-list="fileList"
  341 + :limit="1" accept=".xlsx,.xls" drag>
451 <i class="el-icon-upload"></i> 342 <i class="el-icon-upload"></i>
452 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> 343 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
453 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div> 344 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div>
454 </el-upload> 345 </el-upload>
455 <div slot="footer" class="dialog-footer"> 346 <div slot="footer" class="dialog-footer">
456 <el-button @click="handleImportDialogClose">取消</el-button> 347 <el-button @click="handleImportDialogClose">取消</el-button>
457 - <el-button  
458 - type="primary"  
459 - @click="handleImportConfirm"  
460 - :loading="importLoading"  
461 - :disabled="!importFile"  
462 - > 348 + <el-button type="primary" @click="handleImportConfirm" :loading="importLoading" :disabled="!importFile">
463 确定 349 确定
464 </el-button> 350 </el-button>
465 </div> 351 </div>
@@ -538,7 +424,7 @@ export default { @@ -538,7 +424,7 @@ export default {
538 // 处理年月:从month选择器中提取年份和月份 424 // 处理年月:从month选择器中提取年份和月份
539 let year = '' 425 let year = ''
540 let month = '' 426 let month = ''
541 - 427 +
542 if (this.queryParams.month && this.queryParams.month.length === 6) { 428 if (this.queryParams.month && this.queryParams.month.length === 6) {
543 // yyyyMM 格式,如 202512 429 // yyyyMM 格式,如 202512
544 year = this.queryParams.month.substring(0, 4) 430 year = this.queryParams.month.substring(0, 4)
@@ -546,8 +432,8 @@ export default { @@ -546,8 +432,8 @@ export default {
546 } else if (this.queryParams.year && this.queryParams.month) { 432 } else if (this.queryParams.year && this.queryParams.month) {
547 // 分别选择年份和月份 433 // 分别选择年份和月份
548 year = this.queryParams.year 434 year = this.queryParams.year
549 - month = this.queryParams.month.length === 6  
550 - ? this.queryParams.month.substring(4, 6) 435 + month = this.queryParams.month.length === 6
  436 + ? this.queryParams.month.substring(4, 6)
551 : this.queryParams.month 437 : this.queryParams.month
552 } else { 438 } else {
553 // 使用默认值(当前年月) 439 // 使用默认值(当前年月)
@@ -576,7 +462,7 @@ export default { @@ -576,7 +462,7 @@ export default {
576 } 462 }
577 } catch (error) { 463 } catch (error) {
578 console.error('获取店助工资列表失败:', error) 464 console.error('获取店助工资列表失败:', error)
579 - this.$message.error('获取数据失败'+error) 465 + this.$message.error('获取数据失败' + error)
580 } finally { 466 } finally {
581 this.loading = false 467 this.loading = false
582 } 468 }
@@ -801,11 +687,11 @@ export default { @@ -801,11 +687,11 @@ export default {
801 687
802 // 生成文件名 688 // 生成文件名
803 const now = new Date() 689 const now = new Date()
804 - const timestamp = now.getFullYear() +  
805 - String(now.getMonth() + 1).padStart(2, '0') +  
806 - String(now.getDate()).padStart(2, '0') +  
807 - String(now.getHours()).padStart(2, '0') +  
808 - String(now.getMinutes()).padStart(2, '0') + 690 + const timestamp = now.getFullYear() +
  691 + String(now.getMonth() + 1).padStart(2, '0') +
  692 + String(now.getDate()).padStart(2, '0') +
  693 + String(now.getHours()).padStart(2, '0') +
  694 + String(now.getMinutes()).padStart(2, '0') +
809 String(now.getSeconds()).padStart(2, '0') 695 String(now.getSeconds()).padStart(2, '0')
810 const fileName = `店助工资_${timestamp}.xlsx` 696 const fileName = `店助工资_${timestamp}.xlsx`
811 697
@@ -1045,26 +931,45 @@ export default { @@ -1045,26 +931,45 @@ export default {
1045 931
1046 <style lang="scss" scoped> 932 <style lang="scss" scoped>
1047 .app-container { 933 .app-container {
1048 - padding: 20px;  
1049 - background: #f5f5f5; 934 + padding: 16px;
  935 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  936 + min-height: 100vh;
  937 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1050 } 938 }
1051 939
1052 .page-header { 940 .page-header {
1053 display: flex; 941 display: flex;
1054 justify-content: space-between; 942 justify-content: space-between;
1055 align-items: flex-start; 943 align-items: flex-start;
1056 - margin-bottom: 20px;  
1057 - padding: 20px;  
1058 - background: #fff;  
1059 - border-radius: 8px;  
1060 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 944 + margin-bottom: 16px;
  945 + padding: 18px 24px;
  946 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  947 + border-radius: 12px;
  948 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  949 + border: 1px solid rgba(144, 147, 153, 0.2);
  950 + position: relative;
  951 + overflow: hidden;
  952 +
  953 + &::before {
  954 + content: '';
  955 + position: absolute;
  956 + top: 0;
  957 + left: 0;
  958 + right: 0;
  959 + height: 3px;
  960 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  961 + }
1061 962
1062 .header-left { 963 .header-left {
1063 h2 { 964 h2 {
1064 margin: 0 0 8px 0; 965 margin: 0 0 8px 0;
1065 color: #303133; 966 color: #303133;
1066 - font-size: 20px; 967 + font-size: 22px;
1067 font-weight: 600; 968 font-weight: 600;
  969 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  970 + -webkit-background-clip: text;
  971 + -webkit-text-fill-color: transparent;
  972 + background-clip: text;
1068 } 973 }
1069 974
1070 .page-desc { 975 .page-desc {
@@ -1076,40 +981,168 @@ export default { @@ -1076,40 +981,168 @@ export default {
1076 981
1077 .header-right { 982 .header-right {
1078 display: flex; 983 display: flex;
1079 - gap: 12px; 984 + gap: 10px;
  985 + flex-wrap: wrap;
  986 +
  987 + .el-button {
  988 + border-radius: 8px;
  989 + padding: 10px 18px;
  990 + font-weight: 500;
  991 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  992 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  993 +
  994 + &:hover {
  995 + transform: translateY(-2px);
  996 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  997 + }
  998 +
  999 + &.el-button--primary {
  1000 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1001 + border: none;
  1002 +
  1003 + &:hover {
  1004 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1005 + }
  1006 + }
  1007 +
  1008 + &.el-button--success {
  1009 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1010 + border: none;
  1011 +
  1012 + &:hover {
  1013 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1014 + }
  1015 + }
  1016 +
  1017 + &.el-button--warning {
  1018 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1019 + border: none;
  1020 +
  1021 + &:hover {
  1022 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1023 + }
  1024 + }
  1025 +
  1026 + &.el-button--info {
  1027 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1028 + border: none;
  1029 +
  1030 + &:hover {
  1031 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1032 + }
  1033 + }
  1034 + }
1080 } 1035 }
1081 } 1036 }
1082 1037
1083 .search-container { 1038 .search-container {
1084 - margin-bottom: 20px;  
1085 - padding: 20px;  
1086 - background: #fff;  
1087 - border-radius: 8px;  
1088 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1039 + margin-bottom: 16px;
  1040 + padding: 18px 24px;
  1041 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1042 + border-radius: 12px;
  1043 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1044 + border: 1px solid rgba(144, 147, 153, 0.2);
  1045 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1046 +
  1047 + &:hover {
  1048 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1049 + }
  1050 +
  1051 + &::v-deep .el-form {
  1052 + .el-form-item {
  1053 + margin-bottom: 16px;
  1054 + }
  1055 +
  1056 + .el-button {
  1057 + border-radius: 8px;
  1058 + padding: 10px 20px;
  1059 + font-weight: 500;
  1060 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1061 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1062 +
  1063 + &:hover {
  1064 + transform: translateY(-2px);
  1065 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1066 + }
  1067 +
  1068 + &.el-button--primary {
  1069 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1070 + border: none;
  1071 +
  1072 + &:hover {
  1073 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1074 + }
  1075 + }
  1076 + }
  1077 +
  1078 + .el-input__inner,
  1079 + .el-select .el-input__inner {
  1080 + border-radius: 8px;
  1081 + border: 1px solid rgba(144, 147, 153, 0.3);
  1082 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1083 +
  1084 + &:focus {
  1085 + border-color: #909399;
  1086 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1087 + }
  1088 + }
  1089 + }
1089 } 1090 }
1090 1091
1091 .batch-action-container { 1092 .batch-action-container {
1092 - margin-top: 15px;  
1093 - padding: 12px;  
1094 - background: #f0f9ff;  
1095 - border-radius: 4px; 1093 + margin-top: 16px;
  1094 + padding: 14px 18px;
  1095 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1096 + border-radius: 10px;
  1097 + border: 1px solid rgba(144, 147, 153, 0.3);
1096 display: flex; 1098 display: flex;
1097 align-items: center; 1099 align-items: center;
1098 gap: 12px; 1100 gap: 12px;
  1101 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1099 1102
1100 .selected-count { 1103 .selected-count {
1101 - color: #409EFF;  
1102 - font-weight: 500; 1104 + color: #606266;
  1105 + font-weight: 600;
1103 margin-right: 8px; 1106 margin-right: 8px;
  1107 + font-size: 14px;
  1108 + }
  1109 +
  1110 + .el-button {
  1111 + border-radius: 8px;
  1112 + font-weight: 500;
  1113 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1114 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1115 +
  1116 + &:hover {
  1117 + transform: translateY(-2px);
  1118 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1119 + }
1104 } 1120 }
1105 } 1121 }
1106 1122
1107 .table-container { 1123 .table-container {
1108 margin-bottom: 20px; 1124 margin-bottom: 20px;
1109 - padding: 20px;  
1110 - background: #fff;  
1111 - border-radius: 8px;  
1112 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1125 + padding: 18px 24px;
  1126 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1127 + border-radius: 12px;
  1128 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1129 + border: 1px solid rgba(144, 147, 153, 0.2);
  1130 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1131 + position: relative;
  1132 + overflow: hidden;
  1133 + z-index: 1;
  1134 +
  1135 + &:hover {
  1136 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1137 + }
  1138 +
  1139 + &::v-deep .el-table {
  1140 + background-color: #ffffff;
  1141 +
  1142 + .el-table__body-wrapper {
  1143 + background-color: #ffffff;
  1144 + }
  1145 + }
1113 } 1146 }
1114 1147
1115 .store-name, 1148 .store-name,
@@ -1120,28 +1153,276 @@ export default { @@ -1120,28 +1153,276 @@ export default {
1120 1153
1121 .store-icon, 1154 .store-icon,
1122 .employee-icon { 1155 .employee-icon {
1123 - color: #409EFF; 1156 + color: #606266;
1124 font-size: 16px; 1157 font-size: 16px;
  1158 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1159 + }
  1160 +
  1161 + &:hover .store-icon,
  1162 + &:hover .employee-icon {
  1163 + transform: scale(1.1) rotate(5deg);
1125 } 1164 }
1126 } 1165 }
1127 1166
1128 // 表格样式优化 1167 // 表格样式优化
1129 ::v-deep .el-table { 1168 ::v-deep .el-table {
  1169 + border-radius: 8px;
  1170 + overflow: hidden;
  1171 + border: 1px solid rgba(144, 147, 153, 0.2);
  1172 +
  1173 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1174 + .el-table__column--selection {
  1175 + z-index: 1000 !important;
  1176 + pointer-events: auto !important;
  1177 + position: relative;
  1178 + }
  1179 +
  1180 + .el-checkbox {
  1181 + z-index: 1001 !important;
  1182 + pointer-events: auto !important;
  1183 + position: relative;
  1184 + cursor: pointer;
  1185 + }
  1186 +
  1187 + .el-checkbox__input {
  1188 + z-index: 1001 !important;
  1189 + pointer-events: auto !important;
  1190 + cursor: pointer;
  1191 + }
  1192 +
  1193 + .el-checkbox__inner {
  1194 + z-index: 1001 !important;
  1195 + pointer-events: auto !important;
  1196 + cursor: pointer;
  1197 + }
  1198 +
  1199 + td.el-table__cell--selection,
  1200 + th.el-table__cell--selection {
  1201 + z-index: 1000 !important;
  1202 + pointer-events: auto !important;
  1203 + position: relative;
  1204 + background-color: #ffffff !important;
  1205 + cursor: pointer;
  1206 +
  1207 + .cell {
  1208 + pointer-events: auto !important;
  1209 + z-index: 1001 !important;
  1210 + position: relative;
  1211 + }
  1212 + }
  1213 +
1130 .el-table__header-wrapper { 1214 .el-table__header-wrapper {
1131 th { 1215 th {
1132 - background-color: #f5f7fa;  
1133 - color: #606266; 1216 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1217 + color: #303133;
1134 font-weight: 600; 1218 font-weight: 600;
  1219 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1220 + padding: 14px 0 !important;
  1221 + height: auto !important;
  1222 + line-height: normal !important;
  1223 + box-sizing: border-box;
1135 } 1224 }
1136 } 1225 }
1137 1226
1138 .el-table__body-wrapper { 1227 .el-table__body-wrapper {
  1228 + background-color: #ffffff;
  1229 + z-index: 1;
  1230 +
1139 .el-table__row { 1231 .el-table__row {
  1232 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1233 + background-color: #ffffff;
  1234 +
1140 &:hover { 1235 &:hover {
1141 - background-color: #f5f7fa; 1236 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1237 + transform: translateX(2px);
  1238 + }
  1239 +
  1240 + td {
  1241 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1242 + background-color: #ffffff !important;
  1243 + padding: 12px 0 !important;
  1244 + height: auto !important;
  1245 + line-height: normal !important;
  1246 + box-sizing: border-box;
  1247 + }
  1248 +
  1249 + &.el-table__row--striped {
  1250 + td {
  1251 + background-color: #fafafa !important;
  1252 + }
  1253 +
  1254 + &:hover td {
  1255 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1256 + }
  1257 + }
  1258 + }
  1259 + }
  1260 +
  1261 + .el-table__header-wrapper {
  1262 + background-color: #ffffff;
  1263 + z-index: 2;
  1264 + }
  1265 +
  1266 + // 固定列样式修复
  1267 + .el-table__fixed,
  1268 + .el-table__fixed-right {
  1269 + z-index: 5 !important;
  1270 + background-color: #ffffff;
  1271 + height: 100% !important;
  1272 +
  1273 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1274 + .el-table__column--selection {
  1275 + z-index: 1000 !important;
  1276 + pointer-events: auto !important;
  1277 + position: relative;
  1278 + }
  1279 +
  1280 + // 确保选择列单元格可以点击
  1281 + td.el-table__cell--selection,
  1282 + th.el-table__cell--selection {
  1283 + z-index: 1000 !important;
  1284 + pointer-events: auto !important;
  1285 + position: relative;
  1286 + background-color: #ffffff !important;
  1287 + cursor: pointer;
  1288 +
  1289 + .cell {
  1290 + pointer-events: auto !important;
  1291 + z-index: 1001 !important;
  1292 + position: relative;
  1293 + }
  1294 + }
  1295 +
  1296 + // 确保多选框本身可以点击
  1297 + .el-checkbox {
  1298 + z-index: 1001 !important;
  1299 + position: relative;
  1300 + pointer-events: auto !important;
  1301 + cursor: pointer;
  1302 + }
  1303 +
  1304 + .el-checkbox__input {
  1305 + z-index: 1001 !important;
  1306 + pointer-events: auto !important;
  1307 + cursor: pointer;
  1308 + }
  1309 +
  1310 + .el-checkbox__inner {
  1311 + z-index: 1001 !important;
  1312 + pointer-events: auto !important;
  1313 + cursor: pointer;
  1314 + }
  1315 +
  1316 + &::before {
  1317 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1318 + z-index: 4 !important;
  1319 + height: 100% !important;
  1320 + pointer-events: none !important;
  1321 + }
  1322 +
  1323 + .el-table__fixed-header-wrapper {
  1324 + height: auto !important;
  1325 + background-color: #ffffff;
  1326 +
  1327 + th {
  1328 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1329 + z-index: 6 !important;
  1330 + padding: 14px 0 !important;
  1331 + height: auto !important;
  1332 + line-height: normal !important;
  1333 +
  1334 + // 选择列header需要最高z-index
  1335 + &.el-table__cell--selection {
  1336 + z-index: 1000 !important;
  1337 + pointer-events: auto !important;
  1338 + }
  1339 + }
  1340 + }
  1341 +
  1342 + .el-table__fixed-body-wrapper {
  1343 + background-color: #ffffff;
  1344 + height: auto !important;
  1345 + max-height: 100% !important;
  1346 + overflow-y: auto !important;
  1347 +
  1348 + td {
  1349 + background-color: #ffffff !important;
  1350 + z-index: 6 !important;
  1351 + padding: 12px 0 !important;
  1352 + height: auto !important;
  1353 + line-height: normal !important;
  1354 +
  1355 + // 选择列cell需要最高z-index
  1356 + &.el-table__cell--selection {
  1357 + z-index: 1000 !important;
  1358 + pointer-events: auto !important;
  1359 + }
  1360 + }
  1361 +
  1362 + .el-table__row {
  1363 + height: auto !important;
  1364 +
  1365 + &.el-table__row--striped {
  1366 + td {
  1367 + background-color: #fafafa !important;
  1368 + }
  1369 + }
  1370 + }
  1371 + }
  1372 +
  1373 + th {
  1374 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1375 + z-index: 6 !important;
  1376 + padding: 14px 0 !important;
  1377 + height: auto !important;
  1378 + line-height: normal !important;
  1379 +
  1380 + // 选择列header需要最高z-index
  1381 + &.el-table__cell--selection {
  1382 + z-index: 1000 !important;
  1383 + pointer-events: auto !important;
  1384 + }
  1385 + }
  1386 +
  1387 + td {
  1388 + background-color: #ffffff !important;
  1389 + z-index: 6 !important;
  1390 + padding: 12px 0 !important;
  1391 + height: auto !important;
  1392 + line-height: normal !important;
  1393 +
  1394 + // 选择列cell需要最高z-index
  1395 + &.el-table__cell--selection {
  1396 + z-index: 1000 !important;
  1397 + pointer-events: auto !important;
1142 } 1398 }
1143 } 1399 }
1144 } 1400 }
  1401 +
  1402 + // 固定列补丁
  1403 + .el-table__fixed-right-patch {
  1404 + background-color: #ffffff;
  1405 + z-index: 4 !important;
  1406 + height: 100% !important;
  1407 + pointer-events: none !important;
  1408 + }
  1409 +
  1410 + // 确保固定列和主表格的header高度一致
  1411 + .el-table__header-wrapper th,
  1412 + .el-table__fixed-header-wrapper th,
  1413 + .el-table__fixed-right-header-wrapper th {
  1414 + padding: 14px 0 !important;
  1415 + height: auto !important;
  1416 + line-height: normal !important;
  1417 + }
  1418 +
  1419 + // 确保固定列和主表格的body行高一致
  1420 + .el-table__body-wrapper td,
  1421 + .el-table__fixed-body-wrapper td,
  1422 + .el-table__fixed-right-body-wrapper td {
  1423 + padding: 12px 0 !important;
  1424 + height: auto !important;
  1425 + line-height: normal !important;
  1426 + }
1145 } 1427 }
1146 </style> 1428 </style>
1147 -  
antis-ncc-admin/src/views/wageManagement/business-unit-managers.vue
@@ -7,36 +7,17 @@ @@ -7,36 +7,17 @@
7 <p class="page-desc">管理事业部总经理/经理工资数据,包括提成、补贴、扣款等信息</p> 7 <p class="page-desc">管理事业部总经理/经理工资数据,包括提成、补贴、扣款等信息</p>
8 </div> 8 </div>
9 <div class="header-right"> 9 <div class="header-right">
10 - <el-button  
11 - type="warning"  
12 - icon="el-icon-upload2"  
13 - @click="showImportDialog"  
14 - :loading="importLoading"  
15 - > 10 + <el-button type="warning" icon="el-icon-upload2" @click="showImportDialog" :loading="importLoading">
16 导入 11 导入
17 </el-button> 12 </el-button>
18 - <el-button  
19 - type="success"  
20 - icon="el-icon-download"  
21 - @click="handleExport"  
22 - :loading="exportLoading"  
23 - :disabled="!list || list.length === 0"  
24 - > 13 + <el-button type="success" icon="el-icon-download" @click="handleExport" :loading="exportLoading"
  14 + :disabled="!list || list.length === 0">
25 导出 15 导出
26 </el-button> 16 </el-button>
27 - <el-button  
28 - type="primary"  
29 - icon="el-icon-cpu"  
30 - @click="showCalculateDialog"  
31 - :loading="calculateLoading"  
32 - > 17 + <el-button type="primary" icon="el-icon-cpu" @click="showCalculateDialog" :loading="calculateLoading">
33 计算工资 18 计算工资
34 </el-button> 19 </el-button>
35 - <el-button  
36 - icon="el-icon-refresh"  
37 - @click="getList"  
38 - :loading="loading"  
39 - > 20 + <el-button icon="el-icon-refresh" @click="getList" :loading="loading">
40 刷新 21 刷新
41 </el-button> 22 </el-button>
42 </div> 23 </div>
@@ -46,22 +27,11 @@ @@ -46,22 +27,11 @@
46 <div class="search-container"> 27 <div class="search-container">
47 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px"> 28 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px">
48 <el-form-item label="月份" prop="month"> 29 <el-form-item label="月份" prop="month">
49 - <el-date-picker  
50 - v-model="queryParams.month"  
51 - type="month"  
52 - placeholder="选择月份"  
53 - format="yyyyMM"  
54 - value-format="yyyyMM"  
55 - style="width: 200px"  
56 - /> 30 + <el-date-picker v-model="queryParams.month" type="month" placeholder="选择月份" format="yyyyMM"
  31 + value-format="yyyyMM" style="width: 200px" />
57 </el-form-item> 32 </el-form-item>
58 <el-form-item label="类型" prop="managerType"> 33 <el-form-item label="类型" prop="managerType">
59 - <el-select  
60 - v-model="queryParams.managerType"  
61 - placeholder="请选择类型"  
62 - clearable  
63 - style="width: 200px"  
64 - > 34 + <el-select v-model="queryParams.managerType" placeholder="请选择类型" clearable style="width: 200px">
65 <el-option label="全部" :value="null" /> 35 <el-option label="全部" :value="null" />
66 <el-option label="经理" :value="0" /> 36 <el-option label="经理" :value="0" />
67 <el-option label="总经理" :value="1" /> 37 <el-option label="总经理" :value="1" />
@@ -83,30 +53,13 @@ @@ -83,30 +53,13 @@
83 <!-- 批量操作区域 --> 53 <!-- 批量操作区域 -->
84 <div class="batch-action-container" v-if="selectedRows.length > 0"> 54 <div class="batch-action-container" v-if="selectedRows.length > 0">
85 <span class="selected-count">已选择 {{ selectedRows.length }} 条记录</span> 55 <span class="selected-count">已选择 {{ selectedRows.length }} 条记录</span>
86 - <el-button  
87 - type="warning"  
88 - icon="el-icon-lock"  
89 - size="small"  
90 - @click="handleBatchLock"  
91 - :loading="lockLoading"  
92 - > 56 + <el-button type="warning" icon="el-icon-lock" size="small" @click="handleBatchLock" :loading="lockLoading">
93 批量锁定 57 批量锁定
94 </el-button> 58 </el-button>
95 - <el-button  
96 - type="success"  
97 - icon="el-icon-unlock"  
98 - size="small"  
99 - @click="handleBatchUnlock"  
100 - :loading="lockLoading"  
101 - > 59 + <el-button type="success" icon="el-icon-unlock" size="small" @click="handleBatchUnlock" :loading="lockLoading">
102 批量解锁 60 批量解锁
103 </el-button> 61 </el-button>
104 - <el-button  
105 - type="info"  
106 - icon="el-icon-close"  
107 - size="small"  
108 - @click="handleClearSelection"  
109 - > 62 + <el-button type="info" icon="el-icon-close" size="small" @click="handleClearSelection">
110 取消选择 63 取消选择
111 </el-button> 64 </el-button>
112 </div> 65 </div>
@@ -114,16 +67,8 @@ @@ -114,16 +67,8 @@
114 67
115 <!-- 数据表格 --> 68 <!-- 数据表格 -->
116 <div class="table-container"> 69 <div class="table-container">
117 - <NCC-table  
118 - ref="table"  
119 - v-loading="loading"  
120 - :data="list"  
121 - border  
122 - stripe  
123 - height="calc(100vh - 420px)"  
124 - :header-cell-style="{ background: '#f5f7fa', color: '#606266' }"  
125 - @selection-change="handleSelectionChange"  
126 - > 70 + <NCC-table ref="table" v-loading="loading" :data="list" border stripe height="calc(100vh - 420px)"
  71 + :header-cell-style="{ background: '#f5f7fa', color: '#606266' }" @selection-change="handleSelectionChange">
127 <!-- 多选列 --> 72 <!-- 多选列 -->
128 <el-table-column type="selection" width="55" align="center" fixed="left" /> 73 <el-table-column type="selection" width="55" align="center" fixed="left" />
129 <!-- 基本信息 --> 74 <!-- 基本信息 -->
@@ -329,41 +274,19 @@ @@ -329,41 +274,19 @@
329 <!-- 操作列 --> 274 <!-- 操作列 -->
330 <el-table-column label="操作" width="350" align="center" fixed="right"> 275 <el-table-column label="操作" width="350" align="center" fixed="right">
331 <template slot-scope="scope"> 276 <template slot-scope="scope">
332 - <el-button  
333 - type="primary"  
334 - size="mini"  
335 - icon="el-icon-view"  
336 - @click="handleViewDetail(scope.row)"  
337 - > 277 + <el-button type="primary" size="mini" icon="el-icon-view" @click="handleViewDetail(scope.row)">
338 详情 278 详情
339 </el-button> 279 </el-button>
340 - <el-button  
341 - type="info"  
342 - size="mini"  
343 - icon="el-icon-document"  
344 - @click="showStorePerformanceDetail(scope.row)"  
345 - v-if="scope.row.StorePerformanceDetail"  
346 - > 280 + <el-button type="info" size="mini" icon="el-icon-document" @click="showStorePerformanceDetail(scope.row)"
  281 + v-if="scope.row.StorePerformanceDetail">
347 门店明细 282 门店明细
348 </el-button> 283 </el-button>
349 - <el-button  
350 - v-if="scope.row.IsLocked === 1"  
351 - type="success"  
352 - size="mini"  
353 - icon="el-icon-unlock"  
354 - @click="handleUnlock(scope.row)"  
355 - :loading="lockLoading"  
356 - > 284 + <el-button v-if="scope.row.IsLocked === 1" type="success" size="mini" icon="el-icon-unlock"
  285 + @click="handleUnlock(scope.row)" :loading="lockLoading">
357 解锁 286 解锁
358 </el-button> 287 </el-button>
359 - <el-button  
360 - v-else  
361 - type="warning"  
362 - size="mini"  
363 - icon="el-icon-lock"  
364 - @click="handleLock(scope.row)"  
365 - :loading="lockLoading"  
366 - > 288 + <el-button v-else type="warning" size="mini" icon="el-icon-lock" @click="handleLock(scope.row)"
  289 + :loading="lockLoading">
367 锁定 290 锁定
368 </el-button> 291 </el-button>
369 </template> 292 </template>
@@ -372,51 +295,29 @@ @@ -372,51 +295,29 @@
372 </div> 295 </div>
373 296
374 <!-- 计算工资弹窗 --> 297 <!-- 计算工资弹窗 -->
375 - <el-dialog  
376 - title="计算事业部总经理/经理工资"  
377 - :visible="calculateDialogVisible"  
378 - width="500px"  
379 - :close-on-click-modal="false"  
380 - @close="handleCalculateDialogClose"  
381 - > 298 + <el-dialog title="计算事业部总经理/经理工资" :visible="calculateDialogVisible" width="500px" :close-on-click-modal="false"
  299 + @close="handleCalculateDialogClose">
382 <el-form label-width="100px" label-position="right"> 300 <el-form label-width="100px" label-position="right">
383 <el-form-item label="选择月份" required> 301 <el-form-item label="选择月份" required>
384 - <el-date-picker  
385 - v-model="calculateMonth"  
386 - type="month"  
387 - placeholder="请选择月份"  
388 - format="yyyyMM"  
389 - value-format="yyyyMM"  
390 - style="width: 100%"  
391 - /> 302 + <el-date-picker v-model="calculateMonth" type="month" placeholder="请选择月份" format="yyyyMM"
  303 + value-format="yyyyMM" style="width: 100%" />
392 </el-form-item> 304 </el-form-item>
393 </el-form> 305 </el-form>
394 <div slot="footer" class="dialog-footer"> 306 <div slot="footer" class="dialog-footer">
395 <el-button @click="handleCalculateDialogClose">取消</el-button> 307 <el-button @click="handleCalculateDialogClose">取消</el-button>
396 - <el-button  
397 - type="primary"  
398 - @click="handleCalculateConfirm"  
399 - :loading="calculateLoading"  
400 - > 308 + <el-button type="primary" @click="handleCalculateConfirm" :loading="calculateLoading">
401 确定 309 确定
402 </el-button> 310 </el-button>
403 </div> 311 </div>
404 </el-dialog> 312 </el-dialog>
405 313
406 <!-- 详情弹窗 --> 314 <!-- 详情弹窗 -->
407 - <business-unit-manager-detail-dialog  
408 - :visible.sync="detailDialogVisible"  
409 - :detail-data="currentDetailData"  
410 - @close="handleDetailDialogClose"  
411 - /> 315 + <business-unit-manager-detail-dialog :visible.sync="detailDialogVisible" :detail-data="currentDetailData"
  316 + @close="handleDetailDialogClose" />
412 317
413 <!-- 门店业绩明细弹窗 --> 318 <!-- 门店业绩明细弹窗 -->
414 - <el-dialog  
415 - title="门店业绩明细"  
416 - :visible="storePerformanceDetailVisible"  
417 - width="1200px"  
418 - @close="handleStorePerformanceDetailClose"  
419 - > 319 + <el-dialog title="门店业绩明细" :visible="storePerformanceDetailVisible" width="1200px"
  320 + @close="handleStorePerformanceDetailClose">
420 <el-table :data="storePerformanceDetailList" border stripe max-height="500"> 321 <el-table :data="storePerformanceDetailList" border stripe max-height="500">
421 <el-table-column prop="StoreName" label="门店名称" width="150" align="center" fixed="left" /> 322 <el-table-column prop="StoreName" label="门店名称" width="150" align="center" fixed="left" />
422 <el-table-column prop="StoreLifeline" label="门店生命线" width="120" align="center"> 323 <el-table-column prop="StoreLifeline" label="门店生命线" width="120" align="center">
@@ -463,35 +364,17 @@ @@ -463,35 +364,17 @@
463 </el-dialog> 364 </el-dialog>
464 365
465 <!-- 导入弹窗 --> 366 <!-- 导入弹窗 -->
466 - <el-dialog  
467 - title="导入事业部总经理/经理工资数据"  
468 - :visible="importDialogVisible"  
469 - width="500px"  
470 - :close-on-click-modal="false"  
471 - @close="handleImportDialogClose"  
472 - >  
473 - <el-upload  
474 - ref="upload"  
475 - action=""  
476 - :auto-upload="false"  
477 - :on-change="handleFileChange"  
478 - :file-list="fileList"  
479 - :limit="1"  
480 - accept=".xlsx,.xls"  
481 - drag  
482 - > 367 + <el-dialog title="导入事业部总经理/经理工资数据" :visible="importDialogVisible" width="500px" :close-on-click-modal="false"
  368 + @close="handleImportDialogClose">
  369 + <el-upload ref="upload" action="" :auto-upload="false" :on-change="handleFileChange" :file-list="fileList"
  370 + :limit="1" accept=".xlsx,.xls" drag>
483 <i class="el-icon-upload"></i> 371 <i class="el-icon-upload"></i>
484 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> 372 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
485 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div> 373 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div>
486 </el-upload> 374 </el-upload>
487 <div slot="footer" class="dialog-footer"> 375 <div slot="footer" class="dialog-footer">
488 <el-button @click="handleImportDialogClose">取消</el-button> 376 <el-button @click="handleImportDialogClose">取消</el-button>
489 - <el-button  
490 - type="primary"  
491 - @click="handleImportConfirm"  
492 - :loading="importLoading"  
493 - :disabled="!importFile"  
494 - > 377 + <el-button type="primary" @click="handleImportConfirm" :loading="importLoading" :disabled="!importFile">
495 确定 378 确定
496 </el-button> 379 </el-button>
497 </div> 380 </div>
@@ -559,7 +442,7 @@ export default { @@ -559,7 +442,7 @@ export default {
559 // 处理年月:从month选择器中提取年份和月份 442 // 处理年月:从month选择器中提取年份和月份
560 let year = '' 443 let year = ''
561 let month = '' 444 let month = ''
562 - 445 +
563 if (this.queryParams.month && this.queryParams.month.length === 6) { 446 if (this.queryParams.month && this.queryParams.month.length === 6) {
564 // yyyyMM 格式,如 202512 447 // yyyyMM 格式,如 202512
565 year = this.queryParams.month.substring(0, 4) 448 year = this.queryParams.month.substring(0, 4)
@@ -567,8 +450,8 @@ export default { @@ -567,8 +450,8 @@ export default {
567 } else if (this.queryParams.year && this.queryParams.month) { 450 } else if (this.queryParams.year && this.queryParams.month) {
568 // 分别选择年份和月份 451 // 分别选择年份和月份
569 year = this.queryParams.year 452 year = this.queryParams.year
570 - month = this.queryParams.month.length === 6  
571 - ? this.queryParams.month.substring(4, 6) 453 + month = this.queryParams.month.length === 6
  454 + ? this.queryParams.month.substring(4, 6)
572 : this.queryParams.month 455 : this.queryParams.month
573 } else { 456 } else {
574 // 使用默认值(当前年月) 457 // 使用默认值(当前年月)
@@ -1056,11 +939,11 @@ export default { @@ -1056,11 +939,11 @@ export default {
1056 939
1057 // 生成文件名 940 // 生成文件名
1058 const now = new Date() 941 const now = new Date()
1059 - const timestamp = now.getFullYear() +  
1060 - String(now.getMonth() + 1).padStart(2, '0') +  
1061 - String(now.getDate()).padStart(2, '0') +  
1062 - String(now.getHours()).padStart(2, '0') +  
1063 - String(now.getMinutes()).padStart(2, '0') + 942 + const timestamp = now.getFullYear() +
  943 + String(now.getMonth() + 1).padStart(2, '0') +
  944 + String(now.getDate()).padStart(2, '0') +
  945 + String(now.getHours()).padStart(2, '0') +
  946 + String(now.getMinutes()).padStart(2, '0') +
1064 String(now.getSeconds()).padStart(2, '0') 947 String(now.getSeconds()).padStart(2, '0')
1065 const fileName = `事业部总经理经理工资_${timestamp}.xlsx` 948 const fileName = `事业部总经理经理工资_${timestamp}.xlsx`
1066 949
@@ -1081,26 +964,45 @@ export default { @@ -1081,26 +964,45 @@ export default {
1081 964
1082 <style lang="scss" scoped> 965 <style lang="scss" scoped>
1083 .app-container { 966 .app-container {
1084 - padding: 20px;  
1085 - background: #f5f5f5; 967 + padding: 16px;
  968 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  969 + min-height: 100vh;
  970 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1086 } 971 }
1087 972
1088 .page-header { 973 .page-header {
1089 display: flex; 974 display: flex;
1090 justify-content: space-between; 975 justify-content: space-between;
1091 align-items: flex-start; 976 align-items: flex-start;
1092 - margin-bottom: 20px;  
1093 - padding: 20px;  
1094 - background: #fff;  
1095 - border-radius: 8px;  
1096 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 977 + margin-bottom: 16px;
  978 + padding: 18px 24px;
  979 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  980 + border-radius: 12px;
  981 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  982 + border: 1px solid rgba(144, 147, 153, 0.2);
  983 + position: relative;
  984 + overflow: hidden;
  985 +
  986 + &::before {
  987 + content: '';
  988 + position: absolute;
  989 + top: 0;
  990 + left: 0;
  991 + right: 0;
  992 + height: 3px;
  993 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  994 + }
1097 995
1098 .header-left { 996 .header-left {
1099 h2 { 997 h2 {
1100 margin: 0 0 8px 0; 998 margin: 0 0 8px 0;
1101 color: #303133; 999 color: #303133;
1102 - font-size: 20px; 1000 + font-size: 22px;
1103 font-weight: 600; 1001 font-weight: 600;
  1002 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1003 + -webkit-background-clip: text;
  1004 + -webkit-text-fill-color: transparent;
  1005 + background-clip: text;
1104 } 1006 }
1105 1007
1106 .page-desc { 1008 .page-desc {
@@ -1112,40 +1014,168 @@ export default { @@ -1112,40 +1014,168 @@ export default {
1112 1014
1113 .header-right { 1015 .header-right {
1114 display: flex; 1016 display: flex;
1115 - gap: 12px; 1017 + gap: 10px;
  1018 + flex-wrap: wrap;
  1019 +
  1020 + .el-button {
  1021 + border-radius: 8px;
  1022 + padding: 10px 18px;
  1023 + font-weight: 500;
  1024 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1025 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1026 +
  1027 + &:hover {
  1028 + transform: translateY(-2px);
  1029 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1030 + }
  1031 +
  1032 + &.el-button--primary {
  1033 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1034 + border: none;
  1035 +
  1036 + &:hover {
  1037 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1038 + }
  1039 + }
  1040 +
  1041 + &.el-button--success {
  1042 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1043 + border: none;
  1044 +
  1045 + &:hover {
  1046 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1047 + }
  1048 + }
  1049 +
  1050 + &.el-button--warning {
  1051 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1052 + border: none;
  1053 +
  1054 + &:hover {
  1055 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1056 + }
  1057 + }
  1058 +
  1059 + &.el-button--info {
  1060 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1061 + border: none;
  1062 +
  1063 + &:hover {
  1064 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1065 + }
  1066 + }
  1067 + }
1116 } 1068 }
1117 } 1069 }
1118 1070
1119 .search-container { 1071 .search-container {
1120 - margin-bottom: 20px;  
1121 - padding: 20px;  
1122 - background: #fff;  
1123 - border-radius: 8px;  
1124 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1072 + margin-bottom: 16px;
  1073 + padding: 18px 24px;
  1074 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1075 + border-radius: 12px;
  1076 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1077 + border: 1px solid rgba(144, 147, 153, 0.2);
  1078 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1079 +
  1080 + &:hover {
  1081 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1082 + }
  1083 +
  1084 + &::v-deep .el-form {
  1085 + .el-form-item {
  1086 + margin-bottom: 16px;
  1087 + }
  1088 +
  1089 + .el-button {
  1090 + border-radius: 8px;
  1091 + padding: 10px 20px;
  1092 + font-weight: 500;
  1093 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1094 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1095 +
  1096 + &:hover {
  1097 + transform: translateY(-2px);
  1098 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1099 + }
  1100 +
  1101 + &.el-button--primary {
  1102 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1103 + border: none;
  1104 +
  1105 + &:hover {
  1106 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1107 + }
  1108 + }
  1109 + }
  1110 +
  1111 + .el-input__inner,
  1112 + .el-select .el-input__inner {
  1113 + border-radius: 8px;
  1114 + border: 1px solid rgba(144, 147, 153, 0.3);
  1115 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1116 +
  1117 + &:focus {
  1118 + border-color: #909399;
  1119 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1120 + }
  1121 + }
  1122 + }
1125 } 1123 }
1126 1124
1127 .batch-action-container { 1125 .batch-action-container {
1128 - margin-top: 15px;  
1129 - padding: 12px;  
1130 - background: #f0f9ff;  
1131 - border-radius: 4px; 1126 + margin-top: 16px;
  1127 + padding: 14px 18px;
  1128 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1129 + border-radius: 10px;
  1130 + border: 1px solid rgba(144, 147, 153, 0.3);
1132 display: flex; 1131 display: flex;
1133 align-items: center; 1132 align-items: center;
1134 gap: 12px; 1133 gap: 12px;
  1134 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1135 1135
1136 .selected-count { 1136 .selected-count {
1137 - color: #409EFF;  
1138 - font-weight: 500; 1137 + color: #606266;
  1138 + font-weight: 600;
1139 margin-right: 8px; 1139 margin-right: 8px;
  1140 + font-size: 14px;
  1141 + }
  1142 +
  1143 + .el-button {
  1144 + border-radius: 8px;
  1145 + font-weight: 500;
  1146 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1147 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1148 +
  1149 + &:hover {
  1150 + transform: translateY(-2px);
  1151 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1152 + }
1140 } 1153 }
1141 } 1154 }
1142 1155
1143 .table-container { 1156 .table-container {
1144 margin-bottom: 20px; 1157 margin-bottom: 20px;
1145 - padding: 20px;  
1146 - background: #fff;  
1147 - border-radius: 8px;  
1148 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1158 + padding: 18px 24px;
  1159 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1160 + border-radius: 12px;
  1161 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1162 + border: 1px solid rgba(144, 147, 153, 0.2);
  1163 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1164 + position: relative;
  1165 + overflow: hidden;
  1166 + z-index: 1;
  1167 +
  1168 + &:hover {
  1169 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1170 + }
  1171 +
  1172 + &::v-deep .el-table {
  1173 + background-color: #ffffff;
  1174 +
  1175 + .el-table__body-wrapper {
  1176 + background-color: #ffffff;
  1177 + }
  1178 + }
1149 } 1179 }
1150 1180
1151 .employee-name { 1181 .employee-name {
@@ -1154,28 +1184,275 @@ export default { @@ -1154,28 +1184,275 @@ export default {
1154 gap: 6px; 1184 gap: 6px;
1155 1185
1156 .employee-icon { 1186 .employee-icon {
1157 - color: #409EFF; 1187 + color: #606266;
1158 font-size: 16px; 1188 font-size: 16px;
  1189 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1190 + }
  1191 +
  1192 + &:hover .employee-icon {
  1193 + transform: scale(1.1) rotate(5deg);
1159 } 1194 }
1160 } 1195 }
1161 1196
1162 // 表格样式优化 1197 // 表格样式优化
1163 ::v-deep .el-table { 1198 ::v-deep .el-table {
  1199 + border-radius: 8px;
  1200 + overflow: hidden;
  1201 + border: 1px solid rgba(144, 147, 153, 0.2);
  1202 +
  1203 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1204 + .el-table__column--selection {
  1205 + z-index: 1000 !important;
  1206 + pointer-events: auto !important;
  1207 + position: relative;
  1208 + }
  1209 +
  1210 + .el-checkbox {
  1211 + z-index: 1001 !important;
  1212 + pointer-events: auto !important;
  1213 + position: relative;
  1214 + cursor: pointer;
  1215 + }
  1216 +
  1217 + .el-checkbox__input {
  1218 + z-index: 1001 !important;
  1219 + pointer-events: auto !important;
  1220 + cursor: pointer;
  1221 + }
  1222 +
  1223 + .el-checkbox__inner {
  1224 + z-index: 1001 !important;
  1225 + pointer-events: auto !important;
  1226 + cursor: pointer;
  1227 + }
  1228 +
  1229 + td.el-table__cell--selection,
  1230 + th.el-table__cell--selection {
  1231 + z-index: 1000 !important;
  1232 + pointer-events: auto !important;
  1233 + position: relative;
  1234 + background-color: #ffffff !important;
  1235 + cursor: pointer;
  1236 +
  1237 + .cell {
  1238 + pointer-events: auto !important;
  1239 + z-index: 1001 !important;
  1240 + position: relative;
  1241 + }
  1242 + }
  1243 +
1164 .el-table__header-wrapper { 1244 .el-table__header-wrapper {
1165 th { 1245 th {
1166 - background-color: #f5f7fa;  
1167 - color: #606266; 1246 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1247 + color: #303133;
1168 font-weight: 600; 1248 font-weight: 600;
  1249 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1250 + padding: 14px 0 !important;
  1251 + height: auto !important;
  1252 + line-height: normal !important;
  1253 + box-sizing: border-box;
1169 } 1254 }
1170 } 1255 }
1171 1256
1172 .el-table__body-wrapper { 1257 .el-table__body-wrapper {
  1258 + background-color: #ffffff;
  1259 + z-index: 1;
  1260 +
1173 .el-table__row { 1261 .el-table__row {
  1262 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1263 + background-color: #ffffff;
  1264 +
1174 &:hover { 1265 &:hover {
1175 - background-color: #f5f7fa; 1266 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1267 + transform: translateX(2px);
  1268 + }
  1269 +
  1270 + td {
  1271 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1272 + background-color: #ffffff !important;
  1273 + padding: 12px 0 !important;
  1274 + height: auto !important;
  1275 + line-height: normal !important;
  1276 + box-sizing: border-box;
  1277 + }
  1278 +
  1279 + &.el-table__row--striped {
  1280 + td {
  1281 + background-color: #fafafa !important;
  1282 + }
  1283 +
  1284 + &:hover td {
  1285 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1286 + }
  1287 + }
  1288 + }
  1289 + }
  1290 +
  1291 + .el-table__header-wrapper {
  1292 + background-color: #ffffff;
  1293 + z-index: 2;
  1294 + }
  1295 +
  1296 + // 固定列样式修复
  1297 + .el-table__fixed,
  1298 + .el-table__fixed-right {
  1299 + z-index: 5 !important;
  1300 + background-color: #ffffff;
  1301 + height: 100% !important;
  1302 +
  1303 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1304 + .el-table__column--selection {
  1305 + z-index: 1000 !important;
  1306 + pointer-events: auto !important;
  1307 + position: relative;
  1308 + }
  1309 +
  1310 + // 确保选择列单元格可以点击
  1311 + td.el-table__cell--selection,
  1312 + th.el-table__cell--selection {
  1313 + z-index: 1000 !important;
  1314 + pointer-events: auto !important;
  1315 + position: relative;
  1316 + background-color: #ffffff !important;
  1317 + cursor: pointer;
  1318 +
  1319 + .cell {
  1320 + pointer-events: auto !important;
  1321 + z-index: 1001 !important;
  1322 + position: relative;
  1323 + }
  1324 + }
  1325 +
  1326 + // 确保多选框本身可以点击
  1327 + .el-checkbox {
  1328 + z-index: 1001 !important;
  1329 + position: relative;
  1330 + pointer-events: auto !important;
  1331 + cursor: pointer;
  1332 + }
  1333 +
  1334 + .el-checkbox__input {
  1335 + z-index: 1001 !important;
  1336 + pointer-events: auto !important;
  1337 + cursor: pointer;
  1338 + }
  1339 +
  1340 + .el-checkbox__inner {
  1341 + z-index: 1001 !important;
  1342 + pointer-events: auto !important;
  1343 + cursor: pointer;
  1344 + }
  1345 +
  1346 + &::before {
  1347 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1348 + z-index: 4 !important;
  1349 + height: 100% !important;
  1350 + pointer-events: none !important;
  1351 + }
  1352 +
  1353 + .el-table__fixed-header-wrapper {
  1354 + height: auto !important;
  1355 + background-color: #ffffff;
  1356 +
  1357 + th {
  1358 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1359 + z-index: 6 !important;
  1360 + padding: 14px 0 !important;
  1361 + height: auto !important;
  1362 + line-height: normal !important;
  1363 +
  1364 + // 选择列header需要最高z-index
  1365 + &.el-table__cell--selection {
  1366 + z-index: 1000 !important;
  1367 + pointer-events: auto !important;
  1368 + }
  1369 + }
  1370 + }
  1371 +
  1372 + .el-table__fixed-body-wrapper {
  1373 + background-color: #ffffff;
  1374 + height: auto !important;
  1375 + max-height: 100% !important;
  1376 + overflow-y: auto !important;
  1377 +
  1378 + td {
  1379 + background-color: #ffffff !important;
  1380 + z-index: 6 !important;
  1381 + padding: 12px 0 !important;
  1382 + height: auto !important;
  1383 + line-height: normal !important;
  1384 +
  1385 + // 选择列cell需要最高z-index
  1386 + &.el-table__cell--selection {
  1387 + z-index: 1000 !important;
  1388 + pointer-events: auto !important;
  1389 + }
  1390 + }
  1391 +
  1392 + .el-table__row {
  1393 + height: auto !important;
  1394 +
  1395 + &.el-table__row--striped {
  1396 + td {
  1397 + background-color: #fafafa !important;
  1398 + }
  1399 + }
  1400 + }
  1401 + }
  1402 +
  1403 + th {
  1404 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1405 + z-index: 6 !important;
  1406 + padding: 14px 0 !important;
  1407 + height: auto !important;
  1408 + line-height: normal !important;
  1409 +
  1410 + // 选择列header需要最高z-index
  1411 + &.el-table__cell--selection {
  1412 + z-index: 1000 !important;
  1413 + pointer-events: auto !important;
  1414 + }
  1415 + }
  1416 +
  1417 + td {
  1418 + background-color: #ffffff !important;
  1419 + z-index: 6 !important;
  1420 + padding: 12px 0 !important;
  1421 + height: auto !important;
  1422 + line-height: normal !important;
  1423 +
  1424 + // 选择列cell需要最高z-index
  1425 + &.el-table__cell--selection {
  1426 + z-index: 1000 !important;
  1427 + pointer-events: auto !important;
1176 } 1428 }
1177 } 1429 }
1178 } 1430 }
  1431 +
  1432 + // 固定列补丁
  1433 + .el-table__fixed-right-patch {
  1434 + background-color: #ffffff;
  1435 + z-index: 4 !important;
  1436 + height: 100% !important;
  1437 + pointer-events: none !important;
  1438 + }
  1439 +
  1440 + // 确保固定列和主表格的header高度一致
  1441 + .el-table__header-wrapper th,
  1442 + .el-table__fixed-header-wrapper th,
  1443 + .el-table__fixed-right-header-wrapper th {
  1444 + padding: 14px 0 !important;
  1445 + height: auto !important;
  1446 + line-height: normal !important;
  1447 + }
  1448 +
  1449 + // 确保固定列和主表格的body行高一致
  1450 + .el-table__body-wrapper td,
  1451 + .el-table__fixed-body-wrapper td,
  1452 + .el-table__fixed-right-body-wrapper td {
  1453 + padding: 12px 0 !important;
  1454 + height: auto !important;
  1455 + line-height: normal !important;
  1456 + }
1179 } 1457 }
1180 </style> 1458 </style>
1181 -  
antis-ncc-admin/src/views/wageManagement/cienceTeacher.vue
@@ -1164,26 +1164,45 @@ export default { @@ -1164,26 +1164,45 @@ export default {
1164 1164
1165 <style lang="scss" scoped> 1165 <style lang="scss" scoped>
1166 .app-container { 1166 .app-container {
1167 - padding: 20px;  
1168 - background: #f5f5f5; 1167 + padding: 16px;
  1168 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  1169 + min-height: 100vh;
  1170 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1169 } 1171 }
1170 1172
1171 .page-header { 1173 .page-header {
1172 display: flex; 1174 display: flex;
1173 justify-content: space-between; 1175 justify-content: space-between;
1174 align-items: flex-start; 1176 align-items: flex-start;
1175 - margin-bottom: 20px;  
1176 - padding: 20px;  
1177 - background: #fff;  
1178 - border-radius: 8px;  
1179 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1177 + margin-bottom: 16px;
  1178 + padding: 18px 24px;
  1179 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1180 + border-radius: 12px;
  1181 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1182 + border: 1px solid rgba(144, 147, 153, 0.2);
  1183 + position: relative;
  1184 + overflow: hidden;
  1185 +
  1186 + &::before {
  1187 + content: '';
  1188 + position: absolute;
  1189 + top: 0;
  1190 + left: 0;
  1191 + right: 0;
  1192 + height: 3px;
  1193 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1194 + }
1180 1195
1181 .header-left { 1196 .header-left {
1182 h2 { 1197 h2 {
1183 margin: 0 0 8px 0; 1198 margin: 0 0 8px 0;
1184 color: #303133; 1199 color: #303133;
1185 - font-size: 20px; 1200 + font-size: 22px;
1186 font-weight: 600; 1201 font-weight: 600;
  1202 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1203 + -webkit-background-clip: text;
  1204 + -webkit-text-fill-color: transparent;
  1205 + background-clip: text;
1187 } 1206 }
1188 1207
1189 .page-desc { 1208 .page-desc {
@@ -1195,40 +1214,168 @@ export default { @@ -1195,40 +1214,168 @@ export default {
1195 1214
1196 .header-right { 1215 .header-right {
1197 display: flex; 1216 display: flex;
1198 - gap: 12px; 1217 + gap: 10px;
  1218 + flex-wrap: wrap;
  1219 +
  1220 + .el-button {
  1221 + border-radius: 8px;
  1222 + padding: 10px 18px;
  1223 + font-weight: 500;
  1224 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1225 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1226 +
  1227 + &:hover {
  1228 + transform: translateY(-2px);
  1229 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1230 + }
  1231 +
  1232 + &.el-button--primary {
  1233 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1234 + border: none;
  1235 +
  1236 + &:hover {
  1237 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1238 + }
  1239 + }
  1240 +
  1241 + &.el-button--success {
  1242 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1243 + border: none;
  1244 +
  1245 + &:hover {
  1246 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1247 + }
  1248 + }
  1249 +
  1250 + &.el-button--warning {
  1251 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1252 + border: none;
  1253 +
  1254 + &:hover {
  1255 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1256 + }
  1257 + }
  1258 +
  1259 + &.el-button--info {
  1260 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1261 + border: none;
  1262 +
  1263 + &:hover {
  1264 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1265 + }
  1266 + }
  1267 + }
1199 } 1268 }
1200 } 1269 }
1201 1270
1202 .search-container { 1271 .search-container {
1203 - margin-bottom: 20px;  
1204 - padding: 20px;  
1205 - background: #fff;  
1206 - border-radius: 8px;  
1207 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1272 + margin-bottom: 16px;
  1273 + padding: 18px 24px;
  1274 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1275 + border-radius: 12px;
  1276 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1277 + border: 1px solid rgba(144, 147, 153, 0.2);
  1278 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1279 +
  1280 + &:hover {
  1281 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1282 + }
  1283 +
  1284 + &::v-deep .el-form {
  1285 + .el-form-item {
  1286 + margin-bottom: 16px;
  1287 + }
  1288 +
  1289 + .el-button {
  1290 + border-radius: 8px;
  1291 + padding: 10px 20px;
  1292 + font-weight: 500;
  1293 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1294 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1295 +
  1296 + &:hover {
  1297 + transform: translateY(-2px);
  1298 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1299 + }
  1300 +
  1301 + &.el-button--primary {
  1302 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1303 + border: none;
  1304 +
  1305 + &:hover {
  1306 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1307 + }
  1308 + }
  1309 + }
  1310 +
  1311 + .el-input__inner,
  1312 + .el-select .el-input__inner {
  1313 + border-radius: 8px;
  1314 + border: 1px solid rgba(144, 147, 153, 0.3);
  1315 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1316 +
  1317 + &:focus {
  1318 + border-color: #909399;
  1319 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1320 + }
  1321 + }
  1322 + }
1208 } 1323 }
1209 1324
1210 .batch-action-container { 1325 .batch-action-container {
1211 - margin-top: 15px;  
1212 - padding: 12px;  
1213 - background: #f0f9ff;  
1214 - border-radius: 4px; 1326 + margin-top: 16px;
  1327 + padding: 14px 18px;
  1328 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1329 + border-radius: 10px;
  1330 + border: 1px solid rgba(144, 147, 153, 0.3);
1215 display: flex; 1331 display: flex;
1216 align-items: center; 1332 align-items: center;
1217 gap: 12px; 1333 gap: 12px;
  1334 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1218 1335
1219 .selected-count { 1336 .selected-count {
1220 - color: #409EFF;  
1221 - font-weight: 500; 1337 + color: #606266;
  1338 + font-weight: 600;
1222 margin-right: 8px; 1339 margin-right: 8px;
  1340 + font-size: 14px;
  1341 + }
  1342 +
  1343 + .el-button {
  1344 + border-radius: 8px;
  1345 + font-weight: 500;
  1346 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1347 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1348 +
  1349 + &:hover {
  1350 + transform: translateY(-2px);
  1351 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1352 + }
1223 } 1353 }
1224 } 1354 }
1225 1355
1226 .table-container { 1356 .table-container {
1227 margin-bottom: 20px; 1357 margin-bottom: 20px;
1228 - padding: 20px;  
1229 - background: #fff;  
1230 - border-radius: 8px;  
1231 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1358 + padding: 18px 24px;
  1359 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1360 + border-radius: 12px;
  1361 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1362 + border: 1px solid rgba(144, 147, 153, 0.2);
  1363 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1364 + position: relative;
  1365 + overflow: hidden;
  1366 + z-index: 1;
  1367 +
  1368 + &:hover {
  1369 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1370 + }
  1371 +
  1372 + &::v-deep .el-table {
  1373 + background-color: #ffffff;
  1374 +
  1375 + .el-table__body-wrapper {
  1376 + background-color: #ffffff;
  1377 + }
  1378 + }
1232 } 1379 }
1233 1380
1234 .store-name, 1381 .store-name,
@@ -1239,27 +1386,276 @@ export default { @@ -1239,27 +1386,276 @@ export default {
1239 1386
1240 .store-icon, 1387 .store-icon,
1241 .employee-icon { 1388 .employee-icon {
1242 - color: #409EFF; 1389 + color: #606266;
1243 font-size: 16px; 1390 font-size: 16px;
  1391 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1392 + }
  1393 +
  1394 + &:hover .store-icon,
  1395 + &:hover .employee-icon {
  1396 + transform: scale(1.1) rotate(5deg);
1244 } 1397 }
1245 } 1398 }
1246 1399
1247 // 表格样式优化 1400 // 表格样式优化
1248 ::v-deep .el-table { 1401 ::v-deep .el-table {
  1402 + border-radius: 8px;
  1403 + overflow: hidden;
  1404 + border: 1px solid rgba(144, 147, 153, 0.2);
  1405 +
  1406 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1407 + .el-table__column--selection {
  1408 + z-index: 1000 !important;
  1409 + pointer-events: auto !important;
  1410 + position: relative;
  1411 + }
  1412 +
  1413 + .el-checkbox {
  1414 + z-index: 1001 !important;
  1415 + pointer-events: auto !important;
  1416 + position: relative;
  1417 + cursor: pointer;
  1418 + }
  1419 +
  1420 + .el-checkbox__input {
  1421 + z-index: 1001 !important;
  1422 + pointer-events: auto !important;
  1423 + cursor: pointer;
  1424 + }
  1425 +
  1426 + .el-checkbox__inner {
  1427 + z-index: 1001 !important;
  1428 + pointer-events: auto !important;
  1429 + cursor: pointer;
  1430 + }
  1431 +
  1432 + td.el-table__cell--selection,
  1433 + th.el-table__cell--selection {
  1434 + z-index: 1000 !important;
  1435 + pointer-events: auto !important;
  1436 + position: relative;
  1437 + background-color: #ffffff !important;
  1438 + cursor: pointer;
  1439 +
  1440 + .cell {
  1441 + pointer-events: auto !important;
  1442 + z-index: 1001 !important;
  1443 + position: relative;
  1444 + }
  1445 + }
  1446 +
1249 .el-table__header-wrapper { 1447 .el-table__header-wrapper {
1250 th { 1448 th {
1251 - background-color: #f5f7fa;  
1252 - color: #606266; 1449 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1450 + color: #303133;
1253 font-weight: 600; 1451 font-weight: 600;
  1452 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1453 + padding: 14px 0 !important;
  1454 + height: auto !important;
  1455 + line-height: normal !important;
  1456 + box-sizing: border-box;
1254 } 1457 }
1255 } 1458 }
1256 1459
1257 .el-table__body-wrapper { 1460 .el-table__body-wrapper {
  1461 + background-color: #ffffff;
  1462 + z-index: 1;
  1463 +
1258 .el-table__row { 1464 .el-table__row {
  1465 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1466 + background-color: #ffffff;
  1467 +
1259 &:hover { 1468 &:hover {
1260 - background-color: #f5f7fa; 1469 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1470 + transform: translateX(2px);
  1471 + }
  1472 +
  1473 + td {
  1474 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1475 + background-color: #ffffff !important;
  1476 + padding: 12px 0 !important;
  1477 + height: auto !important;
  1478 + line-height: normal !important;
  1479 + box-sizing: border-box;
1261 } 1480 }
  1481 +
  1482 + &.el-table__row--striped {
  1483 + td {
  1484 + background-color: #fafafa !important;
  1485 + }
  1486 +
  1487 + &:hover td {
  1488 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1489 + }
  1490 + }
  1491 + }
  1492 + }
  1493 +
  1494 + .el-table__header-wrapper {
  1495 + background-color: #ffffff;
  1496 + z-index: 2;
  1497 + }
  1498 +
  1499 + // 固定列样式修复
  1500 + .el-table__fixed,
  1501 + .el-table__fixed-right {
  1502 + z-index: 5 !important;
  1503 + background-color: #ffffff;
  1504 + height: 100% !important;
  1505 +
  1506 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1507 + .el-table__column--selection {
  1508 + z-index: 1000 !important;
  1509 + pointer-events: auto !important;
  1510 + position: relative;
  1511 + }
  1512 +
  1513 + // 确保选择列单元格可以点击
  1514 + td.el-table__cell--selection,
  1515 + th.el-table__cell--selection {
  1516 + z-index: 1000 !important;
  1517 + pointer-events: auto !important;
  1518 + position: relative;
  1519 + background-color: #ffffff !important;
  1520 + cursor: pointer;
  1521 +
  1522 + .cell {
  1523 + pointer-events: auto !important;
  1524 + z-index: 1001 !important;
  1525 + position: relative;
  1526 + }
  1527 + }
  1528 +
  1529 + // 确保多选框本身可以点击
  1530 + .el-checkbox {
  1531 + z-index: 1001 !important;
  1532 + position: relative;
  1533 + pointer-events: auto !important;
  1534 + cursor: pointer;
  1535 + }
  1536 +
  1537 + .el-checkbox__input {
  1538 + z-index: 1001 !important;
  1539 + pointer-events: auto !important;
  1540 + cursor: pointer;
1262 } 1541 }
  1542 +
  1543 + .el-checkbox__inner {
  1544 + z-index: 1001 !important;
  1545 + pointer-events: auto !important;
  1546 + cursor: pointer;
  1547 + }
  1548 +
  1549 + &::before {
  1550 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1551 + z-index: 4 !important;
  1552 + height: 100% !important;
  1553 + pointer-events: none !important;
  1554 + }
  1555 +
  1556 + .el-table__fixed-header-wrapper {
  1557 + height: auto !important;
  1558 + background-color: #ffffff;
  1559 +
  1560 + th {
  1561 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1562 + z-index: 6 !important;
  1563 + padding: 14px 0 !important;
  1564 + height: auto !important;
  1565 + line-height: normal !important;
  1566 +
  1567 + // 选择列header需要最高z-index
  1568 + &.el-table__cell--selection {
  1569 + z-index: 1000 !important;
  1570 + pointer-events: auto !important;
  1571 + }
  1572 + }
  1573 + }
  1574 +
  1575 + .el-table__fixed-body-wrapper {
  1576 + background-color: #ffffff;
  1577 + height: auto !important;
  1578 + max-height: 100% !important;
  1579 + overflow-y: auto !important;
  1580 +
  1581 + td {
  1582 + background-color: #ffffff !important;
  1583 + z-index: 6 !important;
  1584 + padding: 12px 0 !important;
  1585 + height: auto !important;
  1586 + line-height: normal !important;
  1587 +
  1588 + // 选择列cell需要最高z-index
  1589 + &.el-table__cell--selection {
  1590 + z-index: 1000 !important;
  1591 + pointer-events: auto !important;
  1592 + }
  1593 + }
  1594 +
  1595 + .el-table__row {
  1596 + height: auto !important;
  1597 +
  1598 + &.el-table__row--striped {
  1599 + td {
  1600 + background-color: #fafafa !important;
  1601 + }
  1602 + }
  1603 + }
  1604 + }
  1605 +
  1606 + th {
  1607 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1608 + z-index: 6 !important;
  1609 + padding: 14px 0 !important;
  1610 + height: auto !important;
  1611 + line-height: normal !important;
  1612 +
  1613 + // 选择列header需要最高z-index
  1614 + &.el-table__cell--selection {
  1615 + z-index: 1000 !important;
  1616 + pointer-events: auto !important;
  1617 + }
  1618 + }
  1619 +
  1620 + td {
  1621 + background-color: #ffffff !important;
  1622 + z-index: 6 !important;
  1623 + padding: 12px 0 !important;
  1624 + height: auto !important;
  1625 + line-height: normal !important;
  1626 +
  1627 + // 选择列cell需要最高z-index
  1628 + &.el-table__cell--selection {
  1629 + z-index: 1000 !important;
  1630 + pointer-events: auto !important;
  1631 + }
  1632 + }
  1633 + }
  1634 +
  1635 + // 固定列补丁
  1636 + .el-table__fixed-right-patch {
  1637 + background-color: #ffffff;
  1638 + z-index: 4 !important;
  1639 + height: 100% !important;
  1640 + pointer-events: none !important;
  1641 + }
  1642 +
  1643 + // 确保固定列和主表格的header高度一致
  1644 + .el-table__header-wrapper th,
  1645 + .el-table__fixed-header-wrapper th,
  1646 + .el-table__fixed-right-header-wrapper th {
  1647 + padding: 14px 0 !important;
  1648 + height: auto !important;
  1649 + line-height: normal !important;
  1650 + }
  1651 +
  1652 + // 确保固定列和主表格的body行高一致
  1653 + .el-table__body-wrapper td,
  1654 + .el-table__fixed-body-wrapper td,
  1655 + .el-table__fixed-right-body-wrapper td {
  1656 + padding: 12px 0 !important;
  1657 + height: auto !important;
  1658 + line-height: normal !important;
1263 } 1659 }
1264 } 1660 }
1265 </style> 1661 </style>
antis-ncc-admin/src/views/wageManagement/director.vue
@@ -1010,26 +1010,45 @@ export default { @@ -1010,26 +1010,45 @@ export default {
1010 1010
1011 <style lang="scss" scoped> 1011 <style lang="scss" scoped>
1012 .app-container { 1012 .app-container {
1013 - padding: 20px;  
1014 - background: #f5f5f5; 1013 + padding: 16px;
  1014 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  1015 + min-height: 100vh;
  1016 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1015 } 1017 }
1016 1018
1017 .page-header { 1019 .page-header {
1018 display: flex; 1020 display: flex;
1019 justify-content: space-between; 1021 justify-content: space-between;
1020 align-items: flex-start; 1022 align-items: flex-start;
1021 - margin-bottom: 20px;  
1022 - padding: 20px;  
1023 - background: #fff;  
1024 - border-radius: 8px;  
1025 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1023 + margin-bottom: 16px;
  1024 + padding: 18px 24px;
  1025 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1026 + border-radius: 12px;
  1027 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1028 + border: 1px solid rgba(144, 147, 153, 0.2);
  1029 + position: relative;
  1030 + overflow: hidden;
  1031 +
  1032 + &::before {
  1033 + content: '';
  1034 + position: absolute;
  1035 + top: 0;
  1036 + left: 0;
  1037 + right: 0;
  1038 + height: 3px;
  1039 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1040 + }
1026 1041
1027 .header-left { 1042 .header-left {
1028 h2 { 1043 h2 {
1029 margin: 0 0 8px 0; 1044 margin: 0 0 8px 0;
1030 color: #303133; 1045 color: #303133;
1031 - font-size: 20px; 1046 + font-size: 22px;
1032 font-weight: 600; 1047 font-weight: 600;
  1048 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1049 + -webkit-background-clip: text;
  1050 + -webkit-text-fill-color: transparent;
  1051 + background-clip: text;
1033 } 1052 }
1034 1053
1035 .page-desc { 1054 .page-desc {
@@ -1041,40 +1060,168 @@ export default { @@ -1041,40 +1060,168 @@ export default {
1041 1060
1042 .header-right { 1061 .header-right {
1043 display: flex; 1062 display: flex;
1044 - gap: 12px; 1063 + gap: 10px;
  1064 + flex-wrap: wrap;
  1065 +
  1066 + .el-button {
  1067 + border-radius: 8px;
  1068 + padding: 10px 18px;
  1069 + font-weight: 500;
  1070 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1071 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1072 +
  1073 + &:hover {
  1074 + transform: translateY(-2px);
  1075 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1076 + }
  1077 +
  1078 + &.el-button--primary {
  1079 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1080 + border: none;
  1081 +
  1082 + &:hover {
  1083 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1084 + }
  1085 + }
  1086 +
  1087 + &.el-button--success {
  1088 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1089 + border: none;
  1090 +
  1091 + &:hover {
  1092 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1093 + }
  1094 + }
  1095 +
  1096 + &.el-button--warning {
  1097 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1098 + border: none;
  1099 +
  1100 + &:hover {
  1101 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1102 + }
  1103 + }
  1104 +
  1105 + &.el-button--info {
  1106 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1107 + border: none;
  1108 +
  1109 + &:hover {
  1110 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1111 + }
  1112 + }
  1113 + }
1045 } 1114 }
1046 } 1115 }
1047 1116
1048 .search-container { 1117 .search-container {
1049 - margin-bottom: 20px;  
1050 - padding: 20px;  
1051 - background: #fff;  
1052 - border-radius: 8px;  
1053 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1118 + margin-bottom: 16px;
  1119 + padding: 18px 24px;
  1120 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1121 + border-radius: 12px;
  1122 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1123 + border: 1px solid rgba(144, 147, 153, 0.2);
  1124 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1125 +
  1126 + &:hover {
  1127 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1128 + }
  1129 +
  1130 + &::v-deep .el-form {
  1131 + .el-form-item {
  1132 + margin-bottom: 16px;
  1133 + }
  1134 +
  1135 + .el-button {
  1136 + border-radius: 8px;
  1137 + padding: 10px 20px;
  1138 + font-weight: 500;
  1139 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1140 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1141 +
  1142 + &:hover {
  1143 + transform: translateY(-2px);
  1144 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1145 + }
  1146 +
  1147 + &.el-button--primary {
  1148 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1149 + border: none;
  1150 +
  1151 + &:hover {
  1152 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1153 + }
  1154 + }
  1155 + }
  1156 +
  1157 + .el-input__inner,
  1158 + .el-select .el-input__inner {
  1159 + border-radius: 8px;
  1160 + border: 1px solid rgba(144, 147, 153, 0.3);
  1161 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1162 +
  1163 + &:focus {
  1164 + border-color: #909399;
  1165 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1166 + }
  1167 + }
  1168 + }
1054 } 1169 }
1055 1170
1056 .batch-action-container { 1171 .batch-action-container {
1057 - margin-top: 15px;  
1058 - padding: 12px;  
1059 - background: #f0f9ff;  
1060 - border-radius: 4px; 1172 + margin-top: 16px;
  1173 + padding: 14px 18px;
  1174 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1175 + border-radius: 10px;
  1176 + border: 1px solid rgba(144, 147, 153, 0.3);
1061 display: flex; 1177 display: flex;
1062 align-items: center; 1178 align-items: center;
1063 gap: 12px; 1179 gap: 12px;
  1180 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1064 1181
1065 .selected-count { 1182 .selected-count {
1066 - color: #409EFF;  
1067 - font-weight: 500; 1183 + color: #606266;
  1184 + font-weight: 600;
1068 margin-right: 8px; 1185 margin-right: 8px;
  1186 + font-size: 14px;
  1187 + }
  1188 +
  1189 + .el-button {
  1190 + border-radius: 8px;
  1191 + font-weight: 500;
  1192 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1193 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1194 +
  1195 + &:hover {
  1196 + transform: translateY(-2px);
  1197 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1198 + }
1069 } 1199 }
1070 } 1200 }
1071 1201
1072 .table-container { 1202 .table-container {
1073 margin-bottom: 20px; 1203 margin-bottom: 20px;
1074 - padding: 20px;  
1075 - background: #fff;  
1076 - border-radius: 8px;  
1077 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1204 + padding: 18px 24px;
  1205 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1206 + border-radius: 12px;
  1207 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1208 + border: 1px solid rgba(144, 147, 153, 0.2);
  1209 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1210 + position: relative;
  1211 + overflow: hidden;
  1212 + z-index: 1;
  1213 +
  1214 + &:hover {
  1215 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1216 + }
  1217 +
  1218 + &::v-deep .el-table {
  1219 + background-color: #ffffff;
  1220 +
  1221 + .el-table__body-wrapper {
  1222 + background-color: #ffffff;
  1223 + }
  1224 + }
1078 } 1225 }
1079 1226
1080 .store-name, 1227 .store-name,
@@ -1085,27 +1232,276 @@ export default { @@ -1085,27 +1232,276 @@ export default {
1085 1232
1086 .store-icon, 1233 .store-icon,
1087 .employee-icon { 1234 .employee-icon {
1088 - color: #409EFF; 1235 + color: #606266;
1089 font-size: 16px; 1236 font-size: 16px;
  1237 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1238 + }
  1239 +
  1240 + &:hover .store-icon,
  1241 + &:hover .employee-icon {
  1242 + transform: scale(1.1) rotate(5deg);
1090 } 1243 }
1091 } 1244 }
1092 1245
1093 // 表格样式优化 1246 // 表格样式优化
1094 ::v-deep .el-table { 1247 ::v-deep .el-table {
  1248 + border-radius: 8px;
  1249 + overflow: hidden;
  1250 + border: 1px solid rgba(144, 147, 153, 0.2);
  1251 +
  1252 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1253 + .el-table__column--selection {
  1254 + z-index: 1000 !important;
  1255 + pointer-events: auto !important;
  1256 + position: relative;
  1257 + }
  1258 +
  1259 + .el-checkbox {
  1260 + z-index: 1001 !important;
  1261 + pointer-events: auto !important;
  1262 + position: relative;
  1263 + cursor: pointer;
  1264 + }
  1265 +
  1266 + .el-checkbox__input {
  1267 + z-index: 1001 !important;
  1268 + pointer-events: auto !important;
  1269 + cursor: pointer;
  1270 + }
  1271 +
  1272 + .el-checkbox__inner {
  1273 + z-index: 1001 !important;
  1274 + pointer-events: auto !important;
  1275 + cursor: pointer;
  1276 + }
  1277 +
  1278 + td.el-table__cell--selection,
  1279 + th.el-table__cell--selection {
  1280 + z-index: 1000 !important;
  1281 + pointer-events: auto !important;
  1282 + position: relative;
  1283 + background-color: #ffffff !important;
  1284 + cursor: pointer;
  1285 +
  1286 + .cell {
  1287 + pointer-events: auto !important;
  1288 + z-index: 1001 !important;
  1289 + position: relative;
  1290 + }
  1291 + }
  1292 +
1095 .el-table__header-wrapper { 1293 .el-table__header-wrapper {
1096 th { 1294 th {
1097 - background-color: #f5f7fa;  
1098 - color: #606266; 1295 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1296 + color: #303133;
1099 font-weight: 600; 1297 font-weight: 600;
  1298 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1299 + padding: 14px 0 !important;
  1300 + height: auto !important;
  1301 + line-height: normal !important;
  1302 + box-sizing: border-box;
1100 } 1303 }
1101 } 1304 }
1102 1305
1103 .el-table__body-wrapper { 1306 .el-table__body-wrapper {
  1307 + background-color: #ffffff;
  1308 + z-index: 1;
  1309 +
1104 .el-table__row { 1310 .el-table__row {
  1311 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1312 + background-color: #ffffff;
  1313 +
1105 &:hover { 1314 &:hover {
1106 - background-color: #f5f7fa; 1315 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1316 + transform: translateX(2px);
  1317 + }
  1318 +
  1319 + td {
  1320 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1321 + background-color: #ffffff !important;
  1322 + padding: 12px 0 !important;
  1323 + height: auto !important;
  1324 + line-height: normal !important;
  1325 + box-sizing: border-box;
1107 } 1326 }
  1327 +
  1328 + &.el-table__row--striped {
  1329 + td {
  1330 + background-color: #fafafa !important;
  1331 + }
  1332 +
  1333 + &:hover td {
  1334 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1335 + }
  1336 + }
  1337 + }
  1338 + }
  1339 +
  1340 + .el-table__header-wrapper {
  1341 + background-color: #ffffff;
  1342 + z-index: 2;
  1343 + }
  1344 +
  1345 + // 固定列样式修复
  1346 + .el-table__fixed,
  1347 + .el-table__fixed-right {
  1348 + z-index: 5 !important;
  1349 + background-color: #ffffff;
  1350 + height: 100% !important;
  1351 +
  1352 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1353 + .el-table__column--selection {
  1354 + z-index: 1000 !important;
  1355 + pointer-events: auto !important;
  1356 + position: relative;
  1357 + }
  1358 +
  1359 + // 确保选择列单元格可以点击
  1360 + td.el-table__cell--selection,
  1361 + th.el-table__cell--selection {
  1362 + z-index: 1000 !important;
  1363 + pointer-events: auto !important;
  1364 + position: relative;
  1365 + background-color: #ffffff !important;
  1366 + cursor: pointer;
  1367 +
  1368 + .cell {
  1369 + pointer-events: auto !important;
  1370 + z-index: 1001 !important;
  1371 + position: relative;
  1372 + }
  1373 + }
  1374 +
  1375 + // 确保多选框本身可以点击
  1376 + .el-checkbox {
  1377 + z-index: 1001 !important;
  1378 + position: relative;
  1379 + pointer-events: auto !important;
  1380 + cursor: pointer;
  1381 + }
  1382 +
  1383 + .el-checkbox__input {
  1384 + z-index: 1001 !important;
  1385 + pointer-events: auto !important;
  1386 + cursor: pointer;
1108 } 1387 }
  1388 +
  1389 + .el-checkbox__inner {
  1390 + z-index: 1001 !important;
  1391 + pointer-events: auto !important;
  1392 + cursor: pointer;
  1393 + }
  1394 +
  1395 + &::before {
  1396 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1397 + z-index: 4 !important;
  1398 + height: 100% !important;
  1399 + pointer-events: none !important;
  1400 + }
  1401 +
  1402 + .el-table__fixed-header-wrapper {
  1403 + height: auto !important;
  1404 + background-color: #ffffff;
  1405 +
  1406 + th {
  1407 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1408 + z-index: 6 !important;
  1409 + padding: 14px 0 !important;
  1410 + height: auto !important;
  1411 + line-height: normal !important;
  1412 +
  1413 + // 选择列header需要最高z-index
  1414 + &.el-table__cell--selection {
  1415 + z-index: 1000 !important;
  1416 + pointer-events: auto !important;
  1417 + }
  1418 + }
  1419 + }
  1420 +
  1421 + .el-table__fixed-body-wrapper {
  1422 + background-color: #ffffff;
  1423 + height: auto !important;
  1424 + max-height: 100% !important;
  1425 + overflow-y: auto !important;
  1426 +
  1427 + td {
  1428 + background-color: #ffffff !important;
  1429 + z-index: 6 !important;
  1430 + padding: 12px 0 !important;
  1431 + height: auto !important;
  1432 + line-height: normal !important;
  1433 +
  1434 + // 选择列cell需要最高z-index
  1435 + &.el-table__cell--selection {
  1436 + z-index: 1000 !important;
  1437 + pointer-events: auto !important;
  1438 + }
  1439 + }
  1440 +
  1441 + .el-table__row {
  1442 + height: auto !important;
  1443 +
  1444 + &.el-table__row--striped {
  1445 + td {
  1446 + background-color: #fafafa !important;
  1447 + }
  1448 + }
  1449 + }
  1450 + }
  1451 +
  1452 + th {
  1453 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1454 + z-index: 6 !important;
  1455 + padding: 14px 0 !important;
  1456 + height: auto !important;
  1457 + line-height: normal !important;
  1458 +
  1459 + // 选择列header需要最高z-index
  1460 + &.el-table__cell--selection {
  1461 + z-index: 1000 !important;
  1462 + pointer-events: auto !important;
  1463 + }
  1464 + }
  1465 +
  1466 + td {
  1467 + background-color: #ffffff !important;
  1468 + z-index: 6 !important;
  1469 + padding: 12px 0 !important;
  1470 + height: auto !important;
  1471 + line-height: normal !important;
  1472 +
  1473 + // 选择列cell需要最高z-index
  1474 + &.el-table__cell--selection {
  1475 + z-index: 1000 !important;
  1476 + pointer-events: auto !important;
  1477 + }
  1478 + }
  1479 + }
  1480 +
  1481 + // 固定列补丁
  1482 + .el-table__fixed-right-patch {
  1483 + background-color: #ffffff;
  1484 + z-index: 4 !important;
  1485 + height: 100% !important;
  1486 + pointer-events: none !important;
  1487 + }
  1488 +
  1489 + // 确保固定列和主表格的header高度一致
  1490 + .el-table__header-wrapper th,
  1491 + .el-table__fixed-header-wrapper th,
  1492 + .el-table__fixed-right-header-wrapper th {
  1493 + padding: 14px 0 !important;
  1494 + height: auto !important;
  1495 + line-height: normal !important;
  1496 + }
  1497 +
  1498 + // 确保固定列和主表格的body行高一致
  1499 + .el-table__body-wrapper td,
  1500 + .el-table__fixed-body-wrapper td,
  1501 + .el-table__fixed-right-body-wrapper td {
  1502 + padding: 12px 0 !important;
  1503 + height: auto !important;
  1504 + line-height: normal !important;
1109 } 1505 }
1110 } 1506 }
1111 </style> 1507 </style>
antis-ncc-admin/src/views/wageManagement/headquarters-stock.vue
@@ -416,26 +416,45 @@ export default { @@ -416,26 +416,45 @@ export default {
416 416
417 <style lang="scss" scoped> 417 <style lang="scss" scoped>
418 .app-container { 418 .app-container {
419 - padding: 20px;  
420 - background: #f5f5f5; 419 + padding: 16px;
  420 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  421 + min-height: 100vh;
  422 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
421 } 423 }
422 424
423 .page-header { 425 .page-header {
424 display: flex; 426 display: flex;
425 justify-content: space-between; 427 justify-content: space-between;
426 align-items: flex-start; 428 align-items: flex-start;
427 - margin-bottom: 20px;  
428 - padding: 20px;  
429 - background: #fff;  
430 - border-radius: 8px;  
431 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 429 + margin-bottom: 16px;
  430 + padding: 18px 24px;
  431 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  432 + border-radius: 12px;
  433 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  434 + border: 1px solid rgba(144, 147, 153, 0.2);
  435 + position: relative;
  436 + overflow: hidden;
  437 +
  438 + &::before {
  439 + content: '';
  440 + position: absolute;
  441 + top: 0;
  442 + left: 0;
  443 + right: 0;
  444 + height: 3px;
  445 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  446 + }
432 447
433 .header-left { 448 .header-left {
434 h2 { 449 h2 {
435 margin: 0 0 8px 0; 450 margin: 0 0 8px 0;
436 color: #303133; 451 color: #303133;
437 - font-size: 20px; 452 + font-size: 22px;
438 font-weight: 600; 453 font-weight: 600;
  454 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  455 + -webkit-background-clip: text;
  456 + -webkit-text-fill-color: transparent;
  457 + background-clip: text;
439 } 458 }
440 459
441 .page-desc { 460 .page-desc {
@@ -447,24 +466,137 @@ export default { @@ -447,24 +466,137 @@ export default {
447 466
448 .header-right { 467 .header-right {
449 display: flex; 468 display: flex;
450 - gap: 12px; 469 + gap: 10px;
  470 + flex-wrap: wrap;
  471 +
  472 + .el-button {
  473 + border-radius: 8px;
  474 + padding: 10px 18px;
  475 + font-weight: 500;
  476 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  477 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  478 +
  479 + &:hover {
  480 + transform: translateY(-2px);
  481 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  482 + }
  483 +
  484 + &.el-button--primary {
  485 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  486 + border: none;
  487 +
  488 + &:hover {
  489 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  490 + }
  491 + }
  492 +
  493 + &.el-button--success {
  494 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  495 + border: none;
  496 +
  497 + &:hover {
  498 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  499 + }
  500 + }
  501 +
  502 + &.el-button--warning {
  503 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  504 + border: none;
  505 +
  506 + &:hover {
  507 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  508 + }
  509 + }
  510 +
  511 + &.el-button--info {
  512 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  513 + border: none;
  514 +
  515 + &:hover {
  516 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  517 + }
  518 + }
  519 + }
451 } 520 }
452 } 521 }
453 522
454 .search-container { 523 .search-container {
455 - margin-bottom: 20px;  
456 - padding: 20px;  
457 - background: #fff;  
458 - border-radius: 8px;  
459 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 524 + margin-bottom: 16px;
  525 + padding: 18px 24px;
  526 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  527 + border-radius: 12px;
  528 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  529 + border: 1px solid rgba(144, 147, 153, 0.2);
  530 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  531 +
  532 + &:hover {
  533 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  534 + }
  535 +
  536 + &::v-deep .el-form {
  537 + .el-form-item {
  538 + margin-bottom: 16px;
  539 + }
  540 +
  541 + .el-button {
  542 + border-radius: 8px;
  543 + padding: 10px 20px;
  544 + font-weight: 500;
  545 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  546 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  547 +
  548 + &:hover {
  549 + transform: translateY(-2px);
  550 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  551 + }
  552 +
  553 + &.el-button--primary {
  554 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  555 + border: none;
  556 +
  557 + &:hover {
  558 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  559 + }
  560 + }
  561 + }
  562 +
  563 + .el-input__inner,
  564 + .el-select .el-input__inner {
  565 + border-radius: 8px;
  566 + border: 1px solid rgba(144, 147, 153, 0.3);
  567 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  568 +
  569 + &:focus {
  570 + border-color: #909399;
  571 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  572 + }
  573 + }
  574 + }
460 } 575 }
461 576
462 .table-container { 577 .table-container {
463 margin-bottom: 20px; 578 margin-bottom: 20px;
464 - padding: 20px;  
465 - background: #fff;  
466 - border-radius: 8px;  
467 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 579 + padding: 18px 24px;
  580 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  581 + border-radius: 12px;
  582 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  583 + border: 1px solid rgba(144, 147, 153, 0.2);
  584 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  585 + position: relative;
  586 + overflow: hidden;
  587 + z-index: 1;
  588 +
  589 + &:hover {
  590 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  591 + }
  592 +
  593 + &::v-deep .el-table {
  594 + background-color: #ffffff;
  595 +
  596 + .el-table__body-wrapper {
  597 + background-color: #ffffff;
  598 + }
  599 + }
468 } 600 }
469 601
470 .month-name { 602 .month-name {
@@ -473,13 +605,18 @@ export default { @@ -473,13 +605,18 @@ export default {
473 gap: 6px; 605 gap: 6px;
474 606
475 .month-icon { 607 .month-icon {
476 - color: #409EFF; 608 + color: #606266;
477 font-size: 16px; 609 font-size: 16px;
  610 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  611 + }
  612 +
  613 + &:hover .month-icon {
  614 + transform: scale(1.1) rotate(5deg);
478 } 615 }
479 } 616 }
480 617
481 .highlight { 618 .highlight {
482 - color: #409EFF; 619 + color: #606266;
483 font-weight: 600; 620 font-weight: 600;
484 } 621 }
485 622
@@ -489,20 +626,60 @@ export default { @@ -489,20 +626,60 @@ export default {
489 626
490 // 表格样式优化 627 // 表格样式优化
491 ::v-deep .el-table { 628 ::v-deep .el-table {
  629 + border-radius: 8px;
  630 + overflow: hidden;
  631 + border: 1px solid rgba(144, 147, 153, 0.2);
  632 +
492 .el-table__header-wrapper { 633 .el-table__header-wrapper {
493 th { 634 th {
494 - background-color: #f5f7fa;  
495 - color: #606266; 635 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  636 + color: #303133;
496 font-weight: 600; 637 font-weight: 600;
  638 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  639 + padding: 14px 0 !important;
  640 + height: auto !important;
  641 + line-height: normal !important;
  642 + box-sizing: border-box;
497 } 643 }
498 } 644 }
499 645
500 .el-table__body-wrapper { 646 .el-table__body-wrapper {
  647 + background-color: #ffffff;
  648 + z-index: 1;
  649 +
501 .el-table__row { 650 .el-table__row {
  651 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  652 + background-color: #ffffff;
  653 +
502 &:hover { 654 &:hover {
503 - background-color: #f5f7fa; 655 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  656 + transform: translateX(2px);
  657 + }
  658 +
  659 + td {
  660 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  661 + background-color: #ffffff !important;
  662 + padding: 12px 0 !important;
  663 + height: auto !important;
  664 + line-height: normal !important;
  665 + box-sizing: border-box;
  666 + }
  667 +
  668 + &.el-table__row--striped {
  669 + td {
  670 + background-color: #fafafa !important;
  671 + }
  672 +
  673 + &:hover td {
  674 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  675 + }
504 } 676 }
505 } 677 }
506 } 678 }
  679 +
  680 + .el-table__header-wrapper {
  681 + background-color: #ffffff;
  682 + z-index: 2;
  683 + }
507 } 684 }
508 </style> 685 </style>
antis-ncc-admin/src/views/wageManagement/healthCoach.vue
@@ -1359,26 +1359,45 @@ export default { @@ -1359,26 +1359,45 @@ export default {
1359 1359
1360 <style lang="scss" scoped> 1360 <style lang="scss" scoped>
1361 .app-container { 1361 .app-container {
1362 - padding: 20px;  
1363 - background: #f5f5f5; 1362 + padding: 16px;
  1363 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  1364 + min-height: 100vh;
  1365 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1364 } 1366 }
1365 1367
1366 .page-header { 1368 .page-header {
1367 display: flex; 1369 display: flex;
1368 justify-content: space-between; 1370 justify-content: space-between;
1369 align-items: flex-start; 1371 align-items: flex-start;
1370 - margin-bottom: 20px;  
1371 - padding: 20px;  
1372 - background: #fff;  
1373 - border-radius: 8px;  
1374 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1372 + margin-bottom: 16px;
  1373 + padding: 18px 24px;
  1374 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1375 + border-radius: 12px;
  1376 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1377 + border: 1px solid rgba(144, 147, 153, 0.2);
  1378 + position: relative;
  1379 + overflow: hidden;
  1380 +
  1381 + &::before {
  1382 + content: '';
  1383 + position: absolute;
  1384 + top: 0;
  1385 + left: 0;
  1386 + right: 0;
  1387 + height: 3px;
  1388 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1389 + }
1375 1390
1376 .header-left { 1391 .header-left {
1377 h2 { 1392 h2 {
1378 margin: 0 0 8px 0; 1393 margin: 0 0 8px 0;
1379 color: #303133; 1394 color: #303133;
1380 - font-size: 20px; 1395 + font-size: 22px;
1381 font-weight: 600; 1396 font-weight: 600;
  1397 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1398 + -webkit-background-clip: text;
  1399 + -webkit-text-fill-color: transparent;
  1400 + background-clip: text;
1382 } 1401 }
1383 1402
1384 .page-desc { 1403 .page-desc {
@@ -1390,40 +1409,169 @@ export default { @@ -1390,40 +1409,169 @@ export default {
1390 1409
1391 .header-right { 1410 .header-right {
1392 display: flex; 1411 display: flex;
1393 - gap: 12px; 1412 + gap: 10px;
  1413 + flex-wrap: wrap;
  1414 +
  1415 + .el-button {
  1416 + border-radius: 8px;
  1417 + padding: 10px 18px;
  1418 + font-weight: 500;
  1419 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1420 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1421 +
  1422 + &:hover {
  1423 + transform: translateY(-2px);
  1424 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1425 + }
  1426 +
  1427 + &.el-button--primary {
  1428 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1429 + border: none;
  1430 +
  1431 + &:hover {
  1432 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1433 + }
  1434 + }
  1435 +
  1436 + &.el-button--success {
  1437 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1438 + border: none;
  1439 +
  1440 + &:hover {
  1441 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1442 + }
  1443 + }
  1444 +
  1445 + &.el-button--warning {
  1446 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1447 + border: none;
  1448 +
  1449 + &:hover {
  1450 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1451 + }
  1452 + }
  1453 +
  1454 + &.el-button--info {
  1455 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1456 + border: none;
  1457 +
  1458 + &:hover {
  1459 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1460 + }
  1461 + }
  1462 + }
1394 } 1463 }
1395 } 1464 }
1396 1465
1397 .search-container { 1466 .search-container {
1398 - margin-bottom: 20px;  
1399 - padding: 20px;  
1400 - background: #fff;  
1401 - border-radius: 8px;  
1402 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1467 + margin-bottom: 16px;
  1468 + padding: 18px 24px;
  1469 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1470 + border-radius: 12px;
  1471 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1472 + border: 1px solid rgba(144, 147, 153, 0.2);
  1473 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1474 +
  1475 + &:hover {
  1476 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1477 + }
  1478 +
  1479 + &::v-deep .el-form {
  1480 + .el-form-item {
  1481 + margin-bottom: 16px;
  1482 + }
  1483 +
  1484 + .el-button {
  1485 + border-radius: 8px;
  1486 + padding: 10px 20px;
  1487 + font-weight: 500;
  1488 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1489 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1490 +
  1491 + &:hover {
  1492 + transform: translateY(-2px);
  1493 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1494 + }
  1495 +
  1496 + &.el-button--primary {
  1497 + background: linear-gradient(135deg, #409EFF 0%, #66b1ff 100%);
  1498 + border: none;
  1499 +
  1500 + &:hover {
  1501 + background: linear-gradient(135deg, #66b1ff 0%, #409EFF 100%);
  1502 + }
  1503 + }
  1504 + }
  1505 +
  1506 + .el-input__inner,
  1507 + .el-select .el-input__inner {
  1508 + border-radius: 8px;
  1509 + border: 1px solid rgba(144, 147, 153, 0.3);
  1510 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1511 +
  1512 + &:focus {
  1513 + border-color: #909399;
  1514 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1515 + }
  1516 + }
  1517 + }
1403 } 1518 }
1404 1519
1405 .batch-action-container { 1520 .batch-action-container {
1406 - margin-top: 15px;  
1407 - padding: 12px;  
1408 - background: #f0f9ff;  
1409 - border-radius: 4px; 1521 + margin-top: 16px;
  1522 + padding: 14px 18px;
  1523 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1524 + border-radius: 10px;
  1525 + border: 1px solid rgba(144, 147, 153, 0.3);
1410 display: flex; 1526 display: flex;
1411 align-items: center; 1527 align-items: center;
1412 gap: 12px; 1528 gap: 12px;
  1529 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1413 1530
1414 .selected-count { 1531 .selected-count {
1415 - color: #409EFF;  
1416 - font-weight: 500; 1532 + color: #606266;
  1533 + font-weight: 600;
1417 margin-right: 8px; 1534 margin-right: 8px;
  1535 + font-size: 14px;
  1536 + }
  1537 +
  1538 + .el-button {
  1539 + border-radius: 8px;
  1540 + font-weight: 500;
  1541 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1542 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1543 +
  1544 + &:hover {
  1545 + transform: translateY(-2px);
  1546 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1547 + }
1418 } 1548 }
1419 } 1549 }
1420 1550
1421 .table-container { 1551 .table-container {
1422 margin-bottom: 20px; 1552 margin-bottom: 20px;
1423 - padding: 20px;  
1424 - background: #fff;  
1425 - border-radius: 8px;  
1426 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1553 + padding: 18px 24px;
  1554 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1555 + border-radius: 12px;
  1556 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1557 + border: 1px solid rgba(144, 147, 153, 0.2);
  1558 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1559 + position: relative;
  1560 + overflow: hidden;
  1561 + z-index: 1;
  1562 +
  1563 + &:hover {
  1564 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1565 + }
  1566 +
  1567 + // 确保表格容器内的内容不透明
  1568 + &::v-deep .el-table {
  1569 + background-color: #ffffff;
  1570 +
  1571 + .el-table__body-wrapper {
  1572 + background-color: #ffffff;
  1573 + }
  1574 + }
1427 } 1575 }
1428 1576
1429 .store-name, 1577 .store-name,
@@ -1434,28 +1582,346 @@ export default { @@ -1434,28 +1582,346 @@ export default {
1434 1582
1435 .store-icon, 1583 .store-icon,
1436 .employee-icon { 1584 .employee-icon {
1437 - color: #409EFF; 1585 + color: #606266;
1438 font-size: 16px; 1586 font-size: 16px;
  1587 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1588 + }
  1589 +
  1590 + &:hover .store-icon,
  1591 + &:hover .employee-icon {
  1592 + transform: scale(1.1) rotate(5deg);
1439 } 1593 }
1440 } 1594 }
1441 1595
1442 // 表格样式优化 1596 // 表格样式优化
1443 ::v-deep .el-table { 1597 ::v-deep .el-table {
  1598 + border-radius: 8px;
  1599 + overflow: hidden;
  1600 + border: 1px solid rgba(144, 147, 153, 0.2);
  1601 +
  1602 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1603 + .el-table__column--selection {
  1604 + z-index: 1000 !important;
  1605 + pointer-events: auto !important;
  1606 + position: relative;
  1607 + }
  1608 +
  1609 + .el-checkbox {
  1610 + z-index: 1001 !important;
  1611 + pointer-events: auto !important;
  1612 + position: relative;
  1613 + cursor: pointer;
  1614 + }
  1615 +
  1616 + .el-checkbox__input {
  1617 + z-index: 1001 !important;
  1618 + pointer-events: auto !important;
  1619 + cursor: pointer;
  1620 + }
  1621 +
  1622 + .el-checkbox__inner {
  1623 + z-index: 1001 !important;
  1624 + pointer-events: auto !important;
  1625 + cursor: pointer;
  1626 + }
  1627 +
  1628 + td.el-table__cell--selection,
  1629 + th.el-table__cell--selection {
  1630 + z-index: 1000 !important;
  1631 + pointer-events: auto !important;
  1632 + position: relative;
  1633 + background-color: #ffffff !important;
  1634 + cursor: pointer;
  1635 +
  1636 + .cell {
  1637 + pointer-events: auto !important;
  1638 + z-index: 1001 !important;
  1639 + position: relative;
  1640 + }
  1641 + }
  1642 +
1444 .el-table__header-wrapper { 1643 .el-table__header-wrapper {
1445 th { 1644 th {
1446 - background-color: #f5f7fa;  
1447 - color: #606266; 1645 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1646 + color: #303133;
1448 font-weight: 600; 1647 font-weight: 600;
  1648 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1649 + padding: 14px 0 !important;
  1650 + height: auto !important;
  1651 + line-height: normal !important;
  1652 + box-sizing: border-box;
1449 } 1653 }
1450 } 1654 }
1451 1655
1452 .el-table__body-wrapper { 1656 .el-table__body-wrapper {
  1657 + background-color: #ffffff;
  1658 + z-index: 1;
  1659 +
1453 .el-table__row { 1660 .el-table__row {
  1661 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1662 + background-color: #ffffff;
  1663 +
  1664 + &:hover {
  1665 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1666 + transform: translateX(2px);
  1667 + }
  1668 +
  1669 + td {
  1670 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1671 + background-color: #ffffff !important;
  1672 + padding: 12px 0 !important;
  1673 + height: auto !important;
  1674 + line-height: normal !important;
  1675 + box-sizing: border-box;
  1676 + }
  1677 +
  1678 + &.el-table__row--striped {
  1679 + td {
  1680 + background-color: #fafafa !important;
  1681 + }
  1682 +
  1683 + &:hover td {
  1684 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1685 + }
  1686 + }
  1687 + }
  1688 + }
  1689 +
  1690 + .el-table__header-wrapper {
  1691 + background-color: #ffffff;
  1692 + z-index: 2;
  1693 + }
  1694 +
  1695 + // 固定列样式修复
  1696 + .el-table__fixed,
  1697 + .el-table__fixed-right {
  1698 + z-index: 5 !important;
  1699 + background-color: #ffffff;
  1700 + height: 100% !important;
  1701 +
  1702 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1703 + .el-table__column--selection {
  1704 + z-index: 1000 !important;
  1705 + pointer-events: auto !important;
  1706 + position: relative;
  1707 + }
  1708 +
  1709 + // 确保选择列单元格可以点击
  1710 + td.el-table__cell--selection,
  1711 + th.el-table__cell--selection {
  1712 + z-index: 1000 !important;
  1713 + pointer-events: auto !important;
  1714 + position: relative;
  1715 + background-color: #ffffff !important;
  1716 + cursor: pointer;
  1717 +
  1718 + .cell {
  1719 + pointer-events: auto !important;
  1720 + z-index: 1001 !important;
  1721 + position: relative;
  1722 + }
  1723 + }
  1724 +
  1725 + // 确保多选框本身可以点击
  1726 + .el-checkbox {
  1727 + z-index: 1001 !important;
  1728 + position: relative;
  1729 + pointer-events: auto !important;
  1730 + cursor: pointer;
  1731 + }
  1732 +
  1733 + .el-checkbox__input {
  1734 + z-index: 1001 !important;
  1735 + pointer-events: auto !important;
  1736 + cursor: pointer;
  1737 + }
  1738 +
  1739 + .el-checkbox__inner {
  1740 + z-index: 1001 !important;
  1741 + pointer-events: auto !important;
  1742 + cursor: pointer;
  1743 + }
  1744 +
  1745 + &::before {
  1746 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1747 + z-index: 4 !important;
  1748 + height: 100% !important;
  1749 + pointer-events: none !important;
  1750 + }
  1751 +
  1752 + .el-table__fixed-header-wrapper {
  1753 + height: auto !important;
  1754 + background-color: #ffffff;
  1755 +
  1756 + th {
  1757 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1758 + z-index: 6 !important;
  1759 + padding: 14px 0 !important;
  1760 + height: auto !important;
  1761 + line-height: normal !important;
  1762 +
  1763 + // 选择列header需要最高z-index
  1764 + &.el-table__cell--selection {
  1765 + z-index: 1000 !important;
  1766 + pointer-events: auto !important;
  1767 + }
  1768 + }
  1769 + }
  1770 +
  1771 + .el-table__fixed-body-wrapper {
  1772 + background-color: #ffffff;
  1773 + height: auto !important;
  1774 + max-height: 100% !important;
  1775 + overflow-y: auto !important;
  1776 +
  1777 + td {
  1778 + background-color: #ffffff !important;
  1779 + z-index: 10;
  1780 + padding: 12px 0 !important;
  1781 + height: auto !important;
  1782 + line-height: normal !important;
  1783 + }
  1784 +
  1785 + .el-table__row {
  1786 + height: auto !important;
  1787 +
  1788 + &.el-table__row--striped {
  1789 + td {
  1790 + background-color: #fafafa !important;
  1791 + }
  1792 + }
  1793 + }
  1794 + }
  1795 +
  1796 + th {
  1797 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1798 + z-index: 6 !important;
  1799 + padding: 14px 0 !important;
  1800 + height: auto !important;
  1801 + line-height: normal !important;
  1802 +
  1803 + // 选择列header需要最高z-index
  1804 + &.el-table__cell--selection {
  1805 + z-index: 1000 !important;
  1806 + pointer-events: auto !important;
  1807 + }
  1808 + }
  1809 +
  1810 + td {
  1811 + background-color: #ffffff !important;
  1812 + z-index: 6 !important;
  1813 + padding: 12px 0 !important;
  1814 + height: auto !important;
  1815 + line-height: normal !important;
  1816 +
  1817 + // 选择列cell需要最高z-index
  1818 + &.el-table__cell--selection {
  1819 + z-index: 1000 !important;
  1820 + pointer-events: auto !important;
  1821 + }
  1822 + }
  1823 + }
  1824 +
  1825 + // 固定列补丁
  1826 + .el-table__fixed-right-patch {
  1827 + background-color: #ffffff;
  1828 + z-index: 4 !important;
  1829 + height: 100% !important;
  1830 + pointer-events: none !important;
  1831 + }
  1832 +
  1833 + // 确保固定列和主表格的header高度一致
  1834 + .el-table__header-wrapper th,
  1835 + .el-table__fixed-header-wrapper th,
  1836 + .el-table__fixed-right-header-wrapper th {
  1837 + padding: 14px 0 !important;
  1838 + height: auto !important;
  1839 + line-height: normal !important;
  1840 + }
  1841 +
  1842 + // 确保固定列和主表格的body行高一致
  1843 + .el-table__body-wrapper td,
  1844 + .el-table__fixed-body-wrapper td,
  1845 + .el-table__fixed-right-body-wrapper td {
  1846 + padding: 12px 0 !important;
  1847 + height: auto !important;
  1848 + line-height: normal !important;
  1849 + }
  1850 +}
  1851 +
  1852 +// 操作按钮样式
  1853 +::v-deep .el-table {
  1854 + .el-button {
  1855 + border-radius: 6px;
  1856 + padding: 6px 14px;
  1857 + font-weight: 500;
  1858 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1859 + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
  1860 +
  1861 + &:hover {
  1862 + transform: translateY(-1px);
  1863 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  1864 + }
  1865 +
  1866 + &.el-button--primary {
  1867 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1868 + border: none;
  1869 +
  1870 + &:hover {
  1871 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1872 + }
  1873 + }
  1874 +
  1875 + &.el-button--success {
  1876 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1877 + border: none;
  1878 +
  1879 + &:hover {
  1880 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1881 + }
  1882 + }
  1883 +
  1884 + &.el-button--warning {
  1885 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1886 + border: none;
  1887 +
1454 &:hover { 1888 &:hover {
1455 - background-color: #f5f7fa; 1889 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
1456 } 1890 }
1457 } 1891 }
1458 } 1892 }
1459 } 1893 }
  1894 +
  1895 +// 标签样式
  1896 +::v-deep .el-tag {
  1897 + border-radius: 6px;
  1898 + font-weight: 500;
  1899 + padding: 4px 10px;
  1900 + border: none;
  1901 + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
  1902 +}
  1903 +
  1904 +// 滚动条美化
  1905 +::v-deep .el-table__body-wrapper {
  1906 + &::-webkit-scrollbar {
  1907 + width: 8px;
  1908 + height: 8px;
  1909 + }
  1910 +
  1911 + &::-webkit-scrollbar-track {
  1912 + background: rgba(240, 242, 245, 0.5);
  1913 + border-radius: 4px;
  1914 + }
  1915 +
  1916 + &::-webkit-scrollbar-thumb {
  1917 + background: linear-gradient(135deg, #c0c4cc 0%, #909399 100%);
  1918 + border-radius: 4px;
  1919 + transition: background 0.3s;
  1920 +
  1921 + &:hover {
  1922 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1923 + }
  1924 + }
  1925 +}
1460 </style> 1926 </style>
1461 1927
antis-ncc-admin/src/views/wageManagement/major-project-directors.vue
@@ -7,35 +7,16 @@ @@ -7,35 +7,16 @@
7 <p class="page-desc">管理大项目主管工资数据,包括业绩、提成、补贴、扣款等信息</p> 7 <p class="page-desc">管理大项目主管工资数据,包括业绩、提成、补贴、扣款等信息</p>
8 </div> 8 </div>
9 <div class="header-right"> 9 <div class="header-right">
10 - <el-button  
11 - type="warning"  
12 - icon="el-icon-upload2"  
13 - @click="showImportDialog"  
14 - :loading="importLoading"  
15 - > 10 + <el-button type="warning" icon="el-icon-upload2" @click="showImportDialog" :loading="importLoading">
16 导入 11 导入
17 </el-button> 12 </el-button>
18 - <el-button  
19 - type="success"  
20 - icon="el-icon-download"  
21 - @click="handleExport"  
22 - :loading="exportLoading"  
23 - > 13 + <el-button type="success" icon="el-icon-download" @click="handleExport" :loading="exportLoading">
24 导出 14 导出
25 </el-button> 15 </el-button>
26 - <el-button  
27 - type="primary"  
28 - icon="el-icon-cpu"  
29 - @click="showCalculateDialog"  
30 - :loading="calculateLoading"  
31 - > 16 + <el-button type="primary" icon="el-icon-cpu" @click="showCalculateDialog" :loading="calculateLoading">
32 计算工资 17 计算工资
33 </el-button> 18 </el-button>
34 - <el-button  
35 - icon="el-icon-refresh"  
36 - @click="getList"  
37 - :loading="loading"  
38 - > 19 + <el-button icon="el-icon-refresh" @click="getList" :loading="loading">
39 刷新 20 刷新
40 </el-button> 21 </el-button>
41 </div> 22 </div>
@@ -45,23 +26,11 @@ @@ -45,23 +26,11 @@
45 <div class="search-container"> 26 <div class="search-container">
46 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px"> 27 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px">
47 <el-form-item label="月份" prop="month"> 28 <el-form-item label="月份" prop="month">
48 - <el-date-picker  
49 - v-model="queryParams.month"  
50 - type="month"  
51 - placeholder="选择月份"  
52 - format="yyyyMM"  
53 - value-format="yyyyMM"  
54 - style="width: 200px"  
55 - /> 29 + <el-date-picker v-model="queryParams.month" type="month" placeholder="选择月份" format="yyyyMM"
  30 + value-format="yyyyMM" style="width: 200px" />
56 </el-form-item> 31 </el-form-item>
57 <el-form-item label="岗位" prop="position"> 32 <el-form-item label="岗位" prop="position">
58 - <el-select  
59 - v-model="queryParams.position"  
60 - placeholder="请选择岗位"  
61 - clearable  
62 - filterable  
63 - style="width: 200px"  
64 - > 33 + <el-select v-model="queryParams.position" placeholder="请选择岗位" clearable filterable style="width: 200px">
65 <el-option label="全部" :value="''" /> 34 <el-option label="全部" :value="''" />
66 <el-option label="大项目一部" value="大项目一部" /> 35 <el-option label="大项目一部" value="大项目一部" />
67 <el-option label="大项目二部" value="大项目二部" /> 36 <el-option label="大项目二部" value="大项目二部" />
@@ -83,30 +52,13 @@ @@ -83,30 +52,13 @@
83 <!-- 批量操作区域 --> 52 <!-- 批量操作区域 -->
84 <div class="batch-action-container" v-if="selectedRows.length > 0"> 53 <div class="batch-action-container" v-if="selectedRows.length > 0">
85 <span class="selected-count">已选择 {{ selectedRows.length }} 条记录</span> 54 <span class="selected-count">已选择 {{ selectedRows.length }} 条记录</span>
86 - <el-button  
87 - type="warning"  
88 - icon="el-icon-lock"  
89 - size="small"  
90 - @click="handleBatchLock"  
91 - :loading="lockLoading"  
92 - > 55 + <el-button type="warning" icon="el-icon-lock" size="small" @click="handleBatchLock" :loading="lockLoading">
93 批量锁定 56 批量锁定
94 </el-button> 57 </el-button>
95 - <el-button  
96 - type="success"  
97 - icon="el-icon-unlock"  
98 - size="small"  
99 - @click="handleBatchUnlock"  
100 - :loading="lockLoading"  
101 - > 58 + <el-button type="success" icon="el-icon-unlock" size="small" @click="handleBatchUnlock" :loading="lockLoading">
102 批量解锁 59 批量解锁
103 </el-button> 60 </el-button>
104 - <el-button  
105 - type="info"  
106 - icon="el-icon-close"  
107 - size="small"  
108 - @click="handleClearSelection"  
109 - > 61 + <el-button type="info" icon="el-icon-close" size="small" @click="handleClearSelection">
110 取消选择 62 取消选择
111 </el-button> 63 </el-button>
112 </div> 64 </div>
@@ -114,16 +66,8 @@ @@ -114,16 +66,8 @@
114 66
115 <!-- 数据表格 --> 67 <!-- 数据表格 -->
116 <div class="table-container"> 68 <div class="table-container">
117 - <NCC-table  
118 - ref="table"  
119 - v-loading="loading"  
120 - :data="list"  
121 - border  
122 - stripe  
123 - height="calc(100vh - 420px)"  
124 - :header-cell-style="{ background: '#f5f7fa', color: '#606266' }"  
125 - @selection-change="handleSelectionChange"  
126 - > 69 + <NCC-table ref="table" v-loading="loading" :data="list" border stripe height="calc(100vh - 420px)"
  70 + :header-cell-style="{ background: '#f5f7fa', color: '#606266' }" @selection-change="handleSelectionChange">
127 <!-- 多选列 --> 71 <!-- 多选列 -->
128 <el-table-column type="selection" width="55" align="center" fixed="left" /> 72 <el-table-column type="selection" width="55" align="center" fixed="left" />
129 <!-- 基本信息 --> 73 <!-- 基本信息 -->
@@ -350,41 +294,19 @@ @@ -350,41 +294,19 @@
350 <!-- 操作列 --> 294 <!-- 操作列 -->
351 <el-table-column label="操作" width="350" align="center" fixed="right"> 295 <el-table-column label="操作" width="350" align="center" fixed="right">
352 <template slot-scope="scope"> 296 <template slot-scope="scope">
353 - <el-button  
354 - type="primary"  
355 - size="mini"  
356 - icon="el-icon-view"  
357 - @click="showDetail(scope.row)"  
358 - > 297 + <el-button type="primary" size="mini" icon="el-icon-view" @click="showDetail(scope.row)">
359 详情 298 详情
360 </el-button> 299 </el-button>
361 - <el-button  
362 - type="info"  
363 - size="mini"  
364 - icon="el-icon-document"  
365 - @click="showStoreDetail(scope.row)"  
366 - v-if="scope.row.StoreDetail"  
367 - > 300 + <el-button type="info" size="mini" icon="el-icon-document" @click="showStoreDetail(scope.row)"
  301 + v-if="scope.row.StoreDetail">
368 门店明细 302 门店明细
369 </el-button> 303 </el-button>
370 - <el-button  
371 - v-if="scope.row.IsLocked === 1"  
372 - type="success"  
373 - size="mini"  
374 - icon="el-icon-unlock"  
375 - @click="handleUnlock(scope.row)"  
376 - :loading="lockLoading"  
377 - > 304 + <el-button v-if="scope.row.IsLocked === 1" type="success" size="mini" icon="el-icon-unlock"
  305 + @click="handleUnlock(scope.row)" :loading="lockLoading">
378 解锁 306 解锁
379 </el-button> 307 </el-button>
380 - <el-button  
381 - v-else  
382 - type="warning"  
383 - size="mini"  
384 - icon="el-icon-lock"  
385 - @click="handleLock(scope.row)"  
386 - :loading="lockLoading"  
387 - > 308 + <el-button v-else type="warning" size="mini" icon="el-icon-lock" @click="handleLock(scope.row)"
  309 + :loading="lockLoading">
388 锁定 310 锁定
389 </el-button> 311 </el-button>
390 </template> 312 </template>
@@ -393,64 +315,41 @@ @@ -393,64 +315,41 @@
393 </div> 315 </div>
394 316
395 <!-- 计算工资弹窗 --> 317 <!-- 计算工资弹窗 -->
396 - <el-dialog  
397 - title="计算大项目主管工资"  
398 - :visible="calculateDialogVisible"  
399 - width="500px"  
400 - :close-on-click-modal="false"  
401 - @close="handleCalculateDialogClose"  
402 - > 318 + <el-dialog title="计算大项目主管工资" :visible="calculateDialogVisible" width="500px" :close-on-click-modal="false"
  319 + @close="handleCalculateDialogClose">
403 <el-form label-width="100px" label-position="right"> 320 <el-form label-width="100px" label-position="right">
404 <el-form-item label="选择月份" required> 321 <el-form-item label="选择月份" required>
405 - <el-date-picker  
406 - v-model="calculateMonth"  
407 - type="month"  
408 - placeholder="请选择月份"  
409 - format="yyyyMM"  
410 - value-format="yyyyMM"  
411 - style="width: 100%"  
412 - /> 322 + <el-date-picker v-model="calculateMonth" type="month" placeholder="请选择月份" format="yyyyMM"
  323 + value-format="yyyyMM" style="width: 100%" />
413 </el-form-item> 324 </el-form-item>
414 </el-form> 325 </el-form>
415 <div slot="footer" class="dialog-footer"> 326 <div slot="footer" class="dialog-footer">
416 <el-button @click="handleCalculateDialogClose">取消</el-button> 327 <el-button @click="handleCalculateDialogClose">取消</el-button>
417 - <el-button  
418 - type="primary"  
419 - @click="handleCalculateConfirm"  
420 - :loading="calculateLoading"  
421 - > 328 + <el-button type="primary" @click="handleCalculateConfirm" :loading="calculateLoading">
422 确定 329 确定
423 </el-button> 330 </el-button>
424 </div> 331 </div>
425 </el-dialog> 332 </el-dialog>
426 333
427 <!-- 详情弹窗 --> 334 <!-- 详情弹窗 -->
428 - <major-project-director-detail-dialog  
429 - :visible="detailVisible"  
430 - :detail-data="currentDetailData"  
431 - @close="handleDetailClose"  
432 - /> 335 + <major-project-director-detail-dialog :visible="detailVisible" :detail-data="currentDetailData"
  336 + @close="handleDetailClose" />
433 337
434 <!-- 门店明细弹窗 --> 338 <!-- 门店明细弹窗 -->
435 - <el-dialog  
436 - title="门店明细"  
437 - :visible="storeDetailVisible"  
438 - width="1000px"  
439 - @close="handleStoreDetailClose"  
440 - > 339 + <el-dialog title="门店明细" :visible="storeDetailVisible" width="1000px" @close="handleStoreDetailClose">
441 <el-table :data="storeDetailList" border stripe max-height="500"> 340 <el-table :data="storeDetailList" border stripe max-height="500">
442 <el-table-column prop="StoreName" label="门店名称" width="200" align="center" fixed="left" /> 341 <el-table-column prop="StoreName" label="门店名称" width="200" align="center" fixed="left" />
443 - <el-table-column prop="BillingAmount" label="开单金额" align="center"> 342 + <el-table-column prop="BillingAmount" label="开单金额" align="center">
444 <template slot-scope="scope"> 343 <template slot-scope="scope">
445 <span>{{ formatMoney(scope.row.BillingAmount) }}</span> 344 <span>{{ formatMoney(scope.row.BillingAmount) }}</span>
446 </template> 345 </template>
447 </el-table-column> 346 </el-table-column>
448 - <el-table-column prop="RefundAmount" label="退卡金额" align="center"> 347 + <el-table-column prop="RefundAmount" label="退卡金额" align="center">
449 <template slot-scope="scope"> 348 <template slot-scope="scope">
450 <span>{{ formatMoney(scope.row.RefundAmount) }}</span> 349 <span>{{ formatMoney(scope.row.RefundAmount) }}</span>
451 </template> 350 </template>
452 </el-table-column> 351 </el-table-column>
453 - <el-table-column prop="TotalPerformance" label="总业绩" align="center"> 352 + <el-table-column prop="TotalPerformance" label="总业绩" align="center">
454 <template slot-scope="scope"> 353 <template slot-scope="scope">
455 <span>{{ formatMoney(scope.row.TotalPerformance) }}</span> 354 <span>{{ formatMoney(scope.row.TotalPerformance) }}</span>
456 </template> 355 </template>
@@ -462,35 +361,17 @@ @@ -462,35 +361,17 @@
462 </el-dialog> 361 </el-dialog>
463 362
464 <!-- 导入弹窗 --> 363 <!-- 导入弹窗 -->
465 - <el-dialog  
466 - title="导入大项目主管工资数据"  
467 - :visible="importDialogVisible"  
468 - width="500px"  
469 - :close-on-click-modal="false"  
470 - @close="handleImportDialogClose"  
471 - >  
472 - <el-upload  
473 - ref="upload"  
474 - action=""  
475 - :auto-upload="false"  
476 - :on-change="handleFileChange"  
477 - :file-list="fileList"  
478 - :limit="1"  
479 - accept=".xlsx,.xls"  
480 - drag  
481 - > 364 + <el-dialog title="导入大项目主管工资数据" :visible="importDialogVisible" width="500px" :close-on-click-modal="false"
  365 + @close="handleImportDialogClose">
  366 + <el-upload ref="upload" action="" :auto-upload="false" :on-change="handleFileChange" :file-list="fileList"
  367 + :limit="1" accept=".xlsx,.xls" drag>
482 <i class="el-icon-upload"></i> 368 <i class="el-icon-upload"></i>
483 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> 369 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
484 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div> 370 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div>
485 </el-upload> 371 </el-upload>
486 <div slot="footer" class="dialog-footer"> 372 <div slot="footer" class="dialog-footer">
487 <el-button @click="handleImportDialogClose">取消</el-button> 373 <el-button @click="handleImportDialogClose">取消</el-button>
488 - <el-button  
489 - type="primary"  
490 - @click="handleImportConfirm"  
491 - :loading="importLoading"  
492 - :disabled="!importFile"  
493 - > 374 + <el-button type="primary" @click="handleImportConfirm" :loading="importLoading" :disabled="!importFile">
494 确定 375 确定
495 </el-button> 376 </el-button>
496 </div> 377 </div>
@@ -558,7 +439,7 @@ export default { @@ -558,7 +439,7 @@ export default {
558 // 处理年月:从month选择器中提取年份和月份 439 // 处理年月:从month选择器中提取年份和月份
559 let year = '' 440 let year = ''
560 let month = '' 441 let month = ''
561 - 442 +
562 if (this.queryParams.month && this.queryParams.month.length === 6) { 443 if (this.queryParams.month && this.queryParams.month.length === 6) {
563 // yyyyMM 格式,如 202512 444 // yyyyMM 格式,如 202512
564 year = this.queryParams.month.substring(0, 4) 445 year = this.queryParams.month.substring(0, 4)
@@ -566,8 +447,8 @@ export default { @@ -566,8 +447,8 @@ export default {
566 } else if (this.queryParams.year && this.queryParams.month) { 447 } else if (this.queryParams.year && this.queryParams.month) {
567 // 分别选择年份和月份 448 // 分别选择年份和月份
568 year = this.queryParams.year 449 year = this.queryParams.year
569 - month = this.queryParams.month.length === 6  
570 - ? this.queryParams.month.substring(4, 6) 450 + month = this.queryParams.month.length === 6
  451 + ? this.queryParams.month.substring(4, 6)
571 : this.queryParams.month 452 : this.queryParams.month
572 } else { 453 } else {
573 // 使用默认值(当前年月) 454 // 使用默认值(当前年月)
@@ -1055,11 +936,11 @@ export default { @@ -1055,11 +936,11 @@ export default {
1055 936
1056 // 生成文件名 937 // 生成文件名
1057 const now = new Date() 938 const now = new Date()
1058 - const timestamp = now.getFullYear() +  
1059 - String(now.getMonth() + 1).padStart(2, '0') +  
1060 - String(now.getDate()).padStart(2, '0') +  
1061 - String(now.getHours()).padStart(2, '0') +  
1062 - String(now.getMinutes()).padStart(2, '0') + 939 + const timestamp = now.getFullYear() +
  940 + String(now.getMonth() + 1).padStart(2, '0') +
  941 + String(now.getDate()).padStart(2, '0') +
  942 + String(now.getHours()).padStart(2, '0') +
  943 + String(now.getMinutes()).padStart(2, '0') +
1063 String(now.getSeconds()).padStart(2, '0') 944 String(now.getSeconds()).padStart(2, '0')
1064 const fileName = `大项目主管工资_${timestamp}.xlsx` 945 const fileName = `大项目主管工资_${timestamp}.xlsx`
1065 946
@@ -1096,26 +977,45 @@ export default { @@ -1096,26 +977,45 @@ export default {
1096 977
1097 <style lang="scss" scoped> 978 <style lang="scss" scoped>
1098 .app-container { 979 .app-container {
1099 - padding: 20px;  
1100 - background: #f5f5f5; 980 + padding: 16px;
  981 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  982 + min-height: 100vh;
  983 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1101 } 984 }
1102 985
1103 .page-header { 986 .page-header {
1104 display: flex; 987 display: flex;
1105 justify-content: space-between; 988 justify-content: space-between;
1106 align-items: flex-start; 989 align-items: flex-start;
1107 - margin-bottom: 20px;  
1108 - padding: 20px;  
1109 - background: #fff;  
1110 - border-radius: 8px;  
1111 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 990 + margin-bottom: 16px;
  991 + padding: 18px 24px;
  992 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  993 + border-radius: 12px;
  994 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  995 + border: 1px solid rgba(144, 147, 153, 0.2);
  996 + position: relative;
  997 + overflow: hidden;
  998 +
  999 + &::before {
  1000 + content: '';
  1001 + position: absolute;
  1002 + top: 0;
  1003 + left: 0;
  1004 + right: 0;
  1005 + height: 3px;
  1006 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1007 + }
1112 1008
1113 .header-left { 1009 .header-left {
1114 h2 { 1010 h2 {
1115 margin: 0 0 8px 0; 1011 margin: 0 0 8px 0;
1116 color: #303133; 1012 color: #303133;
1117 - font-size: 20px; 1013 + font-size: 22px;
1118 font-weight: 600; 1014 font-weight: 600;
  1015 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1016 + -webkit-background-clip: text;
  1017 + -webkit-text-fill-color: transparent;
  1018 + background-clip: text;
1119 } 1019 }
1120 1020
1121 .page-desc { 1021 .page-desc {
@@ -1127,40 +1027,168 @@ export default { @@ -1127,40 +1027,168 @@ export default {
1127 1027
1128 .header-right { 1028 .header-right {
1129 display: flex; 1029 display: flex;
1130 - gap: 12px; 1030 + gap: 10px;
  1031 + flex-wrap: wrap;
  1032 +
  1033 + .el-button {
  1034 + border-radius: 8px;
  1035 + padding: 10px 18px;
  1036 + font-weight: 500;
  1037 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1038 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1039 +
  1040 + &:hover {
  1041 + transform: translateY(-2px);
  1042 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1043 + }
  1044 +
  1045 + &.el-button--primary {
  1046 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1047 + border: none;
  1048 +
  1049 + &:hover {
  1050 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1051 + }
  1052 + }
  1053 +
  1054 + &.el-button--success {
  1055 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1056 + border: none;
  1057 +
  1058 + &:hover {
  1059 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1060 + }
  1061 + }
  1062 +
  1063 + &.el-button--warning {
  1064 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1065 + border: none;
  1066 +
  1067 + &:hover {
  1068 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1069 + }
  1070 + }
  1071 +
  1072 + &.el-button--info {
  1073 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1074 + border: none;
  1075 +
  1076 + &:hover {
  1077 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1078 + }
  1079 + }
  1080 + }
1131 } 1081 }
1132 } 1082 }
1133 1083
1134 .search-container { 1084 .search-container {
1135 - margin-bottom: 20px;  
1136 - padding: 20px;  
1137 - background: #fff;  
1138 - border-radius: 8px;  
1139 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1085 + margin-bottom: 16px;
  1086 + padding: 18px 24px;
  1087 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1088 + border-radius: 12px;
  1089 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1090 + border: 1px solid rgba(144, 147, 153, 0.2);
  1091 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1092 +
  1093 + &:hover {
  1094 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1095 + }
  1096 +
  1097 + &::v-deep .el-form {
  1098 + .el-form-item {
  1099 + margin-bottom: 16px;
  1100 + }
  1101 +
  1102 + .el-button {
  1103 + border-radius: 8px;
  1104 + padding: 10px 20px;
  1105 + font-weight: 500;
  1106 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1107 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1108 +
  1109 + &:hover {
  1110 + transform: translateY(-2px);
  1111 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1112 + }
  1113 +
  1114 + &.el-button--primary {
  1115 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1116 + border: none;
  1117 +
  1118 + &:hover {
  1119 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1120 + }
  1121 + }
  1122 + }
  1123 +
  1124 + .el-input__inner,
  1125 + .el-select .el-input__inner {
  1126 + border-radius: 8px;
  1127 + border: 1px solid rgba(144, 147, 153, 0.3);
  1128 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1129 +
  1130 + &:focus {
  1131 + border-color: #909399;
  1132 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1133 + }
  1134 + }
  1135 + }
1140 } 1136 }
1141 1137
1142 .batch-action-container { 1138 .batch-action-container {
1143 - margin-top: 15px;  
1144 - padding: 12px;  
1145 - background: #f0f9ff;  
1146 - border-radius: 4px; 1139 + margin-top: 16px;
  1140 + padding: 14px 18px;
  1141 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1142 + border-radius: 10px;
  1143 + border: 1px solid rgba(144, 147, 153, 0.3);
1147 display: flex; 1144 display: flex;
1148 align-items: center; 1145 align-items: center;
1149 gap: 12px; 1146 gap: 12px;
  1147 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1150 1148
1151 .selected-count { 1149 .selected-count {
1152 - color: #409EFF;  
1153 - font-weight: 500; 1150 + color: #606266;
  1151 + font-weight: 600;
1154 margin-right: 8px; 1152 margin-right: 8px;
  1153 + font-size: 14px;
  1154 + }
  1155 +
  1156 + .el-button {
  1157 + border-radius: 8px;
  1158 + font-weight: 500;
  1159 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1160 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1161 +
  1162 + &:hover {
  1163 + transform: translateY(-2px);
  1164 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1165 + }
1155 } 1166 }
1156 } 1167 }
1157 1168
1158 .table-container { 1169 .table-container {
1159 margin-bottom: 20px; 1170 margin-bottom: 20px;
1160 - padding: 20px;  
1161 - background: #fff;  
1162 - border-radius: 8px;  
1163 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1171 + padding: 18px 24px;
  1172 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1173 + border-radius: 12px;
  1174 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1175 + border: 1px solid rgba(144, 147, 153, 0.2);
  1176 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1177 + position: relative;
  1178 + overflow: hidden;
  1179 + z-index: 1;
  1180 +
  1181 + &:hover {
  1182 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1183 + }
  1184 +
  1185 + &::v-deep .el-table {
  1186 + background-color: #ffffff;
  1187 +
  1188 + .el-table__body-wrapper {
  1189 + background-color: #ffffff;
  1190 + }
  1191 + }
1164 } 1192 }
1165 1193
1166 .employee-name { 1194 .employee-name {
@@ -1169,28 +1197,275 @@ export default { @@ -1169,28 +1197,275 @@ export default {
1169 gap: 6px; 1197 gap: 6px;
1170 1198
1171 .employee-icon { 1199 .employee-icon {
1172 - color: #409EFF; 1200 + color: #606266;
1173 font-size: 16px; 1201 font-size: 16px;
  1202 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1203 + }
  1204 +
  1205 + &:hover .employee-icon {
  1206 + transform: scale(1.1) rotate(5deg);
1174 } 1207 }
1175 } 1208 }
1176 1209
1177 // 表格样式优化 1210 // 表格样式优化
1178 ::v-deep .el-table { 1211 ::v-deep .el-table {
  1212 + border-radius: 8px;
  1213 + overflow: hidden;
  1214 + border: 1px solid rgba(144, 147, 153, 0.2);
  1215 +
  1216 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1217 + .el-table__column--selection {
  1218 + z-index: 1000 !important;
  1219 + pointer-events: auto !important;
  1220 + position: relative;
  1221 + }
  1222 +
  1223 + .el-checkbox {
  1224 + z-index: 1001 !important;
  1225 + pointer-events: auto !important;
  1226 + position: relative;
  1227 + cursor: pointer;
  1228 + }
  1229 +
  1230 + .el-checkbox__input {
  1231 + z-index: 1001 !important;
  1232 + pointer-events: auto !important;
  1233 + cursor: pointer;
  1234 + }
  1235 +
  1236 + .el-checkbox__inner {
  1237 + z-index: 1001 !important;
  1238 + pointer-events: auto !important;
  1239 + cursor: pointer;
  1240 + }
  1241 +
  1242 + td.el-table__cell--selection,
  1243 + th.el-table__cell--selection {
  1244 + z-index: 1000 !important;
  1245 + pointer-events: auto !important;
  1246 + position: relative;
  1247 + background-color: #ffffff !important;
  1248 + cursor: pointer;
  1249 +
  1250 + .cell {
  1251 + pointer-events: auto !important;
  1252 + z-index: 1001 !important;
  1253 + position: relative;
  1254 + }
  1255 + }
  1256 +
1179 .el-table__header-wrapper { 1257 .el-table__header-wrapper {
1180 th { 1258 th {
1181 - background-color: #f5f7fa;  
1182 - color: #606266; 1259 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1260 + color: #303133;
1183 font-weight: 600; 1261 font-weight: 600;
  1262 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1263 + padding: 14px 0 !important;
  1264 + height: auto !important;
  1265 + line-height: normal !important;
  1266 + box-sizing: border-box;
1184 } 1267 }
1185 } 1268 }
1186 1269
1187 .el-table__body-wrapper { 1270 .el-table__body-wrapper {
  1271 + background-color: #ffffff;
  1272 + z-index: 1;
  1273 +
1188 .el-table__row { 1274 .el-table__row {
  1275 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1276 + background-color: #ffffff;
  1277 +
1189 &:hover { 1278 &:hover {
1190 - background-color: #f5f7fa; 1279 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1280 + transform: translateX(2px);
  1281 + }
  1282 +
  1283 + td {
  1284 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1285 + background-color: #ffffff !important;
  1286 + padding: 12px 0 !important;
  1287 + height: auto !important;
  1288 + line-height: normal !important;
  1289 + box-sizing: border-box;
  1290 + }
  1291 +
  1292 + &.el-table__row--striped {
  1293 + td {
  1294 + background-color: #fafafa !important;
  1295 + }
  1296 +
  1297 + &:hover td {
  1298 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1299 + }
  1300 + }
  1301 + }
  1302 + }
  1303 +
  1304 + .el-table__header-wrapper {
  1305 + background-color: #ffffff;
  1306 + z-index: 2;
  1307 + }
  1308 +
  1309 + // 固定列样式修复
  1310 + .el-table__fixed,
  1311 + .el-table__fixed-right {
  1312 + z-index: 5 !important;
  1313 + background-color: #ffffff;
  1314 + height: 100% !important;
  1315 +
  1316 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1317 + .el-table__column--selection {
  1318 + z-index: 1000 !important;
  1319 + pointer-events: auto !important;
  1320 + position: relative;
  1321 + }
  1322 +
  1323 + // 确保选择列单元格可以点击
  1324 + td.el-table__cell--selection,
  1325 + th.el-table__cell--selection {
  1326 + z-index: 1000 !important;
  1327 + pointer-events: auto !important;
  1328 + position: relative;
  1329 + background-color: #ffffff !important;
  1330 + cursor: pointer;
  1331 +
  1332 + .cell {
  1333 + pointer-events: auto !important;
  1334 + z-index: 1001 !important;
  1335 + position: relative;
  1336 + }
  1337 + }
  1338 +
  1339 + // 确保多选框本身可以点击
  1340 + .el-checkbox {
  1341 + z-index: 1001 !important;
  1342 + position: relative;
  1343 + pointer-events: auto !important;
  1344 + cursor: pointer;
  1345 + }
  1346 +
  1347 + .el-checkbox__input {
  1348 + z-index: 1001 !important;
  1349 + pointer-events: auto !important;
  1350 + cursor: pointer;
  1351 + }
  1352 +
  1353 + .el-checkbox__inner {
  1354 + z-index: 1001 !important;
  1355 + pointer-events: auto !important;
  1356 + cursor: pointer;
  1357 + }
  1358 +
  1359 + &::before {
  1360 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1361 + z-index: 4 !important;
  1362 + height: 100% !important;
  1363 + pointer-events: none !important;
  1364 + }
  1365 +
  1366 + .el-table__fixed-header-wrapper {
  1367 + height: auto !important;
  1368 + background-color: #ffffff;
  1369 +
  1370 + th {
  1371 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1372 + z-index: 6 !important;
  1373 + padding: 14px 0 !important;
  1374 + height: auto !important;
  1375 + line-height: normal !important;
  1376 +
  1377 + // 选择列header需要最高z-index
  1378 + &.el-table__cell--selection {
  1379 + z-index: 1000 !important;
  1380 + pointer-events: auto !important;
  1381 + }
  1382 + }
  1383 + }
  1384 +
  1385 + .el-table__fixed-body-wrapper {
  1386 + background-color: #ffffff;
  1387 + height: auto !important;
  1388 + max-height: 100% !important;
  1389 + overflow-y: auto !important;
  1390 +
  1391 + td {
  1392 + background-color: #ffffff !important;
  1393 + z-index: 6 !important;
  1394 + padding: 12px 0 !important;
  1395 + height: auto !important;
  1396 + line-height: normal !important;
  1397 +
  1398 + // 选择列cell需要最高z-index
  1399 + &.el-table__cell--selection {
  1400 + z-index: 1000 !important;
  1401 + pointer-events: auto !important;
  1402 + }
  1403 + }
  1404 +
  1405 + .el-table__row {
  1406 + height: auto !important;
  1407 +
  1408 + &.el-table__row--striped {
  1409 + td {
  1410 + background-color: #fafafa !important;
  1411 + }
  1412 + }
  1413 + }
  1414 + }
  1415 +
  1416 + th {
  1417 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1418 + z-index: 6 !important;
  1419 + padding: 14px 0 !important;
  1420 + height: auto !important;
  1421 + line-height: normal !important;
  1422 +
  1423 + // 选择列header需要最高z-index
  1424 + &.el-table__cell--selection {
  1425 + z-index: 1000 !important;
  1426 + pointer-events: auto !important;
  1427 + }
  1428 + }
  1429 +
  1430 + td {
  1431 + background-color: #ffffff !important;
  1432 + z-index: 6 !important;
  1433 + padding: 12px 0 !important;
  1434 + height: auto !important;
  1435 + line-height: normal !important;
  1436 +
  1437 + // 选择列cell需要最高z-index
  1438 + &.el-table__cell--selection {
  1439 + z-index: 1000 !important;
  1440 + pointer-events: auto !important;
1191 } 1441 }
1192 } 1442 }
1193 } 1443 }
  1444 +
  1445 + // 固定列补丁
  1446 + .el-table__fixed-right-patch {
  1447 + background-color: #ffffff;
  1448 + z-index: 4 !important;
  1449 + height: 100% !important;
  1450 + pointer-events: none !important;
  1451 + }
  1452 +
  1453 + // 确保固定列和主表格的header高度一致
  1454 + .el-table__header-wrapper th,
  1455 + .el-table__fixed-header-wrapper th,
  1456 + .el-table__fixed-right-header-wrapper th {
  1457 + padding: 14px 0 !important;
  1458 + height: auto !important;
  1459 + line-height: normal !important;
  1460 + }
  1461 +
  1462 + // 确保固定列和主表格的body行高一致
  1463 + .el-table__body-wrapper td,
  1464 + .el-table__fixed-body-wrapper td,
  1465 + .el-table__fixed-right-body-wrapper td {
  1466 + padding: 12px 0 !important;
  1467 + height: auto !important;
  1468 + line-height: normal !important;
  1469 + }
1194 } 1470 }
1195 </style> 1471 </style>
1196 -  
antis-ncc-admin/src/views/wageManagement/major-project-teachers.vue
@@ -1145,26 +1145,45 @@ export default { @@ -1145,26 +1145,45 @@ export default {
1145 1145
1146 <style lang="scss" scoped> 1146 <style lang="scss" scoped>
1147 .app-container { 1147 .app-container {
1148 - padding: 20px;  
1149 - background: #f5f5f5; 1148 + padding: 16px;
  1149 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  1150 + min-height: 100vh;
  1151 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1150 } 1152 }
1151 1153
1152 .page-header { 1154 .page-header {
1153 display: flex; 1155 display: flex;
1154 justify-content: space-between; 1156 justify-content: space-between;
1155 align-items: flex-start; 1157 align-items: flex-start;
1156 - margin-bottom: 20px;  
1157 - padding: 20px;  
1158 - background: #fff;  
1159 - border-radius: 8px;  
1160 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1158 + margin-bottom: 16px;
  1159 + padding: 18px 24px;
  1160 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1161 + border-radius: 12px;
  1162 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1163 + border: 1px solid rgba(144, 147, 153, 0.2);
  1164 + position: relative;
  1165 + overflow: hidden;
  1166 +
  1167 + &::before {
  1168 + content: '';
  1169 + position: absolute;
  1170 + top: 0;
  1171 + left: 0;
  1172 + right: 0;
  1173 + height: 3px;
  1174 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1175 + }
1161 1176
1162 .header-left { 1177 .header-left {
1163 h2 { 1178 h2 {
1164 margin: 0 0 8px 0; 1179 margin: 0 0 8px 0;
1165 color: #303133; 1180 color: #303133;
1166 - font-size: 20px; 1181 + font-size: 22px;
1167 font-weight: 600; 1182 font-weight: 600;
  1183 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1184 + -webkit-background-clip: text;
  1185 + -webkit-text-fill-color: transparent;
  1186 + background-clip: text;
1168 } 1187 }
1169 1188
1170 .page-desc { 1189 .page-desc {
@@ -1176,40 +1195,168 @@ export default { @@ -1176,40 +1195,168 @@ export default {
1176 1195
1177 .header-right { 1196 .header-right {
1178 display: flex; 1197 display: flex;
1179 - gap: 12px; 1198 + gap: 10px;
  1199 + flex-wrap: wrap;
  1200 +
  1201 + .el-button {
  1202 + border-radius: 8px;
  1203 + padding: 10px 18px;
  1204 + font-weight: 500;
  1205 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1206 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1207 +
  1208 + &:hover {
  1209 + transform: translateY(-2px);
  1210 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1211 + }
  1212 +
  1213 + &.el-button--primary {
  1214 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1215 + border: none;
  1216 +
  1217 + &:hover {
  1218 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1219 + }
  1220 + }
  1221 +
  1222 + &.el-button--success {
  1223 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1224 + border: none;
  1225 +
  1226 + &:hover {
  1227 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1228 + }
  1229 + }
  1230 +
  1231 + &.el-button--warning {
  1232 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1233 + border: none;
  1234 +
  1235 + &:hover {
  1236 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1237 + }
  1238 + }
  1239 +
  1240 + &.el-button--info {
  1241 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1242 + border: none;
  1243 +
  1244 + &:hover {
  1245 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1246 + }
  1247 + }
  1248 + }
1180 } 1249 }
1181 } 1250 }
1182 1251
1183 .search-container { 1252 .search-container {
1184 - margin-bottom: 20px;  
1185 - padding: 20px;  
1186 - background: #fff;  
1187 - border-radius: 8px;  
1188 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1253 + margin-bottom: 16px;
  1254 + padding: 18px 24px;
  1255 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1256 + border-radius: 12px;
  1257 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1258 + border: 1px solid rgba(144, 147, 153, 0.2);
  1259 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1260 +
  1261 + &:hover {
  1262 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1263 + }
  1264 +
  1265 + &::v-deep .el-form {
  1266 + .el-form-item {
  1267 + margin-bottom: 16px;
  1268 + }
  1269 +
  1270 + .el-button {
  1271 + border-radius: 8px;
  1272 + padding: 10px 20px;
  1273 + font-weight: 500;
  1274 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1275 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1276 +
  1277 + &:hover {
  1278 + transform: translateY(-2px);
  1279 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1280 + }
  1281 +
  1282 + &.el-button--primary {
  1283 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1284 + border: none;
  1285 +
  1286 + &:hover {
  1287 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1288 + }
  1289 + }
  1290 + }
  1291 +
  1292 + .el-input__inner,
  1293 + .el-select .el-input__inner {
  1294 + border-radius: 8px;
  1295 + border: 1px solid rgba(144, 147, 153, 0.3);
  1296 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1297 +
  1298 + &:focus {
  1299 + border-color: #909399;
  1300 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1301 + }
  1302 + }
  1303 + }
1189 } 1304 }
1190 1305
1191 .batch-action-container { 1306 .batch-action-container {
1192 - margin-top: 15px;  
1193 - padding: 12px;  
1194 - background: #f0f9ff;  
1195 - border-radius: 4px; 1307 + margin-top: 16px;
  1308 + padding: 14px 18px;
  1309 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1310 + border-radius: 10px;
  1311 + border: 1px solid rgba(144, 147, 153, 0.3);
1196 display: flex; 1312 display: flex;
1197 align-items: center; 1313 align-items: center;
1198 gap: 12px; 1314 gap: 12px;
  1315 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1199 1316
1200 .selected-count { 1317 .selected-count {
1201 - color: #409EFF;  
1202 - font-weight: 500; 1318 + color: #606266;
  1319 + font-weight: 600;
1203 margin-right: 8px; 1320 margin-right: 8px;
  1321 + font-size: 14px;
  1322 + }
  1323 +
  1324 + .el-button {
  1325 + border-radius: 8px;
  1326 + font-weight: 500;
  1327 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1328 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1329 +
  1330 + &:hover {
  1331 + transform: translateY(-2px);
  1332 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1333 + }
1204 } 1334 }
1205 } 1335 }
1206 1336
1207 .table-container { 1337 .table-container {
1208 margin-bottom: 20px; 1338 margin-bottom: 20px;
1209 - padding: 20px;  
1210 - background: #fff;  
1211 - border-radius: 8px;  
1212 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1339 + padding: 18px 24px;
  1340 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1341 + border-radius: 12px;
  1342 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1343 + border: 1px solid rgba(144, 147, 153, 0.2);
  1344 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1345 + position: relative;
  1346 + overflow: hidden;
  1347 + z-index: 1;
  1348 +
  1349 + &:hover {
  1350 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1351 + }
  1352 +
  1353 + &::v-deep .el-table {
  1354 + background-color: #ffffff;
  1355 +
  1356 + .el-table__body-wrapper {
  1357 + background-color: #ffffff;
  1358 + }
  1359 + }
1213 } 1360 }
1214 1361
1215 .store-name, 1362 .store-name,
@@ -1220,27 +1367,276 @@ export default { @@ -1220,27 +1367,276 @@ export default {
1220 1367
1221 .store-icon, 1368 .store-icon,
1222 .employee-icon { 1369 .employee-icon {
1223 - color: #409EFF; 1370 + color: #606266;
1224 font-size: 16px; 1371 font-size: 16px;
  1372 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1373 + }
  1374 +
  1375 + &:hover .store-icon,
  1376 + &:hover .employee-icon {
  1377 + transform: scale(1.1) rotate(5deg);
1225 } 1378 }
1226 } 1379 }
1227 1380
1228 // 表格样式优化 1381 // 表格样式优化
1229 ::v-deep .el-table { 1382 ::v-deep .el-table {
  1383 + border-radius: 8px;
  1384 + overflow: hidden;
  1385 + border: 1px solid rgba(144, 147, 153, 0.2);
  1386 +
  1387 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1388 + .el-table__column--selection {
  1389 + z-index: 1000 !important;
  1390 + pointer-events: auto !important;
  1391 + position: relative;
  1392 + }
  1393 +
  1394 + .el-checkbox {
  1395 + z-index: 1001 !important;
  1396 + pointer-events: auto !important;
  1397 + position: relative;
  1398 + cursor: pointer;
  1399 + }
  1400 +
  1401 + .el-checkbox__input {
  1402 + z-index: 1001 !important;
  1403 + pointer-events: auto !important;
  1404 + cursor: pointer;
  1405 + }
  1406 +
  1407 + .el-checkbox__inner {
  1408 + z-index: 1001 !important;
  1409 + pointer-events: auto !important;
  1410 + cursor: pointer;
  1411 + }
  1412 +
  1413 + td.el-table__cell--selection,
  1414 + th.el-table__cell--selection {
  1415 + z-index: 1000 !important;
  1416 + pointer-events: auto !important;
  1417 + position: relative;
  1418 + background-color: #ffffff !important;
  1419 + cursor: pointer;
  1420 +
  1421 + .cell {
  1422 + pointer-events: auto !important;
  1423 + z-index: 1001 !important;
  1424 + position: relative;
  1425 + }
  1426 + }
  1427 +
1230 .el-table__header-wrapper { 1428 .el-table__header-wrapper {
1231 th { 1429 th {
1232 - background-color: #f5f7fa;  
1233 - color: #606266; 1430 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1431 + color: #303133;
1234 font-weight: 600; 1432 font-weight: 600;
  1433 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1434 + padding: 14px 0 !important;
  1435 + height: auto !important;
  1436 + line-height: normal !important;
  1437 + box-sizing: border-box;
1235 } 1438 }
1236 } 1439 }
1237 1440
1238 .el-table__body-wrapper { 1441 .el-table__body-wrapper {
  1442 + background-color: #ffffff;
  1443 + z-index: 1;
  1444 +
1239 .el-table__row { 1445 .el-table__row {
  1446 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1447 + background-color: #ffffff;
  1448 +
1240 &:hover { 1449 &:hover {
1241 - background-color: #f5f7fa; 1450 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1451 + transform: translateX(2px);
  1452 + }
  1453 +
  1454 + td {
  1455 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1456 + background-color: #ffffff !important;
  1457 + padding: 12px 0 !important;
  1458 + height: auto !important;
  1459 + line-height: normal !important;
  1460 + box-sizing: border-box;
1242 } 1461 }
  1462 +
  1463 + &.el-table__row--striped {
  1464 + td {
  1465 + background-color: #fafafa !important;
  1466 + }
  1467 +
  1468 + &:hover td {
  1469 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1470 + }
  1471 + }
  1472 + }
  1473 + }
  1474 +
  1475 + .el-table__header-wrapper {
  1476 + background-color: #ffffff;
  1477 + z-index: 2;
  1478 + }
  1479 +
  1480 + // 固定列样式修复
  1481 + .el-table__fixed,
  1482 + .el-table__fixed-right {
  1483 + z-index: 5 !important;
  1484 + background-color: #ffffff;
  1485 + height: 100% !important;
  1486 +
  1487 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1488 + .el-table__column--selection {
  1489 + z-index: 1000 !important;
  1490 + pointer-events: auto !important;
  1491 + position: relative;
  1492 + }
  1493 +
  1494 + // 确保选择列单元格可以点击
  1495 + td.el-table__cell--selection,
  1496 + th.el-table__cell--selection {
  1497 + z-index: 1000 !important;
  1498 + pointer-events: auto !important;
  1499 + position: relative;
  1500 + background-color: #ffffff !important;
  1501 + cursor: pointer;
  1502 +
  1503 + .cell {
  1504 + pointer-events: auto !important;
  1505 + z-index: 1001 !important;
  1506 + position: relative;
  1507 + }
  1508 + }
  1509 +
  1510 + // 确保多选框本身可以点击
  1511 + .el-checkbox {
  1512 + z-index: 1001 !important;
  1513 + position: relative;
  1514 + pointer-events: auto !important;
  1515 + cursor: pointer;
  1516 + }
  1517 +
  1518 + .el-checkbox__input {
  1519 + z-index: 1001 !important;
  1520 + pointer-events: auto !important;
  1521 + cursor: pointer;
1243 } 1522 }
  1523 +
  1524 + .el-checkbox__inner {
  1525 + z-index: 1001 !important;
  1526 + pointer-events: auto !important;
  1527 + cursor: pointer;
  1528 + }
  1529 +
  1530 + &::before {
  1531 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1532 + z-index: 4 !important;
  1533 + height: 100% !important;
  1534 + pointer-events: none !important;
  1535 + }
  1536 +
  1537 + .el-table__fixed-header-wrapper {
  1538 + height: auto !important;
  1539 + background-color: #ffffff;
  1540 +
  1541 + th {
  1542 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1543 + z-index: 6 !important;
  1544 + padding: 14px 0 !important;
  1545 + height: auto !important;
  1546 + line-height: normal !important;
  1547 +
  1548 + // 选择列header需要最高z-index
  1549 + &.el-table__cell--selection {
  1550 + z-index: 1000 !important;
  1551 + pointer-events: auto !important;
  1552 + }
  1553 + }
  1554 + }
  1555 +
  1556 + .el-table__fixed-body-wrapper {
  1557 + background-color: #ffffff;
  1558 + height: auto !important;
  1559 + max-height: 100% !important;
  1560 + overflow-y: auto !important;
  1561 +
  1562 + td {
  1563 + background-color: #ffffff !important;
  1564 + z-index: 6 !important;
  1565 + padding: 12px 0 !important;
  1566 + height: auto !important;
  1567 + line-height: normal !important;
  1568 +
  1569 + // 选择列cell需要最高z-index
  1570 + &.el-table__cell--selection {
  1571 + z-index: 1000 !important;
  1572 + pointer-events: auto !important;
  1573 + }
  1574 + }
  1575 +
  1576 + .el-table__row {
  1577 + height: auto !important;
  1578 +
  1579 + &.el-table__row--striped {
  1580 + td {
  1581 + background-color: #fafafa !important;
  1582 + }
  1583 + }
  1584 + }
  1585 + }
  1586 +
  1587 + th {
  1588 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1589 + z-index: 6 !important;
  1590 + padding: 14px 0 !important;
  1591 + height: auto !important;
  1592 + line-height: normal !important;
  1593 +
  1594 + // 选择列header需要最高z-index
  1595 + &.el-table__cell--selection {
  1596 + z-index: 1000 !important;
  1597 + pointer-events: auto !important;
  1598 + }
  1599 + }
  1600 +
  1601 + td {
  1602 + background-color: #ffffff !important;
  1603 + z-index: 6 !important;
  1604 + padding: 12px 0 !important;
  1605 + height: auto !important;
  1606 + line-height: normal !important;
  1607 +
  1608 + // 选择列cell需要最高z-index
  1609 + &.el-table__cell--selection {
  1610 + z-index: 1000 !important;
  1611 + pointer-events: auto !important;
  1612 + }
  1613 + }
  1614 + }
  1615 +
  1616 + // 固定列补丁
  1617 + .el-table__fixed-right-patch {
  1618 + background-color: #ffffff;
  1619 + z-index: 4 !important;
  1620 + height: 100% !important;
  1621 + pointer-events: none !important;
  1622 + }
  1623 +
  1624 + // 确保固定列和主表格的header高度一致
  1625 + .el-table__header-wrapper th,
  1626 + .el-table__fixed-header-wrapper th,
  1627 + .el-table__fixed-right-header-wrapper th {
  1628 + padding: 14px 0 !important;
  1629 + height: auto !important;
  1630 + line-height: normal !important;
  1631 + }
  1632 +
  1633 + // 确保固定列和主表格的body行高一致
  1634 + .el-table__body-wrapper td,
  1635 + .el-table__fixed-body-wrapper td,
  1636 + .el-table__fixed-right-body-wrapper td {
  1637 + padding: 12px 0 !important;
  1638 + height: auto !important;
  1639 + line-height: normal !important;
1244 } 1640 }
1245 } 1641 }
1246 </style> 1642 </style>
antis-ncc-admin/src/views/wageManagement/shop-stock.vue
@@ -788,26 +788,45 @@ export default { @@ -788,26 +788,45 @@ export default {
788 788
789 <style lang="scss" scoped> 789 <style lang="scss" scoped>
790 .app-container { 790 .app-container {
791 - padding: 20px;  
792 - background: #f5f5f5; 791 + padding: 16px;
  792 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  793 + min-height: 100vh;
  794 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
793 } 795 }
794 796
795 .page-header { 797 .page-header {
796 display: flex; 798 display: flex;
797 justify-content: space-between; 799 justify-content: space-between;
798 align-items: flex-start; 800 align-items: flex-start;
799 - margin-bottom: 20px;  
800 - padding: 20px;  
801 - background: #fff;  
802 - border-radius: 8px;  
803 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 801 + margin-bottom: 16px;
  802 + padding: 18px 24px;
  803 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  804 + border-radius: 12px;
  805 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  806 + border: 1px solid rgba(144, 147, 153, 0.2);
  807 + position: relative;
  808 + overflow: hidden;
  809 +
  810 + &::before {
  811 + content: '';
  812 + position: absolute;
  813 + top: 0;
  814 + left: 0;
  815 + right: 0;
  816 + height: 3px;
  817 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  818 + }
804 819
805 .header-left { 820 .header-left {
806 h2 { 821 h2 {
807 margin: 0 0 8px 0; 822 margin: 0 0 8px 0;
808 color: #303133; 823 color: #303133;
809 - font-size: 20px; 824 + font-size: 22px;
810 font-weight: 600; 825 font-weight: 600;
  826 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  827 + -webkit-background-clip: text;
  828 + -webkit-text-fill-color: transparent;
  829 + background-clip: text;
811 } 830 }
812 831
813 .page-desc { 832 .page-desc {
@@ -819,24 +838,137 @@ export default { @@ -819,24 +838,137 @@ export default {
819 838
820 .header-right { 839 .header-right {
821 display: flex; 840 display: flex;
822 - gap: 12px; 841 + gap: 10px;
  842 + flex-wrap: wrap;
  843 +
  844 + .el-button {
  845 + border-radius: 8px;
  846 + padding: 10px 18px;
  847 + font-weight: 500;
  848 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  849 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  850 +
  851 + &:hover {
  852 + transform: translateY(-2px);
  853 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  854 + }
  855 +
  856 + &.el-button--primary {
  857 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  858 + border: none;
  859 +
  860 + &:hover {
  861 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  862 + }
  863 + }
  864 +
  865 + &.el-button--success {
  866 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  867 + border: none;
  868 +
  869 + &:hover {
  870 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  871 + }
  872 + }
  873 +
  874 + &.el-button--warning {
  875 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  876 + border: none;
  877 +
  878 + &:hover {
  879 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  880 + }
  881 + }
  882 +
  883 + &.el-button--info {
  884 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  885 + border: none;
  886 +
  887 + &:hover {
  888 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  889 + }
  890 + }
  891 + }
823 } 892 }
824 } 893 }
825 894
826 .search-container { 895 .search-container {
827 - margin-bottom: 20px;  
828 - padding: 20px;  
829 - background: #fff;  
830 - border-radius: 8px;  
831 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 896 + margin-bottom: 16px;
  897 + padding: 18px 24px;
  898 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  899 + border-radius: 12px;
  900 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  901 + border: 1px solid rgba(144, 147, 153, 0.2);
  902 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  903 +
  904 + &:hover {
  905 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  906 + }
  907 +
  908 + &::v-deep .el-form {
  909 + .el-form-item {
  910 + margin-bottom: 16px;
  911 + }
  912 +
  913 + .el-button {
  914 + border-radius: 8px;
  915 + padding: 10px 20px;
  916 + font-weight: 500;
  917 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  918 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  919 +
  920 + &:hover {
  921 + transform: translateY(-2px);
  922 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  923 + }
  924 +
  925 + &.el-button--primary {
  926 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  927 + border: none;
  928 +
  929 + &:hover {
  930 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  931 + }
  932 + }
  933 + }
  934 +
  935 + .el-input__inner,
  936 + .el-select .el-input__inner {
  937 + border-radius: 8px;
  938 + border: 1px solid rgba(144, 147, 153, 0.3);
  939 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  940 +
  941 + &:focus {
  942 + border-color: #909399;
  943 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  944 + }
  945 + }
  946 + }
832 } 947 }
833 948
834 .table-container { 949 .table-container {
835 margin-bottom: 20px; 950 margin-bottom: 20px;
836 - padding: 20px;  
837 - background: #fff;  
838 - border-radius: 8px;  
839 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 951 + padding: 18px 24px;
  952 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  953 + border-radius: 12px;
  954 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  955 + border: 1px solid rgba(144, 147, 153, 0.2);
  956 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  957 + position: relative;
  958 + overflow: hidden;
  959 + z-index: 1;
  960 +
  961 + &:hover {
  962 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  963 + }
  964 +
  965 + &::v-deep .el-table {
  966 + background-color: #ffffff;
  967 +
  968 + .el-table__body-wrapper {
  969 + background-color: #ffffff;
  970 + }
  971 + }
840 } 972 }
841 973
842 .store-name { 974 .store-name {
@@ -845,32 +977,77 @@ export default { @@ -845,32 +977,77 @@ export default {
845 gap: 6px; 977 gap: 6px;
846 978
847 .store-icon { 979 .store-icon {
848 - color: #409EFF; 980 + color: #606266;
849 font-size: 16px; 981 font-size: 16px;
  982 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  983 + }
  984 +
  985 + &:hover .store-icon {
  986 + transform: scale(1.1) rotate(5deg);
850 } 987 }
851 } 988 }
852 989
853 .highlight { 990 .highlight {
854 - color: #409EFF; 991 + color: #606266;
855 font-weight: 600; 992 font-weight: 600;
856 } 993 }
857 994
858 // 表格样式优化 995 // 表格样式优化
859 ::v-deep .el-table { 996 ::v-deep .el-table {
  997 + border-radius: 8px;
  998 + overflow: hidden;
  999 + border: 1px solid rgba(144, 147, 153, 0.2);
  1000 +
860 .el-table__header-wrapper { 1001 .el-table__header-wrapper {
861 th { 1002 th {
862 - background-color: #f5f7fa;  
863 - color: #606266; 1003 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1004 + color: #303133;
864 font-weight: 600; 1005 font-weight: 600;
  1006 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1007 + padding: 14px 0 !important;
  1008 + height: auto !important;
  1009 + line-height: normal !important;
  1010 + box-sizing: border-box;
865 } 1011 }
866 } 1012 }
867 1013
868 .el-table__body-wrapper { 1014 .el-table__body-wrapper {
  1015 + background-color: #ffffff;
  1016 + z-index: 1;
  1017 +
869 .el-table__row { 1018 .el-table__row {
  1019 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1020 + background-color: #ffffff;
  1021 +
870 &:hover { 1022 &:hover {
871 - background-color: #f5f7fa; 1023 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1024 + transform: translateX(2px);
  1025 + }
  1026 +
  1027 + td {
  1028 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1029 + background-color: #ffffff !important;
  1030 + padding: 12px 0 !important;
  1031 + height: auto !important;
  1032 + line-height: normal !important;
  1033 + box-sizing: border-box;
  1034 + }
  1035 +
  1036 + &.el-table__row--striped {
  1037 + td {
  1038 + background-color: #fafafa !important;
  1039 + }
  1040 +
  1041 + &:hover td {
  1042 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1043 + }
872 } 1044 }
873 } 1045 }
874 } 1046 }
  1047 +
  1048 + .el-table__header-wrapper {
  1049 + background-color: #ffffff;
  1050 + z-index: 2;
  1051 + }
875 } 1052 }
876 </style> 1053 </style>
antis-ncc-admin/src/views/wageManagement/shop.vue
@@ -1189,26 +1189,45 @@ export default { @@ -1189,26 +1189,45 @@ export default {
1189 1189
1190 <style lang="scss" scoped> 1190 <style lang="scss" scoped>
1191 .app-container { 1191 .app-container {
1192 - padding: 20px;  
1193 - background: #f5f5f5; 1192 + padding: 16px;
  1193 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  1194 + min-height: 100vh;
  1195 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1194 } 1196 }
1195 1197
1196 .page-header { 1198 .page-header {
1197 display: flex; 1199 display: flex;
1198 justify-content: space-between; 1200 justify-content: space-between;
1199 align-items: flex-start; 1201 align-items: flex-start;
1200 - margin-bottom: 20px;  
1201 - padding: 20px;  
1202 - background: #fff;  
1203 - border-radius: 8px;  
1204 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1202 + margin-bottom: 16px;
  1203 + padding: 18px 24px;
  1204 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1205 + border-radius: 12px;
  1206 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1207 + border: 1px solid rgba(144, 147, 153, 0.2);
  1208 + position: relative;
  1209 + overflow: hidden;
  1210 +
  1211 + &::before {
  1212 + content: '';
  1213 + position: absolute;
  1214 + top: 0;
  1215 + left: 0;
  1216 + right: 0;
  1217 + height: 3px;
  1218 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1219 + }
1205 1220
1206 .header-left { 1221 .header-left {
1207 h2 { 1222 h2 {
1208 margin: 0 0 8px 0; 1223 margin: 0 0 8px 0;
1209 color: #303133; 1224 color: #303133;
1210 - font-size: 20px; 1225 + font-size: 22px;
1211 font-weight: 600; 1226 font-weight: 600;
  1227 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1228 + -webkit-background-clip: text;
  1229 + -webkit-text-fill-color: transparent;
  1230 + background-clip: text;
1212 } 1231 }
1213 1232
1214 .page-desc { 1233 .page-desc {
@@ -1220,40 +1239,168 @@ export default { @@ -1220,40 +1239,168 @@ export default {
1220 1239
1221 .header-right { 1240 .header-right {
1222 display: flex; 1241 display: flex;
1223 - gap: 12px; 1242 + gap: 10px;
  1243 + flex-wrap: wrap;
  1244 +
  1245 + .el-button {
  1246 + border-radius: 8px;
  1247 + padding: 10px 18px;
  1248 + font-weight: 500;
  1249 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1250 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1251 +
  1252 + &:hover {
  1253 + transform: translateY(-2px);
  1254 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1255 + }
  1256 +
  1257 + &.el-button--primary {
  1258 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1259 + border: none;
  1260 +
  1261 + &:hover {
  1262 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1263 + }
  1264 + }
  1265 +
  1266 + &.el-button--success {
  1267 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1268 + border: none;
  1269 +
  1270 + &:hover {
  1271 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1272 + }
  1273 + }
  1274 +
  1275 + &.el-button--warning {
  1276 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1277 + border: none;
  1278 +
  1279 + &:hover {
  1280 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1281 + }
  1282 + }
  1283 +
  1284 + &.el-button--info {
  1285 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1286 + border: none;
  1287 +
  1288 + &:hover {
  1289 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1290 + }
  1291 + }
  1292 + }
1224 } 1293 }
1225 } 1294 }
1226 1295
1227 .search-container { 1296 .search-container {
1228 - margin-bottom: 20px;  
1229 - padding: 20px;  
1230 - background: #fff;  
1231 - border-radius: 8px;  
1232 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1297 + margin-bottom: 16px;
  1298 + padding: 18px 24px;
  1299 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1300 + border-radius: 12px;
  1301 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1302 + border: 1px solid rgba(144, 147, 153, 0.2);
  1303 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1304 +
  1305 + &:hover {
  1306 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1307 + }
  1308 +
  1309 + &::v-deep .el-form {
  1310 + .el-form-item {
  1311 + margin-bottom: 16px;
  1312 + }
  1313 +
  1314 + .el-button {
  1315 + border-radius: 8px;
  1316 + padding: 10px 20px;
  1317 + font-weight: 500;
  1318 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1319 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1320 +
  1321 + &:hover {
  1322 + transform: translateY(-2px);
  1323 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1324 + }
  1325 +
  1326 + &.el-button--primary {
  1327 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1328 + border: none;
  1329 +
  1330 + &:hover {
  1331 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1332 + }
  1333 + }
  1334 + }
  1335 +
  1336 + .el-input__inner,
  1337 + .el-select .el-input__inner {
  1338 + border-radius: 8px;
  1339 + border: 1px solid rgba(144, 147, 153, 0.3);
  1340 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1341 +
  1342 + &:focus {
  1343 + border-color: #909399;
  1344 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1345 + }
  1346 + }
  1347 + }
1233 } 1348 }
1234 1349
1235 .batch-action-container { 1350 .batch-action-container {
1236 - margin-top: 15px;  
1237 - padding: 12px;  
1238 - background: #f0f9ff;  
1239 - border-radius: 4px; 1351 + margin-top: 16px;
  1352 + padding: 14px 18px;
  1353 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1354 + border-radius: 10px;
  1355 + border: 1px solid rgba(144, 147, 153, 0.3);
1240 display: flex; 1356 display: flex;
1241 align-items: center; 1357 align-items: center;
1242 gap: 12px; 1358 gap: 12px;
  1359 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1243 1360
1244 .selected-count { 1361 .selected-count {
1245 - color: #409EFF;  
1246 - font-weight: 500; 1362 + color: #606266;
  1363 + font-weight: 600;
1247 margin-right: 8px; 1364 margin-right: 8px;
  1365 + font-size: 14px;
  1366 + }
  1367 +
  1368 + .el-button {
  1369 + border-radius: 8px;
  1370 + font-weight: 500;
  1371 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1372 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1373 +
  1374 + &:hover {
  1375 + transform: translateY(-2px);
  1376 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1377 + }
1248 } 1378 }
1249 } 1379 }
1250 1380
1251 .table-container { 1381 .table-container {
1252 margin-bottom: 20px; 1382 margin-bottom: 20px;
1253 - padding: 20px;  
1254 - background: #fff;  
1255 - border-radius: 8px;  
1256 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1383 + padding: 18px 24px;
  1384 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1385 + border-radius: 12px;
  1386 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1387 + border: 1px solid rgba(144, 147, 153, 0.2);
  1388 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1389 + position: relative;
  1390 + overflow: hidden;
  1391 + z-index: 1;
  1392 +
  1393 + &:hover {
  1394 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1395 + }
  1396 +
  1397 + &::v-deep .el-table {
  1398 + background-color: #ffffff;
  1399 +
  1400 + .el-table__body-wrapper {
  1401 + background-color: #ffffff;
  1402 + }
  1403 + }
1257 } 1404 }
1258 1405
1259 .store-name, 1406 .store-name,
@@ -1264,27 +1411,276 @@ export default { @@ -1264,27 +1411,276 @@ export default {
1264 1411
1265 .store-icon, 1412 .store-icon,
1266 .employee-icon { 1413 .employee-icon {
1267 - color: #409EFF; 1414 + color: #606266;
1268 font-size: 16px; 1415 font-size: 16px;
  1416 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1417 + }
  1418 +
  1419 + &:hover .store-icon,
  1420 + &:hover .employee-icon {
  1421 + transform: scale(1.1) rotate(5deg);
1269 } 1422 }
1270 } 1423 }
1271 1424
1272 // 表格样式优化 1425 // 表格样式优化
1273 ::v-deep .el-table { 1426 ::v-deep .el-table {
  1427 + border-radius: 8px;
  1428 + overflow: hidden;
  1429 + border: 1px solid rgba(144, 147, 153, 0.2);
  1430 +
  1431 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1432 + .el-table__column--selection {
  1433 + z-index: 1000 !important;
  1434 + pointer-events: auto !important;
  1435 + position: relative;
  1436 + }
  1437 +
  1438 + .el-checkbox {
  1439 + z-index: 1001 !important;
  1440 + pointer-events: auto !important;
  1441 + position: relative;
  1442 + cursor: pointer;
  1443 + }
  1444 +
  1445 + .el-checkbox__input {
  1446 + z-index: 1001 !important;
  1447 + pointer-events: auto !important;
  1448 + cursor: pointer;
  1449 + }
  1450 +
  1451 + .el-checkbox__inner {
  1452 + z-index: 1001 !important;
  1453 + pointer-events: auto !important;
  1454 + cursor: pointer;
  1455 + }
  1456 +
  1457 + td.el-table__cell--selection,
  1458 + th.el-table__cell--selection {
  1459 + z-index: 1000 !important;
  1460 + pointer-events: auto !important;
  1461 + position: relative;
  1462 + background-color: #ffffff !important;
  1463 + cursor: pointer;
  1464 +
  1465 + .cell {
  1466 + pointer-events: auto !important;
  1467 + z-index: 1001 !important;
  1468 + position: relative;
  1469 + }
  1470 + }
  1471 +
1274 .el-table__header-wrapper { 1472 .el-table__header-wrapper {
1275 th { 1473 th {
1276 - background-color: #f5f7fa;  
1277 - color: #606266; 1474 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1475 + color: #303133;
1278 font-weight: 600; 1476 font-weight: 600;
  1477 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1478 + padding: 14px 0 !important;
  1479 + height: auto !important;
  1480 + line-height: normal !important;
  1481 + box-sizing: border-box;
1279 } 1482 }
1280 } 1483 }
1281 1484
1282 .el-table__body-wrapper { 1485 .el-table__body-wrapper {
  1486 + background-color: #ffffff;
  1487 + z-index: 1;
  1488 +
1283 .el-table__row { 1489 .el-table__row {
  1490 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1491 + background-color: #ffffff;
  1492 +
1284 &:hover { 1493 &:hover {
1285 - background-color: #f5f7fa; 1494 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1495 + transform: translateX(2px);
  1496 + }
  1497 +
  1498 + td {
  1499 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1500 + background-color: #ffffff !important;
  1501 + padding: 12px 0 !important;
  1502 + height: auto !important;
  1503 + line-height: normal !important;
  1504 + box-sizing: border-box;
1286 } 1505 }
  1506 +
  1507 + &.el-table__row--striped {
  1508 + td {
  1509 + background-color: #fafafa !important;
  1510 + }
  1511 +
  1512 + &:hover td {
  1513 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1514 + }
  1515 + }
  1516 + }
  1517 + }
  1518 +
  1519 + .el-table__header-wrapper {
  1520 + background-color: #ffffff;
  1521 + z-index: 2;
  1522 + }
  1523 +
  1524 + // 固定列样式修复
  1525 + .el-table__fixed,
  1526 + .el-table__fixed-right {
  1527 + z-index: 5 !important;
  1528 + background-color: #ffffff;
  1529 + height: 100% !important;
  1530 +
  1531 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1532 + .el-table__column--selection {
  1533 + z-index: 1000 !important;
  1534 + pointer-events: auto !important;
  1535 + position: relative;
  1536 + }
  1537 +
  1538 + // 确保选择列单元格可以点击
  1539 + td.el-table__cell--selection,
  1540 + th.el-table__cell--selection {
  1541 + z-index: 1000 !important;
  1542 + pointer-events: auto !important;
  1543 + position: relative;
  1544 + background-color: #ffffff !important;
  1545 + cursor: pointer;
  1546 +
  1547 + .cell {
  1548 + pointer-events: auto !important;
  1549 + z-index: 1001 !important;
  1550 + position: relative;
  1551 + }
  1552 + }
  1553 +
  1554 + // 确保多选框本身可以点击
  1555 + .el-checkbox {
  1556 + z-index: 1001 !important;
  1557 + position: relative;
  1558 + pointer-events: auto !important;
  1559 + cursor: pointer;
  1560 + }
  1561 +
  1562 + .el-checkbox__input {
  1563 + z-index: 1001 !important;
  1564 + pointer-events: auto !important;
  1565 + cursor: pointer;
1287 } 1566 }
  1567 +
  1568 + .el-checkbox__inner {
  1569 + z-index: 1001 !important;
  1570 + pointer-events: auto !important;
  1571 + cursor: pointer;
  1572 + }
  1573 +
  1574 + &::before {
  1575 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1576 + z-index: 4 !important;
  1577 + height: 100% !important;
  1578 + pointer-events: none !important;
  1579 + }
  1580 +
  1581 + .el-table__fixed-header-wrapper {
  1582 + height: auto !important;
  1583 + background-color: #ffffff;
  1584 +
  1585 + th {
  1586 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1587 + z-index: 6 !important;
  1588 + padding: 14px 0 !important;
  1589 + height: auto !important;
  1590 + line-height: normal !important;
  1591 +
  1592 + // 选择列header需要最高z-index
  1593 + &.el-table__cell--selection {
  1594 + z-index: 1000 !important;
  1595 + pointer-events: auto !important;
  1596 + }
  1597 + }
  1598 + }
  1599 +
  1600 + .el-table__fixed-body-wrapper {
  1601 + background-color: #ffffff;
  1602 + height: auto !important;
  1603 + max-height: 100% !important;
  1604 + overflow-y: auto !important;
  1605 +
  1606 + td {
  1607 + background-color: #ffffff !important;
  1608 + z-index: 6 !important;
  1609 + padding: 12px 0 !important;
  1610 + height: auto !important;
  1611 + line-height: normal !important;
  1612 +
  1613 + // 选择列cell需要最高z-index
  1614 + &.el-table__cell--selection {
  1615 + z-index: 1000 !important;
  1616 + pointer-events: auto !important;
  1617 + }
  1618 + }
  1619 +
  1620 + .el-table__row {
  1621 + height: auto !important;
  1622 +
  1623 + &.el-table__row--striped {
  1624 + td {
  1625 + background-color: #fafafa !important;
  1626 + }
  1627 + }
  1628 + }
  1629 + }
  1630 +
  1631 + th {
  1632 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1633 + z-index: 6 !important;
  1634 + padding: 14px 0 !important;
  1635 + height: auto !important;
  1636 + line-height: normal !important;
  1637 +
  1638 + // 选择列header需要最高z-index
  1639 + &.el-table__cell--selection {
  1640 + z-index: 1000 !important;
  1641 + pointer-events: auto !important;
  1642 + }
  1643 + }
  1644 +
  1645 + td {
  1646 + background-color: #ffffff !important;
  1647 + z-index: 6 !important;
  1648 + padding: 12px 0 !important;
  1649 + height: auto !important;
  1650 + line-height: normal !important;
  1651 +
  1652 + // 选择列cell需要最高z-index
  1653 + &.el-table__cell--selection {
  1654 + z-index: 1000 !important;
  1655 + pointer-events: auto !important;
  1656 + }
  1657 + }
  1658 + }
  1659 +
  1660 + // 固定列补丁
  1661 + .el-table__fixed-right-patch {
  1662 + background-color: #ffffff;
  1663 + z-index: 4 !important;
  1664 + height: 100% !important;
  1665 + pointer-events: none !important;
  1666 + }
  1667 +
  1668 + // 确保固定列和主表格的header高度一致
  1669 + .el-table__header-wrapper th,
  1670 + .el-table__fixed-header-wrapper th,
  1671 + .el-table__fixed-right-header-wrapper th {
  1672 + padding: 14px 0 !important;
  1673 + height: auto !important;
  1674 + line-height: normal !important;
  1675 + }
  1676 +
  1677 + // 确保固定列和主表格的body行高一致
  1678 + .el-table__body-wrapper td,
  1679 + .el-table__fixed-body-wrapper td,
  1680 + .el-table__fixed-right-body-wrapper td {
  1681 + padding: 12px 0 !important;
  1682 + height: auto !important;
  1683 + line-height: normal !important;
1288 } 1684 }
1289 } 1685 }
1290 </style> 1686 </style>
antis-ncc-admin/src/views/wageManagement/tech-general-managers.vue
@@ -1129,26 +1129,45 @@ export default { @@ -1129,26 +1129,45 @@ export default {
1129 1129
1130 <style lang="scss" scoped> 1130 <style lang="scss" scoped>
1131 .app-container { 1131 .app-container {
1132 - padding: 20px;  
1133 - background: #f5f5f5; 1132 + padding: 16px;
  1133 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  1134 + min-height: 100vh;
  1135 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1134 } 1136 }
1135 1137
1136 .page-header { 1138 .page-header {
1137 display: flex; 1139 display: flex;
1138 justify-content: space-between; 1140 justify-content: space-between;
1139 align-items: flex-start; 1141 align-items: flex-start;
1140 - margin-bottom: 20px;  
1141 - padding: 20px;  
1142 - background: #fff;  
1143 - border-radius: 8px;  
1144 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1142 + margin-bottom: 16px;
  1143 + padding: 18px 24px;
  1144 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1145 + border-radius: 12px;
  1146 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1147 + border: 1px solid rgba(144, 147, 153, 0.2);
  1148 + position: relative;
  1149 + overflow: hidden;
  1150 +
  1151 + &::before {
  1152 + content: '';
  1153 + position: absolute;
  1154 + top: 0;
  1155 + left: 0;
  1156 + right: 0;
  1157 + height: 3px;
  1158 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  1159 + }
1145 1160
1146 .header-left { 1161 .header-left {
1147 h2 { 1162 h2 {
1148 margin: 0 0 8px 0; 1163 margin: 0 0 8px 0;
1149 color: #303133; 1164 color: #303133;
1150 - font-size: 20px; 1165 + font-size: 22px;
1151 font-weight: 600; 1166 font-weight: 600;
  1167 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  1168 + -webkit-background-clip: text;
  1169 + -webkit-text-fill-color: transparent;
  1170 + background-clip: text;
1152 } 1171 }
1153 1172
1154 .page-desc { 1173 .page-desc {
@@ -1160,40 +1179,168 @@ export default { @@ -1160,40 +1179,168 @@ export default {
1160 1179
1161 .header-right { 1180 .header-right {
1162 display: flex; 1181 display: flex;
1163 - gap: 12px; 1182 + gap: 10px;
  1183 + flex-wrap: wrap;
  1184 +
  1185 + .el-button {
  1186 + border-radius: 8px;
  1187 + padding: 10px 18px;
  1188 + font-weight: 500;
  1189 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1190 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1191 +
  1192 + &:hover {
  1193 + transform: translateY(-2px);
  1194 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1195 + }
  1196 +
  1197 + &.el-button--primary {
  1198 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1199 + border: none;
  1200 +
  1201 + &:hover {
  1202 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1203 + }
  1204 + }
  1205 +
  1206 + &.el-button--success {
  1207 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  1208 + border: none;
  1209 +
  1210 + &:hover {
  1211 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  1212 + }
  1213 + }
  1214 +
  1215 + &.el-button--warning {
  1216 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  1217 + border: none;
  1218 +
  1219 + &:hover {
  1220 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  1221 + }
  1222 + }
  1223 +
  1224 + &.el-button--info {
  1225 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  1226 + border: none;
  1227 +
  1228 + &:hover {
  1229 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  1230 + }
  1231 + }
  1232 + }
1164 } 1233 }
1165 } 1234 }
1166 1235
1167 .search-container { 1236 .search-container {
1168 - margin-bottom: 20px;  
1169 - padding: 20px;  
1170 - background: #fff;  
1171 - border-radius: 8px;  
1172 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1237 + margin-bottom: 16px;
  1238 + padding: 18px 24px;
  1239 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1240 + border-radius: 12px;
  1241 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1242 + border: 1px solid rgba(144, 147, 153, 0.2);
  1243 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1244 +
  1245 + &:hover {
  1246 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1247 + }
  1248 +
  1249 + &::v-deep .el-form {
  1250 + .el-form-item {
  1251 + margin-bottom: 16px;
  1252 + }
  1253 +
  1254 + .el-button {
  1255 + border-radius: 8px;
  1256 + padding: 10px 20px;
  1257 + font-weight: 500;
  1258 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1259 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  1260 +
  1261 + &:hover {
  1262 + transform: translateY(-2px);
  1263 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  1264 + }
  1265 +
  1266 + &.el-button--primary {
  1267 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  1268 + border: none;
  1269 +
  1270 + &:hover {
  1271 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  1272 + }
  1273 + }
  1274 + }
  1275 +
  1276 + .el-input__inner,
  1277 + .el-select .el-input__inner {
  1278 + border-radius: 8px;
  1279 + border: 1px solid rgba(144, 147, 153, 0.3);
  1280 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1281 +
  1282 + &:focus {
  1283 + border-color: #909399;
  1284 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  1285 + }
  1286 + }
  1287 + }
1173 } 1288 }
1174 1289
1175 .batch-action-container { 1290 .batch-action-container {
1176 - margin-top: 15px;  
1177 - padding: 12px;  
1178 - background: #f0f9ff;  
1179 - border-radius: 4px; 1291 + margin-top: 16px;
  1292 + padding: 14px 18px;
  1293 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1294 + border-radius: 10px;
  1295 + border: 1px solid rgba(144, 147, 153, 0.3);
1180 display: flex; 1296 display: flex;
1181 align-items: center; 1297 align-items: center;
1182 gap: 12px; 1298 gap: 12px;
  1299 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1183 1300
1184 .selected-count { 1301 .selected-count {
1185 - color: #409EFF;  
1186 - font-weight: 500; 1302 + color: #606266;
  1303 + font-weight: 600;
1187 margin-right: 8px; 1304 margin-right: 8px;
  1305 + font-size: 14px;
  1306 + }
  1307 +
  1308 + .el-button {
  1309 + border-radius: 8px;
  1310 + font-weight: 500;
  1311 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1312 + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
  1313 +
  1314 + &:hover {
  1315 + transform: translateY(-2px);
  1316 + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.12);
  1317 + }
1188 } 1318 }
1189 } 1319 }
1190 1320
1191 .table-container { 1321 .table-container {
1192 margin-bottom: 20px; 1322 margin-bottom: 20px;
1193 - padding: 20px;  
1194 - background: #fff;  
1195 - border-radius: 8px;  
1196 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 1323 + padding: 18px 24px;
  1324 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  1325 + border-radius: 12px;
  1326 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  1327 + border: 1px solid rgba(144, 147, 153, 0.2);
  1328 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1329 + position: relative;
  1330 + overflow: hidden;
  1331 + z-index: 1;
  1332 +
  1333 + &:hover {
  1334 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  1335 + }
  1336 +
  1337 + &::v-deep .el-table {
  1338 + background-color: #ffffff;
  1339 +
  1340 + .el-table__body-wrapper {
  1341 + background-color: #ffffff;
  1342 + }
  1343 + }
1197 } 1344 }
1198 1345
1199 .employee-name { 1346 .employee-name {
@@ -1202,27 +1349,275 @@ export default { @@ -1202,27 +1349,275 @@ export default {
1202 gap: 6px; 1349 gap: 6px;
1203 1350
1204 .employee-icon { 1351 .employee-icon {
1205 - color: #409EFF; 1352 + color: #606266;
1206 font-size: 16px; 1353 font-size: 16px;
  1354 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1355 + }
  1356 +
  1357 + &:hover .employee-icon {
  1358 + transform: scale(1.1) rotate(5deg);
1207 } 1359 }
1208 } 1360 }
1209 1361
1210 // 表格样式优化 1362 // 表格样式优化
1211 ::v-deep .el-table { 1363 ::v-deep .el-table {
  1364 + border-radius: 8px;
  1365 + overflow: hidden;
  1366 + border: 1px solid rgba(144, 147, 153, 0.2);
  1367 +
  1368 + // 确保多选框列可以点击 - 全局设置,最高优先级
  1369 + .el-table__column--selection {
  1370 + z-index: 1000 !important;
  1371 + pointer-events: auto !important;
  1372 + position: relative;
  1373 + }
  1374 +
  1375 + .el-checkbox {
  1376 + z-index: 1001 !important;
  1377 + pointer-events: auto !important;
  1378 + position: relative;
  1379 + cursor: pointer;
  1380 + }
  1381 +
  1382 + .el-checkbox__input {
  1383 + z-index: 1001 !important;
  1384 + pointer-events: auto !important;
  1385 + cursor: pointer;
  1386 + }
  1387 +
  1388 + .el-checkbox__inner {
  1389 + z-index: 1001 !important;
  1390 + pointer-events: auto !important;
  1391 + cursor: pointer;
  1392 + }
  1393 +
  1394 + td.el-table__cell--selection,
  1395 + th.el-table__cell--selection {
  1396 + z-index: 1000 !important;
  1397 + pointer-events: auto !important;
  1398 + position: relative;
  1399 + background-color: #ffffff !important;
  1400 + cursor: pointer;
  1401 +
  1402 + .cell {
  1403 + pointer-events: auto !important;
  1404 + z-index: 1001 !important;
  1405 + position: relative;
  1406 + }
  1407 + }
  1408 +
1212 .el-table__header-wrapper { 1409 .el-table__header-wrapper {
1213 th { 1410 th {
1214 - background-color: #f5f7fa;  
1215 - color: #606266; 1411 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1412 + color: #303133;
1216 font-weight: 600; 1413 font-weight: 600;
  1414 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  1415 + padding: 14px 0 !important;
  1416 + height: auto !important;
  1417 + line-height: normal !important;
  1418 + box-sizing: border-box;
1217 } 1419 }
1218 } 1420 }
1219 1421
1220 .el-table__body-wrapper { 1422 .el-table__body-wrapper {
  1423 + background-color: #ffffff;
  1424 + z-index: 1;
  1425 +
1221 .el-table__row { 1426 .el-table__row {
  1427 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1428 + background-color: #ffffff;
  1429 +
1222 &:hover { 1430 &:hover {
1223 - background-color: #f5f7fa; 1431 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1432 + transform: translateX(2px);
  1433 + }
  1434 +
  1435 + td {
  1436 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  1437 + background-color: #ffffff !important;
  1438 + padding: 12px 0 !important;
  1439 + height: auto !important;
  1440 + line-height: normal !important;
  1441 + box-sizing: border-box;
1224 } 1442 }
  1443 +
  1444 + &.el-table__row--striped {
  1445 + td {
  1446 + background-color: #fafafa !important;
  1447 + }
  1448 +
  1449 + &:hover td {
  1450 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  1451 + }
  1452 + }
  1453 + }
  1454 + }
  1455 +
  1456 + .el-table__header-wrapper {
  1457 + background-color: #ffffff;
  1458 + z-index: 2;
  1459 + }
  1460 +
  1461 + // 固定列样式修复
  1462 + .el-table__fixed,
  1463 + .el-table__fixed-right {
  1464 + z-index: 5 !important;
  1465 + background-color: #ffffff;
  1466 + height: 100% !important;
  1467 +
  1468 + // 确保多选框可以点击 - 选择列需要最高的z-index
  1469 + .el-table__column--selection {
  1470 + z-index: 1000 !important;
  1471 + pointer-events: auto !important;
  1472 + position: relative;
  1473 + }
  1474 +
  1475 + // 确保选择列单元格可以点击
  1476 + td.el-table__cell--selection,
  1477 + th.el-table__cell--selection {
  1478 + z-index: 1000 !important;
  1479 + pointer-events: auto !important;
  1480 + position: relative;
  1481 + background-color: #ffffff !important;
  1482 + cursor: pointer;
  1483 +
  1484 + .cell {
  1485 + pointer-events: auto !important;
  1486 + z-index: 1001 !important;
  1487 + position: relative;
  1488 + }
  1489 + }
  1490 +
  1491 + // 确保多选框本身可以点击
  1492 + .el-checkbox {
  1493 + z-index: 1001 !important;
  1494 + position: relative;
  1495 + pointer-events: auto !important;
  1496 + cursor: pointer;
  1497 + }
  1498 +
  1499 + .el-checkbox__input {
  1500 + z-index: 1001 !important;
  1501 + pointer-events: auto !important;
  1502 + cursor: pointer;
1225 } 1503 }
  1504 +
  1505 + .el-checkbox__inner {
  1506 + z-index: 1001 !important;
  1507 + pointer-events: auto !important;
  1508 + cursor: pointer;
  1509 + }
  1510 +
  1511 + &::before {
  1512 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  1513 + z-index: 4 !important;
  1514 + height: 100% !important;
  1515 + pointer-events: none !important;
  1516 + }
  1517 +
  1518 + .el-table__fixed-header-wrapper {
  1519 + height: auto !important;
  1520 + background-color: #ffffff;
  1521 +
  1522 + th {
  1523 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1524 + z-index: 6 !important;
  1525 + padding: 14px 0 !important;
  1526 + height: auto !important;
  1527 + line-height: normal !important;
  1528 +
  1529 + // 选择列header需要最高z-index
  1530 + &.el-table__cell--selection {
  1531 + z-index: 1000 !important;
  1532 + pointer-events: auto !important;
  1533 + }
  1534 + }
  1535 + }
  1536 +
  1537 + .el-table__fixed-body-wrapper {
  1538 + background-color: #ffffff;
  1539 + height: auto !important;
  1540 + max-height: 100% !important;
  1541 + overflow-y: auto !important;
  1542 +
  1543 + td {
  1544 + background-color: #ffffff !important;
  1545 + z-index: 6 !important;
  1546 + padding: 12px 0 !important;
  1547 + height: auto !important;
  1548 + line-height: normal !important;
  1549 +
  1550 + // 选择列cell需要最高z-index
  1551 + &.el-table__cell--selection {
  1552 + z-index: 1000 !important;
  1553 + pointer-events: auto !important;
  1554 + }
  1555 + }
  1556 +
  1557 + .el-table__row {
  1558 + height: auto !important;
  1559 +
  1560 + &.el-table__row--striped {
  1561 + td {
  1562 + background-color: #fafafa !important;
  1563 + }
  1564 + }
  1565 + }
  1566 + }
  1567 +
  1568 + th {
  1569 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%) !important;
  1570 + z-index: 6 !important;
  1571 + padding: 14px 0 !important;
  1572 + height: auto !important;
  1573 + line-height: normal !important;
  1574 +
  1575 + // 选择列header需要最高z-index
  1576 + &.el-table__cell--selection {
  1577 + z-index: 1000 !important;
  1578 + pointer-events: auto !important;
  1579 + }
  1580 + }
  1581 +
  1582 + td {
  1583 + background-color: #ffffff !important;
  1584 + z-index: 6 !important;
  1585 + padding: 12px 0 !important;
  1586 + height: auto !important;
  1587 + line-height: normal !important;
  1588 +
  1589 + // 选择列cell需要最高z-index
  1590 + &.el-table__cell--selection {
  1591 + z-index: 1000 !important;
  1592 + pointer-events: auto !important;
  1593 + }
  1594 + }
  1595 + }
  1596 +
  1597 + // 固定列补丁
  1598 + .el-table__fixed-right-patch {
  1599 + background-color: #ffffff;
  1600 + z-index: 4 !important;
  1601 + height: 100% !important;
  1602 + pointer-events: none !important;
  1603 + }
  1604 +
  1605 + // 确保固定列和主表格的header高度一致
  1606 + .el-table__header-wrapper th,
  1607 + .el-table__fixed-header-wrapper th,
  1608 + .el-table__fixed-right-header-wrapper th {
  1609 + padding: 14px 0 !important;
  1610 + height: auto !important;
  1611 + line-height: normal !important;
  1612 + }
  1613 +
  1614 + // 确保固定列和主表格的body行高一致
  1615 + .el-table__body-wrapper td,
  1616 + .el-table__fixed-body-wrapper td,
  1617 + .el-table__fixed-right-body-wrapper td {
  1618 + padding: 12px 0 !important;
  1619 + height: auto !important;
  1620 + line-height: normal !important;
1226 } 1621 }
1227 } 1622 }
1228 </style> 1623 </style>
antis-ncc-admin/src/views/wageManagement/tech-stock.vue
@@ -499,26 +499,45 @@ export default { @@ -499,26 +499,45 @@ export default {
499 499
500 <style lang="scss" scoped> 500 <style lang="scss" scoped>
501 .app-container { 501 .app-container {
502 - padding: 20px;  
503 - background: #f5f5f5; 502 + padding: 16px;
  503 + background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf1 50%, #f0f4f8 100%);
  504 + min-height: 100vh;
  505 + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
504 } 506 }
505 507
506 .page-header { 508 .page-header {
507 display: flex; 509 display: flex;
508 justify-content: space-between; 510 justify-content: space-between;
509 align-items: flex-start; 511 align-items: flex-start;
510 - margin-bottom: 20px;  
511 - padding: 20px;  
512 - background: #fff;  
513 - border-radius: 8px;  
514 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 512 + margin-bottom: 16px;
  513 + padding: 18px 24px;
  514 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  515 + border-radius: 12px;
  516 + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  517 + border: 1px solid rgba(144, 147, 153, 0.2);
  518 + position: relative;
  519 + overflow: hidden;
  520 +
  521 + &::before {
  522 + content: '';
  523 + position: absolute;
  524 + top: 0;
  525 + left: 0;
  526 + right: 0;
  527 + height: 3px;
  528 + background: linear-gradient(90deg, #606266 0%, #909399 50%, #606266 100%);
  529 + }
515 530
516 .header-left { 531 .header-left {
517 h2 { 532 h2 {
518 margin: 0 0 8px 0; 533 margin: 0 0 8px 0;
519 color: #303133; 534 color: #303133;
520 - font-size: 20px; 535 + font-size: 22px;
521 font-weight: 600; 536 font-weight: 600;
  537 + background: linear-gradient(135deg, #303133 0%, #606266 100%);
  538 + -webkit-background-clip: text;
  539 + -webkit-text-fill-color: transparent;
  540 + background-clip: text;
522 } 541 }
523 542
524 .page-desc { 543 .page-desc {
@@ -530,24 +549,137 @@ export default { @@ -530,24 +549,137 @@ export default {
530 549
531 .header-right { 550 .header-right {
532 display: flex; 551 display: flex;
533 - gap: 12px; 552 + gap: 10px;
  553 + flex-wrap: wrap;
  554 +
  555 + .el-button {
  556 + border-radius: 8px;
  557 + padding: 10px 18px;
  558 + font-weight: 500;
  559 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  560 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  561 +
  562 + &:hover {
  563 + transform: translateY(-2px);
  564 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  565 + }
  566 +
  567 + &.el-button--primary {
  568 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  569 + border: none;
  570 +
  571 + &:hover {
  572 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  573 + }
  574 + }
  575 +
  576 + &.el-button--success {
  577 + background: linear-gradient(135deg, #67C23A 0%, #85ce61 100%);
  578 + border: none;
  579 +
  580 + &:hover {
  581 + background: linear-gradient(135deg, #85ce61 0%, #67C23A 100%);
  582 + }
  583 + }
  584 +
  585 + &.el-button--warning {
  586 + background: linear-gradient(135deg, #E6A23C 0%, #f0b45a 100%);
  587 + border: none;
  588 +
  589 + &:hover {
  590 + background: linear-gradient(135deg, #f0b45a 0%, #E6A23C 100%);
  591 + }
  592 + }
  593 +
  594 + &.el-button--info {
  595 + background: linear-gradient(135deg, #909399 0%, #a6a9ad 100%);
  596 + border: none;
  597 +
  598 + &:hover {
  599 + background: linear-gradient(135deg, #a6a9ad 0%, #909399 100%);
  600 + }
  601 + }
  602 + }
534 } 603 }
535 } 604 }
536 605
537 .search-container { 606 .search-container {
538 - margin-bottom: 20px;  
539 - padding: 20px;  
540 - background: #fff;  
541 - border-radius: 8px;  
542 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 607 + margin-bottom: 16px;
  608 + padding: 18px 24px;
  609 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  610 + border-radius: 12px;
  611 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  612 + border: 1px solid rgba(144, 147, 153, 0.2);
  613 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  614 +
  615 + &:hover {
  616 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  617 + }
  618 +
  619 + &::v-deep .el-form {
  620 + .el-form-item {
  621 + margin-bottom: 16px;
  622 + }
  623 +
  624 + .el-button {
  625 + border-radius: 8px;
  626 + padding: 10px 20px;
  627 + font-weight: 500;
  628 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  629 + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  630 +
  631 + &:hover {
  632 + transform: translateY(-2px);
  633 + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
  634 + }
  635 +
  636 + &.el-button--primary {
  637 + background: linear-gradient(135deg, #606266 0%, #909399 100%);
  638 + border: none;
  639 +
  640 + &:hover {
  641 + background: linear-gradient(135deg, #909399 0%, #606266 100%);
  642 + }
  643 + }
  644 + }
  645 +
  646 + .el-input__inner,
  647 + .el-select .el-input__inner {
  648 + border-radius: 8px;
  649 + border: 1px solid rgba(144, 147, 153, 0.3);
  650 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  651 +
  652 + &:focus {
  653 + border-color: #909399;
  654 + box-shadow: 0 0 0 2px rgba(144, 147, 153, 0.15);
  655 + }
  656 + }
  657 + }
543 } 658 }
544 659
545 .table-container { 660 .table-container {
546 margin-bottom: 20px; 661 margin-bottom: 20px;
547 - padding: 20px;  
548 - background: #fff;  
549 - border-radius: 8px;  
550 - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 662 + padding: 18px 24px;
  663 + background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
  664 + border-radius: 12px;
  665 + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08), 0 2px 8px rgba(0, 0, 0, 0.04);
  666 + border: 1px solid rgba(144, 147, 153, 0.2);
  667 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  668 + position: relative;
  669 + overflow: hidden;
  670 + z-index: 1;
  671 +
  672 + &:hover {
  673 + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.06);
  674 + }
  675 +
  676 + &::v-deep .el-table {
  677 + background-color: #ffffff;
  678 +
  679 + .el-table__body-wrapper {
  680 + background-color: #ffffff;
  681 + }
  682 + }
551 } 683 }
552 684
553 .department-name { 685 .department-name {
@@ -556,32 +688,77 @@ export default { @@ -556,32 +688,77 @@ export default {
556 gap: 6px; 688 gap: 6px;
557 689
558 .department-icon { 690 .department-icon {
559 - color: #409EFF; 691 + color: #606266;
560 font-size: 16px; 692 font-size: 16px;
  693 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  694 + }
  695 +
  696 + &:hover .department-icon {
  697 + transform: scale(1.1) rotate(5deg);
561 } 698 }
562 } 699 }
563 700
564 .highlight { 701 .highlight {
565 - color: #409EFF; 702 + color: #606266;
566 font-weight: 600; 703 font-weight: 600;
567 } 704 }
568 705
569 // 表格样式优化 706 // 表格样式优化
570 ::v-deep .el-table { 707 ::v-deep .el-table {
  708 + border-radius: 8px;
  709 + overflow: hidden;
  710 + border: 1px solid rgba(144, 147, 153, 0.2);
  711 +
571 .el-table__header-wrapper { 712 .el-table__header-wrapper {
572 th { 713 th {
573 - background-color: #f5f7fa;  
574 - color: #606266; 714 + background: linear-gradient(135deg, rgba(144, 147, 153, 0.08) 0%, rgba(144, 147, 153, 0.05) 100%);
  715 + color: #303133;
575 font-weight: 600; 716 font-weight: 600;
  717 + border-bottom: 2px solid rgba(144, 147, 153, 0.2);
  718 + padding: 14px 0 !important;
  719 + height: auto !important;
  720 + line-height: normal !important;
  721 + box-sizing: border-box;
576 } 722 }
577 } 723 }
578 724
579 .el-table__body-wrapper { 725 .el-table__body-wrapper {
  726 + background-color: #ffffff;
  727 + z-index: 1;
  728 +
580 .el-table__row { 729 .el-table__row {
  730 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  731 + background-color: #ffffff;
  732 +
581 &:hover { 733 &:hover {
582 - background-color: #f5f7fa; 734 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  735 + transform: translateX(2px);
  736 + }
  737 +
  738 + td {
  739 + border-bottom: 1px solid rgba(144, 147, 153, 0.15);
  740 + background-color: #ffffff !important;
  741 + padding: 12px 0 !important;
  742 + height: auto !important;
  743 + line-height: normal !important;
  744 + box-sizing: border-box;
  745 + }
  746 +
  747 + &.el-table__row--striped {
  748 + td {
  749 + background-color: #fafafa !important;
  750 + }
  751 +
  752 + &:hover td {
  753 + background: linear-gradient(90deg, rgba(144, 147, 153, 0.05) 0%, rgba(144, 147, 153, 0.02) 100%) !important;
  754 + }
583 } 755 }
584 } 756 }
585 } 757 }
  758 +
  759 + .el-table__header-wrapper {
  760 + background-color: #ffffff;
  761 + z-index: 2;
  762 + }
586 } 763 }
587 </style> 764 </style>