wujingjing
2025-03-05 4e394d1f4ed0928d5498083621966aba390a7642
图表查询
已修改4个文件
82 ■■■■■ 文件已修改
src/components/chat/chatComponents/summaryCom/components/recordSet/components/TimeRange.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chat/components/playBar/businessTable/ChartDisplay.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chat/components/playBar/businessTable/index.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chat/components/playBar/businessTable/search/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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({