_hr-dialog.scss 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377
  1. @use 'variables';
  2. @use 'ios-theme' as ios;
  3. // HR模块通用对话框样式
  4. // 基于新增员工面板的设计,提供统一的对话框外观
  5. // 对话框容器样式
  6. .hr-dialog {
  7. .mat-mdc-dialog-container .mdc-dialog__surface {
  8. border-radius: ios.$ios-radius-lg;
  9. background: ios.$ios-card-background;
  10. box-shadow: ios.$ios-shadow-lg;
  11. border: 1px solid ios.$ios-border;
  12. min-width: 500px;
  13. max-width: 700px;
  14. }
  15. .mat-mdc-dialog-title {
  16. color: ios.$ios-text-primary;
  17. font-weight: ios.$ios-font-weight-semibold;
  18. font-family: ios.$ios-font-family;
  19. display: flex;
  20. align-items: center;
  21. gap: ios.$ios-spacing-sm;
  22. padding: ios.$ios-spacing-lg ios.$ios-spacing-lg ios.$ios-spacing-md;
  23. margin: 0;
  24. border-bottom: 1px solid ios.$ios-border;
  25. mat-icon {
  26. color: ios.$ios-primary;
  27. font-size: 24px;
  28. width: 24px;
  29. height: 24px;
  30. }
  31. }
  32. .mat-mdc-dialog-content {
  33. padding: ios.$ios-spacing-lg;
  34. font-family: ios.$ios-font-family;
  35. max-height: 70vh;
  36. overflow-y: auto;
  37. // 表单样式
  38. .employee-form,
  39. .dialog-content {
  40. display: flex;
  41. flex-direction: column;
  42. gap: ios.$ios-spacing-md;
  43. }
  44. .form-row {
  45. display: flex;
  46. gap: ios.$ios-spacing-md;
  47. margin-bottom: ios.$ios-spacing-sm;
  48. .form-group {
  49. flex: 1;
  50. }
  51. }
  52. .form-group {
  53. display: flex;
  54. flex-direction: column;
  55. margin-bottom: ios.$ios-spacing-xs;
  56. label {
  57. font-weight: 500;
  58. margin-bottom: 6px;
  59. color: #333;
  60. font-size: 14px;
  61. margin-bottom: ios.$ios-spacing-xs;
  62. }
  63. .mat-mdc-form-field {
  64. border-radius: ios.$ios-radius-md;
  65. .mat-mdc-text-field-wrapper {
  66. background: white;
  67. border: 1px solid #e0e0e0;
  68. border-radius: 8px;
  69. transition: all 0.3s ease;
  70. &:hover {
  71. border-color: ios.$ios-primary;
  72. }
  73. }
  74. .mat-mdc-form-field-subscript-wrapper {
  75. color: ios.$ios-text-secondary;
  76. font-family: ios.$ios-font-family;
  77. font-weight: ios.$ios-font-weight-medium;
  78. }
  79. .mat-mdc-form-field-infix {
  80. color: ios.$ios-text-primary;
  81. font-family: ios.$ios-font-family;
  82. padding: ios.$ios-spacing-sm;
  83. }
  84. .mat-mdc-form-field-error {
  85. color: ios.$ios-error;
  86. font-family: ios.$ios-font-family;
  87. font-size: ios.$ios-font-size-caption-1;
  88. margin-top: ios.$ios-spacing-xs;
  89. }
  90. // 选择框样式
  91. .mat-mdc-select-value {
  92. color: ios.$ios-text-primary;
  93. font-family: ios.$ios-font-family;
  94. padding: ios.$ios-spacing-sm 0;
  95. }
  96. .mat-mdc-select-arrow {
  97. color: ios.$ios-text-secondary;
  98. transition: transform 0.3s ease;
  99. }
  100. &.mat-focused .mat-mdc-select-arrow {
  101. color: ios.$ios-primary;
  102. }
  103. // 输入框样式
  104. .mat-mdc-input-element {
  105. color: ios.$ios-text-secondary;
  106. }
  107. &.mat-focused .mat-mdc-input-element {
  108. color: ios.$ios-primary;
  109. }
  110. }
  111. }
  112. // 信息展示区域
  113. .info-section {
  114. display: flex;
  115. flex-direction: column;
  116. gap: ios.$ios-spacing-md;
  117. }
  118. .info-card {
  119. background: ios.$ios-background-secondary;
  120. border: 1px solid ios.$ios-border;
  121. border-radius: ios.$ios-radius-lg;
  122. padding: ios.$ios-spacing-lg;
  123. margin-top: ios.$ios-spacing-lg;
  124. &:hover {
  125. transform: translateY(-2px);
  126. box-shadow: ios.$ios-shadow-md;
  127. }
  128. .card-title {
  129. font-family: ios.$ios-font-family;
  130. font-weight: ios.$ios-font-weight-semibold;
  131. color: ios.$ios-text-primary;
  132. margin-bottom: ios.$ios-spacing-md;
  133. font-size: ios.$ios-font-size-body;
  134. display: flex;
  135. align-items: center;
  136. gap: ios.$ios-spacing-xs;
  137. mat-icon {
  138. color: #007AFF;
  139. font-size: 20px;
  140. width: 20px;
  141. height: 20px;
  142. }
  143. }
  144. .card-content {
  145. border: 1px solid ios.$ios-border;
  146. border-radius: ios.$ios-radius-md;
  147. padding: ios.$ios-spacing-lg;
  148. box-shadow: ios.$ios-shadow-sm;
  149. &:hover {
  150. transform: translateY(-1px);
  151. box-shadow: ios.$ios-shadow-md;
  152. }
  153. .content-grid {
  154. display: grid;
  155. grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  156. gap: ios.$ios-spacing-md;
  157. margin-bottom: ios.$ios-spacing-md;
  158. }
  159. .content-item {
  160. display: flex;
  161. flex-direction: column;
  162. padding: 12px;
  163. background: #f8f9fa;
  164. border-radius: ios.$ios-radius-md;
  165. .label {
  166. font-size: ios.$ios-font-size-caption-1;
  167. color: ios.$ios-text-secondary;
  168. font-family: ios.$ios-font-family;
  169. text-transform: uppercase;
  170. letter-spacing: 0.5px;
  171. margin-bottom: ios.$ios-spacing-xs;
  172. }
  173. .value {
  174. font-size: ios.$ios-font-size-body;
  175. color: ios.$ios-text-primary;
  176. font-family: ios.$ios-font-family;
  177. font-weight: ios.$ios-font-weight-medium;
  178. }
  179. }
  180. .highlight-section {
  181. display: flex;
  182. align-items: center;
  183. gap: ios.$ios-spacing-sm;
  184. padding: ios.$ios-spacing-md;
  185. background: ios.$ios-background-secondary;
  186. border-radius: ios.$ios-radius-sm;
  187. .highlight-label {
  188. font-size: ios.$ios-font-size-caption-1;
  189. color: ios.$ios-text-secondary;
  190. font-family: ios.$ios-font-family;
  191. }
  192. .highlight-value {
  193. font-size: ios.$ios-font-size-title-2;
  194. font-weight: ios.$ios-font-weight-bold;
  195. color: ios.$ios-primary;
  196. font-family: ios.$ios-font-family;
  197. display: flex;
  198. align-items: center;
  199. gap: ios.$ios-spacing-xs;
  200. .currency {
  201. font-size: ios.$ios-font-size-caption-1;
  202. color: ios.$ios-text-secondary;
  203. font-weight: ios.$ios-font-weight-regular;
  204. }
  205. }
  206. }
  207. }
  208. }
  209. .section-title {
  210. margin: ios.$ios-spacing-lg 0 ios.$ios-spacing-md 0;
  211. color: ios.$ios-text-primary;
  212. font-size: ios.$ios-font-size-lg;
  213. font-weight: ios.$ios-font-weight-semibold;
  214. font-family: ios.$ios-font-family;
  215. border-bottom: 2px solid #007AFF;
  216. padding-bottom: 8px;
  217. display: flex;
  218. align-items: center;
  219. gap: 8px;
  220. }
  221. }
  222. .mat-mdc-dialog-actions {
  223. padding: ios.$ios-spacing-md ios.$ios-spacing-lg ios.$ios-spacing-lg;
  224. border-top: 1px solid ios.$ios-border;
  225. gap: ios.$ios-spacing-sm;
  226. .mat-mdc-button {
  227. font-family: ios.$ios-font-family;
  228. border-radius: ios.$ios-radius-md;
  229. padding: ios.$ios-spacing-sm ios.$ios-spacing-lg;
  230. font-weight: 500;
  231. &.mat-primary {
  232. background: ios.$ios-primary;
  233. color: white;
  234. border: none;
  235. &:hover {
  236. background: #0056CC;
  237. }
  238. &:disabled {
  239. background: ios.$ios-text-tertiary;
  240. color: white;
  241. }
  242. }
  243. &.mat-stroked-button {
  244. color: ios.$ios-text-secondary;
  245. border: 1px solid #e0e0e0;
  246. &:hover {
  247. color: ios.$ios-primary;
  248. border-color: #007AFF;
  249. }
  250. }
  251. &:hover {
  252. box-shadow: ios.$ios-shadow-sm;
  253. }
  254. &:active {
  255. box-shadow: ios.$ios-shadow-md;
  256. transform: translateY(1px);
  257. }
  258. }
  259. }
  260. }
  261. // 特殊样式:员工详情对话框
  262. .employee-detail-dialog {
  263. .mat-mdc-dialog-container .mdc-dialog__surface {
  264. min-width: 600px;
  265. max-width: 800px;
  266. }
  267. .employee-avatar {
  268. width: 80px;
  269. height: 80px;
  270. border-radius: ios.$ios-radius-md;
  271. box-shadow: ios.$ios-shadow-lg;
  272. border: 1px solid ios.$ios-border;
  273. object-fit: cover;
  274. }
  275. .employee-info {
  276. display: flex;
  277. align-items: center;
  278. gap: 20px;
  279. font-family: ios.$ios-font-family;
  280. padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
  281. .info-text {
  282. flex: 1;
  283. .name {
  284. font-size: 20px;
  285. font-weight: 600;
  286. color: ios.$ios-primary;
  287. margin-bottom: 4px;
  288. }
  289. .position {
  290. color: ios.$ios-primary;
  291. font-weight: ios.$ios-font-weight-medium;
  292. font-size: 14px;
  293. }
  294. }
  295. }
  296. .detail-grid {
  297. display: grid;
  298. grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  299. gap: ios.$ios-spacing-sm;
  300. margin: ios.$ios-spacing-md;
  301. .detail-item {
  302. display: flex;
  303. flex-direction: column;
  304. padding: 12px;
  305. background: #f8f9fa;
  306. border-radius: 8px;
  307. .label {
  308. font-size: 12px;
  309. color: #666;
  310. margin-bottom: 4px;
  311. text-transform: uppercase;
  312. letter-spacing: 0.5px;
  313. }
  314. .value {
  315. font-size: 14px;
  316. color: #333;
  317. font-weight: 500;
  318. }
  319. }
  320. }
  321. }