jmash-core-mp 0.1.92 → 0.1.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.gitignore +1 -0
  2. package/lib/api/cms/types.d.ts +1 -0
  3. package/lib/api/files/index.d.ts +2 -0
  4. package/lib/api/files/index.js +14 -0
  5. package/lib/store/user.js +11 -5
  6. package/package.json +2 -2
  7. package/src/api/cms/types.ts +2 -0
  8. package/src/api/files/index.ts +14 -0
  9. package/src/app.mpx +8 -1
  10. package/src/components/auth-user/jmash-logout.mpx +25 -20
  11. package/src/components/auth-user/jmash-update-user.mpx +141 -209
  12. package/src/components/auth-user/jmash-update-user.web.mpx +149 -243
  13. package/src/components/auth-user/jmash-user.mpx +17 -53
  14. package/src/components/cms/jmash-cms-activity-item.mpx +60 -60
  15. package/src/components/cms/jmash-cms-activity-list.mpx +77 -170
  16. package/src/components/cms/jmash-cms-article-item.mpx +57 -66
  17. package/src/components/cms/jmash-cms-article-list.mpx +69 -70
  18. package/src/components/cms/jmash-cms-article-view.mpx +5 -8
  19. package/src/components/cms/jmash-cms-article.mpx +94 -108
  20. package/src/components/cms/jmash-cms-like.mpx +6 -5
  21. package/src/components/cms/jmash-cms-location-list.mpx +71 -103
  22. package/src/components/cms/jmash-cms-location.mpx +108 -133
  23. package/src/components/cms/jmash-cms-product-item.mpx +48 -63
  24. package/src/components/cms/jmash-cms-product-list.mpx +61 -65
  25. package/src/components/common/jmash-avatar-edit.mpx +21 -37
  26. package/src/components/common/jmash-cell-group.mpx +8 -4
  27. package/src/components/common/jmash-code-interest-popup.mpx +2 -6
  28. package/src/components/common/jmash-follow-tip.mpx +15 -29
  29. package/src/components/common/jmash-form-cell.mpx +7 -22
  30. package/src/components/common/jmash-menu.mpx +13 -9
  31. package/src/components/common/jmash-none-data.mpx +5 -6
  32. package/src/components/common/jmash-pic-swiper.mpx +3 -8
  33. package/src/components/common/jmash-popup.mpx +22 -17
  34. package/src/components/common/jmash-search.mpx +21 -33
  35. package/src/components/common/jmash-single-btn.mpx +27 -8
  36. package/src/components/common/jmash-status-filter.mpx +162 -156
  37. package/src/components/common/jmash-stepper.mpx +8 -8
  38. package/src/components/common/jmash-swipe-cell.mpx +1 -0
  39. package/src/components/common/jmash-tab-bar.mpx +22 -2
  40. package/src/components/common/jmash-textarea.mpx +25 -26
  41. package/src/components/common/jmash-top-navigation.mpx +5 -1
  42. package/src/components/common/jmash-upload-picture.mpx +17 -42
  43. package/src/components/core/jmash-cms-protocol.mpx +15 -4
  44. package/src/components/core/jmash-login.ali.mpx +54 -110
  45. package/src/components/core/jmash-login.mpx +149 -143
  46. package/src/components/core/jmash-login.web.mpx +110 -127
  47. package/src/components/core/jmash-popup-login.ali.mpx +90 -94
  48. package/src/components/core/jmash-popup-login.mpx +177 -174
  49. package/src/components/core/jmash-popup-login.web.mpx +153 -161
  50. package/src/components/organ/browser-organ-list.mpx +6 -5
  51. package/src/components/organ/my-organ-list.mpx +6 -5
  52. package/src/components/organ/organ-item.mpx +44 -29
  53. package/src/components/organ/organ-search.mpx +53 -23
  54. package/src/components/organ/organ-selected-item.mpx +44 -29
  55. package/src/components/shop/branch-item.mpx +44 -29
  56. package/src/components/shop/branch-search.mpx +53 -23
  57. package/src/components/shop/shop-item.mpx +44 -29
  58. package/src/components/shop/shop-search.mpx +53 -23
  59. package/src/components/shop/shop-selected-item.mpx +44 -29
  60. package/src/packages/pages/auth/cms-protocol.mpx +3 -1
  61. package/src/packages/pages/auth/login.mpx +3 -19
  62. package/src/packages/pages/auth/setting-page.mpx +78 -38
  63. package/src/packages/pages/cms/cms-activity-list.mpx +17 -21
  64. package/src/packages/pages/cms/cms-article-list.mpx +17 -21
  65. package/src/packages/pages/cms/cms-article.mpx +3 -1
  66. package/src/packages/pages/cms/cms-location-list.mpx +17 -16
  67. package/src/packages/pages/cms/cms-location.mpx +3 -1
  68. package/src/packages/pages/cms/cms-product-list.mpx +17 -21
  69. package/src/packages/pages/share/scan.mpx +12 -13
  70. package/src/pages/basic-component.mpx +17 -5
  71. package/src/pages/branch-search.mpx +1 -5
  72. package/src/pages/cube-theme.mpx +5 -3
  73. package/src/pages/half-home.mpx +17 -5
  74. package/src/pages/home.mpx +17 -5
  75. package/src/pages/home2.mpx +17 -5
  76. package/src/pages/index.mpx +48 -5
  77. package/src/pages/organ-search.mpx +1 -5
  78. package/src/pages/organ.mpx +21 -19
  79. package/src/pages/shop-search.mpx +1 -5
  80. package/src/pages/tabbar/home.mpx +5 -1
  81. package/src/pages/tabbar/mall.mpx +5 -1
  82. package/src/pages/tabbar/my.mpx +5 -1
  83. package/src/pages/tabbar/organ.mpx +5 -1
  84. package/src/store/user.ts +14 -5
  85. package/src/styles/index.scss +1 -20
  86. package/src/styles/mixin.css +8 -0
  87. package/postcss.config.js +0 -11
