ci-plus 1.1.0 → 1.1.2

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.
@@ -3,24 +3,26 @@
3
3
  <template>
4
4
  <div style="display: flex; align-items: center; justify-content: center">
5
5
  <span>{{ text }}</span>
6
- <header-popover
7
- :width="width"
8
- :trigger="trigger"
9
- @confirm="confirm"
10
- @clear="clear"
11
- @close="close"
12
- @open="open"
13
- >
14
- <template #reference="{ toggle }">
15
- <!-- <filter-icon-vue @click="toggle" :color="value ? 'cadetblue' : ''" /> -->
16
- <svg-icon
17
- name="mysearch"
18
- size="15"
19
- :color="value ? '#2C93FF' : ''"
20
- @click="toggle"
21
- ></svg-icon>
22
- </template>
23
- <template #default="{ closeF }">
6
+
7
+ <div class="myporpove" id="myinputs">
8
+ <!-- <el-button @click.stop="handleButtonClick"> </el-button> -->
9
+
10
+ <!-- <el-popover
11
+ ref="popover"
12
+ :title="text"
13
+ content="这是一段内容,这是一段内容。"
14
+ :visible="visible"
15
+ >
16
+ <template #reference>
17
+ <div style="width: 23px; height: 16px">
18
+ <svg-icon
19
+ name="mysearch"
20
+ size="15"
21
+ :color="value ? '#2C93FF' : ''"
22
+ @click="toggle"
23
+ />
24
+ </div>
25
+ </template>
24
26
  <el-select
25
27
  v-model="operator"
26
28
  class="m-2 input-select"
@@ -35,114 +37,621 @@
35
37
  :value="item.value"
36
38
  />
37
39
  </el-select>
