cloud-web-corejs 1.1.0-dev.6 → 1.1.0-dev.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.
Files changed (45) hide show
  1. package/package.json +1 -1
  2. package/src/components/VabUpload/view.vue +27 -26
  3. package/src/components/excelImport/index.vue +156 -156
  4. package/src/components/mobile/wf/addTaskUserdialog.vue +23 -3
  5. package/src/components/mobile/wf/content.vue +110 -67
  6. package/src/components/mobile/wf/deleteTaskUserDialog.vue +22 -3
  7. package/src/components/mobile/wf/selectUserDialog.vue +122 -0
  8. package/src/components/mobile/wf/setCandidateDialog.vue +25 -4
  9. package/src/components/mobile/wf/urgingDialog.vue +26 -3
  10. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  11. package/src/components/xform/form-designer/designer.js +36 -52
  12. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +185 -185
  13. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +1 -1
  14. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +2 -2
  15. package/src/components/xform/form-designer/indexMixin.js +25 -0
  16. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +833 -860
  17. package/src/components/xform/form-designer/toolbar-panel/index.vue +874 -874
  18. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  19. package/src/components/xform/form-designer/widget-panel/indexMixin.js +15 -2
  20. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +53 -1
  21. package/src/components/xform/form-render/container-item/list-h5-item.vue +154 -27
  22. package/src/components/xform/form-render/indexMixin.js +23 -3
  23. package/src/components/xform/styles/h5.scss +775 -588
  24. package/src/directive/append-to-body/index.js +48 -0
  25. package/src/index.js +4 -0
  26. package/src/layout/components/Sidebar/default.vue +1655 -1655
  27. package/src/router/index.js +48 -48
  28. package/src/utils/vab.js +1283 -1283
  29. package/src/views/bd/setting/form_template/edit.vue +378 -356
  30. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  31. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  32. package/src/views/bd/setting/form_template/list.vue +304 -303
  33. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  34. package/src/views/bd/setting/form_template/mixins/list.js +748 -721
  35. package/src/views/user/file_view_ins/list.vue +970 -970
  36. package/src/views/user/form/vform/designer.vue +823 -821
  37. package/src/views/user/home/default.vue +1117 -1117
  38. package/src/views/user/home/index.vue +103 -103
  39. package/src/views/user/notify_message/dialog.vue +139 -139
  40. package/src/views/user/outLink/form_view.vue +202 -202
  41. package/src/views/user/outLink/index.vue +110 -110
  42. package/src/views/user/wf/iframe/index.vue +51 -51
  43. package/src/views/user/wf/iframe/index2.vue +64 -64
  44. package/src/views/user/wf/wf_manage/list2.vue +871 -871
  45. package/src/views/user/wf/wf_manage/wfContentDialog.vue +134 -134
@@ -27,9 +27,10 @@ $xformH5HeaderHeight: 38px; // 标题栏
27
27
  $xformH5FooterHeight: 56px; // 底部动作栏
28
28
  $xformH5RowHeight: 48px; // 字段行高
29
29
  $xformH5LabelWidth: 80px; // 标签宽
30
- $xformH5RowBorder: #f3f3f3; // 行分隔线
30
+ $xformH5RowBorder: #f1f1f1; // 行分隔线
31
31
  $xformH5CardRadius: 12px;
32
32
  $xformH5PageBg: #f1f5fb;
33
+ $xformH5Size:14px;
33
34
 
34
35
  /* ============ 块 B:分组卡片(对齐 bill_setting 的 .c-item / .tit) ============ */
35
36
  /* 对手:style.scss:13766 .h5-detail-wrap .h5-item (0,2,0);本方 0,3,0
@@ -41,8 +42,8 @@ $xformH5PageBg: #f1f5fb;
41
42
  .c-item {
42
43
  background: #fff;
43
44
  border-radius: $xformH5CardRadius;
44
- margin: 12px 8px 0;
45
- padding-bottom: 6px;
45
+ margin: 12px 16px 0;
46
+ padding-bottom: 0;
46
47
  overflow: hidden;
47
48
 
48
49
  /* 对手:style.scss:13771 .h5-detail-wrap .h5-item .h5-title (0,3,0);本方 0,4,0
@@ -51,11 +52,11 @@ $xformH5PageBg: #f1f5fb;
51
52
  .tit {
52
53
  line-height: 45px;
53
54
  padding: 0 12px;
54
- border-bottom: 1px solid #f6f6f6;
55
+ border-bottom:none;
55
56
  position: relative;
56
57
 
57
58
  b {
58
- font-size: 14px;
59
+ font-size: 15px;
59
60
  font-weight: 600;
60
61
  color: #323232;
61
62
  }
@@ -116,11 +117,17 @@ $xformH5PageBg: #f1f5fb;
116
117
  给它加 12px 不会让任何字段受益,只会把里面的卡片整体往里缩一圈,
117
118
  结果是同一屏里 h5-card 里的卡片比流程面板窄 30px、左右对不齐。 */
118
119
  .xform-h5 .h5-detail-wrap .h5-item .h5-form-box {
119
- padding: 12px;
120
-
120
+ padding:0 12px;
121
+ .item{
122
+ background: #FFF;
123
+ border-color: $xformH5RowBorder;
124
+ }
121
125
  > .form-widget-list {
122
126
  display: flex;
123
127
  flex-wrap: wrap;
128
+ .h5-header{
129
+ display: none;
130
+ }
124
131
  }
125
132
  }
126
133
 
@@ -156,9 +163,7 @@ $xformH5PageBg: #f1f5fb;
156
163
  align-items: flex-start;
157
164
  position: relative;
158
165
  min-height: $xformH5RowHeight;
159
- padding: 6px 0;
160
166
  margin-bottom: 0;
161
- border-bottom: 1px solid $xformH5RowBorder;
162
167
  }
163
168
 
164
169
  /* 对手:style.scss:13854 `.h5-detail-wrap .h5-item .el-form-item__label` (0,3,0)
@@ -170,7 +175,7 @@ $xformH5PageBg: #f1f5fb;
170
175
  line-height: 1.4;
171
176
  height: auto;
172
177
  overflow: hidden;
173
- color: #808080;
178
+ color: #666666;
174
179
  text-align: left !important;
175
180
 
176
181
  /* 标签后自动补冒号,对齐 bill_setting form-table 的 th::after。
@@ -178,13 +183,13 @@ $xformH5PageBg: #f1f5fb;
178
183
  &::after {
179
184
  display: inline !important;
180
185
  content: ":";
186
+ margin-left:2px;
181
187
  }
182
188
  }
183
189
 
184
190
  .el-form-item > .el-form-item__content {
185
191
  flex: 1;
186
192
  line-height: 1.4;
187
- text-align: right;
188
193
  word-break: break-word;
189
194
  /* el-form-item 按 label-width 写的内联 margin-left 在 flex 行里是多余的左空白:
190
195
  值是右对齐的所以看不出来,但它白白压缩可用宽度、让长值提前折行。
@@ -194,9 +199,6 @@ $xformH5PageBg: #f1f5fb;
194
199
 
195
200
  /* 卡片里最后一行不留分隔线。:last-child 计入 class 列,本条 (0,5,0)
196
201
  高于上面 .el-form-item 的 border-bottom (0,4,0)。 */
197
- &:last-child .el-form-item {
198
- border-bottom: none;
199
- }
200
202
  }
201
203
 
202
204
  /* ============ 块 C1:表格布局(.table-layout)下退回块 C 的 flex 行 ============ */
@@ -229,7 +231,7 @@ $xformH5PageBg: #f1f5fb;
229
231
 
