jmash-core-mp 0.1.21 → 0.1.22

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 (150) hide show
  1. package/.editorconfig +9 -9
  2. package/README.md +60 -60
  3. package/babel.config.json +34 -34
  4. package/eslint.config.mjs +7 -7
  5. package/lib/api/auth/index.d.ts +21 -21
  6. package/lib/api/auth/index.js +199 -199
  7. package/lib/api/auth/types.d.ts +86 -86
  8. package/lib/api/auth/types.js +9 -9
  9. package/lib/api/cms/index.d.ts +20 -20
  10. package/lib/api/cms/index.js +161 -161
  11. package/lib/api/cms/types.d.ts +200 -200
  12. package/lib/api/cms/types.js +1 -1
  13. package/lib/api/constant.d.ts +5 -5
  14. package/lib/api/constant.js +6 -6
  15. package/lib/api/dict/index.d.ts +18 -18
  16. package/lib/api/dict/index.js +34 -34
  17. package/lib/api/dict/types.d.ts +28 -28
  18. package/lib/api/dict/types.js +1 -1
  19. package/lib/api/dicts.d.ts +18 -18
  20. package/lib/api/dicts.js +67 -67
  21. package/lib/api/files/index.d.ts +25 -25
  22. package/lib/api/files/index.js +135 -135
  23. package/lib/api/files/types.d.ts +38 -38
  24. package/lib/api/files/types.js +1 -1
  25. package/lib/api/index.d.ts +4 -4
  26. package/lib/api/index.js +6 -6
  27. package/lib/api/myorgan/types.d.ts +22 -22
  28. package/lib/api/myorgan/types.js +1 -1
  29. package/lib/api/region/index.d.ts +7 -7
  30. package/lib/api/region/index.js +19 -19
  31. package/lib/api/region/types.d.ts +19 -19
  32. package/lib/api/region/types.js +1 -1
  33. package/lib/api/storage/index.d.ts +10 -10
  34. package/lib/api/storage/index.js +43 -43
  35. package/lib/api/storage/types.d.ts +28 -28
  36. package/lib/api/storage/types.js +1 -1
  37. package/lib/api/types.d.ts +42 -42
  38. package/lib/api/types.js +1 -1
  39. package/lib/app.mpx.d.ts +1 -1
  40. package/lib/components/auth-user/jmash-update-user.mpx.d.ts +1 -1
  41. package/lib/components/auth-user/jmash-user.mpx.d.ts +1 -1
  42. package/lib/components/cms/jmash-cms-acticle-list.mpx.d.ts +1 -1
  43. package/lib/components/cms/jmash-cms-article-item.mpx.d.ts +1 -1
  44. package/lib/components/cms/jmash-cms-article-view.mpx.d.ts +1 -0
  45. package/lib/components/cms/jmash-cms-article.mpx.d.ts +1 -1
  46. package/lib/components/cms/jmash-cms-like.mpx.d.ts +1 -1
  47. package/lib/components/common/jmash-upload-picture.mpx.d.ts +1 -0
  48. package/lib/components/core/jmash-login.mpx.d.ts +1 -0
  49. package/lib/index.d.ts +21 -21
  50. package/lib/index.js +14 -14
  51. package/lib/packages/pages/cms/cms-article-list.mpx.d.ts +1 -1
  52. package/lib/pages/index.mpx.d.ts +1 -0
  53. package/lib/store/user.d.ts +31 -31
  54. package/lib/store/user.js +227 -227
  55. package/lib/utils/common.d.ts +35 -35
  56. package/lib/utils/common.js +166 -166
  57. package/lib/utils/config.d.ts +5 -5
  58. package/lib/utils/config.js +29 -29
  59. package/lib/utils/db.d.ts +21 -21
  60. package/lib/utils/db.js +84 -84
  61. package/lib/utils/grpc.d.ts +5 -5
  62. package/lib/utils/grpc.js +20 -20
  63. package/lib/utils/net.d.ts +7 -7
  64. package/lib/utils/net.js +15 -15
  65. package/lib/utils/request.d.ts +2 -2
  66. package/lib/utils/request.js +123 -123
  67. package/mpx.config.js +27 -27
  68. package/package.json +1 -1
  69. package/postcss.config.js +11 -11
  70. package/project.config.json +24 -24
  71. package/project.private.config.json +13 -13
  72. package/public/index.html +15 -15
  73. package/src/api/auth/index.ts +227 -227
  74. package/src/api/auth/types.ts +166 -166
  75. package/src/api/cms/index.ts +218 -218
  76. package/src/api/cms/types.ts +379 -379
  77. package/src/api/constant.ts +6 -6
  78. package/src/api/dict/index.ts +44 -44
  79. package/src/api/dict/types.ts +49 -49
  80. package/src/api/dicts.ts +72 -72
  81. package/src/api/files/index.ts +163 -163
  82. package/src/api/files/types.ts +67 -67
  83. package/src/api/index.ts +11 -11
  84. package/src/api/myorgan/types.ts +42 -42
  85. package/src/api/region/index.ts +23 -23
  86. package/src/api/region/types.ts +36 -36
  87. package/src/api/storage/index.ts +62 -62
  88. package/src/api/storage/types.ts +54 -54
  89. package/src/api/types.ts +72 -72
  90. package/src/app.mpx +71 -71
  91. package/src/components/auth-user/jmash-logout.mpx +91 -91
  92. package/src/components/auth-user/jmash-update-user.mpx +386 -386
  93. package/src/components/auth-user/jmash-update-user.web.mpx +366 -366
  94. package/src/components/auth-user/jmash-user.mpx +359 -359
  95. package/src/components/cms/jmash-cms-acticle-list.mpx +182 -182
  96. package/src/components/cms/jmash-cms-article-item.mpx +241 -241
  97. package/src/components/cms/jmash-cms-article-view.mpx +131 -131
  98. package/src/components/cms/jmash-cms-article.mpx +68 -68
  99. package/src/components/cms/jmash-cms-like.mpx +151 -151
  100. package/src/components/common/jmash-avatar-edit.mpx +153 -153
  101. package/src/components/common/jmash-cascader-region.mpx +112 -112
  102. package/src/components/common/jmash-menu.mpx +129 -129
  103. package/src/components/common/jmash-none-data.mpx +82 -82
  104. package/src/components/common/jmash-pic-swiper.mpx +71 -71
  105. package/src/components/common/jmash-popup.mpx +137 -137
  106. package/src/components/common/jmash-search.mpx +126 -126
  107. package/src/components/common/jmash-single-btn.mpx +53 -53
  108. package/src/components/common/jmash-stepper.mpx +214 -214
  109. package/src/components/common/jmash-tab-bar.mpx +50 -50
  110. package/src/components/common/jmash-textarea.mpx +88 -88
  111. package/src/components/common/jmash-top-navigation.mpx +203 -203
  112. package/src/components/common/jmash-upload-picture.mpx +129 -126
  113. package/src/components/core/jmash-cms-protocol.mpx +66 -66
  114. package/src/components/core/jmash-login.ali.mpx +284 -284
  115. package/src/components/core/jmash-login.mpx +348 -348
  116. package/src/components/core/jmash-login.web.mpx +421 -421
  117. package/src/components/core/jmash-popup-login.ali.mpx +311 -311
  118. package/src/components/core/jmash-popup-login.mpx +415 -415
  119. package/src/components/core/jmash-popup-login.web.mpx +389 -389
  120. package/src/custom-tab-bar/index.mpx +10 -10
  121. package/src/global.d.ts +11 -11
  122. package/src/index.ts +71 -71
  123. package/src/packages/index.mpx +10 -10
  124. package/src/packages/pages/auth/cms-protocol.mpx +31 -31
  125. package/src/packages/pages/auth/login.mpx +59 -59
  126. package/src/packages/pages/auth/update-user.mpx +17 -17
  127. package/src/packages/pages/cms/cms-article-list.mpx +164 -164
  128. package/src/packages/pages/cms/cms-article.mpx +32 -32
  129. package/src/pages/basic-component.mpx +30 -30
  130. package/src/pages/half-home.mpx +58 -58
  131. package/src/pages/home.mpx +52 -52
  132. package/src/pages/home2.mpx +47 -47
  133. package/src/pages/index.mpx +13 -3
  134. package/src/pages/tabbar/home.mpx +77 -77
  135. package/src/pages/tabbar/my.mpx +80 -80
  136. package/src/store/user.ts +270 -270
  137. package/src/styles/index.scss +20 -20
  138. package/src/styles/vars.scss +27 -27
  139. package/src/utils/common.ts +179 -179
  140. package/src/utils/config.ts +35 -35
  141. package/src/utils/db.ts +100 -100
  142. package/src/utils/grpc.ts +21 -21
  143. package/src/utils/net.ts +18 -18
  144. package/src/utils/request.ts +134 -134
  145. package/static/ali/mini.project.json +4 -4
  146. package/static/dd/project.config.json +15 -15
  147. package/static/swan/project.swan.json +14 -14
  148. package/static/tt/project.config.json +11 -11
  149. package/static/wx/project.config.json +40 -40
  150. package/uno.config.js +9 -9
