free-fe-core-modules 0.0.54 → 0.0.55
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/free-field/Fields/DynamicList.js +3 -3
- package/free-field/Fields/File.vue +18 -20
- package/free-field/Fields/FileList.vue +1 -1
- package/free-field/Fields/Image.vue +21 -22
- package/free-field/Fields/ImageList.vue +2 -1
- package/free-field/Fields/MixedTable.vue +1 -1
- package/free-field/Fields/QueryFilters.vue +4 -8
- package/index.js +1 -1
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@ export default defineComponent({
|
|
|
17
17
|
Options: {
|
|
18
18
|
Columns: [{
|
|
19
19
|
Label: '第一列',
|
|
20
|
-
|
|
20
|
+
Fields: [{
|
|
21
21
|
Name: 'CA',
|
|
22
22
|
Placeholder: '请填写',
|
|
23
23
|
Type: 'Number',
|
|
@@ -25,7 +25,7 @@ export default defineComponent({
|
|
|
25
25
|
}],
|
|
26
26
|
}, {
|
|
27
27
|
Label: '第二列',
|
|
28
|
-
|
|
28
|
+
Fields: [{
|
|
29
29
|
Name: 'CB',
|
|
30
30
|
Type: 'String',
|
|
31
31
|
}],
|
|
@@ -302,7 +302,7 @@ export default defineComponent({
|
|
|
302
302
|
align : 'center',
|
|
303
303
|
sortable : true,
|
|
304
304
|
classes : 'index',
|
|
305
|
-
|
|
305
|
+
Fields: [{
|
|
306
306
|
Name: 'index',
|
|
307
307
|
Type: 'Number',
|
|
308
308
|
required : true,
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
>
|
|
30
30
|
<template v-slot:list="scope">
|
|
31
31
|
<div
|
|
32
|
-
v-if="Field.Options && Field.Options.AsLink &&
|
|
32
|
+
v-if="Field.Options && Field.Options.AsLink && !!fieldData.value?.id"
|
|
33
33
|
class="file-link row full-width ellipsis items-center"
|
|
34
34
|
>
|
|
35
35
|
<div
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
<slot name="warning"></slot>
|
|
86
86
|
</div>
|
|
87
87
|
|
|
88
|
-
<q-item v-if="dense && fieldData.value?.
|
|
89
|
-
<q-item-section v-if="fieldData.value?.
|
|
88
|
+
<q-item v-if="dense && fieldData.value?.id">
|
|
89
|
+
<q-item-section v-if="fieldData.value?.id && fieldData.value.name">
|
|
90
90
|
<q-item-label class="full-width ellipsis">
|
|
91
91
|
{{ fieldData.value.name }}
|
|
92
92
|
<q-tooltip>{{ fieldData.value.name }}</q-tooltip>
|
|
@@ -108,21 +108,19 @@
|
|
|
108
108
|
</q-item>
|
|
109
109
|
|
|
110
110
|
<div
|
|
111
|
-
v-else-if="
|
|
111
|
+
v-else-if="!!fieldData.value?.id"
|
|
112
112
|
class="file-list row items-start justify-start"
|
|
113
113
|
>
|
|
114
114
|
<q-card
|
|
115
115
|
flat
|
|
116
116
|
class="file-list-item"
|
|
117
|
-
v-for="(file, index) in fieldData.value"
|
|
118
|
-
:key="index"
|
|
119
117
|
>
|
|
120
118
|
<e-icon
|
|
121
119
|
class="file-image"
|
|
122
|
-
:name="fileThumb(
|
|
120
|
+
:name="fileThumb(fieldData.value)"
|
|
123
121
|
thumb
|
|
124
|
-
:relative="filePreviewType(
|
|
125
|
-
@click="preview(
|
|
122
|
+
:relative="filePreviewType(fieldData.value) !== 'image'"
|
|
123
|
+
@click="preview(fieldData.value)"
|
|
126
124
|
>
|
|
127
125
|
<div class="view-btn-wrapper absolute-full justify-center text-center">
|
|
128
126
|
<q-btn
|
|
@@ -133,20 +131,20 @@
|
|
|
133
131
|
</e-icon>
|
|
134
132
|
<span class="file-name full-width ellipsis">
|
|
135
133
|
<a
|
|
136
|
-
v-if="
|
|
134
|
+
v-if="fieldData.value && fieldData.value.id"
|
|
137
135
|
target="_blank"
|
|
138
|
-
:href="$filter('serverPath',
|
|
139
|
-
:download="
|
|
140
|
-
{{
|
|
136
|
+
:href="$filter('serverPath', fieldData.value.id)"
|
|
137
|
+
:download="fieldData.value.name">
|
|
138
|
+
{{ fieldData.value.name }}
|
|
141
139
|
</a>
|
|
142
|
-
<span v-else-if="
|
|
143
|
-
{{
|
|
140
|
+
<span v-else-if="fieldData.value && fieldData.value.name">
|
|
141
|
+
{{fieldData.value.name}}
|
|
144
142
|
</span>
|
|
145
|
-
<q-tooltip>{{
|
|
143
|
+
<q-tooltip>{{ fieldData.value.name }}</q-tooltip>
|
|
146
144
|
</span>
|
|
147
145
|
|
|
148
146
|
<span class="file-size full-width ellipsis">
|
|
149
|
-
Size: {{
|
|
147
|
+
Size: {{ fieldData.value.sizeLabel || fieldData.value.__sizeLabel }}
|
|
150
148
|
</span>
|
|
151
149
|
|
|
152
150
|
<q-btn
|
|
@@ -155,7 +153,7 @@
|
|
|
155
153
|
round
|
|
156
154
|
class="delete-btn"
|
|
157
155
|
icon="close"
|
|
158
|
-
@click="scope.removeFile(
|
|
156
|
+
@click="scope.removeFile(fieldData.value)"
|
|
159
157
|
v-if="!Field.ReadOnly"
|
|
160
158
|
/>
|
|
161
159
|
</q-card>
|
|
@@ -185,7 +183,7 @@
|
|
|
185
183
|
@click="showPreview=false"></q-icon>
|
|
186
184
|
<q-img
|
|
187
185
|
v-if="previewType=== 'image'"
|
|
188
|
-
contain
|
|
186
|
+
fit="contain"
|
|
189
187
|
:src="previewFile"
|
|
190
188
|
@click="showPreview=false"
|
|
191
189
|
style="height: 100%; max-width: 100%;"
|
|
@@ -282,7 +280,7 @@ export default defineComponent({
|
|
|
282
280
|
|
|
283
281
|
const selfValidate = () => {
|
|
284
282
|
if (props.Field?.Required) {
|
|
285
|
-
hasError.value =
|
|
283
|
+
hasError.value = !fieldData.value?.id;
|
|
286
284
|
return !!fieldData.value?.id;
|
|
287
285
|
}
|
|
288
286
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
<q-btn
|
|
56
56
|
v-if="(Field.onlyIcon || onlyIcon) && (!fieldData.value || !fieldData.value || !fieldData.value.id)"
|
|
57
57
|
type="a"
|
|
58
|
-
:icon="fieldData?.value?.
|
|
58
|
+
:icon="fieldData?.value?.id ? 'check' : 'cloud_upload'"
|
|
59
59
|
dense
|
|
60
60
|
flat
|
|
61
61
|
:disabled="Field.ReadOnly"
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
</div>
|
|
74
74
|
|
|
75
75
|
<q-item v-else-if="Field.dense" class="items-center q-pa-none">
|
|
76
|
-
<q-item-section v-if="fieldData
|
|
76
|
+
<q-item-section v-if="fieldData.value.id" thumbnail>
|
|
77
77
|
<q-img
|
|
78
78
|
:src="`${ctx.config.thumbUrlBase}${fieldData.value.id}`"
|
|
79
79
|
style="width: 48px; max-height: 48px;"
|
|
@@ -82,13 +82,13 @@
|
|
|
82
82
|
<q-uploader-add-trigger v-if="!Field.ReadOnly" />
|
|
83
83
|
</q-item-section>
|
|
84
84
|
|
|
85
|
-
<q-item-section v-if="
|
|
85
|
+
<q-item-section v-if=" fieldData.value.__img" thumbnail class="gt-xs">
|
|
86
86
|
<q-img :src="fieldData.value.__img.src">
|
|
87
87
|
</q-img>
|
|
88
88
|
<q-uploader-add-trigger v-if="!Field.ReadOnly" />
|
|
89
89
|
</q-item-section>
|
|
90
90
|
|
|
91
|
-
<q-item-section v-if="!fieldData.value?.
|
|
91
|
+
<q-item-section v-if="!fieldData.value?.id">
|
|
92
92
|
<q-btn
|
|
93
93
|
v-if="!scope.isUploading"
|
|
94
94
|
type="a"
|
|
@@ -103,40 +103,39 @@
|
|
|
103
103
|
</q-item-section>
|
|
104
104
|
</q-item>
|
|
105
105
|
|
|
106
|
-
<div v-else-if="
|
|
106
|
+
<div v-else-if="fieldData.value?.id" class="file-list row items-start justify-start">
|
|
107
107
|
<q-card
|
|
108
108
|
flat
|
|
109
|
-
class="file-list-item"
|
|
110
|
-
v-for="(file, index) in fieldData.value" :key="index">
|
|
109
|
+
class="file-list-item">
|
|
111
110
|
<e-icon class="file-image"
|
|
112
|
-
:name="fileThumb(
|
|
111
|
+
:name="fileThumb(fieldData.value)"
|
|
113
112
|
:thumb="!Field?.Options?.NoThumb"
|
|
114
|
-
:relative="filePreviewType(
|
|
115
|
-
@click="preview(
|
|
113
|
+
:relative="filePreviewType(fieldData.value) !== 'image'"
|
|
114
|
+
@click="preview(fieldData.value)">
|
|
116
115
|
<div class="view-btn-wrapper absolute-full justify-center text-center">
|
|
117
116
|
<q-btn
|
|
118
117
|
flat
|
|
119
118
|
class="view-btn full-height full-width"
|
|
120
|
-
@click="preview(
|
|
119
|
+
@click="preview(fieldData.value)"
|
|
121
120
|
>查看</q-btn>
|
|
122
121
|
</div>
|
|
123
122
|
</e-icon>
|
|
124
123
|
<span class="file-name full-width ellipsis">
|
|
125
124
|
<a
|
|
126
|
-
v-if="
|
|
125
|
+
v-if="fieldData.value && fieldData.value.id"
|
|
127
126
|
target="_blank"
|
|
128
|
-
:href="$filter('serverPath',
|
|
129
|
-
:download="
|
|
130
|
-
{{
|
|
127
|
+
:href="$filter('serverPath', fieldData.value.id)"
|
|
128
|
+
:download="fieldData.value.name">
|
|
129
|
+
{{ fieldData.value.name }}
|
|
131
130
|
</a>
|
|
132
|
-
<span v-else-if="
|
|
133
|
-
{{
|
|
131
|
+
<span v-else-if="fieldData.value && fieldData.value.name">
|
|
132
|
+
{{fieldData.value.name}}
|
|
134
133
|
</span>
|
|
135
|
-
<q-tooltip>{{
|
|
134
|
+
<q-tooltip>{{ fieldData.value.name }}</q-tooltip>
|
|
136
135
|
</span>
|
|
137
136
|
|
|
138
137
|
<span class="file-size full-width ellipsis">
|
|
139
|
-
Size: {{
|
|
138
|
+
Size: {{ fieldData.value.sizeLabel || fieldData.value.__sizeLabel }}
|
|
140
139
|
</span>
|
|
141
140
|
|
|
142
141
|
<q-btn
|
|
@@ -145,7 +144,7 @@
|
|
|
145
144
|
round
|
|
146
145
|
class="delete-btn"
|
|
147
146
|
icon="close"
|
|
148
|
-
@click="scope.removeFile(
|
|
147
|
+
@click="scope.removeFile(fieldData.value)"
|
|
149
148
|
:disabled="Field.ReadOnly"
|
|
150
149
|
/>
|
|
151
150
|
</q-card>
|
|
@@ -169,7 +168,7 @@
|
|
|
169
168
|
<q-img
|
|
170
169
|
fit="contain"
|
|
171
170
|
v-if="previewType === 'image'"
|
|
172
|
-
|
|
171
|
+
:src="previewFile"
|
|
173
172
|
@click="showPreview=false"
|
|
174
173
|
style="max-height: 100%; max-width: 100%;">
|
|
175
174
|
</q-img>
|
|
@@ -249,7 +248,7 @@ export default defineComponent({
|
|
|
249
248
|
|
|
250
249
|
const selfValidate = () => {
|
|
251
250
|
if (props.Field?.Required) {
|
|
252
|
-
hasError.value =
|
|
251
|
+
hasError.value = !fieldData.value?.id;
|
|
253
252
|
return !!fieldData.value?.id;
|
|
254
253
|
}
|
|
255
254
|
|
|
@@ -145,8 +145,9 @@
|
|
|
145
145
|
round size="20px"
|
|
146
146
|
@click="showPreview=false"></q-icon>
|
|
147
147
|
<q-img
|
|
148
|
+
fit="contain"
|
|
148
149
|
v-if="previewType=== 'image'"
|
|
149
|
-
|
|
150
|
+
:src="previewFile"
|
|
150
151
|
@click="showPreview=false"
|
|
151
152
|
style="height: 100%; max-width: 100%;">
|
|
152
153
|
</q-img>
|
|
@@ -47,14 +47,14 @@
|
|
|
47
47
|
<q-space></q-space>
|
|
48
48
|
<div class="q-ma-xs query-btns">
|
|
49
49
|
<q-btn
|
|
50
|
-
v-if="canExport"
|
|
50
|
+
v-if="Field.canExport"
|
|
51
51
|
class="export-btn"
|
|
52
52
|
icon="fa fa-list"
|
|
53
53
|
label="导出"
|
|
54
54
|
@click="$emit('export')"
|
|
55
55
|
/>
|
|
56
|
-
<q-btn class="clear-btn" :icon="clearIcon" label="清空" @click="clear"></q-btn>
|
|
57
|
-
<q-btn class="query-btn q-ma-xs" :icon="searchIcon" label="查询" @click="search"></q-btn>
|
|
56
|
+
<q-btn class="clear-btn" :icon="Field.clearIcon || 'refresh'" label="清空" @click="clear"></q-btn>
|
|
57
|
+
<q-btn class="query-btn q-ma-xs" :icon="Field.searchIcon || 'search'" label="查询" @click="search"></q-btn>
|
|
58
58
|
</div>
|
|
59
59
|
</div>
|
|
60
60
|
</div>
|
|
@@ -76,10 +76,6 @@ export default defineComponent({
|
|
|
76
76
|
props: {
|
|
77
77
|
...freeFieldProps,
|
|
78
78
|
dense: { type: Boolean, default: false },
|
|
79
|
-
canExport: { type: Boolean, default: false },
|
|
80
|
-
queryData: { type: Object, default: () => ({}) },
|
|
81
|
-
searchIcon: { type: String, default: 'search' },
|
|
82
|
-
clearIcon: { type: String, default: 'refresh' },
|
|
83
79
|
},
|
|
84
80
|
setup(props, { emit }) {
|
|
85
81
|
if (!props.Field) return {};
|
|
@@ -92,7 +88,7 @@ export default defineComponent({
|
|
|
92
88
|
const kwFields = ref([]);
|
|
93
89
|
|
|
94
90
|
watchEffect(() => {
|
|
95
|
-
query.value = props.queryData;
|
|
91
|
+
query.value = props.Field.queryData;
|
|
96
92
|
})
|
|
97
93
|
|
|
98
94
|
watchEffect(() => {
|
package/index.js
CHANGED