package/.gitignore CHANGED
@@ -6,3 +6,4 @@ deploy/
6
6
  output/
7
7
  dist/
8
8
  .vscode/
9
+ .pnpm-store/
@@ -87,6 +87,7 @@ export interface CmsInfoReq {
87
87
  isImg?: boolean;
88
88
  modelCode?: string;
89
89
  hasModel?: boolean;
90
+ organId?: string;
90
91
  }
91
92
  export interface CmsInfoKey {
92
93
  tenant?: string;
@@ -16,6 +16,8 @@ declare class FileApi {
16
16
  fileUrl(fileUrl?: string): string;
17
17
  fileIdUrl(fileId?: string): string;
18
18
  uploadBase64File(base64: FileBase64Req): Promise<ResponseData<FileInfo>>;
19
+ /** 上传文件 */
20
+ uploadFileWeb(file: File): Promise<ResponseData<FileInfo>>;
19
21
  uploadFile(file: string): Promise<FileInfo>;
20
22
  downloadFile(url: string): Promise<FileDownInfo>;
21
23
  uploadWebFile(data: FileWebReq): Promise<ResponseData<FileInfo>>;
@@ -65,6 +65,20 @@ class FileApi {
65
65
  data: base64,
66
66
  });
67
67
  }
68
+ /** 上传文件 */
69
+ uploadFileWeb(file) {
70
+ const formData = new FormData();
71
+ formData.append("file", file);
72
+ return mpx.xfetch.fetch({
73
+ url: "/api/v1/files",
74
+ method: "POST",
75
+ data: formData,
76
+ header: {
77
+ "Content-Type": "multipart/form-data",
78
+ Authorization: db.getBearerToken(),
79
+ },
80
+ });
81
+ }
68
82
  // 上传文件
