workRecord.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871
  1. <template>
  2. <view class="resume-container">
  3. <!-- 导航栏 -->
  4. <navBar title="近期工作经验" color="#000" />
  5. <view class="resume-content">
  6. <!-- 头像上传区域 -->
  7. <view class="form-label">头像</view>
  8. <view class="avatar-section">
  9. <view class="avatar-upload" @click="chooseAvatar">
  10. <view class="avatar-preview">
  11. <image
  12. v-if="formData.avatar"
  13. :src="formData.avatar"
  14. class="avatar-image"
  15. mode="aspectFill"
  16. ></image>
  17. <image
  18. v-else
  19. src="@/static/images/jobApplicant/touxiang.svg"
  20. mode="scaleToFill"
  21. class="user-img"
  22. />
  23. </view>
  24. <view class="upload-view">上传头像</view>
  25. </view>
  26. </view>
  27. <!-- 基本信息表单 -->
  28. <view class="form-section">
  29. <!-- 姓名 -->
  30. <view class="form-item required">
  31. <view class="form-label">姓名</view>
  32. <u-input
  33. placeholder="请输入姓名"
  34. v-model="formData.name"
  35. :border="false"
  36. class="form-input"
  37. ></u-input>
  38. </view>
  39. <!-- 性别 -->
  40. <view class="form-item required">
  41. <view class="form-label">性别</view>
  42. <view class="gender-select">
  43. <view class="gender-option" @click="formData.gender = 1">
  44. <image
  45. v-if="formData.gender === 1"
  46. src="/static/images/jobApplicant/radio-check.svg"
  47. mode="scaleToFill"
  48. />
  49. <image
  50. v-else
  51. src="/static/images/jobApplicant/radio.svg"
  52. mode="scaleToFill"
  53. />
  54. 男</view
  55. >
  56. <view class="gender-option" @click="formData.gender = 2">
  57. <image
  58. v-if="formData.gender === 2"
  59. src="/static/images/jobApplicant/radio-check.svg"
  60. mode="scaleToFill"
  61. />
  62. <image
  63. v-else
  64. src="/static/images/jobApplicant/radio.svg"
  65. mode="scaleToFill"
  66. />
  67. 女</view
  68. >
  69. </view>
  70. </view>
  71. <!-- 联系方式 -->
  72. <view class="form-item required">
  73. <view class="form-label">联系方式</view>
  74. <u-input
  75. placeholder="请输入联系方式"
  76. v-model="formData.phone"
  77. :border="false"
  78. class="form-input"
  79. ></u-input>
  80. </view>
  81. <!-- 出生年月 -->
  82. <view class="form-item required">
  83. <view class="form-label">出生年月</view>
  84. <view @click="pickerShow" class="form-input-time">
  85. <text>{{
  86. formData.birthDate ? formData.birthDate : "请选择出生年月日"
  87. }}</text>
  88. <image src="@/static/images/jobApplicant/rili.svg" mode="scaleToFill" />
  89. </view>
  90. </view>
  91. <!-- 求职状态 -->
  92. <view class="form-item required">
  93. <view class="form-label">求职状态</view>
  94. <view @click.stop="showJobStatus" class="form-input-time">
  95. <text>{{ statusList[formData.jobStatus].text}}</text>
  96. <image src="@/static/images/jobApplicant/icon-next.svg" mode="scaleToFill" />
  97. </view>
  98. </view>
  99. </view>
  100. <!-- 工作经历 -->
  101. <view class="section">
  102. <view class="section-header">
  103. <view class="form-item required">
  104. <view class="job-title">
  105. <view class="job-title-txt"
  106. >工作经历 <text class="job-txt">请填写专属聘用行业的工作经验</text></view
  107. >
  108. <image
  109. @click="goWorkProgress"
  110. class="job-image"
  111. src="@/static/images/jobApplicant/edit.svg"
  112. mode="scaleToFill"
  113. />
  114. </view>
  115. </view>
  116. </view>
  117. <view
  118. class="experience-item"
  119. v-for="(exp, index) in workExperiences"
  120. :key="index"
  121. >
  122. <view class="job-content">
  123. <view class="job-icon">
  124. <image src="/static/images/jobApplicant/xuexiao.svg" mode="scaleToFill" />
  125. </view>
  126. <view class="right-content">
  127. <view class="job-content-txt" v-for="it in exp.workExpDetails">
  128. <view class="exp-header">
  129. <view class="exp-position">
  130. <view class="position">{{ it.position }}</view>
  131. <view class="department">{{ it.department }}</view>
  132. </view>
  133. <!-- <u-icon
  134. name="close"
  135. size="18"
  136. color="#999"
  137. @click="removeWorkExperience(index)"
  138. ></u-icon> -->
  139. </view>
  140. <view class="exp-company">
  141. <view class="company">{{ exp.companyName }}</view>
  142. <view class="yuan">·</view>
  143. <view class="duration">{{ it.startTime }} - {{ it.endTime }}</view>
  144. </view>
  145. <view class="exp-content">
  146. <view class="content-label">{{it.workContent}}</view>
  147. </view>
  148. <view class="exp-content">
  149. <view class="skill-tags">
  150. <view class="tag" v-for="skill in it.skills">{{skill}}</view>
  151. </view>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. </view>
  157. </view>
  158. <!-- 教育经历 -->
  159. <view class="section">
  160. <view class="section-header">
  161. <view class="form-item required">
  162. <view class="job-title">
  163. <view class="job-title-txt">教育经历</view>
  164. <image
  165. class="job-image"
  166. src="@/static/images/jobApplicant/edit.svg"
  167. mode="scaleToFill"
  168. />
  169. </view>
  170. </view>
  171. </view>
  172. <view
  173. class="experience-item"
  174. v-for="(item, index) in eduList"
  175. :key="index"
  176. >
  177. <view class="job-content">
  178. <view class="job-icon">
  179. <image src="/static/images/jobApplicant/bumen.svg" mode="scaleToFill" />
  180. </view>
  181. <view class="job-content-txt">
  182. <view class="exp-header">
  183. <view class="exp-position">
  184. <view class="position">{{item.school}}</view>
  185. </view>
  186. </view>
  187. <view class="exp-company">
  188. <view class="company">{{item.degree}}</view>
  189. <view class="yuan">·</view>
  190. <view class="duration">{{item.profession}}</view>
  191. <view class="yuan">·</view>
  192. <view class="duration">{{new Date(item.startTime).getFullYear()}} - {{new Date(item.endTime).getFullYear()}}</view>
  193. </view>
  194. <view class="exp-content">
  195. <view class="content-label">{{item.detail}}</view>
  196. </view>
  197. </view>
  198. </view>
  199. </view>
  200. </view>
  201. <!-- 个人优势 -->
  202. <view class="section">
  203. <view class="section-header">
  204. <view class="form-item required">
  205. <view class="job-title">
  206. <view class="job-title-txt">个人优势</view>
  207. <image
  208. class="job-image"
  209. src="@/static/images/jobApplicant/edit.svg"
  210. mode="scaleToFill"
  211. />
  212. </view>
  213. </view>
  214. </view>
  215. <view class="advantage-content">
  216. <view type="textarea" class="advantage-textarea">
  217. <textarea
  218. placeholder="请输入个人优势"
  219. v-model="formData.advantages"
  220. class=""
  221. ></textarea>
  222. </view>
  223. </view>
  224. </view>
  225. <!-- 底部按钮 -->
  226. <view class="footer">
  227. <u-button
  228. type="primary"
  229. @click="submitResume"
  230. :customStyle="{
  231. height: '90rpx',
  232. fontSize: '32rpx',
  233. borderRadius: '45rpx',
  234. margin: '40rpx 0',
  235. }"
  236. >开启求职之旅</u-button
  237. >
  238. </view>
  239. </view>
  240. <u-picker
  241. v-model="showBirthDatePicker"
  242. :columns="dateColumns"
  243. keyName="label"
  244. @confirm="confirmBirthDate"
  245. @cancel="showBirthDatePicker = false"
  246. ></u-picker>
  247. <u-action-sheet :list="statusList" v-model="showStatus" @click="confirmStatus"></u-action-sheet>
  248. </view>
  249. </template>
  250. <script>
  251. import navBar from "@/components/nav-bar/index.vue";
  252. export default {
  253. data() {
  254. // 生成日期选择器数据
  255. const currentYear = new Date().getFullYear();
  256. const years = [];
  257. const months = [];
  258. const days = [];
  259. for (let i = currentYear - 50; i <= currentYear; i++) {
  260. years.push({ label: i + "年", value: i });
  261. }
  262. for (let i = 1; i <= 12; i++) {
  263. months.push({ label: i + "月", value: i });
  264. }
  265. for (let i = 1; i <= 31; i++) {
  266. days.push({ label: i + "日", value: i });
  267. }
  268. return {
  269. show: false,
  270. showBirthDatePicker: false,
  271. dateColumns: [years, months, days],
  272. statusList: [
  273. {
  274. value: '0',
  275. text: '离职-随时到岗'
  276. },
  277. {
  278. value: '1',
  279. text: '在职-月内到岗',
  280. },
  281. {
  282. value: '2',
  283. text: '在职-考虑机会',
  284. },
  285. {
  286. value: '3',
  287. text: '在职-暂不考虑',
  288. }
  289. ],
  290. showStatus: false,
  291. formData: {
  292. avatar:"",
  293. name: "",
  294. gender: 1,
  295. jobStatus:0,
  296. phone:'',
  297. birthDate: "",
  298. advantages: "",
  299. ifExp:0
  300. },
  301. workExperiences: [
  302. {
  303. companyName: "公司名称",
  304. workExpDetails:[{
  305. department: "部门",
  306. position: "职位名称",
  307. startTime: "就职时间",
  308. endTime: "离职时间",
  309. workContent: "请填写简历工作内容",
  310. skills: ["请填写面试技能要求"],
  311. }
  312. ]
  313. },
  314. ],
  315. eduList:[{
  316. school: "学校时间",
  317. profession: "专业",
  318. startTime: "2012-09-1",
  319. endTime: "2016-6-10",
  320. detail: "请填写您的教育经历",
  321. degree: "学历",
  322. }
  323. ]
  324. };
  325. },
  326. components: {
  327. navBar,
  328. },
  329. onLoad(){
  330. this.getData()
  331. var that=this
  332. uni.$on('updateResume',()=>{
  333. that.getData()
  334. })
  335. },
  336. methods: {
  337. getData(){
  338. var that=this
  339. this.$Request.getT("/app/userFirst/getUserResumes", {}).then((res) => {
  340. if (res.code == 0) {
  341. res.data.workExps.forEach(function(item){
  342. item.type=JSON.parse(item.type)
  343. item.workExpDetails=[]
  344. res.data.workExpList.forEach(function(it){
  345. it.skills=JSON.parse(it.skills)
  346. it.startTime=it.startTime.slice(0, 7);
  347. if(that.$queue.isCurrentMonth(new Date(it.endTime)))
  348. it.endTime='至今'
  349. else
  350. it.endTime= it.endTime.slice(0, 7);
  351. if(it.workExpId==item.workExpId)
  352. item.workExpDetails.push(it)
  353. })
  354. })
  355. if(res.data.workExps.length>0)
  356. that.workExperiences=res.data.workExps
  357. if(res.data.eduList.length>0)
  358. that.eduList=res.data.eduList
  359. that.formData.ifExp=res.data.resumeList.ifExp
  360. } else {
  361. uni.showToast({
  362. title: res.msg,
  363. icon: "none",
  364. });
  365. }
  366. });
  367. },
  368. showJobStatus() {
  369. this.showStatus = true;
  370. },
  371. pickerShow() {
  372. this.showBirthDatePicker = true;
  373. },
  374. confirmStatus(e) {
  375. this.showStatus = false;
  376. this.formData.jobStatus=e
  377. },
  378. goWorkProgress(){
  379. uni.navigateTo({ url: '/pages/my/workExperience' })
  380. },
  381. // 选择头像
  382. chooseAvatar() {
  383. var that=this
  384. uni.chooseImage({
  385. count: 1,
  386. sizeType: ["compressed"],
  387. sourceType: ["album", "camera"],
  388. success: (res) => {
  389. that.$queue.uploadFile(res.tempFilePaths[0],function(path){
  390. if(path)
  391. that.formData.avatar = path;
  392. })
  393. },
  394. });
  395. },
  396. // 确认出生日期
  397. confirmBirthDate(e) {
  398. const { year, month, day } = e;
  399. this.formData.birthDate = `${year}-${month}-${day}`;
  400. this.showBirthDatePicker = false;
  401. },
  402. // 添加工作经历
  403. addWorkExperience() {
  404. this.workExperiences.push({
  405. position: "职位",
  406. department: "部门",
  407. company: "公司名称",
  408. duration: "就职时间",
  409. content: "请填写简历工作内容",
  410. skills: "请填写面试技能要求",
  411. });
  412. },
  413. // 删除工作经历
  414. removeWorkExperience(index) {
  415. if (this.workExperiences.length > 1) {
  416. this.workExperiences.splice(index, 1);
  417. } else {
  418. uni.showToast({
  419. title: "至少保留一条工作经历",
  420. icon: "none",
  421. });
  422. }
  423. },
  424. // 提交简历
  425. submitResume() {
  426. var that=this
  427. if (!this.formData.name) {
  428. uni.showToast({ title: "请输入姓名", icon: "none" });
  429. return;
  430. }
  431. if (!this.formData.gender) {
  432. uni.showToast({ title: "请选择性别", icon: "none" });
  433. return;
  434. }
  435. if (!this.formData.birthDate) {
  436. uni.showToast({ title: "请输入出生年月", icon: "none" });
  437. return;
  438. }
  439. let data={
  440. avatar:this.formData.avatar,
  441. userName:this.formData.name,
  442. sex:this.formData.gender,
  443. phone:this.formData.phone
  444. }
  445. uni.showLoading({ title: "提交中..." });
  446. this.$Request.postJson("/app/user/updateUser", data).then((res) => {
  447. uni.hideLoading();
  448. if (res.code == 0) {
  449. that.setResume()
  450. } else {
  451. uni.showToast({
  452. title: res.msg,
  453. icon: "none",
  454. });
  455. }
  456. });
  457. },
  458. setResume() {
  459. let data={
  460. birthday:this.formData.birthDate,
  461. resumesStatus:this.formData.jobStatus,
  462. adv:this.formData.advantages,
  463. ifExp:this.formData.ifExp,
  464. }
  465. this.$Request.postJson("/app/userFirst/regist", data).then((res) => {
  466. if (res.code == 0) {
  467. // 实际开发中可以在这里添加跳转逻辑
  468. uni.showToast({ title: "提交成功", icon: "none" });
  469. uni.setStorageSync("firstLogin", true);
  470. // 实际开发中可以在这里添加跳转逻辑
  471. setTimeout(() => {
  472. uni.switchTab({ url: '/pages/index/index' })
  473. }, 1000);
  474. } else {
  475. uni.showToast({
  476. title: res.msg,
  477. icon: "none",
  478. });
  479. }
  480. });
  481. }
  482. },
  483. };
  484. </script>
  485. <style lang="scss" scoped>
  486. .resume-container {
  487. position: absolute;
  488. left: 0;
  489. right: 0;
  490. top: 0;
  491. bottom: 0;
  492. overflow: hidden;
  493. display: flex;
  494. flex-direction: column;
  495. }
  496. .job-title {
  497. display: flex;
  498. justify-content: space-between;
  499. align-items: center;
  500. }
  501. .job-image {
  502. width: 48rpx;
  503. height: 48rpx;
  504. }
  505. .nav-bar {
  506. height: 88rpx;
  507. display: flex;
  508. align-items: center;
  509. justify-content: center;
  510. background: #fff;
  511. }
  512. .nav-title {
  513. font-size: 36rpx;
  514. font-weight: bold;
  515. color: #000;
  516. }
  517. .resume-content {
  518. padding: 32rpx;
  519. box-sizing: border-box;
  520. overflow: hidden;
  521. overflow-y: auto;
  522. }
  523. /* 头像区域 */
  524. .avatar-section {
  525. display: flex;
  526. }
  527. .avatar-upload {
  528. display: flex;
  529. align-items: center;
  530. }
  531. .avatar-preview {
  532. width: 48rpx;
  533. height: 48rpx;
  534. border-radius: 50%;
  535. display: flex;
  536. align-items: center;
  537. justify-content: center;
  538. margin-right: 20rpx;
  539. }
  540. .avatar-image {
  541. width: 100%;
  542. height: 100%;
  543. border-radius: 50%;
  544. }
  545. .upload-view {
  546. color: #016bf6;
  547. font-family: DM Sans;
  548. font-size: 20rpx;
  549. font-weight: 500;
  550. line-height: 48rpx;
  551. }
  552. .form-item {
  553. padding-bottom: 24rpx;
  554. box-sizing: border-box;
  555. .job-txt {
  556. color: #016bf6;
  557. font-family: DM Sans;
  558. font-size: 20rpx;
  559. margin-left: 16rpx;
  560. }
  561. }
  562. .form-item:last-child {
  563. border-bottom: none;
  564. }
  565. .form-label {
  566. color: #1f2c37;
  567. font-family: DM Sans;
  568. font-size: 28rpx;
  569. font-weight: 500;
  570. line-height: 44rpx;
  571. padding-top: 30rpx;
  572. padding-bottom: 27rpx;
  573. box-sizing: border-box;
  574. }
  575. .form-input {
  576. flex: 1;
  577. box-sizing: border-box;
  578. border: 2rpx solid #9ea1a8;
  579. border-radius: 100rpx;
  580. background: rgba(255, 255, 255, 1);
  581. padding: 0rpx 24rpx !important;
  582. }
  583. .form-input-time {
  584. flex: 1;
  585. box-sizing: border-box;
  586. border: 2rpx solid #e3e7ec;
  587. border-radius: 100rpx;
  588. background: rgba(255, 255, 255, 1);
  589. padding: 10rpx 24rpx;
  590. color: rgba(153, 153, 153, 1);
  591. font-family: DM Sans;
  592. font-size: 24rpx;
  593. font-weight: 500;
  594. display: flex;
  595. justify-content: space-between;
  596. align-items: center;
  597. image {
  598. width: 48rpx;
  599. height: 48rpx;
  600. }
  601. }
  602. ::v-deep .input-placeholder {
  603. color: rgba(153, 153, 153, 1) !important;
  604. font-family: DM Sans;
  605. font-size: 24rpx !important;
  606. font-weight: 500;
  607. }
  608. .user-img {
  609. width: 48rpx;
  610. height: 48rpx;
  611. }
  612. .required .form-label::before {
  613. content: "*";
  614. color: #fa3534;
  615. margin-right: 8rpx;
  616. }
  617. /* 性别选择 */
  618. .gender-select {
  619. display: flex;
  620. flex: 1;
  621. gap: 40rpx;
  622. }
  623. .gender-option {
  624. display: flex;
  625. align-items: center;
  626. color: #171725;
  627. font-family: DM Sans;
  628. font-size: 24rpx;
  629. font-weight: 400;
  630. line-height: 48rpx;
  631. text-align: left;
  632. image {
  633. width: 32rpx;
  634. height: 32rpx;
  635. margin-right: 8rpx;
  636. }
  637. }
  638. .phone-view,
  639. .job-status {
  640. flex: 1;
  641. font-size: 32rpx;
  642. color: #333;
  643. }
  644. .section {
  645. box-sizing: border-box;
  646. border: 2rpx solid #016bf6;
  647. border-radius: 24rpx;
  648. background: #fff;
  649. padding: 32rpx;
  650. box-sizing: border-box;
  651. margin-bottom: 30rpx;
  652. }
  653. .section-header {
  654. margin-bottom: 24rpx;
  655. }
  656. /* 经历项目 */
  657. .experience-item {
  658. border-radius: 12rpx;
  659. padding: 24rpx;
  660. box-sizing: border-box;
  661. }
  662. .job-content {
  663. display: flex;
  664. gap: 42rpx;
  665. .job-icon {
  666. width: 96rpx;
  667. height: 96rpx;
  668. border-radius: 16rpx;
  669. background: rgba(246, 246, 246, 1);
  670. display: flex;
  671. justify-content: center;
  672. align-items: center;
  673. flex-shrink: 0;
  674. image {
  675. width: 64rpx;
  676. height: 64rpx;
  677. }
  678. }
  679. .right-content{
  680. width: 100%;
  681. }
  682. .job-content-txt {
  683. margin-bottom: 20rpx;
  684. }
  685. }
  686. .exp-header {
  687. display: flex;
  688. justify-content: space-between;
  689. align-items: center;
  690. margin-bottom: 16rpx;
  691. }
  692. .exp-position {
  693. display: flex;
  694. align-items: center;
  695. }
  696. .position {
  697. color: #171725;
  698. font-family: DM Sans;
  699. font-size: 28rpx;
  700. font-weight: 400;
  701. line-height: 44rpx;
  702. text-align: left;
  703. }
  704. .department {
  705. font-size: 24rpx;
  706. color: #999;
  707. margin-left: 16rpx;
  708. }
  709. .exp-company {
  710. display: flex;
  711. align-items: center;
  712. margin-bottom: 16rpx;
  713. color: #78828a;
  714. font-family: DM Sans;
  715. font-size: 16rpx;
  716. font-weight: 400;
  717. line-height: 40rpx;
  718. text-align: left;
  719. .yuan {
  720. padding: 0 16rpx;
  721. box-sizing: border-box;
  722. font-size: 40rpx;
  723. }
  724. }
  725. .exp-content {
  726. margin-bottom: 12rpx;
  727. }
  728. .exp-content:last-child {
  729. margin-bottom: 0;
  730. }
  731. .content-label {
  732. color: rgba(120, 130, 138, 1);
  733. font-family: DM Sans;
  734. font-size: 16rpx;
  735. font-weight: 400;
  736. line-height: 20rpx;
  737. text-align: left;
  738. margin-bottom: 10rpx;
  739. }
  740. .skill-tags {
  741. display: flex;
  742. flex-wrap: wrap;
  743. gap: 8rpx;
  744. margin-top: 12rpx;
  745. .tag {
  746. background: rgba(153, 153, 153, 0.1);
  747. border-radius: 12rpx;
  748. padding: 6rpx;
  749. color: rgba(102, 102, 102, 1);
  750. font-family: DM Sans;
  751. font-size: 16rpx;
  752. font-weight: 400;
  753. letter-spacing: 0%;
  754. text-align: left;
  755. }
  756. }
  757. .content-view {
  758. font-size: 28rpx;
  759. color: #333;
  760. line-height: 1.5;
  761. }
  762. /* 教育经历 */
  763. .education-item {
  764. background: #f8f9fa;
  765. border-radius: 12rpx;
  766. padding: 24rpx;
  767. margin-bottom: 24rpx;
  768. }
  769. .edu-header {
  770. display: flex;
  771. justify-content: space-between;
  772. align-items: center;
  773. margin-bottom: 16rpx;
  774. }
  775. .edu-school {
  776. font-size: 32rpx;
  777. color: #333;
  778. font-weight: 500;
  779. }
  780. .edu-info {
  781. display: flex;
  782. align-items: center;
  783. margin-bottom: 12rpx;
  784. }
  785. .edu-degree,
  786. .edu-major,
  787. .edu-duration {
  788. font-size: 28rpx;
  789. color: #666;
  790. margin-right: 20rpx;
  791. }
  792. .edu-content {
  793. margin-top: 12rpx;
  794. }
  795. .add-view {
  796. font-size: 28rpx;
  797. margin-left: 12rpx;
  798. }
  799. .advantage-textarea {
  800. color: rgba(120, 130, 138, 1);
  801. font-family: DM Sans;
  802. font-size: 24rpx;
  803. font-weight: 400;
  804. line-height: 32rpx;
  805. padding: 32rpx;
  806. padding-top: 0;
  807. box-sizing: border-box;
  808. }
  809. .footer {
  810. padding-bottom: 40rpx;
  811. }
  812. ::v-deep .u-input {
  813. text-align: left !important;
  814. }
  815. </style>