publish.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  1. <template>
  2. <view class="content">
  3. <view class="box" v-if="JSON.stringify(base_info) === '{}'">
  4. <view class="box_title">基本信息</view>
  5. <view class="hflex acenter jbetween box_info">
  6. <view class="hflex acenter">
  7. <image src="/static/images/index/demand/icon1.png" class="box_icon"></image>
  8. <view class="vflex">
  9. <view class="box_title">完善个人信息</view>
  10. <view class="box_subTitle">让更多人更好的了解你</view>
  11. </view>
  12. </view>
  13. <view class="box_btn" @click="perfect(1)">完善</view>
  14. </view>
  15. </view>
  16. <view class="box hflex jbetween" v-else>
  17. <view class="">
  18. <view class="hflex acenter">
  19. <view class="name">{{base_info.name}}</view>
  20. <view class="edit_btn" @click="perfect(1)">编辑</view>
  21. </view>
  22. <view class="hflex acenter" style="padding-top: 16rpx;">
  23. <view class="hflex acenter padR-24" v-if="base_info.sex">
  24. <image src="/static/images/index/demand/sex.png" class="icon"></image>
  25. <view class="text_style1">{{base_info.sex}}</view>
  26. </view>
  27. <view class="hflex acenter padR-24" v-if="base_info.edu">
  28. <image src="/static/images/index/demand/edution.png" class="icon"></image>
  29. <view class="text_style1">{{base_info.edu}}</view>
  30. </view>
  31. <view class="hflex acenter padR-24" v-if="base_info.age">
  32. <image src="/static/images/index/demand/birthday.png" class="icon"></image>
  33. <view class="text_style1">{{base_info.age}}岁</view>
  34. </view>
  35. <view class="hflex acenter padR-24" v-if="base_info.year > 0">
  36. <image src="/static/images/index/demand/work.png" class="icon"></image>
  37. <view class="text_style1">{{base_info.year}}年</view>
  38. </view>
  39. </view>
  40. <view class="hflex acenter padT-26">
  41. <u-icon name="phone-fill" color="#666666" size="14" class="padR-24"></u-icon>
  42. <view class="text_style1">{{base_info.phone}}</view>
  43. </view>
  44. <view class="hflex acenter padT-26">
  45. <image src="/static/images/index/demand/email.png" class="icon"></image>
  46. <view class="text_style1">{{base_info.email}}<span style="color: #506dff;" @click="copy(base_info.email)"><span style="padding: 0 5rpx;">|</span>复制</span></view>
  47. </view>
  48. </view>
  49. <image :src="base_info.avatar" mode="aspectFill" class="avatar"></image>
  50. </view>
  51. <view class="box" v-if="JSON.stringify(job_inte) == '{}'">
  52. <view class="box_title">求职意向</view>
  53. <view class="hflex acenter jbetween box_info">
  54. <view class="hflex acenter">
  55. <image src="/static/images/index/demand/icon1.png" class="box_icon"></image>
  56. <view class="vflex">
  57. <view class="box_title">完善求职意向</view>
  58. <view class="box_subTitle">我们会更精准的为你推荐</view>
  59. </view>
  60. </view>
  61. <view class="box_btn" @click="perfect(2)">完善</view>
  62. </view>
  63. </view>
  64. <view class="box" v-else>
  65. <view class="hflex acenter jbetween">
  66. <view class="box_title">求职意向</view>
  67. <view class="edit_btn" @click="perfect(2)">编辑</view>
  68. </view>
  69. <view class="hflex acenter padT-26">
  70. <view class="box_title">{{job_inte.post}}</view>
  71. <view class="box_title">{{job_inte.salary}}</view>
  72. </view>
  73. <view class="hflex fwrap padT-26">
  74. <view class="label">可工作区域</view>
  75. <view class="text_style1" style="flex: 1;">{{job_inte.work_address}}</view>
  76. </view>
  77. <view class="hflex acenter padT-26">
  78. <view class="label">可工作时间</view>
  79. <view class="text_style1">{{job_inte.work_time}}</view>
  80. </view>
  81. <view class="hflex acenter padT-26">
  82. <view class="label">工作性质</view>
  83. <view class="text_style1">{{job_inte.work_nature}}</view>
  84. </view>
  85. </view>
  86. <view class="box" v-if="experience.length == 0">
  87. <view class="box_title">工作经历</view>
  88. <view class="hflex acenter jbetween box_info">
  89. <view class="hflex acenter">
  90. <image src="/static/images/index/demand/icon1.png" class="box_icon"></image>
  91. <view class="vflex">
  92. <view class="box_title">完善工作经历</view>
  93. <view class="box_subTitle">我们会跟精准的为你推荐</view>
  94. </view>
  95. </view>
  96. <view class="box_btn" @click="perfect(3)">完善</view>
  97. </view>
  98. </view>
  99. <view class="box" v-else>
  100. <view class="hflex acenter jbetween">
  101. <view class="box_title">工作经历</view>
  102. <view class="hflex acenter" @click="perfect(3)">
  103. <u-icon name="plus-circle-fill" color="#555555" size="12"></u-icon>
  104. <view class="text_style1">添加</view>
  105. </view>
  106. </view>
  107. <block v-for="(item,index) in experience" :key="index">
  108. <view class="padT-26" @click="editInfo(item.id)">
  109. <view class="hflex acenter jbetween">
  110. <view class="box_title">{{item.content.company_name}}</view>
  111. <u-icon name="arrow-right" color="#555555" size="12"></u-icon>
  112. </view>
  113. <view class="hflex acenter padT-26">
  114. <view class="text_style1 padR-24">{{item.content.on_job_start}}-{{item.content.on_job_end}}</view>
  115. <view class="text_style1">{{item.content.position_name}}</view>
  116. </view>
  117. <view class="hflex fwrap padT-26 text_style2">工作内容:{{item.content.job_description}}</view>
  118. </view>
  119. </block>
  120. </view>
  121. <view class="box" v-if="skills.length == 0">
  122. <view class="box_title">专业技能</view>
  123. <view class="hflex acenter jbetween box_info">
  124. <view class="hflex acenter">
  125. <image src="/static/images/index/demand/icon1.png" class="box_icon"></image>
  126. <view class="vflex">
  127. <view class="box_title">添加专业技能</view>
  128. <view class="box_subTitle">把你的强项展示一下吧</view>
  129. </view>
  130. </view>
  131. <view class="box_btn" @click="perfect(4)">添加</view>
  132. </view>
  133. </view>
  134. <view class="box" v-else>
  135. <view class="hflex acenter jbetween">
  136. <view class="box_title">专业技能</view>
  137. <view class="hflex acenter" @click="perfect(4)">
  138. <u-icon name="plus-circle-fill" color="#555555" size="12"></u-icon>
  139. <view class="text_style1">添加</view>
  140. </view>
  141. </view>
  142. <view class="hflex acenter fwrap">
  143. <block v-for="(item,index) in skills" :key="index">
  144. <view class="hflex acenter jbetween item_box2">
  145. <view class="text_style1">{{item.content.skill_name}}</view>
  146. <view class="text_style1">{{item.content.degree}}</view>
  147. <image src="/static/images/index/demand/detele.png" class="detele" @click="deleteOpen(item.id)"></image>
  148. </view>
  149. </block>
  150. </view>
  151. </view>
  152. <view class="box" v-if="certificate.length == 0">
  153. <view class="box_title">资质证书</view>
  154. <view class="hflex acenter jbetween box_info">
  155. <view class="hflex acenter">
  156. <image src="/static/images/index/demand/icon1.png" class="box_icon"></image>
  157. <view class="vflex">
  158. <view class="box_title">添加资质证书</view>
  159. <view class="box_subTitle">把你的强项展示一下吧</view>
  160. </view>
  161. </view>
  162. <view class="box_btn" @click="perfect(5)">添加</view>
  163. </view>
  164. </view>
  165. <view class="box" v-else>
  166. <view class="hflex acenter jbetween">
  167. <view class="box_title">资质证书</view>
  168. <view class="hflex acenter" @click="perfect(5)">
  169. <u-icon name="plus-circle-fill" color="#555555" size="12"></u-icon>
  170. <view class="text_style1">添加</view>
  171. </view>
  172. </view>
  173. <view class="">
  174. <block v-for="(item,index) in certificate" :key="index">
  175. <view class="hflex aend item_box3">
  176. <view class="box_title padR-24">{{item.content.certificate_name}}</view>
  177. <view class="text_style1">{{item.content.gain_time}}</view>
  178. <image src="/static/images/index/demand/detele.png" class="detele" @click="deleteSure(item.id)"></image>
  179. </view>
  180. </block>
  181. </view>
  182. </view>
  183. <view class="box" style="margin-bottom: 186rpx;">
  184. <view class="box_title" style="padding-bottom: 16rpx;">福利待遇</view>
  185. <u-input v-model="salary" placeholder="请填写你期望的薪资待遇" border="none"></u-input>
  186. <view class="line"></view>
  187. <view class="box_title" style="padding-bottom: 16rpx;">备注</view>
  188. <u-input v-model="remarks" placeholder="请填写你想要备注的内容" border="none"></u-input>
  189. </view>
  190. <view class="bottom" v-if="audit !== 1 || audit !== 2">
  191. <view class="bottom_btn" :class="is_publish?'publish_btn':''" @click="open">发布</view>
  192. </view>
  193. <u-popup :show="show" mode="bottom" :round="20" @close="close">
  194. <view class="popup">
  195. <view class="popup_title vflex acenter jcenter">本人承诺</br>以上所填写的内容真实有效</view>
  196. <view class="popu_label" style="font-size: 28rpx;font-weight: 500;">请填写以下信息</view>
  197. <view class="popu_label">身份证号</view>
  198. <u-input v-model="IDNumber" placeholder="请输入身份证号" border="bottom"></u-input>
  199. <view class="popu_label">手机号码</view>
  200. <u-input v-model="phone" placeholder="请输入手机号码" border="bottom"></u-input>
  201. <view class="popu_label">验证码</view>
  202. <view class="hflex acenter jbetween">
  203. <u-input v-model="code" placeholder="请输入验证码" border="none"></u-input>
  204. <view class="popu_label code" @click="getCode">{{tips}}</view>
  205. <u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
  206. </view>
  207. <view class="btn1" @click="publish">立即发布</view>
  208. <view class="cancel" @click="close">取消</view>
  209. </view>
  210. </u-popup>
  211. <u-popup :show="del_show" mode="center" :round="20" @close="close">
  212. <view class="popup popup1">
  213. <view class="popup_title vflex acenter jcenter" style="padding: 80rpx 0;">确定要移除此项专业技能吗?</view>
  214. <view class="hflex acenter jbetween">
  215. <view class="btn_close hflex acenter jcenter" @click="close">取消</view>
  216. <view class="btn_delete hflex acenter jcenter" @click="deleteSure(id)">移除</view>
  217. </view>
  218. </view>
  219. </u-popup>
  220. </view>
  221. </template>
  222. <script>
  223. import $api from '@/static/js/api.js'
  224. var that = ''
  225. export default {
  226. data() {
  227. return {
  228. is_publish: false,
  229. salary: '',
  230. remarks: '',
  231. base_info: {},
  232. job_inte: {},
  233. experience: [],
  234. skills: [],
  235. certificate: [],
  236. show: false,
  237. IDNumber: '',
  238. phone: '',
  239. code: '',
  240. tips: '',
  241. seconds: 60,
  242. del_show: false,
  243. id: '',
  244. audit: 0,
  245. }
  246. },
  247. onLoad() {
  248. that = this
  249. },
  250. onShow() {
  251. that.getData()
  252. that.isPubilsh()
  253. },
  254. methods: {
  255. // 判断是否可以发布
  256. isPubilsh() {
  257. if (JSON.stringify(that.base_info) == '{}' && JSON.stringify(that.job_inte) == '{}') {
  258. that.is_publish = true
  259. }
  260. },
  261. getData() {
  262. $api.req({
  263. url: '/data/api.auth.Center/myrelease',
  264. method: 'POST',
  265. data: {
  266. type: 3
  267. }
  268. },function(res) {
  269. if(res.code == 1) {
  270. if(res.data.real_name) {
  271. that.$set(that.base_info,'name',res.data.real_name)
  272. that.$set(that.base_info,'sex',res.data.sex)
  273. that.$set(that.base_info,'edu',res.data.schooling)
  274. that.$set(that.base_info,'age',res.data.age)
  275. that.$set(that.base_info,'year',res.data.work_year)
  276. that.$set(that.base_info,'phone',res.data.phone)
  277. that.$set(that.base_info,'email',res.data.email)
  278. that.$set(that.base_info,'avatar',res.data.head_img)
  279. that.base_info.date_birth = res.data.date_birth
  280. that.base_info.start_working_time = res.data.start_working_time
  281. }
  282. that.audit = res.data.audit
  283. console.log(that.base_info);
  284. if(res.data.job_application) {
  285. that.$set(that.job_inte,'post',res.data.job_application)
  286. that.$set(that.job_inte,'work_address',res.data.scope_work_area)
  287. that.$set(that.job_inte,'salary',res.data.monthly_salary)
  288. that.$set(that.job_inte,'work_time',res.data.working_time)
  289. that.$set(that.job_inte,'work_nature',res.data.work_nature)
  290. }
  291. that.experience = res.data.workexperience
  292. that.skills = res.data.professionalskills
  293. that.certificate = res.data.certificate
  294. if(res.data.welfare_benefits) {
  295. that.salary = res.data.welfare_benefits
  296. }
  297. if(res.data.remark) {
  298. that.remarks = res.data.remark
  299. }
  300. }
  301. })
  302. },
  303. // 发布
  304. publish() {
  305. uni.showLoading({
  306. title: '发布中',
  307. mask: true
  308. })
  309. if($api.formCheck(that.IDNumber, 'identity') && $api.formCheck(that.phone, 'mobile') && $api.formCheck(that.code, 'code6')) {
  310. $api.req({
  311. url: '/data/api.auth.DemandLabor/applyjob',
  312. method: 'POST',
  313. data: {
  314. type: 6,
  315. welfare_benefits: that.salary,
  316. remark: that.remarks,
  317. province: uni.getStorageSync("location").province,
  318. city: uni.getStorageSync("location").city,
  319. area: uni.getStorageSync("location").district,
  320. }
  321. }, function(res) {
  322. if(res.code == 1) {
  323. $api.req({
  324. url: '/data/api.auth.DemandLabor/subapplyjob',
  325. method: 'POST',
  326. data: {
  327. id_card: that.IDNumber,
  328. phone2: that.phone,
  329. code: that.code
  330. }
  331. }, function(res) {
  332. uni.hideLoading()
  333. if(res.code == 1) {
  334. $api.info(res.info)
  335. that.close()
  336. setTimeout(()=> {
  337. $api.jump('/page_index/pages/demand/demand', 2)
  338. },1000)
  339. }
  340. })
  341. }
  342. })
  343. } else {
  344. uni.hideLoading()
  345. }
  346. },
  347. // 打开弹窗
  348. open() {
  349. // console.log(uni);
  350. that.show = true
  351. },
  352. // 关闭弹窗
  353. close() {
  354. that.show = false
  355. that.del_show = false
  356. },
  357. // 添加或完善
  358. perfect(index) {
  359. $api.jump('/page_index/pages/demand/perfect?index='+index)
  360. },
  361. // 修改工作经历
  362. editInfo(id) {
  363. $api.jump('/page_index/pages/demand/perfect?index=3&id='+ id)
  364. },
  365. // 复制
  366. copy(value) {
  367. uni.setClipboardData({
  368. data: value,
  369. success: function () {
  370. $api.info('复制成功')
  371. }
  372. });
  373. },
  374. // 删除
  375. deleteSure(id) {
  376. $api.req({
  377. url: '/data/api.auth.DemandLabor/delapplyjobchild',
  378. method: 'POST',
  379. data: {
  380. id: id
  381. }
  382. }, function(res) {
  383. if(res.code == 1) {
  384. $api.info(res.info)
  385. that.close()
  386. that.getData()
  387. }
  388. })
  389. },
  390. // 删除
  391. deleteOpen (id) {
  392. that.del_show = true
  393. that.id = id
  394. },
  395. // 验证码文字改变
  396. codeChange(text) {
  397. this.tips = text;
  398. },
  399. getCode() {
  400. if(this.$refs.uCode.canGetCode) {
  401. // 模拟向后端请求验证码
  402. uni.showLoading({
  403. title: '正在获取验证码'
  404. })
  405. $api.req({
  406. url: '/data/api.Login/sendsms',
  407. method: 'POST',
  408. data: {
  409. phone: that.phone,
  410. type: 4
  411. }
  412. }, function(res) {
  413. uni.hideLoading();
  414. if(res.code == 1) {
  415. uni.$u.toast('验证码已发送')
  416. that.$refs.uCode.start()
  417. } else {
  418. uni.$u.toast('验证码发送失败')
  419. }
  420. })
  421. } else {
  422. uni.$u.toast('倒计时结束后再发送');
  423. }
  424. },
  425. end() {
  426. uni.$u.toast('倒计时结束');
  427. },
  428. start() {
  429. uni.$u.toast('倒计时开始');
  430. }
  431. },
  432. }
  433. </script>
  434. <style lang="scss" scoped>
  435. .content::v-deep {
  436. background: #F4F4F4;
  437. .box {
  438. margin: 20rpx 30rpx 0;
  439. width: 690rpx;
  440. background: #FFFFFF;
  441. border-radius: 20rpx;
  442. box-sizing: border-box;
  443. padding: 28rpx 20rpx;
  444. .box_title {
  445. font-size: 32rpx;
  446. font-weight: 500;
  447. color: #222222;
  448. padding-right: 24rpx;
  449. }
  450. .name {
  451. font-size: 40rpx;
  452. font-weight: 500;
  453. color: #222222;
  454. }
  455. .edit_btn {
  456. width: 84rpx;
  457. height: 36rpx;
  458. background: #F0F2F6;
  459. border-radius: 20rpx;
  460. font-size: 20rpx;
  461. text-align: center;
  462. font-weight: 400;
  463. color: #506DFF;
  464. line-height: 36rpx;
  465. margin-left: 16rpx;
  466. }
  467. .padT-26 {
  468. padding-top: 26rpx;
  469. }
  470. .padR-24 {
  471. padding-right: 24rpx;
  472. }
  473. .label {
  474. width: 148rpx;
  475. font-size: 24rpx;
  476. font-weight: 400;
  477. color: #888888;
  478. }
  479. .icon {
  480. width: 28rpx;
  481. height: 28rpx;
  482. }
  483. .text_style1 {
  484. font-size: 24rpx;
  485. padding-left: 5rpx;
  486. font-weight: 400;
  487. color: #666666;
  488. }
  489. .text_style2 {
  490. font-size: 22rpx;
  491. font-weight: 400;
  492. color: #777777;
  493. line-height: 32rpx;
  494. }
  495. .item_box2 {
  496. background: #F4F4F4;
  497. border-radius: 26rpx;
  498. box-sizing: border-box;
  499. padding: 8rpx 34rpx;
  500. margin: 20rpx 32rpx 0 0;
  501. position: relative;
  502. .detele {
  503. position: absolute !important;
  504. right: 1rpx;
  505. top: 1rpx;
  506. width: 21rpx;
  507. height: 21rpx;
  508. }
  509. }
  510. .item_box3 {
  511. width: max-content;
  512. background: #F4F4F4;
  513. border-radius: 26rpx;
  514. box-sizing: border-box;
  515. padding: 8rpx 20rpx;
  516. margin: 20rpx 0 0;
  517. position: relative;
  518. .detele {
  519. position: absolute !important;
  520. right: 1rpx;
  521. top: 1rpx;
  522. width: 21rpx;
  523. height: 21rpx;
  524. }
  525. }
  526. .avatar {
  527. width: 120rpx;
  528. height: 120rpx;
  529. border-radius: 50%;
  530. }
  531. .box_info {
  532. margin: 42rpx 0 0;
  533. .box_icon {
  534. width: 56rpx;
  535. height: 56rpx;
  536. margin-right: 28rpx;
  537. }
  538. .box_subTitle {
  539. margin-top: 4rpx;
  540. font-size: 24rpx;
  541. font-weight: 400;
  542. color: #777777;
  543. }
  544. .box_btn {
  545. box-sizing: border-box;
  546. padding: 6rpx 24rpx;
  547. font-size: 24rpx;
  548. font-weight: 400;
  549. color: #FFFFFF;
  550. line-height: 34rpx;
  551. background: #506DFF;
  552. border-radius: 14px;
  553. }
  554. }
  555. .line {
  556. margin: 20rpx 0;
  557. width: 100%;
  558. height: 1rpx;
  559. background: #F3F3F5;
  560. }
  561. }
  562. .bottom {
  563. width: 100%;
  564. z-index: 9;
  565. position: fixed;
  566. bottom: 0;
  567. height: 166rpx;
  568. background: #FFFFFF;
  569. box-sizing: border-box;
  570. padding: 8rpx 40rpx 74rpx;
  571. .bottom_btn {
  572. width: 100%;
  573. height: 84rpx;
  574. background: #506DFF;
  575. border-radius: 42rpx;
  576. opacity: 0.4;
  577. font-size: 36rpx;
  578. font-weight: 500;
  579. color: #FFFFFF;
  580. text-align: center;
  581. line-height: 84rpx;
  582. }
  583. .publish_btn {
  584. opacity: 1;
  585. }
  586. }
  587. .popup1 {
  588. border-radius: 40rpx !important;
  589. }
  590. .popup {
  591. background: #FFFFFF;
  592. border-radius: 40rpx 40rpx 0px 0px;
  593. width: 100%;
  594. box-sizing: border-box;
  595. padding: 30rpx;
  596. .popup_title {
  597. width: 100%;
  598. padding-bottom: 32rpx;
  599. border-bottom: 1rpx solid #F4F4F4;
  600. font-size: 36rpx;
  601. font-weight: 500;
  602. color: #222222;
  603. line-height: 50rpx;
  604. }
  605. .popu_label {
  606. font-size: 30rpx;
  607. font-weight: 400;
  608. color: #222222;
  609. padding: 24rpx 0;
  610. }
  611. .code {
  612. color: #506DFF;
  613. }
  614. .btn1 {
  615. margin: 90rpx 0 40rpx;
  616. width: 100%;
  617. height: 84rpx;
  618. background: #506DFF;
  619. border-radius: 21px;
  620. text-align: center;
  621. line-height: 84rpx;
  622. font-size: 36rpx;
  623. font-weight: 500;
  624. color: #FFFFFF;
  625. }
  626. .cancel {
  627. width: 100%;
  628. text-align: center;
  629. font-size: 32rpx;
  630. font-weight: 400;
  631. color: #777777;
  632. }
  633. .u-input {
  634. padding: 12rpx 0 !important;
  635. }
  636. .btn_delete {
  637. width: 200rpx;
  638. height: 76rpx;
  639. background: #506DFF;
  640. border-radius: 38rpx;
  641. font-size: 32rpx;
  642. font-weight: 400;
  643. color: #FFFFFF;
  644. }
  645. .btn_close {
  646. width: 200rpx;
  647. height: 76rpx;
  648. border-radius: 38rpx;
  649. border: 1px solid #506DFF;
  650. font-size: 32rpx;
  651. font-weight: 400;
  652. color: #506DFF;
  653. }
  654. }
  655. }
  656. </style>