imeik-bizui 2.6.6 → 2.6.8
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/bizui/src/FieldFloorPriceBoard/core/FloorPriceDetailDialog.vue +74 -74
- package/dist/bizui/src/FieldFloorPriceBoard/core/normalize.js +2 -2
- package/dist/imeik-bizui.common.js +145 -142
- package/dist/imeik-bizui.common.js.gz +0 -0
- package/dist/imeik-bizui.css +1 -1
- package/dist/imeik-bizui.css.gz +0 -0
- package/dist/imeik-bizui.umd.js +145 -142
- package/dist/imeik-bizui.umd.js.gz +0 -0
- package/dist/imeik-bizui.umd.min.js +4 -4
- package/dist/imeik-bizui.umd.min.js.gz +0 -0
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
通用「底价明细」弹窗(纯展示,无接口依赖)
|
|
3
3
|
- 顶部汇总:由 Dashboard 传入概览产品行
|
|
4
4
|
- 下方三区(销售订单 / 非销出库 / 销售费用)等分三列并排
|
|
5
|
-
-
|
|
5
|
+
- 三列卡片等高:表格固定高度按 pageSize 撑开,合计底对齐
|
|
6
6
|
- 分区数据前端分页(pageSize);无底部关闭按钮,右上角关闭即可
|
|
7
7
|
-->
|
|
8
8
|
<template>
|
|
@@ -22,13 +22,8 @@
|
|
|
22
22
|
>
|
|
23
23
|
<div v-if="error" class="fpd-msg fpd-msg--error">{{ error }}</div>
|
|
24
24
|
|
|
25
|
-
<!--
|
|
25
|
+
<!-- 首次加载无内容时用骨架撑住高度,避免先闪出一条窄框;计算说明骨架仍在底部 -->
|
|
26
26
|
<div v-else-if="showLoadingShell" class="fpd-skeleton" aria-hidden="true">
|
|
27
|
-
<div class="fpd-skeleton__formulas">
|
|
28
|
-
<div class="fpd-skeleton__bar fpd-skeleton__bar--label" />
|
|
29
|
-
<div class="fpd-skeleton__bar fpd-skeleton__bar--md" />
|
|
30
|
-
<div class="fpd-skeleton__bar fpd-skeleton__bar--sm" />
|
|
31
|
-
</div>
|
|
32
27
|
<div class="fpd-skeleton__summary">
|
|
33
28
|
<div class="fpd-skeleton__bar fpd-skeleton__bar--lg" />
|
|
34
29
|
<div class="fpd-skeleton__bar" />
|
|
@@ -41,26 +36,15 @@
|
|
|
41
36
|
<div class="fpd-skeleton__bar fpd-skeleton__bar--footer" />
|
|
42
37
|
</div>
|
|
43
38
|
</div>
|
|
39
|
+
<div class="fpd-skeleton__formulas">
|
|
40
|
+
<div class="fpd-skeleton__bar fpd-skeleton__bar--label" />
|
|
41
|
+
<div class="fpd-skeleton__bar fpd-skeleton__bar--md" />
|
|
42
|
+
<div class="fpd-skeleton__bar fpd-skeleton__bar--sm" />
|
|
43
|
+
</div>
|
|
44
44
|
</div>
|
|
45
45
|
|
|
46
46
|
<template v-else>
|
|
47
|
-
<div v-if="formulaItems.length" class="fpd-formulas" role="note">
|
|
48
|
-
<span class="fpd-formulas__label">计算说明</span>
|
|
49
|
-
<div class="fpd-formulas__list">
|
|
50
|
-
<span
|
|
51
|
-
v-for="(item, idx) in formulaItems"
|
|
52
|
-
:key="idx"
|
|
53
|
-
class="fpd-formulas__item"
|
|
54
|
-
>
|
|
55
|
-
<em class="fpd-formulas__key">{{ item.key }}</em>
|
|
56
|
-
<span class="fpd-formulas__eq">=</span>
|
|
57
|
-
<span class="fpd-formulas__expr">{{ item.expr }}</span>
|
|
58
|
-
</span>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
47
|
<div v-if="summaryColumns.length" class="fpd-summary">
|
|
63
|
-
<div v-if="isNarrow" class="fpd-summary__hint">汇总表可左右滑动</div>
|
|
64
48
|
<el-table
|
|
65
49
|
:data="summaryRows"
|
|
66
50
|
border
|
|
@@ -107,7 +91,6 @@
|
|
|
107
91
|
<div class="fpd-section__head">
|
|
108
92
|
<span class="fpd-section__title">{{ section.title }}</span>
|
|
109
93
|
<span v-if="section.subtitle" class="fpd-section__subtitle">{{ section.subtitle }}</span>
|
|
110
|
-
<span v-if="isNarrow" class="fpd-section__hint">左右滑动查看完整信息</span>
|
|
111
94
|
</div>
|
|
112
95
|
|
|
113
96
|
<div class="fpd-section__table-wrap">
|
|
@@ -116,6 +99,7 @@
|
|
|
116
99
|
border
|
|
117
100
|
size="small"
|
|
118
101
|
class="fpd-table fpd-table--section"
|
|
102
|
+
:height="resolvedTableHeight"
|
|
119
103
|
:header-cell-style="headerCellStyle"
|
|
120
104
|
>
|
|
121
105
|
<el-table-column
|
|
@@ -166,6 +150,22 @@
|
|
|
166
150
|
</div>
|
|
167
151
|
</div>
|
|
168
152
|
</div>
|
|
153
|
+
|
|
154
|
+
<!-- 计算说明固定底部:有表格内容后再渲染,避免加载时单独成一条窄框 -->
|
|
155
|
+
<div v-if="formulaItems.length && hasDetailContent" class="fpd-formulas" role="note">
|
|
156
|
+
<span class="fpd-formulas__label">计算说明</span>
|
|
157
|
+
<div class="fpd-formulas__list">
|
|
158
|
+
<span
|
|
159
|
+
v-for="(item, idx) in formulaItems"
|
|
160
|
+
:key="idx"
|
|
161
|
+
class="fpd-formulas__item"
|
|
162
|
+
>
|
|
163
|
+
<em class="fpd-formulas__key">{{ item.key }}</em>
|
|
164
|
+
<span class="fpd-formulas__eq">=</span>
|
|
165
|
+
<span class="fpd-formulas__expr">{{ item.expr }}</span>
|
|
166
|
+
</span>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
169
|
</template>
|
|
170
170
|
</div>
|
|
171
171
|
</el-dialog>
|
|
@@ -236,16 +236,17 @@ export default {
|
|
|
236
236
|
default: null
|
|
237
237
|
},
|
|
238
238
|
/**
|
|
239
|
-
*
|
|
239
|
+
* 三区表格统一高度(按 pageSize 撑满),数量少也留白对齐
|
|
240
|
+
* 可传 tableHeight 覆盖
|
|
240
241
|
*/
|
|
241
242
|
tableHeight: {
|
|
242
243
|
type: [Number, String],
|
|
243
|
-
default:
|
|
244
|
+
default: null
|
|
244
245
|
},
|
|
245
|
-
/**
|
|
246
|
+
/** 分区前端分页大小 */
|
|
246
247
|
pageSize: {
|
|
247
248
|
type: Number,
|
|
248
|
-
default:
|
|
249
|
+
default: 5
|
|
249
250
|
}
|
|
250
251
|
},
|
|
251
252
|
data() {
|
|
@@ -274,11 +275,16 @@ export default {
|
|
|
274
275
|
resolvedTop() {
|
|
275
276
|
return this.isNarrow ? '5vh' : this.top
|
|
276
277
|
},
|
|
277
|
-
/**
|
|
278
|
+
/** 三区表格等高:优先用 prop,否则按 pageSize × 行高推算 */
|
|
278
279
|
resolvedTableHeight() {
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
280
|
+
const override = Number(this.tableHeight)
|
|
281
|
+
if (Number.isFinite(override) && override > 0) {
|
|
282
|
+
return this.isNarrow ? Math.min(override, 200) : override
|
|
283
|
+
}
|
|
284
|
+
const size = this.pageSize || 5
|
|
285
|
+
const rowH = this.isNarrow ? 38 : 40
|
|
286
|
+
const headH = this.isNarrow ? 36 : 38
|
|
287
|
+
return headH + size * rowH
|
|
282
288
|
},
|
|
283
289
|
formulaList() {
|
|
284
290
|
if (Array.isArray(this.formulas)) return this.formulas
|
|
@@ -301,13 +307,13 @@ export default {
|
|
|
301
307
|
return (this.summaryColumns && this.summaryColumns.length > 0) ||
|
|
302
308
|
(this.sections && this.sections.length > 0)
|
|
303
309
|
},
|
|
304
|
-
/**
|
|
310
|
+
/** 首次打开尚无数据:用骨架撑高;计算说明不单独先行渲染 */
|
|
305
311
|
showLoadingShell() {
|
|
306
312
|
return this.loading && !this.error && !this.hasDetailContent
|
|
307
313
|
},
|
|
308
314
|
/** 任一分区需要分页时,其余无分页列才占位对齐;全都没有则不占空白 */
|
|
309
315
|
anySectionNeedsPager() {
|
|
310
|
-
const size = this.pageSize ||
|
|
316
|
+
const size = this.pageSize || 5
|
|
311
317
|
return (this.sections || []).some((section) => this.sectionRowCount(section) > size)
|
|
312
318
|
},
|
|
313
319
|
/** 窄屏三区已改为单列,无需为空分页占位 */
|
|
@@ -385,7 +391,7 @@ export default {
|
|
|
385
391
|
pagedRows(section) {
|
|
386
392
|
const rows = section.rows || []
|
|
387
393
|
const page = this.sectionPage(section)
|
|
388
|
-
const size = this.pageSize ||
|
|
394
|
+
const size = this.pageSize || 5
|
|
389
395
|
const start = (page - 1) * size
|
|
390
396
|
return rows.slice(start, start + size)
|
|
391
397
|
},
|
|
@@ -579,6 +585,7 @@ export default {
|
|
|
579
585
|
}
|
|
580
586
|
|
|
581
587
|
.fpd-skeleton__formulas {
|
|
588
|
+
margin-top: auto;
|
|
582
589
|
padding: 8px 12px;
|
|
583
590
|
background: #eef3ff;
|
|
584
591
|
border: 1px solid #d6e0f5;
|
|
@@ -658,23 +665,19 @@ export default {
|
|
|
658
665
|
border-radius: 8px;
|
|
659
666
|
}
|
|
660
667
|
|
|
661
|
-
.fpd-summary__hint {
|
|
662
|
-
display: none;
|
|
663
|
-
}
|
|
664
|
-
|
|
665
668
|
.fpd-sections {
|
|
666
669
|
display: grid;
|
|
667
670
|
grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.05fr) minmax(0, 0.9fr);
|
|
668
671
|
gap: 10px;
|
|
669
|
-
margin-bottom:
|
|
670
|
-
align-items:
|
|
672
|
+
margin-bottom: 10px;
|
|
673
|
+
align-items: stretch;
|
|
671
674
|
}
|
|
672
675
|
|
|
673
676
|
.fpd-section {
|
|
674
677
|
display: flex;
|
|
675
678
|
flex-direction: column;
|
|
676
679
|
min-width: 0;
|
|
677
|
-
|
|
680
|
+
height: 100%;
|
|
678
681
|
border: 1px solid #e5e7eb;
|
|
679
682
|
border-radius: 8px;
|
|
680
683
|
overflow: hidden;
|
|
@@ -706,13 +709,10 @@ export default {
|
|
|
706
709
|
color: #8f959e;
|
|
707
710
|
}
|
|
708
711
|
|
|
709
|
-
.fpd-section__hint {
|
|
710
|
-
display: none;
|
|
711
|
-
}
|
|
712
|
-
|
|
713
712
|
.fpd-section__table-wrap {
|
|
714
|
-
flex:
|
|
713
|
+
flex: 1 1 auto;
|
|
715
714
|
min-width: 0;
|
|
715
|
+
min-height: 0;
|
|
716
716
|
overflow-x: auto;
|
|
717
717
|
overflow-y: hidden;
|
|
718
718
|
-webkit-overflow-scrolling: touch;
|
|
@@ -720,6 +720,7 @@ export default {
|
|
|
720
720
|
|
|
721
721
|
.fpd-section__footer {
|
|
722
722
|
flex-shrink: 0;
|
|
723
|
+
margin-top: auto;
|
|
723
724
|
display: flex;
|
|
724
725
|
justify-content: space-between;
|
|
725
726
|
align-items: center;
|
|
@@ -805,6 +806,11 @@ export default {
|
|
|
805
806
|
border-bottom: none;
|
|
806
807
|
}
|
|
807
808
|
|
|
809
|
+
/* 分区表固定等高后,末行下方有留白,需保留底部分隔线 */
|
|
810
|
+
&.fpd-table--section .el-table__body tr:last-child td.el-table__cell {
|
|
811
|
+
border-bottom: 1px solid #eef0f3;
|
|
812
|
+
}
|
|
813
|
+
|
|
808
814
|
.cell {
|
|
809
815
|
padding: 12px 16px;
|
|
810
816
|
line-height: 22px;
|
|
@@ -834,20 +840,20 @@ export default {
|
|
|
834
840
|
}
|
|
835
841
|
}
|
|
836
842
|
|
|
837
|
-
/*
|
|
843
|
+
/* 分区表行高与汇总表接近,避免过扁难读 */
|
|
838
844
|
::v-deep .fpd-table--section {
|
|
839
845
|
.cell {
|
|
840
|
-
padding-top:
|
|
841
|
-
padding-bottom:
|
|
842
|
-
line-height:
|
|
846
|
+
padding-top: 10px;
|
|
847
|
+
padding-bottom: 10px;
|
|
848
|
+
line-height: 20px;
|
|
843
849
|
}
|
|
844
850
|
|
|
845
851
|
th .cell {
|
|
846
|
-
padding-top:
|
|
847
|
-
padding-bottom:
|
|
852
|
+
padding-top: 9px;
|
|
853
|
+
padding-bottom: 9px;
|
|
848
854
|
}
|
|
849
855
|
|
|
850
|
-
/*
|
|
856
|
+
/* 固定等高后仍隐藏纵向滚动条(分页控制行数) */
|
|
851
857
|
.el-table__body-wrapper {
|
|
852
858
|
overflow-y: hidden !important;
|
|
853
859
|
}
|
|
@@ -903,7 +909,8 @@ export default {
|
|
|
903
909
|
display: flex;
|
|
904
910
|
align-items: center;
|
|
905
911
|
gap: 8px 10px;
|
|
906
|
-
margin-
|
|
912
|
+
margin-top: 0;
|
|
913
|
+
margin-bottom: 0;
|
|
907
914
|
padding: 6px 10px;
|
|
908
915
|
border-radius: 6px;
|
|
909
916
|
background: linear-gradient(90deg, #eef4ff 0%, #f5f8ff 100%);
|
|
@@ -996,28 +1003,14 @@ export default {
|
|
|
996
1003
|
box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
|
|
997
1004
|
}
|
|
998
1005
|
|
|
999
|
-
.fpd-summary__hint,
|
|
1000
|
-
.fpd-section__hint {
|
|
1001
|
-
display: block;
|
|
1002
|
-
padding: 0;
|
|
1003
|
-
font-size: 11px;
|
|
1004
|
-
line-height: 16px;
|
|
1005
|
-
color: #8f959e;
|
|
1006
|
-
font-weight: 400;
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
.fpd-summary__hint {
|
|
1010
|
-
padding: 8px 12px 0;
|
|
1011
|
-
}
|
|
1012
|
-
|
|
1013
1006
|
.fpd-sections {
|
|
1014
1007
|
gap: 12px;
|
|
1015
|
-
margin-bottom:
|
|
1016
|
-
align-items:
|
|
1008
|
+
margin-bottom: 12px;
|
|
1009
|
+
align-items: stretch;
|
|
1017
1010
|
}
|
|
1018
1011
|
|
|
1019
1012
|
.fpd-section {
|
|
1020
|
-
|
|
1013
|
+
height: auto;
|
|
1021
1014
|
border-radius: 10px;
|
|
1022
1015
|
border-color: #e8ebf0;
|
|
1023
1016
|
box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
|
|
@@ -1084,11 +1077,13 @@ export default {
|
|
|
1084
1077
|
.fpd-section__footer {
|
|
1085
1078
|
padding: 9px 12px;
|
|
1086
1079
|
font-size: 12px;
|
|
1080
|
+
justify-content: flex-start;
|
|
1081
|
+
gap: 6px 10px;
|
|
1087
1082
|
}
|
|
1088
1083
|
|
|
1089
1084
|
.fpd-section__footer-values {
|
|
1090
1085
|
font-size: 13px;
|
|
1091
|
-
justify-content: flex-
|
|
1086
|
+
justify-content: flex-start;
|
|
1092
1087
|
}
|
|
1093
1088
|
|
|
1094
1089
|
.fpd-skeleton__formulas {
|
|
@@ -1099,9 +1094,11 @@ export default {
|
|
|
1099
1094
|
|
|
1100
1095
|
.fpd-formulas {
|
|
1101
1096
|
flex-direction: column;
|
|
1097
|
+
align-items: stretch;
|
|
1102
1098
|
gap: 6px;
|
|
1103
1099
|
padding: 8px 10px 8px 12px;
|
|
1104
|
-
margin-
|
|
1100
|
+
margin-top: 0;
|
|
1101
|
+
margin-bottom: 0;
|
|
1105
1102
|
}
|
|
1106
1103
|
|
|
1107
1104
|
.fpd-formulas__label {
|
|
@@ -1111,12 +1108,15 @@ export default {
|
|
|
1111
1108
|
.fpd-formulas__list {
|
|
1112
1109
|
display: grid;
|
|
1113
1110
|
grid-template-columns: 1fr;
|
|
1111
|
+
width: 100%;
|
|
1112
|
+
justify-items: start;
|
|
1114
1113
|
gap: 4px;
|
|
1115
1114
|
}
|
|
1116
1115
|
|
|
1117
1116
|
.fpd-formulas__item {
|
|
1118
1117
|
font-size: 11px;
|
|
1119
1118
|
line-height: 17px;
|
|
1119
|
+
justify-content: flex-start;
|
|
1120
1120
|
|
|
1121
1121
|
&:not(:last-child)::after {
|
|
1122
1122
|
display: none;
|
|
@@ -141,7 +141,7 @@ function buildSections(data = {}) {
|
|
|
141
141
|
],
|
|
142
142
|
rows: saleRows,
|
|
143
143
|
footer: {
|
|
144
|
-
label: '
|
|
144
|
+
label: '合计(含本次)',
|
|
145
145
|
theme: 'purple',
|
|
146
146
|
values: [`金额 ${formatNumber(sumBy(saleRows, 'amount'))}`]
|
|
147
147
|
}
|
|
@@ -161,7 +161,7 @@ function buildSections(data = {}) {
|
|
|
161
161
|
],
|
|
162
162
|
rows: nonSaleRows,
|
|
163
163
|
footer: {
|
|
164
|
-
label: '
|
|
164
|
+
label: '合计(含本次)',
|
|
165
165
|
theme: 'danger',
|
|
166
166
|
values: [
|
|
167
167
|
`数量 ${formatNumber(sumBy(nonSaleRows, 'qty'))}`,
|