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 7 <p class="page-desc">管理店助工资数据,包括业绩、提成、阶段奖励、补贴、扣款等信息</p>
8 8 </div>
9 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 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 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 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 22 </el-button>
42 23 </div>
... ... @@ -46,29 +27,12 @@
46 27 <div class="search-container">
47 28 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px">
48 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 32 </el-form-item>
58 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 36 </el-select>
73 37 </el-form-item>
74 38 <el-form-item>
... ... @@ -79,30 +43,13 @@
79 43 <!-- 批量操作区域 -->
80 44 <div class="batch-action-container" v-if="selectedRows.length > 0">
81 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 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 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 54 </el-button>
108 55 </div>
... ... @@ -110,16 +57,8 @@
110 57  
111 58 <!-- 数据表格 -->
112 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 63 <el-table-column type="selection" width="55" align="center" fixed="left" />
125 64 <!-- 基本信息 -->
... ... @@ -358,32 +297,15 @@
358 297 <!-- 操作列 -->
359 298 <el-table-column label="操作" width="250" align="center" fixed="right">
360 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 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 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 310 </el-button>
389 311 </template>
... ... @@ -392,74 +314,38 @@
392 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 319 <el-form label-width="100px" label-position="right">
403 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 323 </el-form-item>
413 324 </el-form>
414 325 <div slot="footer" class="dialog-footer">
415 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 329 </el-button>
423 330 </div>
424 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 342 <i class="el-icon-upload"></i>
452 343 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
453 344 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div>
454 345 </el-upload>
455 346 <div slot="footer" class="dialog-footer">
456 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 350 </el-button>
465 351 </div>
... ... @@ -538,7 +424,7 @@ export default {
538 424 // 处理年月:从month选择器中提取年份和月份
539 425 let year = ''
540 426 let month = ''
541   -
  427 +
542 428 if (this.queryParams.month && this.queryParams.month.length === 6) {
543 429 // yyyyMM 格式,如 202512
544 430 year = this.queryParams.month.substring(0, 4)
... ... @@ -546,8 +432,8 @@ export default {
546 432 } else if (this.queryParams.year && this.queryParams.month) {
547 433 // 分别选择年份和月份
548 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 437 : this.queryParams.month
552 438 } else {
553 439 // 使用默认值(当前年月)
... ... @@ -576,7 +462,7 @@ export default {
576 462 }
577 463 } catch (error) {
578 464 console.error('获取店助工资列表失败:', error)
579   - this.$message.error('获取数据失败'+error)
  465 + this.$message.error('获取数据失败' + error)
580 466 } finally {
581 467 this.loading = false
582 468 }
... ... @@ -801,11 +687,11 @@ export default {
801 687  
802 688 // 生成文件名
803 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 695 String(now.getSeconds()).padStart(2, '0')
810 696 const fileName = `店助工资_${timestamp}.xlsx`
811 697  
... ... @@ -1045,26 +931,45 @@ export default {
1045 931  
1046 932 <style lang="scss" scoped>
1047 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 940 .page-header {
1053 941 display: flex;
1054 942 justify-content: space-between;
1055 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 963 .header-left {
1063 964 h2 {
1064 965 margin: 0 0 8px 0;
1065 966 color: #303133;
1066   - font-size: 20px;
  967 + font-size: 22px;
1067 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 975 .page-desc {
... ... @@ -1076,40 +981,168 @@ export default {
1076 981  
1077 982 .header-right {
1078 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 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 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 1098 display: flex;
1097 1099 align-items: center;
1098 1100 gap: 12px;
  1101 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1099 1102  
1100 1103 .selected-count {
1101   - color: #409EFF;
1102   - font-weight: 500;
  1104 + color: #606266;
  1105 + font-weight: 600;
1103 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 1123 .table-container {
1108 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 1148 .store-name,
... ... @@ -1120,28 +1153,276 @@ export default {
1120 1153  
1121 1154 .store-icon,
1122 1155 .employee-icon {
1123   - color: #409EFF;
  1156 + color: #606266;
1124 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 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 1214 .el-table__header-wrapper {
1131 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 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 1227 .el-table__body-wrapper {
  1228 + background-color: #ffffff;
  1229 + z-index: 1;
  1230 +
1139 1231 .el-table__row {
  1232 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1233 + background-color: #ffffff;
  1234 +
1140 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 1428 </style>
1147   -
... ...
antis-ncc-admin/src/views/wageManagement/business-unit-managers.vue
... ... @@ -7,36 +7,17 @@
7 7 <p class="page-desc">管理事业部总经理/经理工资数据,包括提成、补贴、扣款等信息</p>
8 8 </div>
9 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 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 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 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 22 </el-button>
42 23 </div>
... ... @@ -46,22 +27,11 @@
46 27 <div class="search-container">
47 28 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px">
48 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 32 </el-form-item>
58 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 35 <el-option label="全部" :value="null" />
66 36 <el-option label="经理" :value="0" />
67 37 <el-option label="总经理" :value="1" />
... ... @@ -83,30 +53,13 @@
83 53 <!-- 批量操作区域 -->
84 54 <div class="batch-action-container" v-if="selectedRows.length > 0">
85 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 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 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 64 </el-button>
112 65 </div>
... ... @@ -114,16 +67,8 @@
114 67  
115 68 <!-- 数据表格 -->
116 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 73 <el-table-column type="selection" width="55" align="center" fixed="left" />
129 74 <!-- 基本信息 -->
... ... @@ -329,41 +274,19 @@
329 274 <!-- 操作列 -->
330 275 <el-table-column label="操作" width="350" align="center" fixed="right">
331 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 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 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 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 291 </el-button>
369 292 </template>
... ... @@ -372,51 +295,29 @@
372 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 300 <el-form label-width="100px" label-position="right">
383 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 304 </el-form-item>
393 305 </el-form>
394 306 <div slot="footer" class="dialog-footer">
395 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 310 </el-button>
403 311 </div>
404 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 321 <el-table :data="storePerformanceDetailList" border stripe max-height="500">
421 322 <el-table-column prop="StoreName" label="门店名称" width="150" align="center" fixed="left" />
422 323 <el-table-column prop="StoreLifeline" label="门店生命线" width="120" align="center">
... ... @@ -463,35 +364,17 @@
463 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 371 <i class="el-icon-upload"></i>
484 372 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
485 373 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div>
486 374 </el-upload>
487 375 <div slot="footer" class="dialog-footer">
488 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 379 </el-button>
497 380 </div>
... ... @@ -559,7 +442,7 @@ export default {
559 442 // 处理年月:从month选择器中提取年份和月份
560 443 let year = ''
561 444 let month = ''
562   -
  445 +
563 446 if (this.queryParams.month && this.queryParams.month.length === 6) {
564 447 // yyyyMM 格式,如 202512
565 448 year = this.queryParams.month.substring(0, 4)
... ... @@ -567,8 +450,8 @@ export default {
567 450 } else if (this.queryParams.year && this.queryParams.month) {
568 451 // 分别选择年份和月份
569 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 455 : this.queryParams.month
573 456 } else {
574 457 // 使用默认值(当前年月)
... ... @@ -1056,11 +939,11 @@ export default {
1056 939  
1057 940 // 生成文件名
1058 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 947 String(now.getSeconds()).padStart(2, '0')
1065 948 const fileName = `事业部总经理经理工资_${timestamp}.xlsx`
1066 949  
... ... @@ -1081,26 +964,45 @@ export default {
1081 964  
1082 965 <style lang="scss" scoped>
1083 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 973 .page-header {
1089 974 display: flex;
1090 975 justify-content: space-between;
1091 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 996 .header-left {
1099 997 h2 {
1100 998 margin: 0 0 8px 0;
1101 999 color: #303133;
1102   - font-size: 20px;
  1000 + font-size: 22px;
1103 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 1008 .page-desc {
... ... @@ -1112,40 +1014,168 @@ export default {
1112 1014  
1113 1015 .header-right {
1114 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 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 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 1131 display: flex;
1133 1132 align-items: center;
1134 1133 gap: 12px;
  1134 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1135 1135  
1136 1136 .selected-count {
1137   - color: #409EFF;
1138   - font-weight: 500;
  1137 + color: #606266;
  1138 + font-weight: 600;
1139 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 1156 .table-container {
1144 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 1181 .employee-name {
... ... @@ -1154,28 +1184,275 @@ export default {
1154 1184 gap: 6px;
1155 1185  
1156 1186 .employee-icon {
1157   - color: #409EFF;
  1187 + color: #606266;
1158 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 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 1244 .el-table__header-wrapper {
1165 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 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 1257 .el-table__body-wrapper {
  1258 + background-color: #ffffff;
  1259 + z-index: 1;
  1260 +
1173 1261 .el-table__row {
  1262 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1263 + background-color: #ffffff;
  1264 +
1174 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 1458 </style>
1181   -
... ...
antis-ncc-admin/src/views/wageManagement/cienceTeacher.vue
... ... @@ -1164,26 +1164,45 @@ export default {
1164 1164  
1165 1165 <style lang="scss" scoped>
1166 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 1173 .page-header {
1172 1174 display: flex;
1173 1175 justify-content: space-between;
1174 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 1196 .header-left {
1182 1197 h2 {
1183 1198 margin: 0 0 8px 0;
1184 1199 color: #303133;
1185   - font-size: 20px;
  1200 + font-size: 22px;
1186 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 1208 .page-desc {
... ... @@ -1195,40 +1214,168 @@ export default {
1195 1214  
1196 1215 .header-right {
1197 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 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 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 1331 display: flex;
1216 1332 align-items: center;
1217 1333 gap: 12px;
  1334 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1218 1335  
1219 1336 .selected-count {
1220   - color: #409EFF;
1221   - font-weight: 500;
  1337 + color: #606266;
  1338 + font-weight: 600;
1222 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 1356 .table-container {
1227 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 1381 .store-name,
... ... @@ -1239,27 +1386,276 @@ export default {
1239 1386  
1240 1387 .store-icon,
1241 1388 .employee-icon {
1242   - color: #409EFF;
  1389 + color: #606266;
1243 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 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 1447 .el-table__header-wrapper {
1250 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 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 1460 .el-table__body-wrapper {
  1461 + background-color: #ffffff;
  1462 + z-index: 1;
  1463 +
1258 1464 .el-table__row {
  1465 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1466 + background-color: #ffffff;
  1467 +
1259 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 1661 </style>
... ...
antis-ncc-admin/src/views/wageManagement/director.vue
... ... @@ -1010,26 +1010,45 @@ export default {
1010 1010  
1011 1011 <style lang="scss" scoped>
1012 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 1019 .page-header {
1018 1020 display: flex;
1019 1021 justify-content: space-between;
1020 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 1042 .header-left {
1028 1043 h2 {
1029 1044 margin: 0 0 8px 0;
1030 1045 color: #303133;
1031   - font-size: 20px;
  1046 + font-size: 22px;
1032 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 1054 .page-desc {
... ... @@ -1041,40 +1060,168 @@ export default {
1041 1060  
1042 1061 .header-right {
1043 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 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 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 1177 display: flex;
1062 1178 align-items: center;
1063 1179 gap: 12px;
  1180 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1064 1181  
1065 1182 .selected-count {
1066   - color: #409EFF;
1067   - font-weight: 500;
  1183 + color: #606266;
  1184 + font-weight: 600;
1068 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 1202 .table-container {
1073 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 1227 .store-name,
... ... @@ -1085,27 +1232,276 @@ export default {
1085 1232  
1086 1233 .store-icon,
1087 1234 .employee-icon {
1088   - color: #409EFF;
  1235 + color: #606266;
1089 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 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 1293 .el-table__header-wrapper {
1096 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 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 1306 .el-table__body-wrapper {
  1307 + background-color: #ffffff;
  1308 + z-index: 1;
  1309 +
1104 1310 .el-table__row {
  1311 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1312 + background-color: #ffffff;
  1313 +
1105 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 1507 </style>
... ...
antis-ncc-admin/src/views/wageManagement/headquarters-stock.vue
... ... @@ -416,26 +416,45 @@ export default {
416 416  
417 417 <style lang="scss" scoped>
418 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 425 .page-header {
424 426 display: flex;
425 427 justify-content: space-between;
426 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 448 .header-left {
434 449 h2 {
435 450 margin: 0 0 8px 0;
436 451 color: #303133;
437   - font-size: 20px;
  452 + font-size: 22px;
438 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 460 .page-desc {
... ... @@ -447,24 +466,137 @@ export default {
447 466  
448 467 .header-right {
449 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 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 577 .table-container {
463 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 602 .month-name {
... ... @@ -473,13 +605,18 @@ export default {
473 605 gap: 6px;
474 606  
475 607 .month-icon {
476   - color: #409EFF;
  608 + color: #606266;
477 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 618 .highlight {
482   - color: #409EFF;
  619 + color: #606266;
483 620 font-weight: 600;
484 621 }
485 622  
... ... @@ -489,20 +626,60 @@ export default {
489 626  
490 627 // 表格样式优化
491 628 ::v-deep .el-table {
  629 + border-radius: 8px;
  630 + overflow: hidden;
  631 + border: 1px solid rgba(144, 147, 153, 0.2);
  632 +
492 633 .el-table__header-wrapper {
493 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 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 646 .el-table__body-wrapper {
  647 + background-color: #ffffff;
  648 + z-index: 1;
  649 +
501 650 .el-table__row {
  651 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  652 + background-color: #ffffff;
  653 +
502 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 685 </style>
... ...
antis-ncc-admin/src/views/wageManagement/healthCoach.vue
... ... @@ -1359,26 +1359,45 @@ export default {
1359 1359  
1360 1360 <style lang="scss" scoped>
1361 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 1368 .page-header {
1367 1369 display: flex;
1368 1370 justify-content: space-between;
1369 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 1391 .header-left {
1377 1392 h2 {
1378 1393 margin: 0 0 8px 0;
1379 1394 color: #303133;
1380   - font-size: 20px;
  1395 + font-size: 22px;
1381 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 1403 .page-desc {
... ... @@ -1390,40 +1409,169 @@ export default {
1390 1409  
1391 1410 .header-right {
1392 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 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 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 1526 display: flex;
1411 1527 align-items: center;
1412 1528 gap: 12px;
  1529 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1413 1530  
1414 1531 .selected-count {
1415   - color: #409EFF;
1416   - font-weight: 500;
  1532 + color: #606266;
  1533 + font-weight: 600;
1417 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 1551 .table-container {
1422 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 1577 .store-name,
... ... @@ -1434,28 +1582,346 @@ export default {
1434 1582  
1435 1583 .store-icon,
1436 1584 .employee-icon {
1437   - color: #409EFF;
  1585 + color: #606266;
1438 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 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 1643 .el-table__header-wrapper {
1445 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 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 1656 .el-table__body-wrapper {
  1657 + background-color: #ffffff;
  1658 + z-index: 1;
  1659 +
1453 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 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 1926 </style>
1461 1927  
... ...
antis-ncc-admin/src/views/wageManagement/major-project-directors.vue
... ... @@ -7,35 +7,16 @@
7 7 <p class="page-desc">管理大项目主管工资数据,包括业绩、提成、补贴、扣款等信息</p>
8 8 </div>
9 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 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 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 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 21 </el-button>
41 22 </div>
... ... @@ -45,23 +26,11 @@
45 26 <div class="search-container">
46 27 <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="50px">
47 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 31 </el-form-item>
57 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 34 <el-option label="全部" :value="''" />
66 35 <el-option label="大项目一部" value="大项目一部" />
67 36 <el-option label="大项目二部" value="大项目二部" />
... ... @@ -83,30 +52,13 @@
83 52 <!-- 批量操作区域 -->
84 53 <div class="batch-action-container" v-if="selectedRows.length > 0">
85 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 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 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 63 </el-button>
112 64 </div>
... ... @@ -114,16 +66,8 @@
114 66  
115 67 <!-- 数据表格 -->
116 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 72 <el-table-column type="selection" width="55" align="center" fixed="left" />
129 73 <!-- 基本信息 -->
... ... @@ -350,41 +294,19 @@
350 294 <!-- 操作列 -->
351 295 <el-table-column label="操作" width="350" align="center" fixed="right">
352 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 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 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 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 311 </el-button>
390 312 </template>
... ... @@ -393,64 +315,41 @@
393 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 320 <el-form label-width="100px" label-position="right">
404 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 324 </el-form-item>
414 325 </el-form>
415 326 <div slot="footer" class="dialog-footer">
416 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 330 </el-button>
424 331 </div>
425 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 340 <el-table :data="storeDetailList" border stripe max-height="500">
442 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 343 <template slot-scope="scope">
445 344 <span>{{ formatMoney(scope.row.BillingAmount) }}</span>
446 345 </template>
447 346 </el-table-column>
448   - <el-table-column prop="RefundAmount" label="退卡金额" align="center">
  347 + <el-table-column prop="RefundAmount" label="退卡金额" align="center">
449 348 <template slot-scope="scope">
450 349 <span>{{ formatMoney(scope.row.RefundAmount) }}</span>
451 350 </template>
452 351 </el-table-column>
453   - <el-table-column prop="TotalPerformance" label="总业绩" align="center">
  352 + <el-table-column prop="TotalPerformance" label="总业绩" align="center">
454 353 <template slot-scope="scope">
455 354 <span>{{ formatMoney(scope.row.TotalPerformance) }}</span>
456 355 </template>
... ... @@ -462,35 +361,17 @@
462 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 368 <i class="el-icon-upload"></i>
483 369 <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
484 370 <div class="el-upload__tip" slot="tip">只能上传.xlsx/.xls文件,且不超过10MB</div>
485 371 </el-upload>
486 372 <div slot="footer" class="dialog-footer">
487 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 376 </el-button>
496 377 </div>
... ... @@ -558,7 +439,7 @@ export default {
558 439 // 处理年月:从month选择器中提取年份和月份
559 440 let year = ''
560 441 let month = ''
561   -
  442 +
562 443 if (this.queryParams.month && this.queryParams.month.length === 6) {
563 444 // yyyyMM 格式,如 202512
564 445 year = this.queryParams.month.substring(0, 4)
... ... @@ -566,8 +447,8 @@ export default {
566 447 } else if (this.queryParams.year && this.queryParams.month) {
567 448 // 分别选择年份和月份
568 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 452 : this.queryParams.month
572 453 } else {
573 454 // 使用默认值(当前年月)
... ... @@ -1055,11 +936,11 @@ export default {
1055 936  
1056 937 // 生成文件名
1057 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 944 String(now.getSeconds()).padStart(2, '0')
1064 945 const fileName = `大项目主管工资_${timestamp}.xlsx`
1065 946  
... ... @@ -1096,26 +977,45 @@ export default {
1096 977  
1097 978 <style lang="scss" scoped>
1098 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 986 .page-header {
1104 987 display: flex;
1105 988 justify-content: space-between;
1106 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 1009 .header-left {
1114 1010 h2 {
1115 1011 margin: 0 0 8px 0;
1116 1012 color: #303133;
1117   - font-size: 20px;
  1013 + font-size: 22px;
1118 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 1021 .page-desc {
... ... @@ -1127,40 +1027,168 @@ export default {
1127 1027  
1128 1028 .header-right {
1129 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 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 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 1144 display: flex;
1148 1145 align-items: center;
1149 1146 gap: 12px;
  1147 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1150 1148  
1151 1149 .selected-count {
1152   - color: #409EFF;
1153   - font-weight: 500;
  1150 + color: #606266;
  1151 + font-weight: 600;
1154 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 1169 .table-container {
1159 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 1194 .employee-name {
... ... @@ -1169,28 +1197,275 @@ export default {
1169 1197 gap: 6px;
1170 1198  
1171 1199 .employee-icon {
1172   - color: #409EFF;
  1200 + color: #606266;
1173 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 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 1257 .el-table__header-wrapper {
1180 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 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 1270 .el-table__body-wrapper {
  1271 + background-color: #ffffff;
  1272 + z-index: 1;
  1273 +
1188 1274 .el-table__row {
  1275 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1276 + background-color: #ffffff;
  1277 +
1189 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 1471 </style>
1196   -
... ...
antis-ncc-admin/src/views/wageManagement/major-project-teachers.vue
... ... @@ -1145,26 +1145,45 @@ export default {
1145 1145  
1146 1146 <style lang="scss" scoped>
1147 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 1154 .page-header {
1153 1155 display: flex;
1154 1156 justify-content: space-between;
1155 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 1177 .header-left {
1163 1178 h2 {
1164 1179 margin: 0 0 8px 0;
1165 1180 color: #303133;
1166   - font-size: 20px;
  1181 + font-size: 22px;
1167 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 1189 .page-desc {
... ... @@ -1176,40 +1195,168 @@ export default {
1176 1195  
1177 1196 .header-right {
1178 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 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 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 1312 display: flex;
1197 1313 align-items: center;
1198 1314 gap: 12px;
  1315 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1199 1316  
1200 1317 .selected-count {
1201   - color: #409EFF;
1202   - font-weight: 500;
  1318 + color: #606266;
  1319 + font-weight: 600;
1203 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 1337 .table-container {
1208 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 1362 .store-name,
... ... @@ -1220,27 +1367,276 @@ export default {
1220 1367  
1221 1368 .store-icon,
1222 1369 .employee-icon {
1223   - color: #409EFF;
  1370 + color: #606266;
1224 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 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 1428 .el-table__header-wrapper {
1231 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 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 1441 .el-table__body-wrapper {
  1442 + background-color: #ffffff;
  1443 + z-index: 1;
  1444 +
1239 1445 .el-table__row {
  1446 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1447 + background-color: #ffffff;
  1448 +
1240 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 1642 </style>
... ...
antis-ncc-admin/src/views/wageManagement/shop-stock.vue
... ... @@ -788,26 +788,45 @@ export default {
788 788  
789 789 <style lang="scss" scoped>
790 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 797 .page-header {
796 798 display: flex;
797 799 justify-content: space-between;
798 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 820 .header-left {
806 821 h2 {
807 822 margin: 0 0 8px 0;
808 823 color: #303133;
809   - font-size: 20px;
  824 + font-size: 22px;
810 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 832 .page-desc {
... ... @@ -819,24 +838,137 @@ export default {
819 838  
820 839 .header-right {
821 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 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 949 .table-container {
835 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 974 .store-name {
... ... @@ -845,32 +977,77 @@ export default {
845 977 gap: 6px;
846 978  
847 979 .store-icon {
848   - color: #409EFF;
  980 + color: #606266;
849 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 990 .highlight {
854   - color: #409EFF;
  991 + color: #606266;
855 992 font-weight: 600;
856 993 }
857 994  
858 995 // 表格样式优化
859 996 ::v-deep .el-table {
  997 + border-radius: 8px;
  998 + overflow: hidden;
  999 + border: 1px solid rgba(144, 147, 153, 0.2);
  1000 +
860 1001 .el-table__header-wrapper {
861 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 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 1014 .el-table__body-wrapper {
  1015 + background-color: #ffffff;
  1016 + z-index: 1;
  1017 +
869 1018 .el-table__row {
  1019 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1020 + background-color: #ffffff;
  1021 +
870 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 1053 </style>
... ...
antis-ncc-admin/src/views/wageManagement/shop.vue
... ... @@ -1189,26 +1189,45 @@ export default {
1189 1189  
1190 1190 <style lang="scss" scoped>
1191 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 1198 .page-header {
1197 1199 display: flex;
1198 1200 justify-content: space-between;
1199 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 1221 .header-left {
1207 1222 h2 {
1208 1223 margin: 0 0 8px 0;
1209 1224 color: #303133;
1210   - font-size: 20px;
  1225 + font-size: 22px;
1211 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 1233 .page-desc {
... ... @@ -1220,40 +1239,168 @@ export default {
1220 1239  
1221 1240 .header-right {
1222 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 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 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 1356 display: flex;
1241 1357 align-items: center;
1242 1358 gap: 12px;
  1359 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1243 1360  
1244 1361 .selected-count {
1245   - color: #409EFF;
1246   - font-weight: 500;
  1362 + color: #606266;
  1363 + font-weight: 600;
1247 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 1381 .table-container {
1252 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 1406 .store-name,
... ... @@ -1264,27 +1411,276 @@ export default {
1264 1411  
1265 1412 .store-icon,
1266 1413 .employee-icon {
1267   - color: #409EFF;
  1414 + color: #606266;
1268 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 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 1472 .el-table__header-wrapper {
1275 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 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 1485 .el-table__body-wrapper {
  1486 + background-color: #ffffff;
  1487 + z-index: 1;
  1488 +
1283 1489 .el-table__row {
  1490 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1491 + background-color: #ffffff;
  1492 +
1284 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 1686 </style>
... ...
antis-ncc-admin/src/views/wageManagement/tech-general-managers.vue
... ... @@ -1129,26 +1129,45 @@ export default {
1129 1129  
1130 1130 <style lang="scss" scoped>
1131 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 1138 .page-header {
1137 1139 display: flex;
1138 1140 justify-content: space-between;
1139 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 1161 .header-left {
1147 1162 h2 {
1148 1163 margin: 0 0 8px 0;
1149 1164 color: #303133;
1150   - font-size: 20px;
  1165 + font-size: 22px;
1151 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 1173 .page-desc {
... ... @@ -1160,40 +1179,168 @@ export default {
1160 1179  
1161 1180 .header-right {
1162 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 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 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 1296 display: flex;
1181 1297 align-items: center;
1182 1298 gap: 12px;
  1299 + box-shadow: 0 2px 8px rgba(144, 147, 153, 0.1);
1183 1300  
1184 1301 .selected-count {
1185   - color: #409EFF;
1186   - font-weight: 500;
  1302 + color: #606266;
  1303 + font-weight: 600;
1187 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 1321 .table-container {
1192 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 1346 .employee-name {
... ... @@ -1202,27 +1349,275 @@ export default {
1202 1349 gap: 6px;
1203 1350  
1204 1351 .employee-icon {
1205   - color: #409EFF;
  1352 + color: #606266;
1206 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 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 1409 .el-table__header-wrapper {
1213 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 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 1422 .el-table__body-wrapper {
  1423 + background-color: #ffffff;
  1424 + z-index: 1;
  1425 +
1221 1426 .el-table__row {
  1427 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1428 + background-color: #ffffff;
  1429 +
1222 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 1623 </style>
... ...
antis-ncc-admin/src/views/wageManagement/tech-stock.vue
... ... @@ -499,26 +499,45 @@ export default {
499 499  
500 500 <style lang="scss" scoped>
501 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 508 .page-header {
507 509 display: flex;
508 510 justify-content: space-between;
509 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 531 .header-left {
517 532 h2 {
518 533 margin: 0 0 8px 0;
519 534 color: #303133;
520   - font-size: 20px;
  535 + font-size: 22px;
521 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 543 .page-desc {
... ... @@ -530,24 +549,137 @@ export default {
530 549  
531 550 .header-right {
532 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 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 660 .table-container {
546 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 685 .department-name {
... ... @@ -556,32 +688,77 @@ export default {
556 688 gap: 6px;
557 689  
558 690 .department-icon {
559   - color: #409EFF;
  691 + color: #606266;
560 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 701 .highlight {
565   - color: #409EFF;
  702 + color: #606266;
566 703 font-weight: 600;
567 704 }
568 705  
569 706 // 表格样式优化
570 707 ::v-deep .el-table {
  708 + border-radius: 8px;
  709 + overflow: hidden;
  710 + border: 1px solid rgba(144, 147, 153, 0.2);
  711 +
571 712 .el-table__header-wrapper {
572 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 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 725 .el-table__body-wrapper {
  726 + background-color: #ffffff;
  727 + z-index: 1;
  728 +
580 729 .el-table__row {
  730 + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  731 + background-color: #ffffff;
  732 +
581 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 764 </style>
... ...