提交 ec7ea038 authored 作者: huhuiqing's avatar huhuiqing

政令问题修复

上级 581308d1
...@@ -113,8 +113,7 @@ ...@@ -113,8 +113,7 @@
</div> </div>
</div> </div>
<div class="home-main-header-item-box"> <div class="home-main-header-item-box">
<div class="item" v-for="(item, index) in govInsList" :key="index" <div class="item" v-for="(item, index) in govInsList" :key="index" @click="handleToInstitution(item)">
@click="handleToInstitution(item)">
<div class="item-left"> <div class="item-left">
<img :src="item.img ? item.img : DefaultIcon2" alt="" /> <img :src="item.img ? item.img : DefaultIcon2" alt="" />
</div> </div>
...@@ -156,7 +155,7 @@ ...@@ -156,7 +155,7 @@
<div v-else class="box1-main-left-img-mock"> <div v-else class="box1-main-left-img-mock">
<img class="img-mock-badge-img" src="./assets/images/badge.png"> <img class="img-mock-badge-img" src="./assets/images/badge.png">
<p class="img-mock-badge-title">行政令</p> <p class="img-mock-badge-title">行政令</p>
<p class="img-mock-badge-title">{{item.name}}</p> <p class="img-mock-badge-title">{{ item.name }}</p>
<!-- <p class="img-mock-badge-org">The White House</p> --> <!-- <p class="img-mock-badge-org">The White House</p> -->
</div> </div>
</div> </div>
...@@ -240,8 +239,7 @@ ...@@ -240,8 +239,7 @@
</div> </div>
</div> </div>
<div class="box3-main"> <div class="box3-main">
<div class="box3-item" v-for="(news, index) in newsList" :key="index" <div class="box3-item" v-for="(news, index) in newsList" :key="index" @click="handleToNewsAnalysis(news)">
@click="handleToNewsAnalysis(news)">
<div class="left"> <div class="left">
<img :src="news.img ? news.img : DefaultIconNews" alt="" /> <img :src="news.img ? news.img : DefaultIconNews" alt="" />
</div> </div>
...@@ -269,9 +267,8 @@ ...@@ -269,9 +267,8 @@
</div> </div>
<div class="box4-main"> <div class="box4-main">
<MessageBubble v-for="(item, index) in messageList" @click="handleClickPerson(item)" <MessageBubble v-for="(item, index) in messageList" @click="handleClickPerson(item)"
@info-click="handleMediaClick(item)" :key="index" @info-click="handleMediaClick(item)" :key="index" :avatar="item.img ? item.img : DefaultIcon1"
:avatar="item.img ? item.img : DefaultIcon1" :name="item.name" :time="item.time" :name="item.name" :time="item.time" :source="item.source" :content="item.content" />
:source="item.source" :content="item.content" />
<!-- <div class="box4-main-item" v-for="(item, index) in messageList" :key="index"> <!-- <div class="box4-main-item" v-for="(item, index) in messageList" :key="index">
<div class="left" @click="handleClickPerson(item)"> <div class="left" @click="handleClickPerson(item)">
<img :src="item.img ? item.img : DefaultIcon1" alt="" /> <img :src="item.img ? item.img : DefaultIcon1" alt="" />
...@@ -300,8 +297,7 @@ ...@@ -300,8 +297,7 @@
<div class="box5-selectbox"> <div class="box5-selectbox">
<el-select @change="handleBox5YearChange" v-model="box5SelectedYear" placeholder="选择时间" <el-select @change="handleBox5YearChange" v-model="box5SelectedYear" placeholder="选择时间"
style="width: 120px"> style="width: 120px">
<el-option v-for="item in box5YearList" :key="item.value" :label="item.label" <el-option v-for="item in box5YearList" :key="item.value" :label="item.label" :value="item.value" />
:value="item.value" />
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -319,8 +315,7 @@ ...@@ -319,8 +315,7 @@
<div class="box6-selectbox"> <div class="box6-selectbox">
<el-select @change="handleBox6YearChange" v-model="box6SelectedYear" placeholder="选择时间" <el-select @change="handleBox6YearChange" v-model="box6SelectedYear" placeholder="选择时间"
style="width: 120px"> style="width: 120px">
<el-option v-for="item in box6YearList" :key="item.value" :label="item.label" <el-option v-for="item in box6YearList" :key="item.value" :label="item.label" :value="item.value" />
:value="item.value" />
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -336,8 +331,7 @@ ...@@ -336,8 +331,7 @@
<div class="header-title">{{ "关键行政令" }}</div> <div class="header-title">{{ "关键行政令" }}</div>
</div> </div>
<div class="box7-main"> <div class="box7-main">
<div class="box7-item" v-for="(item, index) in keyDecreeList" :key="index" <div class="box7-item" v-for="(item, index) in keyDecreeList" :key="index" @click="handleKeyDecree(item)">
@click="handleKeyDecree(item)">
<div class="icon"> <div class="icon">
<img src="./assets/images/warning.png" alt="" /> <img src="./assets/images/warning.png" alt="" />
</div> </div>
...@@ -393,9 +387,9 @@ ...@@ -393,9 +387,9 @@
</div> </div>
<div class="select-main"> <div class="select-main">
<div class="checkbox-group"> <div class="checkbox-group">
<el-checkbox v-for="type in decreeTypeList" :key="type.id" <el-checkbox v-for="type in decreeTypeList" :key="type.id" v-model="checkedDecreeType"
v-model="checkedDecreeType" :label="type.typeId" style="width: 180px" :label="type.typeId" style="width: 180px" class="filter-checkbox"
class="filter-checkbox" @change="handleChangeCheckedDecreeType"> @change="handleChangeCheckedDecreeType">
{{ type.typeName }} {{ type.typeName }}
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -408,9 +402,8 @@ ...@@ -408,9 +402,8 @@
</div> </div>
<div class="select-main"> <div class="select-main">
<div class="checkbox-group"> <div class="checkbox-group">
<el-checkbox v-for="cate in govInsList" :key="cate.id" v-model="checkedGovIns" <el-checkbox v-for="cate in govInsList" :key="cate.id" v-model="checkedGovIns" :label="cate.id"
:label="cate.id" style="width: 180px" class="filter-checkbox" style="width: 180px" class="filter-checkbox" @change="handleChangeCheckedGovIns">
@change="handleChangeCheckedGovIns">
{{ cate.name }} {{ cate.name }}
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -423,8 +416,9 @@ ...@@ -423,8 +416,9 @@
</div> </div>
<div class="select-main"> <div class="select-main">
<div class="checkbox-group"> <div class="checkbox-group">
<el-checkbox v-for="time in pubTime" :key="time.id" v-model="activePubTime" <el-checkbox v-for="time in pubTime" :key="time.id" v-model="activePubTime" :label="time.id"
:label="time.id" style="width: 100px" class="filter-checkbox"> style="width: 100px" class="filter-checkbox"
@change="(checked) => handlePubTimeChange(time.id, checked)">
{{ time.name }} {{ time.name }}
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -437,8 +431,8 @@ ...@@ -437,8 +431,8 @@
</div> </div>
<div class="select-main select-main1"> <div class="select-main select-main1">
<div class="checkbox-group"> <div class="checkbox-group">
<el-checkbox v-for="area in areaList" :key="area.id" v-model="activeAreaList" <el-checkbox v-for="area in areaList" :key="area.id" v-model="activeAreaList" :label="area.id"
:label="area.id" style="width: 100px"> style="width: 100px" @change="(checked) => handleAreaChange(area.id, checked)">
{{ area.name }} {{ area.name }}
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -457,7 +451,8 @@ ...@@ -457,7 +451,8 @@
@click="handleClickDecree(item)"> @click="handleClickDecree(item)">
<div class="main-item-left"> <div class="main-item-left">
<div class="left-left">{{ item.time.split('-')[0] }}<br>{{ item.time.split('-')[1]}}月{{ item.time.split('-')[2] }}日</div> <div class="left-left">{{ item.time.split('-')[0] }}<br>{{ item.time.split('-')[1] }}月{{
item.time.split('-')[2] }}日</div>
<div class="left-right"> <div class="left-right">
<div class="icon"> <div class="icon">
<img :src="item.orgImage ? item.orgImage : DefaultIcon2" alt="" /> <img :src="item.orgImage ? item.orgImage : DefaultIcon2" alt="" />
...@@ -493,9 +488,8 @@ ...@@ -493,9 +488,8 @@
{{ `共 ${totalDecreesNum} 项` }} {{ `共 ${totalDecreesNum} 项` }}
</div> </div>
<div class="footer-right"> <div class="footer-right">
<el-pagination @current-change="handleCurrentChange" :pageSize="10" <el-pagination @current-change="handleCurrentChange" :pageSize="10" :current-page="currentPage"
:current-page="currentPage" background layout="prev, pager, next" background layout="prev, pager, next" :total="totalDecreesNum" />
:total="totalDecreesNum" />
</div> </div>
</div> </div>
</div> </div>
...@@ -1078,7 +1072,7 @@ const handleBox8 = async () => { ...@@ -1078,7 +1072,7 @@ const handleBox8 = async () => {
}; };
// 资源库 // 资源库
const isSort = ref(true); // true 升序 false 倒序 const isSort = ref(false); // true 升序 false 倒序
const handleSwithSort = () => { const handleSwithSort = () => {
isSort.value = !isSort.value; isSort.value = !isSort.value;
}; };
...@@ -1113,21 +1107,21 @@ const areaList = ref([ ...@@ -1113,21 +1107,21 @@ const areaList = ref([
// { id: "量子科技", name: "量子科技" } // { id: "量子科技", name: "量子科技" }
]); ]);
const activeAreaList = ref(["1"]); const activeAreaList = ref(["1"]);
const handleGetAreaList = async () => { // const handleGetAreaList = async () => {
try { // try {
const res = await getDecreehylyList(); // const res = await getDecreehylyList();
console.log("行业领域列表", res); // console.log("行业领域列表", res);
if (res.code === 200 && res.data) { // if (res.code === 200 && res.data) {
areaList.value = res.data.map(item => { // areaList.value = res.data.map(item => {
return { // return {
name: item.name, // name: item.name,
id: item.id // id: item.id
}; // };
}); // });
console.log("areaList", areaList.value); // console.log("areaList", areaList.value);
} // }
} catch (error) { } // } catch (error) { }
}; // };
// 政令类型 // 政令类型
const decreeTypeList = ref([]); const decreeTypeList = ref([]);
...@@ -1148,6 +1142,7 @@ const handleChangeCheckedDecreeType = () => { ...@@ -1148,6 +1142,7 @@ const handleChangeCheckedDecreeType = () => {
} }
const pubTime = ref([ const pubTime = ref([
{ id: "all", name: "全选" },
{ id: "2026", name: "2026年" }, { id: "2026", name: "2026年" },
{ id: "2025", name: "2025年" }, { id: "2025", name: "2025年" },
{ id: "2024", name: "2024年" }, { id: "2024", name: "2024年" },
...@@ -1155,27 +1150,110 @@ const pubTime = ref([ ...@@ -1155,27 +1150,110 @@ const pubTime = ref([
{ id: "2022", name: "2022年" }, { id: "2022", name: "2022年" },
{ id: "2021", name: "2021年" }, { id: "2021", name: "2021年" },
{ id: "2020", name: "2020年" } { id: "2020", name: "2020年" }
// { id: "更早时间", name: "更早时间" }
]); ]);
const activePubTime = ref(["2026"]); const activePubTime = ref(["2026"]);
// 处理发布时间全选逻辑
const handlePubTimeChange = (id, checked) => {
const allIds = pubTime.value.filter(item => item.id !== 'all').map(item => item.id);
if (id === 'all') {
// 点击全选:选中所有或清空所有
activePubTime.value = checked ? ['all', ...allIds] : [];
} else {
const selectedIds = activePubTime.value.filter(itemId => itemId !== 'all');
const isAllSelected = selectedIds.length === allIds.length;
if (isAllSelected && !activePubTime.value.includes('all')) {
// 手动选中了所有年份,自动勾选全选
activePubTime.value = ['all', ...allIds];
} else if (!isAllSelected && activePubTime.value.includes('all')) {
// 取消某个选项,取消全选状态
activePubTime.value = selectedIds;
}
}
};
const handleAreaChange = (id, checked) => {
const allIds = areaList.value.filter(item => item.id !== 'all').map(item => item.id);
if (id === 'all') {
activeAreaList.value = checked ? ['all', ...allIds] : [];
} else {
const selectedIds = activeAreaList.value.filter(itemId => itemId !== 'all');
const isAllSelected = selectedIds.length === allIds.length;
if (isAllSelected && !activeAreaList.value.includes('all')) {
activeAreaList.value = ['all', ...allIds];
} else if (!isAllSelected && activeAreaList.value.includes('all')) {
activeAreaList.value = selectedIds;
}
}
};
// 修改获取涉及领域列表,添加全选选项
const handleGetAreaList = async () => {
try {
const res = await getDecreehylyList();
console.log("行业领域列表", res);
if (res.code === 200 && res.data) {
areaList.value = [
{ name: "全选", id: "all" },
...res.data.map(item => {
return {
name: item.name,
id: item.id
};
})
];
// 设置默认全选
activeAreaList.value = ['all', ...res.data.map(item => item.id)];
console.log("areaList", areaList.value);
// 获取列表后重新查询
handleGetDecreeOrderList();
}
} catch (error) { }
};
const totalDecreesNum = ref(0); const totalDecreesNum = ref(0);
const decreeList = ref([]); const decreeList = ref([]);
// 修改请求方法,处理全选时不传参数的情况
const handleGetDecreeOrderList = async () => { const handleGetDecreeOrderList = async () => {
const p0 = checkedGovIns.value.join(","); const p0 = checkedGovIns.value.join(",");
const p1 = activeAreaList.value.join(",");
const p2 = activePubTime.value.join(","); // 处理涉及领域:如果包含 all 或全选,则 researchTypeIds 为空(不传)
let p1 = '';
const allAreaIds = areaList.value.filter(item => item.id !== 'all').map(item => item.id);
const selectedAreaIds = activeAreaList.value.filter(id => id !== 'all');
if (!activeAreaList.value.includes('all') && selectedAreaIds.length > 0 && selectedAreaIds.length < allAreaIds.length) {
p1 = selectedAreaIds.join(",");
}
// 其他情况(包含all、长度为0、全部选中)p1保持为空,即不传researchTypeIds
// 处理发布时间:如果包含 all 或全选,则 years 为空(不传)
let p2 = '';
const allPubTimeIds = pubTime.value.filter(item => item.id !== 'all').map(item => item.id);
const selectedPubTimeIds = activePubTime.value.filter(id => id !== 'all');
if (!activePubTime.value.includes('all') && selectedPubTimeIds.length > 0 && selectedPubTimeIds.length < allPubTimeIds.length) {
p2 = selectedPubTimeIds.join(",");
}
// 其他情况(包含all、长度为0、全部选中)p2保持为空,即不传years
const params = { const params = {
currentPage: 0, currentPage: 0,
pageSize: 999999, pageSize: 999999,
proposeName: p0, proposeName: p0,
researchTypeIds: p1, researchTypeIds: p1, // 全选时不传(为空)
sortFun: isSort.value, sortFun: isSort.value,
years: p2, years: p2, // 全选时不传(为空)
typeIds: checkedDecreeType.value.toString() typeIds: checkedDecreeType.value.toString()
}; };
try { try {
const res = await getDecreeOrderList(params); const res = await getDecreeOrderList(params);
console.log("资源库列表", res); console.log("资源库列表", res);
...@@ -1191,17 +1269,18 @@ const handleGetDecreeOrderList = async () => { ...@@ -1191,17 +1269,18 @@ const handleGetDecreeOrderList = async () => {
tagList: item.industryList tagList: item.industryList
}; };
}); });
console.log("decreeList", decreeList.value);
} else { } else {
decreeList.value = []; decreeList.value = [];
totalDecreesNum.value = 0;
} }
} catch (error) { } catch (error) {
console.error("资源库列表error", error); console.error("资源库列表error", error);
decreeList.value = []; decreeList.value = [];
totalDecreesNum.value = 0;
} }
}; };
const curDecreeList = computed(() => { const curDecreeList = computed(() => {
const startIndex = (currentPage.value - 1) * pageSize.value; const startIndex = (currentPage.value - 1) * pageSize.value;
const endIndex = startIndex + pageSize.value; const endIndex = startIndex + pageSize.value;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论