_hr-dialog.scss 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486
  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. mat-form-field {
  114. margin-bottom: ios.$ios-spacing-xs;
  115. .mat-mdc-form-field-outline {
  116. border-radius: ios.$ios-radius-md;
  117. border-color: rgba(0, 122, 255, 0.2);
  118. transition: all 0.3s ease;
  119. }
  120. &:hover .mat-mdc-form-field-outline {
  121. border-color: rgba(0, 122, 255, 0.4);
  122. }
  123. &.mat-focused .mat-mdc-form-field-outline {
  124. border-color: ios.$ios-primary;
  125. border-width: 2px;
  126. box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.1);
  127. }
  128. .mat-mdc-form-field-label {
  129. color: ios.$ios-text-secondary;
  130. font-family: ios.$ios-font-family;
  131. font-weight: ios.$ios-font-weight-medium;
  132. }
  133. .mat-mdc-input-element {
  134. color: ios.$ios-text-primary;
  135. font-family: ios.$ios-font-family;
  136. padding: ios.$ios-spacing-sm;
  137. }
  138. .mat-mdc-form-field-error.error-message {
  139. color: ios.$ios-error;
  140. font-family: ios.$ios-font-family;
  141. font-size: ios.$ios-font-size-caption-1;
  142. margin-top: ios.$ios-spacing-xs;
  143. }
  144. // 选择框样式
  145. .mat-mdc-select-value {
  146. color: ios.$ios-text-primary;
  147. font-family: ios.$ios-font-family;
  148. padding: ios.$ios-spacing-sm 0;
  149. }
  150. .mat-mdc-select-arrow {
  151. color: ios.$ios-text-secondary;
  152. transition: transform 0.3s ease;
  153. }
  154. &.mat-focused .mat-mdc-select-arrow {
  155. transform: rotate(180deg);
  156. color: ios.$ios-primary;
  157. }
  158. // 后缀图标样式
  159. .mat-mdc-form-field-icon-suffix {
  160. color: ios.$ios-text-secondary;
  161. transition: color 0.3s ease;
  162. }
  163. &:hover .mat-mdc-form-field-icon-suffix {
  164. color: ios.$ios-primary;
  165. }
  166. }
  167. // 信息展示区域
  168. .info-section {
  169. display: flex;
  170. flex-direction: column;
  171. gap: ios.$ios-spacing-md;
  172. }
  173. .info-card {
  174. background: ios.$ios-background-secondary;
  175. border: 1px solid ios.$ios-border;
  176. border-radius: ios.$ios-radius-lg;
  177. padding: ios.$ios-spacing-lg;
  178. margin-top: ios.$ios-spacing-lg;
  179. &:hover {
  180. transform: translateY(-2px);
  181. box-shadow: ios.$ios-shadow-md;
  182. }
  183. .card-title {
  184. font-family: ios.$ios-font-family;
  185. font-weight: ios.$ios-font-weight-semibold;
  186. color: ios.$ios-text-primary;
  187. margin-bottom: ios.$ios-spacing-md;
  188. font-size: ios.$ios-font-size-body;
  189. display: flex;
  190. align-items: center;
  191. gap: ios.$ios-spacing-xs;
  192. mat-icon {
  193. color: #007AFF;
  194. font-size: 20px;
  195. width: 20px;
  196. height: 20px;
  197. }
  198. }
  199. .card-content {
  200. border: 1px solid ios.$ios-border;
  201. border-radius: ios.$ios-radius-md;
  202. padding: ios.$ios-spacing-lg;
  203. box-shadow: ios.$ios-shadow-sm;
  204. &:hover {
  205. transform: translateY(-1px);
  206. box-shadow: ios.$ios-shadow-md;
  207. }
  208. .preview-header {
  209. display: flex;
  210. align-items: center;
  211. gap: ios.$ios-spacing-md;
  212. margin-bottom: ios.$ios-spacing-md;
  213. .preview-icon {
  214. width: 32px;
  215. height: 32px;
  216. display: flex;
  217. align-items: center;
  218. justify-content: center;
  219. border-radius: ios.$ios-radius-md;
  220. background: rgba(0, 122, 255, 0.1);
  221. transition: all 0.3s ease;
  222. &:hover {
  223. background: rgba(0, 122, 255, 0.2);
  224. transform: scale(1.1);
  225. }
  226. }
  227. .preview-info {
  228. flex: 1;
  229. .preview-category {
  230. font-size: ios.$ios-font-size-caption-1;
  231. color: ios.$ios-text-secondary;
  232. font-family: ios.$ios-font-family;
  233. text-transform: uppercase;
  234. letter-spacing: 0.5px;
  235. margin-bottom: ios.$ios-spacing-xs;
  236. }
  237. .preview-name {
  238. font-size: ios.$ios-font-size-body;
  239. color: ios.$ios-text-primary;
  240. font-family: ios.$ios-font-family;
  241. font-weight: ios.$ios-font-weight-medium;
  242. }
  243. }
  244. }
  245. .content-grid {
  246. display: grid;
  247. grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  248. gap: ios.$ios-spacing-md;
  249. margin-bottom: ios.$ios-spacing-md;
  250. }
  251. .content-item {
  252. display: flex;
  253. flex-direction: column;
  254. padding: 12px;
  255. background: #f8f9fa;
  256. border-radius: ios.$ios-radius-md;
  257. .label {
  258. font-size: ios.$ios-font-size-caption-1;
  259. color: ios.$ios-text-secondary;
  260. font-family: ios.$ios-font-family;
  261. text-transform: uppercase;
  262. letter-spacing: 0.5px;
  263. margin-bottom: ios.$ios-spacing-xs;
  264. }
  265. .value {
  266. font-size: ios.$ios-font-size-body;
  267. color: ios.$ios-text-primary;
  268. font-family: ios.$ios-font-family;
  269. font-weight: ios.$ios-font-weight-medium;
  270. }
  271. }
  272. .highlight-section {
  273. display: flex;
  274. align-items: center;
  275. gap: ios.$ios-spacing-sm;
  276. padding: ios.$ios-spacing-md;
  277. background: ios.$ios-background-secondary;
  278. border-radius: ios.$ios-radius-sm;
  279. .highlight-label {
  280. font-size: ios.$ios-font-size-caption-1;
  281. color: ios.$ios-text-secondary;
  282. font-family: ios.$ios-font-family;
  283. }
  284. .highlight-value {
  285. font-size: ios.$ios-font-size-title-2;
  286. font-weight: ios.$ios-font-weight-bold;
  287. color: ios.$ios-primary;
  288. font-family: ios.$ios-font-family;
  289. display: flex;
  290. align-items: center;
  291. gap: ios.$ios-spacing-xs;
  292. .currency {
  293. font-size: ios.$ios-font-size-caption-1;
  294. color: ios.$ios-text-secondary;
  295. font-weight: ios.$ios-font-weight-regular;
  296. }
  297. }
  298. }
  299. }
  300. }
  301. .section-title {
  302. margin: ios.$ios-spacing-lg 0 ios.$ios-spacing-md 0;
  303. color: ios.$ios-text-primary;
  304. font-size: ios.$ios-font-size-lg;
  305. font-weight: ios.$ios-font-weight-semibold;
  306. font-family: ios.$ios-font-family;
  307. border-bottom: 2px solid #007AFF;
  308. padding-bottom: 8px;
  309. display: flex;
  310. align-items: center;
  311. gap: 8px;
  312. }
  313. }
  314. .mat-mdc-dialog-actions {
  315. padding: ios.$ios-spacing-md ios.$ios-spacing-lg ios.$ios-spacing-lg;
  316. border-top: 1px solid ios.$ios-border;
  317. gap: ios.$ios-spacing-sm;
  318. .mat-mdc-button {
  319. font-family: ios.$ios-font-family;
  320. border-radius: ios.$ios-radius-md;
  321. padding: ios.$ios-spacing-sm ios.$ios-spacing-lg;
  322. font-weight: 500;
  323. &.mat-primary {
  324. background: ios.$ios-primary;
  325. color: white;
  326. border: none;
  327. &:hover {
  328. background: #0056CC;
  329. }
  330. &:disabled {
  331. background: ios.$ios-text-tertiary;
  332. color: white;
  333. }
  334. }
  335. &.mat-stroked-button {
  336. color: ios.$ios-text-secondary;
  337. border: 1px solid #e0e0e0;
  338. &:hover {
  339. color: ios.$ios-primary;
  340. border-color: #007AFF;
  341. }
  342. }
  343. &:hover {
  344. box-shadow: ios.$ios-shadow-sm;
  345. }
  346. &:active {
  347. box-shadow: ios.$ios-shadow-md;
  348. transform: translateY(1px);
  349. }
  350. }
  351. }
  352. }
  353. // 特殊样式:员工详情对话框
  354. .employee-detail-dialog {
  355. .mat-mdc-dialog-container .mdc-dialog__surface {
  356. min-width: 600px;
  357. max-width: 800px;
  358. }
  359. .employee-avatar {
  360. width: 80px;
  361. height: 80px;
  362. border-radius: ios.$ios-radius-md;
  363. box-shadow: ios.$ios-shadow-lg;
  364. border: 1px solid ios.$ios-border;
  365. object-fit: cover;
  366. }
  367. .employee-info {
  368. display: flex;
  369. align-items: center;
  370. gap: 20px;
  371. font-family: ios.$ios-font-family;
  372. padding: ios.$ios-spacing-sm ios.$ios-spacing-md;
  373. .info-text {
  374. flex: 1;
  375. .name {
  376. font-size: 20px;
  377. font-weight: 600;
  378. color: ios.$ios-primary;
  379. margin-bottom: 4px;
  380. }
  381. .position {
  382. color: ios.$ios-primary;
  383. font-weight: ios.$ios-font-weight-medium;
  384. font-size: 14px;
  385. }
  386. }
  387. }
  388. .detail-grid {
  389. display: grid;
  390. grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  391. gap: ios.$ios-spacing-sm;
  392. margin: ios.$ios-spacing-md;
  393. .detail-item {
  394. display: flex;
  395. flex-direction: column;
  396. padding: 12px;
  397. background: #f8f9fa;
  398. border-radius: 8px;
  399. .label {
  400. font-size: 12px;
  401. color: #666;
  402. margin-bottom: 4px;
  403. text-transform: uppercase;
  404. letter-spacing: 0.5px;
  405. }
  406. .value {
  407. font-size: 14px;
  408. color: #333;
  409. font-weight: 500;
  410. }
  411. }
  412. }
  413. }