69
83
  uploadFile(file) {
70
84
  const p = mpx.uploadFile({
package/lib/store/user.js CHANGED
@@ -2,7 +2,7 @@ import { defineStore } from "@mpxjs/pinia";
2
2
  import { authApi } from "../api/auth/index";
3
3
  import { db } from "../utils/db";
4
4
  import { net } from "../utils/net";
5
- import mpx from "@mpxjs/core";
5
+ import mpx, { unref } from "@mpxjs/core";
6
6
  export const useUserStore = defineStore("user", {
7
7
  state: () => ({
8
8
  userInfo: db.getUserInfo() || {},
@@ -161,17 +161,23 @@ export const useUserStore = defineStore("user", {
161
161
  },
162
162
  /** 检查登录是否有效? */
163
163
  checkLogin() {
164
- if (this.accessToken && !this.isTokenExpires()) {
164
+ const accessToken = unref(this.accessToken);
165
+ if (accessToken && accessToken !== "" && !this.isTokenExpires()) {
165
166
  return true;
166
167
  }
167
168
  return false;
168
169
  },
169
170
  //是否Token过期.
170
171
  isTokenExpires() {
171
- const expiresDate = this.expiresDate;
172
- //无token/无过期时间直接视为过期
173
- if (!this.accessToken || !expiresDate)
172
+ const accessToken = unref(this.accessToken);
173
+ const expiresDate = Number(unref(this.expiresDate));
174
+ // 部分运行环境可能保留 Ref 包装;先取实际值,再判断有效期。
175
+ if (!accessToken ||
176
+ accessToken === "" ||
177
+ !Number.isFinite(expiresDate) ||
178
+ expiresDate <= 0) {
174
179
  return true;
180
+ }
175
181
  const now = new Date().getTime();
176
182
  return now + 30000 > expiresDate;
177
183
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jmash-core-mp",
3
- "version": "0.1.92",
3
+ "version": "0.1.93",
4
4
  "private": false,
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -13,7 +13,7 @@
13
13
  "@mpxjs/store": "^2.11.0",
14
14
  "@mpxjs/utils": "^2.11.0",
15
15
  "dayjs": "^1.11.23",
16
- "pinia": "^2.0.14",
16
+ "pinia": "~2.0.36",
17
17
  "vue": "^2.7.0",
18
18
  "sm-crypto": "0.4.0",
19
19
  "vue-demi": "^0.14.10",
@@ -173,6 +173,8 @@ export interface CmsInfoReq {
173
173
  modelCode?: string;
174
174
  // 是否包含信息模型
175
175
  hasModel?: boolean;
176
+ // 组织ID
177
+ organId?: string;
176
178
  }
177
179
 
178
180
  // 信息主表主键.
@@ -89,6 +89,20 @@ class FileApi {
89
89
  data: base64,
90
90
  });
91
91
  }
92
+ /** 上传文件 */
93
+ uploadFileWeb(file: File): Promise<ResponseData<FileInfo>> {
94
+ const formData = new FormData();
95
+ formData.append("file", file);
96
+ return mpx.xfetch.fetch({
97
+ url: "/api/v1/files",
98
+ method: "POST",
99
+ data: formData,
100
+ header: {
101
+ "Content-Type": "multipart/form-data",
102
+ Authorization: db.getBearerToken(),
103
+ },
104
+ });
105
+ }
92
106
 
93
107
  // 上传文件
94
108
  uploadFile(file: string): Promise<FileInfo> {
package/src/app.mpx CHANGED
@@ -28,11 +28,18 @@ createApp({
28
28
 
29
29
  <style lang="scss">
30
30
  @use './styles/theme-default' as theme;
31
+ @import './styles/mixin.css';
31
32
 
32
- // 更换主题
33
33
  page,
34
34
  #app {
35
35
  @include theme.variables;
36
+ box-sizing: border-box;
37
+ min-height: 100%;
38
+ background: var(--cube-fill-bgc, #f2f2f2);
39
+ color: var(--cube-text-color, #323233);
40
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
41
+ font-size: var(--cube-font-size-sm, 28rpx);
42
+ line-height: 1.6;
36
43
  }
37
44
  </style>
38
45
 
@@ -1,13 +1,14 @@
1
1
  <template>
2
2
  <view class="logout-section">
3
3
  <!-- 登录状态才显示退出按钮 -->
4
- <cube-button primary class="jmash-btn btn-width-50" bind:tap="handleLogout" wx:if="{{ isLogin }}">退出登录</cube-button>
4
+ <cube-button primary class="jmash-btn btn-width-50" bind:tap="handleLogout"
5
+ wx:if="{{ userStore.checkLogin() }}">退出登录</cube-button>
5
6
  <text class="version-text">当前版本 V{{ version }}</text>
6
7
  </view>
7
8
  </template>
8
9
 
9
10
  <script>
10
- import mpx, { createComponent, computed } from '@mpxjs/core'
11
+ import mpx, { createComponent } from '@mpxjs/core'
11
12
  import { useUserStore } from '../../store/user'
12
13
 
13
14
  createComponent({
@@ -20,9 +21,8 @@ createComponent({
20
21
  },
21
22
  setup() {
22
23
  let userStore = useUserStore();
23
- const isLogin = computed(() => userStore.accessToken !== '');
24
24
  return {
25
- isLogin, userStore
25
+ userStore
26
26
  };
27
27
  },
28
28
  methods: {
@@ -31,14 +31,13 @@ createComponent({
31
31
  mpx.showModal({
32
32
  title: '提示',
33
33
  content: '确定要退出登录吗?',
34
- success: (res) => {
35
- if (res.confirm) {
36
- // 调用退出接口
37
- this.userStore.logout()
38
- mpx.showToast({ title: '已退出登录', icon: 'success' })
39
- // 通知父组件退出成功
40
- this.triggerEvent('logoutSuccess');
41
- }
34
+ }).then((res) => {
35
+ if (res.confirm) {
36
+ // 调用退出接口
37
+ this.userStore.logout()
38
+ mpx.showToast({ title: '已退出登录', icon: 'success' })
39
+ // 通知父组件退出成功
40
+ this.triggerEvent('logoutSuccess');
42
41
  }
43
42
  })
44
43
  }
@@ -49,19 +48,25 @@ createComponent({
49
48
  <style lang="scss">
50
49
  @import "../../styles/mixin.css";
51
50
 
52
- .btn-width-50 {
53
- width: 50%;
54
- }
55
-
56
51
  .logout-section {
57
52
  display: flex;
58
53
  flex-direction: column;
59
54
  align-items: center;
55
+ gap: 24rpx;
56
+ padding: 32rpx 24rpx;
57
+ --cube-btn-font-size: 28rpx;
58
+ --cube-btn-border-radius: 20rpx;
59
+ }
60
60
 
61
- .version-text {
62
- font-size: var(--cube-font-size-sm);
63
- color: var(--cube-text-color-hint);
64
- }
61
+ .btn-width-50 {
62
+ width: 100%;
63
+ max-width: 560px;
64
+ }
65
+
66
+ .version-text {
67
+ color: var(--cube-text-color-hint, #999);
68
+ font-size: 24rpx;
69
+ line-height: 1.6;
65
70
  }
66
71
  </style>
67
72
 
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <!-- 我的页面 中个人信息编辑页面 -->
3
3
  <view class="my-information">
4
- <view class="main">
4
+ <view class="main jmash-card">
5
5
  <!-- 头像区域 -->
6
6
  <view class="main-profile" wx:if="{{ isUserAvatar }}">
7
7
  <view class="profile-left">
@@ -10,12 +10,14 @@
10
10
  </view>
11
11
  <view class="profile-right">
12
12
  <cube-button inline open-type="chooseAvatar" bind:chooseAvatar="onChooseAvatar">
13
- <image class="avatar-img" src="{{ resourceUrl + '/components/gray_head2x.png' }}" mode="aspectFill"
14
- wx:if="{{ !userInfo.avatar && resourceUrl }}" />
15
- <image class="avatar-img" src="{{ imageUrl + userInfo.avatar }}" mode="aspectFill"
16
- wx:elif="{{ resourceUrl }}" />
17
- <view class="avatar-badge">
18
- <text class="badge-icon">✎</text>
13
+ <view class="avatar-content">
14
+ <image class="avatar-img" src="{{ resourceUrl + '/components/gray_head2x.png' }}" mode="aspectFill"
15
+ wx:if="{{ !userInfo.avatar && resourceUrl }}" />
16
+ <image class="avatar-img" src="{{ imageUrl + userInfo.avatar }}" mode="aspectFill"
17
+ wx:elif="{{ resourceUrl }}" />
18
+ <view class="avatar-badge">
19
+ <text class="badge-icon">✎</text>
20
+ </view>
19
21
  </view>
20
22
  </cube-button>
21
23
  </view>
@@ -34,7 +36,7 @@
34
36
  <view class="main-nickname" wx:if="{{ isUserRealName }}">
35
37
  <view class="nickname-left">姓名</view>
36
38
  <view class="nickname-right">
37
- <cube-input wx:model="{{ userInfo.realName }}" wx:model-prop="value" placeholder="请输入昵称" />
39
+ <cube-input wx:model="{{ userInfo.realName }}" wx:model-prop="value" placeholder="请输入姓名" />
38
40
  </view>
39
41
  </view>
40
42
 
@@ -43,8 +45,10 @@
43
45
  <view class="phone-left">手机号</view>
44
46
  <view class="phone-right">
45
47
  <view class="phone-number">{{ userInfo.mobilePhone || '未绑定手机号' }}</view>
46
- <cube-button inline outline primary open-type@wx="getPhoneNumber" open-type@ali="getAuthorize"
47
- scope="phoneNumber" wx:if="{{ isChangePhone }}" bind:getPhoneNumber="onGetPhoneNumber">更换手机号</cube-button>
48
+ <view class="phone-action" wx:if="{{ isChangePhone }}">
49
+ <cube-button inline outline primary open-type@wx="getPhoneNumber" open-type@ali="getAuthorize"
50
+ scope="phoneNumber" bind:getPhoneNumber="onGetPhoneNumber">更换手机号</cube-button>
51
+ </view>
48
52
  </view>
49
53
  </view>
50
54
  </view>
@@ -198,6 +202,7 @@ createComponent({
198
202
  </script>
199
203
 
200
204
  <style lang="scss">
205
+ @import "../../styles/mixin.css";
201
206
  .my-information {
202
207
  box-sizing: border-box;
203
208
  width: 100%;
@@ -206,205 +211,132 @@ createComponent({
206
211
  padding-bottom: calc(40rpx + env(safe-area-inset-bottom));
207
212
  background: var(--cube-fill-bgc, #f2f2f2);
208
213
  color: var(--cube-text-color, #323233);
209
-
210
- .page-heading {
211
- padding: 0 8rpx 32rpx;
212
- }
213
-
214
- .page-title {
215
- display: block;
216
- font-size: var(--cube-font-size-xl, 40rpx);
217
- font-weight: 600;
218
- line-height: 1.4;
219
- }
220
-
221
- .page-description {
222
- display: block;
223
- margin-top: 12rpx;
224
- color: var(--cube-text-color-hint, #999);
225
- font-size: var(--cube-font-size-xs, 24rpx);
226
- line-height: 1.6;
227
- }
228
-
229
- .main {
230
- padding: 0 32rpx;
231
- overflow: hidden;
232
- background: var(--cube-color-white, #fff);
233
- border: 1rpx solid var(--cube-border-color-normal, #ebebeb);
234
- border-radius: 32rpx;
235
- }
236
-
237
- .main-profile,
238
- .main-nickname,
239
- .main-phone {
240
- display: flex;
241
- align-items: center;
242
- justify-content: space-between;
243
- min-height: 112rpx;
244
- border-bottom: 1rpx solid var(--cube-border-color-normal, #ebebeb);
245
-
246
- &:last-child {
247
- border-bottom: 0;
248
- }
249
- }
250
-
251
- .main-profile {
252
- padding: 28rpx 0;
253
- }
254
-
255
- .profile-left,
256
- .nickname-left,
257
- .phone-left {
258
- flex-shrink: 0;
259
- font-size: var(--cube-font-size-sm, 28rpx);
260
- font-weight: 500;
261
- line-height: 1.5;
262
- }
263
-
264
- .field-title,
265
- .field-hint {
266
- display: block;
267
- }
268
-
269
- .field-hint {
270
- margin-top: 10rpx;
271
- color: var(--cube-text-color-hint, #999);
272
- font-size: var(--cube-font-size-xs, 24rpx);
273
- font-weight: 400;
274
- }
275
-
276
- .profile-right {
277
- flex-shrink: 0;
278
- margin-left: 24rpx;
279
- }
280
-
281
- .avatar-wrapper {
282
- position: relative;
283
- margin: 0;
284
- padding: 6rpx;
285
- background: transparent;
286
- border: 2rpx solid var(--cube-color-primary, #ff7e33);
287
- border-radius: 50%;
288
- line-height: 1;
289
- overflow: visible;
290
- }
291
-
292
- .avatar-img {
293
- display: block;
294
- width: 112rpx;
295
- height: 112rpx;
296
- border-radius: 50%;
297
- background: var(--cube-fill-bgc, #f2f2f2);
298
- }
299
-
300
- .avatar-badge {
301
- position: absolute;
302
- right: -2rpx;
303
- bottom: -2rpx;
304
- display: flex;
305
- align-items: center;
306
- justify-content: center;
307
- width: 36rpx;
308
- height: 36rpx;
309
- color: var(--cube-color-white, #fff);
310
- background: var(--cube-color-primary, #ff7e33);
311
- border: 4rpx solid var(--cube-color-white, #fff);
312
- border-radius: 50%;
313
- }
314
-
315
- .badge-icon {
316
- font-size: 24rpx;
317
- line-height: 1;
318
- }
319
-
320
- .nickname-right,
321
- .phone-right {
322
- display: flex;
323
- flex: 1;
324
- min-width: 0;
325
- align-items: center;
326
- justify-content: flex-end;
327
- margin-left: 24rpx;
328
- }
329
-
330
- .nickname-input {
331
- flex: 1;
332
- width: 100%;
333
- min-width: 0;
334
- height: 88rpx;
335
- padding: 0;
336
- color: var(--cube-text-color, #323233);
337
- background: transparent;
338
- border: 0;
339
- font-size: var(--cube-font-size-sm, 28rpx);
340
- text-align: right;
341
- }
342
-
343
- .field-placeholder {
344
- color: var(--cube-text-color-hint, #999);
345
- font-size: var(--cube-font-size-sm, 28rpx);
346
- }
347
-
348
- .phone-right {
349
- flex-wrap: wrap;
350
- padding: 20rpx 0;
351
- }
352
-
353
- .phone-number {
354
- max-width: 100%;
355
- padding: 8rpx 0;
356
- font-size: var(--cube-font-size-sm, 28rpx);
357
- line-height: 1.5;
358
- overflow-wrap: break-word;
359
- }
360
-
361
- .phone-right-btn {
362
- flex-shrink: 0;
363
- margin: 8rpx 0 8rpx 16rpx;
364
- padding: 12rpx 20rpx;
365
- color: var(--cube-btn-outline-color, var(--cube-color-primary, #ff7e33));
366
- background: var(--cube-btn-outline-bgc, var(--cube-color-white, #fff));
367
- border: 1rpx solid var(--cube-btn-outline-border-color, var(--cube-color-primary, #ff7e33));
368
- border-radius: 24rpx;
369
- font-size: var(--cube-font-size-xs, 24rpx);
370
- line-height: 1.5;
371
- }
372
-
373
- .main-btn {
374
- padding: 40rpx 8rpx 0;
375
- }
376
-
377
- .main-btn-item {
378
- display: flex;
379
- align-items: center;
380
- justify-content: center;
381
- box-sizing: border-box;
382
- width: 100%;
383
- min-height: 96rpx;
384
- margin: 0;
385
- padding: 24rpx;
386
- color: var(--cube-btn-primary-color, var(--cube-color-white, #fff));
387
- background: var(--cube-btn-primary-bgc, var(--cube-color-primary, #ff7e33));
388
- border: 0;
389
- border-radius: var(--cube-btn-border-radius, 24rpx);
390
- font-size: var(--cube-font-size-md, 32rpx);
391
- font-weight: 600;
392
- line-height: 1.5;
393
- }
394
-
395
- .avatar-wrapper,
396
- .phone-right-btn,
397
- .main-btn-item {
398
- transition: opacity 0.2s;
399
-
400
- &::after {
401
- border: 0;
402
- }
403
- }
404
-
405
- .control-pressed {
406
- opacity: var(--cube-opacity_active, 0.6);
407
- }
214
+ }
215
+ .my-information .main {
216
+ padding: 0 32rpx;
217
+ overflow: hidden;
218
+ }
219
+ .my-information .main-profile,
220
+ .my-information .main-nickname,
221
+ .my-information .main-phone {
222
+ display: flex;
223
+ align-items: center;
224
+ justify-content: space-between;
225
+ min-height: 120rpx;
226
+ border-bottom: 1rpx solid var(--cube-border-color-normal, #ebebeb);
227
+ }
228
+ .my-information .main-profile:last-child,
229
+ .my-information .main-nickname:last-child,
230
+ .my-information .main-phone:last-child {
231
+ border-bottom: 0;
232
+ }
233
+ .my-information .main-profile {
234
+ padding: 28rpx 0;
235
+ }
236
+ .my-information .profile-left,
237
+ .my-information .nickname-left,
238
+ .my-information .phone-left {
239
+ flex-shrink: 0;
240
+ font-size: 28rpx;
241
+ font-weight: 500;
242
+ line-height: 1.5;
243
+ }
244
+ .my-information .field-title,
245
+ .my-information .field-hint {
246
+ display: block;
247
+ }
248
+ .my-information .field-hint {
249
+ margin-top: 10rpx;
250
+ color: var(--cube-text-color-hint, #999);
251
+ font-size: 24rpx;
252
+ font-weight: 400;
253
+ }
254
+ .my-information .profile-right {
255
+ flex-shrink: 0;
256
+ margin-left: 24rpx;
257
+ --cube-btn-bgc: transparent;
258
+ --cube-btn-bgc_active: transparent;
259
+ --cube-btn-border-radius: 16rpx;
260
+ --cube-btn-inline-padding-top: 0;
261
+ --cube-btn-inline-padding-right: 0;
262
+ --cube-btn-inline-padding-bottom: 0;
263
+ --cube-btn-inline-padding-left: 0;
264
+ }
265
+ .my-information .avatar-content {
266
+ position: relative;
267
+ padding: 8rpx;
268
+ }
269
+ .my-information .avatar-img {
270
+ display: block;
271
+ width: 112rpx;
272
+ height: 112rpx;
273
+ border: 2rpx solid var(--cube-border-color-normal, #ebebeb);
274
+ border-radius: 50%;
275
+ background: var(--cube-fill-bgc, #f2f2f2);
276
+ }
277
+ .my-information .avatar-badge {
278
+ position: absolute;
279
+ right: 4rpx;
280
+ bottom: 4rpx;
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ width: 36rpx;
285
+ height: 36rpx;
286
+ color: var(--cube-color-white, #fff);
287
+ background: var(--cube-color-primary, #ff7e33);
288
+ border: 4rpx solid var(--cube-color-white, #fff);
289
+ border-radius: 50%;
290
+ }
291
+ .my-information .badge-icon {
292
+ font-size: 24rpx;
293
+ line-height: 1;
294
+ }
295
+ .my-information .nickname-right,
296
+ .my-information .phone-right {
297
+ flex: 1;
298
+ min-width: 0;
299
+ margin-left: 32rpx;
300
+ }
301
+ .my-information .nickname-right {
302
+ padding: 20rpx 0;
303
+ --cube-input-font-size: 28rpx;
304
+ --cube-input-padding: 20rpx 24rpx;
305
+ --cube-input-border-radius: 16rpx;
306
+ --cube-input-bgc: var(--cube-fill-bgc, #f2f2f2);
307
+ --cube-input-border-color: transparent;
308
+ }
309
+ .my-information .phone-right {
310
+ display: flex;
311
+ flex-wrap: wrap;
312
+ align-items: center;
313
+ justify-content: flex-end;
314
+ padding: 24rpx 0;
315
+ --cube-btn-border-radius: 28rpx;
316
+ --cube-btn-inline-font-size: 24rpx;
317
+ --cube-btn-inline-padding-top: 14rpx;
318
+ --cube-btn-inline-padding-right: 20rpx;
319
+ --cube-btn-inline-padding-bottom: 14rpx;
320
+ --cube-btn-inline-padding-left: 20rpx;
321
+ }
322
+ .my-information .phone-number {
323
+ max-width: 100%;
324
+ margin: 8rpx 0;
325
+ font-size: 28rpx;
326
+ line-height: 1.5;
327
+ overflow-wrap: break-word;
328
+ }
329
+ .my-information .phone-action {
330
+ flex-shrink: 0;
331
+ margin: 8rpx 0 8rpx 20rpx;
332
+ }
333
+ .my-information .main-btn {
334
+ padding: 40rpx 8rpx 0;
335
+ --cube-btn-border-radius: 24rpx;
336
+ --cube-btn-font-size: 32rpx;
337
+ --cube-btn-primary-font-weight: 600;
338
+ --cube-btn-block-padding-top: 28rpx;
339
+ --cube-btn-block-padding-bottom: 28rpx;
408
340
  }
409
341
  </style>
410
342