38
- <el-input
39
- v-if="!type || type === 'text'"
40
- v-model="value"
41
- :placeholder="placeholder"
42
- @keydown.enter="confirm(closeF)"
43
- clearable
44
- />
45
- <el-input
46
- v-else-if="type === 'number'"
47
- v-model.number="value"
48
- :placeholder="placeholder"
49
- @keydown.enter="confirm(closeF)"
50
- clearable
51
- />
52
- </template>
53
- </header-popover>
40
+ </el-popover> -->
41
+
42
+ <header-popover
43
+ :popperStyle="PopperStyle"
44
+ :trigger="trigger"
45
+ :customAttribute="props.column"
46
+ @confirm="confirm"
47
+ @clear="clear"
48
+ @close="close"
49
+ @open="open"
50
+ >
51
+ <template #reference="{ toggle }">
52
+ <div style="width: 40px; height: 30px; line-height: 30px; display: flex">
53
+ <div
54
+ class="orders"
55
+ style="display: flex; flex-direction: column; width: 50%; height: 100%"
56
+ v-if="_ordersConfig.enableOrder"
57
+ >
58
+ <div style="cursor: pointer; height: 50%; line-height: 26px">
59
+ <svg-icon
60
+ name="ordertop"
61
+ size="15"
62
+ :color="hasordersValueAsc ? '#2C93FF' : ''"
63
+ :colorh="'#2C93FF'"
64
+ @click="orderChangtop('asc')"
65
+ />
66
+ </div>
67
+ <div style="cursor: pointer; height: 50%; line-height: 20px">
68
+ <svg-icon
69
+ name="orderbot"
70
+ size="15"
71
+ :color="hasordersValueDes ? '#2C93FF' : ''"
72
+ :colorh="'#2C93FF'"
73
+ @click="orderChangbot('des')"
74
+ />
75
+ </div>
76
+ </div>
77
+ <div
78
+ class="searchs"
79
+ style="cursor: pointer; width: 50%; height: 100%; line-height: 36px"
80
+ v-if="!props.disableFilter"
81
+ >
82
+ <svg-icon
83
+ name="mysearch"
84
+ size="15"
85
+ :color="hasValue ? '#2C93FF' : ''"
86
+ :colorh="'#2C93FF'"
87
+ @click="toggle"
88
+ />
89
+ </div>
90
+ </div>
91
+ </template>
92
+ <template #default="{ closeF }">
93
+ <el-select
94
+ v-if="props.type !== 'select'"
95
+ v-model="operator"
96
+ class="m-2 input-select"
97
+ placeholder="请选择查询类型"
98
+ size="default"
99
+ >
100
+ <!-- clearable -->
101
+ <el-option
102
+ v-for="item in operatorOptions"
103
+ :key="item.value"
104
+ :label="item.label"
105
+ :value="item.value"
106
+ :disabled="item.disabled"
107
+ />
108
+ </el-select>
109
+
110
+ <el-input
111
+ v-if="props.type === 'number'"
112
+ v-model.number="value"
113
+ :placeholder="placeholder"
114
+ @keydown.enter="confirm(closeF)"
115
+ clearable
116
+ />
117
+ <el-input
118
+ v-else-if="!props.type || props.type === 'text'"
119
+ v-model.trim="value"
120
+ :placeholder="placeholder"
121
+ @keydown.enter="confirm(closeF)"
122
+ clearable
123
+ />
124
+ <el-select-v2
125
+ v-else-if="props.type === 'select'"
126
+ v-model="selectValue"
127
+ :placeholder="placeholder || _selectConfig.placeholder"
128
+ :size="_selectConfig.selectSize || 'default'"
129
+ :options="_selectConfig.options"
130
+ :clearable="_selectConfig.clearable"
131
+ :filterable="_selectConfig.filterable"
132
+ :multiple="_selectConfig.selectMultiple"
133
+ :collapse-tags-tooltip="_selectConfig.collapseTagsTooltip"
134
+ :collapse-tags="_selectConfig.collapseTags"
135
+ :allow-create="_selectConfig.allowCreate"
136
+ :default-first-option="_selectConfig.defaultFirstOption"
137
+ :popper-class="_selectConfig.popperClass"
138
+ />
139
+ <div class="date-picker" v-if="props.type === 'date'">
140
+ <el-date-picker
141
+ v-if="props.type === 'date' && operator === 'between'"
142
+ v-model="value"
143
+ type="daterange"
144
+ unlink-panels
145
+ range-separator="至"
146
+ start-placeholder="开始日期"
147
+ end-placeholder="结束日期"
148
+ :shortcuts="shortcuts"
149
+ size="default"
150
+ :style="{ width: '100%' }"
151
+ format="YYYY-MM-DD"
152
+ value-format="YYYY-MM-DD"
153
+ />
154
+ <el-date-picker
155
+ v-else-if="props.type === 'date' && operator !== 'between'"
156
+ v-model="value"
157
+ type="date"
158
+ :placeholder="placeholder"
159
+ :shortcuts="shortcutsDay"
160
+ size="default"
161
+ :style="{ width: '100%' }"
162
+ format="YYYY-MM-DD"
163
+ value-format="YYYY-MM-DD"
164
+ />
165
+ </div>
166
+ </template>
167
+ </header-popover>
168
+ </div>
54
169
  </div>
55
170
  </template>
56
171
 
57
172
  <script setup lang="ts">
173
+ defineOptions({ name: 'ci-headerInput' })
58
174
  import SvgIcon from '@/components/SvgIcon.vue'
59
- import { computed, ref } from 'vue'
175
+ import { computed, ref, watch, toRefs } from 'vue'
176
+ import lodash from 'lodash'
60
177
  import headerPopover from './utils/headerPopover.vue'
61
- import filterIconVue from './utils/filterIcon.vue'
62
178
  import { TooltipTriggerType } from 'element-plus'
63
- import { useWeighingStore } from '@/store/Weighing'
64
- import { storeToRefs } from 'pinia'
65
- import { removeParamsFilters } from './utils/removeParamsFilters'
66
- const store = useWeighingStore()
179
+ const popover = ref()
67
180
 
