提交 eeee5c93 authored 作者: 张烨's avatar 张烨

Merge remote-tracking branch 'origin/pre' into zy-dev

流水线 #478 已通过 于阶段
in 1 分 40 秒
...@@ -861,6 +861,7 @@ const checkedTime = ref(["全部时间"]); ...@@ -861,6 +861,7 @@ const checkedTime = ref(["全部时间"]);
// 跳转到单条制裁页面,单独打开一个新页面 // 跳转到单条制裁页面,单独打开一个新页面
const handleTitleClick = item => { const handleTitleClick = item => {
if (!item.summary) return;
window.sessionStorage.setItem("curTabName", `${item.year}-${item.dateStr}${item.title}》`); window.sessionStorage.setItem("curTabName", `${item.year}-${item.dateStr}${item.title}》`);
const route = router.resolve({ const route = router.resolve({
path: "/exportControl/singleSanction", path: "/exportControl/singleSanction",
......
...@@ -105,8 +105,12 @@ ...@@ -105,8 +105,12 @@
</div> </div>
</template> </template>
<!-- <div class="echarts" ref="sanctionCountChartRef"></div> --> <!-- <div class="echarts" ref="sanctionCountChartRef"></div> -->
<EChart :option="sanctionCountChartOption" autoresize :style="{ height: '300px', padding: '0 20px' }" <EChart
@chart-click="handleBarChartClick" /> :option="sanctionCountChartOption"
autoresize
:style="{ height: '300px', padding: '0 20px' }"
@chart-click="handleBarChartClick"
/>
<!-- <div class="bottom"> <!-- <div class="bottom">
<div class="ai"> <div class="ai">
<div class="left"> <div class="left">
...@@ -140,14 +144,22 @@ ...@@ -140,14 +144,22 @@
<div class="map-wrapper"> <div class="map-wrapper">
<div class="map-chart" ref="mapChartRef"></div> <div class="map-chart" ref="mapChartRef"></div>
<div class="rank-list"> <div class="rank-list">
<div class="rank-item" v-for="(item, index) in rankData" :key="index" @click="handleClickRankChart(item)"> <div
class="rank-item"
v-for="(item, index) in rankData"
:key="index"
@click="handleClickRankChart(item)"
>
<div class="rank-index" :class="'rank-' + (index + 1)">{{ index + 1 }}</div> <div class="rank-index" :class="'rank-' + (index + 1)">{{ index + 1 }}</div>
<div class="rank-name">{{ item.name }}</div> <div class="rank-name">{{ item.name }}</div>
<div class="rank-bar-bg"> <div class="rank-bar-bg">
<div class="rank-bar-fill" :style="{ <div
width: (item.value / maxRankValue) * 100 + '%', class="rank-bar-fill"
background: getBarColor(index) :style="{
}"></div> width: (item.value / maxRankValue) * 100 + '%',
background: getBarColor(index)
}"
></div>
</div> </div>
<div class="rank-value">{{ item.value }}家</div> <div class="rank-value">{{ item.value }}家</div>
</div> </div>
...@@ -184,8 +196,12 @@ ...@@ -184,8 +196,12 @@
</el-select> </el-select>
</template> </template>
<!-- <div class="echarts" ref="domainChartRef"></div> --> <!-- <div class="echarts" ref="domainChartRef"></div> -->
<EChart :option="domainChartOption" autoresize :style="{ height: '300px', padding: '0 20px' }" <EChart
@chart-click="handlePieChartClick" /> :option="domainChartOption"
autoresize
:style="{ height: '300px', padding: '0 20px' }"
@chart-click="handlePieChartClick"
/>
<!-- <div class="bottom"> <!-- <div class="bottom">
<div class="ai"> <div class="ai">
<div class="left"> <div class="left">
...@@ -217,7 +233,12 @@ ...@@ -217,7 +233,12 @@
</el-select> </el-select>
</template> </template>
<!-- <div class="echarts" ref="typeChartRef"></div> --> <!-- <div class="echarts" ref="typeChartRef"></div> -->
<EChart :option="typeChartOption" autoresize :style="{ height: '300px', padding: '0 20px' }" @chart-click="handlePieChartClick1" /> <EChart
:option="typeChartOption"
autoresize
:style="{ height: '300px', padding: '0 20px' }"
@chart-click="handlePieChartClick1"
/>
<!-- <div class="bottom"> <!-- <div class="bottom">
<div class="ai"> <div class="ai">
<div class="left"> <div class="left">
...@@ -271,7 +292,7 @@ const typeChart = useChartInterpretation(); ...@@ -271,7 +292,7 @@ const typeChart = useChartInterpretation();
const rankChart = useChartInterpretation(); const rankChart = useChartInterpretation();
const route = useRoute(); const route = useRoute();
const router = useRouter() const router = useRouter();
// 实体清单-数据统计-制裁实体类型分布情况 // 实体清单-数据统计-制裁实体类型分布情况
const typeData = ref([]); const typeData = ref([]);
const getTypeCountData = async () => { const getTypeCountData = async () => {
...@@ -638,13 +659,14 @@ const updateMapChart = () => { ...@@ -638,13 +659,14 @@ const updateMapChart = () => {
}; };
mapChartInstance.setOption(option); mapChartInstance.setOption(option);
mapChartInstance.on('click', function (params) { mapChartInstance.on("click", function (params) {
const param = { const param = {
selectedProvince: params.name, selectedProvince: params.name,
selectedDate: regionTime.value === 'all' ? null : JSON.stringify([regionTime.value + '-01-01', regionTime.value + '-12-31']) selectedDate:
} regionTime.value === "all" ? null : JSON.stringify([regionTime.value + "-01-01", regionTime.value + "-12-31"])
};
const route = router.resolve({ const route = router.resolve({
path: '/dataLibrary/dataEntityList', path: "/dataLibrary/dataEntityList",
query: param query: param
}); });
window.open(route.href, "_blank"); window.open(route.href, "_blank");
...@@ -988,10 +1010,10 @@ const updateTypeChart = () => { ...@@ -988,10 +1010,10 @@ const updateTypeChart = () => {
let data = typeData.value.length let data = typeData.value.length
? [...typeData.value] ? [...typeData.value]
: [ : [
{ value: 50, name: "企业" }, { value: 50, name: "企业" },
{ value: 32, name: "高校" }, { value: 32, name: "高校" },
{ value: 32, name: "科研院所" } { value: 32, name: "科研院所" }
]; ];
// 2. 聚合逻辑:保留前5项,其余合并为“其他” // 2. 聚合逻辑:保留前5项,其余合并为“其他”
data.sort((a, b) => b.value - a.value); data.sort((a, b) => b.value - a.value);
...@@ -1114,61 +1136,64 @@ const initTypeChart = () => { ...@@ -1114,61 +1136,64 @@ const initTypeChart = () => {
const sanTypeId = ref(""); const sanTypeId = ref("");
// 点击制裁实体数量变化情况 // 点击制裁实体数量变化情况
const handleBarChartClick = (val) => { const handleBarChartClick = val => {
console.log('value', val); console.log("value", val);
const params = { const params = {
selectedDate: activeTab.value === 'year' ? JSON.stringify([val.name + '-01-01', val.name + '-12-31']) : JSON.stringify([val.name, val.name]) selectedDate:
} activeTab.value === "year"
? JSON.stringify([val.name + "-01-01", val.name + "-12-31"])
: JSON.stringify([val.name, val.name])
};
const route = router.resolve({ const route = router.resolve({
path: '/dataLibrary/dataEntityList', path: "/dataLibrary/dataEntityList",
query: params query: params
}); });
window.open(route.href, "_blank"); window.open(route.href, "_blank");
} };
// 制裁实体各省分布情况 // 制裁实体各省分布情况
const handleClickRankChart = (item) => { const handleClickRankChart = item => {
// console.log('item', item); // console.log('item', item);
const params = { const params = {
selectedProvince: item.name, selectedProvince: item.name,
selectedDate: regionTime.value === 'all' ? null : JSON.stringify([regionTime.value + '-01-01', regionTime.value + '-12-31']) selectedDate:
} regionTime.value === "all" ? null : JSON.stringify([regionTime.value + "-01-01", regionTime.value + "-12-31"])
};
const route = router.resolve({ const route = router.resolve({
path: '/dataLibrary/dataEntityList', path: "/dataLibrary/dataEntityList",
query: params query: params
}); });
window.open(route.href, "_blank"); window.open(route.href, "_blank");
} };
// 制裁实体领域分布情况 // 制裁实体领域分布情况
const handlePieChartClick = (val) => { const handlePieChartClick = val => {
console.log('val', val); console.log("val", val);
const params = { const params = {
domains: val.name, domains: val.name,
selectedDate: domainTime.value === 'all' ? null : JSON.stringify([domainTime.value + '-01-01', domainTime.value + '-12-31']) selectedDate:
} domainTime.value === "all" ? null : JSON.stringify([domainTime.value + "-01-01", domainTime.value + "-12-31"])
};
const route = router.resolve({ const route = router.resolve({
path: '/dataLibrary/dataEntityList', path: "/dataLibrary/dataEntityList",
query: params query: params
}); });
window.open(route.href, "_blank"); window.open(route.href, "_blank");
} };
// 制裁实体类型分布情况 // 制裁实体类型分布情况
const handlePieChartClick1 = (val) => { const handlePieChartClick1 = val => {
console.log('val', val); console.log("val", val);
const params = { const params = {
selectedEntityType: val.name, selectedEntityType: val.name,
selectedDate: typeTime.value === 'all' ? null : JSON.stringify([typeTime.value + '-01-01', typeTime.value + '-12-31']) selectedDate: typeTime.value === "all" ? null : JSON.stringify([typeTime.value + "-01-01", typeTime.value + "-12-31"])
} };
const route = router.resolve({ const route = router.resolve({
path: '/dataLibrary/dataEntityList', path: "/dataLibrary/dataEntityList",
query: params query: params
}); });
window.open(route.href, "_blank"); window.open(route.href, "_blank");
} };
onMounted(() => { onMounted(() => {
sanTypeId.value = route.query.sanTypeId || ""; sanTypeId.value = route.query.sanTypeId || "";
...@@ -1191,11 +1216,6 @@ onMounted(() => { ...@@ -1191,11 +1216,6 @@ onMounted(() => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
* {
margin: 0;
padding: 0;
}
.data-statistics { .data-statistics {
width: 1601px; width: 1601px;
margin: 0 auto; margin: 0 auto;
......
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<el-input v-model="searchKeyword" class="search-input" placeholder="搜索实体" :suffix-icon="Search" /> <el-input v-model="searchKeyword" class="search-input" placeholder="搜索实体" :suffix-icon="Search" />
<div class="filters"> <div class="filters">
<el-checkbox v-model="onlyChina" label="只看中国实体" /> <el-checkbox v-model="onlyChina" label="只看中国实体" />
<el-select v-model="order" placeholder="请选择排序方式" style="width: 160px">
<el-option v-for="item in orderOptions" :value="item.value" :key="item.value" :label="item.name" />
</el-select>
</div> </div>
</div> </div>
<div class="main"> <div class="main">
...@@ -242,6 +245,11 @@ import { useGotoCompanyPages } from "@/router/modules/company"; ...@@ -242,6 +245,11 @@ import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages(); const gotoCompanyPages = useGotoCompanyPages();
const router = useRouter(); const router = useRouter();
const order = ref("asc");
const orderOptions = ref([
{ name: "正序", value: "asc" },
{ name: "倒序", value: "desc" }
]);
// 跳转公司详情页 // 跳转公司详情页
const handleCompClick = item => { const handleCompClick = item => {
console.log("item", item); console.log("item", item);
...@@ -257,7 +265,7 @@ const handleCompClick = item => { ...@@ -257,7 +265,7 @@ const handleCompClick = item => {
}; };
const searchKeyword = ref(""); const searchKeyword = ref("");
const onlyChina = ref(false); const onlyChina = ref(true);
const sanctionTime = ref(""); const sanctionTime = ref("");
const currentPage = ref(1); const currentPage = ref(1);
...@@ -460,7 +468,9 @@ const getExportControlListApi = async () => { ...@@ -460,7 +468,9 @@ const getExportControlListApi = async () => {
endDate, endDate,
keyword: searchKeyword.value || undefined, keyword: searchKeyword.value || undefined,
pageNum: currentPage.value, pageNum: currentPage.value,
pageSize: pageSize.value pageSize: pageSize.value,
sortOrder: order.value
// sortField: "sanctionTime" + order.value
}; };
try { try {
...@@ -484,7 +494,12 @@ const getExportControlListApi = async () => { ...@@ -484,7 +494,12 @@ const getExportControlListApi = async () => {
} }
}; };
watch(onlyChina, () => { // watch(onlyChina, () => {
// currentPage.value = 1;
// getExportControlListApi();
// });
watch([onlyChina, order], () => {
currentPage.value = 1; currentPage.value = 1;
getExportControlListApi(); getExportControlListApi();
}); });
...@@ -550,7 +565,7 @@ watch(customDateRange, () => { ...@@ -550,7 +565,7 @@ watch(customDateRange, () => {
} }
.filters { .filters {
// display: flex; display: flex;
// align-items: center; // align-items: center;
.el-checkbox { .el-checkbox {
...@@ -611,6 +626,7 @@ watch(customDateRange, () => { ...@@ -611,6 +626,7 @@ watch(customDateRange, () => {
margin-top: 8px; margin-top: 8px;
padding-right: 24px; padding-right: 24px;
box-sizing: border-box; box-sizing: border-box;
grid-column: 1 / -1;
:deep(.el-date-editor) { :deep(.el-date-editor) {
width: 100%; width: 100%;
......
...@@ -533,7 +533,8 @@ const getDomainNumData = async () => { ...@@ -533,7 +533,8 @@ const getDomainNumData = async () => {
const processedData = processDomainTrendData(res); const processedData = processDomainTrendData(res);
domainNumChartOption.value = getMultiLineChart(processedData); domainNumChartOption.value = getMultiLineChart(processedData);
console.log("获取实体清单-数据统计-processedData:", processedData); console.log("获取实体清单-数据统计-processedData:", processedData);
console.log("获取实体清单-数据统计-domainNumChartOption:", domainNumChartOption.value); console.log("获取实体清单-数据统计-domainNumChartOption:", res);
domainNumChart.interpret({ type: "折线图", name: "制裁实体领域数量变化情况", data: res });
} }
} catch (error) { } catch (error) {
console.error("获取实体清单-数据统计-制裁实体领域数量变化趋势失败:", error); console.error("获取实体清单-数据统计-制裁实体领域数量变化趋势失败:", error);
......
...@@ -92,7 +92,12 @@ ...@@ -92,7 +92,12 @@
<div class="content-item"> <div class="content-item">
<div class="item-label">依托制裁:</div> <div class="item-label">依托制裁:</div>
<div class="item-desc"> <div class="item-desc">
<div class="item-file" v-for="item in vertexInfo.relySanList" :key="item.id"> <div
class="item-file"
v-for="item in vertexInfo.relySanList"
:key="item.id"
@click="handleClickSan(item)"
>
<div class="item-file-name"> <div class="item-file-name">
{{ item.title }} {{ item.title }}
</div> </div>
...@@ -695,6 +700,18 @@ const formatChangeSummary = (addList, delList) => { ...@@ -695,6 +700,18 @@ const formatChangeSummary = (addList, delList) => {
return parts.length > 0 ? parts.join(",") : "无变动"; return parts.length > 0 ? parts.join(",") : "无变动";
}; };
const handleClickSan = item => {
window.sessionStorage.setItem("curTabName", `${item.postDate}${item.title}》`);
const route = router.resolve({
path: "/finance/singleSanction",
query: {
id: item.id,
sanTypeId: item.sanTypeId
}
});
window.open(route.href, "_blank");
};
const loading = ref(false); const loading = ref(false);
const sanctionList = ref([]); const sanctionList = ref([]);
const currentSanctionId = ref(5); const currentSanctionId = ref(5);
......
...@@ -253,7 +253,8 @@ const handleCompClick = item => { ...@@ -253,7 +253,8 @@ const handleCompClick = item => {
// } // }
// }); // });
// window.open(route.href, "_blank"); // window.open(route.href, "_blank");
gotoCompanyPages(item.id); if (!item.entityId) return;
gotoCompanyPages(item.entityId);
}; };
const searchKeyword = ref(""); const searchKeyword = ref("");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论