af-mobile-client-vue3 1.2.4 → 1.2.6
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/package.json +1 -1
- package/src/components/data/XCellList/index.vue +10 -24
- package/src/components/data/XForm/index.vue +52 -1
- package/src/components/data/XOlMap/index.vue +16 -8
- package/src/components/data/XOlMap/types.ts +3 -1
- package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
- package/src/components/data/XReportGrid/print.js +184 -184
- package/src/utils/queryFormDefaultRangePicker.ts +57 -57
- package/src/views/component/XCellListView/index.vue +180 -57
- package/src/views/component/XFormGroupView/index.vue +4 -7
- package/vite.config.ts +2 -2
package/package.json
CHANGED
|
@@ -617,17 +617,14 @@ defineExpose({
|
|
|
617
617
|
<VanCol :span="24">
|
|
618
618
|
<div class="tag-container">
|
|
619
619
|
<div class="tag-wrapper">
|
|
620
|
-
<
|
|
620
|
+
<template
|
|
621
621
|
v-for="column of tagList"
|
|
622
622
|
:key="`tag_${column.dataIndex}`"
|
|
623
|
-
:span="column.flexSpan"
|
|
624
|
-
class="tag-col"
|
|
625
623
|
>
|
|
626
624
|
<VanTag
|
|
627
625
|
:text-color="column.tagColor"
|
|
628
626
|
:color="column.tagBorderColor"
|
|
629
|
-
|
|
630
|
-
size="medium"
|
|
627
|
+
size="large"
|
|
631
628
|
class="tag-item"
|
|
632
629
|
>
|
|
633
630
|
<div class="tag-content">
|
|
@@ -640,7 +637,7 @@ defineExpose({
|
|
|
640
637
|
/>
|
|
641
638
|
</div>
|
|
642
639
|
</VanTag>
|
|
643
|
-
</
|
|
640
|
+
</template>
|
|
644
641
|
</div>
|
|
645
642
|
</div>
|
|
646
643
|
</VanCol>
|
|
@@ -822,21 +819,10 @@ defineExpose({
|
|
|
822
819
|
width: 100%;
|
|
823
820
|
margin: 0 -4px;
|
|
824
821
|
|
|
825
|
-
.tag-col {
|
|
826
|
-
display: flex;
|
|
827
|
-
align-items: center;
|
|
828
|
-
padding: 0 4px;
|
|
829
|
-
min-height: 28px;
|
|
830
|
-
}
|
|
831
|
-
|
|
832
822
|
.tag-item {
|
|
833
823
|
width: auto;
|
|
834
|
-
text-align: left;
|
|
835
824
|
font-size: var(--van-font-size-xs);
|
|
836
|
-
|
|
837
|
-
align-items: center;
|
|
838
|
-
margin: 2px 0;
|
|
839
|
-
justify-content: center;
|
|
825
|
+
margin: 2px 4px;
|
|
840
826
|
:deep(.van-tag) {
|
|
841
827
|
width: fit-content;
|
|
842
828
|
display: inline-flex;
|
|
@@ -847,7 +833,7 @@ defineExpose({
|
|
|
847
833
|
.tag-content {
|
|
848
834
|
display: flex;
|
|
849
835
|
align-items: center;
|
|
850
|
-
white-space: nowrap;
|
|
836
|
+
//white-space: nowrap;
|
|
851
837
|
}
|
|
852
838
|
.tag-icon {
|
|
853
839
|
margin-right: 4px;
|
|
@@ -892,21 +878,19 @@ defineExpose({
|
|
|
892
878
|
.card_item_footer {
|
|
893
879
|
font-size: var(--van-font-size-sm);
|
|
894
880
|
color: var(--van-text-color-2);
|
|
895
|
-
margin-bottom: 12px;
|
|
896
881
|
padding: 8px 0;
|
|
897
|
-
border-top: 1px solid rgba(0, 0, 0, 0.04);
|
|
898
|
-
|
|
899
882
|
.van-col:last-child {
|
|
900
883
|
text-align: right;
|
|
901
884
|
}
|
|
902
|
-
|
|
903
885
|
.van-col:first-child {
|
|
904
886
|
text-align: left;
|
|
905
887
|
}
|
|
906
888
|
}
|
|
907
889
|
|
|
908
890
|
.card_item_bottom {
|
|
909
|
-
margin-top:
|
|
891
|
+
margin-top: 12px;
|
|
892
|
+
padding-top: 12px;
|
|
893
|
+
border-top: 1px solid rgba(0, 0, 0, 0.06);
|
|
910
894
|
|
|
911
895
|
.more-button {
|
|
912
896
|
width: 28px;
|
|
@@ -933,6 +917,8 @@ defineExpose({
|
|
|
933
917
|
}
|
|
934
918
|
|
|
935
919
|
.action-btn {
|
|
920
|
+
--van-button-primary-border-color: #1890ff;
|
|
921
|
+
--van-button-primary-background: #1890ff;
|
|
936
922
|
min-width: 76px;
|
|
937
923
|
height: 40px;
|
|
938
924
|
border-radius: 10px;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import type { FormInstance } from 'vant'
|
|
3
3
|
import XFormItem from '@af-mobile-client-vue3/components/data/XFormItem/index.vue'
|
|
4
4
|
import { addOrModifyEntity } from '@af-mobile-client-vue3/services/api/common'
|
|
5
|
+
import XOlMap from '@af-mobile-client-vue3/components/data/XOlMap/index.vue'
|
|
5
6
|
import { post } from '@af-mobile-client-vue3/services/restTools'
|
|
6
7
|
import {
|
|
7
8
|
showFailToast,
|
|
@@ -10,7 +11,7 @@ import {
|
|
|
10
11
|
CellGroup as VanCellGroup,
|
|
11
12
|
Form as VanForm,
|
|
12
13
|
} from 'vant'
|
|
13
|
-
import { computed, defineEmits, defineProps, onBeforeMount, reactive, ref, watch } from 'vue'
|
|
14
|
+
import { computed, defineEmits, defineProps, nextTick, onBeforeMount, reactive, ref, watch } from 'vue'
|
|
14
15
|
|
|
15
16
|
interface FormItem {
|
|
16
17
|
addOrEdit: string
|
|
@@ -74,6 +75,37 @@ const resolvedSubmitButton = computed(() => {
|
|
|
74
75
|
return props.submitButton
|
|
75
76
|
})
|
|
76
77
|
|
|
78
|
+
const previewMapRef = ref(null)
|
|
79
|
+
// 假设你只预览第一个 addressSearch 类型的经纬度
|
|
80
|
+
const previewLonLatKey = computed(() => {
|
|
81
|
+
const item = realJsonData.value.find(i => i.type === 'addressSearch')
|
|
82
|
+
return item ? `${item.model}_lon_lat` : null
|
|
83
|
+
})
|
|
84
|
+
const previewMapPoint = computed(() => {
|
|
85
|
+
const val = form.value[previewLonLatKey.value]
|
|
86
|
+
if (val && typeof val === 'string' && val.includes(',')) {
|
|
87
|
+
const [lon, lat] = val.split(',').map(Number)
|
|
88
|
+
if (!Number.isNaN(lon) && !Number.isNaN(lat)) {
|
|
89
|
+
return [lon, lat]
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
// 地图初始化逻辑
|
|
96
|
+
const previewMapInited = ref(false)
|
|
97
|
+
watch(previewMapPoint, async (val) => {
|
|
98
|
+
await nextTick()
|
|
99
|
+
if (val && previewMapRef.value) {
|
|
100
|
+
if (!previewMapInited.value) {
|
|
101
|
+
await previewMapRef.value.init({ center: val, zoom: 16, isPreview: true })
|
|
102
|
+
previewMapInited.value = true
|
|
103
|
+
}
|
|
104
|
+
previewMapRef.value.setCenter(val, true)
|
|
105
|
+
previewMapRef.value.updateLocationMarker(val)
|
|
106
|
+
}
|
|
107
|
+
}, { immediate: true })
|
|
108
|
+
|
|
77
109
|
onBeforeMount(() => {
|
|
78
110
|
if (!props.configName && props.groupFormItems) {
|
|
79
111
|
if (props.groupFormItems && props.groupFormItems.tableName) {
|
|
@@ -266,6 +298,15 @@ defineExpose({ init, form, formGroupName, validate })
|
|
|
266
298
|
@set-form="setForm"
|
|
267
299
|
/>
|
|
268
300
|
</VanCellGroup>
|
|
301
|
+
<!-- 地图预览,统一放在表单项下方,只在有经纬度时显示 -->
|
|
302
|
+
<div v-if="previewMapPoint" style="height: 200px; margin-top: 12px; position: relative;">
|
|
303
|
+
<XOlMap
|
|
304
|
+
ref="previewMapRef"
|
|
305
|
+
:center="previewMapPoint"
|
|
306
|
+
:style="{ height: '100%' }"
|
|
307
|
+
/>
|
|
308
|
+
<div class="map-mask" />
|
|
309
|
+
</div>
|
|
269
310
|
</div>
|
|
270
311
|
<div v-if="resolvedSubmitButton && props.mode !== '预览'" class="form-footer-fixed">
|
|
271
312
|
<VanButton class="action-btn" round block type="primary" native-type="submit">
|
|
@@ -298,4 +339,14 @@ defineExpose({ init, form, formGroupName, validate })
|
|
|
298
339
|
border-radius: 10px;
|
|
299
340
|
}
|
|
300
341
|
}
|
|
342
|
+
.map-mask {
|
|
343
|
+
position: absolute;
|
|
344
|
+
left: 0;
|
|
345
|
+
top: 0;
|
|
346
|
+
width: 100%;
|
|
347
|
+
height: 100%;
|
|
348
|
+
pointer-events: all;
|
|
349
|
+
background: transparent;
|
|
350
|
+
z-index: 10;
|
|
351
|
+
}
|
|
301
352
|
</style>
|
|
@@ -48,6 +48,8 @@ const mapParams = ref<InitParams>({})
|
|
|
48
48
|
|
|
49
49
|
/** 地图容器引用 */
|
|
50
50
|
const mapRef = ref<HTMLDivElement>()
|
|
51
|
+
/** 是否为预览模式 */
|
|
52
|
+
const preview = ref(false)
|
|
51
53
|
/** 地图实例 */
|
|
52
54
|
let map: Map | null = null
|
|
53
55
|
/** 当前底图类型 */
|
|
@@ -104,13 +106,17 @@ function createLocationLayer(): VectorLayer<VectorSource> {
|
|
|
104
106
|
* 更新位置图标
|
|
105
107
|
*/
|
|
106
108
|
function updateLocationMarker(center: [number, number]): void {
|
|
107
|
-
if (!map
|
|
109
|
+
if (!map) {
|
|
108
110
|
return
|
|
109
|
-
|
|
111
|
+
}
|
|
112
|
+
if (!locationLayer) {
|
|
113
|
+
locationLayer = createLocationLayer()
|
|
114
|
+
map?.addLayer(locationLayer)
|
|
115
|
+
}
|
|
110
116
|
const source = locationLayer.getSource()
|
|
111
|
-
if (!source)
|
|
117
|
+
if (!source) {
|
|
112
118
|
return
|
|
113
|
-
|
|
119
|
+
}
|
|
114
120
|
// 清除现有图标
|
|
115
121
|
source.clear()
|
|
116
122
|
|
|
@@ -330,8 +336,10 @@ function init(params: InitParams = {}): Promise<void> {
|
|
|
330
336
|
zoom = 10,
|
|
331
337
|
maxZoom = 18,
|
|
332
338
|
minZoom = 4,
|
|
339
|
+
isPreview = false,
|
|
333
340
|
} = params
|
|
334
|
-
|
|
341
|
+
// 设置预览模式
|
|
342
|
+
preview.value = isPreview
|
|
335
343
|
try {
|
|
336
344
|
getConfigByName('webConfig', (res) => {
|
|
337
345
|
const tianDiTuKey = res.tianDiTuKey || 'c16876b28898637c0a1a68b3fa410504'
|
|
@@ -1031,6 +1039,7 @@ function handleToggleTrackLayer(track: TrackData): void {
|
|
|
1031
1039
|
|
|
1032
1040
|
// 暴露方法给父组件
|
|
1033
1041
|
defineExpose({
|
|
1042
|
+
updateLocationMarker,
|
|
1034
1043
|
init,
|
|
1035
1044
|
getMap,
|
|
1036
1045
|
setCenter,
|
|
@@ -1071,8 +1080,7 @@ onUnmounted(() => {
|
|
|
1071
1080
|
<template>
|
|
1072
1081
|
<div class="map-wrapper">
|
|
1073
1082
|
<div ref="mapRef" class="ol-map" />
|
|
1074
|
-
|
|
1075
|
-
<div class="location-button">
|
|
1083
|
+
<div v-if="!preview" class="location-button">
|
|
1076
1084
|
<Button size="small" square @click="handleLocation">
|
|
1077
1085
|
<img
|
|
1078
1086
|
src="@af-mobile-client-vue3/assets/img/component/location.png"
|
|
@@ -1183,7 +1191,7 @@ onUnmounted(() => {
|
|
|
1183
1191
|
.ol-map {
|
|
1184
1192
|
width: 100%;
|
|
1185
1193
|
height: 100%;
|
|
1186
|
-
min-height:
|
|
1194
|
+
min-height: 200px;
|
|
1187
1195
|
touch-action: none;
|
|
1188
1196
|
|
|
1189
1197
|
&:active {
|
|
@@ -14,7 +14,7 @@ export interface PhoneLocationStatus {
|
|
|
14
14
|
status: string
|
|
15
15
|
|
|
16
16
|
data: {
|
|
17
|
-
location: string
|
|
17
|
+
location: string
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -30,6 +30,8 @@ export interface InitParams {
|
|
|
30
30
|
minZoom?: number
|
|
31
31
|
/** 是否开启地址选择模式 */
|
|
32
32
|
enableLocationPicker?: boolean
|
|
33
|
+
/** 是否为预览模式(预览时不显示定位按钮) */
|
|
34
|
+
isPreview?: boolean
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
/** 点位数据接口 */
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { onMounted, ref } from 'vue'
|
|
3
|
-
import XReport from './XReport.vue'
|
|
4
|
-
|
|
5
|
-
const mainRef = ref()
|
|
6
|
-
|
|
7
|
-
onMounted(() => {
|
|
8
|
-
// 初始化逻辑
|
|
9
|
-
})
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<template>
|
|
13
|
-
<div id="test">
|
|
14
|
-
<van-card :bordered="false">
|
|
15
|
-
<XReport
|
|
16
|
-
ref="mainRef"
|
|
17
|
-
:use-oss-for-img="false"
|
|
18
|
-
config-name="nurseWorkstationCover"
|
|
19
|
-
server-name="af-his"
|
|
20
|
-
:show-img-in-cell="true"
|
|
21
|
-
:display-only="true"
|
|
22
|
-
:edit-mode="false"
|
|
23
|
-
:show-save-button="false"
|
|
24
|
-
:no-padding="true"
|
|
25
|
-
:dont-format="true"
|
|
26
|
-
/>
|
|
27
|
-
</van-card>
|
|
28
|
-
</div>
|
|
29
|
-
</template>
|
|
30
|
-
|
|
31
|
-
<style scoped>
|
|
32
|
-
|
|
33
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { onMounted, ref } from 'vue'
|
|
3
|
+
import XReport from './XReport.vue'
|
|
4
|
+
|
|
5
|
+
const mainRef = ref()
|
|
6
|
+
|
|
7
|
+
onMounted(() => {
|
|
8
|
+
// 初始化逻辑
|
|
9
|
+
})
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<div id="test">
|
|
14
|
+
<van-card :bordered="false">
|
|
15
|
+
<XReport
|
|
16
|
+
ref="mainRef"
|
|
17
|
+
:use-oss-for-img="false"
|
|
18
|
+
config-name="nurseWorkstationCover"
|
|
19
|
+
server-name="af-his"
|
|
20
|
+
:show-img-in-cell="true"
|
|
21
|
+
:display-only="true"
|
|
22
|
+
:edit-mode="false"
|
|
23
|
+
:show-save-button="false"
|
|
24
|
+
:no-padding="true"
|
|
25
|
+
:dont-format="true"
|
|
26
|
+
/>
|
|
27
|
+
</van-card>
|
|
28
|
+
</div>
|
|
29
|
+
</template>
|
|
30
|
+
|
|
31
|
+
<style scoped>
|
|
32
|
+
|
|
33
|
+
</style>
|
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
// print.js
|
|
2
|
-
|
|
3
|
-
export function printElement(elementToPrint) {
|
|
4
|
-
// 创建一个新的浏览器窗口
|
|
5
|
-
const printWindow = window.open('', '_blank', 'height=1024,width=768')
|
|
6
|
-
// 设置新窗口的文档内容
|
|
7
|
-
printWindow.document.write(`
|
|
8
|
-
<html>
|
|
9
|
-
<head>
|
|
10
|
-
<title>Print</title>
|
|
11
|
-
<style>
|
|
12
|
-
@page {
|
|
13
|
-
size: auto;
|
|
14
|
-
margin: 0mm;
|
|
15
|
-
}
|
|
16
|
-
html, body {
|
|
17
|
-
margin: 0;
|
|
18
|
-
padding: 0;
|
|
19
|
-
width: 100%;
|
|
20
|
-
height: 100%;
|
|
21
|
-
}
|
|
22
|
-
#print-container {
|
|
23
|
-
display: none
|
|
24
|
-
}
|
|
25
|
-
.img{
|
|
26
|
-
width: 95%;
|
|
27
|
-
height: 180px;
|
|
28
|
-
object-fit: cover;
|
|
29
|
-
}
|
|
30
|
-
.reportMain {
|
|
31
|
-
text-align: center;
|
|
32
|
-
margin: 0 auto;
|
|
33
|
-
font-size: 16px;
|
|
34
|
-
color: #000;
|
|
35
|
-
background-color: #fff;
|
|
36
|
-
border-radius: 8px;
|
|
37
|
-
|
|
38
|
-
.reportTitle {
|
|
39
|
-
font-weight: bold;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.subTitle {
|
|
43
|
-
display: flex;
|
|
44
|
-
justify-content: space-between;
|
|
45
|
-
margin-bottom: 1%;
|
|
46
|
-
|
|
47
|
-
.subTitleItems {
|
|
48
|
-
max-width: 30%;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
.inputsDiv {
|
|
53
|
-
display: flex;
|
|
54
|
-
justify-content: space-between;
|
|
55
|
-
.inputsDivItem {
|
|
56
|
-
display: flex;
|
|
57
|
-
align-items: center;
|
|
58
|
-
padding: 0 4px;
|
|
59
|
-
white-space: nowrap;
|
|
60
|
-
.inputsDivItemLabel {
|
|
61
|
-
padding: 0 4px;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.reportTable {
|
|
67
|
-
width: 100%;
|
|
68
|
-
border-collapse: collapse;
|
|
69
|
-
table-layout:fixed;
|
|
70
|
-
word-break:break-all;
|
|
71
|
-
text-align: center;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
.reportMainForDisplay {
|
|
75
|
-
text-align: center;
|
|
76
|
-
margin: 10% auto;
|
|
77
|
-
font-size: 16px;
|
|
78
|
-
color: #000;
|
|
79
|
-
background-color: #fff;
|
|
80
|
-
border-radius: 8px;
|
|
81
|
-
|
|
82
|
-
.reportTitle {
|
|
83
|
-
font-weight: bold;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.subTitle {
|
|
87
|
-
display: flex;
|
|
88
|
-
justify-content: space-between;
|
|
89
|
-
|
|
90
|
-
.subTitleItems {
|
|
91
|
-
max-width: 30%;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.inputsDiv {
|
|
96
|
-
display: flex;
|
|
97
|
-
justify-content: space-around;
|
|
98
|
-
.inputsDivItem {
|
|
99
|
-
display: flex;
|
|
100
|
-
align-items: center;
|
|
101
|
-
padding: 0 4px;
|
|
102
|
-
white-space: nowrap;
|
|
103
|
-
.inputsDivItemLabel {
|
|
104
|
-
padding: 0 4px;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.reportTable {
|
|
110
|
-
width: 100%;
|
|
111
|
-
border-collapse: collapse;
|
|
112
|
-
table-layout:fixed;
|
|
113
|
-
word-break:break-all;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
.reportMainNoPadding {
|
|
117
|
-
text-align: center;
|
|
118
|
-
margin: 0 auto;
|
|
119
|
-
font-size: 16px;
|
|
120
|
-
color: #000;
|
|
121
|
-
background-color: #fff;
|
|
122
|
-
border-radius: 8px;
|
|
123
|
-
|
|
124
|
-
.reportTitle {
|
|
125
|
-
font-weight: bold;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.subTitle {
|
|
129
|
-
display: flex;
|
|
130
|
-
justify-content: space-between;
|
|
131
|
-
|
|
132
|
-
.subTitleItems {
|
|
133
|
-
max-width: 30%;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
.inputsDiv {
|
|
138
|
-
display: flex;
|
|
139
|
-
justify-content: space-between;
|
|
140
|
-
.inputsDivItem {
|
|
141
|
-
display: flex;
|
|
142
|
-
align-items: center;
|
|
143
|
-
padding: 0 4px;
|
|
144
|
-
white-space: nowrap;
|
|
145
|
-
.inputsDivItemLabel {
|
|
146
|
-
padding: 0 4px;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.reportTable {
|
|
152
|
-
width: 100%;
|
|
153
|
-
border-collapse: collapse;
|
|
154
|
-
table-layout:fixed;
|
|
155
|
-
word-break:break-all;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
.tools{
|
|
159
|
-
position: fixed;
|
|
160
|
-
right: 2%;
|
|
161
|
-
text-align: right;
|
|
162
|
-
width: 60%;
|
|
163
|
-
cursor: pointer;
|
|
164
|
-
.toolsItem{
|
|
165
|
-
width: 15%;
|
|
166
|
-
margin-right: 3%;
|
|
167
|
-
display: inline-block;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
</style>
|
|
171
|
-
</head>
|
|
172
|
-
<body>
|
|
173
|
-
<!-- 将需要打印的元素内容复制到新窗口中 -->
|
|
174
|
-
${elementToPrint.innerHTML}
|
|
175
|
-
</body>
|
|
176
|
-
</html>
|
|
177
|
-
`)
|
|
178
|
-
// 延迟执行打印,以确保新窗口的内容已加载完成
|
|
179
|
-
printWindow.document.close() // 关闭文档流,确保内容完全加载
|
|
180
|
-
setTimeout(() => {
|
|
181
|
-
printWindow.print() // 调用打印方法
|
|
182
|
-
printWindow.close()
|
|
183
|
-
}, 500) // 延迟500毫秒后执行打印
|
|
184
|
-
}
|
|
1
|
+
// print.js
|
|
2
|
+
|
|
3
|
+
export function printElement(elementToPrint) {
|
|
4
|
+
// 创建一个新的浏览器窗口
|
|
5
|
+
const printWindow = window.open('', '_blank', 'height=1024,width=768')
|
|
6
|
+
// 设置新窗口的文档内容
|
|
7
|
+
printWindow.document.write(`
|
|
8
|
+
<html>
|
|
9
|
+
<head>
|
|
10
|
+
<title>Print</title>
|
|
11
|
+
<style>
|
|
12
|
+
@page {
|
|
13
|
+
size: auto;
|
|
14
|
+
margin: 0mm;
|
|
15
|
+
}
|
|
16
|
+
html, body {
|
|
17
|
+
margin: 0;
|
|
18
|
+
padding: 0;
|
|
19
|
+
width: 100%;
|
|
20
|
+
height: 100%;
|
|
21
|
+
}
|
|
22
|
+
#print-container {
|
|
23
|
+
display: none
|
|
24
|
+
}
|
|
25
|
+
.img{
|
|
26
|
+
width: 95%;
|
|
27
|
+
height: 180px;
|
|
28
|
+
object-fit: cover;
|
|
29
|
+
}
|
|
30
|
+
.reportMain {
|
|
31
|
+
text-align: center;
|
|
32
|
+
margin: 0 auto;
|
|
33
|
+
font-size: 16px;
|
|
34
|
+
color: #000;
|
|
35
|
+
background-color: #fff;
|
|
36
|
+
border-radius: 8px;
|
|
37
|
+
|
|
38
|
+
.reportTitle {
|
|
39
|
+
font-weight: bold;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.subTitle {
|
|
43
|
+
display: flex;
|
|
44
|
+
justify-content: space-between;
|
|
45
|
+
margin-bottom: 1%;
|
|
46
|
+
|
|
47
|
+
.subTitleItems {
|
|
48
|
+
max-width: 30%;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.inputsDiv {
|
|
53
|
+
display: flex;
|
|
54
|
+
justify-content: space-between;
|
|
55
|
+
.inputsDivItem {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
padding: 0 4px;
|
|
59
|
+
white-space: nowrap;
|
|
60
|
+
.inputsDivItemLabel {
|
|
61
|
+
padding: 0 4px;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.reportTable {
|
|
67
|
+
width: 100%;
|
|
68
|
+
border-collapse: collapse;
|
|
69
|
+
table-layout:fixed;
|
|
70
|
+
word-break:break-all;
|
|
71
|
+
text-align: center;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
.reportMainForDisplay {
|
|
75
|
+
text-align: center;
|
|
76
|
+
margin: 10% auto;
|
|
77
|
+
font-size: 16px;
|
|
78
|
+
color: #000;
|
|
79
|
+
background-color: #fff;
|
|
80
|
+
border-radius: 8px;
|
|
81
|
+
|
|
82
|
+
.reportTitle {
|
|
83
|
+
font-weight: bold;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.subTitle {
|
|
87
|
+
display: flex;
|
|
88
|
+
justify-content: space-between;
|
|
89
|
+
|
|
90
|
+
.subTitleItems {
|
|
91
|
+
max-width: 30%;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.inputsDiv {
|
|
96
|
+
display: flex;
|
|
97
|
+
justify-content: space-around;
|
|
98
|
+
.inputsDivItem {
|
|
99
|
+
display: flex;
|
|
100
|
+
align-items: center;
|
|
101
|
+
padding: 0 4px;
|
|
102
|
+
white-space: nowrap;
|
|
103
|
+
.inputsDivItemLabel {
|
|
104
|
+
padding: 0 4px;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.reportTable {
|
|
110
|
+
width: 100%;
|
|
111
|
+
border-collapse: collapse;
|
|
112
|
+
table-layout:fixed;
|
|
113
|
+
word-break:break-all;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
.reportMainNoPadding {
|
|
117
|
+
text-align: center;
|
|
118
|
+
margin: 0 auto;
|
|
119
|
+
font-size: 16px;
|
|
120
|
+
color: #000;
|
|
121
|
+
background-color: #fff;
|
|
122
|
+
border-radius: 8px;
|
|
123
|
+
|
|
124
|
+
.reportTitle {
|
|
125
|
+
font-weight: bold;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.subTitle {
|
|
129
|
+
display: flex;
|
|
130
|
+
justify-content: space-between;
|
|
131
|
+
|
|
132
|
+
.subTitleItems {
|
|
133
|
+
max-width: 30%;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.inputsDiv {
|
|
138
|
+
display: flex;
|
|
139
|
+
justify-content: space-between;
|
|
140
|
+
.inputsDivItem {
|
|
141
|
+
display: flex;
|
|
142
|
+
align-items: center;
|
|
143
|
+
padding: 0 4px;
|
|
144
|
+
white-space: nowrap;
|
|
145
|
+
.inputsDivItemLabel {
|
|
146
|
+
padding: 0 4px;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.reportTable {
|
|
152
|
+
width: 100%;
|
|
153
|
+
border-collapse: collapse;
|
|
154
|
+
table-layout:fixed;
|
|
155
|
+
word-break:break-all;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
.tools{
|
|
159
|
+
position: fixed;
|
|
160
|
+
right: 2%;
|
|
161
|
+
text-align: right;
|
|
162
|
+
width: 60%;
|
|
163
|
+
cursor: pointer;
|
|
164
|
+
.toolsItem{
|
|
165
|
+
width: 15%;
|
|
166
|
+
margin-right: 3%;
|
|
167
|
+
display: inline-block;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
</style>
|
|
171
|
+
</head>
|
|
172
|
+
<body>
|
|
173
|
+
<!-- 将需要打印的元素内容复制到新窗口中 -->
|
|
174
|
+
${elementToPrint.innerHTML}
|
|
175
|
+
</body>
|
|
176
|
+
</html>
|
|
177
|
+
`)
|
|
178
|
+
// 延迟执行打印,以确保新窗口的内容已加载完成
|
|
179
|
+
printWindow.document.close() // 关闭文档流,确保内容完全加载
|
|
180
|
+
setTimeout(() => {
|
|
181
|
+
printWindow.print() // 调用打印方法
|
|
182
|
+
printWindow.close()
|
|
183
|
+
}, 500) // 延迟500毫秒后执行打印
|
|
184
|
+
}
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 根据类型获取日期区间字符串
|
|
3
|
-
* @param type '当年' | 'curMonth' | '当日'
|
|
4
|
-
* @param show 区分实际值还是显示值, true为实际值, false为显示值
|
|
5
|
-
* @returns [start, end] 例:['2024-01-01 00:00:00', '2024-12-31 23:59:59']
|
|
6
|
-
*/
|
|
7
|
-
export function getRangeByType(type: string, show: boolean): [string, string] {
|
|
8
|
-
const now = new Date()
|
|
9
|
-
const year = now.getFullYear()
|
|
10
|
-
const month = (now.getMonth() + 1).toString().padStart(2, '0')
|
|
11
|
-
const day = now.getDate().toString().padStart(2, '0')
|
|
12
|
-
|
|
13
|
-
if (!show) {
|
|
14
|
-
if (type === 'curYear') {
|
|
15
|
-
return [
|
|
16
|
-
`${year}-01-01 00:00:00`,
|
|
17
|
-
`${year}-12-31 23:59:59`,
|
|
18
|
-
]
|
|
19
|
-
}
|
|
20
|
-
if (type === 'curMonth') {
|
|
21
|
-
const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
|
|
22
|
-
return [
|
|
23
|
-
`${year}-${month}-01 00:00:00`,
|
|
24
|
-
`${year}-${month}-${lastDay.toString().padStart(2, '0')} 23:59:59`,
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
if (type === 'curDay') {
|
|
28
|
-
return [
|
|
29
|
-
`${year}-${month}-${day} 00:00:00`,
|
|
30
|
-
`${year}-${month}-${day} 23:59:59`,
|
|
31
|
-
]
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
if (show) {
|
|
35
|
-
if (type === 'curYear') {
|
|
36
|
-
return [
|
|
37
|
-
`${year}-01-01`,
|
|
38
|
-
`${year}-12-31`,
|
|
39
|
-
]
|
|
40
|
-
}
|
|
41
|
-
if (type === 'curMonth') {
|
|
42
|
-
const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
|
|
43
|
-
return [
|
|
44
|
-
`${year}-${month}-01`,
|
|
45
|
-
`${year}-${month}-${lastDay.toString().padStart(2, '0')}`,
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
if (type === 'curDay') {
|
|
49
|
-
return [
|
|
50
|
-
`${year}-${month}-${day}`,
|
|
51
|
-
`${year}-${month}-${day}`,
|
|
52
|
-
]
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// 兜底返回空字符串数组
|
|
56
|
-
return ['', '']
|
|
57
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 根据类型获取日期区间字符串
|
|
3
|
+
* @param type '当年' | 'curMonth' | '当日'
|
|
4
|
+
* @param show 区分实际值还是显示值, true为实际值, false为显示值
|
|
5
|
+
* @returns [start, end] 例:['2024-01-01 00:00:00', '2024-12-31 23:59:59']
|
|
6
|
+
*/
|
|
7
|
+
export function getRangeByType(type: string, show: boolean): [string, string] {
|
|
8
|
+
const now = new Date()
|
|
9
|
+
const year = now.getFullYear()
|
|
10
|
+
const month = (now.getMonth() + 1).toString().padStart(2, '0')
|
|
11
|
+
const day = now.getDate().toString().padStart(2, '0')
|
|
12
|
+
|
|
13
|
+
if (!show) {
|
|
14
|
+
if (type === 'curYear') {
|
|
15
|
+
return [
|
|
16
|
+
`${year}-01-01 00:00:00`,
|
|
17
|
+
`${year}-12-31 23:59:59`,
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
if (type === 'curMonth') {
|
|
21
|
+
const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
|
|
22
|
+
return [
|
|
23
|
+
`${year}-${month}-01 00:00:00`,
|
|
24
|
+
`${year}-${month}-${lastDay.toString().padStart(2, '0')} 23:59:59`,
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
if (type === 'curDay') {
|
|
28
|
+
return [
|
|
29
|
+
`${year}-${month}-${day} 00:00:00`,
|
|
30
|
+
`${year}-${month}-${day} 23:59:59`,
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (show) {
|
|
35
|
+
if (type === 'curYear') {
|
|
36
|
+
return [
|
|
37
|
+
`${year}-01-01`,
|
|
38
|
+
`${year}-12-31`,
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
if (type === 'curMonth') {
|
|
42
|
+
const lastDay = new Date(year, now.getMonth() + 1, 0).getDate()
|
|
43
|
+
return [
|
|
44
|
+
`${year}-${month}-01`,
|
|
45
|
+
`${year}-${month}-${lastDay.toString().padStart(2, '0')}`,
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
if (type === 'curDay') {
|
|
49
|
+
return [
|
|
50
|
+
`${year}-${month}-${day}`,
|
|
51
|
+
`${year}-${month}-${day}`,
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// 兜底返回空字符串数组
|
|
56
|
+
return ['', '']
|
|
57
|
+
}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import XCellList from '@af-mobile-client-vue3/components/data/XCellList/index.vue'
|
|
3
3
|
import NormalDataLayout from '@af-mobile-client-vue3/components/layout/NormalDataLayout/index.vue'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Col as VanCol,
|
|
6
|
+
Icon as VanIcon,
|
|
7
|
+
Row as VanRow,
|
|
8
|
+
} from 'vant'
|
|
5
9
|
import { defineEmits, ref } from 'vue'
|
|
6
10
|
import { useRouter } from 'vue-router'
|
|
7
11
|
|
|
8
12
|
// 定义事件
|
|
9
13
|
const emit = defineEmits(['deleteRow'])
|
|
10
|
-
const userInfo = useUserStore().getUserInfo()
|
|
11
14
|
// 访问路由
|
|
12
15
|
const router = useRouter()
|
|
13
16
|
// 获取默认值
|
|
14
17
|
const idKey = ref('o_id')
|
|
15
18
|
|
|
16
19
|
// 简易crud表单测试
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// const configName = ref('lngPriceManageMobileCRUD')
|
|
20
|
-
const configName = ref('测试2')
|
|
21
|
-
const serviceName = ref('af-gaslink')
|
|
22
|
-
// const configName = ref('mobile_liushuiQueryCRUD')
|
|
23
|
-
// const serviceName = ref('af-revenue')
|
|
20
|
+
const configName = ref('ApplyMobileSuperviseCRUD')
|
|
21
|
+
const serviceName = ref('af-apply')
|
|
24
22
|
|
|
25
23
|
// 资源权限测试
|
|
26
24
|
// const configName = ref('crud_sources_test')
|
|
@@ -56,11 +54,11 @@ const serviceName = ref('af-gaslink')
|
|
|
56
54
|
function toDetail(item) {
|
|
57
55
|
router.push({
|
|
58
56
|
name: 'XFormGroupView',
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
query: {
|
|
58
|
+
id: item[idKey.value],
|
|
59
|
+
// id: item.rr_id,
|
|
60
|
+
// o_id: item.o_id,
|
|
61
|
+
},
|
|
64
62
|
})
|
|
65
63
|
}
|
|
66
64
|
|
|
@@ -76,36 +74,23 @@ function toDetail(item) {
|
|
|
76
74
|
// },
|
|
77
75
|
// })
|
|
78
76
|
// }
|
|
79
|
-
function addOption() {
|
|
80
|
-
router.push({
|
|
81
|
-
name: 'XFormGroupView',
|
|
82
|
-
// params: { id: totalCount.value },
|
|
83
|
-
// query: {
|
|
84
|
-
// configName: configName.value,
|
|
85
|
-
// serviceName: serviceName.value,
|
|
86
|
-
// mode: '新增',
|
|
87
|
-
// },
|
|
88
|
-
})
|
|
89
|
-
// 如果存在回调函数,调用它并传递true表示已处理
|
|
90
|
-
// if (typeof callback === 'function') {
|
|
91
|
-
// callback(true)
|
|
92
|
-
// }
|
|
93
|
-
}
|
|
94
77
|
|
|
95
78
|
// 修改功能
|
|
96
|
-
function updateRow(result) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
79
|
+
// function updateRow(result) {
|
|
80
|
+
// router.push({
|
|
81
|
+
// name: 'XFormView',
|
|
82
|
+
// params: { id: result.o_id, openid: result.o_id },
|
|
83
|
+
// query: {
|
|
84
|
+
// configName: configName.value,
|
|
85
|
+
// serviceName: serviceName.value,
|
|
86
|
+
// mode: '修改',
|
|
87
|
+
// },
|
|
88
|
+
// })
|
|
89
|
+
// }
|
|
90
|
+
// 删除功能
|
|
91
|
+
function phone(result) {
|
|
92
|
+
console.log('phone==', result)
|
|
107
93
|
}
|
|
108
|
-
|
|
109
94
|
// 删除功能
|
|
110
95
|
function deleteRow(result) {
|
|
111
96
|
emit('deleteRow', result.o_id)
|
|
@@ -118,28 +103,166 @@ function deleteRow(result) {
|
|
|
118
103
|
<XCellList
|
|
119
104
|
:config-name="configName"
|
|
120
105
|
:service-name="serviceName"
|
|
121
|
-
:custom-add="true"
|
|
122
|
-
:custom-edit="true"
|
|
123
106
|
:id-key="idKey"
|
|
124
107
|
@to-detail="toDetail"
|
|
125
108
|
@delete-row="deleteRow"
|
|
126
|
-
@
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
109
|
+
@phone="phone"
|
|
110
|
+
>
|
|
111
|
+
<template #search-after>
|
|
112
|
+
<div class="cell-search-after">
|
|
113
|
+
<VanRow style="padding: 0 8px;">
|
|
114
|
+
<VanCol span="8">
|
|
115
|
+
<span style="font-weight: bolder">流程汇总</span>
|
|
116
|
+
</VanCol>
|
|
117
|
+
<VanCol span="16" class="stat-date-range">
|
|
118
|
+
<VanIcon name="clock-o" />
|
|
119
|
+
<span>2025-07-08 ~ 2025-07-14</span>
|
|
120
|
+
</VanCol>
|
|
121
|
+
</VanRow>
|
|
122
|
+
<VanRow gutter="12">
|
|
123
|
+
<VanCol span="8">
|
|
124
|
+
<div class="stat-card stat-total">
|
|
125
|
+
<div class="stat-num">
|
|
126
|
+
3
|
|
127
|
+
</div>
|
|
128
|
+
<div class="stat-label">
|
|
129
|
+
总流程数
|
|
130
|
+
</div>
|
|
131
|
+
<VanIcon name="notes-o" class="stat-icon" />
|
|
132
|
+
</div>
|
|
133
|
+
</VanCol>
|
|
134
|
+
<VanCol span="8">
|
|
135
|
+
<div class="stat-card stat-done">
|
|
136
|
+
<div class="stat-num">
|
|
137
|
+
2
|
|
138
|
+
</div>
|
|
139
|
+
<div class="stat-label">
|
|
140
|
+
已完成
|
|
141
|
+
</div>
|
|
142
|
+
<VanIcon name="passed" class="stat-icon" />
|
|
143
|
+
</div>
|
|
144
|
+
</VanCol>
|
|
145
|
+
<VanCol span="8">
|
|
146
|
+
<div class="stat-card stat-processing">
|
|
147
|
+
<div class="stat-num">
|
|
148
|
+
1
|
|
149
|
+
</div>
|
|
150
|
+
<div class="stat-label">
|
|
151
|
+
处理中
|
|
152
|
+
</div>
|
|
153
|
+
<VanIcon name="todo-list-o" class="stat-icon" />
|
|
154
|
+
</div>
|
|
155
|
+
</VanCol>
|
|
156
|
+
</VanRow>
|
|
157
|
+
</div>
|
|
158
|
+
</template>
|
|
159
|
+
</XCellList>
|
|
140
160
|
</template>
|
|
141
161
|
</NormalDataLayout>
|
|
142
162
|
</template>
|
|
143
163
|
|
|
144
164
|
<style scoped lang="less">
|
|
165
|
+
.cell-search-after {
|
|
166
|
+
padding: 8px 12px;
|
|
167
|
+
background-color: #fff;
|
|
168
|
+
.van-row:first-child {
|
|
169
|
+
align-items: center;
|
|
170
|
+
margin-bottom: 8px;
|
|
171
|
+
padding: 0 2px;
|
|
172
|
+
h4 {
|
|
173
|
+
font-size: 1.08rem;
|
|
174
|
+
font-weight: 600;
|
|
175
|
+
margin: 0;
|
|
176
|
+
color: #222;
|
|
177
|
+
letter-spacing: 1px;
|
|
178
|
+
}
|
|
179
|
+
.stat-date-range {
|
|
180
|
+
display: flex;
|
|
181
|
+
align-items: center;
|
|
182
|
+
justify-content: flex-end;
|
|
183
|
+
font-size: 0.92rem;
|
|
184
|
+
color: #b0b3b8;
|
|
185
|
+
font-weight: 400;
|
|
186
|
+
span {
|
|
187
|
+
margin-left: 4px;
|
|
188
|
+
font-size: 0.92rem;
|
|
189
|
+
color: #b0b3b8;
|
|
190
|
+
}
|
|
191
|
+
.van-icon {
|
|
192
|
+
font-size: 1rem;
|
|
193
|
+
color: #b0b3b8;
|
|
194
|
+
margin-right: 2px;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
.van-row:nth-child(2) {
|
|
199
|
+
margin-top: 8px;
|
|
200
|
+
// 统计卡片间距由gutter控制
|
|
201
|
+
.van-col {
|
|
202
|
+
// 让卡片宽度自适应
|
|
203
|
+
.stat-card {
|
|
204
|
+
width: 100%;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
.stat-card {
|
|
209
|
+
display: flex;
|
|
210
|
+
flex-direction: column;
|
|
211
|
+
align-items: center;
|
|
212
|
+
justify-content: center;
|
|
213
|
+
border-radius: 12px;
|
|
214
|
+
padding: 12px 0 8px 0;
|
|
215
|
+
min-height: 64px;
|
|
216
|
+
position: relative;
|
|
217
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.03);
|
|
218
|
+
background: #f7f8fa;
|
|
219
|
+
.stat-num {
|
|
220
|
+
font-size: 1.5rem;
|
|
221
|
+
font-weight: 600;
|
|
222
|
+
margin-bottom: 2px;
|
|
223
|
+
}
|
|
224
|
+
.stat-label {
|
|
225
|
+
font-size: 0.95rem;
|
|
226
|
+
color: #888;
|
|
227
|
+
margin-bottom: 2px;
|
|
228
|
+
}
|
|
229
|
+
.stat-icon {
|
|
230
|
+
position: absolute;
|
|
231
|
+
top: 8px;
|
|
232
|
+
right: 10px;
|
|
233
|
+
font-size: 1.1rem;
|
|
234
|
+
opacity: 0.4;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
.stat-total {
|
|
238
|
+
background: #f0f5ff;
|
|
239
|
+
color: #2f54eb;
|
|
240
|
+
.stat-num {
|
|
241
|
+
color: #2f54eb;
|
|
242
|
+
}
|
|
243
|
+
.stat-icon {
|
|
244
|
+
color: #2f54eb;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
.stat-done {
|
|
248
|
+
background: #e6fffb;
|
|
249
|
+
color: #13c2c2;
|
|
250
|
+
.stat-num {
|
|
251
|
+
color: #13c2c2;
|
|
252
|
+
}
|
|
253
|
+
.stat-icon {
|
|
254
|
+
color: #13c2c2;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
.stat-processing {
|
|
258
|
+
background: #f9f0ff;
|
|
259
|
+
color: #b37feb;
|
|
260
|
+
.stat-num {
|
|
261
|
+
color: #b37feb;
|
|
262
|
+
}
|
|
263
|
+
.stat-icon {
|
|
264
|
+
color: #b37feb;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
145
268
|
</style>
|
|
@@ -5,19 +5,16 @@ import { showDialog } from 'vant'
|
|
|
5
5
|
import { ref } from 'vue'
|
|
6
6
|
import { useRoute } from 'vue-router'
|
|
7
7
|
|
|
8
|
-
// const configName = ref('reviewFormGroup')
|
|
9
|
-
// const serviceName = ref('af-revenue')
|
|
10
|
-
|
|
11
8
|
// 纯表单
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const configName = ref('form_check_test')
|
|
10
|
+
const serviceName = ref('af-system')
|
|
14
11
|
|
|
15
12
|
// const configName = ref("计划下发Form")
|
|
16
13
|
// const serviceName = ref("af-linepatrol")
|
|
17
14
|
|
|
18
15
|
// 表单组
|
|
19
|
-
const configName = ref('lngChargeAuditMobileFormGroup')
|
|
20
|
-
const serviceName = ref('af-gaslink')
|
|
16
|
+
// const configName = ref('lngChargeAuditMobileFormGroup')
|
|
17
|
+
// const serviceName = ref('af-gaslink')
|
|
21
18
|
|
|
22
19
|
const formData = ref({})
|
|
23
20
|
const formGroup = ref(null)
|
package/vite.config.ts
CHANGED
|
@@ -11,8 +11,8 @@ export default ({ mode }: ConfigEnv): UserConfig => {
|
|
|
11
11
|
|
|
12
12
|
const appProxys = {}
|
|
13
13
|
|
|
14
|
-
const v4Server = 'http://
|
|
15
|
-
const v3Server = '
|
|
14
|
+
const v4Server = 'http://192.168.50.67:31577'
|
|
15
|
+
const v3Server = 'https://wkf.qhgas.com'
|
|
16
16
|
const OSSServerDev = 'http://192.168.50.67:30351'
|
|
17
17
|
const geoserver = 'http://39.104.49.8:30372'
|
|
18
18
|
// const OSSServerProd = 'http://192.168.50.67:31351'
|