jufubao-base 1.0.305-beta1 → 1.0.305

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 (26) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseInvoice/Api.js +49 -0
  3. package/src/components/JfbBaseInvoice/Attr.js +21 -0
  4. package/src/components/JfbBaseInvoice/JfbBaseInvoice.vue +524 -0
  5. package/src/components/JfbBaseInvoice/JfbBaseInvoiceLess.less +79 -0
  6. package/src/components/JfbBaseInvoice/JfbBaseInvoiceMixin.js +30 -0
  7. package/src/components/JfbBaseInvoice/Mock.js +11 -0
  8. package/src/components/JfbBaseInvoice/cusAttr/advanced.js +33 -0
  9. package/src/components/JfbBaseInvoice/cusAttr/content.js +12 -0
  10. package/src/components/JfbBaseInvoice/cusAttr/style.js +41 -0
  11. package/src/components/JfbBaseInvoiceDetail/Api.js +35 -0
  12. package/src/components/JfbBaseInvoiceDetail/Attr.js +21 -0
  13. package/src/components/JfbBaseInvoiceDetail/JfbBaseInvoiceDetail.vue +465 -0
  14. package/src/components/JfbBaseInvoiceDetail/JfbBaseInvoiceDetailLess.less +79 -0
  15. package/src/components/JfbBaseInvoiceDetail/JfbBaseInvoiceDetailMixin.js +30 -0
  16. package/src/components/JfbBaseInvoiceDetail/Mock.js +9 -0
  17. package/src/components/JfbBaseInvoiceDetail/cusAttr/advanced.js +6 -0
  18. package/src/components/JfbBaseInvoiceDetail/cusAttr/content.js +12 -0
  19. package/src/components/JfbBaseInvoiceDetail/cusAttr/style.js +41 -0
  20. package/src/components/JfbBaseMapOverlay/XdBaiduOverlay.vue +7 -7
  21. package/src/components/JfbBaseMapSearch/MapSearchH5.vue +5 -5
  22. package/src/components/JfbBaseOrderDetail/Api.js +13 -1
  23. package/src/components/JfbBaseOrderDetail/Attr.js +38 -0
  24. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +78 -1
  25. package/src/components/JfbBaseOrderDetail/Mock.js +2 -1
  26. package/src/components/JfbBaseSearch/XdBaiduSearch.vue +5 -5
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-base",
3
- "version": "1.0.305-beta1",
3
+ "version": "1.0.305",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+ /**
3
+ * @description 接口配置,
4
+ * 在设置方法名字当时候,别忘记加上【模块名字】:Invoice
5
+ * @type {*[]}
6
+ */
7
+ module.exports = [
8
+ {
9
+ //设置方法名字当别忘记加上【模块名字】:Invoice
10
+ mapFnName: 'userInvoiceDetail',
11
+ title: '用户开票 - 详情',
12
+ path: '/pay/v1/user-invoice/detail',
13
+ isRule: false,
14
+ params: {
15
+ main_order_id: ['订单编号', 'Number', '必选'],
16
+ pay_order_id: ['支付订单号', 'Number', '必选'],
17
+ },
18
+ isConsole: true,
19
+ disabled: true,
20
+ }, {
21
+ //设置方法名字当别忘记加上【模块名字】:Invoice
22
+ mapFnName: 'userInvoiceOptions',
23
+ title: '用户开票 - options',
24
+ path: '/pay/v1/user-invoice/options',
25
+ isRule: false,
26
+ params: {
27
+ main_order_id: ['订单编号', 'Number', '必选'],
28
+ pay_order_id: ['支付订单号', 'Number', '必选'],
29
+ },
30
+ isConsole: true,
31
+ disabled: true,
32
+ },
33
+ {
34
+ //设置方法名字当别忘记加上【模块名字】:Invoice
35
+ mapFnName: 'userInvoiceSubmit',
36
+ title: '用户开票 - 申请开票',
37
+ path: '/pay/v1/user-invoice/submit',
38
+ isRule: false,
39
+ data: {
40
+ main_order_id: ['订单编号', 'Number', '必选'],
41
+ pay_order_id: ['支付订单号', 'Number', '必选'],
42
+ email: ['邮箱', 'Number', '必选'],
43
+ invoice_header: ['发票抬头', 'Number', '必选'],
44
+ invoice_header_type: ['发票抬头类型', 'Number', '必选'],
45
+ },
46
+ isConsole: true,
47
+ disabled: true,
48
+ },
49
+ ];
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+ import Content from './cusAttr/content'
3
+ import Style from './cusAttr/style'
4
+ import Advanced from './cusAttr/advanced'
5
+ /**
6
+ * @description 当表单组件中有联动操作时候,使用方法进行返回
7
+ */
8
+ export default {
9
+ style: [],
10
+ content: (data, gValue, gColor, oldData = {}) => {
11
+ return [
12
+ ...Content(data, gValue, gColor, oldData),
13
+ ...Style(data, gValue, gColor, oldData),
14
+ ...Advanced(data, gValue, gColor, oldData),
15
+
16
+ ].filter(i => i)
17
+ },
18
+ advanced: [
19
+
20
+ ],
21
+ };
@@ -0,0 +1,524 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-invoice"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx: isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-invoice__edit"
10
+ :class="{ editx: isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-invoice__edit-icon" @click="delEdit">删除</view>
14
+ </view>
15
+ <!-- #endif -->
16
+ <view
17
+ class="jfb-base-invoice__body"
18
+ :style="{ minHeight: layoutInfo.bodyMinHeightRpx + 'rpx' }"
19
+ >
20
+ <view v-if="firstStep">
21
+ <view :style="[statusStyle]" class="jfb-base-invoice__body-status">
22
+ <XdFontIcon icon="icongantanhao"></XdFontIcon>
23
+ <view>{{ status_name }}</view>
24
+ </view>
25
+ <view class="jfb-base-invoice__body-content">
26
+ <view class="jfb-base-invoice__body-content-item">
27
+ <view class="jfb-base-invoice__body-content-item-info">
28
+ <view>订单编号</view>
29
+ <view>{{ main_order_id }}</view>
30
+ </view>
31
+ <view class="jfb-base-invoice__body-content-item-info">
32
+ <view>开票金额</view>
33
+ <XdUnit :price="invoice_amount" :isOld="false"></XdUnit>
34
+ </view>
35
+ </view>
36
+ <view
37
+ style="margin-top: 24rpx"
38
+ class="jfb-base-invoice__body-content-item"
39
+ >
40
+ <view class="jfb-base-invoice__body-content-item-info">
41
+ <view>发票类型</view>
42
+ <view>(普通发票)数电发票</view>
43
+ </view>
44
+ <view class="jfb-base-invoice__body-content-item-info">
45
+ <view><text class="required">*</text>抬头类型</view>
46
+ <view>
47
+ <radio-group @change="radioChange">
48
+ <label
49
+ style="margin-left: 10rpx"
50
+ v-for="(item, index) in invoice_header_type_list"
51
+ :key="index"
52
+ >
53
+ <radio
54
+ style="transform: scale(0.7)"
55
+ :value="item.value"
56
+ :checked="item.value === invoice_header_type"
57
+ :activeBackgroundColor="mainColor"
58
+ :activeBorderColor="mainColor"
59
+ :color="mainColor"
60
+ />
61
+ <text
62
+ :style="{
63
+ color:
64
+ item.value === invoice_header_type ? mainColor : '',
65
+ }"
66
+ >{{ item.label }}</text
67
+ >
68
+ </label>
69
+ </radio-group>
70
+ </view>
71
+ </view>
72
+ <view class="jfb-base-invoice__body-content-item-info">
73
+ <view><text class="required">*</text>发票抬头</view>
74
+ <view class="jfb-base-invoice__body-content-item-info-input">
75
+ <input
76
+ type="text"
77
+ v-model="invoice_header"
78
+ placeholder="填写需要开具发票的抬头"
79
+ />
80
+ </view>
81
+ </view>
82
+ <view class="jfb-base-invoice__body-content-item-info">
83
+ <view><text class="required">*</text>联系电话</view>
84
+ <view class="jfb-base-invoice__body-content-item-info-input">
85
+ <input
86
+ type="text"
87
+ v-model="phone_number"
88
+ placeholder="填写联系电话"
89
+ />
90
+ </view>
91
+ </view>
92
+ <view
93
+ v-if="invoice_header_type === 'company'"
94
+ class="jfb-base-invoice__body-content-item-info"
95
+ >
96
+ <view><text class="required">*</text>税号</view>
97
+ <view class="jfb-base-invoice__body-content-item-info-input">
98
+ <input
99
+ type="text"
100
+ v-model="invoice_number"
101
+ placeholder="填写税号"
102
+ />
103
+ </view>
104
+ </view>
105
+ <view class="jfb-base-invoice__body-content-item-info">
106
+ <view><text class="required">*</text>接收邮箱</view>
107
+ <view class="jfb-base-invoice__body-content-item-info-input">
108
+ <input
109
+ type="text"
110
+ v-model="email"
111
+ placeholder="开票成功后将发往您的邮箱"
112
+ />
113
+ </view>
114
+ </view>
115
+ </view>
116
+ </view>
117
+ <view class="fixe_bottom" :style="prod_bottom">
118
+ <XdButton
119
+ width="680rpx"
120
+ @click="handleToSecondStep"
121
+ size="small"
122
+ type="primary"
123
+ >下一步</XdButton
124
+ >
125
+ </view>
126
+ </view>
127
+ <view v-else>
128
+ <view class="jfb-base-invoice__body-step2-content">
129
+ <view class="jfb-base-invoice__body-step2-content-item">
130
+ <view class="jfb-base-invoice__body-step2-content-item-info">
131
+ <view>开票金额</view>
132
+ <XdUnit :isOld="false" :price="invoice_amount"></XdUnit>
133
+ </view>
134
+ <view class="jfb-base-invoice__body-step2-content-item-info">
135
+ <view>发票类型</view>
136
+ <view>(普通发票)数电发票</view>
137
+ </view>
138
+ </view>
139
+ <view
140
+ style="margin-top: 24rpx"
141
+ class="jfb-base-invoice__body-step2-content-item"
142
+ >
143
+ <view class="jfb-base-invoice__body-step2-content-item-info">
144
+ <view>抬头类型</view>
145
+ <view>{{
146
+ invoice_header_type === "company" ? "单位" : "个人"
147
+ }}</view>
148
+ </view>
149
+ <view class="jfb-base-invoice__body-step2-content-item-info">
150
+ <view>发票抬头</view>
151
+ <view>{{ invoice_header }}</view>
152
+ </view>
153
+ <view class="jfb-base-invoice__body-step2-content-item-info">
154
+ <view>联系电话</view>
155
+ <view>{{ phone_number }}</view>
156
+ </view>
157
+ <view
158
+ v-if="invoice_header_type === 'company'"
159
+ class="jfb-base-invoice__body-step2-content-item-info"
160
+ >
161
+ <view>税号</view>
162
+ <view>{{ invoice_number }}</view>
163
+ </view>
164
+ <view class="jfb-base-invoice__body-step2-content-item-info">
165
+ <view>接收邮箱</view>
166
+ <view>{{ email }}</view>
167
+ </view>
168
+ </view>
169
+ </view>
170
+ <view class="fixe_bottom" :style="prod_bottom">
171
+ <XdButton
172
+ style="width: 300rpx"
173
+ :cusStyle="[btnStyle]"
174
+ @click="handleBack"
175
+ size="small"
176
+ type="default"
177
+ >返回修改</XdButton
178
+ >
179
+ <XdButton
180
+ style="width: 300rpx"
181
+ @click="handleConfirm"
182
+ size="small"
183
+ type="primary"
184
+ >确认提交</XdButton
185
+ >
186
+ </view>
187
+ </view>
188
+ </view>
189
+ </view>
190
+ </template>
191
+
192
+ <script>
193
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
194
+ import XdButton from "@/components/XdButton/XdButton";
195
+ import { jfbRootExec } from "@/utils/xd.event";
196
+ import JfbBaseInvoiceMixin from "./JfbBaseInvoiceMixin";
197
+ import { getContainerPropsValue, gCPVal } from "@/utils/xd.base";
198
+ import componentsMixins from "@/mixins/componentsMixins";
199
+ import extsMixins from "@/mixins/extsMixins";
200
+ import getServiceUrl from "@/common/getServiceUrl";
201
+ import XdUnit from "@/components/XdUnit/XdUnit";
202
+ export default {
203
+ name: "JfbBaseInvoice",
204
+ components: {
205
+ XdFontIcon,
206
+ XdUnit,
207
+ XdButton,
208
+ },
209
+ mixins: [componentsMixins, extsMixins, JfbBaseInvoiceMixin],
210
+ data() {
211
+ return {
212
+ statusBg: "",
213
+ invoice_header_type_list: [],
214
+ invoice_header_type: "",
215
+ invoice_header: "",
216
+ phone_number: "",
217
+ email: "",
218
+ confirmPath: "",
219
+ detailPath: "",
220
+ main_order_id: "",
221
+ pay_order_id: "",
222
+ invoice_amount: "",
223
+ invoice_number: "",
224
+ status_name: "",
225
+ firstStep: true,
226
+ };
227
+ },
228
+ computed: {
229
+ statusStyle() {
230
+ return {
231
+ backgroundImage: `url(${this.statusBg})`,
232
+ backgroundRepeat: "no-repeat",
233
+ backgroundSize: "100% 100%",
234
+ };
235
+ },
236
+ prod_bottom() {
237
+ return this.fixedStyle({ height: 0, zIndex: 111 });
238
+ },
239
+ btnStyle() {
240
+ return {
241
+ color: this.mainColor,
242
+ border: `1px solid ${this.mainColor}`,
243
+ };
244
+ },
245
+ },
246
+ watch: {
247
+ container(value, oldValue) {
248
+ if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
249
+ if (this.$configProject["isPreview"]) this.init(value);
250
+ },
251
+ },
252
+ created() {
253
+ this.init(this.container);
254
+
255
+ //todo
256
+ },
257
+ methods: {
258
+ async onJfbLoad(options) {
259
+ this.main_order_id = options.main_order_id;
260
+ this.pay_order_id = options.pay_order_id;
261
+ await jfbRootExec("userInvoiceOptions", {
262
+ vm: this,
263
+ data: {},
264
+ })
265
+ .then((res) => {
266
+ this.invoice_header_type_list = res.invoice_header_type_list;
267
+ })
268
+ .catch();
269
+ await jfbRootExec("userInvoiceDetail", {
270
+ vm: this,
271
+ data: {
272
+ main_order_id: this.main_order_id,
273
+ pay_order_id: this.pay_order_id,
274
+ },
275
+ })
276
+ .then((res) => {
277
+ this.invoice_amount = res.invoice_result.invoice_amount;
278
+ this.status_name = res.invoice_result.status_name;
279
+ })
280
+ .catch();
281
+ },
282
+ /**
283
+ * @description 监听事件变化
284
+ * @param container {object} 业务组件对象自己
285
+ */
286
+ init(container) {
287
+ this.statusBg = getServiceUrl(
288
+ gCPVal(container, "statusBg", { url: "" }, {}).url
289
+ );
290
+ this.confirmPath = getContainerPropsValue(
291
+ container,
292
+ "content.confirmPath",
293
+ { value: "" }
294
+ ).value;
295
+ this.detailPath = getContainerPropsValue(
296
+ container,
297
+ "content.detailPath",
298
+ { value: "" }
299
+ ).value;
300
+ },
301
+ radioChange: function (evt) {
302
+ for (let i = 0; i < this.invoice_header_type_list.length; i++) {
303
+ if (this.invoice_header_type_list[i].value === evt.detail.value) {
304
+ this.invoice_header_type = evt.detail.value;
305
+ break;
306
+ }
307
+ }
308
+ },
309
+ convertObjToQueryString(obj, prefix = "this.", encode = true) {
310
+ // 过滤掉值为 undefined/null 的属性,避免生成空参数
311
+ const validEntries = Object.entries(obj).filter(
312
+ ([_, value]) => value !== undefined && value !== null
313
+ );
314
+
315
+ // 拼接每个键值对:key=prefix.key(支持编码)
316
+ const querySegments = validEntries.map(([key, _]) => {
317
+ const valueStr = this[key];
318
+ // 根据需求决定是否对值进行 URL 编码(避免特殊字符问题)
319
+ const encodedValue = encode ? encodeURIComponent(valueStr) : valueStr;
320
+ return `${encodeURIComponent(key)}=${encodedValue}`;
321
+ });
322
+
323
+ // 用 & 连接所有段,返回最终查询字符串
324
+ return querySegments.join("&");
325
+ },
326
+ handleToSecondStep() {
327
+ if (!this.invoice_header_type) {
328
+ this.$xdAlert({ content: "请选择发票抬头类型" });
329
+ return;
330
+ }
331
+ if (!this.invoice_header) {
332
+ this.$xdAlert({ content: "请填写发票抬头" });
333
+ return;
334
+ }
335
+ if (this.invoice_header_type == "company") {
336
+ if (!this.invoice_number) {
337
+ this.$xdAlert({ content: "请填写税号" });
338
+ return;
339
+ }
340
+ }
341
+ if (!this.phone_number) {
342
+ this.$xdAlert({ content: "请填写联系电话" });
343
+ return;
344
+ } else {
345
+ const reg = /^1[3456789]\d{9}$/;
346
+ if (!reg.test(this.phone_number)) {
347
+ this.$xdAlert({ content: "请填写正确的手机号" });
348
+ return;
349
+ }
350
+ }
351
+ if (!this.email) {
352
+ this.$xdAlert({ content: "请填写接收邮箱" });
353
+ return;
354
+ } else {
355
+ const reg =
356
+ /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/;
357
+ if (!reg.test(this.email)) {
358
+ this.$xdAlert({ content: "请填写正确的邮箱" });
359
+ return;
360
+ }
361
+ }
362
+ this.firstStep = false;
363
+ },
364
+ handleConfirm() {
365
+ //调用确认提交接口并跳转详情页面
366
+ jfbRootExec("userInvoiceSubmit", {
367
+ vm: this,
368
+ data: {
369
+ main_order_id: this.main_order_id,
370
+ pay_order_id: this.pay_order_id,
371
+ email: this.email,
372
+ invoice_header_type: this.invoice_header_type,
373
+ invoice_header: this.invoice_header,
374
+ phone_number: this.phone_number,
375
+ invoice_number: this.invoice_number,
376
+ },
377
+ }).then((res) => {
378
+ let params = {
379
+ main_order_id: this.main_order_id,
380
+ pay_order_id: this.pay_order_id,
381
+ };
382
+ params = this.convertObjToQueryString(params);
383
+ params = this.$xdUniHelper.navigateTo({
384
+ url: `${this.detailPath}?${params}`,
385
+ });
386
+ });
387
+ },
388
+ handleBack() {
389
+ this.firstStep = true;
390
+ },
391
+ onJfbScroll(options) {
392
+ console.log("event.onJfbScroll", options);
393
+ },
394
+ onJfbReachBottom(options) {
395
+ console.log("event.onJfbReachBottom", options);
396
+ },
397
+ onJfbShow(options) {
398
+ console.log("event.onJfbShow", options);
399
+ },
400
+ onJfbHide(options) {
401
+ console.log("event.onJfbHide", options);
402
+ },
403
+ onJfbBack(options) {
404
+ console.log("event.onJfbBack", options);
405
+ },
406
+ onJfbUpdate(...data) {
407
+ console.log("event.onJfbUpdate", data);
408
+ },
409
+ onJfbCustomEvent(options) {
410
+ console.log("event.onJfbReachBottom", options);
411
+ },
412
+ },
413
+ };
414
+ </script>
415
+
416
+ <style scoped lang="less">
417
+ @import "./JfbBaseInvoiceLess.less";
418
+
419
+ .jfb-base-invoice {
420
+ &__body {
421
+ &-status {
422
+ display: flex;
423
+ align-items: center;
424
+ justify-content: center;
425
+ font-size: 36rpx;
426
+ height: 180rpx;
427
+ color: #fff;
428
+ & > view {
429
+ margin-left: 16rpx;
430
+ }
431
+ }
432
+ &-content {
433
+ padding: 24rpx;
434
+ position: relative;
435
+ top: -18rpx;
436
+ border-radius: 16rpx;
437
+ background: #f8f8f8;
438
+ &-item {
439
+ background: #fff;
440
+ border-radius: 8rpx;
441
+ &-info {
442
+ padding: 20rpx 48rpx;
443
+ display: flex;
444
+ justify-content: space-between;
445
+ align-items: center;
446
+ color: #333333;
447
+ font-size: 28rpx;
448
+ border-bottom: 2rpx solid #f7f7f7;
449
+ position: relative;
450
+ &-input {
451
+ flex: 1;
452
+ }
453
+ input {
454
+ font-size: 26rpx;
455
+ text-align: right;
456
+ }
457
+ }
458
+ .required {
459
+ color: red;
460
+ position: absolute;
461
+ left: 30rpx;
462
+ }
463
+ }
464
+ }
465
+ .fixe_bottom {
466
+ display: flex;
467
+ align-items: center;
468
+ justify-content: space-around;
469
+ height: unit(100, rpx);
470
+ padding: 0 unit(40, rpx);
471
+ flex-flow: nowrap;
472
+ background: #fff;
473
+ box-shadow: 0 0 unit(16, rpx) rgba(0, 0, 0, 0.05);
474
+ .flex_l {
475
+ display: flex;
476
+ align-items: center;
477
+ font-size: unit(32, rpx);
478
+ }
479
+
480
+ & > view {
481
+ flex: 1;
482
+ padding: 0 unit(15, rpx);
483
+ }
484
+ }
485
+ &-step2-content {
486
+ padding: 24rpx;
487
+ border-radius: 16rpx;
488
+ &-item {
489
+ background: #fff;
490
+ border-radius: 8rpx;
491
+ &-info {
492
+ padding: 20rpx 48rpx;
493
+ display: flex;
494
+ justify-content: space-between;
495
+ align-items: center;
496
+ color: #333333;
497
+ font-size: 28rpx;
498
+ border-bottom: 2rpx solid #f7f7f7;
499
+ }
500
+ }
501
+ }
502
+ .fixe_bottom {
503
+ display: flex;
504
+ align-items: center;
505
+ justify-content: space-around;
506
+ height: unit(100, rpx);
507
+ padding: 0 unit(40, rpx);
508
+ flex-flow: nowrap;
509
+ background: #fff;
510
+ box-shadow: 0 0 unit(16, rpx) rgba(0, 0, 0, 0.05);
511
+ .flex_l {
512
+ display: flex;
513
+ align-items: center;
514
+ font-size: unit(32, rpx);
515
+ }
516
+
517
+ & > view {
518
+ flex: 1;
519
+ padding: 0 unit(15, rpx);
520
+ }
521
+ }
522
+ }
523
+ }
524
+ </style>
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @desc 获取绝对路径完整地址
3
+ * @param @path
4
+ **/
5
+ //例如:https://image.jufubao.cn/20220501010108/image/bg/default_gonghui_bg.png
6
+ @basePath: 'business/';
7
+ @doMain: '//sandbox-img.jufubao.cn/';
8
+
9
+ .getBusinessImageUrl(@path, @size: 'size8') {
10
+ @url: "@{doMain}@{basePath}@{path}?x-oss-process=style/@{size}";
11
+ background-image: url(@url);
12
+ }
13
+
14
+ //start
15
+ .jfb-base-invoice {
16
+ box-sizing: border-box;
17
+
18
+ &__body{
19
+ position: relative;
20
+ overflow: hidden;
21
+ z-index: 2
22
+ }
23
+
24
+ &.editx,&.editx:hover {
25
+ position: relative;
26
+ min-height: unit(100, rpx);
27
+ z-index: 3;
28
+ &::after {
29
+ border: 2rpx dashed blue;
30
+ content: " ";
31
+ position: absolute;
32
+ top:0;
33
+ left:0;
34
+ bottom:0;
35
+ right:0;
36
+ z-index: 4;
37
+ cursor: pointer;
38
+ }
39
+
40
+ }
41
+
42
+
43
+ &__edit {
44
+ cursor: pointer;
45
+ position: absolute;
46
+ right: unit(0, rpx);
47
+ top: unit(-52, rpx);
48
+ height: unit(50, rpx);
49
+ line-height: unit(50, rpx);
50
+ display: flex;
51
+ justify-content: center;
52
+ align-items: center;
53
+ background: rgba(0, 0, 0, .6);
54
+ border-radius: unit(10, rpx);
55
+ box-shadow: 0 0 10px rbga(0, 0, 0, 0.3);
56
+ color: #fff;
57
+ font-size: unit(22, rpx);
58
+
59
+ &-icon{
60
+ padding: 0 unit(20, rpx);
61
+ }
62
+
63
+ &.editx {
64
+ box-sizing: border-box;
65
+
66
+ }
67
+ }
68
+ }
69
+ //end
70
+
71
+
72
+ /**notPreview**/
73
+ .jfb-base-invoice {
74
+ //&:before {
75
+ //content: " ";
76
+ //display: table;
77
+ //}
78
+ }
79
+ /**endNotPreview**/