68
- const { params } = storeToRefs(store)
69
-
70
- const props = defineProps<{
71
- text?: string
181
+ // 定义 props 的类型
182
+ interface SelectConfig {
183
+ options: any[]
72
184
  placeholder?: string
73
- initValue?: string | number
74
- type?: 'text' | 'number'
75
- width?: number
76
- trigger?: TooltipTriggerType
77
- column?: string
78
- }>()
79
- const emits = defineEmits(['change', 'open'])
185
+ selectSize?: string
186
+ selectDisabled?: boolean
187
+ clearable?: boolean
188
+ filterable?: boolean
189
+ collapseTags?: boolean
190
+ collapseTagsTooltip?: boolean
191
+ selectMultiple?: boolean
192
+ allowCreate?: boolean
193
+ defaultFirstOption?: boolean
194
+ popperClass?: string
195
+ selectStyle?: string
196
+ selectAll?: boolean
197
+ selectAllLabel?: string
198
+ selectAllPlaceholder?: string
199
+ optionValue?: string
200
+ optionLabel?: string
201
+ }
202
+ // 定义排序的类型
203
+ interface OrdersConfig {
204
+ enableOrder: boolean // 是否开启排序 默认false 关闭的
205
+ initOrder: 'true' | 'false' | '' // 默认是否升序排序 默认''
206
+ }
207
+ interface Props {
208
+ column: string // 当前列的key值
209
+ text: string // 表头列显示的文本
210
+ storePar: any // 缓存store中的params赛选参数
211
+ placeholder?: string // 提醒
212
+ initValue?: string | number // 初始值
213
+ disableFilter?: boolean // 是否禁用筛选功能 默认 false
214
+ type?: 'text' | 'number' | 'select' | 'date' // 输入框类型
215
+ popperStyle?: { width: string; height: string } // 弹出面板的自定义样式
216
+ trigger?: TooltipTriggerType // 触发方式
217
+ selectConfig?: SelectConfig // select下拉选项时的 配置项
218
+ ordersConfig?: OrdersConfig // 排序的配置项
219
+ }
220
+
221
+ // 使用 defineProps 和 withDefaults 来声明 props 并设置默认值
222
+
223
+ const props = withDefaults(defineProps<Props>(), {
224
+ type: 'text',
225
+ initValue: '',
226
+ disableFilter: false,
227
+ // storePar: () => {},
228
+ popperStyle: () => ({ width: '240px', height: '100px' }),
229
+ selectConfig: (): SelectConfig => ({
230
+ placeholder: '请选择', // 输入框的placeholder提示
231
+ selectSize: 'default', // 输入框的大小
232
+ selectDisabled: false, // 输入框的disabled属性
233
+ clearable: true, // 是否有清除按钮
234
+ filterable: true, // 是否可搜索
235
+ collapseTags: true, // 是否折叠tag
236
+ collapseTagsTooltip: true, // 是否显示tag的tooltip提示
237
+ selectMultiple: false, // 是否多选
238
+ allowCreate: false, // 是否允许创建新条目
239
+ defaultFirstOption: true, // 是否默认高亮第一个选项
240
+ popperClass: '', // popper的class类名
241
+ selectStyle: '', // 输入框的style样式
242
+ selectAll: false, // 是否显示全选按钮
243
+ selectAllLabel: '全选', // 全选按钮的文本
244
+ selectAllPlaceholder: '请选择', // 全选按钮的placeholder提示
245
+ options: [], //select下拉选项时的 列表数据
246
+ optionValue: 'value', // 选项的默认value值
247
+ optionLabel: 'label' // 选项的默认label值
248
+ })
249
+ })
250
+
251
+ // console.log('props表头', props)
252
+ // 根据传参重置下拉列配置参数的默认值
253
+ const _selectConfig = computed((): SelectConfig => {
254
+ let obj = {
255
+ placeholder: '请选择', // 输入框的placeholder提示
256
+ selectSize: 'default', // 输入框的大小
257
+ selectDisabled: false, // 输入框的disabled属性
258
+ clearable: true, // 是否有清除按钮
259
+ filterable: true, // 是否可搜索
260
+ collapseTags: true, // 是否折叠tag
261
+ collapseTagsTooltip: true, // 是否显示tag的tooltip提示
262
+ selectMultiple: false, // 是否多选
263
+ allowCreate: false, // 是否允许创建新条目
264
+ defaultFirstOption: true, // 是否默认高亮第一个选项
265
+ popperClass: '', // popper的class类名
266
+ selectStyle: '', // 输入框的style样式
267
+ selectAll: false, // 是否显示全选按钮
268
+ selectAllLabel: '全选', // 全选按钮的文本
269
+ selectAllPlaceholder: '请选择', // 全选按钮的placeholder提示
270
+ options: [], //select下拉选项时的 列表数据
271
+ optionValue: 'value', // 选项的默认value值
272
+ optionLabel: 'label' // 选项的默认label值
273
+ }
274
+ return lodash.assign(obj, props.selectConfig || {})
275
+ })
276
+
277
+ // 根据传参重置排序配置参数的默认值
278
+ const _ordersConfig = computed((): OrdersConfig => {
279
+ let obj = {
280
+ enableOrder: false, // 是否开启排序 默认 false 关闭的
281
+ initOrder: '' // 默认是否升序排序 默认不排序''
282
+ }
283
+ return lodash.assign(obj, props.ordersConfig)
284
+ })
285
+
286
+ // sql语句中的比较运算符号列表 operator
287
+ const operatorOptions = ref<
288
+ {
289
+ value: string
290
+ label: string
291
+ disabled?: boolean
292
+ }[]
293
+ >([
294
+ {
295
+ value: 'like',
296
+ label: '包含'
297
+ },
298
+ {
299
+ value: '=',
300
+ label: '等于'
301
+ },
302
+ {
303
+ value: '>',
304
+ label: '大于'
305
+ },
306
+ {
307
+ value: '>=',
308
+ label: '大于等于'
309
+ },
310
+ {
311
+ value: '<',
312
+ label: '小于'
313
+ },
314
+ {
315
+ value: '<=',
316
+ label: '小于等于'
317
+ },
318
+ {
319
+ value: '<>',
320
+ label: '不等于'
321
+ },
322
+ {
323
+ value: 'between',
324
+ label: '介于'
325
+ }
326
+ ])
327
+
328
+ // 定义 emits
329
+ const emits = defineEmits(['change', 'open', 'getstore'])
330
+
80
331
  const initValue = computed(() => {
81
332
  if (props.type === 'text') return String(props.initValue) || void 0
82
333
  return Number(props.initValue) || void 0
83
334
  })
