free-fe-core-modules 0.0.54 → 0.1.1

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.
@@ -1,153 +1,89 @@
1
1
  <template>
2
2
  <div class="row free-field-image" v-if="Field">
3
- <span
4
- :class="`field-label ${(Field.Label && Field.Label.trim().length)
5
- ? '' : 'field-label-empty'} ${Field.Required ? 'required' : ''}`"
6
- v-if="Field.Label && !Field.dense">
3
+ <span :class="`field-label ${(Field.Label && Field.Label.trim().length)
4
+ ? '' : 'field-label-empty'} ${Field.Required ? 'required' : ''}`" v-if="Field.Label && !Field.dense">
7
5
  <q-tooltip v-if="Field.Description" anchor="top right">
8
6
  {{
9
- Field.Description
7
+ Field.Description
10
8
  }}
11
9
  </q-tooltip>
12
10
  {{ Field.Label || '' }}
13
11
  <span v-if="Field.Required" class="required-mark">*</span>
14
12
  </span>
15
- <q-uploader
16
- @uploaded="uploaded"
17
- @removed="removeFile"
18
- @rejected="filesRejected"
19
- ref="uploader"
20
- :factory="factoryFn"
21
- auto-upload
22
- :max-file-size="maxFileSize"
23
- :class="(Field.dense ?
13
+ <q-uploader @uploaded="uploaded" @removed="removeFile" @rejected="filesRejected" ref="uploader" :factory="factoryFn"
14
+ auto-upload :max-file-size="maxFileSize" :class="(Field.dense ?
24
15
  `no-shadow dense` : `${Field.onlyIcon ? 'only-icon' : ''}`)
25
- + (hasError ? ' free-field--error' : '')"
26
- >
16
+ + (hasError ? ' free-field--error' : '')">
27
17
  <template v-slot:list="scope">
28
18
  <div class="uploader-btns row no-wrap items-center" v-if="!Field.dense && !(Field.onlyIcon || onlyIcon)">
29
19
  <q-spinner v-if="scope.isUploading" class="q-uploader__spinner" />
30
- <q-btn
31
- v-if="!scope.isUploading"
32
- type="a"
33
- icon="cloud_upload"
34
- dense
35
- flat
36
- class="upload-btn"
37
- label="点击上传"
38
- :disabled="Field.ReadOnly"
39
- >
20
+ <q-btn v-if="!scope.isUploading" type="a" icon="cloud_upload" dense flat class="upload-btn" label="点击上传"
21
+ :disabled="Field.ReadOnly">
40
22
  <q-uploader-add-trigger v-if="!Field.ReadOnly" />
41
23
  </q-btn>
42
- <q-btn
43
- v-if="scope.isUploading"
44
- icon="clear"
45
- @click="scope.abort"
46
- round
47
- class="clear-btn"
48
- dense
49
- flat
50
- :disabled="Field.ReadOnly"
51
- ></q-btn>
24
+ <q-btn v-if="scope.isUploading" icon="clear" @click="scope.abort" round class="clear-btn" dense flat
25
+ :disabled="Field.ReadOnly"></q-btn>
52
26
  <slot name="warning"></slot>
53
27
  </div>
54
28
 
55
- <q-btn
56
- v-if="(Field.onlyIcon || onlyIcon) && (!fieldData.value || !fieldData.value || !fieldData.value.id)"
57
- type="a"
58
- :icon="fieldData?.value?.length ? 'check' : 'cloud_upload'"
59
- dense
60
- flat
61
- :disabled="Field.ReadOnly"
62
- >
29
+ <q-btn v-if="(Field.onlyIcon || onlyIcon) && (!fieldData.value || !fieldData.value || !fieldData.value.id)"
30
+ type="a" :icon="fieldData?.value?.id ? 'check' : 'cloud_upload'" dense flat :disabled="Field.ReadOnly">
63
31
  <q-uploader-add-trigger />
64
32
  </q-btn>
65
33
 
66
34
  <div v-else-if="(Field.onlyIcon || onlyIcon) && fieldData.value && fieldData.value?.id">
67
- <q-img
68
- :src="$filter(Field?.Options?.NoThumb ? 'serverImage' : 'serverThumb', `${fieldData.value.id}`)"
69
- style="width:32px; max-height:32px;min-height:32px;"
70
- >
35
+ <q-img :src="$filter(Field?.Options?.NoThumb ? 'serverImage' : 'serverThumb', `${fieldData.value.id}`)"
36
+ style="width:32px; max-height:32px;min-height:32px;">
71
37
  </q-img>
72
- <q-uploader-add-trigger/>
38
+ <q-uploader-add-trigger />
73
39
  </div>
74
40
 
75
41
  <q-item v-else-if="Field.dense" class="items-center q-pa-none">
76
- <q-item-section v-if="fieldData?.value?.length && fieldData.value.id" thumbnail>
77
- <q-img
78
- :src="`${ctx.config.thumbUrlBase}${fieldData.value.id}`"
79
- style="width: 48px; max-height: 48px;"
80
- >
42
+ <q-item-section v-if="fieldData.value.id" thumbnail>
43
+ <q-img :src="`${ctx.config.thumbUrlBase}${fieldData.value.id}`" style="width: 48px; max-height: 48px;">
81
44
  </q-img>
82
45
  <q-uploader-add-trigger v-if="!Field.ReadOnly" />
83
46
  </q-item-section>
84
47
 
85
- <q-item-section v-if="fieldData.value?.length && fieldData.value.__img" thumbnail class="gt-xs">
48
+ <q-item-section v-if="fieldData.value.__img" thumbnail class="gt-xs">
86
49
  <q-img :src="fieldData.value.__img.src">
87
50
  </q-img>
88
51
  <q-uploader-add-trigger v-if="!Field.ReadOnly" />
89
52
  </q-item-section>
90
53
 
91
- <q-item-section v-if="!fieldData.value?.length">
92
- <q-btn
93
- v-if="!scope.isUploading"
94
- type="a"
95
- icon="cloud_upload"
96
- class="upload-btn"
97
- dense
98
- flat
99
- :disabled="Field.ReadOnly"
100
- >
54
+ <q-item-section v-if="!fieldData.value?.id">
55
+ <q-btn v-if="!scope.isUploading" type="a" icon="cloud_upload" class="upload-btn" dense flat
56
+ :disabled="Field.ReadOnly">
101
57
  <q-uploader-add-trigger v-if="!Field.ReadOnly" />
102
58
  </q-btn>
103
59
  </q-item-section>
104
60
  </q-item>
105
61
 
106
- <div v-else-if="Array.isArray(fieldData.value) && fieldData.value?.length" class="file-list row items-start justify-start">
107
- <q-card
108
- flat
109
- class="file-list-item"
110
- v-for="(file, index) in fieldData.value" :key="index">
111
- <e-icon class="file-image"
112
- :name="fileThumb(file)"
113
- :thumb="!Field?.Options?.NoThumb"
114
- :relative="filePreviewType(file) !== 'image'"
115
- @click="preview(file)">
116
- <div class="view-btn-wrapper absolute-full justify-center text-center">
117
- <q-btn
118
- flat
119
- class="view-btn full-height full-width"
120
- @click="preview(file)"
121
- >查看</q-btn>
122
- </div>
123
- </e-icon>
124
- <span class="file-name full-width ellipsis">
125
- <a
126
- v-if="file && file.id"
127
- target="_blank"
128
- :href="$filter('serverPath', file.id)"
129
- :download="file.name">
130
- {{ file.name }}
131
- </a>
132
- <span v-else-if="file && file.name">
133
- {{file.name}}
134
- </span>
135
- <q-tooltip>{{ file.name }}</q-tooltip>
62
+ <div v-else-if="fieldData.value?.id" class="file-list row items-start justify-start">
63
+ <q-card flat class="file-list-item">
64
+ <e-icon class="file-image" :name="fileThumb(fieldData.value)" :thumb="!Field?.Options?.NoThumb"
65
+ :relative="filePreviewType(fieldData.value) !== 'image'" @click="preview(fieldData.value)">
66
+ <div class="view-btn-wrapper absolute-full justify-center text-center">
67
+ <q-btn flat class="view-btn full-height full-width" @click="preview(fieldData.value)">查看</q-btn>
68
+ </div>
69
+ </e-icon>
70
+ <span class="file-name full-width ellipsis">
71
+ <a v-if="fieldData.value && fieldData.value.id" target="_blank"
72
+ :href="$filter('serverPath', fieldData.value.id)" :download="fieldData.value.name">
73
+ {{ fieldData.value.name }}
74
+ </a>
75
+ <span v-else-if="fieldData.value && fieldData.value.name">
76
+ {{ fieldData.value.name }}
136
77
  </span>
78
+ <q-tooltip>{{ fieldData.value.name }}</q-tooltip>
79
+ </span>
137
80
 
138
- <span class="file-size full-width ellipsis">
139
- Size: {{ file.sizeLabel || file.__sizeLabel }}
140
- </span>
81
+ <span class="file-size full-width ellipsis">
82
+ Size: {{ fieldData.value.sizeLabel || fieldData.value.__sizeLabel }}
83
+ </span>
141
84
 
142
- <q-btn
143
- flat
144
- dense
145
- round
146
- class="delete-btn"
147
- icon="close"
148
- @click="scope.removeFile(file)"
149
- :disabled="Field.ReadOnly"
150
- />
85
+ <q-btn flat dense round class="delete-btn" icon="close" @click="scope.removeFile(fieldData.value)"
86
+ :disabled="Field.ReadOnly" />
151
87
  </q-card>
152
88
  </div>
153
89
 
@@ -156,32 +92,18 @@
156
92
  </div>
157
93
  </template>
158
94
  </q-uploader>
159
- <q-dialog class="image-preview-dialog"
160
- flat
161
- full-width full-height v-model="showPreview"
95
+ <q-dialog class="image-preview-dialog" flat full-width full-height v-model="showPreview"
162
96
  style="background: rgba(0,0,0,0)">
163
97
  <div class="image-preview">
164
- <q-icon name="close"
165
- class="absolute cursor-pointer bg-white text-primary"
166
- style="border-radius: 6px;border: 1px solid primary;right: 0;"
167
- round size="20px"
168
- @click="showPreview=false"></q-icon>
169
- <q-img
170
- fit="contain"
171
- v-if="previewType === 'image'"
172
- contain :src="previewFile"
173
- @click="showPreview=false"
98
+ <q-icon name="close" class="absolute cursor-pointer bg-white text-primary"
99
+ style="border-radius: 6px;border: 1px solid primary;right: 0;" round size="20px"
100
+ @click="showPreview = false"></q-icon>
101
+ <q-img fit="contain" v-if="previewType === 'image'" :src="previewFile" @click="showPreview = false"
174
102
  style="max-height: 100%; max-width: 100%;">
175
103
  </q-img>
176
104
 
177
- <q-pdfviewer
178
- v-if="previewType === 'pdf'"
179
- v-model="showPreview"
180
- @click="showPreview=false"
181
- :src="previewFile"
182
- type="pdfjs"
183
- style="height: 100%; max-width: 100%;"
184
- />
105
+ <q-pdfviewer v-if="previewType === 'pdf'" v-model="showPreview" @click="showPreview = false" :src="previewFile"
106
+ type="pdfjs" style="height: 100%; max-width: 100%;" />
185
107
  </div>
186
108
  </q-dialog>
187
109
  </div>
@@ -189,9 +111,9 @@
189
111
 
190
112
  <script>
191
113
  import { defineComponent, getCurrentInstance, ref } from 'vue';
192
- import { useFreeField, freeFieldProps } from 'free-fe-core-modules/free-field/composible/useFreeField';
193
- import { useFormValidator} from 'free-fe-core-modules/composible/useFormValidator';
194
- import { useUploader } from 'free-fe-core-modules/free-field/composible/useUploader';
114
+ import { useFreeField, freeFieldProps } from '../composible/useFreeField.js';
115
+ import { useFormValidator} from '../../composible/useFormValidator.js';
116
+ import { useUploader } from '../composible/useUploader.js';
195
117
 
196
118
  export default defineComponent({
197
119
  name: 'InputFieldImage',
@@ -249,7 +171,7 @@ export default defineComponent({
249
171
 
250
172
  const selfValidate = () => {
251
173
  if (props.Field?.Required) {
252
- hasError.value = !!fieldData.value?.id;
174
+ hasError.value = !fieldData.value?.id;
253
175
  return !!fieldData.value?.id;
254
176
  }
255
177
 
@@ -298,7 +220,6 @@ export default defineComponent({
298
220
  if (res && res.msg === 'OK') {
299
221
  setFieldData({
300
222
  id: res.data.id,
301
- // eslint-disable-next-line no-underscore-dangle
302
223
  sizeLabel: file.__sizeLabel,
303
224
  name: file.name,
304
225
  size: file.size,
@@ -1,99 +1,49 @@
1
1
  <template>
2
2
  <div class="row free-field-image-list" v-if="Field">
3
- <span
4
- :class="`field-label ${(Field.Label && Field.Label.trim().length)
5
- ? '' : 'field-label-empty'} ${Field.Required ? 'required' : ''}`"
6
- v-if="Field.Label !== void 0">
7
- <q-tooltip v-if="Field.Description" anchor="top right">{{Field.Description}}</q-tooltip>
8
- {{Field.Label || ''}}
3
+ <span :class="`field-label ${(Field.Label && Field.Label.trim().length)
4
+ ? '' : 'field-label-empty'} ${Field.Required ? 'required' : ''}`" v-if="Field.Label !== void 0">
5
+ <q-tooltip v-if="Field.Description" anchor="top right">{{ Field.Description }}</q-tooltip>
6
+ {{ Field.Label || '' }}
9
7
  <span v-if="Field.Required" class="required-mark">*</span>
10
8
  </span>
11
- <q-uploader
12
- @added="localFiles.push(...$event)"
13
- @uploaded="uploaded"
14
- @removed="removeFile"
15
- @rejected="filesRejected"
16
- :factory="factoryFn"
17
- multiple
18
- :max-files="Field.Options && Field.Options.MaxCount"
19
- :max-file-size="maxFileSize"
20
- :max-total-size="maxTotalSize"
21
- :class="`q-ma-xs ${hasError ? 'free-field--error' : ''}`"
22
- ref="uploader"
23
- >
9
+ <q-uploader @added="localFiles.push(...$event)" @uploaded="uploaded" @removed="removeFile" @rejected="filesRejected"
10
+ :factory="factoryFn" multiple :max-files="Field.Options && Field.Options.MaxCount" :max-file-size="maxFileSize"
11
+ :max-total-size="maxTotalSize" :class="`q-ma-xs ${hasError ? 'free-field--error' : ''}`" ref="uploader">
24
12
  <template v-slot:list="scope">
25
13
  <div class="uploader-btns row no-wrap items-center">
26
14
  <q-spinner v-if="scope.isUploading" class="q-uploader__spinner" />
27
- <q-btn
28
- v-if="scope.canAddFiles"
29
- type="a"
30
- icon="add_box"
31
- label="点击添加"
32
- class="add-btn"
33
- dense
34
- flat
35
- :disabled="Field.ReadOnly"
36
- >
37
- <q-uploader-add-trigger v-if="!Field.ReadOnly"/>
15
+ <q-btn v-if="scope.canAddFiles" type="a" icon="add_box" label="点击添加" class="add-btn" dense flat
16
+ :disabled="Field.ReadOnly">
17
+ <q-uploader-add-trigger v-if="!Field.ReadOnly" />
38
18
  </q-btn>
39
- <q-btn
40
- v-if="scope.canUpload"
41
- icon="cloud_upload"
42
- @click="scope.upload"
43
- class="upload-btn"
44
- label="点击上传"
45
- dense
46
- flat
47
- :disabled="Field.ReadOnly"
48
- ></q-btn>
19
+ <q-btn v-if="scope.canUpload" icon="cloud_upload" @click="scope.upload" class="upload-btn" label="点击上传" dense
20
+ flat :disabled="Field.ReadOnly"></q-btn>
49
21
 
50
- <q-btn
51
- v-if="scope.isUploading"
52
- icon="clear"
53
- @click="scope.abort"
54
- class="abort-btn"
55
- round
56
- dense
57
- flat
58
- :disabled="Field.ReadOnly"
59
- ></q-btn>
22
+ <q-btn v-if="scope.isUploading" icon="clear" @click="scope.abort" class="abort-btn" round dense flat
23
+ :disabled="Field.ReadOnly"></q-btn>
60
24
  <slot name="warning"></slot>
61
25
  </div>
62
26
 
63
- <div v-if="Array.isArray(allFiles) && allFiles.length" class="file-list row items-start justify-start q-gutter-xl">
64
- <q-card
65
- flat
66
- class="file-list-item"
67
- v-for="(file, index) in allFiles" :key="index">
68
- <e-icon class="file-image" :name="fileThumb(file)" thumb
69
- :relative="filePreviewType(file) !== 'image'"
70
- @click="preview(file)">
71
- <div class="view-btn-wrapper absolute-full justify-center text-center">
72
- <q-btn
73
- flat
74
- class="view-btn full-height full-width"
75
- @click="preview(file)"
76
- >查看</q-btn>
77
- </div>
78
- </e-icon>
79
- <span class="file-name full-width ellipsis">
80
- {{ file.name }}
81
- <q-tooltip>{{ file.name }}</q-tooltip>
82
- </span>
27
+ <div v-if="Array.isArray(allFiles) && allFiles.length"
28
+ class="file-list row items-start justify-start q-gutter-xl">
29
+ <q-card flat class="file-list-item" v-for="(file, index) in allFiles" :key="index">
30
+ <e-icon class="file-image" :name="fileThumb(file)" thumb :relative="filePreviewType(file) !== 'image'"
31
+ @click="preview(file)">
32
+ <div class="view-btn-wrapper absolute-full justify-center text-center">
33
+ <q-btn flat class="view-btn full-height full-width" @click="preview(file)">查看</q-btn>
34
+ </div>
35
+ </e-icon>
36
+ <span class="file-name full-width ellipsis">
37
+ {{ file.name }}
38
+ <q-tooltip>{{ file.name }}</q-tooltip>
39
+ </span>
83
40
 
84
- <span class="file-size full-width ellipsis">
85
- Size: {{ file.sizeLabel || file.__sizeLabel }}
86
- </span>
41
+ <span class="file-size full-width ellipsis">
42
+ Size: {{ file.sizeLabel || file.__sizeLabel }}
43
+ </span>
87
44
 
88
- <q-btn
89
- flat
90
- dense
91
- round
92
- class="delete-btn"
93
- icon="close"
94
- @click="scope.removeFile(file)"
95
- :disabled="Field.ReadOnly"
96
- />
45
+ <q-btn flat dense round class="delete-btn" icon="close" @click="scope.removeFile(file)"
46
+ :disabled="Field.ReadOnly" />
97
47
  </q-card>
98
48
  </div>
99
49
  <!-- <q-list separator v-if="scope.files.length">
@@ -134,31 +84,18 @@
134
84
  </div>
135
85
  </template>
136
86
  </q-uploader>
137
- <q-dialog class="image-preview-dialog"
138
- flat
139
- full-width full-height v-model="showPreview"
87
+ <q-dialog class="image-preview-dialog" flat full-width full-height v-model="showPreview"
140
88
  style="background: rgba(0,0,0,0)">
141
89
  <div class="image-preview">
142
- <q-icon name="close"
143
- class="absolute cursor-pointer bg-white text-primary"
144
- style="border-radius: 6px;border: 1px solid primary;right: 0;"
145
- round size="20px"
146
- @click="showPreview=false"></q-icon>
147
- <q-img
148
- v-if="previewType=== 'image'"
149
- contain :src="previewFile"
150
- @click="showPreview=false"
90
+ <q-icon name="close" class="absolute cursor-pointer bg-white text-primary"
91
+ style="border-radius: 6px;border: 1px solid primary;right: 0;" round size="20px"
92
+ @click="showPreview = false"></q-icon>
93
+ <q-img fit="contain" v-if="previewType === 'image'" :src="previewFile" @click="showPreview = false"
151
94
  style="height: 100%; max-width: 100%;">
152
95
  </q-img>
153
96
 
154
- <q-pdfviewer
155
- v-if="previewType === 'pdf'"
156
- v-model="showPreview"
157
- @click="showPreview=false"
158
- :src="previewFile"
159
- type="pdfjs"
160
- style="height: 100%; max-width: 100%;"
161
- />
97
+ <q-pdfviewer v-if="previewType === 'pdf'" v-model="showPreview" @click="showPreview = false" :src="previewFile"
98
+ type="pdfjs" style="height: 100%; max-width: 100%;" />
162
99
  </div>
163
100
  </q-dialog>
164
101
  </div>
@@ -166,9 +103,9 @@
166
103
 
167
104
  <script>
168
105
  import { computed, defineComponent, getCurrentInstance, ref } from 'vue';
169
- import { useFreeField, freeFieldProps } from '../composible/useFreeField';
170
- import { useFormValidator} from '../../composible/useFormValidator';
171
- import { useUploader } from '../composible/useUploader';
106
+ import { useFreeField, freeFieldProps } from '../composible/useFreeField.js';
107
+ import { useFormValidator} from '../../composible/useFormValidator.js';
108
+ import { useUploader } from '../composible/useUploader.js';
172
109
 
173
110
  export default defineComponent({
174
111
  name: 'InputFieldImageList',
@@ -273,7 +210,6 @@ export default defineComponent({
273
210
  if (res && res.msg === 'OK') {
274
211
  uploadedFiles.push({
275
212
  id: res.data.id,
276
- // eslint-disable-next-line no-underscore-dangle
277
213
  sizeLabel: file.__sizeLabel,
278
214
  name: file.name,
279
215
  size: file.size,
@@ -165,7 +165,7 @@ export default defineComponent({
165
165
  Label: `${ii + 1}`,
166
166
  Name: `${ii}`,
167
167
  Type: 'FixedList',
168
- List: [
168
+ Fields: [
169
169
  {
170
170
  Label: 'rowspan',
171
171
  Name: 'rowspan',
@@ -104,7 +104,6 @@ export default defineComponent({
104
104
  props: {
105
105
  ...freeFieldProps,
106
106
  },
107
- emits: ['input'],
108
107
  setup(props, { emit, slots , expose }){
109
108
  if (!props.Field) return {};
110
109
 
@@ -3,38 +3,26 @@
3
3
  <slot name="warning"></slot>
4
4
  <div class="buttons relative-position" v-if="Field && Field.ShowButtons">
5
5
  <span class="q-ml-lg select-all-btn">
6
- <q-btn round icon="check" @click="setFieldData(Object.assign({},serviceList))"></q-btn>
6
+ <q-btn round icon="check" @click="setFieldData(Object.assign({}, serviceList))"></q-btn>
7
7
  </span>
8
8
  <span class="q-ml-md clear-btn">
9
9
  <q-btn round icon="clear" @click="setFieldData({})"></q-btn>
10
10
  </span>
11
11
  </div>
12
12
  <div class="roles relative-position row items-center">
13
- <q-radio
14
- class="role"
15
- v-model="currentRole"
16
- v-for="(r, idx) in (Field && Field.Roles) || []"
17
- :key="idx"
18
- :val="r.Name"
19
- :label="r.Name || idx"
20
- @update:modelValue="setFieldData(r.Permission || {})"/>
13
+ <q-radio class="role" v-model="currentRole" v-for="(r, idx) in (Field && Field.Roles) || []" :key="idx"
14
+ :val="r.Name" :label="r.Name || idx" @update:modelValue="setFieldData(r.Permission || {})" />
21
15
  </div>
22
- <permission-editor
23
- v-if="Field && !Field.HideEditor"
24
- class="permission-editor"
25
- :Permission="fieldData.value"
26
- :Service="serviceList"
27
- :readonly="Field.ReadOnly"
28
- @changed="permissionChanged"
29
- :noDataScope="Field.NoDataScope"
30
- ></permission-editor>
16
+ <permission-editor v-if="Field && !Field.HideEditor" class="permission-editor" :Permission="fieldData.value"
17
+ :Service="serviceList" :readonly="Field.ReadOnly" @changed="permissionChanged"
18
+ :noDataScope="Field.NoDataScope"></permission-editor>
31
19
  </span>
32
20
  </template>
33
21
 
34
22
  <script>
35
23
  import { defineComponent } from 'vue';
36
- import { useFreeField, freeFieldProps } from '../composible/useFreeField';
37
- import PermissionEditor from './PermissionEditor';
24
+ import { useFreeField, freeFieldProps } from '../composible/useFreeField.js';
25
+ import PermissionEditor from './PermissionEditor.vue';
38
26
 
39
27
  export default defineComponent({
40
28
  name: 'InputFieldPermission',
@@ -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(() => {