修改二级弹框选择框默认展示问题,bug修改,添加鱼类增值站功能

This commit is contained in:
扈兆增 2026-09-04 14:59:09 +08:00
parent 9c2b510e6e
commit 77ef3f72aa
15 changed files with 184 additions and 29 deletions

View File

@ -0,0 +1,8 @@
import request from '@/utils/request';
export function getPlanFinishDetail(data: any) {
return request({
url: '/fb/planFinish/GetKendoListCust',
method: 'post',
data
});
}

View File

@ -0,0 +1 @@
<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><g fill="#FF504F" fill-rule="nonzero"><path d="M8 16c-4.363 0-8-3.637-8-8.001C0 3.635 3.636 0 8 0c4.363 0 8 3.637 8 8 0 4.484-3.637 8-8 8ZM8 1.5C4.43 1.5 1.5 4.432 1.5 8c0 3.57 2.931 6.5 6.5 6.5s6.5-2.932 6.5-6.5S11.569 1.5 8 1.5Z"/><path d="M8 10.623c.345 0 .625.309.625.689l-.007.101C8.574 11.745 8.314 12 8 12c-.345 0-.625-.308-.625-.688l.007-.102c.044-.332.304-.587.618-.587ZM8 4c.552 0 1 .493 1 1.101l-.5 4.456c0 .304-.224.552-.501.552s-.5-.246-.5-.552L7 5.101C7 4.493 7.448 4 8 4Z"/></g></svg>

After

Width:  |  Height:  |  Size: 562 B

View File