230
232
  .el-form-item {
231
233
  display: flex;
232
- align-items: flex-start;
234
+ align-items: center;
233
235
 
234
236
  > .el-form-item__label,
235
237
  > .el-form-item__content {
@@ -263,8 +265,14 @@ $xformH5PageBg: #f1f5fb;
263
265
  .xform-h5 .table-layout.table-d-box {
264
266
  /* 解除 w1~w4 的 PC 死宽。设计器里显式配了 cellWidth 的单元格走内联
265
267
  style="width:xx !important",优先级最高,不受这条影响,按配置生效。 */
266
- > tbody > tr > td.table-cell {
267
- width: auto !important;
268
+ > tbody > tr {
269
+ &:last-child{
270
+ .field-wrapper.h5-field .el-form-item{border-bottom:none}
271
+ }
272
+ > td.table-cell {
273
+ width: auto !important;
274
+ border:none !important
275
+ }
268
276
  }
269
277
 
270
278
  /* 一行两列(两个 td.w1 并排)时,左列的值右对齐后正好停在右列的左边界上,
@@ -272,23 +280,24 @@ $xformH5PageBg: #f1f5fb;
272
280
  对齐 bill_setting form-table 的处理:它用 `th:nth-child(3){padding-left:12px}`
273
281
  让第二列的标签让出间隔。这里把间隔加在单元格上而不是标签上 —— 标签有 80px
274
282
  定宽,加内边距会挤掉字数(全局 box-sizing 是 border-box)。 */
275
- > tbody > tr > td.table-cell + td.table-cell {
283
+ > tbody > tr > td.table-cell + td.table-cell .el-form-item{
276
284
  padding-left: 12px;
277
285
  }
278
286
 
279
287
  td.table-cell .field-wrapper.h5-field .el-form-item {
280
288
  /* 断链场景下 element 默认标签是右对齐的,这里兜住 */
289
+ border-bottom:solid 1px $xformH5RowBorder;
281
290
  > .el-form-item__label {
282
291
  text-align: left !important;
292
+ font-size: $xformH5Size;
283
293
  }
284
294
 
285
295
  > .el-form-item__content {
286
296
  width: auto !important; // 压对手二的 !important;本方 (0,7,1)+!important
287
- text-align: right;
288
-
297
+ text-align: right;
289
298
  /* 对手一 (0,3,2),本方 (0,8,2) */
290
299
  span {
291
- text-align: right;
300
+ font-size:$xformH5Size;
292
301
  }
293
302
  }
294
303
  }
@@ -408,11 +417,12 @@ $xformH5PageBg: #f1f5fb;
408
417
  /* container-item-wrapper 那层,高度要能传下去 */
409
418
  .container-wrapper {
410
419
  height: 100%;
420
+ width:100%;
411
421
  }
412
422
 
413
423
  .h5-detail-wrap {
414
- display: flex;
415
- flex-direction: column;
424
+ //display: flex;
425
+ //flex-direction: column; 弹框在里面会有问题
416
426
  height: 100%;
417
427
  min-height: 0; // 允许在 flex 父级下收缩
418
428
  /* 压掉 style.scss:13765 的 padding-bottom:68px(那是给 fixed 底栏让位用的) */
@@ -421,7 +431,7 @@ $xformH5PageBg: #f1f5fb;
421
431
 
422
432
  .h5-header {
423
433
  flex: none;
424
- height: $xformH5HeaderHeight;
434
+ height: $xformH5HeaderHeight !important;
425
435
  line-height: $xformH5HeaderHeight;
426
436
  }
427
437
 
@@ -436,7 +446,9 @@ $xformH5PageBg: #f1f5fb;
436
446
  卡片是 margin:12px 8px 0(只有上间距),末尾这一格只能由滚动区补。
437
447
  取 12px 与卡片间距同口径。 */
438
448
  padding-bottom: 12px;
449
+ height:calc(100% - $xformH5FooterHeight - $xformH5HeaderHeight) !important;
439
450
 
451
+ -webkit-overflow-scrolling:touch;
440
452
  /* ★ 字段卡片那组的高度必须由内容决定。
441
453
  detail-h5-item.vue 的 scoped 样式里有一条从设计器画布抄来的
442
454
  `.grid-container .form-widget-list { height: 100% }`,而该组件的根节点
@@ -449,12 +461,13 @@ $xformH5PageBg: #f1f5fb;
449
461
  > .form-widget-list {
450
462
  height: auto;
451
463
  }
464
+
452
465
  }
453
466
 
454
467
  .h5-fixed-bottom-btns {
455
468
  /* 压掉 style.scss:10246 附近的 position:fixed 与 height:56px!important。
456
469
  单行固定高:超出三个的按钮进图标下拉,不换行。 */
457
- position: static !important;
470
+ //position: static !important;
458
471
  flex: none;
459
472
  height: $xformH5FooterHeight !important;
460
473
  }
@@ -565,60 +578,16 @@ $xformH5PageBg: #f1f5fb;
565
578
  }
566
579
  }
567
580
 
568
- /* ============ 明细详情弹框:铺满视口 ============ */
569
- /* 这个弹框是 :modal="false"(无遮罩),高度又只由内容撑开,
570
- 于是底部动作栏(通过/驳回/中断)会从弹框下方露出来,看着像两层界面。
571
- 让它铺满一屏盖住底栏。作用域限定在 .xform-h5 内,不影响 bill_setting
572
- 那边同样用 .h5view-dialog 的弹框(弹框未 append-to-body,DOM 就在本作用域里)。 */
573
- .xform-h5 .el-dialog__wrapper .el-dialog.h5view-dialog {
574
- margin: 0 !important;
575
- /* 同上:手机浏览器地址栏占位时 100vh 比可视区高,弹框底部的「关闭」会被顶出屏幕。
576
- dvh 打头、vh 兜底,见块 G 的说明。 */
577
- height: 100vh;
578
- height: 100dvh;
579
- display: flex;
580
- flex-direction: column;
581
- border-radius: 0;
582
-
583
- > .el-dialog__body {
584
- flex: 1;
585
- min-height: 0;
586
- overflow-y: auto;
587
- -webkit-overflow-scrolling: touch;
588
- }
589
-
590
- /* 内容区的 height 是模板里的内联样式,只能用 !important 压掉,
591
- 改由上面的 flex 决定高度 */
592
- .cont {
593
- height: auto !important;
594
- }
595
-
596
- /* 底部「关闭」:与底部动作栏同款胶囊,铺满一行 */
597
- > .el-dialog__footer {
598
- flex: none;
599
- padding: 8px 13px;
600
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.06);
601
-
602
- .button-sty,
603
- .el-button {
604
- width: 100%;
605
- height: 40px;
606
- border-radius: 30px;
607
- padding: 0;
608
- font-size: 13px;
609
-
610
- i {
611
- margin-right: 3px;
612
- }
613
- }
614
- }
615
- }
616
581
 
617
582
  /* ============ 明细行的「查看」角标 ============ */
618
583
  /* 对齐 bill_setting 的 .pro-item .t::after:主色淡底圆钮 + 右向箭头,
619
584
  提示这一行可以点进详情。与 itemStyle 无关,明细行一律有。
620
585
  对手 .h5-list-box .item (0,2,0);本方 (0,3,0)。 */
621
586
  .xform-h5 .h5-list-box .item {
587
+ margin-bottom:12px;
588
+ &:last-child{
589
+ margin-bottom:12px;
590
+ }
622
591
  .h5-item-arrow {
623
592
  position: absolute;
624
593
  right: 12px;
@@ -690,11 +659,14 @@ $xformH5PageBg: #f1f5fb;
690
659
  列间也是 14px,省出来的 14px 全给值。 */
691
660
  padding-left: 7px;
692
661
  padding-right: 7px;
662
+ padding-bottom:0;
663
+ font-size: 13px;
693
664
  }
694
665
 
695
666
  .xform-h5 .h5-list-box .item .t2 > dl {
696
667
  padding-left: 7px;
697
668
  padding-right: 7px;
669
+ margin-top:0;
698
670
  > div {
699
671
  align-items: flex-start; // 值折行时标签跟着顶对齐,别居中
700
672
  }
@@ -710,7 +682,8 @@ $xformH5PageBg: #f1f5fb;
710
682
  > div > dd {
711
683
  flex: 1;
712
684
  min-width: 0; // 不写这行,长值会撑破行而不是折行
713
- text-align: right;
685
+ //text-align: right;
686
+ margin: 0;
714
687
  word-break: break-word;
715
688
  color: #323232; // 值加深、标签留灰,同块 C 的 #808080 / 默认色关系
716
689
  }
@@ -744,6 +717,7 @@ $xformH5PageBg: #f1f5fb;
744
717
  /* dd 里是真控件的那份(「明细详情」弹框,list-h5-item.vue:478)。
745
718
  列表行本身只出纯文本,这一段只对弹框生效。 */
746
719
  .xform-h5 .h5-list-box .item .t2 > dl > div > dd {
720
+ margin:0;
747
721
  /* 压 style.scss:14112 的 width:calc(100vw - 159px),本方 (0,5,2) > (0,4,1) */
748
722
  .field-wrapper.h5-field {
749
723
  display: block;
@@ -771,32 +745,9 @@ $xformH5PageBg: #f1f5fb;
771
745
 
772
746
  .field-wrapper.h5-field .el-form-item > .el-form-item__content {
773
747
  margin-left: 0 !important;
774
- text-align: right;
775
748
  }
776
749
  }
777
750
 
778
- /* 「明细详情」弹框里那份 list 保持一行一个:那里的 dd 放的是真控件(输入框、
779
- 选择器、附件),塞进半宽格子就没法用了;它也是详情视角,不需要压缩行数。
780
- 本方 (0,6,1) > 上面两列那条 (0,4,1)。 */
781
- .xform-h5 .h5view-dialog .h5-list-box .item .t2 > dl {
782
- width: 100%;
783
- }
784
-
785
- /* 弹框那份 list 另有一条更狠的写死宽度:
786
- `body .grid-height .dialog-style.h5view-dialog .el-dialog__body > .cont >
787
- .h5-list-box .t2 dl .field-wrapper` (0,8,2)(style.scss:3861),
788
- 上面那条 (0,5,2) 压不过,必须单独补到 (0,9,1)。 */
789
- .xform-h5
790
- .dialog-style.h5view-dialog
791
- .el-dialog__body
792
- > .cont
793
- > .h5-list-box
794
- .item
795
- .t2
796
- > dl
797
- .field-wrapper {
798
- width: auto;
799
- }
800
751
 
801
752
  /* ============ 块 I:明细行卡片皮肤(list-h5 的 itemStyle=card) ============ */
802
753
  /* 现状 .h5-list-box .item(style.scss:14029)已经是白底+radius8+1px边框+左侧竖条的卡片,
@@ -867,7 +818,7 @@ $xformH5PageBg: #f1f5fb;
867
818
 
868
819
  > b {
869
820
  font-size: 14px;
870
- font-weight: 600;
821
+ font-weight: 400;
871
822
  word-break: break-word; // 主字段常是长编码,别撑破卡片
872
823
  }
873
824
 
@@ -939,7 +890,7 @@ $xformH5PageBg: #f1f5fb;
939
890
  display: block !important;
940
891
  float: none !important;
941
892
  width: 100%;
942
- margin: 0 0 8px;
893
+ margin: 0 0 12px;
943
894
  }
944
895
 
945
896
  .upload-box {
@@ -958,7 +909,7 @@ $xformH5PageBg: #f1f5fb;
958
909
  padding: 8px;
959
910
  overflow: visible;
960
911
  background: #fff;
961
- border: solid 1px #f0f1f1;
912
+ border: solid 1px $xformH5RowBorder;
962
913
  border-radius: 10px;
963
914
  transition: none; // element 的 item 有 transform 过渡,行式下没意义还会闪
964
915
 
@@ -1130,15 +1081,21 @@ $xformH5PageBg: #f1f5fb;
1130
1081
  只作用于 el-button 的直接子 i(element 把 icon 渲染成按钮的第一个子元素)。
1131
1082
  底栏「更多」下拉的触发器是裸 <i class="h5-more-icon">、不在 el-button 里,不受影响。 */
1132
1083
  .xform-h5 {
1133
- .pop-box .el-button > i,
1134
- .pop-tipsBox .el-button > i,
1135
- .pop-screen-box .el-button > i,
1136
1084
  .h5-detail-wrap .h5-fixed-bottom-btns .el-button > i,
1137
1085
  .el-dialog.h5view-dialog > .el-dialog__footer .el-button > i {
1138
1086
  display: none;
1139
1087
  }
1140
1088
  }
1141
1089
 
1090
+ /* 同上,但这两条不能收在 .xform-h5 里:.h5-pop-dialog 那 5 个弹层、
1091
+ .h5-pop-tips 那 5 个确认框都已挂到 document.body 下。
1092
+ .h5-pop-dialog 里再弹的高级筛选抽屉(.pop-screen-box)被后代选择器一并覆盖,
1093
+ 不必单列 —— 也正好不会误伤手写移动页里那些独立使用的 .pop-screen-box。 */
1094
+ .h5-pop-dialog .el-button > i,
1095
+ .pop-tipsBox.h5-pop-tips .el-button > i {
1096
+ display: none;
1097
+ }
1098
+
1142
1099
  /* ============ 块 L:移动版流程(wf)面板 ============ */
1143
1100
  /* 来源:resources/css/h5.scss —— 那份不随包发布、xform 引不到,故把
1144
1101
  components/mobile/wf/content.vue 实际用到的类搬进包内。
@@ -1162,8 +1119,8 @@ $xformH5PageBg: #f1f5fb;
1162
1119
 
1163
1120
  > .t,
1164
1121
  .m2 .t {
1165
- color: $baseColor;
1166
- margin-top: 16px;
1122
+ color: #666;
1123
+ padding:8px;
1167
1124
 
1168
1125
  &:before {
1169
1126
  content: "";
@@ -1283,63 +1240,222 @@ $xformH5PageBg: #f1f5fb;
1283
1240
  }
1284
1241
  }
1285
1242
 
1286
- /* ---- 全屏弹层(.pop-box)---- */
1287
- /* 用这个根类的一共 7 个:流程图预览、任务情况预览(这两个是 mobile/wf/content.vue
1288
- 模板里内联写的,见该文件 showPreviewDialog / showRenwuDialog 两段)、
1289
- 选用户 views/mobile/user/user/dialog.vue、加签 addTaskUserdialog、减签
1290
- deleteTaskUserDialog、催办 urgingDialog、修改候选人 setCandidateDialog、
1291
- 修改单据 wfModifyDialog。它们共用同一批类名,所以一次搬齐。
1292
1243
 
1293
- 原规则整段嵌在 resources/css/h5.scss 的 `.h5-box` 下,而 xform H5 的根类是
1294
- .xform-h5、全项目没有任何 .vue 输出过 h5-box —— 一条都命中不了,表现是列表
1295
- 退化成裸文字、搜索行和已选区完全没有版式。(对比 .pop-tipsBox 是顶层选择器,
1296
- 所以通过/驳回/转办那几个小确认框看着正常,一点「选用户」就裸。)
1297
1244
 
1298
- 骨架高度不抄原文的 calc(100vh - 102px / 138px / 151px) 那套(值随有没有搜索行
1299
- 而变,脆),一律 flex + min-height:0,与块 A、块 G 同口径。content.vue 那两处
1300
- .flex 上的内联 height:calc(100vh - 38px) 不用管:flex-basis:0% 会接管主轴尺寸。 */
1301
- .pop-box {
1245
+ }
1246
+
1247
+ /* ---- 确认/表单提示框(通过、驳回、中断、转办、加签)---- */
1248
+ /* ★ 顶层选择器,不能收回 .xform-h5 里:这 5 个已改走 v-append-to-body,
1249
+ 节点在 document.body 下,带 .xform-h5 前缀的规则一条都命中不了。
1250
+ 与上面的 .h5-pop-dialog 同一个道理。
1251
+
1252
+ ★ 但也不能只写 .pop-tipsBox:confirmDialog / baseAlert / errorMsg 的移动端分支
1253
+ 用的是同一个类名,而且它们本来就挂在 body 上。只写 .pop-tipsBox(0,1,0)会和
1254
+ 各应用 resources/css/h5.scss 里那条同名顶层规则拼加载顺序,把那三个的样子也一起
1255
+ 改掉。所以多挂一个 .h5-pop-tips 作锚点,选择器权重(0,2,0)与改造前的
1256
+ `.xform-h5 .pop-tipsBox` 完全相同,命中范围也仍然只有这 5 个。
1257
+
1258
+ 注意:.icon 沿用 resources/images 下的图标,`~@/` 在消费应用里解析到它自己的
1259
+ src/resources/images —— 该目录同样不在 package.json files 内,属隐式依赖。
1260
+ 消费应用现有的 h5.scss 已引用同一批图,故风险可控;若要彻底解耦可换字体图标。 */
1261
+ .pop-tipsBox.h5-pop-tips {
1262
+ position: relative;
1263
+ &:before {
1264
+ content: "";
1302
1265
  position: fixed;
1303
1266
  top: 0;
1304
1267
  right: 0;
1305
1268
  bottom: 0;
1306
1269
  left: 0;
1307
- background: #f6f6f6;
1308
- z-index: 99;
1270
+ background: rgba(0, 0, 0, 0.4);
1271
+ z-index: 998;
1272
+ }
1309
1273
 
1310
- /* 骨架:标题栏 / 搜索行 / 底部按钮条 flex:none,中间那段独占剩余高度并内部滚动 */
1311
- > div {
1312
- display: flex;
1313
- flex-direction: column;
1314
- height: 100%;
1274
+ > div {
1275
+ position: fixed;
1276
+ top: 24%;
1277
+ left: 32px;
1278
+ right: 32px;
1279
+ box-shadow: 0 0 14px rgba(0, 0, 0, 0.16);
1280
+ border-radius: 18px;
1281
+ padding: 68px 16px 18px;
1282
+ text-align: center;
1283
+ z-index: 999;
1284
+ background-color: #fff;
1285
+ background-size: 100% auto;
1286
+ border: solid 2px #fff;
1287
+
1288
+ .icon {
1289
+ background: url(~@/resources/images/icon-tips.png) no-repeat center;
1290
+ background-size: cover;
1291
+ position: absolute;
1292
+ top: -19px;
1293
+ left: 50%;
1294
+ margin-left: -34px;
1295
+ width: 68px;
1296
+ height: 68px;
1297
+ border-radius: 50%;
1298
+ border: solid 2px #fff;
1315
1299
  }
1316
1300
 
1317
- .header-box {
1318
- flex: none;
1319
- position: relative;
1320
- background-color: #fff;
1321
- text-align: center;
1322
- height: $xformH5HeaderHeight;
1323
- line-height: $xformH5HeaderHeight;
1324
- font-size: 16px;
1325
- color: #212121;
1326
- border-bottom: solid 1px #f1f6fc;
1301
+ .cont {
1302
+ padding: 0 0 18px;
1327
1303
 
1328
- .back {
1329
- position: absolute;
1330
- right: 14px;
1331
- top: 50%;
1332
- margin-top: -10px;
1333
- line-height: 20px;
1334
- font-size: 20px;
1304
+ .name {
1305
+ font-weight: 600;
1306
+ font-size: 18px;
1307
+ margin-bottom: 24px;
1335
1308
  }
1336
1309
 
1337
- /* 「修改单据 节点:xx」这类副标题 */
1338
- > span {
1339
- margin: 0 8px;
1310
+ /* max-height + overflow:auto 是给「自定义确认文案」这类可能很长的内容留的
1311
+ (提醒内容、脚本里配的提示都走这里)。但确认框里多数只有一行短句,
1312
+ 真机 WebView 又是经典滚动条(不像桌面那样会自动淡出),于是「您确定要
1313
+ 中断流程吗?」这种一行字旁边也挂着一条灰色滚动条。
1314
+ 保留可滚动(长文案照样能滑),只把滚动条本身藏掉 —— 移动端本来就该是
1315
+ 无痕滚动。 */
1316
+ .txt,
1317
+ .txt2 {
1318
+ overflow: auto;
1319
+ word-break: break-word;
1320
+ scrollbar-width: none; // Firefox
1321
+ -ms-overflow-style: none; // 旧 Edge/IE
1322
+ text-align:left;
1323
+ font-size:13px;
1324
+ &::-webkit-scrollbar {
1325
+ display: none;
1326
+ }
1327
+ }
1328
+
1329
+ .txt {
1330
+ max-height: 100px;
1340
1331
  }
1332
+
1333
+ .txt2 {
1334
+ max-height: 200px;
1335
+ }
1336
+
1337
+ .form-box {
1338
+ border: solid 1px #dcdcdc;
1339
+ padding: 0 12px 10px;
1340
+ border-radius: 10px;
1341
+ margin-top: -8px;
1342
+ text-align:left;
1343
+ .el-form-item .el-form-item__label{
1344
+ padding-bottom:0;
1345
+ }
1346
+ .line {
1347
+ border: solid 1px #e8e8e8;
1348
+ }
1349
+ .el-input{width:100% !important}
1350
+ }
1351
+ }
1352
+
1353
+ .btns {
1354
+ display: flex;
1355
+
1356
+ .btn {
1357
+ flex: 1;
1358
+ height: 40px;
1359
+ border-radius: 12px;
1360
+
1361
+ &.el-button--primary.is-plain {
1362
+ border-color: $baseColor;
1363
+ }
1364
+ }
1365
+ }
1366
+ }
1367
+
1368
+ &.error > div .icon {
1369
+ background-image: url(~@/resources/images/icon-error.png);
1370
+ border-color: #fff;
1371
+ }
1372
+ }
1373
+
1374
+ /* ============ 页面底色 ============ */
1375
+ .xform-h5 .h5-detail-wrap {
1376
+ background: $xformH5PageBg;
1377
+ }
1378
+
1379
+ /* ---- 全屏弹层(.h5-pop-dialog)---- */
1380
+ /* 用这个根类的一共 5 个,都在 components/mobile/wf/ 下:选用户 selectUserDialog、
1381
+ 加签 addTaskUserdialog、减签 deleteTaskUserDialog、催办 urgingDialog、
1382
+ 修改候选人 setCandidateDialog。它们共用同一批类名,所以一次搬齐。
1383
+ (流程图预览、任务情况预览是 content.vue 模板里内联写的 el-dialog,走的是
1384
+ .h5view-dialog,不在这一段。同目录的 wfModifyDialog 仍是 .pop-box 就地渲染——
1385
+ H5 不需要「修改单据」,那个只从手写移动页进,样式也走各应用自己的 h5.scss。)
1386
+
1387
+ ★ 这一段必须是顶层选择器,不能收进 .xform-h5 里。这 5 个已经改成
1388
+ el-dialog + append-to-body,节点挂在 document.body 下、不在 .xform-h5 子树里,
1389
+ 写成 `.xform-h5 .pop-box` 一条都命中不了 —— 与它们最初挂在从不存在的 `.h5-box`
1390
+ 下、表现为「列表退化成裸文字」是同一类事故。同理见下方 .h5view-dialog。
1391
+
1392
+ 骨架高度不抄原文的 calc(100vh - 102px / 138px / 151px) 那套(值随有没有搜索行
1393
+ 而变,脆),一律 flex + min-height:0,与块 A、块 G 同口径。content.vue 那两处
1394
+ .flex 上的内联 height:calc(100vh - 38px) 不用管:flex-basis:0% 会接管主轴尺寸。 */
1395
+ .el-dialog.h5-pop-dialog {
1396
+ /* 外层 .el-dialog__wrapper 已经是铺满视口的 fixed,这里用 absolute 贴着它定位,
1397
+ 几何与改造前的 `position:fixed; top:38px; bottom:55px` 完全一致:
1398
+ 顶部让出 H5 页头、底部让出审批动作栏。
1399
+ z-index 不再手写 —— 由 element 的 PopupManager 给 wrapper 递增分配,
1400
+ 改造前 99 / 内联 zIndex 两套值互相打架的问题一并消掉。 */
1401
+ position: absolute;
1402
+ top: 38px;
1403
+ right: 0;
1404
+ bottom: 55px;
1405
+ left: 0;
1406
+ width: 100% !important;
1407
+ margin: 0 !important;
1408
+ background: #f6f6f6;
1409
+ border-radius: 0;
1410
+ box-shadow: none;
1411
+ display: flex;
1412
+ flex-direction: column;
1413
+
1414
+ /* 标题和关闭按钮都在自己的 .header-box 里,el-dialog 自带的表头整条不要 */
1415
+ > .el-dialog__header {
1416
+ display: none;
1417
+ }
1418
+
1419
+ /* body 顶掉 element 的 30px 20px 内边距,只当骨架的承载层 */
1420
+ > .el-dialog__body {
1421
+ flex: 1;
1422
+ min-height: 0;
1423
+ padding: 0;
1424
+ color: inherit;
1425
+ font-size: inherit;
1426
+ }
1427
+
1428
+ /* 骨架:标题栏 / 搜索行 / 底部按钮条 flex:none,中间那段独占剩余高度并内部滚动 */
1429
+ > .el-dialog__body > div {
1430
+ display: flex;
1431
+ flex-direction: column;
1432
+ height: 100%;
1433
+ }
1434
+
1435
+ .header-box {
1436
+ flex: none;
1437
+ position: relative;
1438
+ background-color: #fff;
1439
+ text-align: center;
1440
+ height: $xformH5HeaderHeight;
1441
+ line-height: $xformH5HeaderHeight;
1442
+ font-size: 16px;
1443
+ color: #212121;
1444
+ border-bottom: solid 1px #f1f6fc;
1445
+
1446
+ .back {
1447
+ position: absolute;
1448
+ right: 14px;
1449
+ top: 50%;
1450
+ margin-top: -10px;
1451
+ line-height: 20px;
1452
+ font-size: 20px;
1341
1453
  }
1342
1454
 
1455
+ /* 「修改单据 — 节点:xx」这类副标题 */
1456
+ > span {
1457
+ margin: 0 8px;
1458
+ }
1343
1459
  /* 搜索行(选用户 / 加签):输入框 + 右侧「高级筛选」 */
1344
1460
  .search-H5box {
1345
1461
  flex: none;
@@ -1431,562 +1547,633 @@ $xformH5PageBg: #f1f5fb;
1431
1547
  overflow-y: auto;
1432
1548
  }
1433
1549
 
1434
- .flex {
1435
- display: flex;
1436
- flex-direction: column;
1437
- flex: 1;
1438
- min-height: 0;
1550
+ }
1439
1551
 
1440
- /* 可滚动的候选列表 */
1441
- .checkbox-all_list {
1442
- flex: 1;
1443
- min-height: 0;
1444
- /* 只放开纵向。写成 overflow:auto 时横向也可滚,卡片里一旦有超长内容
1445
- (用户资料的「地址」字段存的是一整条图片 URL)就会拖出一条横向滚动条。 */
1446
- overflow-y: auto;
1447
- overflow-x: hidden;
1448
- padding: 0 12px;
1552
+ /* 搜索行(选用户 / 加签):输入框 + 右侧「高级筛选」 */
1553
+ .search-H5box {
1554
+ flex: none;
1555
+ position: relative;
1556
+ display: flex;
1557
+ padding: 8px 16px 0;
1449
1558
 
1450
- .order-item {
1559
+ .txt {
1560
+ flex: 1;
1561
+ position: relative;
1562
+ height: 38px;
1451
1563
  background: #fff;
1564
+ border: solid 1px #e4e4e4;
1565
+ border-radius: 38px 0 0 38px;
1452
1566
 
1453
- .is-checked {
1454
- position: absolute;
1455
- right: 0;
1456
- top: 0;
1457
- width: 62px;
1458
- height: 22px;
1459
- line-height: 20px;
1460
- text-align: center;
1567
+ .el-input {
1568
+ width: 100% !important;
1569
+ }
1570
+
1571
+ .el-input__inner {
1572
+ height: 38px !important;
1573
+ width: 100%;
1574
+ border: none;
1575
+ background: none;
1576
+ line-height: 38px;
1577
+ padding-left: 39px;
1461
1578
  font-size: 13px;
1462
- color: #fff;
1463
- background: #e2e2e2;
1464
- border: solid 1px #dcdcdc;
1465
- border-radius: 0 8px 0 6px;
1579
+ }
1466
1580
 
1467
- i {
1468
- margin-right: 3px;
1469
- font-size: 13px;
1470
- }
1581
+ /* 放大镜挪到左侧(element 默认在右) */
1582
+ .el-input__suffix {
1583
+ position: absolute;
1584
+ left: 12px;
1585
+ right: inherit;
1586
+ top: 7px;
1587
+ width: 20px;
1588
+ transform: inherit !important;
1471
1589
  }
1472
1590
 
1473
- &.on {
1474
- border: solid 1px $baseColor;
1591
+ .el-input-group__append {
1592
+ border: none;
1593
+ background: none;
1475
1594
 
1476
- .is-checked {
1477
- border-color: $baseColor;
1595
+ .el-button {
1596
+ border: none;
1478
1597
  background: $baseColor;
1598
+ color: #fff;
1599
+ width: 53px;
1600
+ height: 30px;
1601
+ padding: 0;
1602
+ position: absolute;
1603
+ right: 4px;
1604
+ top: 4px;
1605
+ /* element 给 .el-input-group__append .el-button 定了 margin:-10px -20px,
1606
+ 绝对定位后这对负边距会把按钮整体往右上顶出去(实测右溢 16px、上溢
1607
+ 5px,正好压在「高级筛选」上)。原文是用 right:26px/top:14px 反向补
1608
+ 偿的,这里直接清零,right/top 才是所见即所得。 */
1609
+ margin: 0;
1610
+ border-radius: 30px;
1611
+ outline: none;
1612
+ font-size: 13px;
1479
1613
  }
1480
1614
  }
1481
1615
  }
1482
- }
1483
1616
 
1484
- /* 已选区(底部固定,不滚) */
1485
- .checkbox-all {
1486
- flex: none;
1487
- position: relative;
1488
- min-height: 80px;
1489
- padding: 0 12px 8px;
1490
- background: #fff;
1491
- box-shadow: 0 -3px 4px rgba(0, 0, 0, 0.06);
1492
-
1493
- .ca-t {
1494
- margin: 8px 0;
1495
- font-size: 14px;
1496
- font-weight: 600;
1497
- }
1498
-
1499
- .ca-c span {
1500
- display: inline-block;
1501
- position: relative;
1502
- height: 24px;
1503
- line-height: 24px;
1504
- padding: 0 28px 0 2px;
1505
- margin: 4px 10px 4px 0;
1617
+ .icon-screen {
1618
+ flex: none;
1619
+ height: 38px;
1620
+ line-height: 38px;
1621
+ padding: 0 10px;
1506
1622
  font-size: 13px;
1507
1623
  color: $baseColor;
1508
- border: solid 1px $baseColor;
1509
- border-radius: 4px;
1624
+ background: transparentize($baseColor, 0.88);
1625
+ border: solid 1px #e4e4e4;
1626
+ border-left: none;
1627
+ border-radius: 0 10px 10px 0;
1510
1628
 
1511
1629
  i {
1512
- position: absolute;
1513
- top: 0;
1514
- right: 0;
1515
- width: 24px;
1516
- height: 24px;
1517
- line-height: 24px;
1518
- text-align: center;
1519
- background: transparentize($baseColor, 0.91);
1630
+ margin-right: 5px;
1631
+ font-size: 14px;
1520
1632
  }
1521
1633
  }
1522
1634
  }
1523
1635
 
1524
- .form-box {
1636
+ /* 修改单据:表单直接挂在骨架下,不套 .flex */
1637
+ > .el-dialog__body > div > .form-box {
1638
+ flex: 1;
1639
+ min-height: 0;
1640
+ overflow-y: auto;
1641
+ }
1642
+
1643
+ .flex {
1525
1644
  display: flex;
1526
1645
  flex-direction: column;
1527
1646
  flex: 1;
1528
- overflow: hidden;
1529
-
1530
- .tit {
1531
- margin: 8px 12px;
1532
- background: rgba(51, 106, 153, 0.1);
1533
- border-radius: 11px;
1534
- padding: 10px 12px;
1535
- font-size: 13px;
1536
- color: $baseColor;
1647
+ min-height: 0;
1537
1648
 
1538
- &:before {
1539
- content: "";
1540
- width: 5px;
1541
- height: 5px;
1542
- background: $baseColor;
1543
- border-radius: 50%;
1544
- vertical-align: middle;
1545
- margin-right: 5px;
1546
- display: inline-block;
1547
- }
1649
+ /* 可滚动的候选列表 */
1650
+ .checkbox-all_list {
1651
+ flex: 1;
1652
+ min-height: 0;
1653
+ /* 只放开纵向。写成 overflow:auto 时横向也可滚,卡片里一旦有超长内容
1654
+ (用户资料的「地址」字段存的是一整条图片 URL)就会拖出一条横向滚动条。 */
1655
+ overflow-y: auto;
1656
+ overflow-x: hidden;
1657
+ padding: 0 12px;
1548
1658
 
1549
- > span {
1550
- vertical-align: middle;
1551
- }
1552
- }
1553
- }
1554
- }
1659
+ .order-item {
1660
+ background: #fff;
1555
1661
 
1556
- /* 按钮口径与块 H 的底部动作栏、块 G 的明细详情弹框页脚保持一致(40px 高胶囊)。
1557
- 原文搬过来时是 border-radius:14px —— 那是手写移动页 resources/css/h5.scss 的
1558
- 口径,跟包内基线不是一套,同一屏里会出现两种按钮,故改齐。
1559
- 左右 margin 保留:选用户/加签这些是两个按钮并排,需要中间那道缝。 */
1560
- .fixed-bottom-btns {
1561
- flex: none;
1562
- background: #f6f6f6;
1563
- display: flex;
1564
- padding: 4px 8px;
1662
+ .is-checked {
1663
+ position: absolute;
1664
+ right: 0;
1665
+ top: 0;
1666
+ width: 62px;
1667
+ height: 22px;
1668
+ line-height: 20px;
1669
+ text-align: center;
1670
+ font-size: 13px;
1671
+ color: #fff;
1672
+ background: #e2e2e2;
1673
+ border: solid 1px #dcdcdc;
1674
+ border-radius: 0 8px 0 6px;
1675
+
1676
+ i {
1677
+ margin-right: 3px;
1678
+ font-size: 13px;
1679
+ }
1680
+ }
1565
1681
 
1566
- .btn {
1567
- flex: 1;
1568
- margin: 4px 6px;
1569
- height: 40px;
1570
- border-radius: 30px;
1571
- padding: 0;
1572
- font-size: 13px;
1682
+ &.on {
1683
+ border: solid 1px $baseColor;
1573
1684
 
1574
- i {
1575
- margin-right: 3px;
1685
+ .is-checked {
1686
+ border-color: $baseColor;
1687
+ background: $baseColor;
1688
+ }
1689
+ }
1690
+ }
1576
1691
  }
1577
- }
1578
- }
1579
1692
 
1580
- /* 列表里的一张候选卡片。原文挂在 .h5-box 下(不在 .pop-box 段内),
1581
- xform 里只有这批弹层用得到,就收进来。 */
1582
- .order-item {
1583
- position: relative;
1584
- border: solid 1px #f0f1f1;
1585
- border-radius: 12px;
1586
- padding: 8px 10px;
1587
- margin: 8px 0;
1588
-
1589
- /* 左侧那道竖条 */
1590
- &:before {
1591
- content: "";
1592
- position: absolute;
1593
- left: 0;
1594
- top: 6px;
1595
- width: 3px;
1596
- height: 50px;
1597
- background: $baseColor;
1598
- border-radius: 5px;
1599
- }
1693
+ /* 已选区(底部固定,不滚) */
1694
+ .checkbox-all {
1695
+ flex: none;
1696
+ position: relative;
1697
+ min-height: 80px;
1698
+ padding: 0 12px 8px;
1699
+ background: #fff;
1700
+ box-shadow: 0 -3px 4px rgba(0, 0, 0, 0.06);
1600
1701
 
1601
- /* 卡片里放的是用户资料原值,可能出现超长且无空格的串(「地址」字段实际存的
1602
- 是一整条图片 URL)。默认不允许在非空白处断行,这种串会把卡片整体撑宽、
1603
- 连带拖出横向滚动条,所以这里统一允许任意位置断行。 */
1604
- .t1,
1605
- .t2 {
1606
- word-break: break-all;
1607
- overflow-wrap: anywhere;
1608
- }
1702
+ .ca-t {
1703
+ margin: 8px 0;
1704
+ font-size: 14px;
1705
+ font-weight: 600;
1706
+ }
1609
1707
 
1610
- .t1 {
1611
- margin-bottom: 6px;
1708
+ .ca-c span {
1709
+ display: inline-block;
1710
+ position: relative;
1711
+ height: 24px;
1712
+ line-height: 24px;
1713
+ padding: 0 28px 0 2px;
1714
+ margin: 4px 10px 4px 0;
1715
+ font-size: 13px;
1716
+ color: $baseColor;
1717
+ border: solid 1px $baseColor;
1718
+ border-radius: 4px;
1612
1719
 
1613
- /* 模板里恒有 <i class="icon">(原文设了一圈头像样式后又 display:none,
1614
- 等于留着没用)。照原样隐藏,避免哪天有人给裸 .icon 加了全局规则时冒出来。 */
1615
- .icon {
1616
- display: none;
1720
+ i {
1721
+ position: absolute;
1722
+ top: 0;
1723
+ right: 0;
1724
+ width: 24px;
1725
+ height: 24px;
1726
+ line-height: 24px;
1727
+ text-align: center;
1728
+ background: transparentize($baseColor, 0.91);
1729
+ }
1730
+ }
1617
1731
  }
1618
1732
 
1619
- span {
1620
- vertical-align: middle;
1621
- margin: 0 5px 0 0;
1622
- }
1623
- }
1733
+ .form-box {
1734
+ display: flex;
1735
+ flex-direction: column;
1736
+ flex: 1;
1737
+ overflow: hidden;
1624
1738
 
1625
- .t2 {
1626
- font-size: 11px;
1627
- color: rgba(128, 128, 128, 0.8);
1739
+ .tit {
1740
+ margin: 8px 12px;
1741
+ background: rgba(51, 106, 153, 0.1);
1742
+ border-radius: 11px;
1743
+ padding: 10px 12px;
1744
+ font-size: 13px;
1745
+ color: $baseColor;
1628
1746
 
1629
- p {
1630
- min-width: 50%;
1631
- /* 没有 max-width 时,inline-block 会被里面的长串顶到超出卡片宽度 */
1632
- max-width: 100%;
1633
- margin-bottom: 4px;
1634
- display: inline-block;
1635
- vertical-align: top;
1747
+ &:before {
1748
+ content: "";
1749
+ width: 5px;
1750
+ height: 5px;
1751
+ background: $baseColor;
1752
+ border-radius: 50%;
1753
+ vertical-align: middle;
1754
+ margin-right: 5px;
1755
+ display: inline-block;
1756
+ }
1757
+
1758
+ > span {
1759
+ vertical-align: middle;
1760
+ }
1761
+ }
1636
1762
  }
1637
1763
  }
1638
1764
 
1639
- /* 修改候选人:卡片内的「设置候选人」按钮 */
1640
- .btns {
1641
- text-align: right;
1642
- margin-top: 4px;
1765
+ /* 按钮口径与块 H 的底部动作栏、块 G 的明细详情弹框页脚保持一致(40px 高胶囊)。
1766
+ 原文搬过来时是 border-radius:14px —— 那是手写移动页 resources/css/h5.scss
1767
+ 口径,跟包内基线不是一套,同一屏里会出现两种按钮,故改齐。
1768
+ 左右 margin 保留:选用户/加签这些是两个按钮并排,需要中间那道缝。 */
1769
+ .fixed-bottom-btns {
1770
+ flex: none;
1771
+ background: #f6f6f6;
1772
+ display: flex;
1773
+ padding: 4px 8px;
1643
1774
 
1644
1775
  .btn {
1645
- height: 28px;
1646
- padding: 0 10px;
1776
+ flex: 1;
1777
+ margin: 4px 6px;
1778
+ height: 40px;
1779
+ border-radius: 30px;
1780
+ padding: 0;
1647
1781
  font-size: 13px;
1782
+
1783
+ i {
1784
+ margin-right: 3px;
1785
+ }
1648
1786
  }
1649
1787
  }
1650
- }
1651
- }
1652
-
1653
- /* ---- 高级筛选抽屉(h5SearchDialog,从 .pop-box 里再弹一层)---- */
1654
- .pop-screen-box {
1655
- position: fixed;
1656
- top: 0;
1657
- right: 0;
1658
- bottom: 0;
1659
- left: 0;
1660
- z-index: 99;
1661
1788
 
1662
- &:before {
1663
- content: "";
1664
- position: absolute;
1665
- left: 0;
1666
- right: 0;
1667
- top: 0;
1668
- bottom: 0;
1669
- background: rgba(0, 0, 0, 0.3);
1670
- }
1671
-
1672
- > div {
1673
- display: flex;
1674
- flex-direction: column;
1675
- position: absolute;
1676
- top: 0;
1677
- right: 0;
1678
- bottom: 0;
1679
- width: 80%;
1680
- background: #fff;
1681
-
1682
- .header-box {
1683
- flex: none;
1789
+ /* 列表里的一张候选卡片。原文挂在 .h5-box 下(不在 .pop-box 段内),
1790
+ xform 里只有这批弹层用得到,就收进来。 */
1791
+ .order-item {
1684
1792
  position: relative;
1685
- text-align: center;
1686
- height: $xformH5HeaderHeight;
1687
- line-height: $xformH5HeaderHeight;
1688
- font-size: 16px;
1689
- color: #212121;
1690
- border-bottom: solid 1px #eee;
1691
-
1692
- .back {
1793
+ border: solid 1px #f0f1f1;
1794
+ border-radius: 12px;
1795
+ padding: 8px 10px;
1796
+ margin: 8px 0;
1797
+
1798
+ /* 左侧那道竖条 */
1799
+ &:before {
1800
+ content: "";
1693
1801
  position: absolute;
1694
- right: 14px;
1695
- top: 50%;
1696
- margin-top: -10px;
1697
- line-height: 20px;
1698
- font-size: 20px;
1802
+ left: 0;
1803
+ top: 6px;
1804
+ width: 3px;
1805
+ height: 50px;
1806
+ background: $baseColor;
1807
+ border-radius: 5px;
1699
1808
  }
1700
- }
1701
1809
 
1702
- .p-cont {
1703
- flex: 1;
1704
- min-height: 0;
1705
- overflow-y: auto;
1706
- padding: 10px 16px 0;
1707
-
1708
- .txt {
1709
- width: 100%;
1810
+ /* 卡片里放的是用户资料原值,可能出现超长且无空格的串(「地址」字段实际存的
1811
+ 是一整条图片 URL)。默认不允许在非空白处断行,这种串会把卡片整体撑宽、
1812
+ 连带拖出横向滚动条,所以这里统一允许任意位置断行。 */
1813
+ .t1,
1814
+ .t2 {
1815
+ word-break: break-all;
1816
+ overflow-wrap: anywhere;
1710
1817
  }
1711
1818
 
1712
- .el-form .el-form-item {
1713
- margin-bottom: 4px;
1819
+ .t1 {
1820
+ margin-bottom: 6px;
1714
1821
 
1715
- .el-form-item__label {
1716
- padding: 0;
1717
- margin: 0;
1718
- font-size: 13px;
1822
+ /* 模板里恒有 <i class="icon">(原文设了一圈头像样式后又 display:none,
1823
+ 等于留着没用)。照原样隐藏,避免哪天有人给裸 .icon 加了全局规则时冒出来。 */
1824
+ .icon {
1825
+ display: none;
1719
1826
  }
1720
1827
 
1721
- .el-input {
1722
- width: 100% !important;
1723
- height: 38px;
1724
- border-radius: 4px;
1828
+ span {
1829
+ vertical-align: middle;
1830
+ margin: 0 5px 0 0;
1725
1831
  }
1832
+ }
1726
1833
 
1727
- .el-input__inner {
1728
- font-size: 13px;
1834
+ .t2 {
1835
+ font-size: 11px;
1836
+ color: rgba(128, 128, 128, 0.8);
1837
+
1838
+ p {
1839
+ min-width: 50%;
1840
+ /* 没有 max-width 时,inline-block 会被里面的长串顶到超出卡片宽度 */
1841
+ max-width: 100%;
1842
+ margin: 4px 0;
1843
+ display: inline-block;
1844
+ vertical-align: top;
1845
+ font-size:13px;
1729
1846
  }
1730
1847
  }
1731
- }
1732
1848
 
1733
- .p-btn {
1734
- flex: none;
1735
- display: flex;
1736
- padding: 8px;
1849
+ /* 修改候选人:卡片内的「设置候选人」按钮 */
1850
+ .btns {
1851
+ text-align: right;
1852
+ margin-top: 4px;
1737
1853
 
1738
- .btn {
1739
- flex: 1;
1740
- margin: 0 8px;
1741
- height: 42px;
1742
- border-radius: 12px;
1854
+ .btn {
1855
+ height: 28px;
1856
+ padding: 0 10px;
1857
+ font-size: 13px;
1858
+ }
1743
1859
  }
1744
1860
  }
1745
- }
1861
+
1862
+ }
1863
+
1864
+
1865
+ /* ---- 高级筛选抽屉(h5SearchDialog,从 .pop-box 里再弹一层)---- */
1866
+ .pop-screen-box {
1867
+ position: fixed;
1868
+ top: 0;
1869
+ right: 0;
1870
+ bottom: 0;
1871
+ left: 0;
1872
+ z-index: 99;
1873
+
1874
+ &:before {
1875
+ content: "";
1876
+ position: absolute;
1877
+ left: 0;
1878
+ right: 0;
1879
+ top: 0;
1880
+ bottom: 0;
1881
+ background: rgba(0, 0, 0, 0.3);
1746
1882
  }
1747
1883
 
1748
- /* ---- 任务情况时间轴 ---- */
1749
- .h5-process-info {
1750
- font-size: 12px;
1751
- padding: 12px 16px;
1884
+ > div {
1885
+ display: flex;
1886
+ flex-direction: column;
1887
+ position: absolute;
1888
+ top: 0;
1889
+ right: 0;
1890
+ bottom: 0;
1891
+ width: 80%;
1752
1892
  background: #fff;
1753
- margin: 10px 12px;
1754
- border-radius: 15px;
1755
1893
 
1756
- .item {
1757
- display: flex;
1758
- line-height: 1.4;
1759
- padding: 6px 0 8px;
1894
+ .header-box {
1895
+ flex: none;
1760
1896
  position: relative;
1897
+ text-align: center;
1898
+ height: $xformH5HeaderHeight;
1899
+ line-height: $xformH5HeaderHeight;
1900
+ font-size: 16px;
1901
+ color: #212121;
1902
+ border-bottom: solid 1px #eee;
1761
1903
 
1762
- &:after {
1763
- content: "";
1764
- width: 2px;
1904
+ .back {
1765
1905
  position: absolute;
1766
- background: #e9e9e9;
1767
- top: 22px;
1768
- bottom: -10px;
1769
- left: 76px;
1770
- z-index: 2;
1906
+ right: 14px;
1907
+ top: 50%;
1908
+ margin-top: -10px;
1909
+ line-height: 20px;
1910
+ font-size: 20px;
1771
1911
  }
1912
+ }
1772
1913
 
1773
- &:last-child:after {
1774
- display: none;
1775
- }
1914
+ .p-cont {
1915
+ flex: 1;
1916
+ min-height: 0;
1917
+ overflow-y: auto;
1918
+ padding: 10px 16px 0;
1776
1919
 
1777
- .time {
1778
- color: #666;
1779
- width: 82px;
1780
- position: absolute;
1781
- top: 37px;
1782
- left: -14px;
1783
- right: 0;
1784
- text-align: center;
1785
- zoom: 0.9;
1920
+ .txt {
1921
+ width: 100%;
1786
1922
  }
1787
1923
 
1788
- .status {
1789
- width: 50px;
1790
- line-height: 16px;
1791
- padding: 2px 0;
1792
- height: 100%;
1793
- text-align: center;
1794
- border-radius: 22px;
1795
- vertical-align: middle;
1796
- background: #fff;
1797
- border: 1px solid #dcdfe6;
1798
- color: #606266;
1924
+ .el-form .el-form-item {
1925
+ margin-bottom: 4px;
1799
1926
 
1800
- &.green {
1801
- border: solid 1px #acedc9;
1802
- background: #e7faf0;
1803
- color: #67c23a;
1804
- }
1805
- &.red {
1806
- border: solid 1px #ffcaca;
1807
- background: #ffeded;
1808
- color: #f56c6c;
1809
- }
1810
- &.gray {
1811
- color: #d6d6d6;
1812
- background: #f4f4f5;
1813
- border-color: #d3d4d6;
1814
- }
1815
- &.orgn {
1816
- color: #e6a23c;
1817
- background: #fdf6ec;
1818
- border-color: #f5dab1;
1927
+ .el-form-item__label {
1928
+ padding: 0;
1929
+ margin: 0;
1930
+ font-size: 13px;
1819
1931
  }
1820
- &.blue {
1821
- background-color: transparentize($baseColor, 0.94);
1822
- color: $baseColor;
1823
- border: solid 1px transparentize($baseColor, 0.72);
1932
+
1933
+ .el-input {
1934
+ width: 100% !important;
1935
+ height: 38px;
1936
+ border-radius: 4px;
1824
1937
  }
1825
- }
1826
1938
 
1827
- .circle {
1828
- background: $baseColor;
1829
- width: 14px;
1830
- height: 14px;
1831
- border-radius: 50%;
1832
- border: solid 3px #fff;
1833
- display: inline-block;
1834
- margin: 3px 20px;
1835
- z-index: 9;
1939
+ .el-input__inner {
1940
+ font-size: 13px;
1941
+ }
1836
1942
  }
1943
+ }
1837
1944
 
1838
- .info {
1839
- width: calc(100% - 100px);
1945
+ .p-btn {
1946
+ flex: none;
1947
+ display: flex;
1948
+ padding: 8px;
1840
1949
 
1841
- p {
1842
- margin: 2px 0;
1843
- display: block;
1950
+ .btn {
1951
+ flex: 1;
1952
+ margin: 0 8px;
1953
+ height: 42px;
1954
+ border-radius: 12px;
1955
+ }
1956
+ }
1957
+ }
1958
+ }
1844
1959
 
1845
- > span {
1846
- display: inline-block;
1847
- min-width: 50%;
1960
+ .el-dialog.h5view-dialog {
1961
+ margin: 0 !important;
1962
+ /* 同上:手机浏览器地址栏占位时 100vh 比可视区高,弹框底部的「关闭」会被顶出屏幕。
1963
+ dvh 打头、vh 兜底,见块 G 的说明。 */
1964
+ height: calc(100vh - 15px);
1965
+ height: calc(100dvh - 15px);
1966
+ display: flex;
1967
+ flex-direction: column;
1968
+ border-radius: 0;
1848
1969
 
1849
- &.name {
1850
- font-weight: 600;
1851
- width: 100%;
1852
- margin-bottom: 3px;
1853
- }
1854
- }
1970
+ > .el-dialog__body {
1971
+ flex: 1;
1972
+ min-height: 0;
1973
+ overflow-y: auto;
1974
+ -webkit-overflow-scrolling: touch;
1975
+ }
1976
+ .form-box {
1977
+ display: flex;
1978
+ flex-direction: column;
1979
+ flex: 1;
1980
+ overflow: hidden;
1855
1981
 
1856
- &.t {
1857
- display: flex;
1982
+ .tit {
1983
+ margin: 8px 12px;
1984
+ background: rgba(51, 106, 153, 0.1);
1985
+ border-radius: 11px;
1986
+ padding: 10px 12px;
1987
+ font-size: 13px;
1988
+ color: $baseColor;
1858
1989
 
1859
- .t1 {
1860
- min-width: 65px;
1861
- margin-right: 0;
1862
- flex: none;
1863
- }
1990
+ &:before {
1991
+ content: "";
1992
+ width: 5px;
1993
+ height: 5px;
1994
+ background: $baseColor;
1995
+ border-radius: 50%;
1996
+ vertical-align: middle;
1997
+ margin-right: 5px;
1998
+ display: inline-block;
1999
+ }
1864
2000
 
1865
- span {
1866
- flex: 1;
1867
- white-space: pre-line;
1868
- }
1869
- }
2001
+ > span {
2002
+ vertical-align: middle;
1870
2003
  }
1871
2004
  }
1872
2005
  }
1873
- }
1874
-
1875
- /* ---- 确认/表单提示框(通过、驳回、转办等)---- */
1876
- /* 注意:.icon 沿用 resources/images 下的图标,`~@/` 在消费应用里解析到它自己的
1877
- src/resources/images —— 该目录同样不在 package.json files 内,属隐式依赖。
1878
- 消费应用现有的 h5.scss 已引用同一批图,故风险可控;若要彻底解耦可换字体图标。 */
1879
- .pop-tipsBox {
1880
- position: relative;
1881
2006
 
1882
- &:before {
1883
- content: "";
1884
- position: fixed;
1885
- top: 0;
1886
- right: 0;
1887
- bottom: 0;
1888
- left: 0;
1889
- background: rgba(0, 0, 0, 0.4);
1890
- z-index: 998;
2007
+ /* 内容区的 height 是模板里的内联样式,只能用 !important 压掉,
2008
+ 改由上面的 flex 决定高度 */
2009
+ .cont {
2010
+ height: 100% !important;overflow: auto;
2011
+ .h5-list-box{
2012
+ margin:12px;padding:0 !important;background:none !important;
2013
+ .item{
2014
+ border:none;
2015
+ .t2{
2016
+ dl{
2017
+ font-size:14px;color:#666;
2018
+ dd{
2019
+ margin:0;
2020
+ color:#323232;
2021
+ text-align:right;
2022
+ }
2023
+ }
2024
+ }
2025
+ }
2026
+ }
1891
2027
  }
1892
2028
 
1893
- > div {
1894
- position: fixed;
1895
- top: 24%;
1896
- left: 32px;
1897
- right: 32px;
1898
- box-shadow: 0 0 14px rgba(0, 0, 0, 0.16);
1899
- border-radius: 18px;
1900
- padding: 68px 16px 18px;
1901
- text-align: center;
1902
- z-index: 999;
1903
- background-color: #fff;
1904
- background-size: 100% auto;
1905
- border: solid 2px #fff;
1906
-
1907
- .icon {
1908
- background: url(~@/resources/images/icon-tips.png) no-repeat center;
1909
- background-size: cover;
1910
- position: absolute;
1911
- top: -19px;
1912
- left: 50%;
1913
- margin-left: -34px;
1914
- width: 68px;
1915
- height: 68px;
1916
- border-radius: 50%;
1917
- border: solid 2px #fff;
1918
- }
2029
+ /* 底部「关闭」:与底部动作栏同款胶囊,铺满一行 */
2030
+ > .el-dialog__footer {
2031
+ flex: none;
2032
+ padding: 8px 13px;
2033
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.06);
1919
2034
 
1920
- .cont {
1921
- padding: 0 0 18px;
2035
+ .button-sty,
2036
+ .el-button {
2037
+ width: 100%;
2038
+ height: 40px;
2039
+ border-radius: 30px;
2040
+ padding: 0;
2041
+ font-size: 13px;
1922
2042
 
1923
- .name {
1924
- font-weight: 600;
1925
- font-size: 18px;
1926
- margin-bottom: 24px;
2043
+ i {
2044
+ margin-right: 3px;
1927
2045
  }
2046
+ }
2047
+ }
1928
2048
 
1929
- /* max-height + overflow:auto 是给「自定义确认文案」这类可能很长的内容留的
1930
- (提醒内容、脚本里配的提示都走这里)。但确认框里多数只有一行短句,
1931
- 真机 WebView 又是经典滚动条(不像桌面那样会自动淡出),于是「您确定要
1932
- 中断流程吗?」这种一行字旁边也挂着一条灰色滚动条。
1933
- 保留可滚动(长文案照样能滑),只把滚动条本身藏掉 —— 移动端本来就该是
1934
- 无痕滚动。 */
1935
- .txt,
1936
- .txt2 {
1937
- overflow: auto;
1938
- word-break: break-word;
1939
- scrollbar-width: none; // Firefox
1940
- -ms-overflow-style: none; // 旧 Edge/IE
1941
-
1942
- &::-webkit-scrollbar {
1943
- display: none;
1944
- }
2049
+ /*步骤条*/
2050
+ /* ---- 任务情况时间轴 ---- */
2051
+ .h5-process-info {
2052
+ font-size: $xformH5Size;
2053
+ padding: 12px 16px;
2054
+ background: #fff;
2055
+ margin: 12px 16px;
2056
+ border-radius: 15px;
2057
+ overflow:auto;
2058
+ width:100%;
2059
+ .item {
2060
+ display: flex;
2061
+ line-height: 1.4;
2062
+ padding: 6px 0 8px;
2063
+ position: relative;
2064
+
2065
+ &:after {
2066
+ content: "";
2067
+ width: 2px;
2068
+ position: absolute;
2069
+ background: #e9e9e9;
2070
+ top: 22px;
2071
+ bottom: -10px;
2072
+ left: 76px;
2073
+ z-index: 2;
1945
2074
  }
1946
2075
 
1947
- .txt {
1948
- max-height: 100px;
2076
+ &:last-child:after {
2077
+ display: none;
1949
2078
  }
1950
2079
 
1951
- .txt2 {
1952
- max-height: 200px;
2080
+ .time {
2081
+ color: #666;
2082
+ width: 82px;
2083
+ position: absolute;
2084
+ top: 37px;
2085
+ left: -14px;
2086
+ right: 0;
2087
+ text-align: center;
2088
+ zoom: 0.9;
1953
2089
  }
1954
2090
 
1955
- .form-box {
1956
- border: solid 1px #dcdcdc;
1957
- padding: 0 12px;
1958
- border-radius: 10px;
1959
- margin-top: -8px;
2091
+ .status {
2092
+ width: 50px;
2093
+ line-height: 16px;
2094
+ padding: 2px 0;
2095
+ height: 100%;
2096
+ text-align: center;
2097
+ border-radius: 22px;
2098
+ vertical-align: middle;
2099
+ background: #fff;
2100
+ border: 1px solid #dcdfe6;
2101
+ color: #606266;
1960
2102
 
1961
- .line {
1962
- border: solid 1px #e8e8e8;
2103
+ &.green {
2104
+ border: solid 1px #acedc9;
2105
+ background: #e7faf0;
2106
+ color: #67c23a;
2107
+ }
2108
+ &.red {
2109
+ border: solid 1px #ffcaca;
2110
+ background: #ffeded;
2111
+ color: #f56c6c;
2112
+ }
2113
+ &.gray {
2114
+ color: #d6d6d6;
2115
+ background: #f4f4f5;
2116
+ border-color: #d3d4d6;
2117
+ }
2118
+ &.orgn {
2119
+ color: #e6a23c;
2120
+ background: #fdf6ec;
2121
+ border-color: #f5dab1;
2122
+ }
2123
+ &.blue {
2124
+ background-color: transparentize($baseColor, 0.94);
2125
+ color: $baseColor;
2126
+ border: solid 1px transparentize($baseColor, 0.72);
1963
2127
  }
1964
2128
  }
1965
- }
1966
2129
 
1967
- .btns {
1968
- display: flex;
2130
+ .circle {
2131
+ background: $baseColor;
2132
+ width: 14px;
2133
+ height: 14px;
2134
+ border-radius: 50%;
2135
+ border: solid 3px #fff;
2136
+ display: inline-block;
2137
+ margin: 3px 20px;
2138
+ z-index: 9;
2139
+ }
1969
2140
 
1970
- .btn {
1971
- flex: 1;
1972
- height: 40px;
1973
- border-radius: 12px;
2141
+ .info {
2142
+ width: calc(100% - 100px);
2143
+ color:#666;
2144
+ p {
2145
+ margin: 2px 0;
2146
+ display: block;
2147
+
2148
+ > span {
2149
+ display: inline-block;
2150
+ min-width: 50%;
2151
+
2152
+ &.name {
2153
+ font-weight: 600;
2154
+ width: 100%;
2155
+ margin-bottom: 3px;
2156
+ color:#323232;
2157
+ }
2158
+ }
2159
+
2160
+ &.t {
2161
+ display: flex;
1974
2162
 
1975
- &.el-button--primary.is-plain {
1976
- border-color: $baseColor;
2163
+ .t1 {
2164
+ min-width: 65px;
2165
+ margin-right: 0;
2166
+ flex: none;
2167
+ }
2168
+
2169
+ span {
2170
+ flex: 1;
2171
+ white-space: pre-line;
2172
+ }
2173
+ }
1977
2174
  }
1978
2175
  }
1979
2176
  }
1980
2177
  }
1981
2178
 
1982
- &.error > div .icon {
1983
- background-image: url(~@/resources/images/icon-error.png);
1984
- border-color: #fff;
1985
- }
1986
2179
  }
1987
- }
1988
-
1989
- /* ============ 页面底色 ============ */
1990
- .xform-h5 .h5-detail-wrap {
1991
- background: $xformH5PageBg;
1992
- }