{"version":3,"file":"SearchForm.mjs","sources":["../../../../src/components/SearchForm/SearchForm.vue"],"sourcesContent":["<template>\r\n\t<a-form ref=\"searchFormRef\" name=\"advanced_search\" :model=\"formState\" :label-col=\"{ span: 6 }\" class=\"mb-4 ant-advanced-search-form\">\r\n\t\t<a-row :gutter=\"24\">\r\n\t\t\t<!-- 使用具名插槽来接收字段内容，父组件通过插槽提供输入控件 -->\r\n\t\t\t<template v-for=\"(item, index) in formFields\" :key=\"index\">\r\n\t\t\t\t<a-col :span=\"item.span || 6\" v-if=\"!item.advanced || advanced\">\r\n\t\t\t\t\t<a-form-item :name=\"item.name\" :rules=\"item.rules\">\r\n\t\t\t\t\t\t<template #label>\r\n\t\t\t\t\t\t\t<a-tooltip :title=\"item.label\" placement=\"top\">\r\n\t\t\t\t\t\t\t\t<span style=\"display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap\">\r\n\t\t\t\t\t\t\t\t\t{{ item.label }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</a-tooltip>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t\t<slot :name=\"item.slot || item.name\" :item=\"item\" :formState=\"formState\">\r\n\t\t\t\t\t\t\t<!-- 插槽内容由父组件提供，这里不定义默认内容 -->\r\n\t\t\t\t\t\t</slot>\r\n\t\t\t\t\t</a-form-item>\r\n\t\t\t\t</a-col>\r\n\t\t\t</template>\r\n\r\n\t\t\t<!-- 操作按钮区域 -->\r\n\t\t\t<a-col :span=\"buttonSpan\" class=\"ctrl-buttons\" style=\"display: flex; justify-content: flex-end; align-items: center; padding: 12px; padding-top: 0\">\r\n\t\t\t\t<a-button size=\"small\" type=\"primary\" @click=\"handleSearch\">查询</a-button>\r\n\t\t\t\t<a-divider type=\"vertical\" />\r\n\t\t\t\t<a-button size=\"small\" @click=\"handleReset\">重置</a-button>\r\n\t\t\t\t<a-divider type=\"vertical\" />\r\n\t\t\t\t<a-button size=\"small\" type=\"link\" @click=\"toggleAdvanced\">\r\n\t\t\t\t\t{{ advanced ? '收起' : '展开' }}\r\n\t\t\t\t\t<i :class=\"advanced ? 'fa fa-chevron-up' : 'fa fa-chevron-down'\" style=\"margin-left: 4px\" />\r\n\t\t\t\t</a-button>\r\n\t\t\t</a-col>\r\n\t\t</a-row>\r\n\t</a-form>\r\n</template>\r\n\r\n<script setup name=\"SearchForm\">\r\n\timport { ref, computed } from 'vue'\r\n\timport { Form, Row, Col, Button } from 'ant-design-vue'\r\n\r\n\tconst props = defineProps({\r\n\t\tformState: {\r\n\t\t\ttype: Object,\r\n\t\t\trequired: true\r\n\t\t},\r\n\t\tformFields: {\r\n\t\t\ttype: Array,\r\n\t\t\trequired: true,\r\n\t\t\tdefault: () => []\r\n\t\t}\r\n\t})\r\n\r\n\tconst emit = defineEmits(['search', 'reset'])\r\n\r\n\tconst searchFormRef = ref()\r\n\tconst advanced = ref(false)\r\n\r\n\t// 计算操作按钮的span值，确保始终在最后一格\r\n\tconst buttonSpan = computed(() => {\r\n\t\t// 获取当前显示的字段\r\n\t\tconst visibleFields = props.formFields.filter((item) => !item.advanced || advanced.value)\r\n\t\t// 计算当前行已占用的span\r\n\t\tconst totalSpan = visibleFields.reduce((sum, item) => sum + (item.span || 6), 0)\r\n\t\t// 计算当前行剩余的span\r\n\t\tconst remainingSpan = 24 - (totalSpan % 24)\r\n\t\t// 如果剩余空间足够放按钮(至少6个span)，则使用剩余空间，否则使用6个span\r\n\t\treturn remainingSpan >= 6 ? remainingSpan : 6\r\n\t})\r\n\r\n\tconst toggleAdvanced = () => {\r\n\t\tadvanced.value = !advanced.value\r\n\t}\r\n\r\n\tconst handleSearch = () => {\r\n\t\temit('search')\r\n\t}\r\n\r\n\tconst handleReset = () => {\r\n\t\tsearchFormRef.value?.resetFields()\r\n\t\temit('reset')\r\n\t}\r\n\r\n\t// 暴露方法给父组件\r\n\tconst resetFields = () => {\r\n\t\tsearchFormRef.value?.resetFields()\r\n\t}\r\n\r\n\tdefineExpose({\r\n\t\tresetFields\r\n\t})\r\n</script>\r\n\r\n<style scoped lang=\"less\"></style>\r\n"],"names":["_createBlock","_createVNode","_createCommentVNode","_openBlock","_createElementBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString","_renderSlot","_createTextVNode"],"mappings":"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"}