@@ -1,311 +1,311 @@
1
- <template>
2
- <!-- 支付宝小程序授权登录 -->
3
- <cube-modal a:ref="loginModal" visible="{{ isVisible }}" noBuiltInBtns="true" maskClosable="false" z-index="999"
4
- bind:cancel="onClose" mask-opacity="0.1" class="login-popup">
5
- <!-- 标题区域 -->
6
- <view class="popup-header" slot="header">
7
- <view class="header-info">
8
- 授权登录{{ appName }}
9
- </view>
10
- <view class="header-close" bind:tap="onClose">
11
- <text class="close-icon">×</text>
12
- </view>
13
- </view>
14
- <!-- 内容区域 -->
15
- <view class="popup-body" slot="content">
16
- <!-- 协议勾选 -->
17
- <view class="agreement-row">
18
- <cube-checkbox value="{{ isCheckBox }}" onInput="validate" shape="square" class="agreement-check">
19
- <text class="agreement-text">已阅读</text>
20
- <text id="user" class="agreement-link" onTap="goInfo">《用户使用协议》</text>
21
- <text class="agreement-text">和</text>
22
- <text id="privacy" class="agreement-link" onTap="goInfo">《隐私权政策》</text>
23
- </cube-checkbox>
24
- </view>
25
- <!-- 按钮组 -->
26
- <view class="action-area">
27
- <button primary a:if="{{ !isCheckBox }}" onTap="onLogin" class="btn-login">
28
- 授权登录
29
- </button>
30
- <button a:else open-type="getAuthorize" scope="phoneNumber" onGetAuthorize="onPhoneAuthSuccess"
31
- onError="onPhoneAuthFail" class="btn-login">
32
- 授权手机号登录
33
- </button>
34
- <view class="btn-cancel" onTap="onClose">
35
- <text class="cancel-text">暂不登录</text>
36
- </view>
37
- </view>
38
- </view>
39
- </cube-modal>
40
- </template>
41
-
42
- <script>
43
- import mpx, { createComponent, ref, watch, toRefs } from '@mpxjs/core'
44
- import { useUserStore } from '../../store/user';
45
-
46
- createComponent({
47
- properties: {
48
- visible: {
49
- type: Boolean,
50
- value: false,
51
- }
52
- },
53
- setup(props) {
54
- let config = getApp().globalData.config || { resourceUrl: '', name: '应用' };
55
- let resourceUrl = config.resourceUrl;
56
- let appName = config.name;
57
- let isCheckBox = ref(false);
58
- let isVisible = ref(props.visible);
59
- let userStore = useUserStore();
60
-
61
- const { visible } = toRefs(props)
62
- watch(visible, (newVal) => {
63
- isVisible.value = newVal;
64
- if (newVal) {
65
- isCheckBox.value = false;
66
- }
67
- });
68
-
69
- return {
70
- resourceUrl,
71
- appName,
72
- isCheckBox,
73
- isVisible,
74
- userStore
75
- };
76
- },
77
- methods: {
78
- onClose() {
79
- this.isVisible = false;
80
- this.triggerEvent('close', false);
81
- },
82
-
83
- onLogin() {
84
- let res = this.validate();
85
- if (!this.isCheckBox) {
86
- mpx.showModal({
87
- title: "提示",
88
- content: "您是否已阅读《用户使用协议》《隐私权政策》?",
89
- success: (res) => {
90
- console.log(res);
91
- if (res.confirm) {
92
- this.isCheckBox = true;
93
- }
94
- },
95
- });
96
- return;
97
- }
98
- if (!res.validate) {
99
- mpx.showToast({
100
- icon: "error",
101
- title: res.message,
102
- duration: 2000
103
- });
104
- }
105
- },
106
- // 手机号授权成功回调
107
- onPhoneAuthSuccess(e) {
108
- console.log("手机号授权成功", e);
109
- mpx.showLoading({
110
- title: '登录中...',
111
- mask: true
112
- });
113
- // 支付宝小程序获取手机号
114
- my.getPhoneNumber({
115
- success: (res) => {
116
- console.log("手机号授权", res);
117
- const { response } = res;
118
- this.userStore.mpRegister(response).then((resp) => {
119
- mpx.hideLoading();
120
- if (resp.status) {
121
- this.triggerEvent("status", resp.status);
122
- this.onClose();
123
- } else {
124
- mpx.showToast({
125
- icon: "error",
126
- title: resp.message || '登录失败',
127
- duration: 2000
128
- });
129
- }
130
- }).catch(() => {
131
- mpx.hideLoading();
132
- });
133
- },
134
- fail: () => {
135
- mpx.hideLoading();
136
- mpx.showToast({
137
- title: "您已取消授权",
138
- icon: "none",
139
- duration: 2000,
140
- });
141
- }
142
- });
143
- },
144
-
145
- // 手机号授权失败回调
146
- onPhoneAuthFail() {
147
- mpx.showToast({
148
- title: "手机号授权失败",
149
- icon: "none",
150
- duration: 2000,
151
- });
152
- },
153
-
154
- validate(e) {
155
- console.log(e);
156
- this.isCheckBox = e.detail.value;
157
- if (!this.isCheckBox) {
158
- return { validate: false, message: "请阅读并同意用户协议" };
159
- }
160
- return { validate: true, message: "验证通过" };
161
- },
162
-
163
- goInfo(e) {
164
- const id = e.currentTarget?.id;
165
- this.triggerEvent("policy", id);
166
- mpx.navigateTo({
167
- url: '/jmash/pages/auth/cms-protocol?channelAlias=' + id
168
- });
169
- },
170
- }
171
- })
172
- </script>
173
-
174
- <style lang="scss">
175
- $primary: #1677ff; // 支付宝主题色
176
- $primary-dark: #0958d9;
177
- $text-1: #111111;
178
- $text-2: #555555;
179
- $text-3: #888888;
180
- $border: #d0d0d0;
181
- $bg-page: #f2f2f2;
182
- $bg-card: #ffffff;
183
-
184
- .login-popup {
185
- background-color: $bg-card !important;
186
- border-radius: 32rpx 32rpx 0 0 !important;
187
- overflow: hidden;
188
- }
189
-
190
- .popup-header {
191
- display: flex;
192
- align-items: center;
193
- justify-content: space-between;
194
- padding: 36rpx 40rpx 28rpx;
195
- background: $bg-card;
196
-
197
- .header-info {
198
- flex: 1;
199
-
200
- .header-title {
201
- font-size: 36rpx;
202
- font-weight: 700;
203
- color: $text-1;
204
- margin: 0;
205
- letter-spacing: 1rpx;
206
- }
207
- }
208
-
209
- .header-close {
210
- width: 56rpx;
211
- height: 56rpx;
212
- display: flex;
213
- align-items: center;
214
- justify-content: center;
215
- background: $bg-page;
216
- border-radius: 50%;
217
-
218
- .close-icon {
219
- font-size: 28rpx;
220
- color: $text-3;
221
- line-height: 1;
222
- margin-top: -2rpx;
223
- }
224
- }
225
- }
226
-
227
- .popup-body {
228
- padding: 40rpx 48rpx 56rpx;
229
- background: $bg-card;
230
- }
231
-
232
- .agreement-row {
233
- margin-bottom: 48rpx;
234
- padding: 0 4rpx;
235
-
236
- .agreement-check {
237
- font-size: 24rpx;
238
-
239
- .agreement-text {
240
- color: $text-3;
241
- font-size: 24rpx;
242
- }
243
-
244
- .agreement-link {
245
- color: $primary;
246
- font-size: 24rpx;
247
- }
248
- }
249
- }
250
-
251
- .action-area {
252
- display: flex;
253
- flex-direction: column;
254
- align-items: center;
255
-
256
- .btn-login {
257
- width: 100%;
258
- height: 88rpx;
259
- border-radius: 44rpx;
260
- font-size: 30rpx;
261
- font-weight: 600;
262
- letter-spacing: 2rpx;
263
- background-color: $primary;
264
- color: #fff;
265
-
266
- &.btn-disabled {
267
- opacity: 0.5;
268
- }
269
- }
270
-
271
- .btn-cancel {
272
- margin-top: 28rpx;
273
- padding: 16rpx 32rpx;
274
-
275
- .cancel-text {
276
- font-size: 26rpx;
277
- color: $text-3;
278
- }
279
- }
280
- }
281
-
282
- :deep(.cube-button--primary) {
283
- background-color: $primary;
284
- border: none;
285
-
286
- &:active {
287
- background-color: $primary-dark;
288
- }
289
- }
290
-
291
- :deep(.cube-checkbox__input) {
292
- margin-right: 8rpx;
293
- }
294
-
295
- :deep(.cube-checkbox__content) {
296
- font-size: 20rpx;
297
- line-height: 1.5;
298
- }
299
- </style>
300
-
301
- <script type="application/json">
302
- {
303
- "component": true,
304
- "usingComponents": {
305
- "cube-modal": "@mpxjs/mpx-cube-ui/lib/components/modal/index.mpx",
306
- "cube-button": "@mpxjs/mpx-cube-ui/lib/components/button/index.mpx",
307
- "cube-checkbox": "@mpxjs/mpx-cube-ui/lib/components/checkbox/index.mpx",
308
- "cube-checkbox-group": "@mpxjs/mpx-cube-ui/lib/components/checkbox-group/index.mpx"
309
- }
310
- }
311
- </script>
1
+ <template>
2
+ <!-- 支付宝小程序授权登录 -->
3
+ <cube-modal a:ref="loginModal" visible="{{ isVisible }}" noBuiltInBtns="true" maskClosable="false" z-index="999"
4
+ bind:cancel="onClose" mask-opacity="0.1" class="login-popup">
5
+ <!-- 标题区域 -->
6
+ <view class="popup-header" slot="header">
7
+ <view class="header-info">
8
+ 授权登录{{ appName }}
9
+ </view>
10
+ <view class="header-close" bind:tap="onClose">
11
+ <text class="close-icon">×</text>
12
+ </view>
13
+ </view>
14
+ <!-- 内容区域 -->
15
+ <view class="popup-body" slot="content">
16
+ <!-- 协议勾选 -->
17
+ <view class="agreement-row">
18
+ <cube-checkbox value="{{ isCheckBox }}" onInput="validate" shape="square" class="agreement-check">
19
+ <text class="agreement-text">已阅读</text>
20
+ <text id="user" class="agreement-link" onTap="goInfo">《用户使用协议》</text>
21
+ <text class="agreement-text">和</text>
22
+ <text id="privacy" class="agreement-link" onTap="goInfo">《隐私权政策》</text>
23
+ </cube-checkbox>
24
+ </view>
25
+ <!-- 按钮组 -->
26
+ <view class="action-area">
27
+ <button primary a:if="{{ !isCheckBox }}" onTap="onLogin" class="btn-login">
28
+ 授权登录
29
+ </button>
30
+ <button a:else open-type="getAuthorize" scope="phoneNumber" onGetAuthorize="onPhoneAuthSuccess"
31
+ onError="onPhoneAuthFail" class="btn-login">
32
+ 授权手机号登录
33
+ </button>
34
+ <view class="btn-cancel" onTap="onClose">
35
+ <text class="cancel-text">暂不登录</text>
36
+ </view>
37
+ </view>
38
+ </view>
39
+ </cube-modal>
40
+ </template>
41
+
42
+ <script>
43
+ import mpx, { createComponent, ref, watch, toRefs } from '@mpxjs/core'
44
+ import { useUserStore } from '../../store/user';
45
+
46
+ createComponent({
47
+ properties: {
48
+ visible: {
49
+ type: Boolean,
50
+ value: false,
51
+ }
52
+ },
53
+ setup(props) {
54
+ let config = getApp().globalData.config || { resourceUrl: '', name: '应用' };
55
+ let resourceUrl = config.resourceUrl;
56
+ let appName = config.name;
57
+ let isCheckBox = ref(false);
58
+ let isVisible = ref(props.visible);
59
+ let userStore = useUserStore();
60
+
61
+ const { visible } = toRefs(props)
62
+ watch(visible, (newVal) => {
63
+ isVisible.value = newVal;
64
+ if (newVal) {
65
+ isCheckBox.value = false;
66
+ }
67
+ });
68
+
69
+ return {
70
+ resourceUrl,
71
+ appName,
72
+ isCheckBox,
73
+ isVisible,
74
+ userStore
75
+ };
76
+ },
77
+ methods: {
78
+ onClose() {
79
+ this.isVisible = false;
80
+ this.triggerEvent('close', false);
81
+ },
82
+
83
+ onLogin() {
84
+ let res = this.validate();
85
+ if (!this.isCheckBox) {
86
+ mpx.showModal({
87
+ title: "提示",
88
+ content: "您是否已阅读《用户使用协议》《隐私权政策》?",
89
+ success: (res) => {
90
+ console.log(res);
91
+ if (res.confirm) {
92
+ this.isCheckBox = true;
93
+ }
94
+ },
95
+ });
96
+ return;
97
+ }
98
+ if (!res.validate) {
99
+ mpx.showToast({
100
+ icon: "error",
101
+ title: res.message,
102
+ duration: 2000
103
+ });
104
+ }
105
+ },
106
+ // 手机号授权成功回调
107
+ onPhoneAuthSuccess(e) {
108
+ console.log("手机号授权成功", e);
109
+ mpx.showLoading({
110
+ title: '登录中...',
111
+ mask: true
112
+ });
113
+ // 支付宝小程序获取手机号
114
+ my.getPhoneNumber({
115
+ success: (res) => {
116
+ console.log("手机号授权", res);
117
+ const { response } = res;
118
+ this.userStore.mpRegister(response).then((resp) => {
119
+ mpx.hideLoading();
120
+ if (resp.status) {
121
+ this.triggerEvent("status", resp.status);
122
+ this.onClose();
123
+ } else {
124
+ mpx.showToast({
125
+ icon: "error",
126
+ title: resp.message || '登录失败',
127
+ duration: 2000
128
+ });
129
+ }
130
+ }).catch(() => {
131
+ mpx.hideLoading();
132
+ });
133
+ },
134
+ fail: () => {
135
+ mpx.hideLoading();
136
+ mpx.showToast({
137
+ title: "您已取消授权",
138
+ icon: "none",
139
+ duration: 2000,
140
+ });
141
+ }
142
+ });
143
+ },
144
+
145
+ // 手机号授权失败回调
146
+ onPhoneAuthFail() {
147
+ mpx.showToast({
148
+ title: "手机号授权失败",
149
+ icon: "none",
150
+ duration: 2000,
151
+ });
152
+ },
153
+
154
+ validate(e) {
155
+ console.log(e);
156
+ this.isCheckBox = e.detail.value;
157
+ if (!this.isCheckBox) {
158
+ return { validate: false, message: "请阅读并同意用户协议" };
159
+ }
160
+ return { validate: true, message: "验证通过" };
161
+ },
162
+
163
+ goInfo(e) {
164
+ const id = e.currentTarget?.id;
165
+ this.triggerEvent("policy", id);
166
+ mpx.navigateTo({
167
+ url: '/jmash/pages/auth/cms-protocol?channelAlias=' + id
168
+ });
169
+ },
170
+ }
171
+ })
172
+ </script>
173
+
174
+ <style lang="scss">
175
+ $primary: #1677ff; // 支付宝主题色
176
+ $primary-dark: #0958d9;
177
+ $text-1: #111111;
178
+ $text-2: #555555;
179
+ $text-3: #888888;
180
+ $border: #d0d0d0;
181
+ $bg-page: #f2f2f2;
182
+ $bg-card: #ffffff;
183
+
184
+ .login-popup {
185
+ background-color: $bg-card !important;
186
+ border-radius: 32rpx 32rpx 0 0 !important;
187
+ overflow: hidden;
188
+ }
189
+
190
+ .popup-header {
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: space-between;
194
+ padding: 36rpx 40rpx 28rpx;
195
+ background: $bg-card;
196
+
197
+ .header-info {
198
+ flex: 1;
199
+
200
+ .header-title {
201
+ font-size: 36rpx;
202
+ font-weight: 700;
203
+ color: $text-1;
204
+ margin: 0;
205
+ letter-spacing: 1rpx;
206
+ }
207
+ }
208
+
209
+ .header-close {
210
+ width: 56rpx;
211
+ height: 56rpx;
212
+ display: flex;
213
+ align-items: center;
214
+ justify-content: center;
215
+ background: $bg-page;
216
+ border-radius: 50%;
217
+
218
+ .close-icon {
219
+ font-size: 28rpx;
220
+ color: $text-3;
221
+ line-height: 1;
222
+ margin-top: -2rpx;
223
+ }
224
+ }
225
+ }
226
+
227
+ .popup-body {
228
+ padding: 40rpx 48rpx 56rpx;
229
+ background: $bg-card;
230
+ }
231
+
232
+ .agreement-row {
233
+ margin-bottom: 48rpx;
234
+ padding: 0 4rpx;
235
+
236
+ .agreement-check {
237
+ font-size: 24rpx;
238
+
239
+ .agreement-text {
240
+ color: $text-3;
241
+ font-size: 24rpx;
242
+ }
243
+
244
+ .agreement-link {
245
+ color: $primary;
246
+ font-size: 24rpx;
247
+ }
248
+ }
249
+ }
250
+
251
+ .action-area {
252
+ display: flex;
253
+ flex-direction: column;
254
+ align-items: center;
255
+
256
+ .btn-login {
257
+ width: 100%;
258
+ height: 88rpx;
259
+ border-radius: 44rpx;
260
+ font-size: 30rpx;
261
+ font-weight: 600;
262
+ letter-spacing: 2rpx;
263
+ background-color: $primary;
264
+ color: #fff;
265
+
266
+ &.btn-disabled {
267
+ opacity: 0.5;
268
+ }
269
+ }
270
+
271
+ .btn-cancel {
272
+ margin-top: 28rpx;
273
+ padding: 16rpx 32rpx;
274
+
275
+ .cancel-text {
276
+ font-size: 26rpx;
277
+ color: $text-3;
278
+ }
279
+ }
280
+ }
281
+
282
+ :deep(.cube-button--primary) {
283
+ background-color: $primary;
284
+ border: none;
285
+
286
+ &:active {
287
+ background-color: $primary-dark;
288
+ }
289
+ }
290
+
291
+ :deep(.cube-checkbox__input) {
292
+ margin-right: 8rpx;
293
+ }
294
+
295
+ :deep(.cube-checkbox__content) {
296
+ font-size: 20rpx;
297
+ line-height: 1.5;
298
+ }
299
+ </style>
300
+
301
+ <script type="application/json">
302
+ {
303
+ "component": true,
304
+ "usingComponents": {
305
+ "cube-modal": "@mpxjs/mpx-cube-ui/lib/components/modal/index.mpx",
306
+ "cube-button": "@mpxjs/mpx-cube-ui/lib/components/button/index.mpx",
307
+ "cube-checkbox": "@mpxjs/mpx-cube-ui/lib/components/checkbox/index.mpx",
308
+ "cube-checkbox-group": "@mpxjs/mpx-cube-ui/lib/components/checkbox-group/index.mpx"
309
+ }
310
+ }
311
+ </script>