@uxda/appkit 4.0.16 → 4.0.18

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.
package/dist/appkit.css CHANGED
@@ -103,12 +103,37 @@
103
103
  margin: 10px;
104
104
  }
105
105
  .app-verify .caption {
106
- font-size: 14px;
107
- color: #666;
106
+ font-size: 10px !important;
107
+ color: #ccc;
108
+ line-height: 21px;
109
+ }
110
+ .app-verify .number {
111
+ line-height: 21px;
112
+ }
113
+ .app-verify .form .nut-cell-group__wrap {
114
+ display: flex;
115
+ align-items: center;
116
+ margin: 20px 0 !important;
117
+ }
118
+ .app-verify .form .nut-cell-group__wrap .form-input {
119
+ height: 36px;
120
+ line-height: 36px;
121
+ border: none;
122
+ background: #f5f5f5;
123
+ border-radius: 5px;
124
+ flex: 1;
125
+ padding-left: 12px;
126
+ }
127
+ .app-verify .form .nut-cell-group__wrap .form-btn {
128
+ margin-left: 12px;
129
+ width: 90px;
108
130
  }
109
131
  .app-verify .buttons .ns-button {
110
132
  width: 104px;
111
133
  }
134
+ .app-verify .buttons .cancel-btn {
135
+ border: 1px solid #969696 !important;
136
+ }
112
137
  .dd-notice-bar {
113
138
  position: fixed;
114
139
  top: 0;
@@ -162,6 +187,14 @@
162
187
  width: 24px;
163
188
  height: 24px;
164
189
  }
