src/components/chat/chatComponents/summaryCom/components/recordSet/components/TimeRange.vue
@@ -15,7 +15,7 @@ :value-format="valueFormat" :format="DEFAULT_FORMATS_DATE" :disabled-date="disabledDate" :clearable="false" :clearable="true" :disabled="disabled" @change="datePickerChange" > @@ -54,21 +54,19 @@ <script setup lang="ts"> import { ElDatePicker } from 'element-plus'; import { definePropType } from 'element-plus/es/utils/vue/props/runtime'; import { ref, type PropType, computed, watch, nextTick } from 'vue'; import moment from 'moment'; import { computed, nextTick, onMounted, ref, type PropType } from 'vue'; import type { TimeRangeParam } from '../types'; import { TimeRangeEnum, TimeStepValue, monthTimeRangeEnumMapTitle } from './types'; import { dayTimeRangeEnumMapTitle, timeRangeEnumMapValue } from './types'; import type { TimeRangeEnum } from './types'; import { TimeStepValue, dayTimeRangeEnumMapTitle, monthTimeRangeEnumMapTitle, timeRangeEnumMapValue } from './types'; import { CURRENT_DAY, DEFAULT_FORMATS_DATE, DEFAULT_FORMATS_TIME, END_PLACEHOLDER, RANGE_SEPARATOR, START_PLACEHOLDER, } from '/@/components/form/datepicker/constants'; import { formatDate } from '/@/utils/formatTime'; import moment from 'moment'; import { isSharePage } from '/@/stores/chatRoom'; const valueFormat = DEFAULT_FORMATS_DATE + ' ' + DEFAULT_FORMATS_TIME; const props = defineProps({ @@ -78,6 +76,10 @@ disabled: { type: Boolean, default: false, }, quickActive: { type: Number as PropType<TimeRangeEnum>, required: false, }, }); @@ -100,6 +102,9 @@ const dateChange = () => { nextTick(() => { if (dateValue.value?.[1]) { dateValue.value[1] = dateValue.value[1].slice(0, 10) + ' 23:59:59'; } emit('change', dateValue.value); }); }; @@ -112,12 +117,17 @@ quickPickValue.value = null; }; const quickPickValue = ref<TimeRangeEnum>(null); const pickQuickRange = (val: TimeRangeEnum) => { // if(val==undefined) return; quickPickValue.value = val; dateValue.value = timeRangeEnumMapValue[val]().map((item) => formatDate(item)) as [string, string]; }; const quickPickRangeClick = (val: TimeRangeEnum) => { if (props.disabled) return; if (quickPickValue.value === val) return; quickPickValue.value = val; dateValue.value = timeRangeEnumMapValue[val]().map((item) => formatDate(item)) as [string, string]; pickQuickRange(val); dateChange(); }; @@ -146,7 +156,11 @@ resetQuickPickValue(); dateChange(); }; onMounted(() => { if(props.quickActive !=null){ pickQuickRange(props.quickActive); } }); defineExpose({ formatDateValue: dateValue, }); src/components/chat/components/playBar/businessTable/ChartDisplay.vue
@@ -8,7 +8,7 @@ <script setup lang="ts" name="ChartDisplay"> import { defaultsDeep, groupBy } from 'lodash-es'; import { computed, ref } from 'vue'; import { computed, onMounted, ref, watch } from 'vue'; import { getChatChartOption, SCATTER_SYMBOL_SIZE } from '../../../chatComponents/common'; import { ChartTypeEnum } from '../../../chatComponents/types'; import { useDrawChatChart } from '/@/components/chat/chatComponents/hooks/useDrawChatChart'; @@ -174,5 +174,12 @@ const chartLoading = ref(false); const { chartContainerResize, chartInstance } = useDrawChatChart({ chartRef, drawChart }); watch( () => props.records, (val) => { drawChart(); } ); </script> <style scoped lang="scss"></style> src/components/chat/components/playBar/businessTable/index.vue
@@ -10,7 +10,7 @@ <template #header> <div style="color: #fff"> <SvgIcon name="ele-Document" :size="16" style="margin-right: 3px; display: inline; vertical-align: middle" /> <span>业务表关联</span> <span>选择业务表</span> </div> </template> <AHMContainer type="card" class="h100" v-loading="submitLoading"> @@ -28,7 +28,7 @@ }" defaultExpandAll :treedata="listTreeData" title-name="附件表" title-name="业务表" :show-more-operate="false" :show-add="false" :current-node-key="currentListID" @@ -39,7 +39,7 @@ </template> <template #header> <el-form ref="queryFormRef" :inline="true" class="relative"> <el-form-item :label="item.title" prop="title" v-for="item in filterColumns as any" :key="item.name"> <el-form-item :label="item.title" prop="title" v-for="item in filterColumns as any" :key="item.name" class="items-center"> <TableSearch v-model="item.values" :filter="item.filter" @input="debounceSearch()" /> </el-form-item> </el-form> @@ -50,6 +50,7 @@ <div class="flex-0 flex-items-center flex-wrap"> <div class="ml-auto space-x-2 flex-items-center"> <DisplayMode v-if="isChart" :order="modeChangeOrder" v-model="showMode" :modeTypeMap="displayModeTypeMap" @@ -59,7 +60,7 @@ </div> </div> <el-table v-show="showMode === DisplayModeType.List" v-show="showTable" v-loading="tableLoading" ref="draggableTableRef" class="flex-auto" @@ -121,6 +122,14 @@ const closeDialog = () => { dialogIsShow.value = false; }; const isChart = computed(() => { return !!currentNode.value?.is_chart; }); const showTable = computed(() => { return !isChart.value || (isChart.value && showMode.value === DisplayModeType.List); }); //#region ====================== 模式切换 ====================== const showMode = ref(DisplayModeType.List); @@ -229,6 +238,10 @@ } }; const resetRight = () => { showMode.value = DisplayModeType.List; }; const handleClickNode = (data) => { if (data.type === 'group') { ElMessage.warning('请选择业务表'); @@ -238,6 +251,8 @@ leftTreeRef.value?.treeRef.setCurrentKey(data.logicalId); }); currentNode.value = data; resetRight(); setOrderMap(data); getTableData(); }; @@ -330,13 +345,10 @@ // values 不能为空 }) .filter((item) => { return item.values.every((item) => !!item); if (item.filter === 'like') { return item.values.every((item) => !!item); } else if (item.filter === 'time_range') { item.values = ['2025-02-11 00:07:00', '2025-02-11 01:09:00']; console.log('🚀 ~ item.filter:', item.filter); return !!item.values?.some((item) => !!item); } else { return true; } src/components/chat/components/playBar/businessTable/search/index.vue
@@ -1,16 +1,13 @@ <template> <div> <el-input v-if="filter === 'like'" @input="(value) => input(value)" v-model="modelValue[0]" style="width: 226.4px" clearable /> <el-input v-if="filter === 'like'" @input="(value) => input(value)" v-model="modelValue[0]" style="width: 226.4px" clearable /> <TimeRange v-model="modelValue" v-if="filter === 'time_range'" @change="input" /> </div> </template> <script setup lang="ts" name="TableSearch"> import TimeRange from '/@/components/chat/chatComponents/summaryCom/components/recordSet/components/TimeRange.vue'; import { TimeRangeEnum } from '/@/components/chat/chatComponents/summaryCom/components/recordSet/components/types'; const props = defineProps(['filter']); const emit = defineEmits(['input']); const modelValue = defineModel({