index.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. <template>
  2. <view class="talent-search-page">
  3. <!-- 搜索框 -->
  4. <view class="search flex align-center justify-center">
  5. <view class="search-box">
  6. <view class="dropdown-btn" @click="showDropdown">
  7. <text class="dropdown-text">{{ positionOptions[selectedPosition] }}</text>
  8. <u-icon name="arrow-down" color="#016BF6" size="16"></u-icon>
  9. </view>
  10. <view class="separator"></view>
  11. <input
  12. class="search-input"
  13. v-model="searchKeyword"
  14. placeholder="通过职位关键词查询"
  15. @confirm="custom"
  16. />
  17. </view>
  18. <view class="search-btn" @click="custom">搜索</view>
  19. </view>
  20. <!-- 筛选栏 -->
  21. <view class="topbg-sx-box flex justify-start align-center">
  22. <view class="topbg-sx-box-r flex align-center">
  23. <!-- 城市 -->
  24. <view class="topbg-sx-box-r-i flex align-center" style="">
  25. <text style="margin-right: 10rpx;"
  26. @click="goNavs('/pages/index/citySelect')">{{city?city:'选择城市'}}</text>
  27. <u-icon name="arrow-down" color="#00B78F" size="16"
  28. @click="goNavs('/pages/index/citySelect')"></u-icon>
  29. </view>
  30. <!-- 筛选 -->
  31. <view class="topbg-sx-box-filter flex align-center">
  32. <text style="margin-right: 10rpx;"
  33. @click="goNavs('/pages/talentSearch/filter')">筛选</text>
  34. <u-icon name="arrow-down" color="#999999" size="16"
  35. @click="goNavs('/pages/talentSearch/filter')"></u-icon>
  36. </view>
  37. </view>
  38. </view>
  39. <!-- 人才列表 -->
  40. <view class="talent-list">
  41. <view
  42. class="talent-card"
  43. v-for="(talent, index) in talentList"
  44. :key="index"
  45. @click="goToTalentDetail(talent)"
  46. >
  47. <view class="talent-content">
  48. <!-- 头像和基本信息 -->
  49. <view class="talent-header">
  50. <image :src="talent.avatar" class="talent-avatar" mode="aspectFill"></image>
  51. <view class="talent-info">
  52. <view class="talent-name-section">
  53. <view class="talent-name">{{ talent.name }}</view>
  54. <view class="talent-tags">
  55. <view class="status-tag online" v-if="talent.isOnline">在线</view>
  56. <view class="status-tag hot" v-if="talent.isHot">热门搜索</view>
  57. <view class="status-tag active" v-if="talent.lastActive">{{ talent.lastActive }}</view>
  58. </view>
  59. </view>
  60. <!-- 经验和薪资 -->
  61. <view class="talent-experience">
  62. <text class="experience-text">{{ talent.experience }}</text>
  63. <text class="education-salary">{{ talent.education }} {{ talent.salary }}</text>
  64. <text class="status-text">{{ talent.jobStatus }}</text>
  65. </view>
  66. </view>
  67. </view>
  68. <!-- 当前职位 -->
  69. <view class="current-job" v-if="talent.currentJob">
  70. <image src="../../static/images/aixin.svg" class="job-icon" mode="aspectFit"></image>
  71. <text class="job-text">{{ talent.currentJob }}</text>
  72. </view>
  73. <!-- 求职期望 -->
  74. <view class="job-expectation">
  75. <image src="../../static/images/xiangzi.svg" class="job-icon" mode="aspectFit"></image>
  76. <text class="expectation-text">求职期望: {{ talent.jobExpectation }}</text>
  77. </view>
  78. <!-- 技能标签 -->
  79. <view class="skill-tags">
  80. <view
  81. class="skill-tag"
  82. v-for="(skill, skillIndex) in talent.skills"
  83. :key="skillIndex"
  84. >
  85. {{ skill }}
  86. </view>
  87. </view>
  88. <!-- 工作描述 -->
  89. <view class="job-description">
  90. <text class="description-text">{{ talent.description }}</text>
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. <!-- 职位选择弹窗 -->
  96. <view class="position-modal" v-if="showPositionModal" @click="hidePositionModal">
  97. <view class="position-modal-content" @click.stop>
  98. <!-- 拖拽条 -->
  99. <view class="position-modal-handle"></view>
  100. <!-- 标题 -->
  101. <view class="position-modal-title">选择职位</view>
  102. <!-- 职位选项 -->
  103. <view class="position-options">
  104. <view
  105. class="position-option"
  106. :class="selectedPosition === index ? 'active' : ''"
  107. @click="selectPosition(index)"
  108. v-for="(option, index) in positionOptions"
  109. :key="index"
  110. >
  111. <view class="position-option-icon">
  112. <view class="check-icon" v-if="selectedPosition === index">✓</view>
  113. </view>
  114. <text class="position-option-text">{{ option }}</text>
  115. </view>
  116. </view>
  117. </view>
  118. </view>
  119. </view>
  120. </template>
  121. <script>
  122. export default {
  123. data() {
  124. return {
  125. searchKeyword: '',
  126. currentSx: 0,
  127. sxTypeList: [
  128. {
  129. id: 1,
  130. name: '推荐',
  131. },
  132. {
  133. id: 2,
  134. name: '最新',
  135. }
  136. ],
  137. city: '深圳',
  138. county: '',
  139. showSortModalFlag: false,
  140. selectedSort: 0,
  141. sortOptions: ['综合排序', '最新优先', '距离优先'],
  142. showPositionModal: false,
  143. selectedPosition: 0,
  144. positionOptions: ['亚马逊运营', 'TikTok运营', '采购经理', '不限职位'],
  145. city: '深圳',
  146. talentList: [
  147. {
  148. id: 1,
  149. name: '刘**',
  150. avatar: '../../static/images/avator.png',
  151. isOnline: true,
  152. isHot: true,
  153. experience: '8年',
  154. education: '本科',
  155. salary: '10-15K',
  156. jobStatus: '在职&考虑机会',
  157. currentJob: '通拓集团·店铺运营',
  158. jobExpectation: '亚马逊运营',
  159. skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
  160. description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
  161. workPeriod: '2021-2024'
  162. },
  163. {
  164. id: 2,
  165. name: '李**',
  166. avatar: '../../static/images/avator.png',
  167. lastActive: '5分钟前活跃',
  168. experience: '25年应届生',
  169. education: '本科',
  170. salary: '8-12K',
  171. jobStatus: '离职&随时到岗',
  172. currentJob: '大连海事学院·法学',
  173. jobExpectation: '亚马逊运营',
  174. skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
  175. description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
  176. workPeriod: ''
  177. },
  178. {
  179. id: 3,
  180. name: '李**',
  181. avatar: '../../static/images/avator.png',
  182. lastActive: '刚刚活跃',
  183. experience: '25年应届生',
  184. education: '本科',
  185. salary: '8-12K',
  186. jobStatus: '离职&随时到岗',
  187. currentJob: '臣美科技·小红书运营',
  188. jobExpectation: '亚马逊运营',
  189. skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
  190. description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
  191. workPeriod: '2021-2025'
  192. },
  193. {
  194. id: 4,
  195. name: '李**',
  196. avatar: '../../static/images/avator.png',
  197. lastActive: '刚刚活跃',
  198. experience: '25年应届生',
  199. education: '本科',
  200. salary: '8-12K',
  201. jobStatus: '离职&随时到岗',
  202. currentJob: '臣美科技·小红书运营',
  203. jobExpectation: '亚马逊运营',
  204. skills: ['精品', '铺货', 'TikTok', '平台运营', '投放策略', '3C数码'],
  205. description: '负责Amazon英国、欧洲站、制定推广与销售计划,达成团队要求的销售业绩;做好数据的统计分析工作,收集、分析...',
  206. workPeriod: ''
  207. }
  208. ]
  209. }
  210. },
  211. methods: {
  212. // 返回上一页
  213. goBack() {
  214. uni.navigateBack()
  215. },
  216. // 显示下拉菜单
  217. showDropdown() {
  218. this.showPositionModal = true
  219. },
  220. // 隐藏职位选择弹窗
  221. hidePositionModal() {
  222. this.showPositionModal = false
  223. },
  224. // 选择职位
  225. selectPosition(index) {
  226. this.selectedPosition = index
  227. // 更新下拉按钮显示的文字
  228. const selectedText = this.positionOptions[index]
  229. // 这里可以更新下拉按钮的显示文字
  230. uni.showToast({
  231. title: `已选择: ${selectedText}`,
  232. icon: 'none'
  233. })
  234. this.hidePositionModal()
  235. },
  236. // 搜索
  237. custom() {
  238. console.log('搜索关键词:', this.searchKeyword)
  239. // 这里可以添加搜索逻辑
  240. },
  241. // 跳转页面
  242. goNavs(url) {
  243. uni.navigateTo({
  244. url: url
  245. })
  246. },
  247. // 清空搜索
  248. clear() {
  249. this.searchKeyword = ''
  250. },
  251. // 跳转页面
  252. goNav(url) {
  253. if (uni.getStorageSync('token')) {
  254. uni.navigateTo({
  255. url: url
  256. })
  257. } else {
  258. this.noLogin()
  259. }
  260. },
  261. // 未登录提示
  262. noLogin() {
  263. uni.showModal({
  264. title: '提示',
  265. content: '您还未登录,请先登录',
  266. confirmColor: '#00B88F',
  267. success: function(res) {
  268. if (res.confirm) {
  269. uni.navigateTo({
  270. url: '/pages/public/login'
  271. })
  272. }
  273. }
  274. })
  275. },
  276. // 显示排序弹窗
  277. showSortModal() {
  278. this.showSortModalFlag = true
  279. },
  280. // 隐藏排序弹窗
  281. hideSortModal() {
  282. this.showSortModalFlag = false
  283. },
  284. // 选择排序选项
  285. selectSort(index) {
  286. this.selectedSort = index
  287. uni.showToast({
  288. title: `已选择: ${this.sortOptions[index]}`,
  289. icon: 'none'
  290. })
  291. this.hideSortModal()
  292. },
  293. // 跳转到人才详情
  294. goToTalentDetail(talent) {
  295. console.log('查看人才详情:', talent)
  296. // 这里可以跳转到人才详情页面
  297. }
  298. }
  299. }
  300. </script>
  301. <style lang="scss" scoped>
  302. // 激活状态样式
  303. .active3 {
  304. flex-direction: row;
  305. justify-content: center;
  306. align-items: center;
  307. padding: 12rpx;
  308. border-radius: 12rpx;
  309. background: #FFFFFF !important;
  310. margin-right: 12rpx;
  311. border: 0.5px solid rgba(1, 107, 246, 1);
  312. color: rgba(1, 107, 246, 1) !important;
  313. font-family: DM Sans;
  314. font-size: 22rpx;
  315. font-weight: 400;
  316. line-height: 20rpx;
  317. letter-spacing: 0px;
  318. text-align: left;
  319. }
  320. .talent-search-page {
  321. min-height: 100vh;
  322. background-color: #f5f5f5;
  323. }
  324. // 搜索框
  325. .search {
  326. position: fixed;
  327. top: 0;
  328. width: 100%;
  329. padding: 80rpx 20rpx 20rpx 20rpx;
  330. background: linear-gradient(180.00deg, rgba(255, 102, 0, 1),rgba(255, 89, 89, 1) 83%);
  331. z-index: 99;
  332. .search-box {
  333. flex: 1;
  334. box-sizing: border-box;
  335. border: 1px solid rgba(227, 231, 236, 1);
  336. border-radius: 24px;
  337. background: rgba(241, 241, 241, 1);
  338. overflow: hidden;
  339. display: flex;
  340. align-items: center;
  341. padding: 0 32rpx;
  342. height: 60rpx;
  343. }
  344. .dropdown-btn {
  345. display: flex;
  346. align-items: center;
  347. padding: 8rpx 16rpx;
  348. background-color: #F1F1F1;
  349. border: 1rpx solid #016BF6;
  350. border-radius: 8rpx;
  351. margin-right: 12rpx;
  352. .dropdown-text {
  353. color: rgba(1, 107, 246, 1);
  354. font-family: DM Sans;
  355. font-size: 20rpx;
  356. font-weight: 400;
  357. line-height: 20rpx;
  358. letter-spacing: -0.5px;
  359. text-align: left;
  360. margin-right: 8rpx;
  361. }
  362. }
  363. .separator {
  364. width: 4rpx;
  365. height: 30rpx;
  366. background-color: rgba(153, 153, 153, 1);
  367. margin-right: 12rpx;
  368. }
  369. .search-input {
  370. flex: 1;
  371. height: 100%;
  372. background: transparent;
  373. color: #333;
  374. font-family: DM Sans;
  375. font-size: 20rpx;
  376. font-weight: 400;
  377. line-height: 48rpx;
  378. letter-spacing: 0.5%;
  379. text-align: left;
  380. &::placeholder {
  381. color: rgba(182, 182, 182, 1);
  382. font-family: DM Sans;
  383. font-size: 20rpx;
  384. font-weight: 400;
  385. line-height: 48rpx;
  386. letter-spacing: 0.5%;
  387. text-align: left;
  388. }
  389. }
  390. .search-btn {
  391. width: 80rpx;
  392. color: rgba(255, 255, 255, 1);
  393. font-family: DM Sans;
  394. font-size: 20rpx;
  395. font-weight: 500;
  396. line-height: 48rpx;
  397. letter-spacing: 0.5%;
  398. text-align: center;
  399. }
  400. }
  401. .search-bar {
  402. display: flex;
  403. align-items: center;
  404. margin-bottom: 20rpx;
  405. .search-input {
  406. flex: 1;
  407. height: 80rpx;
  408. background-color: #f8f8f8;
  409. border-radius: 40rpx;
  410. padding: 0 30rpx;
  411. font-size: 28rpx;
  412. color: #333;
  413. margin-right: 20rpx;
  414. }
  415. .search-btn {
  416. width: 120rpx;
  417. height: 80rpx;
  418. background-color: #016BF6;
  419. color: #ffffff;
  420. border-radius: 40rpx;
  421. display: flex;
  422. align-items: center;
  423. justify-content: center;
  424. font-size: 28rpx;
  425. }
  426. }
  427. .filter-tags {
  428. display: flex;
  429. flex-wrap: wrap;
  430. gap: 16rpx;
  431. .filter-tag {
  432. padding: 12rpx 24rpx;
  433. background-color: #ffffff;
  434. border: 1rpx solid #e5e5e5;
  435. border-radius: 20rpx;
  436. font-size: 24rpx;
  437. color: #666;
  438. }
  439. }
  440. .active3 {
  441. color: #1A1A1A !important;
  442. font-size: 28rpx !important;
  443. font-weight: 800 !important;
  444. }
  445. .topbg-sx-box {
  446. position: fixed;
  447. top: 160rpx;
  448. left: 0;
  449. right: 0;
  450. width: 100%;
  451. background-color: #ffffff;
  452. z-index: 98;
  453. padding: 20rpx;
  454. box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
  455. .topbg-sx-box-l-i {
  456. color: rgba(153, 153, 153, 1);
  457. font-family: DM Sans;
  458. font-size: 24rpx;
  459. font-weight: 400;
  460. line-height: 18px;
  461. letter-spacing: 0%;
  462. text-align: center;
  463. margin-right: 20rpx;
  464. border-radius: 6px;
  465. background: rgba(198, 198, 198, 0.1);
  466. padding: 8rpx 12rpx;
  467. display: inline-block;
  468. min-width: 60rpx;
  469. white-space: nowrap;
  470. &.active3 {
  471. font-family: DM Sans;
  472. font-size: 24rpx !important;
  473. font-weight: 400 !important;
  474. line-height: 18px;
  475. letter-spacing: 0%;
  476. text-align: left;
  477. padding: 8rpx 12rpx !important;
  478. color: rgba(1, 107, 246, 1) !important;
  479. background: rgba(252, 233, 220, 1) !important;
  480. border: 1px solid rgba(1, 107, 246, 1);
  481. }
  482. }
  483. .topbg-sx-box-r-i {
  484. color: rgba(1, 107, 246, 1);
  485. font-family: DM Sans;
  486. font-size: 24rpx;
  487. font-weight: 400;
  488. line-height: 18px;
  489. letter-spacing: 0%;
  490. text-align: center;
  491. margin-right: 20rpx;
  492. border-radius: 6px;
  493. background: rgba(252, 233, 220, 1);
  494. padding: 8rpx 12rpx;
  495. display: inline-block;
  496. min-width: 60rpx;
  497. white-space: nowrap;
  498. cursor: pointer;
  499. transition: all 0.3s ease;
  500. border: 0.5px solid rgba(1, 107, 246, 1);
  501. }
  502. .topbg-sx-box-filter {
  503. color: rgba(153, 153, 153, 1);
  504. font-family: DM Sans;
  505. font-size: 24rpx;
  506. font-weight: 400;
  507. line-height: 18px;
  508. letter-spacing: 0%;
  509. text-align: center;
  510. border-radius: 6px;
  511. background: rgba(198, 198, 198, 0.1);
  512. padding: 8rpx 12rpx;
  513. display: inline-block;
  514. min-width: 60rpx;
  515. white-space: nowrap;
  516. cursor: pointer;
  517. transition: all 0.3s ease;
  518. }
  519. }
  520. .talent-list {
  521. margin-top: 280rpx;
  522. padding: 20rpx;
  523. }
  524. .talent-card {
  525. background-color: #ffffff;
  526. border-radius: 16rpx;
  527. margin-bottom: 20rpx;
  528. padding: 30rpx;
  529. box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
  530. }
  531. .talent-content {
  532. .talent-header {
  533. display: flex;
  534. align-items: flex-start;
  535. .talent-avatar {
  536. width: 80rpx;
  537. height: 80rpx;
  538. border-radius: 50%;
  539. margin-right: 20rpx;
  540. }
  541. .talent-info {
  542. flex: 1;
  543. .talent-name-section {
  544. display: flex;
  545. align-items: center;
  546. justify-content: flex-start;
  547. width: 100%;
  548. margin-bottom: 6rpx;
  549. }
  550. .talent-name {
  551. color: rgba(51, 51, 51, 1);
  552. font-family: DM Sans;
  553. font-size: 28rpx;
  554. font-weight: 500;
  555. line-height: 36rx;
  556. letter-spacing: 0.5%;
  557. text-align: left;
  558. margin-right: 16rpx;
  559. }
  560. .talent-tags {
  561. display: flex;
  562. flex-wrap: wrap;
  563. gap: 10rpx;
  564. .status-tag {
  565. padding: 8rpx;
  566. border-radius: 12rpx;
  567. font-size: 18rpx;
  568. font-family: DM Sans;
  569. font-weight: 400;
  570. line-height: 20rpx;
  571. letter-spacing: -0.5px;
  572. text-align: left;
  573. &.online {
  574. background: rgba(213, 255, 231, 1);
  575. color: rgba(29, 209, 104, 1);
  576. }
  577. &.hot {
  578. background: rgba(252, 233, 220, 1);
  579. color: rgba(1, 107, 246, 1);
  580. }
  581. &.active {
  582. color: rgba(153, 153, 153, 1);
  583. }
  584. }
  585. }
  586. }
  587. }
  588. .talent-experience {
  589. display: flex;
  590. align-items: center;
  591. margin-bottom: 12rpx;
  592. gap: 16rpx;
  593. color: rgba(156, 164, 171, 1);
  594. font-family: DM Sans;
  595. font-size: 24rpx;
  596. font-weight: 400;
  597. line-height: 32rpx;
  598. letter-spacing: 0.5%;
  599. text-align: left;
  600. }
  601. .current-job {
  602. display: flex;
  603. align-items: center;
  604. margin-bottom: 12rpx;
  605. .job-icon {
  606. width: 40rpx;
  607. height: 40rpx;
  608. margin-right: 8rpx;
  609. }
  610. .job-text {
  611. color: rgba(156, 164, 171, 1);
  612. font-family: DM Sans;
  613. font-size: 24rpx;
  614. font-weight: 400;
  615. line-height: 40rpx;
  616. letter-spacing: 0.5%;
  617. text-align: left;
  618. }
  619. }
  620. .job-expectation {
  621. display: flex;
  622. align-items: center;
  623. margin-bottom: 16rpx;
  624. .job-icon {
  625. width: 40rpx;
  626. height: 40rpx;
  627. margin-right: 8rpx;
  628. }
  629. .expectation-text {
  630. color: rgba(156, 164, 171, 1);
  631. font-family: DM Sans;
  632. font-size: 24rpx;
  633. font-weight: 400;
  634. line-height: 40rpx;
  635. letter-spacing: 0.5%;
  636. text-align: left;
  637. }
  638. }
  639. .skill-tags {
  640. display: flex;
  641. flex-wrap: wrap;
  642. gap: 10rpx;
  643. margin-bottom: 16rpx;
  644. .skill-tag {
  645. padding: 8rpx;
  646. background: rgba(198, 198, 198, 0.1);
  647. border-radius: 12rpx;
  648. color: rgba(153, 153, 153, 1);
  649. font-family: DM Sans;
  650. font-size: 20rpx;
  651. font-weight: 400;
  652. line-height: 20rpx;
  653. letter-spacing: -0.5px;
  654. text-align: left;
  655. }
  656. }
  657. .job-description {
  658. margin-bottom: 12rpx;
  659. .description-text {
  660. color: rgba(97, 110, 124, 1);
  661. font-family: DM Sans;
  662. font-size: 24rpx;
  663. font-weight: 400;
  664. line-height: 32rpx;
  665. letter-spacing: 0px;
  666. text-align: left;
  667. }
  668. }
  669. .work-period {
  670. text-align: right;
  671. .period-text {
  672. font-size: 22rpx;
  673. color: #999;
  674. }
  675. }
  676. }
  677. // 职位选择弹窗样式
  678. .position-modal {
  679. position: fixed;
  680. top: 0;
  681. left: 0;
  682. right: 0;
  683. bottom: 0;
  684. background: rgba(0, 0, 0, 0.5);
  685. z-index: 10001;
  686. display: flex;
  687. align-items: flex-end;
  688. .position-modal-content {
  689. width: 100%;
  690. background: #ffffff;
  691. border-radius: 24rpx 24rpx 0 0;
  692. padding: 20rpx 40rpx 40rpx 40rpx;
  693. max-height: 60vh;
  694. .position-modal-handle {
  695. width: 80rpx;
  696. height: 8rpx;
  697. background: #E5E5E5;
  698. border-radius: 4rpx;
  699. margin: 0 auto 30rpx auto;
  700. }
  701. .position-modal-title {
  702. font-size: 32rpx;
  703. font-weight: 600;
  704. color: #333333;
  705. text-align: center;
  706. padding-bottom: 30rpx;
  707. margin-bottom: 30rpx;
  708. border-bottom: 1px solid rgba(153, 153, 153, 0.25);
  709. }
  710. .position-options {
  711. .position-option {
  712. display: flex;
  713. align-items: center;
  714. padding: 24rpx 32rpx;
  715. margin-bottom: 16rpx;
  716. border-radius: 42rpx;
  717. border: 2rpx solid rgba(227, 231, 236, 1);
  718. &.active {
  719. background: #F0F8FF;
  720. border-color: #007AFF;
  721. .position-option-icon {
  722. background: #007AFF;
  723. border-color: #007AFF;
  724. .check-icon {
  725. color: #ffffff;
  726. }
  727. }
  728. .position-option-text {
  729. color: #007AFF;
  730. font-weight: 500;
  731. }
  732. }
  733. .position-option-icon {
  734. width: 40rpx;
  735. height: 40rpx;
  736. border-radius: 50%;
  737. border: 2rpx solid #E5E5E5;
  738. background: #ffffff;
  739. display: flex;
  740. align-items: center;
  741. justify-content: center;
  742. margin-right: 24rpx;
  743. .check-icon {
  744. font-size: 24rpx;
  745. color: #ffffff;
  746. font-weight: bold;
  747. }
  748. }
  749. .position-option-text {
  750. font-size: 28rpx;
  751. color: #333333;
  752. flex: 1;
  753. }
  754. }
  755. }
  756. }
  757. }
  758. </style>