84
- const value = ref<string | number | undefined>(initValue.value)
335
+
336
+ const internalPopperStyle = ref(props.popperStyle) // 创建一个响应式的样式对象
337
+ const PopperStyle = computed(() => internalPopperStyle.value) // 创建计算属性,返回响应式的样式对象
338
+ // 修改 PopperStyle 值的函数
339
+ const updatePopperStyle = (newStyle: Partial<typeof internalPopperStyle.value>) => {
340
+ // 使用 Object.assign 来合并新样式和旧样式
341
+ Object.assign(internalPopperStyle.value, newStyle)
342
+ }
343
+
344
+ const hasValue = ref(false) // 判断store中对应列的value是否有值的参数
345
+ const hasordersValueAsc = ref(false) // 判断升序按钮是否有值
346
+ const hasordersValueDes = ref(false) // 判断降序按钮是否有值
347
+
348
+ const value = ref<any>(initValue.value) // 定义筛选输入框的值
349
+ const operator = ref('like') // 运算符默认值
350
+ // 定义排序的值
351
+ const ordersVal = ref<string | number | undefined>(_ordersConfig.value.initOrder || '')
352
+ const selectValue = ref<any>(initValue.value) // 定义select的值
353
+
354
+ // 1、判断:如果是select下拉列表,就隐藏比较运算符选项框,直接赋值'='
355
+ if (props.type === 'select') {
356
+ operator.value = '='
357
+ // 如果单选,给出默认值
358
+ if (!props.selectConfig.selectMultiple && props.selectConfig.optionValue) {
359
+ value.value = props.selectConfig.optionValue
360
+ }
361
+ // 如果为多选将运算符默认值改成'in',将多选的数组值转换成字符串
362
+ if (props.selectConfig.selectMultiple) {
363
+ operator.value = 'in'
364
+ }
365
+ // 将面板宽度调整宽一些
366
+ // 判断props.popperStyle的宽度是否为小于300px,如果是就修改为300px
367
+ if (props.popperStyle.width && parseInt(props.popperStyle.width.replace('px', '')) < 300) {
368
+ updatePopperStyle({ width: '300px' })
369
+ }
370
+ }
371
+
372
+ // console.log('PopperStyle.value', PopperStyle.value, props.popperStyle)
373
+
374
+ // 2、 判断:如果是date日期,就隐藏比较运算符选项框,直接赋值'='
375
+ const shortcuts = ref<{ text: string; value: any }[]>([])
376
+ const shortcutsDay = ref<{ text: string; value: any }[]>([])
377
+ if (props.type === 'date') {
378
+ operator.value = 'between'
379
+ // 将包含禁用
380
+ operatorOptions.value[0].disabled = true
381
+ // 判断是否是日期范围
382
+ shortcuts.value = [
383
+ {
384
+ text: '前一周',
385
+ value: () => {
386
+ const end = new Date()
387
+ const start = new Date()
388
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
389
+ return [start, end]
390
+ }
391
+ },
392
+ {
393
+ text: '前一月',
394
+ value: () => {
395
+ const end = new Date()
396
+ const start = new Date()
397
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
398
+ return [start, end]
399
+ }
400
+ },
401
+ {
402
+ text: '最近3个月',
403
+ value: () => {
404
+ const end = new Date()
405
+ const start = new Date()
406
+ start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
407
+ return [start, end]
408
+ }
409
+ }
410
+ ]
411
+ shortcutsDay.value = [
412
+ {
413
+ text: '今天',
414
+ value: new Date()
415
+ },
416
+ {
417
+ text: '昨天',
418
+ value: () => {
419
+ const date = new Date()
420
+ date.setTime(date.getTime() - 3600 * 1000 * 24)
421
+ return date
422
+ }
423
+ },
424
+ {
425
+ text: '一周前',
426
+ value: () => {
427
+ const date = new Date()
428
+ date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
429
+ return date
430
+ }
431
+ }
432
+ ]
433
+ }
434
+ // 不是日期筛选的时候将介于禁用
435
+ if (props.type !== 'date') {
436
+ operatorOptions.value[7].disabled = true
437
+ }
438
+
439
+ // 监听operator.value的变化重置value的值
440
+ watch(operator, (newVal, oldVal) => {
441
+ console.log('operator.value: ', newVal, oldVal)
442
+ if (newVal == 'between' || oldVal == 'between') {
443
+ value.value = ''
444
+ }
445
+ })
85
446
 
