提交 01f99fff authored 作者: yanpeng's avatar yanpeng

恢复一些合并出问题的修改

上级 e96cb50b
流水线 #175 已失败 于阶段
...@@ -2,67 +2,65 @@ import request from "@/api/request.js"; ...@@ -2,67 +2,65 @@ import request from "@/api/request.js";
// 中美博弈概览V2:最新风险动态统计 // 中美博弈概览V2:最新风险动态统计
export function getLatestRiskUpdates(params) { export function getLatestRiskUpdates(params) {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/rivalryIndexV2/LatestRiskUpdates`, url: `/api/rivalryIndexV2/LatestRiskUpdates`,
params: params params: params
}) });
} }
// 中美博弈概览V2:最新风险信号 // 中美博弈概览V2:最新风险信号
export function getLatestRisks() { export function getLatestRisks() {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/rivalryIndexV2/LatestRisks`, url: `/api/rivalryIndexV2/LatestRisks`
});
})
} }
// 中美博弈概览V2:美对华制裁措施数量趋势 // 中美博弈概览V2:美对华制裁措施数量趋势
export function geDomainContainmentTrend(params) { export function geDomainContainmentTrend(params) {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/rivalryIndexV2/DomainContainmentTrend`, url: `/api/rivalryIndexV2/DomainContainmentTrend`,
params: params params: params
}) });
} }
// 中美博弈概况:获取榜单字典 // 中美博弈概况:获取榜单字典
export function getChartDict() { export function getChartDict() {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/union/summary/chartDict`, url: `/api/union/summary/chartDict`
}) });
}
// 中美博弈概况:获取年份
export function getYear(id) {
return request({
method: "GET",
url: `/api/union/summary/chartYear/${id}`
});
} }
// 中美博弈概况:中美科技实力对比 // 中美博弈概况:中美科技实力对比
export function getCompare(id) { export function getCompare(id, year) {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/union/summary/compare/${id}`, url: `/api/union/summary/compare/${id}/${year}`
}) });
} }
// 中美博弈分析 // 中美博弈分析
export function getTechnologyGameAnalysis() { export function getTechnologyGameAnalysis() {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/rivalryIndexV2/TechnologyGameAnalysis`, url: `/api/rivalryIndexV2/TechnologyGameAnalysis`
});
})
} }
//中美博弈概览V7:美国政府部门对华制裁最新动态 //中美博弈概览V7:美国政府部门对华制裁最新动态
export function getGovernmentSanctionsDynamics() { export function getGovernmentSanctionsDynamics() {
return request({ return request({
method: 'GET', method: "GET",
url: `/api/rivalryIndex/governmentSanctionsDynamics`, url: `/api/rivalryIndex/governmentSanctionsDynamics`
});
}) }
}
\ No newline at end of file
...@@ -14,10 +14,20 @@ ...@@ -14,10 +14,20 @@
size="default" size="default"
style="margin-left: 15px; width: 240px; height: 32px" style="margin-left: 15px; width: 240px; height: 32px"
v-model="origin" v-model="origin"
@change="handleGetCompare()" @change="handleOriginChange()"
> >
<el-option :value="value.id" :label="value.name" v-for="(value, index) in originList" :key="index" /> <el-option :value="value.id" :label="value.name" v-for="(value, index) in originList" :key="index" />
</el-select> </el-select>
<el-select
class="select-item"
size="default"
style="margin-left: 15px; width: 200px; height: 32px"
v-model="year"
@change="handleGetCompare()"
>
<el-option :value="value" :label="value" v-for="(value, index) in yearList" :key="index" />
</el-select>
</div> </div>
</div> </div>
<div style="display: flex; height: 650px; width: 100%; padding-top: 12px"> <div style="display: flex; height: 650px; width: 100%; padding-top: 12px">
...@@ -237,7 +247,7 @@ import Echarts from "@/components/Chart/index.vue"; ...@@ -237,7 +247,7 @@ import Echarts from "@/components/Chart/index.vue";
import mockData from "./mock.json"; import mockData from "./mock.json";
import radarChart from "./radarChart3.js"; import radarChart from "./radarChart3.js";
import { getCompare, getChartDict, getTechnologyGameAnalysis } from "@/api/zmOverview/risk/index.js"; import { getCompare, getChartDict, getYear, getTechnologyGameAnalysis } from "@/api/zmOverview/risk/index.js";
import icon1 from "./icon/btn-icon-0.png"; import icon1 from "./icon/btn-icon-0.png";
import icon2 from "./icon/btn-icon-1.png"; import icon2 from "./icon/btn-icon-1.png";
import icon3 from "./icon/btn-icon-2.png"; import icon3 from "./icon/btn-icon-2.png";
...@@ -351,10 +361,32 @@ const handleGetChartDict = async () => { ...@@ -351,10 +361,32 @@ const handleGetChartDict = async () => {
console.error("获取数据来源error", error); console.error("获取数据来源error", error);
} }
}; };
const yearList = ref([]);
const year = ref("");
//年份
const handleGetYear = async () => {
try {
const res = await getYear(origin.value);
console.log("年份", res);
if (res.code === 200 && res.data) {
yearList.value = res.data;
year.value = res.data[0];
}
} catch (error) {
console.error("获取年份error", error);
}
};
// 数据来源改变时,年份列表也会改变
const handleOriginChange = async () => {
await handleGetYear();
};
//中美科技实力对比 //中美科技实力对比
const handleGetCompare = async () => { const handleGetCompare = async () => {
try { try {
const res = await getCompare(origin.value); const res = await getCompare(origin.value, year.value);
console.log("中美科技实力对比", res); console.log("中美科技实力对比", res);
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
tableData.value = res.data[0].children; tableData.value = res.data[0].children;
...@@ -392,6 +424,7 @@ const handlegetTechnologyGameAnalysis = async () => { ...@@ -392,6 +424,7 @@ const handlegetTechnologyGameAnalysis = async () => {
}; };
onMounted(async () => { onMounted(async () => {
await handleGetChartDict(); await handleGetChartDict();
await handleGetYear();
await handleGetCompare(); await handleGetCompare();
await handlegetTechnologyGameAnalysis(); await handlegetTechnologyGameAnalysis();
// const dom = document.getElementById("char"); // const dom = document.getElementById("char");
...@@ -463,7 +496,13 @@ const handleIndicatorChange = indicator => { ...@@ -463,7 +496,13 @@ const handleIndicatorChange = indicator => {
const years = chinaData.map(item => item.year.toString()); const years = chinaData.map(item => item.year.toString());
const chinaValues = chinaData.map(item => item.value); const chinaValues = chinaData.map(item => item.value);
const usaValues = usaData.map(item => item.value); const usaValues = usaData.map(item => item.value);
console.log("中国", chinaValues);
console.log("美国", usaValues);
// chinaValues和usaValues的最小值和最大值
const min = Math.min(...chinaValues, ...usaValues);
const max = Math.max(...chinaValues, ...usaValues);
lineOption.value.yAxis.min = Math.floor(min - 1);
lineOption.value.yAxis.max = Math.ceil(max + 1);
lineOption.value.xAxis.data = years; lineOption.value.xAxis.data = years;
lineOption.value.series = [ lineOption.value.series = [
{ {
...@@ -566,9 +605,11 @@ const lineOption = ref({ ...@@ -566,9 +605,11 @@ const lineOption = ref({
}, },
yAxis: { yAxis: {
type: "value", type: "value",
// name: "指数", min: 77,
nameLocation: "top", name: "指数",
nameGap: 35, nameLocation: "end",
nameGap: 1,
padding: [0, -50, 0, 0],
nameTextStyle: { nameTextStyle: {
color: "#666", color: "#666",
fontSize: 13, fontSize: 13,
...@@ -589,7 +630,7 @@ const lineOption = ref({ ...@@ -589,7 +630,7 @@ const lineOption = ref({
} }
}, },
axisLabel: { axisLabel: {
color: "#ccc", color: "#666",
fontSize: 14, fontSize: 14,
fontWeight: 400, fontWeight: 400,
formatter: value => { formatter: value => {
......
...@@ -835,7 +835,7 @@ const handleToRiskSignalDetail = item => { ...@@ -835,7 +835,7 @@ const handleToRiskSignalDetail = item => {
query: { query: {
id: item.sanId id: item.sanId
} }
}) });
}; };
const sanctionList = ref([]); const sanctionList = ref([]);
...@@ -905,7 +905,7 @@ const handleTitleClick = item => { ...@@ -905,7 +905,7 @@ const handleTitleClick = item => {
id: item.id, id: item.id,
sanTypeId: item.sanTypeId sanTypeId: item.sanTypeId
} }
}) });
}; };
const handleCompClick = item => { const handleCompClick = item => {
...@@ -1059,7 +1059,7 @@ const handleToSocialDetail = item => { ...@@ -1059,7 +1059,7 @@ const handleToSocialDetail = item => {
query: { query: {
personId: item.id personId: item.id
} }
}) });
}; };
// 获取趋势图数据 // 获取趋势图数据
const fetchTrendData = async () => { const fetchTrendData = async () => {
...@@ -1188,7 +1188,7 @@ const handleToEntityList = item => { ...@@ -1188,7 +1188,7 @@ const handleToEntityList = item => {
query: { query: {
id: id id: id
} }
}) });
}; };
// 跳转到V2.0实体清单无ID // 跳转到V2.0实体清单无ID
...@@ -1208,7 +1208,7 @@ const handleToEntityListNoId = item => { ...@@ -1208,7 +1208,7 @@ const handleToEntityListNoId = item => {
query: { query: {
sanTypeId: item.id sanTypeId: item.id
} }
}) });
} else if (item.nameZh == "商业管制清单") { } else if (item.nameZh == "商业管制清单") {
// const routeData = router.resolve({ // const routeData = router.resolve({
// path: "/exportControl/commercialControlList", // path: "/exportControl/commercialControlList",
...@@ -1223,7 +1223,7 @@ const handleToEntityListNoId = item => { ...@@ -1223,7 +1223,7 @@ const handleToEntityListNoId = item => {
query: { query: {
sanTypeId: item.id sanTypeId: item.id
} }
}) });
} else { } else {
return; return;
} }
...@@ -1711,7 +1711,7 @@ const handlePerClick = item => { ...@@ -1711,7 +1711,7 @@ const handlePerClick = item => {
type: item.personType || [1, 2, 3][Math.floor(Math.random() * 3)], type: item.personType || [1, 2, 3][Math.floor(Math.random() * 3)],
personId: item.personId personId: item.personId
} }
}) });
}; };
// 处理点击社交媒体消息的方法 // 处理点击社交媒体消息的方法
// const handleInfoClick = item => { // const handleInfoClick = item => {
...@@ -1791,7 +1791,7 @@ const chart1Data = ref({ ...@@ -1791,7 +1791,7 @@ const chart1Data = ref({
}); });
const handleSanc = item => { const handleSanc = item => {
console.log(item); console.log("activeResourceTabItem.value.id", activeResourceTabItem.value.id);
window.sessionStorage.setItem("curTabName", `${item.postDate}${item.title}》`); window.sessionStorage.setItem("curTabName", `${item.postDate}${item.title}》`);
// const route = router.resolve({ // const route = router.resolve({
// path: "/exportControl/singleSanction", // path: "/exportControl/singleSanction",
...@@ -1805,23 +1805,23 @@ const handleSanc = item => { ...@@ -1805,23 +1805,23 @@ const handleSanc = item => {
path: "/exportControl/singleSanction", path: "/exportControl/singleSanction",
query: { query: {
id: item.id, id: item.id,
sanTypeId: activeResourceTabItem.value.id sanTypeId: activeResourceTabItem.value.id.join(",")
} }
}) });
}; };
// 查看更多风险信号 // 查看更多风险信号
const handleToMoreRiskSignal = () => { const handleToMoreRiskSignal = () => {
// const route = router.resolve("/viewRiskSignal"); // const route = router.resolve("/viewRiskSignal");
// window.open(route.href, "_blank"); // window.open(route.href, "_blank");
router.push("/viewRiskSignal") router.push("/viewRiskSignal");
}; };
// 查看更多新闻资讯 // 查看更多新闻资讯
const handleToMoreNews = () => { const handleToMoreNews = () => {
// const route = router.resolve("/newsBrief"); // const route = router.resolve("/newsBrief");
// window.open(route.href, "_blank"); // window.open(route.href, "_blank");
router.push("/newsBrief") router.push("/newsBrief");
}; };
const handleNewsInfoClick = item => { const handleNewsInfoClick = item => {
...@@ -1862,7 +1862,7 @@ const handleSearch = () => { ...@@ -1862,7 +1862,7 @@ const handleSearch = () => {
searchText: searchExportControlText.value, searchText: searchExportControlText.value,
areaName: "实体清单" areaName: "实体清单"
} }
}) });
}; };
onMounted(async () => { onMounted(async () => {
......
...@@ -49,10 +49,13 @@ ...@@ -49,10 +49,13 @@
<img :src="item.imageUrl || flag" alt="" class="flag" /> <img :src="item.imageUrl || flag" alt="" class="flag" />
<div class="country-name">{{ item.name }}</div> <div class="country-name">{{ item.name }}</div>
<div class="progress-bar-container"> <div class="progress-bar-container">
<div class="progress-bar" :style="{ <div
width: item.width, class="progress-bar"
background: item.gradient :style="{
}"></div> width: item.width,
background: item.gradient
}"
></div>
</div> </div>
<div class="count" :class="{ highlight: index === 0 }">{{ item.count }}</div> <div class="count" :class="{ highlight: index === 0 }">{{ item.count }}</div>
</div> </div>
...@@ -95,13 +98,25 @@ ...@@ -95,13 +98,25 @@
</div> </div>
<div class="filter-right"> <div class="filter-right">
<el-checkbox v-model="onlyChina" label="只看中国实体" /> <el-checkbox v-model="onlyChina" label="只看中国实体" />
<el-select v-model="filterField" placeholder="全部领域" style="width: 150px; margin: 0 12px 0 16px"> <el-select
v-model="filterField"
placeholder="全部领域"
style="width: 150px; margin: 0 12px 0 16px"
>
<el-option label="全部领域" value="" /> <el-option label="全部领域" value="" />
<el-option v-for="item in domainOptions" :key="item.value" :label="item.label" :value="item.value" /> <el-option
v-for="item in domainOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
<el-input v-model="searchKeyword" placeholder="搜索实体" <el-input
v-model="searchKeyword"
placeholder="搜索实体"
style="width: 150px; border: 1px solid rgba(170, 173, 177, 0.4); border-radius: 5px" style="width: 150px; border: 1px solid rgba(170, 173, 177, 0.4); border-radius: 5px"
:suffix-icon="Search" /> :suffix-icon="Search"
/>
</div> </div>
</div> </div>
<div class="stats-row"> <div class="stats-row">
...@@ -116,14 +131,21 @@ ...@@ -116,14 +131,21 @@
<div class="stats-info"> <div class="stats-info">
<div class="stat-item"> <div class="stat-item">
<span class="dot red"></span> <span class="dot red"></span>
<span class="text">新增 <span class="num red">{{ addCount }}</span> 家 (50%规则涉及<span class="num red">{{ <span class="text"
addRuleCount >新增 <span class="num red">{{ addCount }}</span> 家 (50%规则涉及<span class="num red">{{
}}</span>家)</span> addRuleCount
}}</span
>家)</span
>
</div> </div>
<div class="stat-item"> <div class="stat-item">
<span class="dot green"></span> <span class="dot green"></span>
<span class="text">移除 <span class="num green">{{ removeCount }}</span> 家 (50%规则涉及<span <span class="text"
class="num green">{{ removeRuleCount }}</span>家)</span> >移除 <span class="num green">{{ removeCount }}</span> 家 (50%规则涉及<span
class="num green"
>{{ removeRuleCount }}</span
>家)</span
>
</div> </div>
</div> </div>
</div> </div>
...@@ -146,8 +168,14 @@ ...@@ -146,8 +168,14 @@
</el-table-column> </el-table-column>
<el-table-column label="涉及领域" width="180" align="center"> <el-table-column label="涉及领域" width="180" align="center">
<template #default="scope"> <template #default="scope">
<span v-for="(item, index) in scope.row.fields" :key="index" class="tag" <span
:style="getTagStyle(item)" style="margin: 0 2px">{{ item }}</span> v-for="(item, index) in scope.row.fields"
:key="index"
class="tag"
:style="getTagStyle(item)"
style="margin: 0 2px"
>{{ item }}</span
>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="location" label="上市地点" width="90" align="center" /> <el-table-column prop="location" label="上市地点" width="90" align="center" />
...@@ -155,8 +183,11 @@ ...@@ -155,8 +183,11 @@
<el-table-column prop="revenue" label="营收(亿元)" width="110" align="center" /> <el-table-column prop="revenue" label="营收(亿元)" width="110" align="center" />
<el-table-column label="50%规则子企业" width="180" align="center"> <el-table-column label="50%规则子企业" width="180" align="center">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.subsidiaryCount" class="subsidiary-link" <span
@click="handleSubsidiaryClick(scope.row)"> v-if="scope.row.subsidiaryCount"
class="subsidiary-link"
@click="handleSubsidiaryClick(scope.row)"
>
{{ scope.row.subsidiaryText }} {{ scope.row.subsidiaryText }}
<span class="blue-text">{{ scope.row.subsidiaryCount }}家 ></span> <span class="blue-text">{{ scope.row.subsidiaryCount }}家 ></span>
</span> </span>
...@@ -174,8 +205,12 @@ ...@@ -174,8 +205,12 @@
</div> </div>
</div> </div>
<!-- 50%规则子企业弹框 --> <!-- 50%规则子企业弹框 -->
<RuleSubsidiaryDialog v-model="subsidiaryDialogVisible" :company-name="currentSubsidiaryCompanyName" <RuleSubsidiaryDialog
:total-count="currentSubsidiaryCount" :data-list="currentSubsidiaryList" /> v-model="subsidiaryDialogVisible"
:company-name="currentSubsidiaryCompanyName"
:total-count="currentSubsidiaryCount"
:data-list="currentSubsidiaryList"
/>
</div> </div>
</template> </template>
...@@ -229,7 +264,7 @@ const handleClickDp = () => { ...@@ -229,7 +264,7 @@ const handleClickDp = () => {
query: { query: {
id: props.data.postOrgId id: props.data.postOrgId
} }
}) });
}; };
// 50%规则子企业弹框逻辑 // 50%规则子企业弹框逻辑
...@@ -288,8 +323,8 @@ const getSanctionOverviewList = async () => { ...@@ -288,8 +323,8 @@ const getSanctionOverviewList = async () => {
subsidiaryText: subsidiaryText:
org.ruleOrgList && org.ruleOrgList.length > 0 org.ruleOrgList && org.ruleOrgList.length > 0
? (org.ruleOrgList[0].orgName.length > 10 ? (org.ruleOrgList[0].orgName.length > 10
? org.ruleOrgList[0].orgName.slice(0, 10) + "..." ? org.ruleOrgList[0].orgName.slice(0, 10) + "..."
: org.ruleOrgList[0].orgName) + "...等" : org.ruleOrgList[0].orgName) + "...等"
: "" : ""
})) }))
})); }));
...@@ -349,10 +384,12 @@ const getUrlParams = () => { ...@@ -349,10 +384,12 @@ const getUrlParams = () => {
// 单次制裁-制裁概况-制裁实体国家分布 // 单次制裁-制裁概况-制裁实体国家分布
const getEntityCountry = async () => { const getEntityCountry = async () => {
try { try {
const res = await getSingleSanctionEntityCountry({ const params = {
sanRecordId: sanRecordId.value, sanRecordId: sanRecordId.value,
sanTypeId: sanTypeId.value || 1 // 实体清单固定1 sanTypeId: sanTypeId.value || 1 // 默认为1
}); };
console.log("params --:", params);
const res = await getSingleSanctionEntityCountry(params);
if (res.code === 200) { if (res.code === 200) {
const rawData = res.data || []; const rawData = res.data || [];
const maxCount = Math.max(...rawData.map(item => item.count || 0), 1); const maxCount = Math.max(...rawData.map(item => item.count || 0), 1);
...@@ -405,8 +442,7 @@ const handleClick = () => { ...@@ -405,8 +442,7 @@ const handleClick = () => {
// type: props.data.type, // type: props.data.type,
personId: props.data.postPersonId personId: props.data.postPersonId
} }
}) });
}; };
// 计算属性处理数据 // 计算属性处理数据
...@@ -526,6 +562,7 @@ const entityDistribution = ref([ ...@@ -526,6 +562,7 @@ const entityDistribution = ref([
const sanTypeId = ref(""); const sanTypeId = ref("");
onMounted(() => { onMounted(() => {
// 获取路由参数中的sanTypeId // 获取路由参数中的sanTypeId
console.log("route.query.sanTypeId --:", route.query.sanTypeId);
sanTypeId.value = route.query.sanTypeId || "1"; sanTypeId.value = route.query.sanTypeId || "1";
// 获取URL参数 // 获取URL参数
getUrlParams(); getUrlParams();
......
...@@ -273,6 +273,7 @@ onMounted(() => { ...@@ -273,6 +273,7 @@ onMounted(() => {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow-y: auto; overflow-y: auto;
padding-bottom: 50px;
.header { .header {
width: 100%; width: 100%;
height: 148px; height: 148px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论