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

feta:数据资源库更新

stages:
- build
- deploy
# cache:
# key: "$CI_COMMIT_REF_SLUG"
# paths:
# - .npm/
build_pre:
stage: build
image: node:20-bullseye
tags:
- risk-monitor-frontend
only:
- pre
script:
- node -v
- npm -v
- npm config set cache .npm --global
- npm ci --prefer-offline --no-audit --no-fund
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 hour
deploy_pre:
stage: deploy
image: alpine:3.20
tags:
- risk-monitor-frontend
only:
- pre
dependencies:
- build_pre
script:
- apk add --no-cache rsync
- rsync -av --delete dist/ /nas/kjb_service/zm/pre-project/html/
\ No newline at end of file
差异被折叠。
......@@ -5,6 +5,8 @@ import request from "@/api/request.js";
* @param {Object} params
* @param {string} [params.id] - 行业领域id(全部领域不传)
* @param {string} [params.companyName] - 公司名称(搜索框为空不传)
* @returns {Array<{id: string, name: string, marketChange: number|null, chainCompanyId: string|number}>}
* 说明:右侧详情查询当前建议优先使用 chainCompanyId;若缺失可回退 id,兼容后续接口调整
*/
export function getCompanyList(params) {
return request({
......
......@@ -13,15 +13,15 @@ import '@/assets/fonts/font.css'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
// import AreaTag from '@/components/base/AreaTag/index.vue'
// import LeftBtn from "@/components/base/PageBtn/LeftBtn.vue";
// import RightBtn from "@/components/base/PageBtn/RightBtn.vue";
// import OverviewMainBox from "@/components/base/BoxBackground/OverviewMainBox.vue";
// import OverviewNormalBox from "@/components/base/BoxBackground/OverviewNormalBox.vue";
// import AnalysisBox from '@/components/base/BoxBackground/AnalysisBox.vue'
// import NewsList from '@/components/base/NewsList/index.vue'
// import LeftBtn from "@/components/base/pageBtn/leftBtn.vue";
// import RightBtn from "@/components/base/pageBtn/rightBtn.vue";
// import OverviewMainBox from "@/components/base/boxBackground/overviewMainBox.vue";
// import OverviewNormalBox from "@/components/base/boxBackground/overviewNormalBox.vue";
// import AnalysisBox from '@/components/base/boxBackground/analysisBox.vue'
// import NewsList from '@/components/base/newsList/index.vue'
// import ModuleHeader from '@/components/base/ModuleHeader/index.vue'
// import RiskSignal from "@/components/base/RiskSignal/index.vue";
// import MessageBubble from "@/components/base/MessageBubble/index.vue";
// import RiskSignal from "@/components/base/riskSignal/index.vue";
// import MessageBubble from "@/components/base/messageBubble/index.vue";
// import SourceTabLsit from '@/components/base/SourceTabList/index.vue'
// import ActionButton from "@/components/base/ActionButton/index.vue"
......
//企业主页
import { useGotoPage } from "../common.js";
const companyPages = () => import('@/views/companyPages/index.vue')
const companyPages2 = () => import('@/views/companyPages2/index.vue')
......@@ -28,4 +29,9 @@ const companyPagesRoutes = [
]
export function useGotoCompanyPages() {
const gotoPage = useGotoPage();
return (id, isNewTabs = true) => gotoPage("/companyPages/" + id, {}, isNewTabs)
}
export default companyPagesRoutes
\ No newline at end of file
......@@ -27,8 +27,8 @@
<pre>
{{
`
import LeftBtn from '@/components/base/PageBtn/LeftBtn.vue'
import RightBtn from '@/components/base/PageBtn/RightBtn.vue'
import LeftBtn from '@/components/base/pageBtn/leftBtn.vue'
import RightBtn from '@/components/base/pageBtn/rightBtn.vue'
<LeftBtn />
<RightBtn />
......
......@@ -662,10 +662,10 @@ const handleGetBillsPerson = async () => {
sortFun: !memberSortFun.value
};
if (footerSelect1.value !== "全部委员会") params.committeeId = footerSelect1.value;
if (!activeYyList.value.includes("全部议院")) params.congressIds = activeYyList.value;
if (!activeDpList.value.includes("全部党派")) params.partyIds = activeDpList.value;
if (!activeAreaList.value.includes("全部领域")) params.domainIds = activeAreaList.value;
if (footerSelect1.value !== "全部委员会") params.committeeIds = footerSelect1.value;
if (!activeYyList.value.includes("全部议院")) params.congressIds = activeYyList.value.join(",");
if (!activeDpList.value.includes("全部党派")) params.partyIds = activeDpList.value.join(",");
if (!activeAreaList.value.includes("全部领域")) params.domainIds = activeAreaList.value.join(",");
const formatDateYm = dateStr => {
if (!dateStr) return "";
......
......@@ -13,7 +13,7 @@
<div class="committee-cards-filter">
<span class="committee-cards-desc">近期美国国会各委员会涉华提案数量汇总</span>
<el-radio-group v-model="committeeTimeRange" class="committee-time-switch" size="default">
<el-radio-button v-for="item in committeeTimeOptions" :key="item.value" :label="item.value">
<el-radio-button v-for="item in committeeTimeOptions" :key="item.value" :value="item.value">
<span class="committee-time-switch-inner">
<el-icon v-if="committeeTimeRange === item.value" class="committee-time-switch-icon">
<Calendar />
......@@ -146,7 +146,7 @@
<div v-else id="box5Chart" class="overview-chart"></div>
</div>
<div class="overview-tip-row">
<TipTab class="overview-tip" :text="'图表说明:xxxxx,数据来源:美国国会官网'" />
<TipTab class="overview-tip" :text="'涉华科技法案数量及通过率变化趋势,数据来源:美国国会官网'" />
<AiButton class="overview-tip-action" @mouseenter="handleShowAiPane('box5')" />
</div>
<div v-if="aiPaneVisible.box5" class="overview-ai-pane" @mouseleave="handleHideAiPane('box5')">
......@@ -171,7 +171,7 @@
<div v-else id="box9Chart" class="overview-chart"></div>
</div>
<div class="overview-tip-row">
<TipTab class="overview-tip" :text="'图表说明:xxxxx,数据来源:美国国会官网'" />
<TipTab class="overview-tip" :text="'涉华科技法案领域分布情况,数据来源:美国国会官网'" />
<AiButton class="overview-tip-action" @mouseenter="handleShowAiPane('box6')" />
</div>
<div v-if="aiPaneVisible.box6" class="overview-ai-pane" @mouseleave="handleHideAiPane('box6')">
......@@ -193,7 +193,7 @@
<div v-else id="box7Chart" class="overview-chart"></div>
</div>
<div class="overview-tip-row">
<TipTab class="overview-tip" :text="'图表说明:xxxxx,数据来源:美国国会官网'" />
<TipTab class="overview-tip" :text="'提出涉华科技法案委员会分布情况,数据来源:美国国会官网'" />
<AiButton class="overview-tip-action" @mouseenter="handleShowAiPane('box7')" />
</div>
<div v-if="aiPaneVisible.box7" class="overview-ai-pane" @mouseleave="handleHideAiPane('box7')">
......@@ -216,7 +216,7 @@
</template>
</div>
<div class="overview-tip-row">
<TipTab class="overview-tip" :text="'图表说明:xxxxx,数据来源:美国国会官网'" />
<TipTab class="overview-tip" :text="'涉华科技法案立法进展分布情况,数据来源:美国国会官网'" />
<AiButton class="overview-tip-action" @mouseenter="handleShowAiPane('box8')" />
</div>
<div v-if="aiPaneVisible.box8" class="overview-ai-pane" @mouseleave="handleHideAiPane('box8')">
......@@ -231,7 +231,7 @@
<WordCloundChart v-else class="overview-chart" width="100%" height="100%" :data="wordCloudData" />
</div>
<div class="overview-tip-row">
<TipTab class="overview-tip" :text="'图表说明:xxxxx,数据来源:美国国会官网'" />
<TipTab class="overview-tip" :text="'涉华科技法案关键条款词云,数据来源:美国国会官网'" />
<AiButton class="overview-tip-action" @mouseenter="handleShowAiPane('box9')" />
</div>
<div v-if="aiPaneVisible.box9" class="overview-ai-pane" @mouseleave="handleHideAiPane('box9')">
......@@ -271,7 +271,7 @@ import {
import { getPersonSummaryInfo } from "@/api/common/index";
import { getChartAnalysis } from "@/api/aiAnalysis/index";
import DivideHeader from "@/components/DivideHeader.vue";
import overviewMainBox from "@/components/base/BoxBackground/OverviewMainBox.vue";
import overviewMainBox from "@/components/base/boxBackground/overviewMainBox.vue";
import OverviewCard from "./OverviewCard.vue";
import ResourceLibrarySection from "./ResourceLibrarySection.vue";
import { useContainerScroll } from "@/hooks/useScrollShow";
......@@ -917,7 +917,11 @@ const handleGetKeyTK = async () => {
const res = await getBillOverviewKeyTK();
console.log("关键条款", res);
if (res.code === 200 && res.data) {
wordCloudData.value = res.data.map(item => {
wordCloudData.value = res.data
.slice()
.sort((a, b) => (b.count ?? 0) - (a.count ?? 0))
.slice(0, 20)
.map(item => {
return {
name: item.clause,
value: item.count
......
......@@ -72,12 +72,12 @@ const mainHeaderBtnList = ref([
name: "影响分析",
path: "/billLayout/influence"
},
{
icon: icon4,
activeIcon: icon4Active,
name: "相关情况",
path: "/billLayout/relevantCircumstance"
}
// {
// icon: icon4,
// activeIcon: icon4Active,
// name: "相关情况",
// path: "/billLayout/relevantCircumstance"
// }
]);
const activeTitle = ref("法案概况");
......
......@@ -16,6 +16,12 @@ import { onMounted, ref, computed, watch } from "vue";
import { useRoute } from "vue-router";
import router from '@/router'
import SiderTabs from "@/components/base/SiderTabs/index.vue";
//分支pre自动部署测试:
//第一次测试
//第二次测试
//第三次测试
//第四次测试
//第五次测试
const route = useRoute();
......
......@@ -73,11 +73,8 @@ const predictionData = ref<PredictionAnalysis | null>(null)
// 获取预测分析数据
onMounted(async () => {
console.log('[v0] Step3 mounted, fetching data...')
const data = await fetchPredictionAnalysis()
console.log('[v0] Data fetched:', data)
predictionData.value = data
console.log('[v0] predictionData set:', predictionData.value)
})
// 根据索引和progressLevel返回进度条格子的类名
......
......@@ -78,7 +78,7 @@ onMounted(async () => {
const [stepsData, predictionData] = await Promise.all([
fetchSteps(),
getProgressPrediction(billId.value).catch(err => {
console.error('[v0] 获取预测数据失败:', err)
console.error(' 获取预测数据失败:', err)
return null
})
])
......
......@@ -160,7 +160,8 @@ const curCompanyId = ref("");
const handleClickCompany = (val, index) => {
companyActiveIndex.value = (currentPage.value - 1) * pageSize.value + index;
if (val) {
curCompanyId.value = val.id;
// 右侧鱼骨图查询:当前优先使用 chainCompanyId,后续可平滑切换到 id
curCompanyId.value = val.chainCompanyId || val.id;
// handleGetCompanyDetail();
companyInfo.value.name = val.name;
companyInfo.value.status = val.status || companyInfo.value.status;
......@@ -308,10 +309,10 @@ const headerChartData = (row) => {
switch (contentType.value) {
case 1:
onDecreeRelatedChain(row.id)
onDecreeRelatedChain(row.chainCompanyId)
break;
case 2:
onDecreeRelatedEntitie(row.id)
onDecreeRelatedEntitie(row.chainCompanyId)
break;
}
};
......
......@@ -114,7 +114,7 @@
</template>
<script setup>
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import { ref, onMounted, computed } from "vue";
import router from "@/router";
import { getCoopRestrictionTrends, getCoopRestrictionSignals } from "@/api/coopRestriction/coopRestriction.js";
......
......@@ -5,7 +5,7 @@
<script setup>
import { ref, onMounted, nextTick } from 'vue'
import setChart from '@/utils/setChart';
import getBarChart from './barchart';
import getBarChart from './barChart.js';
const props = defineProps({
barChartData: {
......
......@@ -91,6 +91,8 @@ import Fishbone from "./fishbone.vue";
import { getHorizontalBarChart2 } from "../../utils/charts";
import { getDomainDistribution, getChainEntities, getChainInfoByDomainId, getCnEntityOnChain } from "@/api/exportControl";
import { useRoute, useRouter } from "vue-router";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const route = useRoute();
const router = useRouter();
const buttonList = ref([]);
......@@ -155,13 +157,14 @@ const listData = ref([
const horizontalBarOptions = shallowRef({});
const handleEttClick = item => {
const route = router.resolve({
name: "companyPages",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
gotoCompanyPages(item.id);
};
// 处理点击事件
const handleChainClick = async chainId => {};
......
......@@ -95,6 +95,8 @@ import Hint from "./hint.vue";
import { getEntitiesChangeCount, getEntitiesGrowthTrend, getEntitiesUpdateCount, getKeyEntityList } from "@/api/exportControl";
import _ from "lodash";
import { useRoute, useRouter } from "vue-router";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const route = useRoute();
const router = useRouter();
const line1Option = shallowRef({});
......@@ -341,13 +343,14 @@ const handleDomainChange = async domain => {
const handleOrgClick = item => {
console.log(item);
const route = router.resolve({
name: "companyPages",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
gotoCompanyPages(item.id);
};
</script>
......
......@@ -74,6 +74,8 @@ import _ from "lodash";
import Hint from "./hint.vue";
import { getEntityFinancing, getEntityMarketValue, getKeyListedEntityList, getSanStrength } from "@/api/exportControl";
import { useRoute, useRouter } from "vue-router";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const route = useRoute();
const router = useRouter();
const value3 = ref("");
......@@ -304,13 +306,14 @@ watch(
const handleOrgClick = item => {
console.log(item);
const route = router.resolve({
name: "companyPages",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
gotoCompanyPages(item.id);
};
</script>
......
......@@ -200,6 +200,8 @@ import {
import _ from "lodash";
import { useRoute, useRouter } from "vue-router";
import { formatAnyDateToChinese } from "../../utils";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const route = useRoute();
const router = useRouter();
const organizationInfo = shallowRef({});
......@@ -406,13 +408,14 @@ const panel5TypeMap = {
const handleOrgClick = item => {
console.log(item);
if (item.entityType != 2) return;
const route = router.resolve({
name: "companyPages",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
gotoCompanyPages(item.id);
};
// 处理"查看更多"点击事件
......
......@@ -65,7 +65,7 @@
:subtitle="item.nameAbbr"
:description="item.description"
:quantity="item.postCount"
unit=""
unit=""
:color="infoListColor[index]"
@click="handleToEntityListNoId(item)"
/>
......@@ -703,7 +703,7 @@
<script setup>
//这是一个备注
import NewsList from "@/components/base/newsList/index.vue";
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import { onMounted, ref, computed, reactive, shallowRef, watch, nextTick } from "vue";
import { useContainerScroll } from "@/hooks/useScrollShow";
const homeMainRef = ref(null);
......@@ -715,6 +715,10 @@ import { ElMessage, ElMessageBox } from "element-plus";
import { DArrowRight, Warning, Search } from "@element-plus/icons-vue";
import EChart from "@/components/Chart/index.vue";
import { TAGTYPE } from "@/public/constant";
import { useGotoCompanyPages } from "@/router/modules/company";
import { useGotoNewsDetail } from "@/router/modules/news";
const gotoCompanyPages = useGotoCompanyPages();
const gotoNewsDetail = useGotoNewsDetail();
import { useRouter } from "vue-router";
......@@ -868,14 +872,15 @@ const handleCompClick = item => {
// console.log("item", item);
// if (item.entityType != 2) return;
window.sessionStorage.setItem("curTabName", item.name);
const route = router.resolve({
name: "companyPages",
params: {
id: item.id,
sanTypeId: item.sanTypeId
}
});
window.open(route.href, "_blank");
gotoCompanyPages(item.entityId);
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.id,
// sanTypeId: item.sanTypeId
// }
// });
// window.open(route.href, "_blank");
};
const tagsType = ["primary", "success", "warning", "danger"];
......@@ -1075,14 +1080,15 @@ const processYearDomainCountData = yearDomainCountData => {
const handleEntityClick = item => {
console.log("item", item);
window.sessionStorage.setItem("curTabName", item.name || item.entityNameZh);
const route = router.resolve({
name: "companyPages",
params: {
// startTime: item.startTime,
id: item.entityId
}
});
window.open(route.href, "_blank");
gotoCompanyPages(item.entityId);
// const route = router.resolve({
// name: "companyPages",
// params: {
// // startTime: item.startTime,
// id: item.entityId
// }
// });
// window.open(route.href, "_blank");
};
const carouselRef = ref(null);
......@@ -1717,7 +1723,8 @@ const handleSanc = item => {
const route = router.resolve({
path: "/exportControl/singleSanction",
query: {
id: item.id
id: item.id,
sanTypeId: activeResourceTabItem.value.id
}
});
window.open(route.href, "_blank");
......@@ -1737,14 +1744,15 @@ const handleToMoreNews = () => {
const handleNewsInfoClick = item => {
console.log("点击了社交媒体消息的更多信息:", item);
const route = router.resolve({
path: "/newsAnalysis",
query: {
newsId: item.newsId
}
});
window.open(route.href, "_blank");
// 应该跳转至哪儿???
// const route = router.resolve({
// path: "/newsAnalysis",
// query: {
// newsId: item.newsId
// }
// });
// window.open(route.href, "_blank");
gotoNewsDetail(item.newsId);
};
// 切换当前出口管制政策
......@@ -2324,7 +2332,8 @@ const handleMediaClick = item => {
overflow-y: auto;
.home-top-bg {
background: url("./assets/images/background.png"),
background:
url("./assets/images/background.png"),
linear-gradient(180deg, rgba(229, 241, 254, 1) 0%, rgba(246, 251, 255, 0) 30%);
background-size: 100% 100%;
position: absolute;
......
......@@ -82,7 +82,8 @@ import { ref, computed, watch } from "vue";
import router from "@/router";
import { Close } from "@element-plus/icons-vue";
import defaultIcon from "@/assets/icons/default-icon1.png";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const props = defineProps({
modelValue: {
type: Boolean,
......@@ -119,9 +120,9 @@ const tableData = computed(() => {
...item,
name: item.orgName,
domains: item.techDomains || [],
equityRatio: item.equityRatio ? (item.equityRatio * 100).toFixed(2) + '%' : '--',
location: '--',
revenue: item.revenue || '--'
equityRatio: item.equityRatio ? (item.equityRatio * 100).toFixed(2) + "%" : "--",
location: "--",
revenue: item.revenue || "--"
}));
});
......@@ -154,16 +155,16 @@ const getTagStyle = tag => {
// 跳转公司详情页
const handleCompClick = item => {
console.log("item", item);
window.sessionStorage.setItem('curTabName', item.entityNameZh || item.entityName)
const route = router.resolve({
name: "companyPages",
params: {
id: item.id
}
});
window.open(route.href, "_blank");
window.sessionStorage.setItem("curTabName", item.entityNameZh || item.entityName);
gotoCompanyPages(item.id);
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.id
// }
// });
// window.open(route.href, "_blank");
};
</script>
<style lang="scss" scoped>
......
<template>
<div>
<div class="list-page">
<div class="search-box">
<el-input v-model="searchKeyword" class="search-input" placeholder="搜索实体" :suffix-icon="Search" />
......@@ -92,8 +93,8 @@
<CommonPrompt :content="row.entityNameZh || row.entityName" style="flex: 1; overflow: hidden" />
</div>
</template>
</el-table-column>
<el-table-column label="涉及领域" min-width="150">
</el-table-column>
<el-table-column label="涉及领域" min-width="150">
<template #default="{ row }">
<div class="domain-cell">
<el-tag v-for="tag in row.techDomains" :key="tag" class="domain-tag" effect="plain"
......@@ -102,9 +103,9 @@
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="startTime" label="制裁时间" width="140" show-overflow-tooltip align="center" />
<el-table-column label="50%规则子企业" min-width="280" show-overflow-tooltip align="right">
</el-table-column>
<el-table-column prop="startTime" label="制裁时间" width="140" show-overflow-tooltip align="center" />
<el-table-column label="50%规则子企业" min-width="280" show-overflow-tooltip align="right">
<template #default="{ row }">
<div class="rule-cell" v-if="row.ruleOrgCount > 0">
<div class="rule-text" :title="row.ruleOrgList?.[0]?.orgName || ''">
......@@ -114,14 +115,14 @@
row.ruleOrgCount }}家 ></el-link>
</div>
</template>
</el-table-column>
</el-table>
</div>
<div class="tight-footer">
</el-table-column>
</el-table>
</div>
<div class="tight-footer">
<div class="total-text">共 {{ total }} 项</div>
<el-pagination :current-page="currentPage" v-model:page-size="pageSize" :total="total" layout="prev, pager, next"
prev-text="<" next-text=">" @current-change="handleCurrentChange" />
</div> -->
</div> -->
<AnalysisBox title="实体清单" :showAllBtn="false">
<template #header-btn>
<div class="stats">
......@@ -172,14 +173,24 @@
</div>
</template>
</el-table-column>
<el-table-column prop="startTime" label="制裁时间" width="140" show-overflow-tooltip align="center" />
<el-table-column
prop="startTime"
label="制裁时间"
width="140"
show-overflow-tooltip
align="center"
/>
<el-table-column label="50%规则子企业" min-width="280" show-overflow-tooltip align="right">
<template #default="{ row }">
<div class="rule-cell" v-if="row.ruleOrgCount > 0">
<div class="rule-text" :title="row.ruleOrgList?.[0]?.orgName || ''">
{{ row.ruleOrgList?.[0]?.orgName || "" }}...等
</div>
<el-link class="rule-link" type="primary" :underline="false" @click="handleRuleClick(row)"
<el-link
class="rule-link"
type="primary"
:underline="false"
@click="handleRuleClick(row)"
>{{ row.ruleOrgCount }}家 ></el-link
>
</div>
......@@ -209,6 +220,7 @@
:total-count="currentRuleCount"
:data-list="currentRuleList"
/>
</div>
</template>
<script setup>
......@@ -219,20 +231,22 @@ import defaultIcon from "../../../../../assets/icons/default-avatar.png";
import RuleSubsidiaryDialog from "./RuleSubsidiaryDialog.vue";
import { getExportControlList, get50PercentEntityCount } from "@/api/exportControlV2.0.js";
import CommonPrompt from "@/views/exportControl/commonPrompt/index.vue";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const router = useRouter();
// 跳转公司详情页
const handleCompClick = item => {
console.log("item", item);
window.sessionStorage.setItem("curTabName", item.entityNameZh || item.entityName);
const route = router.resolve({
name: "companyPages",
params: {
id: item.entityId
}
});
window.open(route.href, "_blank");
// const route = router.resolve({
// name: "companyPages",
// params: {
// id: item.entityId
// }
// });
// window.open(route.href, "_blank");
gotoCompanyPages(item.entityId);
};
const searchKeyword = ref("");
......@@ -516,6 +530,8 @@ watch(customDateRange, () => {
:deep(.el-input__wrapper) {
padding: 0 11px;
border: 1px solid rgba(170, 173, 177, 1);
background-color: #fff;
}
:deep(.el-input__inner) {
......
......@@ -6,7 +6,7 @@
:key="index"
class="tab-item"
:class="{ active: index === activeIndex }"
@click="activeIndex = index"
@click="handleClickTab(index)"
>
{{ item }}
<span v-if="index === activeIndex" class="arrow"></span>
......@@ -14,10 +14,10 @@
</div>
<div class="content-box">
<introductionPage
v-show="activeIndex === 1"
v-show="activeIndex == 1"
@update-entity-info="data => $emit('update-entity-info', data)"
></introductionPage>
<listPage v-show="activeIndex === 0"></listPage>
<listPage v-show="activeIndex == 0"></listPage>
</div>
</div>
</template>
......@@ -31,6 +31,11 @@ const emit = defineEmits(["update-entity-info"]);
const activeTab = ref(["实体清单列表", "实体清单简介"]);
const activeIndex = ref(0);
const handleClickTab = index => {
console.log(index);
activeIndex.value = index;
};
</script>
<style scoped lang="scss">
......
......@@ -38,10 +38,10 @@
import { ref, onMounted, onUnmounted, watch, nextTick } from "vue";
import G6 from "@antv/g6";
import { Close } from "@element-plus/icons-vue";
import echartsIcon01 from "../assets/echartsicon01.png";
import echartsIcon02 from "../assets/echartsicon02.png";
import echartsIcon03 from "../assets/echartsicon03.png";
import defaultIcon from "../assets/echartsicon03.png";
import echartsIcon01 from "../assets/echartsIcon01.png";
import echartsIcon02 from "../assets/echartsIcon02.png";
import echartsIcon03 from "../assets/echartsIcon03.png";
import defaultIcon from "../assets/echartsIcon03.png";
import { getSingleSanctionEntityInfo } from "@/api/exportControlV2.0";
......
......@@ -50,10 +50,10 @@
import { ref, onMounted, onUnmounted, watch, nextTick } from "vue";
import G6 from "@antv/g6";
import { Close } from "@element-plus/icons-vue";
import echartsIcon01 from "../assets/echartsicon01.png";
import echartsIcon02 from "../assets/echartsicon02.png";
import echartsIcon03 from "../assets/echartsicon03.png";
import defaultIcon from "../assets/echartsicon03.png";
import echartsIcon01 from "../assets/echartsIcon01.png";
import echartsIcon02 from "../assets/echartsIcon02.png";
import echartsIcon03 from "../assets/echartsIcon03.png";
import defaultIcon from "../assets/echartsIcon03.png";
import { getSingleSanctionEntityInfo } from "@/api/exportControlV2.0";
......
......@@ -133,7 +133,7 @@ import {
getSingleSanctionEntityEquity
} from "@/api/exportControlV2.0";
import RelationGraph from "./components/RelationGraph.vue";
import AnalysisBox from "@/components/base/BoxBackground/AnalysisBox.vue";
import AnalysisBox from "@/components/base/boxBackground/analysisBox.vue";
const sanRecordId = ref("");
const activeTab = ref(["实体穿透分析"]);
......
......@@ -38,9 +38,7 @@
<div class="info-row">
<div class="label">制裁领域:</div>
<div class="value tags">
<span class="tag" v-for="(domain, index) in formattedData.domains" :key="index">{{
domain
}}</span>
<AreaTag v-for="(domain, index) in formattedData.domains" :key="index" :tagName="domain" />
</div>
</div>
</div>
......@@ -116,7 +114,7 @@
<el-input
v-model="searchKeyword"
placeholder="搜索实体"
style="width: 150px"
style="width: 150px; border: 1px solid rgba(170, 173, 177, 0.4); border-radius: 5px"
:suffix-icon="Search"
/>
</div>
......@@ -219,6 +217,7 @@
import { ref, defineProps, computed, onMounted, watch } from "vue";
import { useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import AreaTag from "@/components/base/AreaTag/index.vue";
import { DArrowRight, Search } from "@element-plus/icons-vue";
import { debounce } from "lodash";
import title from "../../assets/title.png";
......@@ -232,6 +231,9 @@ import {
import RuleSubsidiaryDialog from "../../../v2.0EntityList/components/sanctionsOverview/components/listPage/RuleSubsidiaryDialog.vue";
import { useRoute } from "vue-router";
import { useGotoCompanyPages } from "@/router/modules/company";
const gotoCompanyPages = useGotoCompanyPages();
const route = useRoute();
// 跳转公司详情页
const handleCompClick = item => {
......@@ -240,8 +242,9 @@ const handleCompClick = item => {
return;
}
window.sessionStorage.setItem("curTabName", item.name);
const curRoute = router.resolve({ name: "companyPages", params: { id: item.entityId } });
window.open(curRoute.href, "_blank");
gotoCompanyPages(item.entityId);
// const curRoute = router.resolve({ name: "companyPages", params: { id: item.entityId } });
// window.open(curRoute.href, "_blank");
};
// 跳转发布机构详情页
......
......@@ -459,7 +459,7 @@
</template>
<script setup>
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import { onMounted, ref, computed } from "vue";
import scrollToTop from "@/utils/scrollToTop";
import setChart from "@/utils/setChart";
......
......@@ -29,8 +29,8 @@
<script setup lang="ts">
import { ref, computed } from 'vue'
import LeftBtn from '@/components/base/PageBtn/LeftBtn.vue'
import RightBtn from '@/components/base/PageBtn/RightBtn.vue'
import LeftBtn from '@/components/base/pageBtn/leftBtn.vue'
import RightBtn from '@/components/base/pageBtn/rightBtn.vue'
interface CaseItem {
date: string
......
......@@ -44,8 +44,8 @@
<script setup lang="ts">
import { ref, computed } from 'vue'
import AnalysisBox from '@/components/base/boxBackground/analysisBox.vue'
import LeftBtn from '@/components/base/PageBtn/LeftBtn.vue'
import RightBtn from '@/components/base/PageBtn/RightBtn.vue'
import LeftBtn from '@/components/base/pageBtn/leftBtn.vue'
import RightBtn from '@/components/base/pageBtn/rightBtn.vue'
import AreaTag from '@/components/base/AreaTag/index.vue'
// 重点实验室数据
......
......@@ -392,12 +392,12 @@
<script setup>
import { onMounted, ref, nextTick } from "vue";
import LeftBtn from "@/components/base/PageBtn/LeftBtn.vue";
import RightBtn from "@/components/base/PageBtn/RightBtn.vue";
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import LeftBtn from "@/components/base/pageBtn/leftBtn.vue";
import RightBtn from "@/components/base/pageBtn/rightBtn.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import TipTab from "@/components/base/TipTab/index.vue"
import MessageBubble from "@/components/base/MessageBubble/index.vue"
import NewsList from "@/components/base/NewsList/index.vue";
import MessageBubble from "@/components/base/messageBubble/index.vue"
import NewsList from "@/components/base/newsList/index.vue";
import DivideHeader from "@/components/DivideHeader.vue";
import setChart from "@/utils/setChart";
......
......@@ -213,7 +213,7 @@ import { useRoute } from "vue-router";
import { Search, ArrowDown, ArrowUp } from "@element-plus/icons-vue";
import { getSearchAllArea, getSearchAllYear, getSurveyList, getSearchAllCountry } from "@/api/marketAccessRestrictions";
import AnalysisBox from "@/components/base/BoxBackground/AnalysisBox.vue"
import AnalysisBox from "@/components/base/boxBackground/analysisBox.vue"
const route = useRoute();
......
......@@ -127,7 +127,7 @@
import { ref, onMounted, nextTick } from "vue";
import setChart from "@/utils/setChart";
import TipTab from "@/components/base/TipTab/index.vue"
import AnalysisBox from "@/components/base/BoxBackground/AnalysisBox.vue"
import AnalysisBox from "@/components/base/boxBackground/analysisBox.vue"
import { getStatCount, getStatcnOrgCount, getSearchResult, getStatArea, getStatNum } from "@/api/marketAccessRestrictions";
......
......@@ -75,7 +75,7 @@
</template>
<script setup>
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import { ref, onBeforeMount, computed } from "vue";
import router from "@/router";
import { getLatestUpdates, getRiskSignal } from '@/api/ruleRestriction/index.js'
......
......@@ -89,7 +89,7 @@
</template>
<script setup>
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import { ref, onMounted } from "vue";
import {
getNewProject, getRiskSignal
......
......@@ -317,7 +317,7 @@
</template>
<script setup>
import RiskSignal from "@/components/base/RiskSignal/index.vue";
import RiskSignal from "@/components/base/riskSignal/index.vue";
import { onMounted, ref } from "vue";
import { useRouter } from "vue-router";
import scrollToTop from "@/utils/scrollToTop";
......
......@@ -107,7 +107,7 @@
<div class="image-change">
<img src="../assets/images/plus.png" alt="" v-if="!selectedIds.has(item.id)"
@click.stop="toggleSelected(item.id, item)" />
<img src="../assets/images/Minus.png" alt="" v-else @click.stop="toggleSelected(item.id, item)" />
<img src="../assets/images/minus.png" alt="" v-else @click.stop="toggleSelected(item.id, item)" />
</div>
</div>
</div>
......@@ -148,7 +148,7 @@
<div class="image-change">
<img src="../assets/images/plus.png" alt="" v-if="!selectedIds.has(item.id)"
@click.stop="toggleSelected(item.id, item)" />
<img src="../assets/images/Minus.png" alt="" v-else @click.stop="toggleSelected(item.id, item)" />
<img src="../assets/images/minus.png" alt="" v-else @click.stop="toggleSelected(item.id, item)" />
</div>
</div>
</div>
......
......@@ -382,7 +382,7 @@
<script setup>
import RiskSignal from "@/components/base/riskSignal/index.vue";
import NewsList from "@/components/base/newsList/index.vue";
import MessageBubble from "@/components/base/MessageBubble/index.vue"
import MessageBubble from "@/components/base/messageBubble/index.vue"
import { onMounted, ref, computed, reactive, nextTick } from "vue";
import scrollToTop from "@/utils/scrollToTop";
import router from "@/router";
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论