190
+ .ocr-icon {
191
+ width: 24px;
192
+ height: 24px;
193
+ }
194
+ .ocr-icon .ns-icon {
195
+ width: 24px;
196
+ height: 24px;
197
+ }
165
198
  .recharge-view {
166
199
  height: 100%;
167
200
  display: flex;
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ import '@nutui/nutui-taro/dist/packages/step/style/css';
25
25
 
26
26
  const _hoisted_1$E = { class: "token-line number" };
27
27
  const _hoisted_2$y = { class: "number" };
28
- var script$H = /* @__PURE__ */ defineComponent({
28
+ var script$I = /* @__PURE__ */ defineComponent({
29
29
  __name: "AmountPicker",
30
30
  props: {
31
31
  items: { type: Array, required: true, default: () => [] },
@@ -94,7 +94,7 @@ var script$H = /* @__PURE__ */ defineComponent({
94
94
  }
95
95
  });
96
96
 
97
- script$H.__file = "src/payment/components/AmountPicker.vue";
97
+ script$I.__file = "src/payment/components/AmountPicker.vue";
98
98
 
99
99
  const _hoisted_1$D = { class: "agreement-doc" };
100
100
  const _hoisted_2$x = /* @__PURE__ */ createStaticVNode('<h1>\u5927\u9053\u4E91\u5E73\u53F0\u4E91\u8C46\u5145\u503C\u670D\u52A1\u534F\u8BAE</h1><p>2023-12-01</p><p>\xA0</p><p>\u6B22\u8FCE\u60A8\u4F7F\u7528\u5927\u9053\u4E91\u5E73\u53F0\u4E91\u8C46\u5145\u503C\u670D\u52A1\uFF01</p><p>\xA0</p><p>\u3010\u63D0\u793A\u6761\u6B3E\u3011</p><p> \u6B22\u8FCE\u60A8\u4E0E\u5927\u9053\u4E91\u5E73\u53F0\u670D\u52A1\u63D0\u4F9B\u8005\u7B7E\u7F72\u300A\u5927\u9053\u4E91\u5E73\u53F0\u4E91\u8C46\u5145\u503C\u670D\u52A1\u534F\u8BAE\u300B\uFF08\u4EE5\u4E0B\u7B80\u79F0\u201C\u672C\u534F\u8BAE\u201D\uFF09\u5E76\u4F7F\u7528\u5927\u9053\u4E91\u5E73\u53F0\u4E91\u8C46\u503C\u670D\u52A1\uFF01\u60A8\u7406\u89E3\u548C\u540C\u610F\u672C\u534F\u8BAE\u7CFB\u6839\u636E\u300A\u7528\u6237\u6CE8\u518C\u534F\u8BAE\u300B\u7B49\u534F\u8BAE\u5236\u5B9A\uFF0C\u672C\u534F\u8BAE\u4E3A\u524D\u8FF0\u534F\u8BAE\u4E0D\u53EF\u5206\u5272\u7684\u4E00\u90E8\u5206\uFF0C\u672C\u534F\u8BAE\u672A\u89C4\u5B9A\u7684\uFF0C\u9002\u7528\u300A\u7528\u6237\u6CE8\u518C\u534F\u8BAE\u300B\u7B49\u534F\u8BAE\u4E2D\u7684\u76F8\u5173\u7EA6\u5B9A\u3002 </p><p>\xA0</p><p>\u3010\u5BA1\u614E\u9605\u8BFB\u3011</p><p><span class="bold">\u5728\u4F7F\u7528\u672C\u670D\u52A1\u524D\uFF0C\u8BF7\u60A8\u52A1\u5FC5\u5BA1\u614E\u9605\u8BFB\u3001\u5145\u5206\u7406\u89E3\u5404\u6761\u6B3E\u5185\u5BB9\uFF0C\u7279\u522B\u662F\u514D\u9664\u6216\u9650\u5236\u8D23\u4EFB\u7684\u76F8\u5E94\u6761\u6B3E\uFF0C\u4EE5\u53CA\u5F00\u901A\u6216\u4F7F\u7528\u67D0\u9879\u670D\u52A1\u7684\u5355\u72EC\u534F\u8BAE\uFF0C\u60A8\u4F7F\u7528\u6B64\u670D\u52A1\u5373\u8868\u793A\u60A8\u63A5\u53D7\u672C\u534F\u8BAE\u3002\u9650\u5236\u6216\u514D\u9664\u8D23\u4EFB\u6761\u6B3E\u53EF\u80FD\u4EE5\u52A0\u7C97\u5F62\u5F0F\u63D0\u793A\u60A8\u6CE8\u610F\u3002</span></p><p>\xA0</p><p>\u3010\u7279\u522B\u63D0\u793A\u3011</p><p><span class="bold">\u5145\u503C\u7528\u6237\u786E\u8BA4\uFF0C\u81EA\u5DF1\u4E3A\u5E74\u6EE118\u5468\u5C81\u4E14\u5177\u6709\u5B8C\u5168\u6C11\u4E8B\u884C\u4E3A\u80FD\u529B\u7684\u6210\u5E74\u4EBA\uFF0C\u9664\u975E\u60A8\u5DF2\u9605\u8BFB\u5E76\u63A5\u53D7\u672C\u534F\u8BAE\u6240\u6709\u6761\u6B3E\uFF0C\u5426\u5219\u60A8\u65E0\u6743\u4F7F\u7528\u5927\u9053\u4E91\u5E73\u53F0\u5145\u503C\u670D\u52A1\uFF08\u4EE5\u4E0B\u7B80\u79F0\u201C\u672C\u670D\u52A1\u201D\uFF09\u3002\u60A8\u5BF9\u672C\u670D\u52A1\u7684\u4EFB\u4F55\u8D2D\u4E70\u3001\u767B\u5F55\u3001\u67E5\u770B\u7B49\u4F7F\u7528\u884C\u4E3A\u5373\u89C6\u4E3A\u60A8\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\u672C\u534F\u8BAE\u7684\u7EA6\u675F\u3002</span></p><p>\xA0</p><p><span class="bold">\u4E00\u3001\u534F\u8BAE\u7684\u8303\u56F4</span></p><p>\xA0</p><p>1.1\u3010\u534F\u8BAE\u9002\u7528\u4E3B\u4F53\u8303\u56F4\u3011</p><p>\u672C\u534F\u8BAE\u662F\u60A8\u4E0E\u5927\u9053\u4E91\u5E73\u53F0\u4E4B\u95F4\u5173\u4E8E\u60A8\u4F7F\u7528\u672C\u670D\u52A1\u6240\u8BA2\u7ACB\u7684\u534F\u8BAE\u3002</p><p>\xA0</p><p>1.2\u3010\u670D\u52A1\u5185\u5BB9\u3011</p><p> \u672C\u534F\u8BAE\u9879\u4E0B\u7684\u670D\u52A1\u662F\u6307\u5927\u9053\u4E91\u5E73\u53F0\u5411\u7528\u6237\u63D0\u4F9B\u7684\u4E91\u8C46\u5145\u503C\u670D\u52A1\uFF08\u4EE5\u4E0B\u7B80\u79F0\u201C\u672C\u670D\u52A1\u201D\uFF09\u3002\u672C\u534F\u8BAE\u5185\u5BB9\u540C\u65F6\u5305\u62EC\u5927\u9053\u4E91\u5E73\u53F0\u53EF\u80FD\u4E0D\u65AD\u53D1\u5E03\u7684\u5173\u4E8E\u672C\u670D\u52A1\u7684\u76F8\u5173\u534F\u8BAE\u3001\u4E1A\u52A1\u89C4\u5219\u7B49\u5185\u5BB9\u3002\u4E0A\u8FF0\u5185\u5BB9\u4E00\u7ECF\u6B63\u5F0F\u53D1\u5E03\uFF0C\u5373\u4E3A\u672C\u534F\u8BAE\u4E0D\u53EF\u5206\u5272\u7684\u7EC4\u6210\u90E8\u5206\uFF0C\u60A8\u540C\u6837\u5E94\u5F53\u9075\u5B88\u3002 </p><p>\xA0</p><p><span class="bold">\u4E8C\u3001\u540D\u8BCD\u5B9A\u4E49</span></p><p>\xA0</p><p><span class="bold">2.1\u3010\u4E91\u8C46\u3011</span></p><p><span class="bold">2.1.1 \u4E91\u8C46\u7CFB\u5927\u9053\u4E91\u5E73\u53F0\u4E3A\u7528\u6237\u63D0\u4F9B\u7684\u6570\u5B57\u5316\u5546\u54C1\uFF0C\u7528\u4E8E\u5927\u9053\u4E91\u5E73\u53F0\u4E0A\u7684\u4EA7\u54C1\u6743\u76CA\u4F7F\u7528\u62B5\u6263\u3002</span></p><p>\xA0</p><p><span class="bold">2.1.2 \u4E91\u8C46\u5C5E\u4E8E\u5728\u7EBF\u4EA4\u4ED8\u7684\u6570\u5B57\u5316\u5546\u54C1\uFF0C\u4E91\u8C46\u7684\u8D2D\u4E70\u8D39\u7528\u7CFB\u6570\u5B57\u5316\u5546\u54C1\u4EF7\u683C\uFF0C\u800C\u4E0D\u5177\u6709\u9884\u4ED8\u6B3E\u6027\u8D28\u6216\u8005\u5B9A\u91D1\u3001\u50A8\u503C\u7B49\u6027\u8D28\uFF0C\u4E91\u8C46\u8D2D\u4E70\u6210\u529F\u540E\u4E0D\u53EF\u8F6C\u8BA9\u6216\u8005\u9006\u5411\u5151\u6362\u4E3A\u4EBA\u6C11\u5E01\u6216\u5176\u4ED6\u8D27\u5E01\u3002</span></p><p><span class="bold">2.1.3 \u4E91\u8C46\u4EC5\u9650\u4E8E\u7528\u6237\u81EA\u5DF1\u8D26\u53F7\u5728\u5927\u9053\u4E91\u5E73\u53F0\u4F7F\u7528\uFF0C\u4E0D\u5F97\u4EE5\u76C8\u5229\u7B49\u975E\u4E2A\u4EBA\u4F7F\u7528\u76EE\u7684\u4F7F\u7528\u4E91\u8C46\uFF0C\u6216\u901A\u8FC7\u8D60\u4E0E\u3001\u51FA\u501F\u3001\u8F6C\u8BA9\u3001\u9500\u552E\u3001\u62B5\u62BC\u3001\u8BB8\u53EF\u4ED6\u4EBA\u4F7F\u7528\u7B49\u65B9\u5F0F\u83B7\u53D6\u6216\u5904\u7F6E\u4E91\u8C46\u3002</span></p><p><span class="bold">2.1.4 \u4EBA\u6C11\u5E01\u548C\u4E91\u8C46\u5151\u6362\u7684\u6BD4\u4F8B\u4E3A1:1\uFF08\u53731\u5143\u4EBA\u6C11\u5E01=1\u4E91\u8C46\uFF09\uFF0C\u4E91\u8C46\u5728\u4EFB\u4F55\u60C5\u51B5\u4E0B\u90FD\u4E0D\u5177\u6709\u6CD5\u5B9A\u8D27\u5E01\u7684\u6D41\u8F6C\u53CA\u652F\u4ED8\u529F\u80FD\uFF0C\u4E0D\u5F97\u53CD\u5411\u5151\u6362\u4E3A\u4EBA\u6C11\u5E01\u6216\u5176\u4ED6\u6CD5\u5B9A\u8D27\u5E01\u3001\u5B9E\u7269\u548C\u5176\u4ED6\u865A\u62DF\u8D27\u5E01\uFF0C\u8BF7\u60A8\u6839\u636E\u5B9E\u9645\u9700\u6C42\u8D2D\u4E70\u76F8\u5E94\u6570\u91CF\u7684\u4E91\u8C46\u3002</span></p><p>2.2\u3010\u5927\u9053\u4E91\u5E73\u53F0\u3011</p><p> \u6307\u7531<span class="bold">\u5927\u9053\u4E91\u5E73\u53F0\u6240\u62E5\u6709\u3001\u63A7\u5236\u3001\u7ECF\u8425\u7684\u5927\u9053\u4E91\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u3001\u8702\u9E1F\u6C47\u4E91\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F\u3001\u8702\u9E1F\u5C45\u95F4\u7CFB\u7EDF\u3001\u8702\u9E1F\u5468\u8F6C\u7CFB\u7EDF\u3002</span></p><p>\xA0</p><p><span class="bold">\u4E09\u3001\u6743\u5229\u4E49\u52A1</span></p><p>\xA0</p><p> 3.1.1 \u60A8\u627F\u8BFA\u5177\u5907\u4F7F\u7528\u672C\u670D\u52A1\u6240\u5FC5\u9700\u7684\u6C11\u4E8B\u80FD\u529B\u548C\u5408\u6CD5\u8D44\u683C\uFF0C\u6709\u6743\u4E14\u6709\u80FD\u529B\u540C\u610F\u672C\u534F\u8BAE\u53CA\u76F8\u5173\u534F\u8BAE\u7684\u5168\u90E8\u5185\u5BB9\u3002 </p><p> 3.1.2 <span class="bold">\u60A8\u5E94\u59A5\u5584\u4FDD\u7BA1\u5927\u9053\u4E91\u5E73\u53F0\u8D26\u53F7\u7684\u7528\u6237\u540D\u53CA\u5176\u5BC6\u7801\uFF0C\u5E76\u5BF9\u8BE5\u8D26\u53F7\u4E0B\u7684\u4E00\u5207\u64CD\u4F5C\u884C\u4E3A\u8D1F\u8D23\u3002\u5982\u60A8\u7684\u5927\u9053\u4E91\u8D26\u53F7\u5B58\u5728\u5F02\u5E38\u60C5\u5F62\uFF0C\u60A8\u53EF\u4EE5\u8054\u7CFB\u5BA2\u670D\u6302\u5931\u6216\u51BB\u7ED3\u60A8\u7684\u8D26\u6237\u3002\u6B64\u65F6\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u9700\u8981\u60A8\u63D0\u4F9B\u5927\u9053\u4E91\u8D26\u53F7\u7684\u6CE8\u518C\u4FE1\u606F\u4EE5\u5B8C\u6210\u8EAB\u4EFD\u6838\u9A8C\u3002\u60A8\u7406\u89E3\u5E76\u786E\u8BA4\uFF0C\u7531\u4E8E\u6280\u672F\u5C40\u9650\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u65E0\u6CD5\u4FDD\u8BC1\u8EAB\u4EFD\u6838\u9A8C\u7684\u51C6\u786E\u6027\u548C\u771F\u5B9E\u6027\u3002</span></p><p> 3.1.3 \u60A8\u627F\u8BFA\u4E0D\u5F97\u901A\u8FC7\u975E\u5927\u9053\u4E91\u5E73\u53F0\u6307\u5B9A\u9014\u5F84\u6216\u4EFB\u4F55\u8FDD\u53CD\u76F8\u5173\u6CD5\u89C4\u3001\u8FDD\u53CD\u672C\u534F\u8BAE\u3001\u4E0D\u6B63\u5F53\u624B\u6BB5\u7B49\u8D2D\u4E70\u4E91\u8C46\u3002 </p><p> 3.1.4 \u5927\u9053\u4E91\u5E73\u53F0\u53EF\u80FD\u4F1A\u6839\u636E\u672C\u670D\u52A1\u7684\u6574\u4F53\u89C4\u5212\uFF0C\u5BF9\u672C\u670D\u52A1\u7684\u6536\u8D39\u6807\u51C6\u3001\u65B9\u5F0F\u7B49\u8FDB\u884C\u4FEE\u6539\u548C\u53D8\u66F4\uFF0C\u524D\u8FF0\u4FEE\u6539\u3001\u53D8\u66F4\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u5C06\u5728\u76F8\u5E94\u670D\u52A1\u9875\u9762\u8FDB\u884C\u901A\u77E5\u6216\u516C\u544A\u3002\u5982\u679C\u60A8\u4E0D\u540C\u610F\u4E0A\u8FF0\u4FEE\u6539\u3001\u53D8\u66F4\uFF0C\u5219\u5E94\u505C\u6B62\u4F7F\u7528\u672C\u670D\u52A1\u3002\u5426\u5219\uFF0C\u60A8\u7684\u4EFB\u4F55\u8D2D\u4E70\u3001\u767B\u5F55\u3001\u67E5\u770B\u7B49\u4F7F\u7528\u884C\u4E3A\uFF0C\u5373\u89C6\u4E3A\u60A8\u540C\u610F\u4E0A\u8FF0\u4FEE\u6539\u3001\u53D8\u66F4\u3002 </p><p> 3.1.5 \u5927\u9053\u4E91\u5E73\u53F0\u5728\u76EE\u524D\u6280\u672F\u6C34\u5E73\u4E0B\uFF0C\u6700\u5927\u7A0B\u5EA6\u5730\u4FDD\u969C\u672C\u529F\u80FD\u7684\u6B63\u5E38\u8FD0\u884C\uFF0C\u4EE5\u7EF4\u62A4\u4F60\u7684\u5229\u76CA\u3002\u5927\u9053\u4E91\u5E73\u53F0\u5BF9\u672C\u670D\u52A1\u4E0D\u4F5C\u4EFB\u4F55\u660E\u793A\u6216\u6697\u793A\u7684\u4FDD\u8BC1\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u5BF9\u672C\u670D\u52A1\u7684\u53EF\u9002\u7528\u6027\u3001\u6301\u7EED\u6027\u7B49\u3002 </p><p>\xA0</p><p><span class="bold">\u56DB\u3001\u4E91\u8C46\u4F7F\u7528\u89C4\u5219\u53CA\u7279\u522B\u7EA6\u5B9A</span></p><p>\xA0</p><p><span class="bold">4.1 \u5927\u9053\u4E91\u5E73\u53F0\u5411\u60A8\u63D0\u4F9B\u8D2D\u4E70\u3001\u7BA1\u7406\u4E91\u8C46\u6709\u5173\u7684\u7F51\u7EDC\u589E\u503C\u670D\u52A1\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u4E91\u8C46\u7684\u8D2D\u4E70\u3001\u8D26\u6237\u7BA1\u7406\u9875\u9762\u3001\u4EA4\u6613\u660E\u7EC6\u67E5\u8BE2\u670D\u52A1\uFF08\u4EE5\u4E0B\u79F0\u201C\u4E91\u8C46\u670D\u52A1\u201D\uFF09\u3002\u4E91\u8C46\u670D\u52A1\u7684\u5177\u4F53\u5185\u5BB9\u8BF7\u4EE5\u76F8\u5173\u9875\u9762\u7684\u4FE1\u606F\u4E3A\u51C6\u3002\u60A8\u540C\u610F\u4EE5\u5927\u9053\u4E91\u5E73\u53F0\u7559\u5B58\u7684\u4EA4\u6613\u8BB0\u5F55\u4F5C\u4E3A\u4E91\u8C46\u8D2D\u4E70\u7684\u552F\u4E00\u6709\u6548\u4F9D\u636E\uFF0C\u5982\u60A8\u5BF9\u5927\u9053\u4E91\u5E73\u53F0\u7559\u5B58\u7684\u4EA4\u6613\u8BB0\u5F55\u6709\u5F02\u8BAE\uFF0C\u60A8\u5E94\u7ACB\u5373\u5411\u5927\u9053\u4E91\u5E73\u53F0\u63D0\u51FA\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u7ECF\u6838\u5BF9\u540E\u53D1\u73B0\u786E\u6709\u9519\u8BEF\u7684\uFF0C\u5C06\u4E88\u4EE5\u6539\u6B63\u3002</span></p><p><span class="bold">4.2. \u60A8\u5E94\u8BE5\u901A\u8FC7\u5927\u9053\u4E91\u5E73\u53F0\u5B98\u65B9\u6307\u5B9A\u7684\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u652F\u4ED8\u5B9D\u3001\u8D22\u4ED8\u901A\u7B49\u65B9\u5F0F\u4F9D\u7EA6\u652F\u4ED8\u4E00\u5B9A\u8D39\u7528\u540E\u8D2D\u4E70\u4E91\u8C46\u3002</span></p><p><span class="bold">4.3 \u60A8\u5FC5\u987B\u4E3A\u7ED1\u5B9A\u7684\u652F\u4ED8\u6E20\u9053\u8D26\u6237\u5F00\u6237\u4EBA/\u6301\u6709\u4EBA\uFF0C\u53EF\u5408\u6CD5\u3001\u6709\u6548\u4F7F\u7528\u8BE5\u8D26\u6237\u4E14\u672A\u4FB5\u72AF\u4EFB\u4F55\u7B2C\u4E09\u65B9\u6743\u76CA\uFF0C\u5426\u5219\u56E0\u6B64\u9020\u6210\u652F\u4ED8\u8D26\u6237\u5B9E\u9645\u6240\u6709\u4EBA\u635F\u5931\u7684\uFF0C\u5E94\u7531\u60A8\u5355\u72EC\u8D1F\u8D23\u89E3\u51B3\u7531\u6B64\u4EA7\u751F\u7684\u7EA0\u7EB7\u5E76\u627F\u62C5\u5168\u90E8\u6CD5\u5F8B\u8D23\u4EFB\u3002</span></p><p><span class="bold">4.4 \u60A8\u5E94\u5728\u8D2D\u4E70\u4E91\u8C46\u65F6\u4ED4\u7EC6\u786E\u8BA4\u8D26\u53F7\u3001\u652F\u4ED8\u8D26\u6237\u3001\u8D2D\u4E70\u6570\u91CF\u3001\u8D2D\u4E70\u8D39\u7528\u7B49\u4EA4\u6613\u4FE1\u606F\u51C6\u786E\u65E0\u8BEF\uFF0C\u5982\u56E0\u60A8\u81EA\u8EAB\u539F\u56E0\uFF08\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u8D26\u53F7\u9519\u8BEF\u3001\u652F\u4ED8\u8D26\u6237\u9519\u8BEF\u3001\u64CD\u4F5C\u4E0D\u5F53\u3001\u8D26\u53F7/\u652F\u4ED8\u8D26\u6237\u5B58\u5728\u5F02\u5E38\u60C5\u51B5\u7B49\uFF09\u5BFC\u81F4\u7684\u4EFB\u4F55\u635F\u5931\u5E94\u7531\u60A8\u81EA\u884C\u627F\u62C5\u3002</span></p><p><span class="bold">4.5 \u5927\u9053\u4E91\u5E73\u53F0\u6709\u6743\u51B3\u5B9A\u4E91\u8C46\u5982\u4F55\u88AB\u4F7F\u7528\uFF08\u5305\u62EC\u5151\u6362\u865A\u62DF\u5546\u54C1\u7B49\u4E8E\u5927\u9053\u4E91\u5E73\u53F0\u4E0A\u4F7F\u7528\u7684\u4EA7\u54C1\u6216\u670D\u52A1\uFF09\u3002</span></p><p>\xA0</p><p><span class="bold">\u4E94\u3001\u884C\u4E3A\u89C4\u8303</span></p><p>\xA0</p><p>5.1\u3010\u7528\u6237\u7981\u6B62\u884C\u4E3A\u3011</p><p>\u672C\u670D\u52A1\u4EC5\u4F9B\u60A8\u4E2A\u4EBA\u4F7F\u7528\uFF0C\u9664\u975E\u7ECF\u5927\u9053\u4E91\u5E73\u53F0\u4E66\u9762\u8BB8\u53EF\uFF0C\u60A8\u4E0D\u5F97\u8FDB\u884C\u4EE5\u4E0B\u884C\u4E3A\uFF1A</p><p>5.1.1 \u5C06\u672C\u670D\u52A1\u8F6C\u8BA9\u8BB8\u53EF\u4ED6\u4EBA\u4F7F\u7528\uFF1B</p><p>5.1.2 \u5176\u4ED6\u672A\u7ECF\u5927\u9053\u4E91\u5E73\u53F0\u4E66\u9762\u8BB8\u53EF\u7684\u884C\u4E3A\u3002</p><p>5.2\u3010\u884C\u4E3A\u8D23\u4EFB\u3011</p><p><span class="bold">\u60A8\u5145\u5206\u4E86\u89E3\u5E76\u540C\u610F\uFF0C\u60A8\u7528\u4EE5\u53C2\u4E0E\u672C\u670D\u52A1\u7684\u5927\u9053\u4E91\u8D26\u53F7\u7531\u60A8\u72EC\u7ACB\u7EF4\u62A4\u3001\u4F7F\u7528\u5E76\u72EC\u7ACB\u627F\u62C5\u5168\u90E8\u8D23\u4EFB\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u4E0D\u4F1A\u3001\u4E5F\u4E0D\u53EF\u80FD\u53C2\u4E0E\u8BE5\u8D26\u53F7\u7684\u4F7F\u7528\u7B49\u4EFB\u4F55\u6D3B\u52A8\u3002\u60A8\u5E94\u5BF9\u672C\u670D\u52A1\u4E2D\u7684\u5185\u5BB9\u81EA\u884C\u52A0\u4EE5\u5224\u65AD\uFF0C\u5E76\u627F\u62C5\u56E0\u4F7F\u7528\u5185\u5BB9\u800C\u5F15\u8D77\u7684\u6240\u6709\u98CE\u9669\uFF0C\u5305\u62EC\u56E0\u5BF9\u5185\u5BB9\u7684\u6B63\u786E\u6027\u3001\u5B8C\u6574\u6027\u6216\u5B9E\u7528\u6027\u7684\u4F9D\u8D56\u800C\u4EA7\u751F\u7684\u98CE\u9669\u3002\u5927\u9053\u4E91\u5E73\u53F0\u65E0\u6CD5\u4E14\u4E0D\u4F1A\u5BF9\u56E0\u524D\u8FF0\u98CE\u9669\u800C\u5BFC\u81F4\u7684\u4EFB\u4F55\u635F\u5931\u6216\u635F\u5BB3\u627F\u62C5\u4EFB\u4F55\u8D23\u4EFB\u3002</span></p><p>\xA0</p><p><span class="bold">\u516D\u3001\u670D\u52A1\u7684\u53D8\u66F4\u3001\u4E2D\u6B62\u6216\u7EC8\u6B62</span></p><p>\xA0</p><p> \u60A8\u5145\u5206\u4E86\u89E3\u5E76\u540C\u610F\uFF0C\u7531\u4E8E\u4E92\u8054\u7F51\u670D\u52A1\u7684\u7279\u6B8A\u6027\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u53EF\u4EE5\u5728\u4E0D\u63D0\u524D\u901A\u77E5\u60A8\u7684\u60C5\u51B5\u4E4B\u4E0B\uFF0C\u6839\u636E\u672C\u670D\u52A1\u7684\u6574\u4F53\u89C4\u5212\uFF0C\u5355\u65B9\u6709\u6743\u5BF9\u672C\u670D\u52A1\u5185\u5BB9\u8FDB\u884C\u53D8\u66F4\u3001\u4E2D\u6B62\u6216\u7EC8\u6B62\u3002 </p><p>\xA0</p><p><span class="bold">\u4E03\u3001\u8FDD\u7EA6\u8D23\u4EFB</span></p><p>\xA0</p><p><span class="bold">7.1 \u5982\u679C\u5927\u9053\u4E91\u5E73\u53F0\u53D1\u73B0\u6216\u6536\u5230\u4ED6\u4EBA\u4E3E\u62A5\u60A8\u6709\u8FDD\u53CD\u672C\u534F\u8BAE\u4EFB\u4F55\u884C\u4E3A\u7684\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u6709\u6743\u8FDB\u884C\u72EC\u7ACB\u5224\u65AD\u5E76\u91C7\u53D6\u6280\u672F\u624B\u6BB5\u4E88\u4EE5\u5220\u9664\u3001\u5C4F\u853D\u6216\u65AD\u5F00\u76F8\u5173\u7684\u4FE1\u606F\u3002\u540C\u65F6\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u6709\u6743\u89C6\u60A8\u7684\u884C\u4E3A\u6027\u8D28\uFF0C\u5BF9\u60A8\u91C7\u53D6\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u6682\u505C\u6216\u7EC8\u6B62\u90E8\u5206\u6216\u5168\u90E8\u672C\u670D\u52A1\u3001\u4E2D\u6B62\u6216\u7EC8\u6B62\u60A8\u5BF9\u8D26\u53F7\u7684\u4F7F\u7528\u3001\u8FFD\u7A76\u6CD5\u5F8B\u8D23\u4EFB\u7B49\u63AA\u65BD\uFF0C\u800C\u7531\u6B64\u7ED9\u60A8\u5E26\u6765\u7684\u635F\u5931\uFF08\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u901A\u4FE1\u4E2D\u65AD\u3001\u76F8\u5173\u6570\u636E\u6E05\u7A7A\u3001\u670D\u52A1\u8D39\u7528\u4F5C\u4E3A\u8FDD\u7EA6\u91D1\u800C\u5F52\u5927\u9053\u4E91\u5E73\u53F0\u6240\u6709\u7B49\uFF09\uFF0C\u7531\u60A8\u81EA\u884C\u627F\u62C5\uFF0C\u9020\u6210\u5927\u9053\u4E91\u5E73\u53F0\u635F\u5931\u7684\uFF0C\u60A8\u4E5F\u5E94\u4E88\u4EE5\u8D54\u507F\u3002\u82E5\u5927\u9053\u4E91\u5E73\u53F0\u4F9D\u524D\u8FF0\u7EA6\u5B9A\u5BF9\u60A8\u91C7\u53D6\u6682\u505C\u6216\u7EC8\u6B62\u90E8\u5206\u6216\u5168\u90E8\u672C\u670D\u52A1\u7684\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u65E0\u9700\u5411\u60A8\u9000\u8FD8\u4EFB\u4F55\u8D39\u7528\uFF0C\u5269\u4F59\u7684\u670D\u52A1\u8D39\u7528\uFF0C\u4F5C\u4E3A\u8FDD\u7EA6\u91D1\u800C\u5F52\u5927\u9053\u4E91\u5E73\u53F0\u6240\u6709\u3002</span></p><p>\xA0</p><p>7.2\u3010\u5BF9\u7B2C\u4E09\u65B9\u635F\u5BB3\u7684\u5904\u7406\u3011</p><p> \u60A8\u6709\u8FDD\u53CD\u672C\u534F\u8BAE\u4EFB\u4F55\u884C\u4E3A\uFF0C\u5BFC\u81F4\u4EFB\u4F55\u7B2C\u4E09\u65B9\u635F\u5BB3\u7684\uFF0C\u60A8\u5E94\u5F53\u72EC\u7ACB\u627F\u62C5\u8D23\u4EFB\uFF1B\u5927\u9053\u4E91\u5E73\u53F0\u56E0\u6B64\u906D\u53D7\u635F\u5931\u7684\uFF0C\u60A8\u4E5F\u5E94\u5F53\u4E00\u5E76\u8D54\u507F\u3002 </p><p>\xA0</p><p><span class="bold">7.3\u3010\u5355\u65B9\u63D0\u524D\u7EC8\u6B62\u670D\u52A1\u3011</span></p><p><span class="bold">\u60A8\u5145\u5206\u4E86\u89E3\u5E76\u540C\u610F\uFF0C\u60A8\u5728\u9009\u62E9\u4F7F\u7528\u672C\u670D\u52A1\u540E\uFF0C\u82E5\u60A8\u5728\u65E0\u4EFB\u4F55\u6CD5\u5B9A\u6216\u7EA6\u5B9A\u7406\u7531\u7684\u60C5\u51B5\u4E4B\u4E0B\uFF0C\u5355\u65B9\u8981\u6C42\u63D0\u524D\u7EC8\u6B62\u672C\u670D\u52A1\u7684\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u65E0\u9700\u5411\u60A8\u9000\u8FD8\u4EFB\u4F55\u8D39\u7528\uFF0C\u5269\u4F59\u7684\u670D\u52A1\u8D39\u7528\uFF0C\u4F5C\u4E3A\u8FDD\u7EA6\u91D1\u800C\u5F52\u5927\u9053\u4E91\u5E73\u53F0\u6240\u6709\u3002</span></p><p>\xA0</p><p><span class="bold">\u516B\u3001\u514D\u8D23\u6761\u6B3E</span></p><p>\xA0</p><p><span class="bold">8.1 \u60A8\u7406\u89E3\u5E76\u540C\u610F\uFF1A\u5728\u4F7F\u7528\u672C\u670D\u52A1\u7684\u8FC7\u7A0B\u4E2D\uFF0C\u53EF\u80FD\u4F1A\u56E0\u4E0D\u53EF\u6297\u529B\u800C\u4F7F\u672C\u670D\u52A1\u53D1\u751F\u4E2D\u65AD\uFF0C\u5E76\u56E0\u6B64\u800C\u5F15\u53D1\u635F\u5BB3\u3002\u4E0D\u53EF\u6297\u529B\u662F\u6307\u4E0D\u80FD\u9884\u89C1\u3001\u4E0D\u80FD\u514B\u670D\u5E76\u4E0D\u80FD\u907F\u514D\u4E14\u5BF9\u4E00\u65B9\u6216\u53CC\u65B9\u9020\u6210\u91CD\u5927\u5F71\u54CD\u7684\u5BA2\u89C2\u4E8B\u4EF6\uFF0C\u5305\u62EC\u4F46\u4E0D\u9650\u4E8E\u81EA\u7136\u707E\u5BB3\u5982\u6D2A\u6C34\u3001\u5730\u9707\u3001\u98CE\u66B4\u3001\u75AB\u60C5\u7B49\u4EE5\u53CA\u793E\u4F1A\u4E8B\u4EF6\u5982\u6218\u4E89\u3001\u52A8\u4E71\u3001\u653F\u5E9C\u884C\u4E3A\u7B49\u3002\u51FA\u73B0\u4E0A\u8FF0\u60C5\u51B5\u65F6\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u5C06\u52AA\u529B\u5728\u7B2C\u4E00\u65F6\u95F4\u4E0E\u76F8\u5173\u5355\u4F4D\u914D\u5408\uFF0C\u53CA\u65F6\u8FDB\u884C\u4FEE\u590D\uFF0C\u82E5\u7531\u6B64\u7ED9\u60A8\u9020\u6210\u635F\u5931\u7684\uFF0C\u60A8\u540C\u610F\u653E\u5F03\u8FFD\u7A76\u5927\u9053\u4E91\u5E73\u53F0\u7684\u8D23\u4EFB\u3002</span></p><p><span class="bold">8.2 \u60A8\u7406\u89E3\u5E76\u540C\u610F\uFF1A\u82E5\u7531\u4E8E\u4EE5\u4E0B\u60C5\u5F62\u5BFC\u81F4\u7684\u529F\u80FD\u4E2D\u65AD\u6216\u53D7\u963B\uFF0C\u5927\u9053\u4E91\u5E73\u53F0\u5E76\u4E0D\u627F\u62C5\u4EFB\u4F55\u6CD5\u5F8B\u8D23\u4EFB\uFF1A</span></p><p><span class="bold">8.2.1 \u53D7\u5230\u8BA1\u7B97\u673A\u75C5\u6BD2\u3001\u6728\u9A6C\u6216\u5176\u4ED6\u6076\u610F\u7A0B\u5E8F\u3001\u9ED1\u5BA2\u653B\u51FB\u7684\u7834\u574F\uFF1B</span></p><p><span class="bold">8.2.2 \u60A8\u64CD\u4F5C\u4E0D\u5F53\uFF1B</span></p><p><span class="bold">8.2.3 \u5176\u4ED6\u5927\u9053\u4E91\u5E73\u53F0\u65E0\u6CD5\u63A7\u5236\u6216\u5408\u7406\u9884\u89C1\u7684\u60C5\u5F62\u3002</span></p><p>\xA0</p><p>\u4E5D\u3001\u5176\u4ED6</p><p>\xA0</p><p>9.1\u3010\u534F\u8BAE\u7684\u751F\u6548\u4E0E\u53D8\u66F4\u3011</p><p> \u60A8\u4F7F\u7528\u672C\u670D\u52A1\u5373\u89C6\u4E3A\u60A8\u5DF2\u9605\u8BFB\u5E76\u540C\u610F\u53D7\u672C\u534F\u8BAE\u7684\u7EA6\u675F\u3002\u5927\u9053\u4E91\u5E73\u53F0\u6709\u6743\u5728\u5FC5\u8981\u65F6\u4FEE\u6539\u672C\u534F\u8BAE\u6761\u6B3E\u3002\u60A8\u53EF\u4EE5\u5728\u76F8\u5173\u9875\u9762\u4E2D\u67E5\u9605\u6700\u65B0\u7684\u534F\u8BAE\u6761\u6B3E\u3002\u672C\u534F\u8BAE\u6761\u6B3E\u53D8\u66F4\u540E\uFF0C\u5982\u679C\u60A8\u7EE7\u7EED\u4F7F\u7528\u672C\u670D\u52A1\uFF0C\u5373\u89C6\u4E3A\u60A8\u5DF2\u63A5\u53D7\u4FEE\u6539\u540E\u7684\u534F\u8BAE\u3002\u5982\u679C\u60A8\u4E0D\u63A5\u53D7\u4FEE\u6539\u540E\u7684\u534F\u8BAE\uFF0C\u5E94\u5F53\u505C\u6B62\u4F7F\u7528\u672C\u670D\u52A1\u3002 </p><p>9.2\u3010\u534F\u8BAE\u7B7E\u8BA2\u5730\u3011</p><p>\u672C\u534F\u8BAE\u7B7E\u8BA2\u5730\u4E3A\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD\u6DF1\u5733\u5E02\u5357\u5C71\u533A\u3002</p><p>9.3\u3010\u9002\u7528\u6CD5\u5F8B\u3011</p><p> \u672C\u534F\u8BAE\u7684\u6210\u7ACB\u3001\u751F\u6548\u3001\u5C65\u884C\u3001\u89E3\u91CA\u53CA\u7EA0\u7EB7\u89E3\u51B3\uFF0C\u9002\u7528\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD\u5927\u9646\u5730\u533A\u6CD5\u5F8B\uFF08\u4E0D\u5305\u62EC\u51B2\u7A81\u6CD5\uFF09\u3002 </p><p><span class="bold">9.4\u3010\u4E89\u8BAE\u89E3\u51B3\u3011</span></p><p><span class="bold">\u82E5\u60A8\u548C\u5927\u9053\u4E91\u5E73\u53F0\u4E4B\u95F4\u53D1\u751F\u4EFB\u4F55\u7EA0\u7EB7\u6216\u4E89\u8BAE\uFF0C\u9996\u5148\u5E94\u53CB\u597D\u534F\u5546\u89E3\u51B3\uFF1B\u534F\u5546\u4E0D\u6210\u7684\uFF0C\u5404\u65B9\u5171\u540C\u7EA6\u5B9A\uFF0C\u51E1\u56E0\u672C\u534F\u8BAE\u5F15\u8D77\u7684\u6216\u4E0E\u672C\u534F\u8BAE\u6709\u5173\u7684\u4EFB\u4F55\u4E89\u8BAE\uFF0C\u5747\u63D0\u4EA4\u6E5B\u6C5F\u4EF2\u88C1\u59D4\u5458\u4F1A\u4F9D\u5176\u89C4\u5219\u548C\u56FD\u5BB6\u6CD5\u5F8B\u6CD5\u89C4\u4ECE\u901F\u4EF2\u88C1\u3002</span></p><p>9.5\u3010\u6761\u6B3E\u6807\u9898\u3011</p><p>\u672C\u534F\u8BAE\u6240\u6709\u6761\u6B3E\u7684\u6807\u9898\u4EC5\u4E3A\u9605\u8BFB\u65B9\u4FBF\uFF0C\u672C\u8EAB\u5E76\u65E0\u5B9E\u9645\u6DB5\u4E49\uFF0C\u4E0D\u80FD\u4F5C\u4E3A\u672C\u534F\u8BAE\u6DB5\u4E49\u89E3\u91CA\u7684\u4F9D\u636E\u3002</p><p>9.6\u3010\u6761\u6B3E\u6548\u529B\u3011</p><p>\u672C\u534F\u8BAE\u6761\u6B3E\u65E0\u8BBA\u56E0\u4F55\u79CD\u539F\u56E0\u90E8\u5206\u65E0\u6548\u6216\u4E0D\u53EF\u6267\u884C\uFF0C\u5176\u4F59\u6761\u6B3E\u4ECD\u6709\u6548\uFF0C\u5BF9\u53CC\u65B9\u4ECD\u5177\u6709\u7EA6\u675F\u529B\u3002</p><p>\xA0</p><p>\xA0</p>', 96);
@@ -105,10 +105,10 @@ function render$2(_ctx, _cache) {
105
105
  return openBlock(), createElementBlock("view", _hoisted_1$D, [..._hoisted_98]);
106
106
  }
107
107
 
108
- /* unplugin-vue-components disabled */const script$G = {};
108
+ /* unplugin-vue-components disabled */const script$H = {};
109
109
 
110
- script$G.render = render$2;
111
- script$G.__file = "src/payment/components/UserAgreement.vue";
110
+ script$H.render = render$2;
111
+ script$H.__file = "src/payment/components/UserAgreement.vue";
112
112
 
113
113
  function requestPayment$2(json) {
114
114
  return new Promise((resolve, reject) => {
@@ -333,7 +333,7 @@ const _hoisted_1$C = {
333
333
  key: 0,
334
334
  class: "page-title"
335
335
  };
336
- var script$F = /* @__PURE__ */ defineComponent({
336
+ var script$G = /* @__PURE__ */ defineComponent({
337
337
  __name: "PageHeader",
338
338
  props: {
339
339
  title: { type: String, required: false, default: "" },
@@ -381,10 +381,10 @@ var script$F = /* @__PURE__ */ defineComponent({
381
381
  }
382
382
  });
383
383
 
384
- script$F.__file = "src/shared/components/PageHeader.vue";
384
+ script$G.__file = "src/shared/components/PageHeader.vue";
385
385
 
386
386
  const _hoisted_1$B = { class: "drawer-body" };
387
- var script$E = /* @__PURE__ */ defineComponent({
387
+ var script$F = /* @__PURE__ */ defineComponent({
388
388
  __name: "AppDrawer",
389
389
  props: {
390
390
  modelValue: { type: Boolean, required: true },
@@ -408,7 +408,7 @@ var script$E = /* @__PURE__ */ defineComponent({
408
408
  "onUpdate:visible": onVisibleChange
409
409
  }, {
410
410
  default: withCtx(() => [
411
- createVNode(script$F, {
411
+ createVNode(script$G, {
412
412
  title: _ctx.title,
413
413
  onClose: onPageHeaderClose
414
414
  }, null, 8, ["title"]),
@@ -423,17 +423,18 @@ var script$E = /* @__PURE__ */ defineComponent({
423
423
  }
424
424
  });
425
425
 
426
- script$E.__file = "src/shared/components/AppDrawer.vue";
426
+ script$F.__file = "src/shared/components/AppDrawer.vue";
427
427
 
428
428
  const _hoisted_1$A = { class: "app-verify column" };
429
429
  const _hoisted_2$w = { class: "caption" };
430
430
  const _hoisted_3$r = { class: "number" };
431
- const _hoisted_4$l = {
431
+ const _hoisted_4$l = { class: "form-btn" };
432
+ const _hoisted_5$h = {
432
433
  key: 1,
433
434
  class: "caption"
434
435
  };
435
- const _hoisted_5$h = { class: "row buttons" };
436
- var script$D = /* @__PURE__ */ defineComponent({
436
+ const _hoisted_6$c = { class: "row buttons" };
437
+ var script$E = /* @__PURE__ */ defineComponent({
437
438
  __name: "AppVerify",
438
439
  props: {
439
440
  phone: { type: String, required: true },
@@ -489,47 +490,48 @@ var script$D = /* @__PURE__ */ defineComponent({
489
490
  ),
490
491
  createVNode(unref(NsForm), {
491
492
  modelValue: unref(formData),
492
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(formData) ? formData.value = $event : formData = $event)
493
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(formData) ? formData.value = $event : formData = $event),
494
+ class: "form"
493
495
  }, {
494
496
  default: withCtx(() => [
495
497
  createVNode(unref(NsInput), {
498
+ class: "form-input",
496
499
  name: "code",
497
500
  modelValue: unref(formData).code,
498
501
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unref(formData).code = $event),
499
502
  placeholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
503
+ maxlength: "6",
500
504
  variant: "solid",
501
505
  rules: ["required", {
502
506
  name: "function",
503
507
  message: "\u8F93\u5165\u9519\u8BEF, \u8BF7\u91CD\u65B0\u8F93\u5165",
504
508
  method: (value) => value.length === 6
505
509
  }]
506
- }, {
507
- append: withCtx(() => [
508
- !sent.value ? (openBlock(), createBlock(unref(NsButton), {
509
- key: 0,
510
- size: "xs",
511
- variant: "plain",
512
- color: "primary",
513
- onClick: send,
514
- label: "\u83B7\u53D6\u9A8C\u8BC1\u7801"
515
- })) : createCommentVNode("v-if", true),
516
- sent.value ? (openBlock(), createElementBlock(
517
- "div",
518
- _hoisted_4$l,
519
- toDisplayString(countdown.value) + " \u79D2\u6536\u91CD\u65B0\u53D1\u9001",
520
- 1
521
- /* TEXT */
522
- )) : createCommentVNode("v-if", true)
523
- ]),
524
- _: 1
525
- /* STABLE */
526
- }, 8, ["modelValue", "rules"])
510
+ }, null, 8, ["modelValue", "rules"]),
511
+ createElementVNode("div", _hoisted_4$l, [
512
+ !sent.value ? (openBlock(), createBlock(unref(NsButton), {
513
+ key: 0,
514
+ size: "xs",
515
+ variant: "plain",
516
+ color: "primary",
517
+ onClick: send,
518
+ label: "\u83B7\u53D6\u9A8C\u8BC1\u7801"
519
+ })) : createCommentVNode("v-if", true),
520
+ sent.value ? (openBlock(), createElementBlock(
521
+ "div",
522
+ _hoisted_5$h,
523
+ toDisplayString(countdown.value) + "s\u540E\u91CD\u65B0\u53D1\u9001",
524
+ 1
525
+ /* TEXT */
526
+ )) : createCommentVNode("v-if", true)
527
+ ])
527
528
  ]),
528
529
  _: 1
529
530
  /* STABLE */
530
531
  }, 8, ["modelValue"]),
531
- createElementVNode("div", _hoisted_5$h, [
532
+ createElementVNode("div", _hoisted_6$c, [
532
533
  createVNode(unref(NsButton), {
534
+ class: "cancel-btn",
533
535
  round: "",
534
536
  onClick: _cache[2] || (_cache[2] = ($event) => emits("cancel"))
535
537
  }, {
@@ -556,7 +558,7 @@ var script$D = /* @__PURE__ */ defineComponent({
556
558
  }
557
559
  });
558
560
 
559
- script$D.__file = "src/shared/components/AppVerify.vue";
561
+ script$E.__file = "src/shared/components/AppVerify.vue";
560
562
 
561
563
  const _hoisted_1$z = { key: 0 };
562
564
  const _hoisted_2$v = /* @__PURE__ */ createElementVNode(
@@ -572,7 +574,7 @@ const _hoisted_2$v = /* @__PURE__ */ createElementVNode(
572
574
  const _hoisted_3$q = [
573
575
  _hoisted_2$v
574
576
  ];
575
- var script$C = /* @__PURE__ */ defineComponent({
577
+ var script$D = /* @__PURE__ */ defineComponent({
576
578
  __name: "index",
577
579
  props: {
578
580
  text: { type: String, required: false },
@@ -623,7 +625,7 @@ var script$C = /* @__PURE__ */ defineComponent({
623
625
  }
624
626
  });
625
627
 
626
- script$C.__file = "src/components/dd-notice-bar/index.vue";
628
+ script$D.__file = "src/components/dd-notice-bar/index.vue";
627
629
 
628
630
  const typeMappings = {
629
631
  CZ: "\u5145\u503C",
@@ -810,7 +812,7 @@ function useHttp$3() {
810
812
  return $http;
811
813
  }
812
814
 
813
- var script$B = /* @__PURE__ */ defineComponent({
815
+ var script$C = /* @__PURE__ */ defineComponent({
814
816
  __name: "DeviceVersion",
815
817
  setup(__props) {
816
818
  const showAlert = ref(false);
@@ -849,7 +851,7 @@ var script$B = /* @__PURE__ */ defineComponent({
849
851
  }
850
852
  });
851
853
  return (_ctx, _cache) => {
852
- return showAlert.value ? (openBlock(), createBlock(script$C, {
854
+ return showAlert.value ? (openBlock(), createBlock(script$D, {
853
855
  key: 0,
854
856
  showClose: "",
855
857
  style: normalizeStyle(topStype.value),
@@ -860,9 +862,9 @@ var script$B = /* @__PURE__ */ defineComponent({
860
862
  }
861
863
  });
862
864
 
863
- script$B.__file = "src/shared/components/DeviceVersion.vue";
865
+ script$C.__file = "src/shared/components/DeviceVersion.vue";
864
866
 
865
- var script$A = /* @__PURE__ */ defineComponent({
867
+ var script$B = /* @__PURE__ */ defineComponent({
866
868
  __name: "OcrIcon",
867
869
  emits: ["complete"],
868
870
  setup(__props, { emit: __emit }) {
@@ -961,7 +963,104 @@ var script$A = /* @__PURE__ */ defineComponent({
961
963
  }
962
964
  });
963
965
 
964
- script$A.__file = "src/shared/components/OcrIcon.vue";
966
+ script$B.__file = "src/shared/components/OcrIcon.vue";
967
+
968
+ var script$A = /* @__PURE__ */ defineComponent({
969
+ __name: "OcrBusinessLicense",
970
+ emits: ["complete"],
971
+ setup(__props, { emit: __emit }) {
972
+ const appKitOptions = useAppKitOptions();
973
+ const emits = __emit;
974
+ async function taroImgCompress(src, quality = 80) {
975
+ return new Promise((resolve, reject) => {
976
+ Taro.compressImage({
977
+ src,
978
+ quality,
979
+ success: (res) => {
980
+ resolve(res);
981
+ },
982
+ fail: (res) => {
983
+ reject(res);
984
+ }
985
+ });
986
+ });
987
+ }
988
+ function getCompressQuality(size) {
989
+ let quality = 100;
990
+ const curSize = size / (1024 * 1024);
991
+ if (curSize > 6) {
992
+ quality = quality - (curSize - 6) / curSize * 100;
993
+ }
994
+ return quality;
995
+ }
996
+ function allTrim(str) {
997
+ return str.replace(/\s+/g, "");
998
+ }
999
+ async function onIconClick() {
1000
+ console.log("===onIconClick");
1001
+ let result = null;
1002
+ try {
1003
+ const csRes = await Taro.chooseImage({
1004
+ count: 1
1005
+ });
1006
+ let { path, size } = csRes.tempFiles[0];
1007
+ const compressImg = await taroImgCompress(path, getCompressQuality(size)) || {};
1008
+ const filePath = compressImg.tempFilePath || path;
1009
+ Taro.showLoading({ title: "\u8425\u4E1A\u6267\u7167\u8BC6\u522B\u4E2D.." });
1010
+ const session = appKitOptions.token();
1011
+ const baseUrl = appKitOptions.baseUrl();
1012
+ const upRes = await Taro.uploadFile({
1013
+ url: baseUrl + "/promoact/common/parseBusinessLicense",
1014
+ filePath,
1015
+ name: "file",
1016
+ formData: {
1017
+ objectNo: `min${Date.now()}`
1018
+ },
1019
+ header: {
1020
+ sessionKey: session || "",
1021
+ token: session || ""
1022
+ }
1023
+ });
1024
+ Taro.hideLoading();
1025
+ const res = JSON.parse(upRes.data);
1026
+ if (res.code === "200") {
1027
+ const faceInfo = res.result || {};
1028
+ result = {
1029
+ companyName: allTrim(faceInfo.companyName || ""),
1030
+ idCardNo: allTrim(faceInfo.idCardNo || ""),
1031
+ legalPersonName: allTrim(faceInfo.legalPersonName || ""),
1032
+ fileId: faceInfo.fileId,
1033
+ originalUrl: faceInfo.originalUrl,
1034
+ downloadUrl: faceInfo.downloadUrl
1035
+ };
1036
+ console.log("===\u8BC6\u522B", result);
1037
+ if (!result.companyName && !result.idCardNo) {
1038
+ Taro.showToast({ title: "\u8BC6\u522B\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5", icon: "none" });
1039
+ }
1040
+ } else {
1041
+ Taro.showToast({
1042
+ title: res.msg,
1043
+ icon: "error"
1044
+ });
1045
+ }
1046
+ } catch (err) {
1047
+ Taro.hideLoading();
1048
+ console.log(err);
1049
+ }
1050
+ emits("complete", result);
1051
+ }
1052
+ return (_ctx, _cache) => {
1053
+ return openBlock(), createElementBlock("div", {
1054
+ class: "ocr-icon",
1055
+ onClick: onIconClick
1056
+ }, [
1057
+ createVNode(unref(NsIcon), { name: "https://simple.shensi.tech/icons/ocr.svg" })
1058
+ ]);
1059
+ };
1060
+ }
1061
+ });
1062
+
1063
+ script$A.__file = "src/shared/components/OcrBusinessLicense.vue";
965
1064
 
966
1065
  var HttpMethod = /* @__PURE__ */ ((HttpMethod2) => {
967
1066
  HttpMethod2["get"] = "GET";
@@ -1330,7 +1429,7 @@ var script$z = /* @__PURE__ */ defineComponent({
1330
1429
  const _component_nut_button = Button;
1331
1430
  return openBlock(), createElementBlock("view", _hoisted_1$y, [
1332
1431
  createElementVNode("view", _hoisted_2$u, [
1333
- createVNode(script$H, {
1432
+ createVNode(script$I, {
1334
1433
  items: amounts.value,
1335
1434
  selected: state.selected,
1336
1435
  onChange: onAmountSelect
@@ -1367,13 +1466,13 @@ var script$z = /* @__PURE__ */ defineComponent({
1367
1466
  /* STABLE */
1368
1467
  }, 8, ["loading"])
1369
1468
  ]),
1370
- createVNode(unref(script$E), {
1469
+ createVNode(unref(script$F), {
1371
1470
  modelValue: state.agreementOpen,
1372
1471
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => state.agreementOpen = $event),
1373
1472
  title: "\u5145\u503C\u534F\u8BAE"
1374
1473
  }, {
1375
1474
  default: withCtx(() => [
1376
- createVNode(script$G)
1475
+ createVNode(script$H)
1377
1476
  ]),
1378
1477
  _: 1
1379
1478
  /* STABLE */
@@ -1753,13 +1852,13 @@ var script$w = /* @__PURE__ */ defineComponent({
1753
1852
  }, 8, ["loading"])
1754
1853
  ])
1755
1854
  ]),
1756
- createVNode(unref(script$E), {
1855
+ createVNode(unref(script$F), {
1757
1856
  modelValue: state.agreementOpen,
1758
1857
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => state.agreementOpen = $event),
1759
1858
  title: "\u5145\u503C\u534F\u8BAE"
1760
1859
  }, {
1761
1860
  default: withCtx(() => [
1762
- createVNode(script$G)
1861
+ createVNode(script$H)
1763
1862
  ]),
1764
1863
  _: 1
1765
1864
  /* STABLE */
@@ -1814,9 +1913,9 @@ var script$w = /* @__PURE__ */ defineComponent({
1814
1913
  script$w.__file = "src/payment/components/TradeView.vue";
1815
1914
 
1816
1915
  const components = {
1817
- AmountPicker: script$H,
1916
+ AmountPicker: script$I,
1818
1917
  RechargeView: script$z,
1819
- UserAgreement: script$G,
1918
+ UserAgreement: script$H,
1820
1919
  RechargeResult: script$y,
1821
1920
  TradeView: script$w
1822
1921
  };
@@ -2710,7 +2809,7 @@ var script$p = /* @__PURE__ */ defineComponent({
2710
2809
  [
2711
2810
  createElementVNode("div", _hoisted_1$o, [
2712
2811
  createElementVNode("div", _hoisted_2$k, [
2713
- createVNode(unref(script$F), {
2812
+ createVNode(unref(script$G), {
2714
2813
  "color-mode": "dark",
2715
2814
  title: "\u6211\u7684\u8D26\u6237",
2716
2815
  class: normalizeClass({ "with-background": scrolled.value > 0 }),
@@ -2884,7 +2983,7 @@ var script$p = /* @__PURE__ */ defineComponent({
2884
2983
  _: 1
2885
2984
  /* STABLE */
2886
2985
  }, 8, ["visible"]),
2887
- createVNode(unref(script$E), {
2986
+ createVNode(unref(script$F), {
2888
2987
  modelValue: secondBalanceOpen.value,
2889
2988
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => secondBalanceOpen.value = $event),
2890
2989
  title: "\u6536\u652F\u660E\u7EC6"
@@ -4441,7 +4540,7 @@ var script$e = /* @__PURE__ */ defineComponent({
4441
4540
  Fragment,
4442
4541
  null,
4443
4542
  renderList(bannerMessages.value, (item, key) => {
4444
- return openBlock(), createBlock(script$C, {
4543
+ return openBlock(), createBlock(script$D, {
4445
4544
  class: normalizeClass({ show: key === activeKey.value }),
4446
4545
  key,
4447
4546
  showClose: item.noticeType === 0,
@@ -7712,4 +7811,4 @@ const AppKit = {
7712
7811
  }
7713
7812
  };
7714
7813
 
7715
- export { script$p as AccountView, script$H as AmountPicker, script$E as AppDrawer, script$D as AppVerify, script$v as BalanceCard, script$o as BalanceReminder, script$n as DateRange, script$B as DeviceVersion, script$l as ListFilter, script$1 as LoginSetting, script$e as NoticeBanner, script$d as NoticeEntry, script$b as NoticeList, script$A as OcrIcon, script$F as PageHeader, script$y as RechargeResult, script$z as RechargeView, script$g as SelfRegistration, script$w as TradeView, script$G as UserAgreement, script$7 as UserBinding, script$6 as UserBindingSuccess, script$a as UserEntry, script$3 as UserFeedback, script$2 as UserFeedbackEntry, script$4 as UserHeadCrop, script$8 as UserInfo, script as UserResourceEmpty, components, createHttp, AppKit as default, defaultCryptoConfig, requestPayment$2 as requestPayment, services$1 as services, useAppKit, useCountdown, useCrypto, useEncode, useSafeArea, useTabbar, useUpload, useValidator };
7814
+ export { script$p as AccountView, script$I as AmountPicker, script$F as AppDrawer, script$E as AppVerify, script$v as BalanceCard, script$o as BalanceReminder, script$n as DateRange, script$C as DeviceVersion, script$l as ListFilter, script$1 as LoginSetting, script$e as NoticeBanner, script$d as NoticeEntry, script$b as NoticeList, script$A as OcrBusinessLicense, script$B as OcrIcon, script$G as PageHeader, script$y as RechargeResult, script$z as RechargeView, script$g as SelfRegistration, script$w as TradeView, script$H as UserAgreement, script$7 as UserBinding, script$6 as UserBindingSuccess, script$a as UserEntry, script$3 as UserFeedback, script$2 as UserFeedbackEntry, script$4 as UserHeadCrop, script$8 as UserInfo, script as UserResourceEmpty, components, createHttp, AppKit as default, defaultCryptoConfig, requestPayment$2 as requestPayment, services$1 as services, useAppKit, useCountdown, useCrypto, useEncode, useSafeArea, useTabbar, useUpload, useValidator };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxda/appkit",
3
- "version": "4.0.16",
3
+ "version": "4.0.18",
4
4
  "description": "小程序应用开发包",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.ts",
@@ -3,78 +3,84 @@
3
3
  <h2>{{ title || '手机号验证' }}</h2>
4
4
  <p class="caption">{{ message || '短信将发送至账号绑定手机号' }}</p>
5
5
  <p class="number">{{ phone }}</p>
6
- <ns-form v-model="formData">
6
+ <ns-form v-model="formData" class="form">
7
7
  <ns-input
8
+ class="form-input"
8
9
  name="code"
9
10
  v-model="formData.code"
10
11
  placeholder="请输入验证码"
12
+ maxlength="6"
11
13
  variant="solid"
12
14
  :rules="['required', {
13
- name: 'function',
14
- message: '输入错误, 请重新输入',
15
- method: (value: string) => value.length === 6,
16
- }]"
15
+ name: 'function',
16
+ message: '输入错误, 请重新输入',
17
+ method: (value: string) => value.length === 6,
18
+ }]"
17
19
  >
18
- <template #append>
19
- <ns-button
20
- v-if="!sent"
21
- size="xs"
22
- variant="plain"
23
- color="primary"
24
- @click="send"
25
- label="获取验证码"
26
- />
27
- <div class="caption" v-if="sent">{{ countdown }} 秒收重新发送</div>
28
- </template>
29
20
  </ns-input>
21
+ <div class="form-btn">
22
+ <ns-button
23
+ v-if="!sent"
24
+ size="xs"
25
+ variant="plain"
26
+ color="primary"
27
+ @click="send"
28
+ label="获取验证码"
29
+ />
30
+ <div class="caption" v-if="sent">{{ countdown }}s后重新发送</div>
31
+ </div>
30
32
  </ns-form>
31
33
  <div class="row buttons">
32
- <ns-button round @click="emits('cancel')">取消</ns-button>
33
- <ns-button round gradient="#FFEBC1,#FFD7A7,#FFB875/90" @click="onOk">确认</ns-button>
34
+ <ns-button class="cancel-btn" round @click="emits('cancel')"
35
+ >取消</ns-button
36
+ >
37
+ <ns-button round gradient="#FFEBC1,#FFD7A7,#FFB875/90" @click="onOk"
38
+ >确认</ns-button
39
+ >
34
40
  </div>
35
41
  </div>
36
42
  </template>
37
43
 
38
44
  <script lang="ts" setup>
39
- import { NsForm, NsInput, NsButton } from '@uxda/nutshell/taro'
40
- import { reactive, ref } from 'vue'
45
+ import { NsForm, NsInput, NsButton } from '@uxda/nutshell/taro';
46
+ import { reactive, ref } from 'vue';
41
47
 
42
48
  export interface AppVerifyProps {
43
- phone: string
44
- title?: string
45
- message?: string
46
- onSend?: Function
49
+ phone: string;
50
+ title?: string;
51
+ message?: string;
52
+ onSend?: Function;
47
53
  }
48
54
 
49
- const emits = defineEmits(['complete', 'cancel'])
55
+ const emits = defineEmits(['complete', 'cancel']);
50
56
 
51
57
  const sent = ref(false),
52
- countdown = ref(60)
58
+ countdown = ref(60);
53
59
 
54
60
  let formData = reactive({
55
61
  code: '',
56
- })
62
+ });
57
63
 
58
64
  const send = () => {
59
- sent.value = true
65
+ sent.value = true;
60
66
 
61
- props.onSend && props.onSend()
67
+ props.onSend && props.onSend();
62
68
 
63
- countdown.value = 60
69
+ countdown.value = 60;
64
70
  let timer = setInterval(() => {
65
- countdown.value--
71
+ countdown.value--;
66
72
  if (countdown.value <= 0) {
67
- clearInterval(timer)
68
- sent.value = false
73
+ clearInterval(timer);
74
+ sent.value = false;
69
75
  }
70
- }, 1000)
71
- }
76
+ }, 1000);
77
+ };
72
78
 
73
79
  const onOk = () => {
74
- emits('complete', { code: formData.code })
75
- }
80
+ emits('complete', { code: formData.code });
81
+ };
76
82
 
77
- const props = defineProps<AppVerifyProps>()
83
+ const props = defineProps<AppVerifyProps>();
78
84
  </script>
79
85
 
80
86
  <style lang="scss">
@@ -86,13 +92,38 @@ const props = defineProps<AppVerifyProps>()
86
92
  margin: 10px;
87
93
  }
88
94
  .caption {
89
- font-size: 14px;
90
- color: #666;
95
+ font-size: 10px !important;
96
+ color: #ccc;
97
+ line-height: 21px;
98
+ }
99
+ .number {
100
+ line-height: 21px;
101
+ }
102
+ .form .nut-cell-group__wrap {
103
+ display: flex;
104
+ align-items: center;
105
+ margin: 20px 0 !important;
106
+ .form-input {
107
+ height: 36px;
108
+ line-height: 36px;
109
+ border: none;
110
+ background: #f5f5f5;
111
+ border-radius: 5px;
112
+ flex: 1;
113
+ padding-left: 12px;
114
+ }
115
+ .form-btn {
116
+ margin-left: 12px;
117
+ width: 90px;
118
+ }
91
119
  }
92
120
  .buttons {
93
121
  .ns-button {
94
122
  width: 104px;
95
123
  }
124
+ .cancel-btn {
125
+ border: 1px solid #969696 !important;
126
+ }
96
127
  }
97
128
  }
98
129
  </style>
@@ -0,0 +1,115 @@
1
+ <template>
2
+ <div class="ocr-icon" @click="onIconClick">
3
+ <ns-icon name="https://simple.shensi.tech/icons/ocr.svg" />
4
+ </div>
5
+ </template>
6
+
7
+ <script lang="ts" setup>
8
+ import Taro from '@tarojs/taro';
9
+ import { NsIcon } from '@uxda/nutshell/taro';
10
+ import { useAppKitOptions } from '../../Appkit';
11
+
12
+ const appKitOptions = useAppKitOptions();
13
+
14
+ const emits = defineEmits(['complete']);
15
+
16
+ export type OcrResult = {
17
+ companyName: string;
18
+ idCardNo: string;
19
+ legalPersonName: string;
20
+ };
21
+
22
+ async function taroImgCompress(src: string, quality = 80) {
23
+ return new Promise((resolve, reject) => {
24
+ Taro.compressImage({
25
+ src: src,
26
+ quality: quality,
27
+ success: (res) => {
28
+ resolve(res);
29
+ },
30
+ fail: (res) => {
31
+ reject(res);
32
+ },
33
+ });
34
+ });
35
+ }
36
+
37
+ function getCompressQuality(size: number) {
38
+ let quality = 100;
39
+ const curSize = size / (1024 * 1024);
40
+ if (curSize > 6) {
41
+ quality = quality - ((curSize - 6) / curSize) * 100;
42
+ }
43
+ return quality;
44
+ }
45
+
46
+ function allTrim(str: string) {
47
+ return str.replace(/\s+/g, '');
48
+ }
49
+
50
+ async function onIconClick() {
51
+ console.log('===onIconClick');
52
+ let result: OcrResult | null = null;
53
+ try {
54
+ const csRes = await Taro.chooseImage({
55
+ count: 1,
56
+ });
57
+ let { path, size } = csRes.tempFiles[0];
58
+ const compressImg: any =
59
+ (await taroImgCompress(path, getCompressQuality(size))) || {};
60
+ const filePath = compressImg.tempFilePath || path;
61
+ Taro.showLoading({ title: '营业执照识别中..' });
62
+ const session = appKitOptions.token();
63
+ const baseUrl = appKitOptions.baseUrl();
64
+ const upRes: any = await Taro.uploadFile({
65
+ url: baseUrl + '/promoact/common/parseBusinessLicense',
66
+ filePath,
67
+ name: 'file',
68
+ formData: {
69
+ objectNo: `min${Date.now()}`,
70
+ },
71
+ header: {
72
+ sessionKey: session || '',
73
+ token: session || '',
74
+ },
75
+ });
76
+ Taro.hideLoading();
77
+ const res = JSON.parse(upRes.data);
78
+ if (res.code === '200') {
79
+ const faceInfo = res.result || {};
80
+ result = {
81
+ companyName: allTrim(faceInfo.companyName || ''),
82
+ idCardNo: allTrim(faceInfo.idCardNo || ''),
83
+ legalPersonName: allTrim(faceInfo.legalPersonName || ''),
84
+ fileId: faceInfo.fileId,
85
+ originalUrl: faceInfo.originalUrl,
86
+ downloadUrl: faceInfo.downloadUrl,
87
+ };
88
+ console.log('===识别', result);
89
+ if (!result.companyName && !result.idCardNo) {
90
+ Taro.showToast({ title: '识别失败,请重试', icon: 'none' });
91
+ }
92
+ } else {
93
+ Taro.showToast({
94
+ title: res.msg,
95
+ icon: 'error',
96
+ });
97
+ }
98
+ } catch (err) {
99
+ Taro.hideLoading();
100
+ console.log(err);
101
+ }
102
+ emits('complete', result);
103
+ }
104
+ </script>
105
+
106
+ <style lang="scss">
107
+ .ocr-icon {
108
+ width: 24px;
109
+ height: 24px;
110
+ .ns-icon {
111
+ width: 24px;
112
+ height: 24px;
113
+ }
114
+ }
115
+ </style>
@@ -3,5 +3,6 @@ import PageHeader from './PageHeader.vue'
3
3
  import AppVerify from './AppVerify.vue'
4
4
  import DeviceVersion from './DeviceVersion.vue'
5
5
  import OcrIcon from './OcrIcon.vue'
6
+ import OcrBusinessLicense from './OcrBusinessLicense.vue'
6
7
 
7
- export { AppDrawer, PageHeader, DeviceVersion, AppVerify, OcrIcon }
8
+ export { AppDrawer, PageHeader, DeviceVersion, AppVerify, OcrIcon, OcrBusinessLicense }
@@ -7,7 +7,7 @@ export type UploadConfig = {
7
7
  headers?: Record<string, string>
8
8
  }
9
9
 
10
- const mappings = {
10
+ const mappings: {[x: string]: keyof Media} = {
11
11
  downloadUrl: 'thrumb',
12
12
  fileId: 'id',
13
13
  fileName: 'name',