editInfo.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. <template>
  2. <view class="page">
  3. <PageHeader title="" class="PageHeader">
  4. <template v-slot:center>
  5. 基本资料
  6. </template>
  7. </PageHeader>
  8. <view class="reserveASeat"></view>
  9. <!-- <view style="height: 90rpx;"></view> -->
  10. <view class="list_info">
  11. <view class="bcenter">
  12. <view class="avator" @click="chooseAvatar">
  13. <!-- <image class="img" :src="avator" mode="aspectFill" /> -->
  14. <CircleAvatar class="avator" :src="avator" style="width: 200rpx; height: 200rpx;"></CircleAvatar>
  15. <image class="photo" src="../../static/me/photo.png" mode="widthFix" />
  16. </view>
  17. </view>
  18. <view class="section_title">基本信息</view>
  19. <view class="info_card">
  20. <view class="info_item" @click="openNicknamePopUpWindow">
  21. <text class="label">昵称</text>
  22. <view class="content">
  23. <text v-if="nickname" class="textContent">{{ nickname }}</text>
  24. <text v-else class="textPrompt">请输入昵称</text>
  25. <image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix" />
  26. </view>
  27. </view>
  28. <view class="info_item" @click="SetSex">
  29. <text class="label">性别</text>
  30. <view class="content">
  31. <input type="text" placeholder="选择你的性别" v-model="sexText" disabled="true" />
  32. <image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix" />
  33. </view>
  34. </view>
  35. <view class="info_item">
  36. <text class="label">生日</text>
  37. <view class="content" @click="open()">
  38. <!-- <picker mode="date" :value="birthday" :end="endDate" @change="onBirthdayChange"> -->
  39. <input type="text" placeholder="选择你的生日" v-model="birthday" disabled="true" />
  40. <!-- </picker> -->
  41. <image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix" />
  42. </view>
  43. <uni-calendar :date="birthday||'2000-01-01'" ref="calendar" :insert="false" @confirm="confirm" />
  44. </view>
  45. <view class="info_item">
  46. <text class="label">星座</text>
  47. <view class="content">
  48. <input type="text" placeholder="根据你的生日自动匹配" :value="xinzuo_sel" disabled="true"
  49. style="padding-right: 43rpx;" />
  50. <!-- <image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix" /> -->
  51. </view>
  52. </view>
  53. <view class="info_item" @click="openContentPopUpWindow">
  54. <text class="label">简介</text>
  55. <view class="content">
  56. <!-- <input type="text" placeholder="做个自我介绍吧~" v-model="content" maxlength="32" /> -->
  57. <text v-if="content" class="textContent one-omit">{{ content }}</text>
  58. <text v-else class="textPrompt">做个自我介绍吧</text>
  59. <image class="arrow" src="../../static/me/arrow_right_gray.png" mode="widthFix" />
  60. </view>
  61. </view>
  62. </view>
  63. <view class="section_title">个性标签</view>
  64. <view class="info_card">
  65. <view class="item_tag">
  66. <view class="tag" v-for="(item, index) in sel_tags" :key="index">
  67. {{ item }}
  68. <image class="close" src="../../static/me/close.png" mode="widthFix" @click="delTag(item)" />
  69. </view>
  70. <view class="addNew blick-btn-animation" @click="showPop = true;">+ 添加</view>
  71. </view>
  72. </view>
  73. <view class="blankHeight"></view>
  74. </view>
  75. <view class="btn_submit blick-btn-animation" @click="submitData(true)">保存</view>
  76. <DialogBox ref="DialogBox"></DialogBox>
  77. <view class="popSel" v-if="showPop" @tap.stop="onPreview">
  78. <PageHeader title="添加标签" @back="showPop = false" :isBack="false" style="background: #f2f6f2;" />
  79. <view class="reserveASeat"></view>
  80. <view class="headLabel">
  81. <view class="avator-box">
  82. <CircleAvatar class="avator" :src="avator"></CircleAvatar>
  83. <view class="one-omit">{{ nickname }}</view>
  84. </view>
  85. <view class="tag-box">
  86. <view class="tag" v-for="(item, index) in sel_tags" :key="index">
  87. {{ item }}
  88. <image class="close" src="../../static/me/close.png" mode="widthFix" @click="delTag(item)" />
  89. </view>
  90. </view>
  91. </view>
  92. <view class="list_info">
  93. <view class="name">你的兴趣爱好是?</view>
  94. <view class="desc">提示:最多选择5个兴趣爱好标签</view>
  95. <view style="height: 700rpx; overflow-y: scroll; margin-top: 20rpx; padding-bottom: 100rpx;">
  96. <view class="add-tag-box" style="color: #000;" v-if="showAddTag">
  97. <input class="add-tag-input" v-model="newTag" placeholder="请输入标签名称" maxlength="10"
  98. @confirm="addCustomTag" />
  99. <view class="add-tag-btns">
  100. <text class="cancel-btn" @tap="cancelAddTag">取消</text>
  101. <text class="confirm-btn" @tap="addCustomTag">确定</text>
  102. </view>
  103. </view>
  104. <view class="item_tag">
  105. <view class="tag add-tag" @tap="showAddTagInput">
  106. <text>+ 自定义</text>
  107. </view>
  108. <view @tap.stop="chkTag(item)" class="tag" :class="selTags(item) ? 'active' : ''"
  109. v-for="(item, index) in list_tag" :key="index">
  110. {{ item }}
  111. </view>
  112. </view>
  113. </view>
  114. </view>
  115. <view class="btn_submit blick-btn-animation" @click="showPop = false;">提交选择</view>
  116. </view>
  117. <ToastW3 ref="ToastW3"></ToastW3>
  118. <!-- <view v-if="showRights"
  119. style="width:100%;height:300rpx;background-color: rgba(255,255,255,0.9);position: fixed;top:0;display: flex;flex-direction: column;justify-content: center;align-items: center;">
  120. <text
  121. style="width:90%;color:#000000;font-size:38rpx;text-align: left;padding:10rpx 20rpx;padding-top:10rpx;">正在获取相机、存储权限</text>
  122. <text
  123. style="width:90%;color:#666666;font-size:28rpx;text-align: left;padding:10rpx 20rpx;">该权限用于获取设备拍摄或获取本地应用相册,进行头像或图片上传。</text>
  124. </view> -->
  125. <view>
  126. <NicknamePopup title="编辑昵称" subtitle="" class="openNicknamePopUpWindow" ref="openNicknamePopUpWindow">
  127. <template v-slot:content>
  128. <view class="input-box">
  129. <uv-input placeholder="请输入昵称" border="surround" v-model="nickname" maxlength="20"></uv-input>
  130. <view class="length-indicator">{{ nickname.length }}/20</view>
  131. </view>
  132. <view class="btn-box" @click="submitData">保存</view>
  133. </template>
  134. </NicknamePopup>
  135. <NicknamePopup title="专属于你的简介" subtitle="好的简介让你在社区更受关注" class="openContentPopUpWindow"
  136. ref="openContentPopUpWindow">
  137. <template v-slot:content>
  138. <uv-textarea v-model="content" maxlength="50" count placeholder="请输入内容"></uv-textarea>
  139. <view class="btn-box" @click="submitData">保存</view>
  140. </template>
  141. </NicknamePopup>
  142. </view>
  143. </view>
  144. </template>
  145. <script>
  146. import PageHeader from '@/components/PageHeader/PageHeader.vue';
  147. import CircleAvatar from '@/components/CircleAvatar/CircleAvatar.vue';
  148. import NicknamePopup from '@/components/NicknamePopup/NicknamePopup.vue';
  149. import permission from '@/common/permission.js';
  150. export default {
  151. components: {
  152. PageHeader,
  153. CircleAvatar,
  154. NicknamePopup
  155. },
  156. data() {
  157. return {
  158. showRights: false,
  159. title: '',
  160. sel: 1,
  161. info: {},
  162. showPop: false,
  163. nickname: '',
  164. content: '',
  165. sex: 1,
  166. age: 18,
  167. height: 160,
  168. weight: 50,
  169. avator: '../../static/me/avator.png',
  170. ziye: '',
  171. qianmin: '',
  172. xinzuo_sel: '',
  173. xinzuo: ['水瓶座', '双鱼座', '白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座'],
  174. list_tag: [],
  175. sel_tags: [],
  176. sexText: '',
  177. birthday: '',
  178. sexOptions: ['男', '女', '其他'],
  179. endDate: new Date().toISOString().split('T')[0],
  180. showAddTag: false,
  181. newTag: '',
  182. }
  183. },
  184. onLoad() {
  185. let tagStr =
  186. "老二次元了、coser、沉迷音乐、网游小达人、AJ控、白日梦想家、撸铁狂魔、古风汉服、爱画画、数码极客、盲盒玩家、三坑玩家、动漫达人、独立设计师、爱卡通、兜风去、爱夜跑、街头滑板、球类运动、lo娘、rapper、时尚达人、机甲狂潮、养宠物、风轻云淡、养多肉、热爱自然、赛博朋克、骨子里高冷、爱唠嗑、资深中二、天然呆、思想家、极度抽象、学院派、平平无奇、热情奔放、博古通今、labubu粉、玛特收藏家";
  187. this.list_tag = tagStr.split("、");
  188. this.getInfoData();
  189. },
  190. onShow() { },
  191. methods: {
  192. open() {
  193. this.$refs.calendar.open();
  194. },
  195. confirm(e) {
  196. console.log(e);
  197. this.birthday = e.fulldate
  198. this.xinzuo_sel = this.getConstellation(this.birthday);
  199. },
  200. openNicknamePopUpWindow() {
  201. this.$refs.openNicknamePopUpWindow.open();
  202. },
  203. openContentPopUpWindow() {
  204. this.$refs.openContentPopUpWindow.open();
  205. },
  206. closePropUp() {
  207. this.$refs.openNicknamePopUpWindow.close();
  208. this.$refs.openContentPopUpWindow.close();
  209. },
  210. onBack() { },
  211. onPreview() { },
  212. chkSel() {
  213. if (this.sel == 1) {
  214. this.sel = 0;
  215. } else {
  216. this.sel = 1;
  217. }
  218. },
  219. chkSex(sex) {
  220. this.sex = sex;
  221. },
  222. delTag(tg) {
  223. let list_tag2 = [];
  224. for (let i = 0; i < this.sel_tags.length; i++) {
  225. if (this.sel_tags[i] != tg) {
  226. list_tag2.push(this.sel_tags[i]);
  227. }
  228. }
  229. this.sel_tags = list_tag2;
  230. },
  231. selTags(itm) {
  232. let isIn = false;
  233. for (let entry of this.sel_tags) {
  234. if (entry == itm) {
  235. isIn = true;
  236. break;
  237. }
  238. }
  239. return isIn;
  240. },
  241. chkTag(itm) {
  242. if (this.selTags(itm)) {
  243. let tmpTags = [];
  244. for (let entry of this.sel_tags) {
  245. if (entry != itm) {
  246. tmpTags.push(entry);
  247. }
  248. }
  249. this.sel_tags = tmpTags;
  250. } else {
  251. if (this.sel_tags.length <= 4) {
  252. this.sel_tags.push(itm);
  253. } else {
  254. uni.showToast({
  255. title: "最多选择5个标签",
  256. icon: "none"
  257. });
  258. }
  259. }
  260. },
  261. sliderChange1(e) {
  262. this.age = e.detail.value;
  263. },
  264. sliderChange2(e) {
  265. this.height = e.detail.value;
  266. },
  267. sliderChange3(e) {
  268. this.weight = e.detail.value;
  269. },
  270. SetSex() {
  271. let that = this;
  272. uni.showActionSheet({
  273. itemColor: '#000000',
  274. itemList: this.sexOptions,
  275. success: function (res) {
  276. that.sexText = that.sexOptions[res.tapIndex];
  277. that.sex = res.tapIndex + 1;
  278. },
  279. fail: function (res) {
  280. console.log(res.errMsg);
  281. }
  282. });
  283. },
  284. getInfoData() {
  285. uni.request({
  286. url: this.$apiHost + '/Member/getinfoData',
  287. data: {
  288. uuid: getApp().globalData.uuid
  289. },
  290. header: {
  291. 'content-type': 'application/json'
  292. },
  293. success: (res) => {
  294. console.log(res.data);
  295. this.nickname = res.data.nickname;
  296. this.wechat = res.data.wechat;
  297. this.sex = res.data.sex;
  298. this.sexText = this.sexOptions[res.data.sex - 1] || '';
  299. this.birthday = res.data.birthday;
  300. this.content = res.data.content;
  301. this.xinzuo_sel = this.getConstellation(this.birthday);
  302. if (res.data.avator != "") {
  303. this.avator = res.data.avator;
  304. }
  305. if (res.data.aihao) {
  306. this.sel_tags = res.data.aihao.split(",");
  307. }
  308. }
  309. });
  310. },
  311. submitData(isBack) {
  312. let aihao = this.sel_tags.join(',')
  313. let obj2 = {
  314. uuid: getApp().globalData.uuid,
  315. avator: this.avator,
  316. nickname: this.nickname,
  317. content: this.content,
  318. sex: this.sex,
  319. birthday: this.birthday,
  320. xinzuo: this.xinzuo_sel,
  321. ziye: this.ziye,
  322. qianmin: this.qianmin,
  323. aihao: aihao
  324. }
  325. uni.request({
  326. url: this.$apiHost + '/Member/setinfoData',
  327. data: obj2,
  328. method: 'POST',
  329. header: {
  330. 'Content-Type': 'application/x-www-form-urlencoded',
  331. 'sign': getApp().globalData.headerSign
  332. },
  333. dataType: 'json',
  334. success: (res) => {
  335. console.log("res", res.data)
  336. uni.showToast({
  337. title: res.data.str,
  338. animation: 0,
  339. icon: "none"
  340. });
  341. if (res.data.success == 'yes' && isBack == true) {
  342. if (this.nickname) {
  343. getApp().globalData.nickname = this.nickname
  344. uni.removeStorageSync("nickname");
  345. uni.setStorageSync("nickname", this.nickname);
  346. }
  347. if (this.avator) {
  348. getApp().globalData.avator = this.avator
  349. uni.removeStorageSync("avator");
  350. uni.setStorageSync("avator", this.avator);
  351. }
  352. setTimeout(function () {
  353. uni.navigateBack()
  354. }, 800)
  355. } else {
  356. this.closePropUp()
  357. }
  358. this.getInfoData()
  359. }
  360. });
  361. },
  362. chooseAvatar() {
  363. uni.showActionSheet({
  364. itemList: ['拍照', '从相册选择'],
  365. success: (res) => {
  366. const sourceType = res.tapIndex === 0 ? 'camera' : 'album';
  367. this.chooseImage(sourceType);
  368. }
  369. });
  370. },
  371. async chooseImage(sourceType) {
  372. try {
  373. let hasPermission = false;
  374. if (sourceType === 'camera') {
  375. hasPermission = await this.checkCameraPermission();
  376. } else if (sourceType === 'album') {
  377. hasPermission = await this.checkPhotoLibraryPermission();
  378. }
  379. if (!hasPermission) {
  380. uni.showToast({
  381. title: '未获得权限',
  382. icon: 'none'
  383. });
  384. return;
  385. }
  386. uni.chooseImage({
  387. count: 1,
  388. sizeType: ['compressed'],
  389. sourceType: [sourceType],
  390. success: async (res) => {
  391. console.log('res:', res)
  392. if (res.tempFilePaths.length > 0) {
  393. const tempFilePath = res.tempFilePaths[0];
  394. console.log('tempFilePaths:', tempFilePath);
  395. await this.uploadImage(tempFilePath);
  396. }
  397. },
  398. fail: (err) => {
  399. console.error('选择图片失败:', err);
  400. uni.showToast({
  401. title: '选择图片失败',
  402. icon: 'none'
  403. });
  404. }
  405. });
  406. } catch (error) {
  407. console.error('权限检查失败:', error);
  408. uni.showToast({
  409. title: '权限检查失败',
  410. icon: 'none'
  411. });
  412. }
  413. },
  414. async checkCameraPermission() {
  415. const hasPermission = await permission.request(permission.PermissionType.CAMERA, {
  416. title: "“萌创星球”想访问你的相机",
  417. describe: "萌创星球想访问您的摄像头,便于拍摄获取图片来替换头像图片"
  418. });
  419. return hasPermission;
  420. },
  421. async checkPhotoLibraryPermission() {
  422. const hasPermission = await permission.request(permission.PermissionType.PHOTO_LIBRARY, {
  423. title: "“萌创星球”想访问你的照片图库",
  424. describe: "萌创星球想访问您本地照片图库,便于获取图片来替换头像图片"
  425. });
  426. return hasPermission;
  427. },
  428. uploadImage(tempFilePath) {
  429. var _self = this;
  430. const uploadTask = uni.uploadFile({
  431. url: _self.$apiHost + '/Xweb/upload_img?skey=' + _self.skey,
  432. filePath: tempFilePath,
  433. name: 'file',
  434. success: function (uploadFileRes) {
  435. let resdata = JSON.parse(uploadFileRes.data)
  436. console.log('Success11:', uploadFileRes);
  437. console.log('Success21:', resdata);
  438. if (resdata.success == 'yes') {
  439. _self.showRights = false;
  440. _self.avator = resdata.url;
  441. }
  442. },
  443. fail: function (uploadFileFail) {
  444. console.log('Error:', uploadFileFail.data);
  445. },
  446. complete: () => {
  447. console.log('Complete:');
  448. }
  449. });
  450. },
  451. onBirthdayChange(e) {
  452. this.birthday = e.detail.value;
  453. this.xinzuo_sel = this.getConstellation(this.birthday);
  454. },
  455. getConstellation(birthday) {
  456. if (!birthday) return '';
  457. const month = parseInt(birthday.split('-')[1]);
  458. const day = parseInt(birthday.split('-')[2]);
  459. // 星座日期数组
  460. const constellationDates = [
  461. [1, 20, "水瓶座"],
  462. [2, 19, "双鱼座"],
  463. [3, 21, "白羊座"],
  464. [4, 20, "金牛座"],
  465. [5, 21, "双子座"],
  466. [6, 22, "巨蟹座"],
  467. [7, 23, "狮子座"],
  468. [8, 23, "处女座"],
  469. [9, 23, "天秤座"],
  470. [10, 24, "天蝎座"],
  471. [11, 23, "射手座"],
  472. [12, 22, "摩羯座"]
  473. ];
  474. let constellation = "";
  475. if (day < constellationDates[month - 1][1]) {
  476. constellation = constellationDates[month - 1][2];
  477. } else {
  478. constellation = constellationDates[month % 12][2];
  479. }
  480. return constellation;
  481. },
  482. showAddTagInput() {
  483. this.showAddTag = true;
  484. this.newTag = '';
  485. },
  486. cancelAddTag() {
  487. this.showAddTag = false;
  488. this.newTag = '';
  489. },
  490. addCustomTag() {
  491. if (!this.newTag.trim()) {
  492. uni.showToast({
  493. title: '请输入标签名称',
  494. icon: 'none'
  495. });
  496. return;
  497. }
  498. if (this.list_tag.includes(this.newTag)) {
  499. uni.showToast({
  500. title: '该标签已存在',
  501. icon: 'none'
  502. });
  503. return;
  504. }
  505. this.list_tag.unshift(this.newTag);
  506. this.showAddTag = false;
  507. this.newTag = '';
  508. },
  509. }
  510. }
  511. </script>
  512. <style scoped lang="scss">
  513. @import 'normal.scss';
  514. page {
  515. font-family: PingFang SC-Medium;
  516. // background: url("../../static/me/wd_bg_bianjiziliao.png") center top / 100%
  517. // auto no-repeat,
  518. // #f2f6f2;
  519. }
  520. page{
  521. background: #000 !important;
  522. }
  523. .popSel {
  524. position: fixed;
  525. z-index: 101;
  526. top: 0;
  527. left: 0;
  528. background-color: #f2f6f2;
  529. width: 100vh;
  530. min-height: 100vh;
  531. .headLabel {
  532. width: 686rpx;
  533. margin: 28rpx 32rpx;
  534. min-height: 222rpx;
  535. background: #fff;
  536. box-sizing: border-box;
  537. padding: 30rpx 40rpx 46rpx 20rpx;
  538. border-radius: 20rpx;
  539. .avator-box {
  540. display: flex;
  541. align-items: center;
  542. .avator {
  543. width: 80rpx;
  544. height: 80rpx;
  545. margin-right: 20rpx;
  546. }
  547. }
  548. .tag-box {
  549. display: flex;
  550. flex-direction: row;
  551. justify-content: flex-start;
  552. align-items: center;
  553. flex-wrap: wrap;
  554. font-size: 24rpx;
  555. .tag {
  556. margin-right: 16rpx;
  557. margin-top: 20rpx;
  558. padding: 6rpx 10rpx;
  559. border: 2rpx solid #DCE1DC;
  560. color: #9E9E9E;
  561. display: flex;
  562. justify-content: center;
  563. align-items: center;
  564. border-radius: 42rpx;
  565. line-height: 1;
  566. .close {
  567. width: 20rpx;
  568. margin-left: 12rpx;
  569. position: relative;
  570. }
  571. }
  572. }
  573. }
  574. }
  575. .openNicknamePopUpWindow {
  576. .length-indicator {
  577. font-size: 24rpx;
  578. color: #999;
  579. text-align: right;
  580. margin-top: 10rpx;
  581. margin-right: 20rpx;
  582. position: absolute;
  583. right: 24rpx;
  584. top: 24rpx;
  585. }
  586. }
  587. .popSel {
  588. .item_tag {
  589. display: flex;
  590. flex-direction: row;
  591. justify-content: flex-start;
  592. align-items: center;
  593. flex-wrap: wrap;
  594. width: 690rpx;
  595. padding: 20rpx;
  596. .tag {
  597. border-radius: 94rpx;
  598. margin-right: 10rpx;
  599. margin-top: 10rpx;
  600. padding: 8rpx 16rpx;
  601. font-size: 28rpx;
  602. color: #333;
  603. display: flex;
  604. flex-direction: row;
  605. justify-content: center;
  606. align-items: center;
  607. background: #fff;
  608. border-width: 0;
  609. .close {
  610. width: 28rpx;
  611. margin-left: 2rpx;
  612. position: relative;
  613. }
  614. }
  615. .active {
  616. border-width: 0;
  617. background: #ACF934;
  618. }
  619. .addNew {
  620. margin-right: 10rpx;
  621. margin-top: 10rpx;
  622. padding: 0rpx 20rpx;
  623. height: 60rpx;
  624. border-radius: 12rpx;
  625. background: #1f1f1f;
  626. color: #fff;
  627. display: flex;
  628. flex-direction: row;
  629. justify-content: center;
  630. align-items: center;
  631. }
  632. }
  633. }
  634. .reserveASeat {
  635. width: 100%;
  636. height: calc(var(--status-bar-height) + 50rpx);
  637. }
  638. .page {
  639. background: url("../../static/me/wd_bg_bianjiziliao.png") top center/ 100% auto no-repeat,
  640. #f2f6f2;
  641. }
  642. .PageHeader {
  643. background: url("../../static/me/wd_bg_bianjiziliao.png") center top / 100% auto no-repeat,
  644. #f2f6f2;
  645. // background-position-y: var(--status-bar-height);
  646. z-index: 99 !important;
  647. }
  648. .add-tag-box {
  649. background: #fff;
  650. padding: 20rpx;
  651. margin: 20rpx;
  652. border-radius: 12rpx;
  653. .add-tag-input {
  654. width: 100%;
  655. height: 80rpx;
  656. background: #f5f5f5;
  657. border-radius: 8rpx;
  658. padding: 0 20rpx;
  659. font-size: 28rpx;
  660. margin-bottom: 20rpx;
  661. }
  662. .add-tag-btns {
  663. display: flex;
  664. justify-content: flex-end;
  665. gap: 20rpx;
  666. .cancel-btn,
  667. .confirm-btn {
  668. padding: 10rpx 30rpx;
  669. border-radius: 8rpx;
  670. font-size: 28rpx;
  671. }
  672. .cancel-btn {
  673. background: #f5f5f5;
  674. color: #666;
  675. }
  676. .confirm-btn {
  677. background: #1f1f1f;
  678. color: #fff;
  679. }
  680. }
  681. }
  682. .item_tag {
  683. .add-tag {
  684. background: #f5f5f5;
  685. color: #666;
  686. border: 2rpx dashed #ddd;
  687. &:active {
  688. background: #e5e5e5;
  689. }
  690. }
  691. }
  692. </style>