86
447
  // 返回面板数据
87
448
  const confirm = (closeF?: Function) => {
88
- console.log('当前的params', params)
89
- // if (value.value) {
90
- emits('change', {
449
+ if (props.selectConfig.selectMultiple) {
450
+ operator.value = 'in'
451
+ value.value = selectValue.value?.join(',') || ''
452
+ } else {
453
+ operator.value = '='
454
+ value.value = selectValue.value
455
+ }
456
+ // 将当前参数的值放到对象中
457
+ let obj = {
91
458
  value: value.value,
92
459
  operator: operator.value,
93
460
  column: props.column,
94
- })
461
+ type: 'filter'
462
+ }
463
+
464
+ // 判断input输入框中的值是否为空
465
+
466
+ emits('change', obj)
95
467
  closeF && closeF()
96
468
  }
97
469
 
98
470
  // 清除按钮:清空输入框和发送请求
99
471
  const clear = () => {
100
- console.log('执行清除')
101
- const go =
102
- initValue.value !== void 0 &&
103
- initValue.value !== null &&
104
- initValue.value !== ''
105
- // 清除输入框数据
106
472
  value.value = void 0
107
- operator.value = void 0
108
- // 清除缓存的数据
109
- removeParamsFilters(store.params.filters, props.column)
110
- if (go) confirm()
473
+ confirm()
111
474
  }
