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

feat:市场准入限制模块修改

上级 4d67858d
......@@ -7,28 +7,6 @@
<SearchContainer style="margin-bottom: 0; margin-top: 48px; height: fit-content" v-if="containerRef"
placeholder="搜索政令" :containerRef="containerRef" areaName="政令" />
</div>
<!-- <div class="home-main-header-footer" v-show="!isShow">
<div class="home-main-header-footer-item">
<div class="item-top">3.8T</div>
<div class="item-footer">数据量</div>
</div>
<div class="home-main-header-footer-item">
<div class="item-top">28</div>
<div class="item-footer">科技动向</div>
</div>
<div class="home-main-header-footer-item">
<div class="item-top">326</div>
<div class="item-footer">总统政令</div>
</div>
<div class="home-main-header-footer-item">
<div class="item-top">341</div>
<div class="item-footer">通过法案</div>
</div>
<div class="home-main-header-footer-item">
<div class="item-top">285</div>
<div class="item-footer">分析报告</div>
</div>
</div> -->
<SummaryCardsPanel
descriptionText="近期美国各联邦政府机构发布涉华政令数量汇总"
:cards="keyOrganizationCards"
......@@ -263,18 +241,7 @@
</div>
<div style="flex: auto;"></div>
<el-checkbox @change="getDecreeList(1)" v-model="box9Params.isCN">只看涉华政令</el-checkbox>
<div class="select-box">
<el-select v-model="box9Params.sortFun" @change="getDecreeList(1)" style="width:166px; margin-left:8px;">
<template #prefix>
<div class="icon1">
<img v-if="box9Params.sortFun=='1'" src="@/assets/icons/shengxu1.png" alt="" />
<img v-else src="@/assets/icons/jiangxu1.png" alt="" />
</div>
</template>
<el-option label="发布时间正序" value="1" />
<el-option label="发布时间倒序" value="0" />
</el-select>
</div>
<TimeSortSelectBox style="margin-left:12px;" @handle-px-change="handlePxChange"></TimeSortSelectBox>
</div>
<div class="home-main-footer-main">
<div class="left">
......@@ -313,9 +280,9 @@
</div>
<div class="select-main">
<el-checkbox-group class="checkbox-group" v-model="activePubTime" @change="handlePubTimeChange">
<el-checkbox label="" class="filter-checkbox">{{ "全部时间" }}</el-checkbox>
<el-checkbox v-for="time in pubTime" :key="time.id" :label="time.id" class="filter-checkbox">
{{ time.name }}
<el-checkbox class="filter-checkbox" label="">{{ "全部时间" }}</el-checkbox>
<el-checkbox class="filter-checkbox" v-for="time in pubTime" :key="time.value" :label="time.value">
{{ time.label }}
</el-checkbox>
</el-checkbox-group>
</div>
......@@ -387,6 +354,7 @@ import WordCloudChart from "@/components/base/WordCloundChart/index.vue"
import SimplePagination from "@/components/SimplePagination.vue";
import SummaryCardsPanel from "@/components/base/SummaryCardsPanel/index.vue";
import AiReport from '@/views/marketAccessRestrictions/marketAccessHome/com/AiReport.vue';
import TimeSortSelectBox from '@/components/base/TimeSortSelectBox/index.vue';
import TipTab from "@/components/base/TipTab/index.vue"
import {
getDepartmentList,
......@@ -911,16 +879,8 @@ const handleToSocialDetail = item => {
window.open(route.href, "_blank");
};
const pubTime = ref([
{ id: "2026", name: "2026年" },
{ id: "2025", name: "2025年" },
{ id: "2024", name: "2024年" },
{ id: "2023", name: "2023年" },
{ id: "2022", name: "2022年" },
{ id: "2021", name: "2021年" },
{ id: "2020", name: "2020年" }
]);
const activePubTime = ref(["2026"]);
const pubTime = getNearYearList(7);
const activePubTime = ref([pubTime[0].value]);
// 处理发布时间全选逻辑
const handlePubTimeChange = (event) => {
if (event.length && event[event.length-1] !== "") {
......@@ -958,11 +918,15 @@ const totalDecreesNum = ref(0);
const decreeList = ref([]);
// 科技政令库
const handlePxChange = (event) => {
box9Params.sortFun = event - 1;
getDecreeList(1)
};
const box9Params = reactive({
page: 1,
size: 10,
name: '',
sortFun: '0',
sortFun: 0,
isCN: false,
loading: false,
})
......@@ -2075,30 +2039,6 @@ onMounted(async () => {
.search-box {
width: 360px;
}
.select-box {
margin-left: 10px;
height: 42px;
box-sizing: border-box;
padding: 5px 0;
.icon1 {
width: 11px;
height: 14px;
font-size: 0px;
img {
width: 100%;
height: 100%;
}
}
:deep(.el-select__selected-item) {
text-align: center;
font-size: 16px;
font-family: Microsoft YaHei;
}
}
}
.home-main-footer-main {
......
<template>
<AnalysisBox :title="props.title" :showAllBtn="false" height="auto">
<div class="box-main">
<el-empty v-if="!props.listData?.length" description="暂无数据" :image-size="200" />
<el-empty v-if="!props.listData?.length" description="暂无数据" :image-size="100" />
<div v-for="(item, index) in props.listData" :key="index" class="box-item">
<div class="item-tag" :class="getClassName(item)">{{ item.TYPE }}</div>
<div class="item-right" @click="onNavigateTo(item)">
......
......@@ -79,7 +79,7 @@
<DivideHeader id="position3" class="divide-header" :titleText="'全景概览'"></DivideHeader>
<div class="center-footer">
<div class="box5">
<div class="box5" v-loading="box5Loading">
<OverviewNormalBox title="数量变化趋势" width="auto" height="100%">
<template #header-icon>
<img style="width: 100%; height: 100%;" src="./assets/icons/icon2.svg" alt="" />
......@@ -102,7 +102,7 @@
</div>
</OverviewNormalBox>
</div>
<div class="box6">
<div class="box6" v-loading="box6Loading">
<OverviewNormalBox title="领域分布情况" width="auto" height="100%">
<template #header-icon>
<img style="width: 100%; height: 100%;" src="./assets/icons/icon3.svg" alt="" />
......@@ -126,7 +126,7 @@
</div>
</div>
<div class="center-footer1">
<div class="box7">
<div class="box7" v-loading="box7Loading">
<OverviewNormalBox title="国家分布情况" width="auto" height="100%">
<template #header-icon>
<img style="width: 100%; height: 100%;" src="./assets/icons/icon4.svg" alt="" />
......@@ -153,7 +153,7 @@
</div>
</OverviewNormalBox>
</div>
<div class="box8">
<div class="box8" v-loading="box8Loading">
<OverviewNormalBox title="结果分布情况" width="auto" height="100%">
<template #header-icon>
<img style="width: 100%; height: 100%" src="./assets/icons/icon5.svg" alt="" />
......@@ -204,8 +204,9 @@
</div>
<div class="left-main">
<el-checkbox-group class="check-list" v-model="checkedYearList" @change="handleCheckedYearsChange">
<el-checkbox class="check-item" v-for="item in surveyYearList" :key="item.id" :label="item.id">
{{ item.name }}
<el-checkbox class="check-item" label="">全部时间</el-checkbox>
<el-checkbox class="check-item" v-for="item in nearYearList" :key="item.value" :label="item.value">
{{ item.label }}
</el-checkbox>
</el-checkbox-group>
</div>
......@@ -287,7 +288,7 @@ import { navigateToViewRiskSignal } from "@/utils/riskSignalOverviewNavigate";
import createLineChart from "@/views/marketAccessRestrictions/utils/baseLineChart.js";
import createPieChart from "@/views/marketAccessRestrictions/utils/basePiechart.js";
import getRadarChart from "./utils/radarChart";
import getBarChart from "./utils/barChart1";
import getBarChart from "@/views/marketAccessRestrictions/marketAccessHome/utils/barChart1.js";
import AiReport from '@/views/marketAccessRestrictions/marketAccessHome/com/AiReport.vue';
import { getPersonSummaryInfo } from "@/api/common/index";
......@@ -316,6 +317,11 @@ const refAiReport6 = ref(null)
const refAiReport7 = ref(null)
const refAiReport8 = ref(null)
const box5Loading = ref(false);
const box6Loading = ref(false);
const box7Loading = ref(false);
const box8Loading = ref(false);
const handleToPosi = id => {
const element = document.getElementById(id);
if (element && containerRef.value) {
......@@ -627,6 +633,7 @@ const box5Ref = ref(null)
const box5Active = ref(1);
const hadleGetStatNum = async (event) => {
if (event) box5Active.value = event;
box5Loading.value = true;
try {
let byYorM = box5Active.value
const res = await getStatNum({byYorM});
......@@ -655,6 +662,7 @@ const hadleGetStatNum = async (event) => {
}
refAiReport5.value?.onDataInfo({ type: "折线图", name: "数量变化趋势", data: box5ChartData.value })
nextTick(() => { createLineChart(box5Ref, box5ChartData.value) })
box5Loading.value = false;
};
// 领域分布情况
......@@ -672,11 +680,9 @@ const box6Data = ref({
maxNum: 0
});
const handleGetStatArea = async () => {
const params = {
years: box6SelectedYear.value
};
box6Loading.value = true;
try {
const res = await getStatArea(params);
const res = await getStatArea({years: box6SelectedYear.value});
console.log("领域分布情况", res);
if (res.code === 200 && res.data) {
const arr = res.data.map(item => item.areaname);
......@@ -735,6 +741,7 @@ const handleGetStatArea = async () => {
box6Data.value.maxNum = 0;
}
refAiReport6.value?.onDataInfo({ type: "雷达图", name: "领域分布情况", data: box6Data.value })
box6Loading.value = false;
};
const handleBox6 = async () => {
await handleGetStatArea();
......@@ -757,12 +764,12 @@ const box7TipText = computed(() => {
return ""
})
const handleGetBox7Data = async () => {
const params = {
sortCode: box7SelectedSurvey.value,
years: box7SelectedYear.value
};
box7Loading.value = true
try {
const res = await getSearchCountry(params);
const res = await getSearchCountry({
sortCode: box7SelectedSurvey.value,
years: box7SelectedYear.value
});
console.log("国家分布情况", res);
if (res.code === 200 && res.data) {
box7Data.title = res.data.map(item => {
......@@ -783,6 +790,7 @@ const handleGetBox7Data = async () => {
box7Data.data = [];
}
refAiReport7.value?.onDataInfo({ type: "柱状图", name: "国家分布情况", data: box7Data })
box7Loading.value = false;
};
const handleBox7 = async () => {
......@@ -807,6 +815,7 @@ const box8TipText = computed(() => {
return ""
})
const handleGetBox8Data = async () => {
box8Loading.value = true;
try {
const res = await getSearchResult({sortCode: box8SelectedSurvey.value});
console.log("结果分布情况", res);
......@@ -820,6 +829,7 @@ const handleGetBox8Data = async () => {
}
refAiReport8.value?.onDataInfo({ type: "环形图", name: "结果分布情况", data: box8Data.value })
nextTick(() => { createPieChart(box8Ref, box8Data.value) })
box8Loading.value = false;
};
// 资源库
......@@ -845,25 +855,14 @@ const handleClickCate = item => {
handleFetchSurveyList();
};
const releaseTimeList = ref([
{ label: "按发布时间倒序", value: true },
{ label: "按发布时间升序", value: false }
]);
const isSort = ref(true);
const handlePxChange = (event) => {
isSort.value = event;
isSort.value = event == 1;
currentPage.value = 1;
handleFetchSurveyList();
};
const surveyYearList = ref([
{ name: "全部时间", id: "" },
{ name: "2025年", id: "2025" },
{ name: "2024年", id: "2024" },
{ name: "2023年", id: "2023" },
{ name: "2022年", id: "2022" },
{ name: "2021年", id: "2021" }
]);
const nearYearList = getNearYearList(7);
const checkedYearList = ref(['']);
const handleCheckedYearsChange = event => {
if (event.length && event[event.length-1] !== "") {
......
......@@ -83,13 +83,8 @@ const getBarChart = (nameList, valueList) => {
xAxis: index,
yAxis: valueList[index],
symbol: `image://${item.img}`,
symbolSize: 20,
symbolCircle: 20,
itemStyle: {
borderRadius: '50%',
borderColor: '#fff',
borderWidth: 2
}
symbolSize: [20, 20],
symbolOffset: [0, 10]
});
});
return data;
......
const getRadarChart = (data) => {
// const indicators = [
// { name: "集成电路", max: 10 },
// { name: "能源领域", max: 10 },
// { name: "量子科技", max: 10 },
// { name: "通信网络", max: 10 },
// { name: "人工智能", max: 10 },
// { name: "生物科技", max: 10 }
// ];
const indicators = data.title.map(item => {
return {
name: item, max: data.maxNum
}
})
const data337 = [9, 6, 6, 6, 9, 7];
const data301 = [5, 3, 7, 8, 7, 9];
const data232 = [4, 10, 3, 4, 2, 5];
const option = {
color: ["rgba(5, 95, 194, 1)", "rgba(250, 140, 22, 1)", "rgba(146, 84, 222, 1)"],
legend: {
top: 8,
left: 30,
left: 'center',
icon: "circle",
itemWidth: 12,
itemHeight: 12,
......
......@@ -90,7 +90,7 @@ const filterParty = ref("");
const filterReason = ref("");
const isSort = ref(true);
const handlePxChange = (event) => {
isSort.value = event;
isSort.value = event == 1;
currentPage.value = 1;
handleFetchSurveyList();
};
......@@ -283,6 +283,7 @@ onMounted(async () => {
font-family: Source Han Sans CN;
font-size: 16px;
color: var(--text-primary-65-color);
font-weight: 400;
}
}
}
......
......@@ -64,7 +64,7 @@ import TimeSortSelectBox from '@/components/base/TimeSortSelectBox/index.vue';
const searchText = ref(''); // 搜索文本
const isSort = ref(true);
const handlePxChange = (event) => {
isSort.value = event;
isSort.value = event == 1;
currentPage.value = 1;
handleFetchSurveyList();
};
......@@ -248,6 +248,7 @@ onMounted(async () => {
font-family: Source Han Sans CN;
font-size: 16px;
color: var(--text-primary-65-color);
font-weight: 400;
}
}
}
......
......@@ -93,7 +93,7 @@ const filterParty = ref("");
const filterReason = ref("");
const isSort = ref(true);
const handlePxChange = (event) => {
isSort.value = event;
isSort.value = event == 1;
currentPage.value = 1;
handleFetchSurveyList();
};
......@@ -311,6 +311,7 @@ onMounted(async () => {
font-family: Source Han Sans CN;
font-size: 16px;
color: var(--text-primary-65-color);
font-weight: 400;
}
}
}
......
......@@ -92,7 +92,7 @@ const handleClickBtn = item => {
const codeInfo = reactive({
sortCode: route.query.id,
sortName: "调查主页",
sortName: "调查",
sortImageUrl: "",
sortDescription: "",
})
......@@ -102,7 +102,7 @@ const onSurvyInfo = async () => {
if (res.code == 200) {
Object.assign(codeInfo, res.data)
}
document.title = codeInfo.sortName;
document.title = codeInfo.sortName+'概览';
}
onMounted(() => {
......
......@@ -32,7 +32,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart1"></div>
<TipTab text="美对华232调查案件的数量变化趋势,数据来源:美国商务部官网" style="margin-top: 16px;" />
<TipTab text="数据来源:美国商务部官网" style="margin-top: 16px;" />
<AiReport ref="refAiReport1"></AiReport>
</div>
</AnalysisBox>
......@@ -46,7 +46,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart2"></div>
<TipTab text="美对华232调查案件的领域分布情况,数据来源:美国商务部官网" style="margin-top: -16px;" />
<TipTab text="数据来源:美国商务部官网" />
<AiReport ref="refAiReport2"></AiReport>
</div>
</AnalysisBox>
......@@ -62,7 +62,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart3"></div>
<TipTab text="美对华232调查案件导致的关税变化分布,数据来源:美国商务部官网" style="margin-top: -16px;" />
<TipTab text="数据来源:美国商务部官网" />
<AiReport ref="refAiReport3"></AiReport>
</div>
</AnalysisBox>
......@@ -76,7 +76,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart4"></div>
<TipTab text="美232调查所涉及的国家分布情况,数据来源:美国商务部官网" style="margin-top: -16px;" />
<TipTab text="数据来源:美国商务部官网" />
<AiReport ref="refAiReport4"></AiReport>
</div>
</AnalysisBox>
......
......@@ -8,7 +8,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="box1Chart"></div>
<TipTab text="美对华301调查案件的数量变化趋势,数据来源:美国贸易代表办公室官网" style="margin-top: 16px" />
<TipTab text="数据来源:美国贸易代表办公室官网" style="margin-top: 16px" />
<AiReport ref="refAiReport1"></AiReport>
</div>
</AnalysisBox>
......@@ -22,7 +22,7 @@
</template>
<div class="box-main">
<div class="box-head" id="box2Chart"></div>
<TipTab text="美301调查所涉及的国家分布情况,数据来源:美国贸易代表办公室官网" style="margin-top: 16px" />
<TipTab text="数据来源:美国贸易代表办公室官网" style="margin-top: 16px" />
<AiReport ref="refAiReport2"></AiReport>
</div>
</AnalysisBox>
......@@ -33,7 +33,7 @@
<AnalysisBox title="调查方向及结果分布">
<div class="box-main">
<div class="box-head" id="box3Chart"></div>
<TipTab text="美301调查方向及结果分布情况,数据来源:美国贸易代表办公室官网" style="margin-top: 16px;" />
<TipTab text="数据来源:美国贸易代表办公室官网" style="margin-top: 16px;" />
<AiReport ref="refAiReport3"></AiReport>
</div>
</AnalysisBox>
......@@ -47,7 +47,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="box4Chart"></div>
<TipTab text="美对华301调查案件的领域分布情况,数据来源:美国贸易代表办公室官网" style="margin-top: -16px;" />
<TipTab text="数据来源:美国贸易代表办公室官网" />
<AiReport ref="refAiReport4"></AiReport>
</div>
</AnalysisBox>
......@@ -59,7 +59,7 @@
<script setup>
import { ref, onMounted, nextTick, reactive } from "vue";
import setChart from "@/utils/setChart";
import getBarChart from "./utils/barChart";
import getBarChart from "@/views/marketAccessRestrictions/marketAccessHome/utils/barChart1.js";
import getSankeyChart from "./utils/sankey";
import {
getSearchCountry,
......
......@@ -32,7 +32,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart1"></div>
<TipTab text="美对华337调查案件的数量变化趋势,数据来源:美国国际贸易委员会官网" style="margin-top: 16px;" />
<TipTab text="数据来源:美国国际贸易委员会官网" style="margin-top: 16px;" />
<AiReport ref="refAiReport1"></AiReport>
</div>
</AnalysisBox>
......@@ -46,7 +46,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart2"></div>
<TipTab text="美对华337调查案件的领域分布情况,数据来源:美国国际贸易委员会官网" style="margin-top: -16px;" />
<TipTab text="数据来源:美国国际贸易委员会官网" />
<AiReport ref="refAiReport2"></AiReport>
</div>
</AnalysisBox>
......@@ -78,7 +78,7 @@
</div>
<div class="map-box-right" id="chartMap"></div>
</div>
<TipTab text="美对华337调查案件的中国实体分布情况,数据来源:美国国际贸易委员会官网" />
<TipTab text="数据来源:美国国际贸易委员会官网" />
<AiReport ref="refAiReport3"></AiReport>
</div>
</AnalysisBox>
......@@ -92,7 +92,7 @@
</template>
<div class="box-main">
<div class="box-head" ref="chart4"></div>
<TipTab text="美对华337调查案件的调查结果分布情况,数据来源:美国国际贸易委员会官网" style="margin-top: -16px;" />
<TipTab text="数据来源:美国国际贸易委员会官网" />
<AiReport ref="refAiReport4"></AiReport>
</div>
</AnalysisBox>
......
......@@ -26,7 +26,7 @@
</div>
<div style="width:20px; flex:auto;"></div>
<div class="head-button">
<div class="head-button" @click="handleAnalysisClick()">
<div class="button-icon">
<img src="./assets/images/btn-icon2.png" alt="" />
</div>
......@@ -42,13 +42,15 @@
<script setup>
import { ref, onMounted, reactive } from "vue";
import { ElMessage } from "element-plus";
import { getSurvyInfo, getSearchBlurb } from "@/api/marketAccessRestrictions/index.js"
import router from "@/router";
import NavIcon1 from "./assets/images/nav-icon1.png";
import NavIcon1Active from "./assets/images/nav-icon1-active.png";
import NavIcon3 from "./assets/images/nav-icon2.png";
import NavIcon3Active from "./assets/images/nav-icon2-active.png";
import Img337 from "./assets/images/337.png";
import { getSurvyInfo, getSearchBlurb } from "@/api/marketAccessRestrictions/index.js"
import { useRoute } from "vue-router";
const route = useRoute();
......@@ -62,6 +64,18 @@ const handleClickBtn = index => {
});
};
// 分析报告
const handleAnalysisClick = () => {
ElMessage.warning("当前功能正在开发中,敬请期待!");
// router.push({
// path: "/writtingAsstaint",
// query: {
// topic: "市场准入限制",
// fileId: route.query.id
// }
// });
};
const codeInfo = reactive({
sortCode: route.query.id,
sortName: "",
......
......@@ -56,19 +56,19 @@
</AnalysisBox>
<AnalysisBox title="被告信息" :showAllBtn="false" height="auto">
<div class="box3-main">
<div class="data-item" v-for="(item, index) in caseList" :key="index">
<div class="data-head">{{ item.title }}</div>
<div class="info-list">
<div class="info-item" v-for="(val, idx) in item.companyList" :key="idx">
<div class="data-item">
<div class="info-list" v-if="caseList.length">
<div class="info-item" v-for="(item, index) in caseList" :key="index">
<div class="icon">
<img :src="val.logo" alt="" v-if="val.logo">
<div class="default-logo" v-else>{{ val.COMNAM?.substring(0, 1) || '' }}</div>
<img :src="item.logo" alt="" v-if="item.logo">
<div class="default-logo" v-else>{{ item.COMNAM?.substring(0, 1) || '' }}</div>
</div>
<div class="text" >
<span class="text-click-hover" @click="handleToInstitution(val)">{{ val.COMNAM }}</span>
<span class="text-click-hover" @click="handleToInstitution(item)">{{ item.COMNAM }}</span>
</div>
</div>
</div>
<el-empty v-else description="暂无数据" :image-size="100" />
</div>
</div>
</AnalysisBox>
......@@ -85,8 +85,6 @@ import router from "@/router";
import RelatedEvent from "@/views/marketAccessRestrictions/com/RelatedEvent.vue";
import SurveyAffiche from "@/views/marketAccessRestrictions/com/SurveyAffiche.vue";
const tips = `Pantech是韩国的一家通信设备公司,曾经是手机制造商,但现在可能已转型为专利持有实体。这类公司常被称为"非执业实体"(NPE)或"专利断言实体"(PAE),通过专利授权和诉讼获取收益。这些企业曾经是行业龙头,但因科技和市场形态巨变,加上自身改革步伐缓慢,经营状况每况愈下。卖掉实体业务部门后,留下来的是高达几万件的专利。`
const route = useRoute();
const loading = ref(false);
const baseInfo = ref({});
......@@ -111,20 +109,20 @@ const handleGetSearchBlurb = async () => {
}
// 被告信息分组
if (data.defendantOrg) {
const groups = {};
data.defendantOrg.forEach(item => {
const companyName = item.COMPANYNAM || "其他相关企业";
if (!groups[companyName]) {
groups[companyName] = {
title: companyName + (companyName !== "其他" ? "及相关企业" : ""),
companyList: []
};
}
groups[companyName].companyList.push(item);
});
caseList.value = Object.values(groups);
}
// if (data.defendantOrg) {
// const groups = {};
// data.defendantOrg.forEach(item => {
// const companyName = item.COMPANYNAM || "其他相关企业";
// if (!groups[companyName]) {
// groups[companyName] = {
// title: companyName + (companyName !== "其他" ? "及相关企业" : ""),
// companyList: []
// };
// }
// groups[companyName].companyList.push(item);
// });
// }
caseList.value = data.defendantOrg || [];
}
} catch (error) {}
loading.value = false;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论