af-mobile-client-vue3 1.1.23 → 1.1.24
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 +100 -111
- package/src/components/core/XGridDropOption/index.vue +28 -23
- package/src/components/data/XCellList/index.vue +93 -32
- package/src/components/data/XReportGrid/XReportDemo.vue +33 -33
- package/src/components/data/XReportGrid/print.js +184 -184
- package/src/router/guards.ts +1 -1
- package/src/utils/queryFormDefaultRangePicker.ts +57 -57
- package/src/views/component/XCellListView/index.vue +19 -57
- package/src/views/component/XFormGroupView/index.vue +2 -5
- package/tsconfig.json +43 -43
- package/vite.config.ts +11 -11
package/package.json
CHANGED
|
@@ -1,111 +1,100 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "af-mobile-client-vue3",
|
|
3
|
-
"type": "module",
|
|
4
|
-
"version": "1.1.
|
|
5
|
-
"description": "Vue + Vite component lib",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"engines": {
|
|
8
|
-
"node": ">=18.12.0",
|
|
9
|
-
"pnpm": ">=8.15.0"
|
|
10
|
-
},
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"@
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
"
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
"commitizen": {
|
|
102
|
-
"path": "./node_modules/cz-emoji-chinese"
|
|
103
|
-
},
|
|
104
|
-
"cz-emoji-chinese": {
|
|
105
|
-
"skipQuestions": [
|
|
106
|
-
"body",
|
|
107
|
-
"scope"
|
|
108
|
-
]
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "af-mobile-client-vue3",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "1.1.24",
|
|
5
|
+
"description": "Vue + Vite component lib",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=18.12.0",
|
|
9
|
+
"pnpm": ">=8.15.0"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@micro-zoe/micro-app": "1.0.0-rc.24",
|
|
13
|
+
"@vant/area-data": "^2.0.0",
|
|
14
|
+
"@unhead/vue": "^2.0.5",
|
|
15
|
+
"@vant/touch-emulator": "^1.4.0",
|
|
16
|
+
"@vant/use": "^1.6.0",
|
|
17
|
+
"@vueuse/core": "^13.1.0",
|
|
18
|
+
"@iconify/vue": "4.3.0",
|
|
19
|
+
"animate.css": "^4.1.1",
|
|
20
|
+
"axios": "^1.8.4",
|
|
21
|
+
"crypto-js": "^4.2.0",
|
|
22
|
+
"echarts": "^5.6.0",
|
|
23
|
+
"lodash-es": "^4.17.21",
|
|
24
|
+
"nprogress": "^0.2.0",
|
|
25
|
+
"ol": "^10.5.0",
|
|
26
|
+
"pinia": "^3.0.2",
|
|
27
|
+
"pinia-plugin-persistedstate": "^4.2.0",
|
|
28
|
+
"qs": "^6.14.0",
|
|
29
|
+
"resize-detector": "^0.3.0",
|
|
30
|
+
"store": "^2.0.12",
|
|
31
|
+
"vant": "^4.9.18",
|
|
32
|
+
"vconsole": "^3.15.1",
|
|
33
|
+
"vue": "^3.5.13",
|
|
34
|
+
"vue-router": "^4.5.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@antfu/eslint-config": "^4.12.0",
|
|
38
|
+
"@iconify/json": "2.2.318",
|
|
39
|
+
"@types/crypto-js": "^4.2.2",
|
|
40
|
+
"@types/lodash-es": "^4.17.12",
|
|
41
|
+
"@types/node": "^22.14.1",
|
|
42
|
+
"@types/nprogress": "^0.2.3",
|
|
43
|
+
"@types/store": "^2.0.5",
|
|
44
|
+
"@unocss/eslint-plugin": "^66.1.0-beta.11",
|
|
45
|
+
"@unocss/preset-rem-to-px": "66.1.0-beta.11",
|
|
46
|
+
"@vitejs/plugin-legacy": "^6.0.2",
|
|
47
|
+
"@vitejs/plugin-vue": "^5.2.3",
|
|
48
|
+
"autoprefixer": "^10.4.21",
|
|
49
|
+
"bumpp": "^10.1.0",
|
|
50
|
+
"commitizen": "^4.3.1",
|
|
51
|
+
"consola": "^3.4.2",
|
|
52
|
+
"cross-env": "^7.0.3",
|
|
53
|
+
"cz-emoji-chinese": "^0.3.1",
|
|
54
|
+
"eslint": "^9.24.0",
|
|
55
|
+
"eslint-ts-patch": "^8.57.0-0",
|
|
56
|
+
"husky": "^9.1.7",
|
|
57
|
+
"less": "^4.3.0",
|
|
58
|
+
"mockjs": "^1.1.0",
|
|
59
|
+
"postcss-mobile-forever": "^5.0.0",
|
|
60
|
+
"rollup": "^4.40.0",
|
|
61
|
+
"terser": "^5.39.0",
|
|
62
|
+
"typescript": "^5.8.3",
|
|
63
|
+
"unocss": "^66.1.0-beta.11",
|
|
64
|
+
"unplugin-auto-import": "^19.1.2",
|
|
65
|
+
"unplugin-vue-components": "^28.4.1",
|
|
66
|
+
"unplugin-vue-router": "^0.12.0",
|
|
67
|
+
"vite": "^6.2.6",
|
|
68
|
+
"vite-plugin-compression": "^0.5.1",
|
|
69
|
+
"vite-plugin-mock-dev-server": "^1.8.5",
|
|
70
|
+
"vite-plugin-pwa": "^1.0.0",
|
|
71
|
+
"vite-plugin-sitemap": "^0.7.1",
|
|
72
|
+
"vite-plugin-svg-icons": "^2.0.1",
|
|
73
|
+
"vite-plugin-vconsole": "^2.1.1",
|
|
74
|
+
"vite-plugin-vue-devtools": "^7.7.2",
|
|
75
|
+
"vite-plugin-vue-layouts": "^0.11.0",
|
|
76
|
+
"vitest": "^3.1.1",
|
|
77
|
+
"vue-tsc": "^2.2.8"
|
|
78
|
+
},
|
|
79
|
+
"config": {
|
|
80
|
+
"commitizen": {
|
|
81
|
+
"path": "./node_modules/cz-emoji-chinese"
|
|
82
|
+
},
|
|
83
|
+
"cz-emoji-chinese": {
|
|
84
|
+
"skipQuestions": [
|
|
85
|
+
"body",
|
|
86
|
+
"scope"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"scripts": {
|
|
91
|
+
"dev": "cross-env MOCK_SERVER_PORT=8086 vite",
|
|
92
|
+
"build": "vue-tsc --noEmit && vite build",
|
|
93
|
+
"build:dev": "vue-tsc --noEmit && vite build --mode=development",
|
|
94
|
+
"preview": "vite preview",
|
|
95
|
+
"lint": "eslint . && vue-tsc --noEmit",
|
|
96
|
+
"lint:fix": "eslint . --fix",
|
|
97
|
+
"test": "vitest",
|
|
98
|
+
"release": "bumpp --commit --push --tag"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -76,32 +76,28 @@ function valueChange(value: string | string[]) {
|
|
|
76
76
|
<div id="XGridDropOption">
|
|
77
77
|
<template v-if="props.multiple">
|
|
78
78
|
<VanCheckboxGroup v-model="checked as string[]" direction="horizontal" @change="valueChange">
|
|
79
|
-
<
|
|
80
|
-
<
|
|
81
|
-
<
|
|
82
|
-
<
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
</VanGridItem>
|
|
89
|
-
</VanGrid>
|
|
79
|
+
<div class="option-container">
|
|
80
|
+
<div v-for="colRow in props.columns" :key="colRow[props.columnsFieldNames.text]" class="option-item">
|
|
81
|
+
<VanCheckbox :name="colRow[props.columnsFieldNames.value]">
|
|
82
|
+
<VanButton type="default" size="small" :class="{ 'select-text-col': classSel(colRow) }">
|
|
83
|
+
{{ colRow[props.columnsFieldNames.text] }}
|
|
84
|
+
</VanButton>
|
|
85
|
+
</VanCheckbox>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
90
88
|
</VanCheckboxGroup>
|
|
91
89
|
</template>
|
|
92
90
|
<template v-else>
|
|
93
91
|
<VanRadioGroup v-model="checked" direction="horizontal" @change="valueChange">
|
|
94
|
-
<
|
|
95
|
-
<
|
|
96
|
-
<
|
|
97
|
-
<
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
</VanGridItem>
|
|
104
|
-
</VanGrid>
|
|
92
|
+
<div class="option-container">
|
|
93
|
+
<div v-for="colRow in props.columns" :key="colRow[props.columnsFieldNames.text]" class="option-item">
|
|
94
|
+
<VanRadio :name="colRow[props.columnsFieldNames.value]">
|
|
95
|
+
<VanButton type="default" size="small" :class="{ 'select-text-col': classSel(colRow) }">
|
|
96
|
+
{{ colRow[props.columnsFieldNames.text] }}
|
|
97
|
+
</VanButton>
|
|
98
|
+
</VanRadio>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
105
101
|
</VanRadioGroup>
|
|
106
102
|
</template>
|
|
107
103
|
</div>
|
|
@@ -116,10 +112,18 @@ function valueChange(value: string | string[]) {
|
|
|
116
112
|
--van-radio-label-margin: 0px;
|
|
117
113
|
--van-button-default-border-color: 'rgb(247,248,250)';
|
|
118
114
|
|
|
119
|
-
.
|
|
115
|
+
.option-container {
|
|
116
|
+
display: flex;
|
|
117
|
+
flex-wrap: wrap;
|
|
118
|
+
gap: 8px;
|
|
120
119
|
width: 100%;
|
|
121
120
|
}
|
|
122
121
|
|
|
122
|
+
.option-item {
|
|
123
|
+
flex: 0 1 auto;
|
|
124
|
+
min-width: fit-content;
|
|
125
|
+
}
|
|
126
|
+
|
|
123
127
|
.select-text-col {
|
|
124
128
|
color: blue;
|
|
125
129
|
}
|
|
@@ -140,6 +144,7 @@ function valueChange(value: string | string[]) {
|
|
|
140
144
|
:deep(.van-button) {
|
|
141
145
|
width: 100%;
|
|
142
146
|
background-color: rgb(247,248,250);
|
|
147
|
+
white-space: nowrap;
|
|
143
148
|
}
|
|
144
149
|
:deep(.van-checkbox__label) {
|
|
145
150
|
width: 100%;
|
|
@@ -3,6 +3,7 @@ import XBadge from '@af-mobile-client-vue3/components/data/XBadge/index.vue'
|
|
|
3
3
|
import XCellListFilter from '@af-mobile-client-vue3/components/data/XCellListFilter/index.vue'
|
|
4
4
|
import { getConfigByName, query } from '@af-mobile-client-vue3/services/api/common'
|
|
5
5
|
import { getRangeByType } from '@af-mobile-client-vue3/utils/queryFormDefaultRangePicker'
|
|
6
|
+
import { executeStrFunctionByContext } from '@af-mobile-client-vue3/utils/runEvalFunction'
|
|
6
7
|
import LoadError from '@af-mobile-client-vue3/views/common/LoadError.vue'
|
|
7
8
|
import {
|
|
8
9
|
showConfirmDialog,
|
|
@@ -18,7 +19,7 @@ import {
|
|
|
18
19
|
Space as VanSpace,
|
|
19
20
|
Tag as VanTag,
|
|
20
21
|
} from 'vant'
|
|
21
|
-
import { computed, defineEmits, defineProps, onBeforeMount, ref, watch } from 'vue'
|
|
22
|
+
import { computed, defineEmits, defineProps, getCurrentInstance, onBeforeMount, ref, useSlots, watch } from 'vue'
|
|
22
23
|
import { useRouter } from 'vue-router'
|
|
23
24
|
|
|
24
25
|
const { configName, serviceName, fixQueryForm } = withDefaults(defineProps<{
|
|
@@ -39,7 +40,14 @@ const { configName, serviceName, fixQueryForm } = withDefaults(defineProps<{
|
|
|
39
40
|
scanOptions: undefined,
|
|
40
41
|
})
|
|
41
42
|
|
|
42
|
-
const emit = defineEmits
|
|
43
|
+
const emit = defineEmits<{
|
|
44
|
+
(e: 'toDetail', item: any): void
|
|
45
|
+
(e: 'update', item: any, handledByParent: any): void
|
|
46
|
+
(e: 'deleteRow', item: any): void
|
|
47
|
+
(e: 'add'): void
|
|
48
|
+
(e: string, item: any): void
|
|
49
|
+
(e: 'updateCondition', params: any): void
|
|
50
|
+
}>()
|
|
43
51
|
|
|
44
52
|
const router = useRouter()
|
|
45
53
|
|
|
@@ -122,6 +130,11 @@ const buttonState = ref(undefined)
|
|
|
122
130
|
const groupFormItems = ref({})
|
|
123
131
|
const title = ref('')
|
|
124
132
|
|
|
133
|
+
const slots = useSlots()
|
|
134
|
+
|
|
135
|
+
// 当前组件实例(不推荐使用,可能会在后续的版本更迭中调整,暂时用来绑定函数的上下文)
|
|
136
|
+
const currInst = getCurrentInstance()
|
|
137
|
+
|
|
125
138
|
onBeforeMount(() => {
|
|
126
139
|
initComponent()
|
|
127
140
|
})
|
|
@@ -325,23 +338,24 @@ watch(() => searchValue.value, (newVal) => {
|
|
|
325
338
|
onRefresh()
|
|
326
339
|
})
|
|
327
340
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
// 匹配参数名、函数体
|
|
334
|
-
const innerFuncRegex = /function\s+\w*\((\w+)\)\s*\{([\s\S]*)\}/
|
|
335
|
-
const matches = funcString.match(innerFuncRegex)
|
|
336
|
-
|
|
337
|
-
const paramName = matches[1] // 提取参数名
|
|
338
|
-
|
|
339
|
-
// eslint-disable-next-line no-new-func
|
|
340
|
-
const func = new Function(paramName, matches[2])
|
|
341
|
+
// 配置中心->表单项展示函数
|
|
342
|
+
function handleFunctionStyle(funcString, record) {
|
|
343
|
+
if (!funcString) {
|
|
344
|
+
return {}
|
|
345
|
+
}
|
|
341
346
|
|
|
342
|
-
|
|
347
|
+
try {
|
|
348
|
+
// 同步执行函数
|
|
349
|
+
const obj = executeStrFunctionByContext(currInst, funcString, [record])
|
|
350
|
+
// 如果返回的是对象,则直接返回
|
|
351
|
+
if (obj && typeof obj === 'object') {
|
|
352
|
+
return obj
|
|
353
|
+
}
|
|
354
|
+
// 其他情况返回空对象
|
|
355
|
+
return {}
|
|
343
356
|
}
|
|
344
|
-
catch {
|
|
357
|
+
catch (error) {
|
|
358
|
+
console.error('Error in handleFunctionStyle:', error)
|
|
345
359
|
return {}
|
|
346
360
|
}
|
|
347
361
|
}
|
|
@@ -462,12 +476,39 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
462
476
|
return true
|
|
463
477
|
}
|
|
464
478
|
}
|
|
479
|
+
|
|
480
|
+
// 更新查询条件并刷新
|
|
481
|
+
function updateConditionAndRefresh(params: any) {
|
|
482
|
+
// 更新 conditionParams
|
|
483
|
+
if (!conditionParams.value) {
|
|
484
|
+
conditionParams.value = {}
|
|
485
|
+
}
|
|
486
|
+
if (params) {
|
|
487
|
+
// 遍历参数,更新对应的表单值
|
|
488
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
489
|
+
// 找到对应的表单项
|
|
490
|
+
const formItem = formQueryList.value.find(item => item.model === key)
|
|
491
|
+
if (formItem) {
|
|
492
|
+
// 更新表单项的值
|
|
493
|
+
conditionParams.value[key] = value
|
|
494
|
+
}
|
|
495
|
+
})
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
// 触发刷新
|
|
499
|
+
onRefresh()
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// 暴露方法给父组件
|
|
503
|
+
defineExpose({
|
|
504
|
+
updateConditionAndRefresh,
|
|
505
|
+
})
|
|
465
506
|
</script>
|
|
466
507
|
|
|
467
508
|
<template>
|
|
468
509
|
<div id="XCellList">
|
|
469
510
|
<VanRow class="filter-condition">
|
|
470
|
-
<VanCol>
|
|
511
|
+
<VanCol class="search-col">
|
|
471
512
|
<VanSearch
|
|
472
513
|
v-model="searchValue"
|
|
473
514
|
class="title-search"
|
|
@@ -477,6 +518,14 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
477
518
|
@search="onRefresh"
|
|
478
519
|
/>
|
|
479
520
|
</VanCol>
|
|
521
|
+
<!-- 动态插槽区域 -->
|
|
522
|
+
<template v-for="(_, name) in slots" :key="name">
|
|
523
|
+
<template v-if="typeof name === 'string' && name.startsWith('search-right-')">
|
|
524
|
+
<div class="filter-icon-box">
|
|
525
|
+
<slot :name="name" />
|
|
526
|
+
</div>
|
|
527
|
+
</template>
|
|
528
|
+
</template>
|
|
480
529
|
<VanCol class="search-icon">
|
|
481
530
|
<XCellListFilter
|
|
482
531
|
v-model:sortord-val="sortordVal"
|
|
@@ -511,7 +560,7 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
511
560
|
<div v-for="(column) in mainColumns" :key="`main_${column.dataIndex}`" class="main-title">
|
|
512
561
|
<p
|
|
513
562
|
class="card_item_title"
|
|
514
|
-
:style="handleFunctionStyle(column.styleFunctionForValue, item
|
|
563
|
+
:style="handleFunctionStyle(column.styleFunctionForValue, item)"
|
|
515
564
|
>
|
|
516
565
|
{{ item[column.dataIndex] ? item[column.dataIndex] : '--' }}
|
|
517
566
|
</p>
|
|
@@ -519,10 +568,10 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
519
568
|
<div v-for="(column) in subTitleColumns" :key="`subtitle_${column.dataIndex}`" class="sub-title">
|
|
520
569
|
<p
|
|
521
570
|
class="card_item_subtitle"
|
|
522
|
-
:style="handleFunctionStyle(column.styleFunctionForValue, item
|
|
571
|
+
:style="handleFunctionStyle(column.styleFunctionForValue, item)"
|
|
523
572
|
>
|
|
524
573
|
<XBadge
|
|
525
|
-
:style="handleFunctionStyle(column.styleFunctionForValue, item
|
|
574
|
+
:style="handleFunctionStyle(column.styleFunctionForValue, item)"
|
|
526
575
|
:dict-name="column.dictName" :dict-value="item[column.dataIndex]"
|
|
527
576
|
:service-name="serviceName"
|
|
528
577
|
/>
|
|
@@ -546,7 +595,7 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
546
595
|
<p>
|
|
547
596
|
{{ `${column.title}: ` }}
|
|
548
597
|
<XBadge
|
|
549
|
-
:style="handleFunctionStyle(column.styleFunctionForValue, item
|
|
598
|
+
:style="handleFunctionStyle(column.styleFunctionForValue, item)"
|
|
550
599
|
:dict-name="column.dictName" :dict-value="item[column.dataIndex]"
|
|
551
600
|
:service-name="serviceName"
|
|
552
601
|
/>
|
|
@@ -588,11 +637,11 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
588
637
|
<VanRow gutter="20" class="card_item_footer" @click="emit('toDetail', item)">
|
|
589
638
|
<VanCol v-for="column of footColumns" :key="`foot_${column.dataIndex}`" :span="12">
|
|
590
639
|
<p>
|
|
591
|
-
<span :style="handleFunctionStyle(column.styleFunctionForTitle, item
|
|
640
|
+
<span :style="handleFunctionStyle(column.styleFunctionForTitle, item)">
|
|
592
641
|
{{ column.title }}:
|
|
593
642
|
</span>
|
|
594
643
|
<XBadge
|
|
595
|
-
:style="handleFunctionStyle(column.styleFunctionForValue, item
|
|
644
|
+
:style="handleFunctionStyle(column.styleFunctionForValue, item)"
|
|
596
645
|
:dict-name="column.dictName" :dict-value="item[column.dataIndex]"
|
|
597
646
|
:service-name="serviceName"
|
|
598
647
|
/>
|
|
@@ -650,8 +699,8 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
650
699
|
<style scoped lang="less">
|
|
651
700
|
#XCellList {
|
|
652
701
|
height: calc(94vh - var(--van-nav-bar-height) - 5px);
|
|
653
|
-
--van-search-padding:
|
|
654
|
-
--van-dropdown-menu-title-padding:
|
|
702
|
+
--van-search-padding: 3px;
|
|
703
|
+
--van-dropdown-menu-title-padding: 3px;
|
|
655
704
|
--van-cell-vertical-padding: 0px;
|
|
656
705
|
.main {
|
|
657
706
|
overflow-y: auto;
|
|
@@ -810,6 +859,7 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
810
859
|
align-items: center;
|
|
811
860
|
padding: 8px 12px;
|
|
812
861
|
background-color: #fff;
|
|
862
|
+
gap: 5px;
|
|
813
863
|
:deep(.van-search) {
|
|
814
864
|
width: 100%;
|
|
815
865
|
padding: var(--van-search-padding);
|
|
@@ -831,20 +881,31 @@ function evaluateCustomFunction(funcString: string | undefined, record: any, ind
|
|
|
831
881
|
font-size: 14px;
|
|
832
882
|
}
|
|
833
883
|
.van-col {
|
|
834
|
-
|
|
884
|
+
display: flex;
|
|
885
|
+
align-items: center;
|
|
886
|
+
&.search-col {
|
|
835
887
|
flex: 1;
|
|
836
888
|
min-width: 0;
|
|
837
889
|
}
|
|
838
|
-
|
|
890
|
+
&.search-icon {
|
|
839
891
|
flex-shrink: 0;
|
|
892
|
+
padding: 0;
|
|
840
893
|
}
|
|
841
894
|
}
|
|
842
|
-
.
|
|
895
|
+
.filter-icon-box {
|
|
843
896
|
display: flex;
|
|
844
897
|
align-items: center;
|
|
845
|
-
justify-content:
|
|
846
|
-
|
|
847
|
-
|
|
898
|
+
justify-content: center;
|
|
899
|
+
width: 40px;
|
|
900
|
+
height: 40px;
|
|
901
|
+
border-radius: 10px;
|
|
902
|
+
background-color: rgba(245,245,245);
|
|
903
|
+
cursor: pointer;
|
|
904
|
+
position: relative;
|
|
905
|
+
z-index: 1;
|
|
906
|
+
&:active {
|
|
907
|
+
opacity: 0.7;
|
|
908
|
+
}
|
|
848
909
|
}
|
|
849
910
|
}
|
|
850
911
|
|
|
@@ -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>
|