112
475
 
113
476
  // 关闭面板
114
- const close = () => {
115
- console.log('关闭面板123', value.value, initValue.value, store.params.filters)
116
- // if (value.value !== initValue.value) {
117
- // value.value = initValue.value
118
- // }
119
- }
477
+ const close = () => {}
120
478
  const open = () => {
121
479
  emits('open')
122
480
  }
123
- const operator = ref('')
124
- const options = ref([
125
- {
126
- value: 'like',
127
- label: '包含',
128
- },
129
- {
130
- value: '=',
131
- label: '等于',
132
- },
133
- {
134
- value: '>',
135
- label: '大于',
136
- },
137
- {
138
- value: '<',
139
- label: '小于',
481
+ /*
482
+ const handleShow = () => {
483
+ console.log('打开')
484
+ visible.value = true
485
+ document.addEventListener('mousedown', handleDocumentClick)
486
+ }
487
+ const handleHide = () => {
488
+ console.log('关闭')
489
+ visible.value = false
490
+ document.removeEventListener('mousedown', handleDocumentClick)
491
+ }
492
+
493
+ const handleDocumentClick = (e: any) => {
494
+ // 查找所有的class名称为 is-light 的元素
495
+ // const el1 = document.querySelector('.is-light')
496
+ // console.log('el1: ', el1)
497
+
498
+ const elements = document.querySelectorAll('[id^="el-popper-container-"]')
499
+ console.log('elements: ', elements)
500
+
501
+ if (elements && elements.length > 0) {
502
+ for (let i = 0; i < elements.length; i++) {
503
+ const element = elements[i]
504
+ console.log('element: ', element)
505
+ if (element?.contains(e.target)) {
506
+ return
507
+ }
508
+ }
509
+ }
510
+
511
+ // 通过自定义属性 aria-label 查找元素
512
+ const el = document.querySelector(`[aria-label="${props.text}"]`)
513
+ console.dir('el: ', el)
514
+ // 获取 el 的class为.is-light的兄弟元素
515
+ const el2 = el?.parentElement?.querySelector('.el-select__popper')
516
+ console.dir('el2: ', el2)
517
+ console.log('是否包含: ', el?.contains(e.target))
518
+ // 获取class为 porpove的元素;
519
+
520
+ // 判断点击的元素是否是是e的子元素
521
+ if (el?.contains(e.target)) {
522
+ return
523
+ }
524
+ if (!popover.value.$el.contains(e.target)) {
525
+ console.log(22222)
526
+ handleHide()
527
+ }
528
+ }
529
+
530
+ const visible = ref(false)
531
+ // const toggle = () => {
532
+ // console.log('visible', visible.value)
533
+ // if (visible.value) {
534
+ // // visible.value = false
535
+ // } else {
536
+ // visible.value = true
537
+ // document.addEventListener('mousedown', handleDocumentClick)
538
+ // lodash.debounce(() => handleShow(), 500)
539
+ // }
540
+ // }
541
+ */
542
+ // 排序
543
+ const orderChangtop = (val: string) => {
544
+ console.log('升序', ordersVal.value)
545
+ if (ordersVal.value == '' || ordersVal.value == 'false') {
546
+ ordersVal.value = 'true'
547
+ return emits('change', {
548
+ column: props.column,
549
+ asc: ordersVal.value,
550
+ type: 'order'
551
+ })
552
+ }
553
+ if (ordersVal.value == 'true') {
554
+ ordersVal.value = ''
555
+ return emits('change', {
556
+ column: props.column,
557
+ asc: ordersVal.value,
558
+ type: 'order'
559
+ })
560
+ }
561
+ }
562
+ const orderChangbot = (val: string) => {
563
+ console.log('降序', ordersVal.value)
564
+ if (ordersVal.value == 'false') {
565
+ ordersVal.value = ''
566
+ return emits('change', {
567
+ column: props.column,
568
+ asc: ordersVal.value,
569
+ type: 'order'
570
+ })
571
+ }
572
+ if (ordersVal.value == '' || ordersVal.value == 'true') {
573
+ ordersVal.value = 'false'
574
+ return emits('change', {
575
+ column: props.column,
576
+ asc: ordersVal.value,
577
+ type: 'order'
578
+ })
579
+ }
580
+ }
581
+
582
+ // 监听 props.storePar 的filters 和 orders属性 然对应按钮颜色是否改变
583
+ watch(
584
+ () => props.storePar,
585
+ (newVal, oldVal) => {
586
+ // console.log('监听props.storePar', newVal, oldVal)
587
+ if (newVal.filters) {
588
+ // 判断是否是当前列的筛选条件
589
+ const filter = newVal.filters.find((item: any) => item.column == props.column)
590
+ if (filter) {
591
+ // console.log('filter: ', filter.value)
592
+ // 判断是否是当前列的筛选条件
593
+ if (filter.value) {
594
+ hasValue.value = true
595
+ } else {
596
+ hasValue.value = false
597
+ }
598
+ } else {
599
+ hasValue.value = false
600
+ }
601
+ }
602
+ if (newVal.orders) {
603
+ // 判断是否是当前列的筛选条件
604
+ const order = newVal.orders.find((item: any) => item.column == props.column)
605
+ if (order) {
606
+ // console.log('order: ', order.asc)
607
+ // 判断是否是当前列的筛选条件
608
+ if (order.asc == 'true') {
609
+ hasordersValueAsc.value = true
610
+ hasordersValueDes.value = false
611
+ } else if (order.asc == 'false') {
612
+ hasordersValueAsc.value = false
613
+ hasordersValueDes.value = true
614
+ }
615
+ } else {
616
+ hasordersValueAsc.value = false
617
+ hasordersValueDes.value = false
618
+ }
619
+ }
140
620
  },
141
621
  {
142
- value: '<>',
143
- label: '不等于',
144
- },
145
- ])
622
+ deep: true,
623
+ immediate: true
624
+ }
625
+ )
146
626
  </script>
147
627
 
148
- <style scoped lang="scss"></style>
628
+ <style scoped lang="scss">
629
+ .porpove {
630
+ position: relative;
631
+ .header-input-popover {
632
+ position: absolute;
633
+
634
+ height: 100px;
635
+ background-color: #fff;
636
+ border: 1px solid #ccc;
637
+ padding: 10px;
638
+
639
+ top: 30px;
640
+ left: 50%;
641
+ transform: translateX(-50%);
642
+ z-index: 2081;
643
+ position: absolute;
644
+ inset: 159px auto auto 305px;
645
+ width: 230px;
646
+ // box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
647
+ // &::before {
648
+ // content: '';
649
+ // position: absolute;
650
+ // top: -10px;
651
+ // left: 50%;
652
+ // transform: translateX(-50%);
653
+ // border: 5px solid transparent;
654
+ // }
655
+ }
656
+ }
657
+ </style>