提交 1c9f29b9 authored 作者: 李智林's avatar 李智林

“update”

...@@ -83,3 +83,12 @@ export function getEnterprisPatentField(params) { ...@@ -83,3 +83,12 @@ export function getEnterprisPatentField(params) {
} }
//被制裁情况:事件
export function getSanctionList(params) {
return request({
method: 'GET',
url: `/api/enterprisePage/getSanctionList/${params}`,
})
}
...@@ -22,7 +22,7 @@ const router = createRouter({ ...@@ -22,7 +22,7 @@ const router = createRouter({
// 路由守卫 - 设置页面标题 // 路由守卫 - 设置页面标题
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
if (to.meta.title) { if (to.meta.title) {
// document.title = `${to.meta.title} - Think Tank` document.title = to.meta.title
} }
next(); next();
}); });
......
...@@ -4,7 +4,7 @@ import companyPages from "@/views/companyPages/index.vue"; ...@@ -4,7 +4,7 @@ import companyPages from "@/views/companyPages/index.vue";
const companyPagesRoutes = [ const companyPagesRoutes = [
// 智库系统的主要路由 // 智库系统的主要路由
{ {
path: "/companyPages:id", path: "/companyPages/:id",
name: "companyPages", name: "companyPages",
component: companyPages, component: companyPages,
meta: { meta: {
......
...@@ -192,17 +192,17 @@ ...@@ -192,17 +192,17 @@
</div> </div>
</div> </div>
<div class="box1-main-right"> <div class="box1-main-right">
<img src="./assets/images/box1-main-right-img.png" alt="" /> <img :src="bill.news?.newsImage" alt="" />
<div class="inner-box"> <div class="inner-box">
<div class="inner-box-header"> <div class="inner-box-header">
<div class="inner-box-title"> <div class="inner-box-title">
{{ "大而美法案涉险通过参议院表决,众议院将继续..." }} {{ bill.news?.newsTitle }}
</div> </div>
<div class="inner-box-time">{{ "1小时前" }}</div> <div class="inner-box-time">{{ bill.news?.newsTime.replace('T', ' ') }}</div>
</div> </div>
<div class="inner-box-content"> <div class="inner-box-content">
{{ {{
"三名美国共和党众议员(2025年7月21日)致函几家美国科技巨头公司的负责人,询问他们是否已经采取了充分的安全保障措施以有效解..." bill.news?.newsContent
}} }}
</div> </div>
</div> </div>
...@@ -841,11 +841,7 @@ const formatMessageTime = timeStr => { ...@@ -841,11 +841,7 @@ const formatMessageTime = timeStr => {
// 跳转人物主页 // 跳转人物主页
const handleClcikToCharacter = async (id) => { const handleClcikToCharacter = async (id) => {
window.sessionStorage.setItem("memberId", id);
const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList")); const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList"));
console.log("personTypeList", personTypeList);
let type = 0; let type = 0;
let personTypeName = ""; let personTypeName = "";
......
...@@ -30,9 +30,12 @@ ...@@ -30,9 +30,12 @@
</template> </template>
<script setup> <script setup>
import { ref, computed } from 'vue'; import { ref, onMounted } from 'vue';
import Timeline from './Timeline.vue'; import Timeline from './Timeline.vue';
import process from './process.vue'; import process from './process.vue';
import { useRouter } from "vue-router";
import { getSanctionList } from "@/api/companyPages/index.js";
const router = useRouter();
const sanctionTimeData = ref([ const sanctionTimeData = ref([
{ {
"title": "初步限制与“实体清单”", "title": "初步限制与“实体清单”",
...@@ -60,6 +63,24 @@ const sanctionTimeData = ref([ ...@@ -60,6 +63,24 @@ const sanctionTimeData = ref([
"time": "2025年10月" "time": "2025年10月"
} }
]) ])
// 获取制裁事件
const handleGetSanctionList = async () => {
try {
const res = await getSanctionList(router.currentRoute._value.params.id);
console.log("获取制裁事件", res);
if (res.code === 200 && res.data) {
sanctionTimeData.value = res.data
}
} catch (error) {
console.error("获取制裁事件error", error);
}
};
onMounted(async () => {
handleGetSanctionList()
});
</script> </script>
<style scoped> <style scoped>
......
...@@ -15,13 +15,13 @@ ...@@ -15,13 +15,13 @@
<div class="node" :style="leftOffset(i)"> <div class="node" :style="leftOffset(i)">
<!-- 圆环 --> <!-- 圆环 -->
<div class="dot" :class="linePos(i, flip)" :style="{ <div class="dot" :class="linePos(i, flip)" :style="{
marginTop: linePos(i, flip) === 'down' ? '-5px' : '35px' marginTop: linePos(i, flip) === 'down' ? '-5px' : '-5px'
}"></div> }"></div>
<div class="time" :style="{ <div class="time" :style="{
marginTop: linePos(i, flip) === 'down' ? '-50px' : '10px' marginTop: linePos(i, flip) === 'down' ? '-50px' : '10px'
}" v-if="type === 'normal'"> }" v-if="type === 'normal'">
{{ item.time }} {{ item.sanctionDate }}
</div> </div>
<!-- 卡片:放到线右侧 --> <!-- 卡片:放到线右侧 -->
<div class="card" :class="[cardPos(i, flip), 'right-side']" @click="$emit('click-card', item)" :style="{ <div class="card" :class="[cardPos(i, flip), 'right-side']" @click="$emit('click-card', item)" :style="{
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
<div class="time" :style="{ <div class="time" :style="{
marginLeft: 0 marginLeft: 0
}" v-if="type !== 'normal'"> }" v-if="type !== 'normal'">
{{ item.time }} {{ item.sanctionDate }}
</div> </div>
<div class="title"> <div class="title">
{{ item.title }} {{ item.title }}
......
...@@ -67,14 +67,14 @@ ...@@ -67,14 +67,14 @@
class="content ai-content" class="content ai-content"
v-html="renderMarkdown(message.content)" v-html="renderMarkdown(message.content)"
></div> ></div>
<div v-if="message.raw_data" class="answer-title">完整实体列表</div> <div v-if="message.raw_data?.length" class="answer-title">完整实体列表</div>
<div v-if="message.raw_data" class="content row-content"> <div v-if="message.raw_data?.length" class="content row-content">
<div class="row-header"> <div class="row-header">
<div class="row-header-item1">{{ message.raw_data.columns.name_zhs }}</div> <div class="row-header-item1">{{ message.raw_data.columns?.name_zhs }}</div>
<div class="row-header-item">{{ message.raw_data.columns.date }}</div> <div class="row-header-item">{{ message.raw_data.columns?.date }}</div>
<div class="row-header-item">{{ message.raw_data.columns.industry }}</div> <div class="row-header-item">{{ message.raw_data.columns?.industry }}</div>
<div class="row-header-item">{{ message.raw_data.columns.category }}</div> <div class="row-header-item">{{ message.raw_data.columns?.category }}</div>
<div class="row-header-item2">{{ message.raw_data.columns.sanction_reason }}</div> <div class="row-header-item2">{{ message.raw_data.columns?.sanction_reason }}</div>
</div> </div>
<div class="row-main"> <div class="row-main">
<div <div
...@@ -644,7 +644,7 @@ const handleBillChat = async question => { ...@@ -644,7 +644,7 @@ const handleBillChat = async question => {
} }
} }
if (data.detail.error) { if (data.detail && data.detail.error) {
console.log(data.detail.error.message); console.log(data.detail.error.message);
// ElMessage.error(data.detail.error.message); // ElMessage.error(data.detail.error.message);
isCurAnswerMessage.value = true; isCurAnswerMessage.value = true;
......
...@@ -121,7 +121,7 @@ import { ref, onMounted } from "vue"; ...@@ -121,7 +121,7 @@ import { ref, onMounted } from "vue";
import router from "@/router"; import router from "@/router";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { search } from "@/api/comprehensiveSearch/index"; import { search } from "@/api/comprehensiveSearch/index";
import { getPersonSummaryInfo } from "@/api/common/index";
import Img1 from "./assets/images/img1.png"; import Img1 from "./assets/images/img1.png";
import Img2 from "./assets/images/img2.png"; import Img2 from "./assets/images/img2.png";
import Img3 from "./assets/images/img3.png"; import Img3 from "./assets/images/img3.png";
...@@ -167,10 +167,10 @@ const tabList = ref([ ...@@ -167,10 +167,10 @@ const tabList = ref([
name: "新闻", name: "新闻",
id: 8 id: 8
}, },
{ // {
name: "社媒", // name: "社媒",
id: 9 // id: 9
} // }
]); ]);
const activeTabId = ref(0); const activeTabId = ref(0);
...@@ -304,7 +304,58 @@ const handleSearch = async () => { ...@@ -304,7 +304,58 @@ const handleSearch = async () => {
} catch (error) {} } catch (error) {}
}; };
const handleToPage = item => { const handleToPage = async (item) => {
if(item.typeStr === '人物') {
const personTypeList = JSON.parse(window.sessionStorage.getItem("personTypeList"));
let type = 0;
let personTypeName = "";
const params = {
personId: item.id
};
try {
const res = await getPersonSummaryInfo(params);
console.log("人物全局信息", res);
if (res.code === 200 && res.data) {
const arr = personTypeList.filter(item => {
return item.typeId === res.data.personType;
});
console.log("arr", arr);
if (arr && arr.length > 0) {
personTypeName = arr[0].typeName;
console.log("personTypeName", personTypeName);
if (personTypeName === "科技企业领袖") {
type = 1;
} else if (personTypeName === "国会议员") {
type = 2;
} else if (personTypeName === "智库研究人员") {
type = 3;
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
return;
}
const route = router.resolve({
path: "/characterPage",
query: {
type: type, // type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId: id
}
});
window.open(route.href, "_blank");
} else {
personTypeName = "";
ElMessage.warning("找不到当前人员的类型值!");
return;
}
} else {
ElMessage.warning("获取人物全局信息错误");
return;
}
} catch (error) {}
}
let curRoute; let curRoute;
switch (item.typeStr) { switch (item.typeStr) {
case "法案": case "法案":
......
...@@ -246,8 +246,12 @@ const handleMouseMove = event => { ...@@ -246,8 +246,12 @@ const handleMouseMove = event => {
}; };
const handleToBillDetail = item => { const handleToBillDetail = item => {
window.sessionStorage.setItem("billId", item.billId); const route = router.resolve({
const route = router.resolve("/billLayout"); path: "/billLayout",
query: {
billId: item.billId
}
});
window.open(route.href, "_blank"); window.open(route.href, "_blank");
}; };
......
...@@ -156,8 +156,8 @@ const horizontalBarOptions = shallowRef({}); ...@@ -156,8 +156,8 @@ const horizontalBarOptions = shallowRef({});
const handleEttClick = item => { const handleEttClick = item => {
const route = router.resolve({ const route = router.resolve({
path: "/companyPages", name: "companyPages",
query: { params: {
id: item.id id: item.id
} }
}); });
......
...@@ -342,8 +342,8 @@ const handleDomainChange = async domain => { ...@@ -342,8 +342,8 @@ const handleDomainChange = async domain => {
const handleOrgClick = item => { const handleOrgClick = item => {
console.log(item); console.log(item);
const route = router.resolve({ const route = router.resolve({
path: "/companyPages", name: "companyPages",
query: { params: {
id: item.id id: item.id
} }
}); });
......
...@@ -305,8 +305,8 @@ watch( ...@@ -305,8 +305,8 @@ watch(
const handleOrgClick = item => { const handleOrgClick = item => {
console.log(item); console.log(item);
const route = router.resolve({ const route = router.resolve({
path: "/companyPages", name: "companyPages",
query: { params: {
id: item.id id: item.id
} }
}); });
......
...@@ -411,8 +411,8 @@ const handleOrgClick = item => { ...@@ -411,8 +411,8 @@ const handleOrgClick = item => {
console.log(item); console.log(item);
if (item.entityType != 2) return; if (item.entityType != 2) return;
const route = router.resolve({ const route = router.resolve({
path: "/companyPages", name: "companyPages",
query: { params: {
id: item.id id: item.id
} }
}); });
......
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</div> </div>
</div> </div>
<div class="box2-main"> <div class="box2-main">
<div class="box2-item" v-for="(item, index) in box2Data" :key="index"> <div class="box2-item" v-for="(item, index) in box2Data" :key="index" @click="handleToNewsAnalysis(item)">
<div class="box2-item-left"> <div class="box2-item-left">
<div class="point"> <div class="point">
<img src="@/assets/images/dot.png" alt="" /> <img src="@/assets/images/dot.png" alt="" />
...@@ -314,7 +314,17 @@ const box2Data = ref([ ...@@ -314,7 +314,17 @@ const box2Data = ref([
// img: 1 // img: 1
// } // }
]); ]);
// 点击新闻条目,跳转到新闻分析页
const handleToNewsAnalysis = news => {
console.log(news)
const route = router.resolve({
path: "/newsAnalysis",
query: {
newsId: news.newsId
}
});
window.open(route.href, "_blank");
};
const handleGetThinkTankReportPolicyAction = async () => { const handleGetThinkTankReportPolicyAction = async () => {
try { try {
const res = await getThinkTankReportPolicyAction(router.currentRoute._value.params.id); const res = await getThinkTankReportPolicyAction(router.currentRoute._value.params.id);
......
...@@ -15,6 +15,15 @@ export default defineConfig({ ...@@ -15,6 +15,15 @@ export default defineConfig({
resolvers: [ElementPlusResolver()], resolvers: [ElementPlusResolver()],
}), }),
], ],
build: {
// minify: 'terser',
terserOptions: {
compress: {
drop_console: true, // 移除所有 console.*
drop_debugger: true, // 移除 debugger
},
},
},
resolve: { resolve: {
alias: { alias: {
'@': resolve(__dirname, 'src'), '@': resolve(__dirname, 'src'),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论