提交 6e82db52 authored 作者: 张伊明's avatar 张伊明

Merge branch 'zym-dev' of http://8.140.26.4:10003/caijian/risk-monitor into zym-dev

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
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -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({
......
......@@ -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";
......@@ -904,12 +904,16 @@ 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
};
});
});
}
} catch (error) {
console.error("获取关键条款error", error);
......
......@@ -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,9 @@ 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();
......
......@@ -72,12 +72,9 @@ const emit = defineEmits<{
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)
onMounted(async () => {
const data = await fetchPredictionAnalysis()
predictionData.value = data
})
// 根据索引和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;
}
};
......
......@@ -106,7 +106,7 @@
<div class="image-change">
<img src="../assets/images/plus.png" alt="" v-if="!selectedIds.has(item.id)"
@click="toggleSelected(item.id, item)" />
<img src="../assets/images/Minus.png" alt="" v-else @click="toggleSelected(item.id, item)" />
<img src="../assets/images/minus.png" alt="" v-else @click="toggleSelected(item.id, item)" />
</div>
</div>
</div>
......@@ -146,7 +146,7 @@
<div class="image-change">
<img src="../assets/images/plus.png" alt="" v-if="!selectedIds.has(item.id)"
@click="toggleSelected(item.id, item)" />
<img src="../assets/images/Minus.png" alt="" v-else @click="toggleSelected(item.id, item)" />
<img src="../assets/images/minus.png" alt="" v-else @click="toggleSelected(item.id, item)" />
</div>
</div>
</div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论