From 62f7ad4b9c51c554224c8b69fdda5756cd6e7c0f Mon Sep 17 00:00:00 2001 From: Gary Fu Date: Sat, 6 Jan 2024 18:11:40 +0800 Subject: [PATCH] =?UTF-8?q?search=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/main.css | 4 + src/components/common-autocomplete/index.vue | 247 +++++++++--------- src/components/common-form/index.vue | 11 +- src/views/tools/Forms.vue | 253 +++++++++++-------- src/views/tools/Tables.vue | 19 +- 5 files changed, 297 insertions(+), 237 deletions(-) diff --git a/src/assets/main.css b/src/assets/main.css index 6a65c1c..2d642fc 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -97,6 +97,10 @@ html, body, #app, .index-container { padding-top: 20px; } +.common-form.el-form--inline .el-input{ + --el-input-width: 220px; +} + .form-edit-width-70 { width:70% } diff --git a/src/components/common-autocomplete/index.vue b/src/components/common-autocomplete/index.vue index 873180d..80f2d49 100644 --- a/src/components/common-autocomplete/index.vue +++ b/src/components/common-autocomplete/index.vue @@ -29,6 +29,7 @@ * @property {string} labelKey label字段名 * @property {number} debounceTime 防抖时间 * @property {string} autocompleteWidth 宽度 + * @property {string} inputWidth input宽度 * @property {CommonSelectPageOption} selectPageConfig 分页 * @property {Number} colSize 显示几列 * @property {string} loadingText 加载提示loading @@ -36,7 +37,7 @@ * @property {Object} inputAttrs 输入框配置项 */ import { computed, nextTick, onMounted, ref, watch } from 'vue' -import { debounce } from 'lodash' +import { debounce, isObject } from 'lodash' import { onClickOutside, onKeyStroke, useVModel } from '@vueuse/core' import chunk from 'lodash/chunk' @@ -80,6 +81,10 @@ const props = defineProps({ type: String, default: '500px' }, + inputWidth: { + type: String, + default: '220px' + }, autocompleteConfig: { type: Object, required: true @@ -122,7 +127,7 @@ const props = defineProps({ } }) -const emit = defineEmits(['update:modelValue', 'onSelectData', 'update:defaultLabel']) +const emit = defineEmits(['update:modelValue', 'change', 'update:defaultLabel']) // 关键字搜索 const keywords = ref(props.defaultLabel) // 上次搜索记录 @@ -214,15 +219,32 @@ watch(() => popoverVisible.value, (val) => { } }) +watch(() => props.modelValue, (value) => { + console.info('=====================value', value) + if (!props.useIdModel) { + setAutocompleteLabel(value && isObject(value) ? value[labelProp.value] : '') + } + vModel.value = value +}) + +watch(() => props.defaultLabel, (label) => { + setAutocompleteLabel(label) +}) + //* ********************数据选择********************* const vModel = useVModel(props, 'modelValue', emit) -const vAutocompleteLabel = useVModel(props, 'defaultLabel', emit) +const vDefaultLabel = useVModel(props, 'defaultLabel', emit) + +const setAutocompleteLabel = label => { + keywords.value = label + vDefaultLabel.value = label + lastAutocompleteLabel.value = label +} const onSelectData = (row) => { popoverVisible.value = false if (!vModel.value && !row) { - console.info('==================', row) return } let label = '' @@ -231,11 +253,9 @@ const onSelectData = (row) => { label = row[labelProp.value] value = props.useIdModel ? row[idProp.value] : row } - keywords.value = label - vAutocompleteLabel.value = label - lastAutocompleteLabel.value = label + setAutocompleteLabel(label) vModel.value = value - emit('onSelectData', row) + emit('change', row) } // =======================按键处理=================== @@ -316,114 +336,113 @@ const selectPagePaginationChange = (tab, pageNumber) => {