提交 d26a1cfc authored 作者: 付康's avatar 付康

合并分支 'fk-dev' 到 'pre'

Fk dev 查看合并请求 !338
流水线 #447 已通过 于阶段
in 4 分 37 秒
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
</div> </div>
<!-- <div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div> --> <!-- <div class="more" @click="handleToMoreNews">{{ "更多 +" }}</div> -->
</div> </div>
<div class="msg-bubble-main" ref="scrollContainer"> <div class="msg-bubble-main" ref="scrollContainer" @mouseenter="pauseScroll" @mouseleave="resumeScroll">
<div class="message-bubble" v-for="(item, index) in displayList" :key="index" @click="handleClickPerson(item)"> <div class="message-bubble" v-for="(item, index) in infiniteList" :key="index" @click="handleClickPerson(item)">
<div class="avatar-container"> <div class="avatar-container">
<img :src="item[props.imageUrl] || avatarUser" :alt="item[props.name]" class="avatar" /> <img :src="item[props.imageUrl] || avatarUser" :alt="item[props.name]" class="avatar" />
<div class="avatar-containerOne" v-if="isRepublicanParty"> <div class="avatar-containerOne" v-if="isRepublicanParty">
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
</template> </template>
<script setup> <script setup>
import { ref, computed, onMounted, onBeforeUnmount } from "vue"; import { ref, computed, watch, nextTick, onMounted, onBeforeUnmount, onUnmounted } from "vue";
import avatarUser from "@/assets/images/avatar_user.png"; import avatarUser from "@/assets/images/avatar_user.png";
const emit = defineEmits(["click", "info-click"]); const emit = defineEmits(["click", "info-click"]);
...@@ -135,30 +135,164 @@ const displayList = computed(() => { ...@@ -135,30 +135,164 @@ const displayList = computed(() => {
return list return list
}) })
const scrollSpeed = ref(30)
const autoStart = ref(true)
const copyCount = ref(3)
// 创建无限列表(复制多份)
const infiniteList = computed(() => {
if (!displayList.value || displayList.value.length === 0) return []
const result = []
for (let i = 0; i < copyCount.value; i++) {
result.push(...displayList.value)
}
return result
})
// 状态
let animationId = null
let lastTimestamp = 0
let isPaused = ref(false)
let isScrolling = ref(false)
// 滚动动画函数(使用 requestAnimationFrame)
const scrollAnimation = (timestamp) => {
if (!scrollContainer.value || isPaused.value) {
if (!isPaused.value) {
animationId = requestAnimationFrame(scrollAnimation)
}
return
}
if (!lastTimestamp) {
lastTimestamp = timestamp
animationId = requestAnimationFrame(scrollAnimation)
return
}
// 计算时间差(秒)
const deltaTime = Math.min(0.033, (timestamp - lastTimestamp) / 1000) // 限制最大33ms
if (deltaTime <= 0) {
lastTimestamp = timestamp
animationId = requestAnimationFrame(scrollAnimation)
return
}
const container = scrollContainer.value
const scrollHeight = container.scrollHeight
const clientHeight = container.clientHeight
// 计算滚动步长
const step = scrollSpeed.value * deltaTime
let newScrollTop = container.scrollTop + step
// 检查是否滚动到底部
const maxScrollTop = scrollHeight - clientHeight
if (newScrollTop >= maxScrollTop - 1) {
// 到达底部,无缝跳转到顶部
container.scrollTop = 0
// 重置时间戳避免跳跃
lastTimestamp = timestamp
} else {
container.scrollTop = newScrollTop
}
lastTimestamp = timestamp
animationId = requestAnimationFrame(scrollAnimation)
}
// 开始滚动 // 开始滚动
const startScroll = () => { const startScroll = () => {
if (timer) clearInterval(timer) if (animationId) {
timer = setInterval(() => { cancelAnimationFrame(animationId)
currentIndex.value = (currentIndex.value + 1) % props.messageList.length animationId = null
}, 2000) // 每秒滚动一条 }
if (isPaused.value) return
lastTimestamp = 0
isScrolling.value = true
animationId = requestAnimationFrame(scrollAnimation)
} }
// 停止滚动 // 停止滚动
const stopScroll = () => { const stopScroll = () => {
if (timer) { if (animationId) {
clearInterval(timer) cancelAnimationFrame(animationId)
timer = null animationId = null
}
lastTimestamp = 0
isScrolling.value = false
}
// 暂停滚动
const pauseScroll = () => {
if (isPaused.value) return
isPaused.value = true
stopScroll()
}
// 恢复滚动
const resumeScroll = () => {
if (!isPaused.value) return
isPaused.value = false
if (autoStart.value) {
startScroll()
}
}
// 重置滚动位置(可选方法)
const resetScrollPosition = () => {
if (scrollContainer.value) {
scrollContainer.value.scrollTop = 0
} }
} }
onMounted(() => { // 监听 displayList 变化
// if (props.messageList.length > 3) { watch(
() => displayList.value,
async (newVal, oldVal) => {
if (newVal && newVal.length > 0) {
await nextTick()
// 如果列表内容变化,重置滚动位置并重新开始
if (scrollContainer.value) {
const wasPaused = isPaused.value
stopScroll()
scrollContainer.value.scrollTop = 0
if (!wasPaused && autoStart.value) {
isPaused.value = false
startScroll() startScroll()
// } }
}
}
},
{ deep: true, immediate: false }
)
// 监听 scrollSpeed 变化
watch(
() => scrollSpeed.value,
() => {
if (isScrolling.value && !isPaused.value) {
// 重新启动滚动以应用新速度
stopScroll()
startScroll()
}
}
)
// 组件挂载
onMounted(async () => {
await nextTick()
if (autoStart.value && displayList.value && displayList.value.length > 0) {
startScroll()
}
}) })
onBeforeUnmount(() => { // 组件卸载
onUnmounted(() => {
stopScroll() stopScroll()
}) })
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<div class="resource-library-section"> <div class="resource-library-section">
<div class="home-content-footer-header"> <div class="home-content-footer-header">
<div class="btn-box"> <div class="btn-box">
<div class="btn" :class="{ btnActive: activeTabName === cate.name }" v-for="cate in tabList" :key="cate.name" @click="handleClickTab(cate)"> <div class="btn" :class="{ btnActive: activeTabName === cate.name }" v-for="cate in tabList" :key="cate.name"
@click="handleClickTab(cate)">
{{ cate.name }} {{ cate.name }}
</div> </div>
</div> </div>
...@@ -26,18 +27,23 @@ ...@@ -26,18 +27,23 @@
<div class="right" :class="{ 'right-full': activeTabName === '委员会' }"> <div class="right" :class="{ 'right-full': activeTabName === '委员会' }">
<div class="right-header" v-if="activeTabName !== '委员会'"> <div class="right-header" v-if="activeTabName !== '委员会'">
<div class="right-header-box"> <div class="right-header-box">
<el-select v-model="footerSelect1" placeholder="选择委员会" style="width: 240px" @change="handleFooterSelect1Change"> <el-select v-model="footerSelect1" placeholder="选择委员会" style="width: 240px"
<el-option v-for="item in postOrgList" :key="item.departmentId" :label="item.departmentName" :value="item.departmentId" /> @change="handleFooterSelect1Change">
<el-option v-for="item in postOrgList" :key="item.departmentId" :label="item.departmentName"
:value="item.departmentId" />
</el-select> </el-select>
</div> </div>
<template v-if="activeTabName === '国会法案'"> <template v-if="activeTabName === '国会法案'">
<div class="right-header-box"> <div class="right-header-box">
<el-select v-model="footerSelect2" placeholder="选择提出议员" style="width: 240px" @change="handleFooterSelect2Change"> <el-select v-model="footerSelect2" placeholder="选择提出议员" style="width: 240px"
<el-option v-for="item in postMemberList" :key="item.memberId" :label="item.memberName" :value="item.memberId" /> @change="handleFooterSelect2Change">
<el-option v-for="item in postMemberList" :key="item.memberId" :label="item.memberName"
:value="item.memberId" />
</el-select> </el-select>
</div> </div>
<div class="right-header-box right-header-sort" style="margin-left: auto"> <div class="right-header-box right-header-sort" style="margin-left: auto">
<el-checkbox v-model="isInvolveCn" true-label="Y" false-label="N" class="involve-checkbox" @change="handleInvolveCnChange">只看涉华法案</el-checkbox> <el-checkbox v-model="isInvolveCn" true-label="Y" false-label="N" class="involve-checkbox"
@change="handleInvolveCnChange">只看涉华法案</el-checkbox>
<el-select v-model="releaseTime" placeholder="选择排序方式" style="width: 150px" @change="handlePxChange"> <el-select v-model="releaseTime" placeholder="选择排序方式" style="width: 150px" @change="handlePxChange">
<template #prefix> <template #prefix>
<div style="display: flex; align-items: center; height: 100%"> <div style="display: flex; align-items: center; height: 100%">
...@@ -50,24 +56,23 @@ ...@@ -50,24 +56,23 @@
</template> </template>
<template v-else-if="activeTabName === '国会议员'"> <template v-else-if="activeTabName === '国会议员'">
<div class="right-header-box right-header-sort" style="margin-left: auto"> <div class="right-header-box right-header-sort" style="margin-left: auto">
<el-select v-model="memberSortFun" placeholder="选择排序方式" style="width: 150px" @change="handleMemberSortFunChange"> <el-select v-model="memberSortFun" placeholder="选择排序方式" style="width: 150px"
@change="handleMemberSortFunChange">
<template #prefix> <template #prefix>
<div style="display: flex; align-items: center; height: 100%"> <div style="display: flex; align-items: center; height: 100%">
<img :src="desc" style="width: 14px; height: 14px" /> <img :src="desc" style="width: 14px; height: 14px" />
</div> </div>
</template> </template>
<el-option v-for="item in memberSortFunList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in memberSortFunList" :key="item.value" :label="item.label"
:value="item.value" />
</el-select> </el-select>
</div> </div>
</template> </template>
</div> </div>
<div class="right-header" v-else> <div class="right-header" v-else>
<div class="right-header-box right-header-sort" style="margin-left: auto"> <div class="right-header-box right-header-sort" style="margin-left: auto">
<el-checkbox <el-checkbox v-model="committeeIsInvolveCn" class="involve-checkbox"
v-model="committeeIsInvolveCn" @change="handleCommitteeInvolveCnChange">
class="involve-checkbox"
@change="handleCommitteeInvolveCnChange"
>
只看涉华委员会 只看涉华委员会
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -75,7 +80,8 @@ ...@@ -75,7 +80,8 @@
<div class="right-main" v-loading="loading"> <div class="right-main" v-loading="loading">
<template v-if="activeTabName === '国会法案'"> <template v-if="activeTabName === '国会法案'">
<div class="right-main-box" v-for="item in bills" :key="item.billId"> <div class="right-main-box" v-for="item in bills" :key="item.billId">
<div v-if="item.riskSignal" class="risk-tag" :class="getRiskTagClass(item.riskSignal)">{{ item.riskSignal }}</div> <div v-if="item.riskSignal" class="risk-tag" :class="getRiskTagClass(item.riskSignal)">{{ item.riskSignal
}}</div>
<div class="bill-cover"> <div class="bill-cover">
<img class="bill-image" :src="getBillImageUrl(item)" alt="" @error="handleBillImageError" /> <img class="bill-image" :src="getBillImageUrl(item)" alt="" @error="handleBillImageError" />
<div class="bill-id" :title="item.billId">{{ item.billId || "-" }}</div> <div class="bill-id" :title="item.billId">{{ item.billId || "-" }}</div>
...@@ -86,14 +92,32 @@ ...@@ -86,14 +92,32 @@
<div class="en-title" :title="item.eName">{{ item.eName }}</div> <div class="en-title" :title="item.eName">{{ item.eName }}</div>
</div> </div>
<div class="main"> <div class="main">
<div class="item"><div class="item-left">提案人:</div><div class="item-right">{{ item.tcr }}</div></div> <div class="item">
<div class="item"><div class="item-left">委员会:</div><div class="item-right">{{ item.wyh }}</div></div> <div class="item-left">提案人:</div>
<div class="item"><div class="item-left">相关领域:</div><div class="item-right1"><AreaTag v-for="(val, idx) in item.areaList" :key="`${item.billId}-${val}-${idx}`" :tagName="val" /></div></div> <div class="item-right">{{ item.tcr }}</div>
<div class="item"><div class="item-left">最新动议:</div><div class="item-right"><CommonPrompt :content="item.zxdy" /></div></div> </div>
<div class="item">
<div class="item-left">委员会:</div>
<div class="item-right">{{ item.wyh }}</div>
</div>
<div class="item">
<div class="item-left">相关领域:</div>
<div class="item-right1">
<AreaTag v-for="(val, idx) in item.areaList" :key="`${item.billId}-${val}-${idx}`"
:tagName="val" />
</div>
</div>
<div class="item">
<div class="item-left">最新动议:</div>
<div class="item-right">
<CommonPrompt :content="item.zxdy" />
</div>
</div>
<div class="item"> <div class="item">
<div class="item-left">法案进展:</div> <div class="item-left">法案进展:</div>
<div class="item-right2"> <div class="item-right2">
<div class="tag" v-for="(val, idx) in item.progress" :key="`${item.billId}-${val}-${idx}`" :style="{ zIndex: item.progress.length - idx }">{{ val }}</div> <div class="tag" v-for="(val, idx) in item.progress" :key="`${item.billId}-${val}-${idx}`"
:style="{ zIndex: item.progress.length - idx }">{{ val }}</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -102,7 +126,8 @@ ...@@ -102,7 +126,8 @@
<div class="right-footer"> <div class="right-footer">
<div class="footer-left">{{ `共 ${total} 项` }}</div> <div class="footer-left">{{ `共 ${total} 项` }}</div>
<div class="footer-right"> <div class="footer-right">
<el-pagination @current-change="handleCurrentChange" :page-size="pageSize" :current-page="currentPage" background layout="prev, pager, next" :total="total" /> <el-pagination @current-change="handleCurrentChange" :page-size="pageSize" :current-page="currentPage"
background layout="prev, pager, next" :total="total" />
</div> </div>
</div> </div>
</template> </template>
...@@ -111,7 +136,8 @@ ...@@ -111,7 +136,8 @@
<div class="member-card" v-for="item in memberList" :key="item.id"> <div class="member-card" v-for="item in memberList" :key="item.id">
<div class="member-card-top"> <div class="member-card-top">
<div class="member-avatar-wrap"> <div class="member-avatar-wrap">
<img class="member-avatar" :src="item.avatar || defaultAvatar" alt="avatar" @click="handleClickAvatar(item)" /> <img class="member-avatar" :src="item.avatar || defaultAvatar" alt="avatar"
@click="handleClickAvatar(item)" />
<div class="member-icon-row"> <div class="member-icon-row">
<img v-if="item.partyIcon" class="member-mini-icon-img" :src="item.partyIcon" alt="party" /> <img v-if="item.partyIcon" class="member-mini-icon-img" :src="item.partyIcon" alt="party" />
<img v-if="item.chamberIcon" class="member-mini-icon-img" :src="item.chamberIcon" alt="chamber" /> <img v-if="item.chamberIcon" class="member-mini-icon-img" :src="item.chamberIcon" alt="chamber" />
...@@ -122,10 +148,14 @@ ...@@ -122,10 +148,14 @@
<div class="member-name">{{ item.name || '-' }}</div> <div class="member-name">{{ item.name || '-' }}</div>
<div class="member-link">{{ item.billCountText || '0项提案 >' }}</div> <div class="member-link">{{ item.billCountText || '0项提案 >' }}</div>
</div> </div>
<div class="member-meta">{{ item.partyText || '-' }} · {{ item.chamberText || '-' }} · {{ item.termText || '-' }}</div> <div class="member-meta">{{ item.partyText || '-' }} · {{ item.chamberText || '-' }} · {{
item.termText ||
'-' }}</div>
<div class="member-committee">{{ item.committeeText || '-' }}</div> <div class="member-committee">{{ item.committeeText || '-' }}</div>
<div class="member-tags"> <div class="member-tags">
<div class="member-tag" v-for="(tag, idx) in item.focusTags" :key="`${item.id}-${tag}-${idx}`">{{ tag }}</div> <div class="member-tag" v-for="(tag, idx) in item.focusTags" :key="`${item.id}-${tag}-${idx}`">{{
tag }}
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -138,7 +168,8 @@ ...@@ -138,7 +168,8 @@
<div class="right-footer"> <div class="right-footer">
<div class="footer-left">{{ `共 ${memberTotal} 项` }}</div> <div class="footer-left">{{ `共 ${memberTotal} 项` }}</div>
<div class="footer-right"> <div class="footer-right">
<el-pagination @current-change="handleMemberCurrentChange" :page-size="memberPageSize" :current-page="memberCurrentPage" background layout="prev, pager, next" :total="memberTotal" /> <el-pagination @current-change="handleMemberCurrentChange" :page-size="memberPageSize"
:current-page="memberCurrentPage" background layout="prev, pager, next" :total="memberTotal" />
</div> </div>
</div> </div>
</div> </div>
...@@ -148,27 +179,25 @@ ...@@ -148,27 +179,25 @@
<div class="coop-card-header"> <div class="coop-card-header">
<div class="coop-members"> <div class="coop-members">
<div class="coop-member"> <div class="coop-member">
<img class="coop-avatar" :src="item.left.avatar || defaultAvatar" alt="avatar-left" @click="handleClickAvatar(item.left)" /> <img class="coop-avatar" :src="item.left.avatar || defaultAvatar" alt="avatar-left"
@click="handleClickAvatar(item.left)" />
<div class="coop-member-name" :title="item.left.name">{{ item.left.name }}</div> <div class="coop-member-name" :title="item.left.name">{{ item.left.name }}</div>
</div> </div>
<div class="coop-dot">·</div> <div class="coop-dot">·</div>
<div class="coop-member"> <div class="coop-member">
<img class="coop-avatar" :src="item.right.avatar || defaultAvatar" alt="avatar-right" @click="handleClickAvatar(item.right)" /> <img class="coop-avatar" :src="item.right.avatar || defaultAvatar" alt="avatar-right"
@click="handleClickAvatar(item.right)" />
<div class="coop-member-name" :title="item.right.name">{{ item.right.name }}</div> <div class="coop-member-name" :title="item.right.name">{{ item.right.name }}</div>
</div> </div>
</div> </div>
<div class="coop-count"> <div class="coop-count" @click="handleCooperationToDataLibrary(item)">
{{ item.totalText }} {{ item.totalText }}
</div> </div>
<slot name="coop-extra" :relation="item" /> <slot name="coop-extra" :relation="item" />
</div> </div>
<div class="coop-proposals"> <div class="coop-proposals">
<div <div class="coop-proposal-item" v-for="proposal in item.proposals" :key="proposal.billId"
class="coop-proposal-item" @click="handleClickCoopProposal(proposal)">
v-for="proposal in item.proposals"
:key="proposal.billId"
@click="handleClickCoopProposal(proposal)"
>
<div class="coop-proposal-main"> <div class="coop-proposal-main">
<div class="coop-proposal-title"> <div class="coop-proposal-title">
<span class="year">{{ proposal.year }}</span> <span class="year">{{ proposal.year }}</span>
...@@ -186,14 +215,8 @@ ...@@ -186,14 +215,8 @@
<div class="right-footer"> <div class="right-footer">
<div class="footer-left">{{ `共 ${coopTotal} 项` }}</div> <div class="footer-left">{{ `共 ${coopTotal} 项` }}</div>
<div class="footer-right"> <div class="footer-right">
<el-pagination <el-pagination @current-change="handleCoopCurrentChange" :page-size="coopPageSize"
@current-change="handleCoopCurrentChange" :current-page="coopCurrentPage" background layout="prev, pager, next" :total="coopTotal" />
:page-size="coopPageSize"
:current-page="coopCurrentPage"
background
layout="prev, pager, next"
:total="coopTotal"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -215,17 +238,13 @@ ...@@ -215,17 +238,13 @@
<!-- <div class="coop-summary" :title="item.desc"> <!-- <div class="coop-summary" :title="item.desc">
{{ item.desc }} {{ item.desc }}
</div> --> </div> -->
<div class="coop-count"> <div class="coop-count" @click="handleToDataLibrary(item)">
{{ `${item.proposalSize ?? (item.bills || []).length}项重点法案` }} {{ `${item.proposalSize ?? (item.bills || []).length}项重点法案` }}
</div> </div>
</div> </div>
<div class="coop-proposals"> <div class="coop-proposals">
<div <div class="coop-proposal-item" v-for="bill in item.bills"
class="coop-proposal-item" :key="`${item.id}-${bill.billId || bill.title}`" @click="handleClickCommitteeBill(bill)">
v-for="bill in item.bills"
:key="`${item.id}-${bill.billId || bill.title}`"
@click="handleClickCommitteeBill(bill)"
>
<div class="coop-proposal-main"> <div class="coop-proposal-main">
<div class="coop-proposal-subtitle" :title="bill.title"> <div class="coop-proposal-subtitle" :title="bill.title">
{{ bill.title }} {{ bill.title }}
...@@ -239,14 +258,8 @@ ...@@ -239,14 +258,8 @@
<div class="right-footer"> <div class="right-footer">
<div class="footer-left">{{ `共 ${committeeTotal} 项` }}</div> <div class="footer-left">{{ `共 ${committeeTotal} 项` }}</div>
<div class="footer-right"> <div class="footer-right">
<el-pagination <el-pagination @current-change="handleCommitteeCurrentChange" :page-size="committeePageSize"
@current-change="handleCommitteeCurrentChange" :current-page="committeeCurrentPage" background layout="prev, pager, next" :total="committeeTotal" />
:page-size="committeePageSize"
:current-page="committeeCurrentPage"
background
layout="prev, pager, next"
:total="committeeTotal"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -455,7 +468,7 @@ const handleClickAvatar = async member => { ...@@ -455,7 +468,7 @@ const handleClickAvatar = async member => {
} else { } else {
ElMessage.warning("找不到当前人员的类型值!"); ElMessage.warning("找不到当前人员的类型值!");
} }
} catch (error) {} } catch (error) { }
}; };
const handleClickCommitteeBill = bill => { const handleClickCommitteeBill = bill => {
...@@ -490,7 +503,7 @@ const handleGetCommitteeList = async () => { ...@@ -490,7 +503,7 @@ const handleGetCommitteeList = async () => {
const descText = billInfoPage[0]?.originDepart || ""; const descText = billInfoPage[0]?.originDepart || "";
return { return {
id: item.id, id: item.id,
nameEn:item.nameEn || "", nameEn: item.nameEn || "",
avatar: "", avatar: "",
name: item.name || "-", name: item.name || "-",
desc: descText, desc: descText,
...@@ -586,7 +599,7 @@ const handleGetHylyList = async () => { ...@@ -586,7 +599,7 @@ const handleGetHylyList = async () => {
try { try {
const res = await getHylyList(); const res = await getHylyList();
cateKuList.value = res.data || []; cateKuList.value = res.data || [];
} catch (error) {} } catch (error) { }
}; };
const handleGetPostOrgList = async () => { const handleGetPostOrgList = async () => {
...@@ -596,7 +609,7 @@ const handleGetPostOrgList = async () => { ...@@ -596,7 +609,7 @@ const handleGetPostOrgList = async () => {
const list = (res.data || []).filter(item => item.departmentId); const list = (res.data || []).filter(item => item.departmentId);
postOrgList.value = [{ departmentName: "全部委员会", departmentId: "全部委员会" }, ...list]; postOrgList.value = [{ departmentName: "全部委员会", departmentId: "全部委员会" }, ...list];
} }
} catch (error) {} } catch (error) { }
}; };
const handleGetPostMemberList = async () => { const handleGetPostMemberList = async () => {
...@@ -606,7 +619,7 @@ const handleGetPostMemberList = async () => { ...@@ -606,7 +619,7 @@ const handleGetPostMemberList = async () => {
const list = (res.data || []).filter(item => item.memberId); const list = (res.data || []).filter(item => item.memberId);
postMemberList.value = [{ memberName: "全部提出议员", memberId: "全部提出议员" }, ...list]; postMemberList.value = [{ memberName: "全部提出议员", memberId: "全部提出议员" }, ...list];
} }
} catch (error) {} } catch (error) { }
}; };
// 获取资源库法案列表 // 获取资源库法案列表
...@@ -844,6 +857,40 @@ const handleCommitteeCurrentChange = page => { ...@@ -844,6 +857,40 @@ const handleCommitteeCurrentChange = page => {
props.onAfterPageChange && props.onAfterPageChange(); props.onAfterPageChange && props.onAfterPageChange();
}; };
// 议员合作关系跳转至数据资源库
const handleCooperationToDataLibrary = (item) => {
console.log('item', item);
console.log('activeAreaList', activeAreaList.value);
console.log('areaOptions', areaOptions.value);
}
// 委员会跳转至数据资源库
const handleToDataLibrary = (item) => {
let congressStr = '全部议院'
console.log('item', item);
console.log('activeYyList', activeYyList.value);
if(activeYyList.value && activeYyList.value.length === 1) {
if(activeYyList.value[0] === 'S') {
congressStr = '参议院'
} else if(activeYyList.value[0] === 'H') {
congressStr = '众议院'
}
}
const param = {
selectedOrg: item.name,
selectedCongress: congressStr
}
const route = router.resolve({
path: "/dataLibrary/countryBill",
query: param
});
window.open(route.href, "_blank");
}
onMounted(() => { onMounted(() => {
handleGetHylyList(); handleGetHylyList();
handleGetPostOrgList(); handleGetPostOrgList();
...@@ -1342,6 +1389,11 @@ onMounted(() => { ...@@ -1342,6 +1389,11 @@ onMounted(() => {
font-weight: 500; font-weight: 500;
line-height: 22px; line-height: 22px;
margin-left: auto; margin-left: auto;
cursor: pointer;
&:hover {
text-decoration: underline;
}
} }
.coop-proposals { .coop-proposals {
......
...@@ -52,8 +52,8 @@ ...@@ -52,8 +52,8 @@
<div class="content-header"> <div class="content-header">
<ChartHeader :list="staticsDemensionList" @clickItem="handleClickDemensionItem"> <ChartHeader :list="staticsDemensionList" @clickItem="handleClickDemensionItem">
<template #chart-header-right> <template #chart-header-right>
<el-select v-model="selectedTime" placeholder="选择时间" style="width: 150px" <el-select v-model="selectedTime" placeholder="选择时间" style="width: 150px" v-show="curDemension === '提案时间'"
v-show="curDemension === '提案时间'" @change="handleChangeTime"> @change="handleChangeTime">
<el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
...@@ -77,7 +77,6 @@ ...@@ -77,7 +77,6 @@
<div class="data-main-box" v-else> <div class="data-main-box" v-else>
<div class="data-main-box-header"> <div class="data-main-box-header">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<!-- <img src="@/views/dataLibrary/assets/icons/data-active.svg" alt=""> -->
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
</div> </div>
<div class="num-box text-title-3-bold"> <div class="num-box text-title-3-bold">
...@@ -923,7 +922,17 @@ const fetchTableData = async () => { ...@@ -923,7 +922,17 @@ const fetchTableData = async () => {
timer3.value = setTimeout(() => { timer3.value = setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '提案时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}
}) })
} catch (error) { } catch (error) {
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="chart-main-box" v-if="isShowChart"> <div class="chart-main-box" v-if="isShowChart" v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="info-box"> <div class="info-box">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box box-glow" v-else> <div class="data-main-box box-glow" v-else v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="data-main-box-header"> <div class="data-main-box-header">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box-main-content" v-loading="loading" element-loading-text="数据加载中,请稍候..."> <div class="data-main-box-main-content">
<el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange" <el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange"
@select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }"> @select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }">
<el-table-column type="selection" width="40" /> <el-table-column type="selection" width="40" />
...@@ -794,7 +794,7 @@ const fetchTableData = async () => { ...@@ -794,7 +794,7 @@ const fetchTableData = async () => {
} }
staticsDemensionList.value[4].chartTypeList[0].data = Object.entries(res.data.aggregationIsSanctioned).map(([key, value]) => ({ staticsDemensionList.value[4].chartTypeList[0].data = Object.entries(res.data.aggregationIsSanctioned).map(([key, value]) => ({
name: key, name: key === 'Y' ? '是' : '否',
value: Number(value) value: Number(value)
})) }))
...@@ -808,7 +808,17 @@ const fetchTableData = async () => { ...@@ -808,7 +808,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '成立时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.chartTypeList[0].data curChartData.value = curDemensionItem.chartTypeList[0].data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.chartTypeList[0].quatarData
} else {
curChartData.value = curDemensionItem.chartTypeList[0].yearData
}
} else {
curChartData.value = curDemensionItem.chartTypeList[0].data
}
}) })
} catch (error) { } catch (error) {
......
...@@ -774,7 +774,17 @@ const fetchTableData = async () => { ...@@ -774,7 +774,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '发布时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}
}) })
} catch (error) { } catch (error) {
......
...@@ -683,7 +683,17 @@ const fetchTableData = async () => { ...@@ -683,7 +683,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '制裁时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}
}) })
loading.value = false loading.value = false
} catch (error) { } catch (error) {
......
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
@close="handleCloseCurTag(tag, index)" /> @close="handleCloseCurTag(tag, index)" />
</div> </div>
<div class="header-footer-right"> <div class="header-footer-right">
<HeaderBtnBox :isShowAll="isFolderAll" :isShowAllBtn="false" @show-all="handleSwitchFolderAll" @clear="handleClear" <HeaderBtnBox :isShowAll="isFolderAll" :isShowAllBtn="false" @show-all="handleSwitchFolderAll"
@confirm="handleConfirm" /> @clear="handleClear" @confirm="handleConfirm" />
</div> </div>
</div> </div>
</div> </div>
...@@ -612,7 +612,17 @@ const fetchTableData = async () => { ...@@ -612,7 +612,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '制裁时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}
}) })
loading.value = false loading.value = false
} catch (error) { } catch (error) {
......
...@@ -862,7 +862,17 @@ const fetchTableData = async () => { ...@@ -862,7 +862,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '制裁时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}
}) })
loading.value = false loading.value = false
} catch (error) { } catch (error) {
......
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
@close="handleCloseCurTag(tag, index)" /> @close="handleCloseCurTag(tag, index)" />
</div> </div>
<div class="header-footer-right"> <div class="header-footer-right">
<HeaderBtnBox :isShowAll="isFolderAll" :isShowAllBtn="false" @show-all="handleSwitchFolderAll" @clear="handleClear" <HeaderBtnBox :isShowAll="isFolderAll" :isShowAllBtn="false" @show-all="handleSwitchFolderAll"
@confirm="handleConfirm" /> @clear="handleClear" @confirm="handleConfirm" />
</div> </div>
</div> </div>
</div> </div>
...@@ -613,7 +613,17 @@ const fetchTableData = async () => { ...@@ -613,7 +613,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '制裁时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data
}
}) })
loading.value = false loading.value = false
} catch (error) { } catch (error) {
...@@ -1010,6 +1020,7 @@ onMounted(async () => { ...@@ -1010,6 +1020,7 @@ onMounted(async () => {
} }
} }
} }
.data-main-box { .data-main-box {
width: 1568px; width: 1568px;
min-height: 810px; min-height: 810px;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="chart-main-box" v-if="isShowChart"> <div class="chart-main-box" v-if="isShowChart" v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="info-box"> <div class="info-box">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box" v-else> <div class="data-main-box" v-else v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="data-main-box-header"> <div class="data-main-box-header">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box-main-content" v-loading="loading" element-loading-text="数据加载中,请稍候..."> <div class="data-main-box-main-content">
<el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange" <el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange"
@select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }"> @select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }">
<el-table-column type="selection" width="40" /> <el-table-column type="selection" width="40" />
...@@ -152,14 +152,6 @@ import { getProvinceList, getCountryList, getEntityTypes } from '@/api/comprehen ...@@ -152,14 +152,6 @@ import { getProvinceList, getCountryList, getEntityTypes } from '@/api/comprehen
const route = useRoute(); const route = useRoute();
const isShowProvinceBox = computed(() => {
let isShow = false
if (isFolderAll.value && (selectedCountry.value === '0101' || selectedCountry.value === '全部国家')) {
isShow = true
}
return isShow
})
// 图表/数据 // 图表/数据
const isShowChart = ref(false) const isShowChart = ref(false)
// 点击切换数据/图表 // 点击切换数据/图表
...@@ -170,17 +162,17 @@ const handleSwitchChartData = () => { ...@@ -170,17 +162,17 @@ const handleSwitchChartData = () => {
return item.name === curDemension.value return item.name === curDemension.value
})[0] })[0]
// setTimeout(() => { // setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0].name
if (curDemension.value === '成立时间') { if (curDemension.value === '成立时间') {
if (selectedTime.value === '按月度统计') { if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.chartTypeList[0].data
} else if (selectedTime.value === '按季度统计') { } else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData curChartData.value = curDemensionItem.chartTypeList[0].quatarData
} else { } else {
curChartData.value = curDemensionItem.yearData curChartData.value = curDemensionItem.chartTypeList[0].yearData
} }
} else { } else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.chartTypeList[0].data
} }
// }) // })
} }
...@@ -273,13 +265,13 @@ const handleClickDemensionItem = (val) => { ...@@ -273,13 +265,13 @@ const handleClickDemensionItem = (val) => {
val.active = true val.active = true
curDemension.value = val.name curDemension.value = val.name
setTimeout(() => { setTimeout(() => {
activeChart.value = val.chartTypeList[0] activeChart.value = val.chartTypeList[0].name
if (curDemension.value === '成立时间' && selectedTime.value === '按年度统计') { if (curDemension.value === '成立时间' && selectedTime.value === '按年度统计') {
curChartData.value = val.yearData curChartData.value = val.chartTypeList[0].yearData
} else if (curDemension.value === '成立时间' && selectedTime.value === '按季度统计') { } else if (curDemension.value === '成立时间' && selectedTime.value === '按季度统计') {
curChartData.value = val.quatarData curChartData.value = val.chartTypeList[0].quatarData
} else { } else {
curChartData.value = val.data curChartData.value = val.chartTypeList[0].data
} }
}) })
} }
...@@ -307,17 +299,17 @@ const handleChangeTime = value => { ...@@ -307,17 +299,17 @@ const handleChangeTime = value => {
if (value === '按月度统计') { if (value === '按月度统计') {
setTimeout(() => { setTimeout(() => {
activeChart.value = curChart activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].data curChartData.value = staticsDemensionList.value[0].chartTypeList[0].data
}) })
} else if (value === '按季度统计') { } else if (value === '按季度统计') {
setTimeout(() => { setTimeout(() => {
activeChart.value = curChart activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].quatarData curChartData.value = staticsDemensionList.value[0].chartTypeList[0].quatarData
}) })
} else { } else {
setTimeout(() => { setTimeout(() => {
activeChart.value = curChart activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].yearData curChartData.value = staticsDemensionList.value[0].chartTypeList[0].yearData
}) })
} }
} }
...@@ -371,7 +363,13 @@ const activeChart = ref('') // 当前激活的图表 ...@@ -371,7 +363,13 @@ const activeChart = ref('') // 当前激活的图表
const handleSwitchActiveChart = val => { const handleSwitchActiveChart = val => {
activeChart.value = val.name activeChart.value = val.name
const curChartItem = curChartTypeList.value.filter(item => item.name === val.name)[0] const curChartItem = curChartTypeList.value.filter(item => item.name === val.name)[0]
if (curDemension.value === '成立时间' && selectedTime.value === '按年度统计') {
curChartData.value = curChartItem.yearData
} else if (curDemension.value === '成立时间' && selectedTime.value === '按季度统计') {
curChartData.value = curChartItem.quatarData
} else {
curChartData.value = curChartItem.data curChartData.value = curChartItem.data
}
} }
// 数据- 是否全选 // 数据- 是否全选
...@@ -532,34 +530,38 @@ const fetchTableData = async () => { ...@@ -532,34 +530,38 @@ const fetchTableData = async () => {
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
tableData.value = res.data.records tableData.value = res.data.records
totalNum.value = res.data.total totalNum.value = res.data.total
staticsDemensionList.value[0].data = { staticsDemensionList.value[0].chartTypeList[0].data = {
dataX: Object.keys(res.data.aggregationsDate),
dataY: Object.values(res.data.aggregationsDate).map(value => Number(value))
}
staticsDemensionList.value[0].chartTypeList[0].quatarData = {
dataX: Object.keys(res.data.aggregationsQuarter),
dataY: Object.values(res.data.aggregationsQuarter).map(value => Number(value))
}
staticsDemensionList.value[0].chartTypeList[0].yearData = {
dataX: Object.keys(res.data.aggregationsYear),
dataY: Object.values(res.data.aggregationsYear).map(value => Number(value))
}
staticsDemensionList.value[0].chartTypeList[1].data = {
dataX: Object.keys(res.data.aggregationsDate), dataX: Object.keys(res.data.aggregationsDate),
dataY: Object.values(res.data.aggregationsDate).map(value => Number(value)) dataY: Object.values(res.data.aggregationsDate).map(value => Number(value))
} }
staticsDemensionList.value[0].quatarData = { staticsDemensionList.value[0].chartTypeList[1].quatarData = {
dataX: Object.keys(res.data.aggregationsQuarter), dataX: Object.keys(res.data.aggregationsQuarter),
dataY: Object.values(res.data.aggregationsQuarter).map(value => Number(value)) dataY: Object.values(res.data.aggregationsQuarter).map(value => Number(value))
} }
staticsDemensionList.value[0].yearData = { staticsDemensionList.value[0].chartTypeList[1].yearData = {
dataX: Object.keys(res.data.aggregationsYear), dataX: Object.keys(res.data.aggregationsYear),
dataY: Object.values(res.data.aggregationsYear).map(value => Number(value)) dataY: Object.values(res.data.aggregationsYear).map(value => Number(value))
} }
staticsDemensionList.value[1].data = Object.entries(res.data.aggregationCountryId).map(([key, value]) => ({ staticsDemensionList.value[1].chartTypeList[0].data = Object.entries(res.data.aggregationCountryId).map(([key, value]) => ({
name: key, name: key,
value: Number(value) value: Number(value)
})) }))
// staticsDemensionList.value[2].data = Object.entries(res.data.aggregationSentityTypeCode).map(([key, value]) => ({ staticsDemensionList.value[1].chartTypeList[1].data = {
// name: key, dataX: Object.keys(res.data.aggregationCountryId),
// value: Number(value) dataY: Object.values(res.data.aggregationCountryId).map(value => Number(value))
// })) }
// staticsDemensionList.value[3].data = Object.entries(res.data.aggregationCountryId).map(([key, value]) => ({
// name: key,
// value: Number(value)
// }))
// staticsDemensionList.value[4].data = Object.entries(res.data.aggregationProvinceName).map(([key, value]) => ({
// name: key,
// value: Number(value)
// }))
} }
...@@ -570,8 +572,18 @@ const fetchTableData = async () => { ...@@ -570,8 +572,18 @@ const fetchTableData = async () => {
activeChart.value = '' activeChart.value = ''
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0].name
curChartData.value = curDemensionItem.data if (curDemension.value === '成立时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.chartTypeList[0].data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.chartTypeList[0].quatarData
} else {
curChartData.value = curDemensionItem.chartTypeList[0].yearData
}
} else {
curChartData.value = curDemensionItem.chartTypeList[0].data
}
}) })
loading.value = false loading.value = false
} catch (error) { } catch (error) {
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="chart-main-box" v-if="isShowChart"> <div class="chart-main-box" v-if="isShowChart" v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="info-box"> <div class="info-box">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box" v-else> <div class="data-main-box" v-else v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="data-main-box-header"> <div class="data-main-box-header">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box-main-content" v-loading="loading" element-loading-text="数据加载中,请稍候..."> <div class="data-main-box-main-content">
<el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange" <el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange"
@select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }"> @select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }">
<el-table-column type="selection" width="40" /> <el-table-column type="selection" width="40" />
...@@ -586,7 +586,17 @@ const fetchTableData = async () => { ...@@ -586,7 +586,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0]
if (curDemension.value === '发布时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.data
}
}) })
} catch (error) { } catch (error) {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="chart-main-box" v-if="isShowChart"> <div class="chart-main-box" v-if="isShowChart" v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="info-box"> <div class="info-box">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -34,13 +34,13 @@ ...@@ -34,13 +34,13 @@
<div class="content-box"> <div class="content-box">
<div class="content-header"> <div class="content-header">
<ChartHeader :list="staticsDemensionList" @clickItem="handleClickDemensionItem"> <ChartHeader :list="staticsDemensionList" @clickItem="handleClickDemensionItem">
<template #chart-header-right> <!-- <template #chart-header-right>
<el-select v-model="selectedTime" placeholder="选择时间" style="width: 150px" v-show="curDemension === '发布时间'" <el-select v-model="selectedTime" placeholder="选择时间" style="width: 150px" v-show="curDemension === '发布时间'"
@change="handleChangeTime"> @change="handleChangeTime">
<el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in timeList" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</template> </template> -->
</ChartHeader> </ChartHeader>
</div> </div>
<div class="content-main"> <div class="content-main">
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box" v-else> <div class="data-main-box" v-else v-loading="loading" element-loading-text="数据加载中,请稍候...">
<div class="data-main-box-header"> <div class="data-main-box-header">
<div class="switch-box" @click="handleSwitchChartData"> <div class="switch-box" @click="handleSwitchChartData">
<DataChartSwitchBox :is-show-data="!isShowChart" /> <DataChartSwitchBox :is-show-data="!isShowChart" />
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="data-main-box-main-content" v-loading="loading" element-loading-text="数据加载中,请稍候..."> <div class="data-main-box-main-content">
<el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange" <el-table ref="tableRef" :data="tableData" row-key="id" @selection-change="handleSelectionChange"
@select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }"> @select="handleSelect" @select-all="handleSelectAll" style="width: 100%" :row-style="{ height: '52px' }">
<el-table-column type="selection" width="40" /> <el-table-column type="selection" width="40" />
...@@ -168,8 +168,8 @@ const handleSwitchChartData = () => { ...@@ -168,8 +168,8 @@ const handleSwitchChartData = () => {
const curDemensionItem = staticsDemensionList.value.filter(item => { const curDemensionItem = staticsDemensionList.value.filter(item => {
return item.name === curDemension.value return item.name === curDemension.value
})[0] })[0]
activeChart.value = curDemensionItem.chartTypeList[0] activeChart.value = curDemensionItem.chartTypeList[0].name
curChartData.value = curDemensionItem.data curChartData.value = curDemensionItem.chartTypeList[0].data
} }
} }
...@@ -271,8 +271,8 @@ const handleClickDemensionItem = (val) => { ...@@ -271,8 +271,8 @@ const handleClickDemensionItem = (val) => {
}) })
val.active = true val.active = true
nextTick(() => { nextTick(() => {
activeChart.value = val.chartTypeList[0] activeChart.value = val.chartTypeList[0].name
curChartData.value = val.data curChartData.value = val.chartTypeList[0].data
curDemension.value = val.name curDemension.value = val.name
}) })
} }
...@@ -294,26 +294,26 @@ const timeList = ref([ ...@@ -294,26 +294,26 @@ const timeList = ref([
value: '按月度统计' value: '按月度统计'
}, },
]) ])
const handleChangeTime = value => { // const handleChangeTime = value => {
let curChart = activeChart.value // let curChart = activeChart.value
activeChart.value = '' // activeChart.value = ''
if (value === '按月度统计') { // if (value === '按月度统计') {
setTimeout(() => { // setTimeout(() => {
activeChart.value = curChart // activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].data // curChartData.value = staticsDemensionList.value[0].data
}) // })
} else if (value === '按季度统计') { // } else if (value === '按季度统计') {
setTimeout(() => { // setTimeout(() => {
activeChart.value = curChart // activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].quatarData // curChartData.value = staticsDemensionList.value[0].quatarData
}) // })
} else { // } else {
setTimeout(() => { // setTimeout(() => {
activeChart.value = curChart // activeChart.value = curChart
curChartData.value = staticsDemensionList.value[0].yearData // curChartData.value = staticsDemensionList.value[0].yearData
}) // })
} // }
} // }
// 激活的标签列表 // 激活的标签列表
...@@ -617,19 +617,38 @@ const fetchTableData = async () => { ...@@ -617,19 +617,38 @@ const fetchTableData = async () => {
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
tableData.value = res.data.records tableData.value = res.data.records
totalNum.value = res.data.total totalNum.value = res.data.total
staticsDemensionList.value[0].data = Object.entries(res.data.aggregationCountryId).map(([key, value]) => ({ staticsDemensionList.value[0].chartTypeList[0].data = Object.entries(res.data.aggregationCountryId).map(([key, value]) => ({
name: key, name: key,
value: Number(value) value: Number(value)
})) }))
staticsDemensionList.value[1].data = Object.entries(res.data.aggregationsAffiliation).map(([key, value]) => ({ staticsDemensionList.value[0].chartTypeList[1].data = {
dataX: Object.keys(res.data.aggregationCountryId),
dataY: Object.values(res.data.aggregationCountryId).map(value => Number(value))
}
staticsDemensionList.value[1].chartTypeList[0].data = Object.entries(res.data.aggregationsAffiliation).map(([key, value]) => ({
name: key, name: key,
value: Number(value) value: Number(value)
})) }))
staticsDemensionList.value[2].data = Object.entries(res.data.aggregationsorganizationName).map(([key, value]) => ({ staticsDemensionList.value[1].chartTypeList[1].data = {
dataX: Object.keys(res.data.aggregationsAffiliation),
dataY: Object.values(res.data.aggregationsAffiliation).map(value => Number(value))
}
staticsDemensionList.value[2].chartTypeList[0].data = Object.entries(res.data.aggregationsorganizationName).map(([key, value]) => ({
name: key, name: key,
value: Number(value) value: Number(value)
})) }))
staticsDemensionList.value[2].chartTypeList[1].data = {
dataX: Object.keys(res.data.aggregationsorganizationName),
dataY: Object.values(res.data.aggregationsorganizationName).map(value => Number(value))
}
staticsDemensionList.value[3].chartTypeList[0].data = Object.entries(res.data.aggregationPersonType).map(([key, value]) => ({
name: key,
value: Number(value)
}))
staticsDemensionList.value[3].chartTypeList[1].data = {
dataX: Object.keys(res.data.aggregationPersonType),
dataY: Object.values(res.data.aggregationPersonType).map(value => Number(value))
}
} }
const curDemensionItem = staticsDemensionList.value.filter(item => { const curDemensionItem = staticsDemensionList.value.filter(item => {
......
...@@ -715,7 +715,17 @@ const fetchTableData = async () => { ...@@ -715,7 +715,17 @@ const fetchTableData = async () => {
setTimeout(() => { setTimeout(() => {
activeChart.value = curDemensionItem.chartTypeList[0]; activeChart.value = curDemensionItem.chartTypeList[0];
curChartData.value = curDemensionItem.data; if (curDemension.value === '发布时间') {
if (selectedTime.value === '按月度统计') {
curChartData.value = curDemensionItem.data
} else if (selectedTime.value === '按季度统计') {
curChartData.value = curDemensionItem.quatarData
} else {
curChartData.value = curDemensionItem.yearData
}
} else {
curChartData.value = curDemensionItem.data
}
}); });
} catch (error) { } catch (error) {
console.error(error); console.error(error);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论