af-mobile-client-vue3 1.2.7 → 1.2.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "af-mobile-client-vue3",
3
3
  "type": "module",
4
- "version": "1.2.7",
4
+ "version": "1.2.8",
5
5
  "packageManager": "pnpm@10.12.3",
6
6
  "description": "Vue + Vite component lib",
7
7
  "engines": {
@@ -4,8 +4,8 @@ import { ref } from 'vue'
4
4
 
5
5
  const { serviceName, dictName, dictValue } = withDefaults(defineProps<{
6
6
  serviceName: string
7
- dictName: string
8
- dictValue: string
7
+ dictName: string | null | undefined
8
+ dictValue: string | null | undefined
9
9
  }>(), {})
10
10
 
11
11
  // 字面值
@@ -186,8 +186,8 @@ function initComponent() {
186
186
  })
187
187
  }
188
188
  }
189
-
190
- if (item.showTitleBtn)
189
+ console.log('item===', item)
190
+ if (item.btnIcon)
191
191
  btnList.value.push(item)
192
192
 
193
193
  if (result.showSortIcon && item.sortable) {
@@ -604,7 +604,7 @@ defineExpose({
604
604
  <VanRow gutter="20" class="card_item_details" @click="emit('toDetail', item)">
605
605
  <VanCol v-for="column of detailColumns" :key="`details_${column.dataIndex}`" :span="column.span">
606
606
  <p>
607
- {{ `${column.title}: ` }}
607
+ {{ `${column.showLabel ? `${column.title}: ` : ''}` }}
608
608
  <XBadge
609
609
  :style="handleFunctionStyle(column.styleFunctionForValue, item)"
610
610
  :dict-name="column.dictName" :dict-value="item[column.dataIndex]"
@@ -629,7 +629,7 @@ defineExpose({
629
629
  >
630
630
  <div class="tag-content">
631
631
  <VanIcon v-if="column.tagIcon" :name="column.tagIcon" class="tag-icon" />
632
- <span class="tag-title">{{ column.title }}:</span>
632
+ <span class="tag-title">{{ `${column.showLabel ? `${column.title}: ` : ''}` }}</span>
633
633
  <XBadge
634
634
  :dict-name="column.dictName"
635
635
  :dict-value="item[column.dataIndex]"
@@ -651,7 +651,7 @@ defineExpose({
651
651
  <VanCol v-for="column of footColumns" :key="`foot_${column.dataIndex}`" :span="12">
652
652
  <p>
653
653
  <span :style="handleFunctionStyle(column.styleFunctionForTitle, item)">
654
- {{ column.title }}:
654
+ {{ `${column.showLabel ? `${column.title}: ` : ''}` }}
655
655
  </span>
656
656
  <XBadge
657
657
  :style="handleFunctionStyle(column.styleFunctionForValue, item)"
@@ -718,6 +718,8 @@ defineExpose({
718
718
  --van-search-padding: 3px;
719
719
  --van-dropdown-menu-title-padding: 3px;
720
720
  --van-cell-vertical-padding: 0px;
721
+ --van-text-color-2: rgb(75, 85, 99);
722
+ --van-button-normal-font-size: 13px;
721
723
  .main {
722
724
  flex: 1;
723
725
  min-height: 0;
@@ -760,7 +762,7 @@ defineExpose({
760
762
  align-items: center;
761
763
  .card_item_title {
762
764
  font-size: var(--van-font-size-lg);
763
- font-weight: 500;
765
+ font-weight: 700;
764
766
  color: var(--van-text-color);
765
767
  margin: 0;
766
768
  }
@@ -771,9 +773,8 @@ defineExpose({
771
773
  align-items: center;
772
774
  margin-left: 8px;
773
775
  .card_item_subtitle {
774
- font-size: var(--van-font-size-xs);
776
+ font-size: var(--van-font-size-md);
775
777
  color: var(--van-text-color-2);
776
- margin: 0;
777
778
  }
778
779
  }
779
780
 
@@ -790,7 +791,7 @@ defineExpose({
790
791
  color: var(--van-primary-color);
791
792
  background-color: rgba(25, 137, 250, 0.1);
792
793
  border-radius: 6px;
793
- font-size: 18px;
794
+ font-size: var(--van-font-size-lg);
794
795
  display: flex;
795
796
  align-items: center;
796
797
  justify-content: center;
@@ -821,8 +822,8 @@ defineExpose({
821
822
 
822
823
  .tag-item {
823
824
  width: auto;
824
- font-size: var(--van-font-size-xs);
825
- margin: 2px 4px;
825
+ font-size: var(--van-font-size-sm);
826
+ margin: 4px 4px;
826
827
  :deep(.van-tag) {
827
828
  width: fit-content;
828
829
  display: inline-flex;
@@ -849,9 +850,9 @@ defineExpose({
849
850
  }
850
851
 
851
852
  .card_item_details {
852
- font-size: var(--van-font-size-sm);
853
+ font-size: var(--van-font-size-md);
853
854
  color: var(--van-text-color-2);
854
- padding: 8px 0;
855
+ padding: 4px 0;
855
856
 
856
857
  .van-col {
857
858
  margin-bottom: 4px;
@@ -876,9 +877,9 @@ defineExpose({
876
877
  }
877
878
 
878
879
  .card_item_footer {
879
- font-size: var(--van-font-size-sm);
880
+ font-size: var(--van-font-size-md);
880
881
  color: var(--van-text-color-2);
881
- padding: 8px 0;
882
+ padding: 4px 0;
882
883
  .van-col:last-child {
883
884
  text-align: right;
884
885
  }
@@ -888,8 +889,8 @@ defineExpose({
888
889
  }
889
890
 
890
891
  .card_item_bottom {
891
- margin-top: 12px;
892
- padding-top: 12px;
892
+ margin-top: 8px;
893
+ padding-top: 10px;
893
894
  border-top: 1px solid rgba(0, 0, 0, 0.06);
894
895
 
895
896
  .more-button {
@@ -900,7 +901,7 @@ defineExpose({
900
901
  justify-content: center;
901
902
  color: var(--van-text-color-2);
902
903
  cursor: pointer;
903
- font-size: 18px;
904
+ font-size: var(--van-font-size-lg);
904
905
  background-color: var(--van-background);
905
906
  border-radius: 6px;
906
907
  transition: all 0.2s ease;
@@ -922,7 +923,7 @@ defineExpose({
922
923
  min-width: 76px;
923
924
  height: 40px;
924
925
  border-radius: 10px;
925
- font-size: 1rem;
926
+ // font-size: var(--van-font-size-md);
926
927
  transition: all 0.2s ease;
927
928
  &:active {
928
929
  transform: scale(0.95);
@@ -348,22 +348,22 @@ function handleCloseScanButton() {
348
348
  <VanCol span="10">
349
349
  排序字段
350
350
  </VanCol>
351
- <VanCol span="2">
351
+ <!-- <VanCol span="2">
352
352
  <div class="reset-item" @click.stop="currentOrderVal = undefined">
353
353
  重置
354
354
  </div>
355
- </VanCol>
355
+ </VanCol> -->
356
356
  </VanRow>
357
357
  <XGridDropOption :columns="props.orderList" :columns-field-names="colFieldNames" />
358
358
  <VanRow justify="space-between" class="filter-title">
359
359
  <VanCol span="10">
360
360
  排序规则
361
361
  </VanCol>
362
- <VanCol span="2">
362
+ <!-- <VanCol span="2">
363
363
  <div class="reset-item" @click.stop="currentSortordVal = undefined">
364
364
  重置
365
365
  </div>
366
- </VanCol>
366
+ </VanCol> -->
367
367
  </VanRow>
368
368
  <XGridDropOption :columns="sortordList" :columns-field-names="colFieldNames" />
369
369
  </template>
@@ -372,11 +372,11 @@ function handleCloseScanButton() {
372
372
  <VanCol span="10">
373
373
  {{ item.name }}
374
374
  </VanCol>
375
- <VanCol span="2">
375
+ <!-- <VanCol span="2">
376
376
  <div class="reset-item" @click.stop="resetOptionItem(item.model)">
377
377
  重置
378
378
  </div>
379
- </VanCol>
379
+ </VanCol> -->
380
380
  </VanRow>
381
381
  <XFormItem v-model="conditionParams[item.model]" :form="conditionParams" :attr="item" :service-name="props.serviceName" :show-label="false" />
382
382
  </template>
@@ -400,6 +400,7 @@ function handleCloseScanButton() {
400
400
 
401
401
  <style scoped lang="less">
402
402
  #XCellListFilter {
403
+ --van-cell-horizontal-padding: 0;
403
404
  width: 100%;
404
405
  .filter-buttons {
405
406
  display: flex;
@@ -490,7 +491,7 @@ function handleCloseScanButton() {
490
491
  }
491
492
  // 下拉菜单遮罩层
492
493
  :deep(.van-overlay) {
493
- z-index: 9
494
+ z-index: 9;
494
495
  }
495
496
  }
496
497
 
@@ -501,7 +502,7 @@ function handleCloseScanButton() {
501
502
  width: 40px;
502
503
  height: 40px;
503
504
  border-radius: 10px;
504
- background-color: rgba(245,245,245);
505
+ background-color: rgba(245, 245, 245);
505
506
  cursor: pointer;
506
507
  position: relative;
507
508
  z-index: 1;
@@ -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 { useUserStore } from '@af-mobile-client-vue3/stores/modules/user'
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
- // const configName = ref('orderCarInMobileCRUD')
18
- // const serviceName = ref('af-gaslink')
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
- // query: {
60
- // id: item[idKey.value],
61
- // id: item.rr_id,
62
- // o_id: item.o_id,
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
- console.log('用户----', userInfo)
98
- router.push({
99
- name: 'XFormGroupView',
100
- // params: { id: result.o_id, openid: result.o_id },
101
- // query: {
102
- // configName: configName.value,
103
- // serviceName: serviceName.value,
104
- // mode: '修改',
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
- @update="updateRow"
127
- @add="addOption"
128
- />
129
-
130
- <!-- :fix-query-form="{ u_f_price_state: ['生效', '待生效'] }" -->
131
-
132
- <!-- <XCellList -->
133
- <!-- :config-name="configName" -->
134
- <!-- :service-name="serviceName" -->
135
- <!-- :fix-query-form="{ o_f_oper_name: 'edu_test' }" -->
136
- <!-- :id-key="idKey" -->
137
- <!-- @to-detail="toDetail" -->
138
- <!-- @delete-row="deleteRow" -->
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
- // const configName = ref('form_check_test')
13
- // const serviceName = ref('af-system')
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://aote-office.8866.org:31567'
15
- const v3Server = 'http://aote-office.8866.org:31567'
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'