liyu-pc-base 1.0.486 → 1.0.494

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 +1 @@
1
- {"version":3,"file":"SearchRender-02V6hXM3.js","names":[],"sources":["../src/components/FormRender/SearchRender.vue","../src/components/FormRender/SearchRender.vue"],"sourcesContent":["<template>\n <template v-if=\"!isShowGeneralFilter\">\n <div v-show=\"!formShow.open\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = true;\n $emit('resize');\n }\n \"\n >\n {{ $t('展开') }}\n </a-button>\n </a-space>\n <span v-for=\"field in form.fields\">\n <span v-if=\"field.type == 'rangepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangePre(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangePre(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangeAfter(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangeAfter(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else-if=\"field.type == 'datepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduce(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"add(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else>\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != '' && isShowFilter(field)\"\n color=\"green\"\n >\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n </span>\n <template v-if=\"searchLabelList.length > 0\">\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"\n label.filters\n ? label.filteredValue && JSON.stringify(label.filteredValue) !== '[]'\n : false\n \"\n color=\"green\"\n >\n {{ label.label }} 包含:{{ loadLabelOptions(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'filters' })\"\n />\n </a-tag>\n </template>\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"label.sorter && label.sortOrder\"\n color=\"blue\"\n >\n {{ label.label }}: {{ loadLabelSort(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'sorter' })\"\n />\n </a-tag>\n </template>\n </template>\n </div>\n <a-form\n v-if=\"delayShow || formShow.open\"\n v-show=\"formShow.open\"\n ref=\"form\"\n autocomplete=\"off\"\n :model=\"model\"\n :rules=\"form.rules\"\n :layout=\"form.settings.layout\"\n :label-col=\"form.settings.labelCol\"\n :wrapper-col=\"form.settings.wrapperCol\"\n :labelAlign=\"form.settings.labelAlign\"\n scrollToFirstError\n >\n <a-form-item v-if=\"showSearch\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = false;\n $emit('resize');\n }\n \"\n >\n {{ $t('隐藏') }}\n </a-button>\n </a-space>\n </a-form-item>\n <template\n v-for=\"field in form.fields\"\n :key=\"field.name\"\n >\n <field-render-2\n v-if=\"field.type == 'rangepicker'\"\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"{ ...field, format: field.dateFormat }\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n <field-render-2\n v-else\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"field\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n </template>\n <a-form-item v-if=\"showSearch\">\n <a-button\n size=\"small\"\n type=\"primary\"\n @click=\"search\"\n >\n {{ $t('查询') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReset\">\n <a-button\n size=\"small\"\n @click=\"resetFields\"\n >\n {{ $t('重置') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReport\">\n <a-button\n size=\"small\"\n type=\"info\"\n @click=\"editModal.open = true\"\n >\n {{ $t('订阅') }}\n </a-button>\n </a-form-item>\n </a-form>\n <a-modal\n v-if=\"editModal.open\"\n :open=\"editModal.open\"\n @cancel=\"\n () => {\n editModal.open = false;\n }\n \"\n />\n </template>\n <template v-if=\"isShowGeneralFilter\">\n <slot name=\"generalFilter\"></slot>\n </template>\n</template>\n<script language=\"ts\">\nimport { watch } from 'vue';\nimport { CloseOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons-vue';\nimport moment from 'moment';\nimport FieldRender2 from 'liyu-pc-base/components/FormRender/FieldRender2.vue';\nimport { cloneDeep } from 'lodash';\n\nexport default {\n name: 'SearchRender',\n components: { FieldRender2, LeftOutlined, RightOutlined, CloseOutlined },\n emits: ['search', 'resize', 'delSearch', 'showGeneralFilter'],\n props: {\n model: {\n type: Object,\n required: true,\n },\n form: {\n type: Object,\n required: true,\n },\n options: {\n type: Object,\n required: true,\n },\n validateInfos: {\n type: Object,\n default: () => {},\n },\n resetFields: {\n type: Function,\n default: () => {},\n },\n showReport: {\n type: Boolean,\n default: () => false,\n },\n showSearch: {\n type: Boolean,\n default: () => true,\n },\n showReset: {\n type: Boolean,\n default: () => true,\n },\n defaultShowEdit: {\n type: Boolean,\n default: () => false,\n },\n search_visible: {\n type: Boolean,\n default: () => false,\n },\n searchLabelList: {\n type: Array,\n default: () => [],\n },\n isShowGeneralFilter: {\n type: Boolean,\n default: () => false,\n },\n is_show_advantage: {\n type: Boolean,\n default: () => false,\n },\n delayShow: {\n type: Boolean,\n default: () => true,\n },\n },\n data() {\n return {\n editModal: {\n open: false,\n },\n formShow: {\n open: this.defaultShowEdit,\n },\n labelModel: {},\n };\n },\n methods: {\n delSearch(obj) {\n this.$emit('delSearch', obj);\n },\n search() {\n this.$refs.form.validate().then(\n () => {\n this.$emit('search');\n this.formShow.open = this.search_visible;\n },\n () => {\n // this.$emit('search');\n },\n );\n },\n validate() {\n return this.$refs.form.validate();\n },\n reset() {\n this.$refs.form.resetFields();\n },\n disable(name) {\n this.form.fields[name].disabled = true;\n },\n disableAll() {\n this.form.fields.forEach(item => {\n item.disabled = true;\n });\n },\n isShowFilter(field) {\n let is = true;\n this.searchLabelList.forEach(item => {\n if (field.name == item.key && item.is_filter_model) {\n is = false;\n }\n });\n return is;\n },\n showLabel(field, name) {\n const options = this.options[field.datasource ? field.datasource : field.name];\n if (this.labelModel[name] != undefined) {\n return this.labelModel[name];\n } else if (options) {\n if (\n typeof this.model[name] == 'object' &&\n this.model[name] != undefined &&\n this.model[name].length >= 0\n ) {\n const selectItems = options\n .filter(item => this.model[name].includes(item.value))\n .map(item => item.name);\n if (selectItems.length > 0) {\n return selectItems;\n }\n\n return '';\n } else {\n const selectItem = options.find(item => item.value == this.model[name]);\n if (selectItem) {\n return selectItem.name;\n }\n return '';\n }\n } else if (field.type === 'rangepicker' && this.model[name] instanceof Array) {\n const [first, second] = this.model[name];\n let first_srt, second_srt;\n if (field?.picker === 'month') {\n first_srt = moment(first).format('YYYY-MM');\n second_srt = moment(second).format('YYYY-MM');\n } else if (field?.picker === 'year') {\n first_srt = moment(first).format('YYYY');\n second_srt = moment(second).format('YYYY');\n } else if (field?.picker === 'time') {\n first_srt = moment(first, field.valueFormat).format(field.valueFormat);\n second_srt = moment(second, field.valueFormat).format(field.valueFormat);\n } else if (!field?.picker || field?.picker === 'date') {\n if (field.show_time) {\n first_srt = moment(first).format('YYYY-MM-DD HH:mm:ss');\n second_srt = moment(second).format('YYYY-MM-DD HH:mm:ss');\n } else {\n first_srt = moment(first).format('YYYY-MM-DD');\n second_srt = moment(second).format('YYYY-MM-DD');\n }\n } else if (field.valueFormat) {\n first_srt = moment(first).format(field.valueFormat);\n second_srt = moment(second).format(field.valueFormat);\n }\n return `${first_srt},${second_srt}`;\n } else {\n return this.model[name];\n }\n },\n loadLabelOptions(label) {\n if (label?.filters && label.filteredValue) {\n const str = [];\n label.filters.forEach(item => {\n let i = cloneDeep(item.value);\n if (i === 'true') {\n i = true;\n } else if (i === 'false') {\n i = false;\n }\n if (Array.isArray(label.filteredValue)) {\n if (label.filteredValue.includes(i) || label.filteredValue.includes(item.value)) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n } else {\n if (label.filteredValue == i || label.filteredValue == item.value) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n }\n });\n return `\" ${str.toString()} \"`;\n }\n },\n loadLabelSort(label) {\n if (label?.sorter && label.sortOrder) {\n if (label.sortOrder === 'ascend') {\n return '升序';\n } else if (label.sortOrder === 'descend') {\n return '降序';\n }\n }\n },\n add(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduce(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangePre(fields) {\n console.log('reduceRangePre');\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangePre(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n isShow(name) {\n let is = false;\n if (this.form?.sideSearch && this.form?.sideSearch.length > 0) {\n this.form?.sideSearch.forEach(item => {\n if (item.name == name) {\n is = true;\n }\n });\n }\n return is;\n },\n handleShowGeneralFilter() {\n this.$emit('showGeneralFilter', { is_show: true });\n },\n },\n created() {\n if (this.form.watch) {\n for (const k in this.form.watch) {\n watch(\n () => this.model[k],\n () => {\n this.form.watch[k](this.model, this.form);\n },\n );\n }\n }\n },\n};\n</script>\n<style scoped lang=\"less\">\n:deep(.ant-select-selection-placeholder) {\n overflow: hidden;\n width: 100%;\n}\n</style>\n","<template>\n <template v-if=\"!isShowGeneralFilter\">\n <div v-show=\"!formShow.open\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = true;\n $emit('resize');\n }\n \"\n >\n {{ $t('展开') }}\n </a-button>\n </a-space>\n <span v-for=\"field in form.fields\">\n <span v-if=\"field.type == 'rangepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangePre(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangePre(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangeAfter(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangeAfter(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else-if=\"field.type == 'datepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduce(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"add(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else>\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != '' && isShowFilter(field)\"\n color=\"green\"\n >\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n </span>\n <template v-if=\"searchLabelList.length > 0\">\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"\n label.filters\n ? label.filteredValue && JSON.stringify(label.filteredValue) !== '[]'\n : false\n \"\n color=\"green\"\n >\n {{ label.label }} 包含:{{ loadLabelOptions(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'filters' })\"\n />\n </a-tag>\n </template>\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"label.sorter && label.sortOrder\"\n color=\"blue\"\n >\n {{ label.label }}: {{ loadLabelSort(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'sorter' })\"\n />\n </a-tag>\n </template>\n </template>\n </div>\n <a-form\n v-if=\"delayShow || formShow.open\"\n v-show=\"formShow.open\"\n ref=\"form\"\n autocomplete=\"off\"\n :model=\"model\"\n :rules=\"form.rules\"\n :layout=\"form.settings.layout\"\n :label-col=\"form.settings.labelCol\"\n :wrapper-col=\"form.settings.wrapperCol\"\n :labelAlign=\"form.settings.labelAlign\"\n scrollToFirstError\n >\n <a-form-item v-if=\"showSearch\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = false;\n $emit('resize');\n }\n \"\n >\n {{ $t('隐藏') }}\n </a-button>\n </a-space>\n </a-form-item>\n <template\n v-for=\"field in form.fields\"\n :key=\"field.name\"\n >\n <field-render-2\n v-if=\"field.type == 'rangepicker'\"\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"{ ...field, format: field.dateFormat }\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n <field-render-2\n v-else\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"field\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n </template>\n <a-form-item v-if=\"showSearch\">\n <a-button\n size=\"small\"\n type=\"primary\"\n @click=\"search\"\n >\n {{ $t('查询') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReset\">\n <a-button\n size=\"small\"\n @click=\"resetFields\"\n >\n {{ $t('重置') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReport\">\n <a-button\n size=\"small\"\n type=\"info\"\n @click=\"editModal.open = true\"\n >\n {{ $t('订阅') }}\n </a-button>\n </a-form-item>\n </a-form>\n <a-modal\n v-if=\"editModal.open\"\n :open=\"editModal.open\"\n @cancel=\"\n () => {\n editModal.open = false;\n }\n \"\n />\n </template>\n <template v-if=\"isShowGeneralFilter\">\n <slot name=\"generalFilter\"></slot>\n </template>\n</template>\n<script language=\"ts\">\nimport { watch } from 'vue';\nimport { CloseOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons-vue';\nimport moment from 'moment';\nimport FieldRender2 from 'liyu-pc-base/components/FormRender/FieldRender2.vue';\nimport { cloneDeep } from 'lodash';\n\nexport default {\n name: 'SearchRender',\n components: { FieldRender2, LeftOutlined, RightOutlined, CloseOutlined },\n emits: ['search', 'resize', 'delSearch', 'showGeneralFilter'],\n props: {\n model: {\n type: Object,\n required: true,\n },\n form: {\n type: Object,\n required: true,\n },\n options: {\n type: Object,\n required: true,\n },\n validateInfos: {\n type: Object,\n default: () => {},\n },\n resetFields: {\n type: Function,\n default: () => {},\n },\n showReport: {\n type: Boolean,\n default: () => false,\n },\n showSearch: {\n type: Boolean,\n default: () => true,\n },\n showReset: {\n type: Boolean,\n default: () => true,\n },\n defaultShowEdit: {\n type: Boolean,\n default: () => false,\n },\n search_visible: {\n type: Boolean,\n default: () => false,\n },\n searchLabelList: {\n type: Array,\n default: () => [],\n },\n isShowGeneralFilter: {\n type: Boolean,\n default: () => false,\n },\n is_show_advantage: {\n type: Boolean,\n default: () => false,\n },\n delayShow: {\n type: Boolean,\n default: () => true,\n },\n },\n data() {\n return {\n editModal: {\n open: false,\n },\n formShow: {\n open: this.defaultShowEdit,\n },\n labelModel: {},\n };\n },\n methods: {\n delSearch(obj) {\n this.$emit('delSearch', obj);\n },\n search() {\n this.$refs.form.validate().then(\n () => {\n this.$emit('search');\n this.formShow.open = this.search_visible;\n },\n () => {\n // this.$emit('search');\n },\n );\n },\n validate() {\n return this.$refs.form.validate();\n },\n reset() {\n this.$refs.form.resetFields();\n },\n disable(name) {\n this.form.fields[name].disabled = true;\n },\n disableAll() {\n this.form.fields.forEach(item => {\n item.disabled = true;\n });\n },\n isShowFilter(field) {\n let is = true;\n this.searchLabelList.forEach(item => {\n if (field.name == item.key && item.is_filter_model) {\n is = false;\n }\n });\n return is;\n },\n showLabel(field, name) {\n const options = this.options[field.datasource ? field.datasource : field.name];\n if (this.labelModel[name] != undefined) {\n return this.labelModel[name];\n } else if (options) {\n if (\n typeof this.model[name] == 'object' &&\n this.model[name] != undefined &&\n this.model[name].length >= 0\n ) {\n const selectItems = options\n .filter(item => this.model[name].includes(item.value))\n .map(item => item.name);\n if (selectItems.length > 0) {\n return selectItems;\n }\n\n return '';\n } else {\n const selectItem = options.find(item => item.value == this.model[name]);\n if (selectItem) {\n return selectItem.name;\n }\n return '';\n }\n } else if (field.type === 'rangepicker' && this.model[name] instanceof Array) {\n const [first, second] = this.model[name];\n let first_srt, second_srt;\n if (field?.picker === 'month') {\n first_srt = moment(first).format('YYYY-MM');\n second_srt = moment(second).format('YYYY-MM');\n } else if (field?.picker === 'year') {\n first_srt = moment(first).format('YYYY');\n second_srt = moment(second).format('YYYY');\n } else if (field?.picker === 'time') {\n first_srt = moment(first, field.valueFormat).format(field.valueFormat);\n second_srt = moment(second, field.valueFormat).format(field.valueFormat);\n } else if (!field?.picker || field?.picker === 'date') {\n if (field.show_time) {\n first_srt = moment(first).format('YYYY-MM-DD HH:mm:ss');\n second_srt = moment(second).format('YYYY-MM-DD HH:mm:ss');\n } else {\n first_srt = moment(first).format('YYYY-MM-DD');\n second_srt = moment(second).format('YYYY-MM-DD');\n }\n } else if (field.valueFormat) {\n first_srt = moment(first).format(field.valueFormat);\n second_srt = moment(second).format(field.valueFormat);\n }\n return `${first_srt},${second_srt}`;\n } else {\n return this.model[name];\n }\n },\n loadLabelOptions(label) {\n if (label?.filters && label.filteredValue) {\n const str = [];\n label.filters.forEach(item => {\n let i = cloneDeep(item.value);\n if (i === 'true') {\n i = true;\n } else if (i === 'false') {\n i = false;\n }\n if (Array.isArray(label.filteredValue)) {\n if (label.filteredValue.includes(i) || label.filteredValue.includes(item.value)) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n } else {\n if (label.filteredValue == i || label.filteredValue == item.value) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n }\n });\n return `\" ${str.toString()} \"`;\n }\n },\n loadLabelSort(label) {\n if (label?.sorter && label.sortOrder) {\n if (label.sortOrder === 'ascend') {\n return '升序';\n } else if (label.sortOrder === 'descend') {\n return '降序';\n }\n }\n },\n add(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduce(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangePre(fields) {\n console.log('reduceRangePre');\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangePre(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n isShow(name) {\n let is = false;\n if (this.form?.sideSearch && this.form?.sideSearch.length > 0) {\n this.form?.sideSearch.forEach(item => {\n if (item.name == name) {\n is = true;\n }\n });\n }\n return is;\n },\n handleShowGeneralFilter() {\n this.$emit('showGeneralFilter', { is_show: true });\n },\n },\n created() {\n if (this.form.watch) {\n for (const k in this.form.watch) {\n watch(\n () => this.model[k],\n () => {\n this.form.watch[k](this.model, this.form);\n },\n );\n }\n }\n },\n};\n</script>\n<style scoped lang=\"less\">\n:deep(.ant-select-selection-placeholder) {\n overflow: hidden;\n width: 100%;\n}\n</style>\n"],"mappings":";;;;;;;;0DCsPK,IAAU;CACb,MAAM;CACN,YAAY;EAAE,cAAA;EAAc;EAAc;EAAe;CAAc;CACvE,OAAO;EAAC;EAAU;EAAU;EAAa;CAAmB;CAC5D,OAAO;EACL,OAAO;GACL,MAAM;GACN,UAAU;EACZ;EACA,MAAM;GACJ,MAAM;GACN,UAAU;EACZ;EACA,SAAS;GACP,MAAM;GACN,UAAU;EACZ;EACA,eAAe;GACb,MAAM;GACN,eAAe,CAAC;EAClB;EACA,aAAa;GACX,MAAM;GACN,eAAe,CAAC;EAClB;EACA,YAAY;GACV,MAAM;GACN,eAAe;EACjB;EACA,YAAY;GACV,MAAM;GACN,eAAe;EACjB;EACA,WAAW;GACT,MAAM;GACN,eAAe;EACjB;EACA,iBAAiB;GACf,MAAM;GACN,eAAe;EACjB;EACA,gBAAgB;GACd,MAAM;GACN,eAAe;EACjB;EACA,iBAAiB;GACf,MAAM;GACN,eAAe,CAAC;EAClB;EACA,qBAAqB;GACnB,MAAM;GACN,eAAe;EACjB;EACA,mBAAmB;GACjB,MAAM;GACN,eAAe;EACjB;EACA,WAAW;GACT,MAAM;GACN,eAAe;EACjB;CACF;CACA,OAAO;EACL,OAAO;GACL,WAAW,EACT,MAAM,GACR;GACA,UAAU,EACR,MAAM,KAAK,gBACb;GACA,YAAY,CAAC;EACf;CACF;CACA,SAAS;EACP,UAAU,GAAK;GACb,KAAK,MAAM,aAAa,CAAG;EAC7B;EACA,SAAS;GACP,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,WACnB;IAEJ,AADA,KAAK,MAAM,QAAQ,GACnB,KAAK,SAAS,OAAO,KAAK;GAC5B,SACM,CAEN,CACF;EACF;EACA,WAAW;GACT,OAAO,KAAK,MAAM,KAAK,SAAS;EAClC;EACA,QAAQ;GACN,KAAK,MAAM,KAAK,YAAY;EAC9B;EACA,QAAQ,GAAM;GACZ,KAAK,KAAK,OAAO,EAAK,CAAC,WAAW;EACpC;EACA,aAAa;GACX,KAAK,KAAK,OAAO,SAAQ,MAAQ;IAC/B,EAAK,WAAW;GAClB,CAAC;EACH;EACA,aAAa,GAAO;GAClB,IAAI,IAAK;GAMT,OALA,KAAK,gBAAgB,SAAQ,MAAQ;IACnC,AAAI,EAAM,QAAQ,EAAK,OAAO,EAAK,oBACjC,IAAK;GAET,CAAC,GACM;EACT;EACA,UAAU,GAAO,GAAM;GACrB,IAAM,IAAU,KAAK,QAAQ,EAAM,aAAa,EAAM,aAAa,EAAM;GACzE,IAAI,KAAK,WAAW,MAAS,MAC3B,OAAO,KAAK,WAAW;GAClB,IAAI,GACT,IACE,OAAO,KAAK,MAAM,MAAS,YAC3B,KAAK,MAAM,MAAS,QACpB,KAAK,MAAM,EAAK,CAAC,UAAU,GAC3B;IACA,IAAM,IAAc,EACjB,QAAO,MAAQ,KAAK,MAAM,EAAK,CAAC,SAAS,EAAK,KAAK,CAAC,CAAA,CACpD,KAAI,MAAQ,EAAK,IAAI;IAKxB,OAJI,EAAY,SAAS,IAChB,IAGF;GACT,OAAO;IACL,IAAM,IAAa,EAAQ,MAAK,MAAQ,EAAK,SAAS,KAAK,MAAM,EAAK;IAItE,OAHI,IACK,EAAW,OAEb;GACT;QACK,IAAI,EAAM,SAAS,iBAAiB,KAAK,MAAM,cAAiB,OAAO;IAC5E,IAAM,CAAC,GAAO,KAAU,KAAK,MAAM,IAC/B,GAAW;IAsBf,OArBI,GAAO,WAAW,WACpB,IAAY,EAAO,CAAK,CAAC,CAAC,OAAO,SAAS,GAC1C,IAAa,EAAO,CAAM,CAAC,CAAC,OAAO,SAAS,KACnC,GAAO,WAAW,UAC3B,IAAY,EAAO,CAAK,CAAC,CAAC,OAAO,MAAM,GACvC,IAAa,EAAO,CAAM,CAAC,CAAC,OAAO,MAAM,KAChC,GAAO,WAAW,UAC3B,IAAY,EAAO,GAAO,EAAM,WAAW,CAAC,CAAC,OAAO,EAAM,WAAW,GACrE,IAAa,EAAO,GAAQ,EAAM,WAAW,CAAC,CAAC,OAAO,EAAM,WAAW,KAC9D,CAAC,GAAO,UAAU,GAAO,WAAW,SACzC,EAAM,aACR,IAAY,EAAO,CAAK,CAAC,CAAC,OAAO,qBAAqB,GACtD,IAAa,EAAO,CAAM,CAAC,CAAC,OAAO,qBAAqB,MAExD,IAAY,EAAO,CAAK,CAAC,CAAC,OAAO,YAAY,GAC7C,IAAa,EAAO,CAAM,CAAC,CAAC,OAAO,YAAY,KAExC,EAAM,gBACf,IAAY,EAAO,CAAK,CAAC,CAAC,OAAO,EAAM,WAAW,GAClD,IAAa,EAAO,CAAM,CAAC,CAAC,OAAO,EAAM,WAAW,IAE/C,GAAG,EAAU,GAAG;GACzB,OACE,OAAO,KAAK,MAAM;EAEtB;EACA,iBAAiB,GAAO;GACtB,IAAI,GAAO,WAAW,EAAM,eAAe;IACzC,IAAM,IAAM,CAAC;IAkBb,OAjBA,EAAM,QAAQ,SAAQ,MAAQ;KAC5B,IAAI,KAAA,GAAA,EAAA,UAAA,CAAc,EAAK,KAAK;KAM5B,AALI,MAAM,SACR,IAAI,KACK,MAAM,YACf,IAAI,KAEF,MAAM,QAAQ,EAAM,aAAa,KAC/B,EAAM,cAAc,SAAS,CAAC,KAAK,EAAM,cAAc,SAAS,EAAK,KAAK,MAC5E,EAAI,KAAK,EAAK,OAAO,EAAK,OAAO,EAAK,QAAQ,EAAK,QAAQ,EAAE,KAG3D,EAAM,iBAAiB,KAAK,EAAM,iBAAiB,EAAK,UAC1D,EAAI,KAAK,EAAK,OAAO,EAAK,OAAO,EAAK,QAAQ,EAAK,QAAQ,EAAE;IAGnE,CAAC,GACM,KAAK,EAAI,SAAS,EAAC;GAC5B;EACF;EACA,cAAc,GAAO;GACnB,IAAI,GAAO,UAAU,EAAM,WACzB;QAAI,EAAM,cAAc,UACtB,OAAO;IACF,IAAI,EAAM,cAAc,WAC7B,OAAO;GACT;EAEJ;EACA,IAAI,GAAQ;GACV,AAAI,KAAK,MAAM,EAAO,UAChB,CAAC,EAAO,UAAU,EAAO,WAAW,UACtC,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,IAAI,KAAK,MAAM,CAAA,CACf,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,IAAI,KAAK,QAAQ,CAAA,CACjB,OAAO,EAAO,cAAc,EAAO,cAAc,SAAS,GAC7D,KAAK,OAAO,KACH,EAAO,WAAW,UAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,IAAI,KAAK,OAAO,CAAA,CAChB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,aAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,IAAI,KAAK,UAAU,CAAA,CACnB,OAAO,EAAO,cAAc,EAAO,cAAc,EAAE,GACtD,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,IAAI,KAAK,OAAO,CAAA,CAChB,OAAO,EAAO,cAAc,EAAO,cAAc,MAAM,GAC1D,KAAK,OAAO;EAGlB;EACA,OAAO,GAAQ;GACb,AAAI,KAAK,MAAM,EAAO,UAChB,CAAC,EAAO,UAAU,EAAO,WAAW,UACtC,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,SAAS,KAAK,MAAM,CAAA,CACpB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,SAAS,KAAK,QAAQ,CAAA,CACtB,OAAO,EAAO,cAAc,EAAO,cAAc,SAAS,GAC7D,KAAK,OAAO,KACH,EAAO,WAAW,UAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,SAAS,KAAK,OAAO,CAAA,CACrB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,aAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,SAAS,KAAK,UAAU,CAAA,CACxB,OAAO,EAAO,cAAc,EAAO,cAAc,EAAE,GACtD,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,QAAQ,EAAO,KAAK,MAAM,EAAO,KAAK,CAAA,CACrD,SAAS,KAAK,OAAO,CAAA,CACrB,OAAO,EAAO,cAAc,EAAO,cAAc,MAAM,GAC1D,KAAK,OAAO;EAGlB;EACA,eAAe,GAAQ;GAErB,AADA,QAAQ,IAAI,gBAAgB,GACxB,KAAK,MAAM,EAAO,UAChB,CAAC,EAAO,UAAU,EAAO,WAAW,UACtC,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,MAAM,CAAA,CACpB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,QAAQ,CAAA,CACtB,OAAO,EAAO,cAAc,EAAO,cAAc,SAAS,GAC7D,KAAK,OAAO,KACH,EAAO,WAAW,UAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,OAAO,CAAA,CACrB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,aAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,UAAU,CAAA,CACxB,OAAO,EAAO,cAAc,EAAO,cAAc,EAAE,GACtD,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,OAAO,CAAA,CACrB,OAAO,EAAO,cAAc,EAAO,cAAc,MAAM,GAC1D,KAAK,OAAO;EAGlB;EACA,YAAY,GAAQ;GAClB,AAAI,KAAK,MAAM,EAAO,UAChB,CAAC,EAAO,UAAU,EAAO,WAAW,UACtC,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,MAAM,CAAA,CACf,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,QAAQ,CAAA,CACjB,OAAO,EAAO,cAAc,EAAO,cAAc,SAAS,GAC7D,KAAK,OAAO,KACH,EAAO,WAAW,UAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,OAAO,CAAA,CAChB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,aAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,UAAU,CAAA,CACnB,OAAO,EAAO,cAAc,EAAO,cAAc,EAAE,GACtD,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,OAAO,CAAA,CAChB,OAAO,EAAO,cAAc,EAAO,cAAc,MAAM,GAC1D,KAAK,OAAO;EAGlB;EACA,iBAAiB,GAAQ;GACvB,AAAI,KAAK,MAAM,EAAO,UAChB,CAAC,EAAO,UAAU,EAAO,WAAW,UACtC,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,MAAM,CAAA,CACpB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,QAAQ,CAAA,CACtB,OAAO,EAAO,cAAc,EAAO,cAAc,SAAS,GAC7D,KAAK,OAAO,KACH,EAAO,WAAW,UAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,OAAO,CAAA,CACrB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,aAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,UAAU,CAAA,CACxB,OAAO,EAAO,cAAc,EAAO,cAAc,EAAE,GACtD,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,SAAS,KAAK,OAAO,CAAA,CACrB,OAAO,EAAO,cAAc,EAAO,cAAc,MAAM,GAC1D,KAAK,OAAO;EAGlB;EACA,cAAc,GAAQ;GACpB,AAAI,KAAK,MAAM,EAAO,UAChB,CAAC,EAAO,UAAU,EAAO,WAAW,UACtC,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,MAAM,CAAA,CACf,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,QAAQ,CAAA,CACjB,OAAO,EAAO,cAAc,EAAO,cAAc,SAAS,GAC7D,KAAK,OAAO,KACH,EAAO,WAAW,UAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,OAAO,CAAA,CAChB,OAAO,EAAO,cAAc,EAAO,cAAc,YAAY,GAChE,KAAK,OAAO,KACH,EAAO,WAAW,aAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,UAAU,CAAA,CACnB,OAAO,EAAO,cAAc,EAAO,cAAc,EAAE,GACtD,KAAK,OAAO,KACH,EAAO,WAAW,WAC3B,KAAK,MAAM,EAAO,KAAK,CAAC,KAAK,EAAO,KAAK,MAAM,EAAO,KAAK,CAAC,EAAE,CAAA,CAC3D,IAAI,KAAK,OAAO,CAAA,CAChB,OAAO,EAAO,cAAc,EAAO,cAAc,MAAM,GAC1D,KAAK,OAAO;EAGlB;EACA,OAAO,GAAM;GACX,IAAI,IAAK;GAQT,OAPI,KAAK,MAAM,cAAc,KAAK,MAAM,WAAW,SAAS,KAC1D,KAAK,MAAM,WAAW,SAAQ,MAAQ;IACpC,AAAI,EAAK,QAAQ,MACf,IAAK;GAET,CAAC,GAEI;EACT;EACA,0BAA0B;GACxB,KAAK,MAAM,qBAAqB,EAAE,SAAS,GAAK,CAAC;EACnD;CACF;CACA,UAAU;EACR,IAAI,KAAK,KAAK,OACZ,KAAK,IAAM,KAAK,KAAK,KAAK,OACxB,QACQ,KAAK,MAAM,UACX;GACJ,KAAK,KAAK,MAAM,EAAE,CAAC,KAAK,OAAO,KAAK,IAAI;EAC1C,CACF;CAGN;AACF,SA3oBA,KAAA,EAAA,SAAA,KAAA,EAAA,SAAA,KAAA,EAAA;;;aAAA,EAAA,GAAA,MAAA,CACmB,EAAA,sBADnB,EAAA,IAAA,EAAA,KACmB,EAAA,GAAjB,EAyOW,GAAA,EA1Ob,KAAA,EAAA,GAAA;IAEI,EAyIM,OAAA,MAAA;GAxIJ,EAmBU,GAAA,MAAA;IAtBhB,SAAA,QAUmB,CAHH,EAAA,qBAAA,EAAA,GAHR,EAMW,GAAA;KAVnB,KAAA;KAKU,MAAK;KACJ,SAAO,EAAA;;KANlB,SAAA,QASwB,CATxB,EAAA,EASa,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;KATf,GAAA;0BAAA,EAAA,IAAA,EAAA,GAWQ,EAUW,GAAA;KATT,MAAK;KACJ,SAAK,AAAA,EAAA,aAAA;MAAyE,AAApC,EAAA,SAAS,OAAI,IAAuB,EAAA,MAAK,QAAA;;;KAb9F,SAAA,QAoBwB,CApBxB,EAAA,EAoBa,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;KApBf,GAAA;;IAAA,GAAA;;WAuBM,EA+EO,GAAA,MAtGb,EAuB4B,EAAA,KAAK,SAAd,YAAb,EA+EO,QAAA,MAAA,CA9EO,EAAM,QAAI,iBAAA,EAAA,GAAtB,EAuCO,QA/Df,GAAA,CAAA,EAyBU,EAqCQ,GAAA,EAnCN,OAAM,QAAO,GAAA;IA3BzB,SAAA,QAmCuB;KANX,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,UAAK,MAAE,EAAA,eAAe,CAAK;;MAEjB,MAAI,QAAkB,CAAjB,EAAiB,CAAA,CAAA,CAAA;MAlC/C,GAAA;;KAoCY,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,UAAK,MAAE,EAAA,YAAY,CAAK;;MAEd,MAAI,QAAmB,CAAlB,EAAkB,CAAA,CAAA,CAAA;MAzChD,GAAA;;KAAA,EA0CuB,MACX,EAAG,EAAM,KAAK,IAAG,MAAC,EAAG,EAAA,UAAU,GAAO,EAAM,IAAI,CAAA,IAAI,KACpD,CAAA;KAAA,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,UAAK,MAAE,EAAA,iBAAiB,CAAK;;MAEnB,MAAI,QAAkB,CAAjB,EAAiB,CAAA,CAAA,CAAA;MAjD/C,GAAA;;KAmDY,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,UAAK,MAAE,EAAA,cAAc,CAAK;;MAEhB,MAAI,QAAmB,CAAlB,EAAkB,CAAA,CAAA,CAAA;MAxDhD,GAAA;;KA0DY,EAGE,GAAA;MAFA,OAAA;OAAA,QAAA;OAAA,eAAA;MAAA;MACC,UAAK,MAAE,EAAA,UAAS;OAAA,MAAS,EAAM;OAAI,KAAA;MAAA,CAAA;;;IA5DlD,GAAA;kBA0BoB,EAAA,MAAM,EAAM,SAAI,QAAa,EAAA,MAAM,EAAM,SAAI,EAAA,CAAA,CAAA,CAAA,CAAA,KAsCxC,EAAM,QAAI,gBAAA,EAAA,GAA3B,EAyBO,QAzFf,GAAA,CAAA,EAiEU,EAuBQ,GAAA,EArBN,OAAM,QAAO,GAAA;IAnEzB,SAAA,QA2EuB;KANX,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,UAAK,MAAE,EAAA,OAAO,CAAK;;MAET,MAAI,QAAkB,CAAjB,EAAiB,CAAA,CAAA,CAAA;MA1E/C,GAAA;;KAAA,EA2EuB,MACX,EAAG,EAAM,KAAK,IAAG,MAAC,EAAG,EAAA,UAAU,GAAO,EAAM,IAAI,CAAA,IAAI,KACpD,CAAA;KAAA,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,UAAK,MAAE,EAAA,IAAI,CAAK;;MAEN,MAAI,QAAmB,CAAlB,EAAkB,CAAA,CAAA,CAAA;MAlFhD,GAAA;;KAoFY,EAGE,GAAA;MAFA,OAAA;OAAA,QAAA;OAAA,eAAA;MAAA;MACC,UAAK,MAAE,EAAA,UAAS;OAAA,MAAS,EAAM;OAAI,KAAA;MAAA,CAAA;;;IAtFlD,GAAA;kBAkEoB,EAAA,MAAM,EAAM,SAAI,QAAa,EAAA,MAAM,EAAM,SAAI,EAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,GAwBzD,EAWO,QArGf,GAAA,CAAA,EA2FU,EASQ,GAAA,EAPN,OAAM,QAAO,GAAA;IA7FzB,SAAA,QA+F6B,CA/F7B,EAAA,EA+Fe,EAAM,KAAK,IAAG,MAAC,EAAG,EAAA,UAAU,GAAO,EAAM,IAAI,CAAA,IAAI,KACpD,CAAA,GAAA,EAGE,GAAA;KAFA,OAAA;MAAA,QAAA;MAAA,eAAA;KAAA;KACC,UAAK,MAAE,EAAA,UAAS;MAAA,MAAS,EAAM;MAAI,KAAA;KAAA,CAAA;;IAlGlD,GAAA;kBA4FoB,EAAA,MAAM,EAAM,SAAI,QAAa,EAAA,MAAM,EAAM,SAAI,MAAW,EAAA,aAAa,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;GAWxE,EAAA,gBAAgB,SAAM,KAAA,EAAA,GAAtC,EAmCW,GAAA,EA1IjB,KAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAwGQ,EAkBW,GAAA,MA1HnB,EAyGmC,EAAA,kBAAjB,GAAO,cAGf,EAaQ,GAAA;IAzHlB,KA0GgB;IAQJ,OAAM;;IAlHlB,SAAA,QAoH6B,CApH7B,EAAA,EAoHe,EAAM,KAAK,IAAG,SAAI,EAAG,EAAA,iBAAiB,CAAK,CAAA,IAAI,KAClD,CAAA,GAAA,EAGE,GAAA;KAFA,OAAA;MAAA,QAAA;MAAA,eAAA;KAAA;KACC,UAAK,MAAE,EAAA,UAAS;MAAG;MAAK,KAAA;KAAA,CAAA;;IAvHvC,GAAA;mBA6GmC,EAAM,UAA0B,EAAM,iBAAiB,KAAK,UAAU,EAAM,aAAa,MAAA,OAAA,EAAA,CAAA,CAAA,mBAcpH,EAcW,GAAA,MAzInB,EA4HmC,EAAA,kBAAjB,GAAO,cAGf,EASQ,GAAA;IAxIlB,KA6HgB;IAIJ,OAAM;;IAjIlB,SAAA,QAmI6B,CAnI7B,EAAA,EAmIe,EAAM,KAAK,IAAG,OAAE,EAAG,EAAA,cAAc,CAAK,CAAA,IAAI,KAC7C,CAAA,GAAA,EAGE,GAAA;KAFA,OAAA;MAAA,QAAA;MAAA,eAAA;KAAA;KACC,UAAK,MAAE,EAAA,UAAS;MAAG;MAAK,KAAA;KAAA,CAAA;;IAtIvC,GAAA;mBAgIoB,EAAM,UAAU,EAAM,SAAS,CAAA,CAAA,mBAhInD,EAAA,IAAA,EAAA;iBAEkB,EAAA,SAAS,IAAI,CAAA,CAAA;EA2InB,EAAA,aAAa,EAAA,SAAS,OAAA,GAAA,EAAA,GAD9B,EAoFS,GAAA;GAhOb,KAAA;GA+IM,KAAI;GACJ,cAAa;GACZ,OAAO,EAAA;GACP,OAAO,EAAA,KAAK;GACZ,QAAQ,EAAA,KAAK,SAAS;GACtB,aAAW,EAAA,KAAK,SAAS;GACzB,eAAa,EAAA,KAAK,SAAS;GAC3B,YAAY,EAAA,KAAK,SAAS;GAC3B,oBAAA;;GAvJN,SAAA,QA8KoB;IArBK,EAAA,cAAA,EAAA,GAAnB,EAqBc,GAAA,EA9KpB,KAAA,EAAA,GAAA;KAAA,SAAA,QA6KkB,CAnBV,EAmBU,GAAA,MAAA;MA7KlB,SAAA,QAiKqB,CAHH,EAAA,qBAAA,EAAA,GAHR,EAMW,GAAA;OAjKrB,KAAA;OA4JY,MAAK;OACJ,SAAO,EAAA;;OA7JpB,SAAA,QAgK0B,CAhK1B,EAAA,EAgKe,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;OAhKjB,GAAA;4BAAA,EAAA,IAAA,EAAA,GAkKU,EAUW,GAAA;OATT,MAAK;OACJ,SAAK,AAAA,EAAA,aAAA;QAAgF,AAAvC,EAAA,SAAS,OAAI,IAA0B,EAAA,MAAK,QAAA;;;OApKvG,SAAA,QA2K0B,CA3K1B,EAAA,EA2Ke,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;OA3KjB,GAAA;;MAAA,GAAA;;KAAA,GAAA;UAAA,EAAA,IAAA,EAAA;YA+KM,EAsBW,GAAA,MArMjB,EAgLwB,EAAA,KAAK,SAAd,YAhLf,EAAA,GAAA,EAAA,KAiLc,EAAM,KAAA,GAAA,CAGJ,EAAM,QAAI,iBAAA,EAAA,GADlB,EAQE,GAAA;KA3LV,KAAA;KAqLkB,OAAO,EAAA,WAAW,EAAM;KArL1C,mBAAA,MAAA,EAqLyB,WAAW,EAAM,QAAI;KAC5B,OAAO,EAAA,MAAM,EAAM;KAtLrC,mBAAA,MAAA,EAsLyB,MAAM,EAAM,QAAI;KAC9B,OAAK;MAAA,GAAO;MAAK,QAAU,EAAM;KAAU;KAC3C,WAAW,EAAA;KACX,SAAS,EAAA,QAAQ,EAAM,aAAa,EAAM,aAAa,EAAM;KAC7D,eAAe,EAAA;;;;;;;;;;gBAElB,EAQE,GAAA;KApMV,KAAA;KA8LkB,OAAO,EAAA,WAAW,EAAM;KA9L1C,mBAAA,MAAA,EA8LyB,WAAW,EAAM,QAAI;KAC5B,OAAO,EAAA,MAAM,EAAM;KA/LrC,mBAAA,MAAA,EA+LyB,MAAM,EAAM,QAAI;KACvB;KACP,WAAW,EAAA;KACX,SAAS,EAAA,QAAQ,EAAM,aAAa,EAAM,aAAa,EAAM;KAC7D,eAAe,EAAA;;;;;;;;;;;IAGD,EAAA,cAAA,EAAA,GAAnB,EAQc,GAAA,EA9MpB,KAAA,EAAA,GAAA;KAAA,SAAA,QA6MmB,CANX,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,SAAO,EAAA;;MA1MlB,SAAA,QA4MwB,CA5MxB,EAAA,EA4Ma,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;MA5Mf,GAAA;;KAAA,GAAA;UAAA,EAAA,IAAA,EAAA;IA+MyB,EAAA,aAAA,EAAA,GAAnB,EAOc,GAAA,EAtNpB,KAAA,EAAA,GAAA;KAAA,SAAA,QAqNmB,CALX,EAKW,GAAA;MAJT,MAAK;MACJ,SAAO,EAAA;;MAlNlB,SAAA,QAoNwB,CApNxB,EAAA,EAoNa,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;MApNf,GAAA;;KAAA,GAAA;UAAA,EAAA,IAAA,EAAA;IAuNyB,EAAA,cAAA,EAAA,GAAnB,EAQc,GAAA,EA/NpB,KAAA,EAAA,GAAA;KAAA,SAAA,QA8NmB,CANX,EAMW,GAAA;MALT,MAAK;MACL,MAAK;MACJ,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,UAAU,OAAI;;MA3NhC,SAAA,QA6NwB,CA7NxB,EAAA,EA6Na,EAAA,GAAE,IAAA,CAAA,GAAA,CAAA,CAAA,CAAA;MA7Nf,GAAA;;KAAA,GAAA;UAAA,EAAA,IAAA,EAAA;;GAAA,GAAA;;;;;;;;YA8Ic,EAAA,SAAS,IAAI,CAAA,CAAA,IA9I3B,EAAA,IAAA,EAAA;EAkOY,EAAA,UAAU,QAAA,EAAA,GADlB,EAQE,GAAA;GAzON,KAAA;GAmOO,MAAM,EAAA,UAAU;GAChB,UAAM,AAAA,EAAA,aAAA;IAA6B,EAAA,UAAU,OAAI;;2BApOxD,EAAA,IAAA,EAAA;UA2OkB,EAAA,sBACd,EAAkC,EAAA,QAAA,iBAAA,EA5OtC,KAAA,EAAA,GAAA,KAAA,GAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,GAAA,EAAA"}
1
+ {"version":3,"file":"SearchRender-DONZ9JQn.js","names":[],"sources":["../src/components/FormRender/SearchRender.vue","../src/components/FormRender/SearchRender.vue"],"sourcesContent":["<template>\n <template v-if=\"!isShowGeneralFilter\">\n <div v-show=\"!formShow.open\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = true;\n $emit('resize');\n }\n \"\n >\n {{ $t('展开') }}\n </a-button>\n </a-space>\n <span v-for=\"field in form.fields\">\n <span v-if=\"field.type == 'rangepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangePre(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangePre(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangeAfter(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangeAfter(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else-if=\"field.type == 'datepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduce(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"add(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else>\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != '' && isShowFilter(field)\"\n color=\"green\"\n >\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n </span>\n <template v-if=\"searchLabelList.length > 0\">\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"\n label.filters\n ? label.filteredValue && JSON.stringify(label.filteredValue) !== '[]'\n : false\n \"\n color=\"green\"\n >\n {{ label.label }} 包含:{{ loadLabelOptions(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'filters' })\"\n />\n </a-tag>\n </template>\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"label.sorter && label.sortOrder\"\n color=\"blue\"\n >\n {{ label.label }}: {{ loadLabelSort(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'sorter' })\"\n />\n </a-tag>\n </template>\n </template>\n </div>\n <a-form\n v-if=\"delayShow || formShow.open\"\n v-show=\"formShow.open\"\n ref=\"form\"\n autocomplete=\"off\"\n :model=\"model\"\n :rules=\"form.rules\"\n :layout=\"form.settings.layout\"\n :label-col=\"form.settings.labelCol\"\n :wrapper-col=\"form.settings.wrapperCol\"\n :labelAlign=\"form.settings.labelAlign\"\n scrollToFirstError\n >\n <a-form-item v-if=\"showSearch\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = false;\n $emit('resize');\n }\n \"\n >\n {{ $t('隐藏') }}\n </a-button>\n </a-space>\n </a-form-item>\n <template\n v-for=\"field in form.fields\"\n :key=\"field.name\"\n >\n <field-render-2\n v-if=\"field.type == 'rangepicker'\"\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"{ ...field, format: field.dateFormat }\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n <field-render-2\n v-else\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"field\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n </template>\n <a-form-item v-if=\"showSearch\">\n <a-button\n size=\"small\"\n type=\"primary\"\n @click=\"search\"\n >\n {{ $t('查询') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReset\">\n <a-button\n size=\"small\"\n @click=\"resetFields\"\n >\n {{ $t('重置') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReport\">\n <a-button\n size=\"small\"\n type=\"info\"\n @click=\"editModal.open = true\"\n >\n {{ $t('订阅') }}\n </a-button>\n </a-form-item>\n </a-form>\n <a-modal\n v-if=\"editModal.open\"\n :open=\"editModal.open\"\n @cancel=\"\n () => {\n editModal.open = false;\n }\n \"\n />\n </template>\n <template v-if=\"isShowGeneralFilter\">\n <slot name=\"generalFilter\"></slot>\n </template>\n</template>\n<script language=\"ts\">\nimport { watch } from 'vue';\nimport { CloseOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons-vue';\nimport moment from 'moment';\nimport FieldRender2 from 'liyu-pc-base/components/FormRender/FieldRender2.vue';\nimport { cloneDeep } from 'lodash';\n\nexport default {\n name: 'SearchRender',\n components: { FieldRender2, LeftOutlined, RightOutlined, CloseOutlined },\n emits: ['search', 'resize', 'delSearch', 'showGeneralFilter'],\n props: {\n model: {\n type: Object,\n required: true,\n },\n form: {\n type: Object,\n required: true,\n },\n options: {\n type: Object,\n required: true,\n },\n validateInfos: {\n type: Object,\n default: () => {},\n },\n resetFields: {\n type: Function,\n default: () => {},\n },\n showReport: {\n type: Boolean,\n default: () => false,\n },\n showSearch: {\n type: Boolean,\n default: () => true,\n },\n showReset: {\n type: Boolean,\n default: () => true,\n },\n defaultShowEdit: {\n type: Boolean,\n default: () => false,\n },\n search_visible: {\n type: Boolean,\n default: () => false,\n },\n searchLabelList: {\n type: Array,\n default: () => [],\n },\n isShowGeneralFilter: {\n type: Boolean,\n default: () => false,\n },\n is_show_advantage: {\n type: Boolean,\n default: () => false,\n },\n delayShow: {\n type: Boolean,\n default: () => true,\n },\n },\n data() {\n return {\n editModal: {\n open: false,\n },\n formShow: {\n open: this.defaultShowEdit,\n },\n labelModel: {},\n };\n },\n methods: {\n delSearch(obj) {\n this.$emit('delSearch', obj);\n },\n search() {\n this.$refs.form.validate().then(\n () => {\n this.$emit('search');\n this.formShow.open = this.search_visible;\n },\n () => {\n // this.$emit('search');\n },\n );\n },\n validate() {\n return this.$refs.form.validate();\n },\n reset() {\n this.$refs.form.resetFields();\n },\n disable(name) {\n this.form.fields[name].disabled = true;\n },\n disableAll() {\n this.form.fields.forEach(item => {\n item.disabled = true;\n });\n },\n isShowFilter(field) {\n let is = true;\n this.searchLabelList.forEach(item => {\n if (field.name == item.key && item.is_filter_model) {\n is = false;\n }\n });\n return is;\n },\n showLabel(field, name) {\n const options = this.options[field.datasource ? field.datasource : field.name];\n if (this.labelModel[name] != undefined) {\n return this.labelModel[name];\n } else if (options) {\n if (\n typeof this.model[name] == 'object' &&\n this.model[name] != undefined &&\n this.model[name].length >= 0\n ) {\n const selectItems = options\n .filter(item => this.model[name].includes(item.value))\n .map(item => item.name);\n if (selectItems.length > 0) {\n return selectItems;\n }\n\n return '';\n } else {\n const selectItem = options.find(item => item.value == this.model[name]);\n if (selectItem) {\n return selectItem.name;\n }\n return '';\n }\n } else if (field.type === 'rangepicker' && this.model[name] instanceof Array) {\n const [first, second] = this.model[name];\n let first_srt, second_srt;\n if (field?.picker === 'month') {\n first_srt = moment(first).format('YYYY-MM');\n second_srt = moment(second).format('YYYY-MM');\n } else if (field?.picker === 'year') {\n first_srt = moment(first).format('YYYY');\n second_srt = moment(second).format('YYYY');\n } else if (field?.picker === 'time') {\n first_srt = moment(first, field.valueFormat).format(field.valueFormat);\n second_srt = moment(second, field.valueFormat).format(field.valueFormat);\n } else if (!field?.picker || field?.picker === 'date') {\n if (field.show_time) {\n first_srt = moment(first).format('YYYY-MM-DD HH:mm:ss');\n second_srt = moment(second).format('YYYY-MM-DD HH:mm:ss');\n } else {\n first_srt = moment(first).format('YYYY-MM-DD');\n second_srt = moment(second).format('YYYY-MM-DD');\n }\n } else if (field.valueFormat) {\n first_srt = moment(first).format(field.valueFormat);\n second_srt = moment(second).format(field.valueFormat);\n }\n return `${first_srt},${second_srt}`;\n } else {\n return this.model[name];\n }\n },\n loadLabelOptions(label) {\n if (label?.filters && label.filteredValue) {\n const str = [];\n label.filters.forEach(item => {\n let i = cloneDeep(item.value);\n if (i === 'true') {\n i = true;\n } else if (i === 'false') {\n i = false;\n }\n if (Array.isArray(label.filteredValue)) {\n if (label.filteredValue.includes(i) || label.filteredValue.includes(item.value)) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n } else {\n if (label.filteredValue == i || label.filteredValue == item.value) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n }\n });\n return `\" ${str.toString()} \"`;\n }\n },\n loadLabelSort(label) {\n if (label?.sorter && label.sortOrder) {\n if (label.sortOrder === 'ascend') {\n return '升序';\n } else if (label.sortOrder === 'descend') {\n return '降序';\n }\n }\n },\n add(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduce(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangePre(fields) {\n console.log('reduceRangePre');\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangePre(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n isShow(name) {\n let is = false;\n if (this.form?.sideSearch && this.form?.sideSearch.length > 0) {\n this.form?.sideSearch.forEach(item => {\n if (item.name == name) {\n is = true;\n }\n });\n }\n return is;\n },\n handleShowGeneralFilter() {\n this.$emit('showGeneralFilter', { is_show: true });\n },\n },\n created() {\n if (this.form.watch) {\n for (const k in this.form.watch) {\n watch(\n () => this.model[k],\n () => {\n this.form.watch[k](this.model, this.form);\n },\n );\n }\n }\n },\n};\n</script>\n<style scoped lang=\"less\">\n:deep(.ant-select-selection-placeholder) {\n overflow: hidden;\n width: 100%;\n}\n</style>\n","<template>\n <template v-if=\"!isShowGeneralFilter\">\n <div v-show=\"!formShow.open\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = true;\n $emit('resize');\n }\n \"\n >\n {{ $t('展开') }}\n </a-button>\n </a-space>\n <span v-for=\"field in form.fields\">\n <span v-if=\"field.type == 'rangepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangePre(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangePre(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduceRangeAfter(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"addRangeAfter(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else-if=\"field.type == 'datepicker'\">\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != ''\"\n color=\"green\"\n >\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"reduce(field)\"\n >\n <template #icon><left-outlined /></template>\n </a-button>\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <a-button\n size=\"small\"\n type=\"text\"\n @click=\"add(field)\"\n >\n <template #icon><right-outlined /></template>\n </a-button>\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n <span v-else>\n <a-tag\n v-show=\"model[field.name] != null && model[field.name] != '' && isShowFilter(field)\"\n color=\"green\"\n >\n {{ field.label }}:{{ showLabel(field, field.name) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ name: field.name, key: 'model' })\"\n />\n </a-tag>\n </span>\n </span>\n <template v-if=\"searchLabelList.length > 0\">\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"\n label.filters\n ? label.filteredValue && JSON.stringify(label.filteredValue) !== '[]'\n : false\n \"\n color=\"green\"\n >\n {{ label.label }} 包含:{{ loadLabelOptions(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'filters' })\"\n />\n </a-tag>\n </template>\n <template\n v-for=\"(label, index) in searchLabelList\"\n :key=\"index\"\n >\n <a-tag\n v-show=\"label.sorter && label.sortOrder\"\n color=\"blue\"\n >\n {{ label.label }}: {{ loadLabelSort(label) }}\n <close-outlined\n style=\"cursor: pointer; margin-left: 5px\"\n @click=\"delSearch({ label, key: 'sorter' })\"\n />\n </a-tag>\n </template>\n </template>\n </div>\n <a-form\n v-if=\"delayShow || formShow.open\"\n v-show=\"formShow.open\"\n ref=\"form\"\n autocomplete=\"off\"\n :model=\"model\"\n :rules=\"form.rules\"\n :layout=\"form.settings.layout\"\n :label-col=\"form.settings.labelCol\"\n :wrapper-col=\"form.settings.wrapperCol\"\n :labelAlign=\"form.settings.labelAlign\"\n scrollToFirstError\n >\n <a-form-item v-if=\"showSearch\">\n <a-space>\n <a-button\n type=\"link\"\n @click=\"handleShowGeneralFilter\"\n v-if=\"is_show_advantage\"\n >\n {{ $t('高级') }}\n </a-button>\n <a-button\n type=\"link\"\n @click=\"\n () => {\n formShow.open = false;\n $emit('resize');\n }\n \"\n >\n {{ $t('隐藏') }}\n </a-button>\n </a-space>\n </a-form-item>\n <template\n v-for=\"field in form.fields\"\n :key=\"field.name\"\n >\n <field-render-2\n v-if=\"field.type == 'rangepicker'\"\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"{ ...field, format: field.dateFormat }\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n <field-render-2\n v-else\n v-model:label=\"labelModel[field.name]\"\n v-model:value=\"model[field.name]\"\n :field=\"field\"\n :formModel=\"model\"\n :options=\"options[field.datasource ? field.datasource : field.name]\"\n :validateInfos=\"validateInfos\"\n />\n </template>\n <a-form-item v-if=\"showSearch\">\n <a-button\n size=\"small\"\n type=\"primary\"\n @click=\"search\"\n >\n {{ $t('查询') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReset\">\n <a-button\n size=\"small\"\n @click=\"resetFields\"\n >\n {{ $t('重置') }}\n </a-button>\n </a-form-item>\n <a-form-item v-if=\"showReport\">\n <a-button\n size=\"small\"\n type=\"info\"\n @click=\"editModal.open = true\"\n >\n {{ $t('订阅') }}\n </a-button>\n </a-form-item>\n </a-form>\n <a-modal\n v-if=\"editModal.open\"\n :open=\"editModal.open\"\n @cancel=\"\n () => {\n editModal.open = false;\n }\n \"\n />\n </template>\n <template v-if=\"isShowGeneralFilter\">\n <slot name=\"generalFilter\"></slot>\n </template>\n</template>\n<script language=\"ts\">\nimport { watch } from 'vue';\nimport { CloseOutlined, LeftOutlined, RightOutlined } from '@ant-design/icons-vue';\nimport moment from 'moment';\nimport FieldRender2 from 'liyu-pc-base/components/FormRender/FieldRender2.vue';\nimport { cloneDeep } from 'lodash';\n\nexport default {\n name: 'SearchRender',\n components: { FieldRender2, LeftOutlined, RightOutlined, CloseOutlined },\n emits: ['search', 'resize', 'delSearch', 'showGeneralFilter'],\n props: {\n model: {\n type: Object,\n required: true,\n },\n form: {\n type: Object,\n required: true,\n },\n options: {\n type: Object,\n required: true,\n },\n validateInfos: {\n type: Object,\n default: () => {},\n },\n resetFields: {\n type: Function,\n default: () => {},\n },\n showReport: {\n type: Boolean,\n default: () => false,\n },\n showSearch: {\n type: Boolean,\n default: () => true,\n },\n showReset: {\n type: Boolean,\n default: () => true,\n },\n defaultShowEdit: {\n type: Boolean,\n default: () => false,\n },\n search_visible: {\n type: Boolean,\n default: () => false,\n },\n searchLabelList: {\n type: Array,\n default: () => [],\n },\n isShowGeneralFilter: {\n type: Boolean,\n default: () => false,\n },\n is_show_advantage: {\n type: Boolean,\n default: () => false,\n },\n delayShow: {\n type: Boolean,\n default: () => true,\n },\n },\n data() {\n return {\n editModal: {\n open: false,\n },\n formShow: {\n open: this.defaultShowEdit,\n },\n labelModel: {},\n };\n },\n methods: {\n delSearch(obj) {\n this.$emit('delSearch', obj);\n },\n search() {\n this.$refs.form.validate().then(\n () => {\n this.$emit('search');\n this.formShow.open = this.search_visible;\n },\n () => {\n // this.$emit('search');\n },\n );\n },\n validate() {\n return this.$refs.form.validate();\n },\n reset() {\n this.$refs.form.resetFields();\n },\n disable(name) {\n this.form.fields[name].disabled = true;\n },\n disableAll() {\n this.form.fields.forEach(item => {\n item.disabled = true;\n });\n },\n isShowFilter(field) {\n let is = true;\n this.searchLabelList.forEach(item => {\n if (field.name == item.key && item.is_filter_model) {\n is = false;\n }\n });\n return is;\n },\n showLabel(field, name) {\n const options = this.options[field.datasource ? field.datasource : field.name];\n if (this.labelModel[name] != undefined) {\n return this.labelModel[name];\n } else if (options) {\n if (\n typeof this.model[name] == 'object' &&\n this.model[name] != undefined &&\n this.model[name].length >= 0\n ) {\n const selectItems = options\n .filter(item => this.model[name].includes(item.value))\n .map(item => item.name);\n if (selectItems.length > 0) {\n return selectItems;\n }\n\n return '';\n } else {\n const selectItem = options.find(item => item.value == this.model[name]);\n if (selectItem) {\n return selectItem.name;\n }\n return '';\n }\n } else if (field.type === 'rangepicker' && this.model[name] instanceof Array) {\n const [first, second] = this.model[name];\n let first_srt, second_srt;\n if (field?.picker === 'month') {\n first_srt = moment(first).format('YYYY-MM');\n second_srt = moment(second).format('YYYY-MM');\n } else if (field?.picker === 'year') {\n first_srt = moment(first).format('YYYY');\n second_srt = moment(second).format('YYYY');\n } else if (field?.picker === 'time') {\n first_srt = moment(first, field.valueFormat).format(field.valueFormat);\n second_srt = moment(second, field.valueFormat).format(field.valueFormat);\n } else if (!field?.picker || field?.picker === 'date') {\n if (field.show_time) {\n first_srt = moment(first).format('YYYY-MM-DD HH:mm:ss');\n second_srt = moment(second).format('YYYY-MM-DD HH:mm:ss');\n } else {\n first_srt = moment(first).format('YYYY-MM-DD');\n second_srt = moment(second).format('YYYY-MM-DD');\n }\n } else if (field.valueFormat) {\n first_srt = moment(first).format(field.valueFormat);\n second_srt = moment(second).format(field.valueFormat);\n }\n return `${first_srt},${second_srt}`;\n } else {\n return this.model[name];\n }\n },\n loadLabelOptions(label) {\n if (label?.filters && label.filteredValue) {\n const str = [];\n label.filters.forEach(item => {\n let i = cloneDeep(item.value);\n if (i === 'true') {\n i = true;\n } else if (i === 'false') {\n i = false;\n }\n if (Array.isArray(label.filteredValue)) {\n if (label.filteredValue.includes(i) || label.filteredValue.includes(item.value)) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n } else {\n if (label.filteredValue == i || label.filteredValue == item.value) {\n str.push(item.text ? item.text : item.label ? item.label : '');\n }\n }\n });\n return `\" ${str.toString()} \"`;\n }\n },\n loadLabelSort(label) {\n if (label?.sorter && label.sortOrder) {\n if (label.sortOrder === 'ascend') {\n return '升序';\n } else if (label.sortOrder === 'descend') {\n return '降序';\n }\n }\n },\n add(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduce(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name] = moment(this.model[fields.name])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangePre(fields) {\n console.log('reduceRangePre');\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangePre(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][0] = moment(this.model[fields.name][0])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n reduceRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .subtract('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n addRangeAfter(fields) {\n if (this.model[fields.name]) {\n if (!fields.picker || fields.picker === 'date') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'days')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM-DD');\n this.search();\n } else if (fields.picker === 'month') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'months')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY-MM');\n this.search();\n } else if (fields.picker === 'week') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'weeks')\n .format(fields.valueFormat ? fields.valueFormat : 'GGGG-WW[周]');\n this.search();\n } else if (fields.picker === 'quarter') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'quarters')\n .format(fields.valueFormat ? fields.valueFormat : '');\n this.search();\n } else if (fields.picker === 'year') {\n this.model[fields.name][1] = moment(this.model[fields.name][1])\n .add('1', 'years')\n .format(fields.valueFormat ? fields.valueFormat : 'YYYY');\n this.search();\n }\n }\n },\n isShow(name) {\n let is = false;\n if (this.form?.sideSearch && this.form?.sideSearch.length > 0) {\n this.form?.sideSearch.forEach(item => {\n if (item.name == name) {\n is = true;\n }\n });\n }\n return is;\n },\n handleShowGeneralFilter() {\n this.$emit('showGeneralFilter', { is_show: true });\n },\n },\n created() {\n if (this.form.watch) {\n for (const k in this.form.watch) {\n watch(\n () => this.model[k],\n () => {\n this.form.watch[k](this.model, this.form);\n },\n );\n }\n }\n },\n};\n</script>\n<style scoped lang=\"less\">\n:deep(.ant-select-selection-placeholder) {\n overflow: hidden;\n width: 100%;\n}\n</style>\n"],"mappings":"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"}