提交 eee24244 authored 作者: coderBryanFu's avatar coderBryanFu

update

...@@ -147,4 +147,132 @@ export function getSurvyInfo(params) { ...@@ -147,4 +147,132 @@ export function getSurvyInfo(params) {
url: `/api/marketsearchHome/statSortDetails`, url: `/api/marketsearchHome/statSortDetails`,
params params
}) })
}
// 查询调查的所有发布领域 /marketsearchDetails/getSearchAllArea
export function getSearchAllArea(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSearchAllArea`,
params
})
}
// 查询调查的所有发布时间
export function getSearchAllYear(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSearchYears`,
params
})
}
// 调查简介 /marketsearchDetails/searchBlurb
export function getSearchBlurb(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/searchBlurb`,
params
})
}
// 获取相关事件getRelatedEvents
export function getRelatedEvents(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getRelatedEvents`,
params
})
}
// 获取事件脉络 getSearchContext
export function getSearchContext(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSearchContext`,
params
})
}
// getSearchMeasures 报复性措施
export function getSearchMeasures(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSearchMeasures`,
params
})
}
// /marketsearchDetails/getSearchDirection 查询调查方向和结果信息
export function getSearchDirection(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSearchDirection`,
params
})
}
// 中国公司受调查情况 /marketsearchDetails/statcnOrgCount
export function getStatcnOrgCount(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/statcnOrgCount`,
params
})
}
// /marketsearchDetails/getSearchConclusion 查询调查结论
export function getSearchConclusion(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSearchConclusion`,
params
})
}
// getReportAnalyze 报告分析
export function getReportAnalyze(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getReportAnalyze`,
params
})
}
// 被诉企业列表
export function getSuedOrg(params) {
return request({
method: 'GET',
url: `/api/marketsearchDetails/getSuedOrg`,
params
})
}
// 进出口数据
export function getOrgImportAndExport(params) {
return request({
method: 'GET',
url: `/api/organization/scale/getOrgImportAndExport`,
params
})
}
// 营收数据
export function getRevenue(params) {
return request({
method: 'GET',
url: `/api/organization/scale/revenue`,
params
})
}
// 净利润数据
export function getNetProfit(params) {
return request({
method: 'GET',
url: `/api/organization/scale/netProfit`,
params
})
} }
\ No newline at end of file
<template> <template>
<div class="case-wrap"> <div class="case-wrap">
<Discussion1 v-if="showDiscussion ==='337'"></Discussion1> <Discussion1 v-if="showDiscussion ==='337'"></Discussion1>
<Discussion2 v-else-if="showDiscussion ==='232'"></Discussion2> <Discussion2 v-if="showDiscussion ==='232'"></Discussion2>
<Discussion3 v-else></Discussion3> <Discussion3 v-if="showDiscussion ==='301'"></Discussion3>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, onMounted, computed } from "vue"; import { ref, onMounted, computed } from "vue";
// import Discussion1 from './337/index.vue' import Discussion1 from './337/index.vue'
// import Discussion2 from './232/index.vue' import Discussion2 from './232/index.vue'
import Discussion3 from './301/index.vue' import Discussion3 from './301/index.vue'
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</div> </div>
</div> </div>
<div class="center"> <div class="center">
<div class="box1"> <div class="box1" v-loading="box1Loading">
<div class="box-header"> <div class="box-header">
<div class="header-left"></div> <div class="header-left"></div>
<div class="title">美国对华337调查年度趋势</div> <div class="title">美国对华337调查年度趋势</div>
...@@ -39,8 +39,8 @@ ...@@ -39,8 +39,8 @@
</div> </div>
</div> </div>
<div class="box1-main" id="chart1"></div> <div class="box1-main" id="chart1"></div>
</div> </div>
<div class="box2"> <div class="box2" v-loading="box2Loading">
<div class="box-header"> <div class="box-header">
<div class="header-left"></div> <div class="header-left"></div>
<div class="title">调查案件领域分布</div> <div class="title">调查案件领域分布</div>
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
</div> </div>
</div> </div>
<div class="footer"> <div class="footer">
<div class="box3"> <div class="box3" v-loading="box3Loading">
<div class="box-header"> <div class="box-header">
<div class="header-left"></div> <div class="header-left"></div>
<div class="title">中国公司受调查情况</div> <div class="title">中国公司受调查情况</div>
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
<div class="box3-main1-right" id="chartMap"></div> <div class="box3-main1-right" id="chartMap"></div>
</div> </div>
</div> </div>
<div class="box4"> <div class="box4" v-loading="box4Loading">
<div class="box-header"> <div class="box-header">
<div class="header-left"></div> <div class="header-left"></div>
<div class="title">调查结果分布</div> <div class="title">调查结果分布</div>
...@@ -133,6 +133,8 @@ import * as echarts from "echarts"; ...@@ -133,6 +133,8 @@ import * as echarts from "echarts";
import ChinaJson from "../../assets/json/China.json"; import ChinaJson from "../../assets/json/China.json";
import { getStatcnOrgCount, getSearchResult, getStatArea, getStatNum } from "@/api/marketAccessRestrictions";
import getMultiLineChart from "./utils/multiLineChart"; import getMultiLineChart from "./utils/multiLineChart";
import getBarChart from "./utils/barChart"; import getBarChart from "./utils/barChart";
import getPieChart from "./utils/piechart"; import getPieChart from "./utils/piechart";
...@@ -147,95 +149,198 @@ const setChart = (option, chartId) => { ...@@ -147,95 +149,198 @@ const setChart = (option, chartId) => {
return chart; return chart;
}; };
const box1Loading = ref(false);
const box2Loading = ref(false);
const box3Loading = ref(false);
const box4Loading = ref(false);
const btnActiveName = ref("注册地分布"); const btnActiveName = ref("注册地分布");
const provinceCoords = {
"北京": [116.46, 39.92],
"上海": [121.48, 31.22],
"天津": [117.2, 39.13],
"重庆": [106.54, 29.59],
"河北": [114.48, 38.03],
"山西": [112.53, 37.87],
"内蒙古": [111.65, 40.82],
"辽宁": [123.38, 41.8],
"吉林": [125.35, 43.88],
"黑龙江": [126.63, 45.75],
"江苏": [118.78, 32.04],
"浙江": [120.19, 30.26],
"安徽": [117.27, 31.86],
"福建": [119.3, 26.08],
"江西": [115.89, 28.68],
"山东": [117.0, 36.65],
"河南": [113.65, 34.76],
"湖北": [114.31, 30.52],
"湖南": [113.0, 28.21],
"广东": [113.23, 23.16],
"广西": [108.33, 22.84],
"海南": [110.35, 20.02],
"四川": [104.06, 30.67],
"贵州": [106.71, 26.57],
"云南": [102.73, 25.04],
"西藏": [91.11, 29.97],
"陕西": [108.95, 34.27],
"甘肃": [103.73, 36.03],
"青海": [101.74, 36.56],
"宁夏": [106.27, 38.47],
"新疆": [87.68, 43.77],
"香港": [114.17, 22.28],
"澳门": [113.54, 22.19],
"台湾": [121.5, 25.05]
};
const handleGetStatcnOrgCount = async (type) => {
box3Loading.value = true;
try {
const res = await getStatcnOrgCount({
type,
sortCode: "337"
});
if (res.code === 200 && res.data) {
if (type === "01") {
chart3Data.value = {
name: res.data.map(item => item.ORGNAME),
value: res.data.map(item => item.ORGCOUNT)
};
nextTick(() => {
let chart3 = getBarChart(chart3Data.value.name, chart3Data.value.value);
setChart(chart3, "chart3");
});
} else if (type === "02") {
mapData.value = res.data.map(item => {
const name = item.ORGPROVINCE//.replace(/省|市|自治区|特别行政区/g, "");
return {
name: item.ORGPROVINCE,
value: item.PROVINCECOUNT,
coord: provinceCoords[name] || [0, 0]
};
});
nextTick(() => {
let chartMap = getMapChart(mapData.value);
setChart(chartMap, "chartMap");
});
}
}
} catch (error) {
console.error("获取中国公司受调查情况失败", error);
} finally {
box3Loading.value = false;
}
};
const handleClickBox3Btn = name => { const handleClickBox3Btn = name => {
btnActiveName.value = name; btnActiveName.value = name;
if (name === "调查次数") { if (name === "调查次数") {
nextTick(() => { handleGetStatcnOrgCount("01");
let chart3 = getBarChart(chart3Data.value.name, chart3Data.value.value);
setChart(chart3, "chart3");
});
} else { } else {
nextTick(() => { handleGetStatcnOrgCount("02");
let chartMap = getMapChart(mapData.value);
setChart(chartMap, "chartMap");
});
} }
}; };
const chart1Data = ref({ const chart1Data = ref({
title: ["2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"], title: [],
data: [ data: []
{
name: "提出法案",
value: [145, 52, 84, 99, 71, 96, 128, 144, 140, 168, 188, 172]
}
]
}); });
const chart2Data = ref([ const handleGetStatNum = async () => {
{ name: "半导体", value: 50 }, box1Loading.value = true;
{ name: "电子设备", value: 46 }, try {
{ name: "显示技术", value: 40 }, const res = await getStatNum({
{ name: "新能源", value: 32 }, byYorM: "12",
{ name: "通信设备", value: 31 }, sortCode: "337"
{ name: "汽车", value: 31 }, });
{ name: "轻工业制造", value: 30 }, if (res.code === 200 && res.data) {
{ name: "其他", value: 24 } const sortedData = res.data.sort((a, b) => parseInt(a.searchYorM) - parseInt(b.searchYorM));
]); chart1Data.value.title = sortedData.map(item => item.searchYorM);
chart1Data.value.data = [
{
name: "调查数量",
value: sortedData.map(item => item.searchCount)
}
];
nextTick(() => {
let chart1 = getMultiLineChart(chart1Data.value.title, chart1Data.value.data[0].value);
setChart(chart1, "chart1");
});
}
} catch (error) {
console.error("获取年度趋势数据失败", error);
} finally {
box1Loading.value = false;
}
};
const chart2Data = ref([]);
const chart2ColorList = ref(["#69B1FF", "#FFC069", "#87E8DE", "#597EF7", "#D6E4FF", "#FF7875", "#B37FEB", "#FFA39E"]); const chart2ColorList = ref(["#69B1FF", "#FFC069", "#87E8DE", "#597EF7", "#D6E4FF", "#FF7875", "#B37FEB", "#FFA39E"]);
const handleGetStatArea = async () => {
box2Loading.value = true;
try {
const res = await getStatArea({
sortCode: "337"
});
if (res.code === 200 && res.data) {
chart2Data.value = res.data
.filter(item => item.SORTCODE === "337" || item.SORTNAME === "337调查")
.map(item => ({
name: item.AREANAME,
value: item.AREACOUNT
}));
nextTick(() => {
let chart2 = getPieChart(chart2Data.value, chart2ColorList.value);
setChart(chart2, "chart2");
});
}
} catch (error) {
console.error("获取调查案件领域分布失败", error);
} finally {
box2Loading.value = false;
}
};
const chart3Data = ref({ const chart3Data = ref({
name: [ name: [],
"华为技术有限公司", value: []
"大疆创新科技有限公司",
"TCL科技集团股份有限公司",
"中兴通讯股份有限公司",
"联想集团",
"比亚迪集团",
"宁德时代新能源科技股份有限公司",
"晶科智能科技有限公司"
],
value: [42, 35, 28, 19, 15, 12, 11, 8]
}); });
const mapData = ref([ const mapData = ref([]);
{ name: "北京", value: 10, coord: [116.46, 39.92] },
{ name: "上海", value: 9, coord: [121.48, 31.22] },
{ name: "广东", value: 15, coord: [113.23, 23.16] },
{ name: "江苏", value: 30, coord: [118.78, 32.04] },
{ name: "浙江", value: 20, coord: [120.19, 30.26] },
{ name: "四川", value: 4, coord: [104.06, 30.67] },
{ name: "陕西", value: 1, coord: [108.95, 34.27] },
{ name: "辽宁", value: 3, coord: [123.38, 41.8] }
// { name: "湖北", value: 2, coord: [114.31, 30.52] },
// { name: "山东", value: 12, coord: [117.0, 36.65] },
]);
const chart4Data = ref([
{ name: "和解/同意令", value: 50 },
{ name: "裁定不侵权", value: 46 },
{ name: "裁定侵权", value: 40 },
{ name: "申诉方撤诉", value: 31 },
{ name: "其他", value: 24 }
]);
const chart4ColorList = ref(["#69B1FF", "#FFC069", "#87E8DE", "#D6E4FF", "#FFA39E"]);
onMounted(() => { const chart4Data = ref([]);
let chart1 = getMultiLineChart(chart1Data.value.title, chart1Data.value.data[0].value); const chart4ColorList = ref(["#69B1FF", "#FFC069", "#87E8DE", "#597EF7", "#D6E4FF", "#FF7875", "#B37FEB", "#FFA39E"]);
setChart(chart1, "chart1");
let chart2 = getPieChart(chart2Data.value, chart2ColorList.value); const handleGetSearchResult = async () => {
setChart(chart2, "chart2"); box4Loading.value = true;
try {
const res = await getSearchResult({
sortCode: "337"
});
if (res.code === 200 && res.data) {
chart4Data.value = res.data.map(item => ({
name: item.RESULTNAME,
value: item.RESULTNUM
}));
nextTick(() => {
let chart4 = getPieChart(chart4Data.value, chart4ColorList.value);
setChart(chart4, "chart4");
});
}
} catch (error) {
console.error("获取调查结果分布失败", error);
} finally {
box4Loading.value = false;
}
};
let chart3 = getBarChart(chart3Data.value.name, chart3Data.value.value); onMounted(() => {
setChart(chart3, "chart3"); handleGetStatNum();
let chartMap = getMapChart(mapData.value); handleGetStatArea();
setChart(chartMap, "chartMap");
let chart4 = getPieChart(chart4Data.value, chart4ColorList.value); handleGetStatcnOrgCount(btnActiveName.value === "调查次数" ? "01" : "02");
setChart(chart4, "chart4"); handleGetSearchResult();
}); });
</script> </script>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论