@ -609,6 +609,9 @@ const updateTableColumns = () => {
fixed: col.fixed || undefined, fixed: col.fixed || undefined,
ellipsis: col.ellipsis ellipsis: col.ellipsis
}; };
if (col.key == 'tm' || col.key == 'aiVal') {
baseCol.sort = true;
}
if (col.dataFormat === 'YYYY-MM-DD' || col.dataType === 'date') { if (col.dataFormat === 'YYYY-MM-DD' || col.dataType === 'date') {
baseCol.customRender = ({ text }: any) => baseCol.customRender = ({ text }: any) =>
text ? dayjs(text).format('YYYY-MM-DD') : '-'; text ? dayjs(text).format('YYYY-MM-DD') : '-';

View File

@ -23,7 +23,7 @@
<div class="filter-row"> <div class="filter-row">
<a-select <a-select
v-model:value="timeType" v-model:value="timeType"
style="margin-right: 12px" style="width: 80px"
:options="timeTypeOptions" :options="timeTypeOptions"
/> />
<a-range-picker <a-range-picker
@ -530,7 +530,9 @@ watch(
() => props.isActive, () => props.isActive,
active => { active => {
if (active && !hasLoaded.value) { if (active && !hasLoaded.value) {
if (modelStore.filter.stllTmType) {
timeType.value = modelStore.filter.stllTmType; timeType.value = modelStore.filter.stllTmType;
}
if (modelStore.filter.rangeTm.length > 0) { if (modelStore.filter.rangeTm.length > 0) {
dateRange.value = [ dateRange.value = [
dayjs(modelStore.filter.rangeTm[0]), dayjs(modelStore.filter.rangeTm[0]),

View File

@ -304,6 +304,7 @@ const updateChart = (data: any[], columns: any[]) => {
console.log(sorted[0]); console.log(sorted[0]);
const option = { const option = {
// updateChart tooltip
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
backgroundColor: 'rgba(50, 50, 50, 0.9)', backgroundColor: 'rgba(50, 50, 50, 0.9)',
@ -312,15 +313,27 @@ const updateChart = (data: any[], columns: any[]) => {
formatter: (params: any) => { formatter: (params: any) => {
if (!params || params.length === 0) return ''; if (!params || params.length === 0) return '';
const dataIndex = params[0].dataIndex; const dataIndex = params[0].dataIndex;
const fullTime = xAxisData[dataIndex] || ''; const dataItem = data[dataIndex]; // data updateChart
if (!dataItem) return '';
const fullTime = dayjs(dataItem.dt).format('YYYY-MM-DD');
let html = `<div style="font-size:16px;margin-bottom:8px;">${fullTime}</div>`; let html = `<div style="font-size:16px;margin-bottom:8px;">${fullTime}</div>`;
params.forEach((param: any) => {
if (param.value == null) return; //
const dataColumns = columns.filter(
col => col.dataIndex !== 'dt' && col.visible !== false
);
dataColumns.forEach(col => {
const value = dataItem[col.dataIndex];
const displayValue = value != null && value !== '' ? value : '-';
// params 使
const matched = params.find((p: any) => p.seriesName === col.title);
const color = matched ? matched.color : '#999';
html += ` html += `
<div style="display:flex;align-items:center;justify-content:space-between;margin:4px 0;"> <div style="display:flex;align-items:center;justify-content:space-between;margin:4px 0;">
<span style="display:inline-block;width:10px;height:10px;border-radius:50%;background:${param.color};margin-right:8px;"></span> <span style="display:inline-block;width:10px;height:10px;border-radius:50%;background:${color};margin-right:8px;"></span>
<span style="flex:1;font-size:14px;text-align:left;margin-right:6px;">${param.seriesName}: </span> <span style="flex:1;font-size:14px;text-align:left;margin-right:6px;">${col.title}: </span>
<span style="font-size:14px;min-width:60px;text-align:right;"><strong>${param.value}</strong></span> <span style="font-size:14px;min-width:60px;text-align:right;"><strong>${displayValue}</strong></span>
</div> </div>
`; `;
}); });
@ -330,6 +343,8 @@ const updateChart = (data: any[], columns: any[]) => {
legend: { legend: {
type: 'scroll', type: 'scroll',
top: 10, top: 10,
left: 0,
width: '90%',
data: dataColumns.map(col => col.title), data: dataColumns.map(col => col.title),
textStyle: { fontSize: 12 } textStyle: { fontSize: 12 }
}, },
@ -429,7 +444,7 @@ const fetchData = async () => {
.map((col: any) => ({ .map((col: any) => ({
title: col.title, title: col.title,
dataIndex: col.dataIndex, dataIndex: col.dataIndex,
width: 120, width: 140,
customRender: ({ text }: any) => { customRender: ({ text }: any) => {
if (col.dataType === 'date' && text) { if (col.dataType === 'date' && text) {
return dayjs(text).format('YYYY-MM-DD'); return dayjs(text).format('YYYY-MM-DD');

View File

@ -568,13 +568,17 @@ const setQGCTabList = async (_tabs: any, stcd: string) => {
}; };
const res2 = await getVideoList(params); const res2 = await getVideoList(params);
console.log('', modelStore.params.sttp); console.log('', modelStore.params.sttp);
console.log('', res2);
console.log('', newTabs);
if ( if (
res2?.data?.data?.length > 0 || res2?.data?.data?.length > 0 ||
res2?.data?.records?.length > 0 || res2?.data?.records?.length > 0 ||
modelStore.params.sttp == 'WQ' modelStore.params.sttp == 'WQ'
) { ) {
console.log(123);
tabsConfig.value = newTabs; tabsConfig.value = newTabs;
} else { } else {
console.log(465);
let arr = ['DW', 'DW_1', 'DW_2', 'DW_3', 'DW_4', 'DW_5', 'DW_6']; let arr = ['DW', 'DW_1', 'DW_2', 'DW_3', 'DW_4', 'DW_5', 'DW_6'];
if (arr.includes(modelStore.params.sttp)) { if (arr.includes(modelStore.params.sttp)) {
tabsConfig.value = newTabs.filter((item: any) => item.type == 'basic'); tabsConfig.value = newTabs.filter((item: any) => item.type == 'basic');

View File

@ -211,6 +211,8 @@ export class MapOl implements MapInterface {
} else { } else {
modelStore.modalVisible = true; modelStore.modalVisible = true;
modelStore.params = detectedFeature.values_; modelStore.params = detectedFeature.values_;
if (detectedFeature.values_.eqtp == 'QEC')
modelStore.filter.stllTmType = 'day';
modelStore.title = modelStore.title =
detectedFeature.values_.titleName || detectedFeature.values_.stnm; detectedFeature.values_.titleName || detectedFeature.values_.stnm;
} }

View File

@ -464,7 +464,10 @@ watch(
() => modelStore.selectedAnchorPoint?.stcd, () => modelStore.selectedAnchorPoint?.stcd,
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) fetchData(); if (newStcd !== oldStcd) {
dateRange.value = initDateRange();
fetchData();
}
}, },
{ immediate: true } { immediate: true }
); );

View File

@ -276,7 +276,10 @@ watch(
() => modelStore.selectedAnchorPoint?.stcd, () => modelStore.selectedAnchorPoint?.stcd,
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) fetchData(); if (newStcd !== oldStcd) {
year.value = initYear();
fetchData();
}
}, },
{ immediate: true } { immediate: true }
); );

View File

@ -12,6 +12,7 @@
class="w-[90px]" class="w-[90px]"
/> />
</template> </template>
<a-spin :spinning="loading">
<div class="chart-row"> <div class="chart-row">
<div <div
v-for="(cfg, index) in chartConfigs" v-for="(cfg, index) in chartConfigs"
@ -22,14 +23,17 @@
<div :ref="el => setChartRef(el, index)" class="chart"></div> <div :ref="el => setChartRef(el, index)" class="chart"></div>
</div> </div>
</div> </div>
</a-spin>
</SidePanelItem> </SidePanelItem>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, onMounted, onBeforeUnmount, nextTick } from 'vue'; import { ref, watch, onMounted, onBeforeUnmount, nextTick } from 'vue';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import type { ECharts } from 'echarts'; import type { ECharts } from 'echarts';
import { getPlanFinishDetail } from '@/api/mapModal/rightModel';
import { useModelStore } from '@/store/modules/model';
import SidePanelItem from '@/components/SidePanelItem/index.vue'; import SidePanelItem from '@/components/SidePanelItem/index.vue';
interface PieChartConfig { interface PieChartConfig {
@ -66,6 +70,82 @@ const chartConfigs: PieChartConfig[] = [
} }
]; ];
const modelStore = useModelStore();
const loading = ref(false);
let skipYearWatch = false;
//
const fetchChartData = async () => {
loading.value = true;
const startTime = selectedYear.value
.startOf('year')
.format('YYYY-MM-DD HH:mm:ss');
const endTime = selectedYear.value
.endOf('year')
.format('YYYY-MM-DD HH:mm:ss');
const params = {
filter: {
logic: 'and',
filters: [
{
field: 'startTime',
operator: 'eq',
dataType: 'date',
value: startTime
},
{ field: 'endTime', operator: 'eq', dataType: 'date', value: endTime },
{
field: 'stcd',
operator: 'eq',
dataType: 'string',
value: modelStore.selectedAnchorPoint.stcd
}
]
}
};
try {
const res = await getPlanFinishDetail(params);
console.log('getPlanFinishDetail response:', res);
const data = res.data?.data[0];
console.log('data:', data);
if (data) {
chartConfigs[0].data = [
{
name: '未完成数量',
value: Number((data.unfinishedQty / 10000).toFixed(2)) || 0
},
{
name: '已完成数量',
value: Number((data.finishedQty / 10000).toFixed(2)) || 0
}
];
chartConfigs[1].data = [
{ name: '未完成种类', value: data.unfinishedFtp ?? 0 },
{ name: '已完成种类', value: data.finishedFtp ?? 0 }
];
} else {
//
chartConfigs[0].data = [
{ name: '未完成数量', value: 0 },
{ name: '已完成数量', value: 0 }
];
chartConfigs[1].data = [
{ name: '未完成种类', value: 0 },
{ name: '已完成种类', value: 0 }
];
}
//
renderChart(0);
renderChart(1);
} catch (err) {
console.error('getPlanFinishDetail error:', err);
} finally {
loading.value = false;
}
};
// ==================== ==================== // ==================== ====================
const selectedYear = ref<Dayjs>(dayjs()); const selectedYear = ref<Dayjs>(dayjs());
const disabledYear = (current: Dayjs) => const disabledYear = (current: Dayjs) =>
@ -207,6 +287,26 @@ const handleResize = () => {
}); });
}; };
// stcd
watch(
() => modelStore.selectedAnchorPoint,
() => {
skipYearWatch = true;
selectedYear.value = dayjs();
fetchChartData();
},
{ immediate: true }
);
//
watch(selectedYear, () => {
if (skipYearWatch) {
skipYearWatch = false;
return;
}
fetchChartData();
});
onMounted(() => { onMounted(() => {
nextTick(() => { nextTick(() => {
setTimeout(() => { setTimeout(() => {

View File

@ -710,6 +710,8 @@ watch(
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) { if (newStcd !== oldStcd) {
wtDateRange.value = initDateRange();
llDateRange.value = initDateRange();
loadWtStationList(); loadWtStationList();
loadLlStationList(); loadLlStationList();
} }

View File

@ -402,7 +402,10 @@ watch(
() => modelStore.selectedAnchorPoint?.stcd, () => modelStore.selectedAnchorPoint?.stcd,
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) fetchData(); if (newStcd !== oldStcd) {
dateRange.value = initDateRange();
fetchData();
}
}, },
{ immediate: true } { immediate: true }
); );

View File

@ -667,7 +667,10 @@ watch(
() => modelStore.selectedAnchorPoint?.stcd, () => modelStore.selectedAnchorPoint?.stcd,
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) fetchData(); if (newStcd !== oldStcd) {
dateRange.value = initDateRange();
fetchData();
}
}, },
{ immediate: true } { immediate: true }
); );

View File

@ -494,7 +494,10 @@ watch(
() => modelStore.selectedAnchorPoint?.stcd, () => modelStore.selectedAnchorPoint?.stcd,
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) fetchData(); if (newStcd !== oldStcd) {
dateRange.value = initDateRange();
fetchData();
}
}, },
{ immediate: true } { immediate: true }
); );

View File

@ -534,7 +534,10 @@ watch(
() => modelStore.selectedAnchorPoint?.stcd, () => modelStore.selectedAnchorPoint?.stcd,
(newStcd, oldStcd) => { (newStcd, oldStcd) => {
if (!newStcd) return; if (!newStcd) return;
if (newStcd !== oldStcd) fetchData(); if (newStcd !== oldStcd) {
dateRange.value = initDateRange();
fetchData();
}
}, },
{ immediate: true } { immediate: true }
); );