editInfo.vue 21 KB

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