This commit is contained in:
王创世 2025-07-04 13:15:56 +08:00
parent e0abba1a94
commit 6d292944da
11 changed files with 209 additions and 203 deletions

View File

@ -5,7 +5,7 @@
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="rightcon" id="aboutid" @scroll="hmScroll">
<div class="flex top_search ">
<div style="width: 350x;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
@ -28,7 +28,7 @@
</div>
<div :class="['lef_boxitem2', { 'active': cateid == item.id }]" v-for="(item, index) in newsListtyp"
:key="index" @click="getMesList(item.id, 1)">
<div class="lef_boxitem2_title">{{ item.name }}</div>
<div class="lef_boxitem2_title">{{ item.tabtitle }}</div>
</div>
</div>
<div class="rig_box">
@ -38,17 +38,16 @@
<img :src="`/img/key.png`" style="width: 22px;height: 22px;">
</div>
<div style="font-size: 18px;color: #323232;margin-left: 10px;">当前位置:首页 > 关于我们 > <span
style="color: #3B90DF;">{{newsListtyp.find(item => item.id == cateid)?.name
style="color: #3B90DF;">{{newsListtyp.find(item => item.id == cateid)?.tabtitle
}}</span></div>
</div>
<div style="background-color: #ffffff;width: 100%;padding: 18px;">
<div
style="font-weight: bold;font-size: 32px;color: #393939;text-align: center;padding: 25px 0px 25px 0;">
团市委的主要职责</div>
style="font-weight: bold;font-size: 32px;color: #393939;text-align: center;padding: 25px 0px 25px 0;">{{ info.title }}</div>
<div style="width: 100%;height: 3px;border-top: 1px dashed #BBBBBB;"></div>
<div
style="color: #999999;font-weight: 400;font-size: 16px;line-height: 25px;white-space: pre-line;">
<div v-html="ldbz"></div>
<div v-html="info.content"></div>
</div>
</div>
</div>
@ -79,136 +78,49 @@ import $api from '@/service/webRequest'
import emitter from '@/plugins/emitter'
const inputSearch = ref('');
const MesList = ref([]);
const newsListtyp = ref([{ id: 1, name: '领导班子' }, { id: 2, name: '​机构职能' }, { id: 3, name: '​部门设置' }, { id: 4, name: '直属单位' }, { id: 5, name: '​下属部门' }]);
const newsListtyp = ref([]);
const page = ref(1);
const total = ref(0);
const cateid = ref(1);
const cateid = ref(0);
const detailId = ref(null);
const ldbz = ref(`思想引领:筑牢青年理想信念根基​
​政治引领​
组织青年学习党的理论、方针政策,特别是习近平新时代中国特色社会主义思想,开展主题教育活动(如“青年大学习”“青马工程”),引导青年坚定“四个自信”,增强“两个维护”的自觉性。
​价值观培育​
弘扬社会主义核心价值观,通过榜样宣传、红色教育、网络思政等方式,引导青年树立正确的人生观、价值观。例如开展“青年五四奖章”“优秀共青团员”评选,宣传青年典型事迹。
​意识形态阵地建设​
加强青年网络舆论引导,管理团属新媒体平台(如微信公众号、微博、短视频账号),传播正能量,抵制错误思潮,维护网络空间清朗。
二、组织建设:夯实团的基层基础​
​团组织覆盖与规范化​
推动团的基层组织向新兴领域延伸(如非公企业、社会组织、互联网行业等),完善“智慧团建”系统,加强团员档案管理和组织关系转接。
​团员发展与教育​
严格团员发展程序,优化团员结构,开展团员意识教育,落实“三会两制一课”制度,增强团组织凝聚力和战斗力。
​团干部队伍建设​
选拔培养优秀团干部,组织专题培训、挂职锻炼,提升团干部的政治素养和业务能力,打造忠诚、干净、担当的骨干队伍。
三、服务青年:解决青年急难愁盼问题​
​就业创业支持​
联合人社部门、企业开展“千校万岗”招聘会、职业技能培训;搭建青年创业孵化基地,提供政策咨询、资金扶持(如“青创贷”)。
​婚恋与家庭服务​
举办青年联谊活动,搭建婚恋交友平台;关注青年育儿需求,推动普惠性托育服务。
​心理健康与法律援助​
开通12355青少年服务热线,提供心理咨询、法律咨询和权益维护服务,帮助青年缓解压力、应对困境。
四、维护青年权益:当好青年利益代言人​
​政策倡导与落实​
推动《中长期青年发展规划》在地方落地,参与制定青年发展相关政策,保障青年在教育、就业、住房等领域的合法权益。
​权益保护机制​
建立青少年权益代表制度,介入校园欺凌、劳动纠纷等案件;联合公检法司部门开展“法治进校园”“模拟法庭”等活动,提升青年法律意识。
​特殊群体关爱​
重点帮扶困境青少年(如留守儿童、残疾青年、失业青年),实施“希望工程”“阳光助学”等项目,提供物质帮扶和精神关怀。
五、志愿服务与社会动员​
​品牌志愿服务项目​
组织青年参与大型赛会服务(如马拉松、博览会)、社区治理、生态环保(“河小青”护河行动)、助老助残等志愿活动。
​应急响应与公益行动​
在自然灾害、公共卫生事件中组建青年突击队,开展物资调配、心理疏导等应急服务;发起公益募捐,支援弱势群体。
​志愿服务体系建设​
完善志愿者注册、培训、激励机制,推广“志愿汇”平台,推动志愿服务常态化、专业化。
六、创新创业与人才培养​
​青年创新创业扶持​
举办“创青春”创业大赛、青创论坛,对接风险投资和创业导师;推动高校与企业共建产学研合作平台。
​技能提升与职业发展​
开展“青年岗位能手”评选、职业技能竞赛,组织青年参与“工匠精神”培育计划,助力青年职业成长。
​青年人才引进与留用​
配合地方人才政策,吸引高校毕业生返乡就业;为高层次青年人才提供政策咨询、生活保障等配套服务。
七、对外交流与协同合作​
​青年交流项目​
组织与国内外青年团体的互访活动(如“国际青年领袖对话”),促进文化交流与经验共享。
​区域协同与资源整合​
联动工会、妇联、科协等群团组织,整合社会资源服务青年;与高校、企业共建实践基地。
​港澳台青年工作​
开展港澳台青年夏令营、实习计划,增进国家认同,推动融合发展。
八、桥梁纽带作用:传达青年声音​
​青年诉求调研与反馈​
定期开展青年发展状况调查,形成报告提交党委政府,推动青年关切问题纳入政策议程。
​参政议政渠道建设​
推荐优秀青年担任人大代表、政协委员,组织“共青团与人大代表、政协委员面对面”活动,畅通青年政治参与渠道。
  巴黎奥运赛场上,我国体育健儿奋勇争先,取得境外参赛最好成绩,彰显了青年一代的昂扬向上、自信阳光。海军、空军喜庆75岁生日,人民子弟兵展现新风貌。面对洪涝、台风等自然灾害,广大党员干部冲锋在前,大家众志成城、守望相助。无数劳动者、建设者、创业者,都在为梦想拼搏。我为国家勋章和国家荣誉称号获得者颁奖,光荣属于他们,也属于每一个挺膺担当的奋斗者。
  当今世界变乱交织,中国作为负责任大国,积极推动全球治理变革,深化全球南方团结合作。我们推进高质量共建“一带一路”走深走实,成功举办中非合作论坛北京峰会,在上合、金砖、亚太经合组织、二十国集团等双边多边场合,鲜明提出中国主张,为维护世界和平稳定注入更多正能量。
  我们隆重庆祝新中国成立75周年,深情回望共和国的沧桑巨变。从五千多年中华文明的传承中一路走来,“中国”二字镌刻在“何尊”底部,更铭刻在每个华夏儿女心中。党的二十届三中全会胜利召开,吹响进一步全面深化改革的号角。我们乘着改革开放的时代大潮阔步前行,中国式现代化必将在改革开放中开辟更加广阔的前景。
  2025年,我们将全面完成“十四五”规划。要实施更加积极有为的政策,聚精会神抓好高质量发展,推动高水平科技自立自强,保持经济社会发展良好势头。当前经济运行面临一些新情况,有外部环境不确定性的挑战,有新旧动能转换的压力,但这些经过努力是可以克服的。我们从来都是在风雨洗礼中成长、在历经考验中壮大,大家要充满信心。
  家事国事天下事,让人民过上幸福生活是头等大事。家家户户都盼着孩子能有好的教育,老人能有好的养老服务,年轻人能有更多发展机会。这些朴实的愿望,就是对美好生活的向往。我们要一起努力,不断提升社会建设和治理水平,持续营造和谐包容的氛围,把老百姓身边的大事小情解决好,让大家笑容更多、心里更暖。
  在澳门回归祖国25周年之际,我再到濠江之畔,新发展新变化令人欣喜。我们将坚定不移贯彻“一国两制”方针,保持香港、澳门长期繁荣稳定。两岸同胞一家亲,谁也无法割断我们的血脉亲情,谁也不能阻挡祖国统一的历史大势!
  世界百年变局加速演进,需要以宽广胸襟超越隔阂冲突,以博大情怀关照人类命运。中国愿同各国一道,做友好合作的践行者、文明互鉴的推动者、构建人类命运共同体的参与者,共同开创世界的美好未来。
  梦虽遥,追则能达;愿虽艰,持则可圆。中国式现代化的新征程上,每一个人都是主角,每一份付出都弥足珍贵,每一束光芒都熠熠生辉。
  河山添锦绣,星光映万家。让我们满怀希望,迎接新的一年。祝祖国时和岁丰、繁荣昌盛!祝大家所愿皆所成,多喜乐、长安宁。`)
const ldbz = ref('')
// 信息公开
onMounted(() => {
//getMesList();
//getNewstypeList();
getNewstypeList(1);
})
const hmScroll = () => {
let home = document.getElementById('aboutid');
if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
setTimeout(function () {
emit('toSwpe', 3);
}, 500);
}
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 1);
}, 500);
}
}
const emit = defineEmits(['toSwpe'])
//跳转详情
const openUrl = (id: number) => {
window.open(`/info/${id}?type=1`)
}
//跳转详情
// const gotoDetail = (id: number) => {
// detailId.value = {
// id: id,
// type: '1'
// };
// localStorage.setItem('detailId', JSON.stringify(detailId.value));
// emit('toSwpe',6)
// emitter.emit('detailId', detailId.value);
// }
//搜索
const toSearch = () => {
// emit('toSwpe',9);
// emitter.emit('inputSea', {
// keywords:inputSearch.value,
// type: 1,
// });
window.open(`/search_info?type=1&keywords=${inputSearch.value}`)
}
const getPageList = async () => {
page.value = page.value;
getMesList();
}
const getMesList = async (id: number, pagecru: number) => {
cateid.value = id ? id : cateid.value;
page.value = pagecru ? pagecru : page.value;
const res = await $api.post('/api/home.news/index',
{
cate_id: cateid.value,
limit: 7,
page: page.value,
isnews: 1
}
)
total.value = res.data.data.count;
MesList.value = res.data.data.list;
const info=ref({});
const getMesList=async(id:number)=>{
cateid.value=id;
info.value=newsListtyp.value.find(item=>item.id==id);
}
const getNewstypeList = async () => {
const res = await $api.get('/api/home.news/cate?isnews=1')
const res = await $api.get(`/api/index/about_us`)
newsListtyp.value = res.data.data.list;
cateid.value=res.data.data.list[0].id;
info.value=res.data.data.list[0];
}
</script>
@ -348,6 +260,7 @@ const getNewstypeList = async () => {
}
.rig_box {
width: 100%;
.re_box {
width: 100%;
height: 100%;

View File

@ -5,7 +5,7 @@
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="rightcon" id="contid" @scroll="hmScroll">
<div class="flex top_search ">
<div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
@ -93,7 +93,7 @@
</template>
<script lang="ts" setup>
import { nextTick, ref } from 'vue'
import { defineEmits } from 'vue'
import $api from '@/service/webRequest'
const inputSearch = ref('');
// 表单数据
@ -122,6 +122,16 @@ const getLiuyanList = async () => {
onMounted(() => {
getLiuyanList();
})
const emit = defineEmits(['toSwpe'])
const hmScroll = () => {
let home = document.getElementById('contid');
console.log(home.scrollTop);
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 6);
}, 500);
}
}
// 表单方法
const submitForm = () => {
console.log(formData);

View File

@ -9,38 +9,7 @@
<div class="b1" style="padding: 0;">
<select @change="getSelect" style="width: 100%;height: 41px;padding-left:15px;">
<option value="0">省级共青团网站</option>
<option value="http://www.bjyouth.gov.cn/">北京</option>
<option value="http://www.youthtj.org.cn/">天津</option>
<option value="http://www.54heb.org.cn/">河北</option>
<option value="http://www.sxccyl.gov.cn/">山西</option>
<option value="http://www.nmyouth.org.cn/">内蒙古</option>
<option value="http://www.liaoninggqt.org.cn/">辽宁</option>
<option value="http://www.jl54.org/">吉林</option>
<option value="http://www.hljgqt.gov.cn/">黑龙江</option>
<option value="https://www.shyouth.net/html/1/index.html">上海</option>
<option value="http://www.jiangsugqt.org/">江苏</option>
<option value="https://www.zjgqt.org/">浙江</option>
<option value="http://www.ahyouth.org.cn/base/">安徽</option>
<option value="http://www.fjcyl.com/">福建</option>
<option value="http://www.jxyouth.org.cn/">江西</option>
<option value="http://www.sdyl.gov.cn/">山东</option>
<option value="http://www.hnyouth.org.cn/">河南</option>
<option value="http://www.hbgqt.org.cn/">湖北</option>
<option value="https://www.hngqt.org.cn/">湖南</option>
<option value="https://www.gdcyl.org/Index.html">广东</option>
<option value="http://www.gxgqt.org.cn/">广西</option>
<option value="http://www.hngqt.cn/">海南</option>
<option value="http://www.cqyl.org.cn/">重庆</option>
<option value="http://scgqt.gov.cn/home/">四川</option>
<option value="http://www.gzyouth.cn/">贵州</option>
<option value="http://www.yngqt.org.cn/">云南</option>
<option value="https://youth.xzdw.gov.cn/">西藏</option>
<option value="https://www.sxgqt.org.cn/">陕西</option>
<option value="https://www.gsgqt.gov.cn/">甘肃</option>
<option value="https://www.qhgqt.org.cn/index.html">青海</option>
<option value="https://www.nxgqt.org/">宁夏</option>
<option value="https://www.ts.cn/zxpd/zt3511/tw/index.html">新疆</option>
<option value="http://tw.xjbt.gov.cn/">新疆生产建设兵团</option>
<option v-for="item in s_list" :value="item.url">{{ item.title }}</option>
</select>
</div>
<div>
@ -49,11 +18,9 @@
</div>
<div style="display: flex;">
<div class="b1" style="padding: 0;">
<select style="width: 100%;height: 41px;padding-left:15px;">
<option value="1">各地共青团网站</option>
<option value="2">各地共青团网站</option>
<option value="3">各地共青团网站</option>
<option value="4">各地共青团网站</option>
<select @change="getSelect" style="width: 100%;height: 41px;padding-left:15px;">
<option value="0">各地共青团网站</option>
<option v-for="item in d_list" :value="item.url">{{ item.title }}</option>
</select>
</div>
<div>
@ -62,11 +29,9 @@
</div>
<div style="display: flex;">
<div class="b1" style="padding: 0;">
<select style="width: 100%;height: 41px;padding-left:15px;">
<option value="1">其他</option>
<option value="2">其他</option>
<option value="3">其他</option>
<option value="4">其他</option>
<select @change="getSelect" style="width: 100%;height: 41px;padding-left:15px;">
<option value="0">其他</option>
<option v-for="item in q_list" :value="item.url">{{ item.title }}</option>
</select>
</div>
<div>
@ -75,11 +40,9 @@
</div>
<div style="display: flex;">
<div class="b1" style="padding: 0;">
<select style="width: 100%;height: 41px;padding-left:15px;">
<option value="1">办公入口</option>
<option value="2">办公入口</option>
<option value="3">办公入口</option>
<option value="4">办公入口</option>
<select @change="getSelect" style="width: 100%;height: 41px;padding-left:15px;">
<option value="0">办公入口</option>
<option v-for="item in b_list" :value="item.url">{{ item.title }}</option>
</select>
</div>
<div>
@ -172,16 +135,32 @@
</template>
<script lang="ts" setup>
const selectValue = ref(false);
import { useStore } from '~/store'
const store = useStore();
const getSelect = (event: Event) => {
var url = event.target.value;
if (url == 0) {
const target = event.target as HTMLSelectElement;
var url = target.value;
if (url == '0') {
return;
}else{
} else {
window.open(url);
}
}
const openT = ()=>{
// 使用store中的分类数据
const s_list = computed(() => store.s_list);
const d_list = computed(() => store.d_list);
const q_list = computed(() => store.q_list);
const b_list = computed(() => store.b_list);
onMounted(() => {
// 调用store中的方法获取友情链接数据
store.getFriendshipLinks();
})
const openT = () => {
window.open('https://www.gov.cn/');
}
</script>

View File

@ -310,17 +310,17 @@ const swiperOptionsimgs = {
},
}
const hmScroll = () => {
// let home = document.getElementById('homeid');
// if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
// setTimeout(function () {
// emit('toSwpe', 2);
// }, 500);
// }
// if (home.scrollTop == 0) {
// setTimeout(function () {
// emit('toSwpe', 0);
// }, 500);
// }
let home = document.getElementById('homeid');
if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
setTimeout(function () {
emit('toSwpe', 2);
}, 500);
}
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 0);
}, 500);
}
}
const toSearch = () => {
// emit('toSwpe',9);

View File

@ -5,7 +5,7 @@
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="rightcon" id="luoyangid" @scroll="hmScroll">
<div class="flex top_search ">
<div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
@ -108,6 +108,19 @@ onMounted(() => {
//getMesList();
getNewstypeList();
})
const hmScroll = () => {
let home = document.getElementById('luoyangid');
if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
setTimeout(function () {
emit('toSwpe', 5);
}, 500);
}
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 3);
}, 500);
}
}
const emit = defineEmits(['toSwpe'])
//搜索

View File

@ -5,7 +5,7 @@
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="rightcon" id="msgid" @scroll="hmScroll">
<div class="flex top_search ">
<div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
@ -90,14 +90,27 @@ const MesList = ref([]);
const newsListtyp = ref([]);
const page = ref(1);
const total = ref(0);
const cateid = ref(null);
const cateid = ref(0);
const detailId = ref(null);
// 信息公开
onMounted(() => {
// getMesList();
// getNewstypeList();
getNewstypeList();
})
const hmScroll = () => {
let home = document.getElementById('msgid');
if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
setTimeout(function () {
emit('toSwpe', 7);
}, 500);
}
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 5);
}, 500);
}
}
const emit = defineEmits(['toSwpe'])
//跳转详情
@ -125,15 +138,14 @@ const toSearch = () => {
}
const getPageList = async () => {
page.value = page.value;
getMesList();
getMesList(cateid.value);
}
const getMesList = async (id: number, pagecru: number) => {
cateid.value = id ? id : cateid.value;
page.value = pagecru ? pagecru : page.value;
const res = await $api.post('/api/home.news/index',
const getMesList = async (id: number) => {
cateid.value = id;
const res = await $api.post('/api/home.information/index',
{
cate_id: cateid.value,
limit: 9,
limit: 7,
page: page.value,
isnews: 1
}
@ -142,8 +154,9 @@ const getMesList = async (id: number, pagecru: number) => {
MesList.value = res.data.data.list;
}
const getNewstypeList = async () => {
const res = await $api.get('/api/home.news/cate?isnews=1')
const res = await $api.get('/api/home.information/cate')
newsListtyp.value = res.data.data.list;
getMesList(res.data.data.list[0].id);
}
</script>

View File

@ -5,7 +5,7 @@
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="rightcon" id="newsid" @scroll="hmScroll">
<div class="flex top_search ">
<div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
@ -101,7 +101,19 @@ onMounted(() => {
getNewstypeList();
})
const emit = defineEmits(['toSwpe'])
const hmScroll = () => {
let home = document.getElementById('newsid');
if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
setTimeout(function () {
emit('toSwpe', 4);
}, 500);
}
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 2);
}, 500);
}
}
//跳转详情
const openUrl = (id: number) => {
window.open(`/info/${id}?type=1`)

View File

@ -3,7 +3,7 @@
<div class="flex justify-between w-full h-full">
<!-- 左边导航栏 -->
<!-- 右边内容栏 -->
<div class="rightcon">
<div class="rightcon" id="regid" @scroll="hmScroll">
<div class="flex top_search ">
<div style="width: 350px;">
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%;height: 100%;object-fit: cover;">
@ -146,6 +146,19 @@ onMounted(() => {
getYwList();
//getNewstypeList();
})
const hmScroll = () => {
let home = document.getElementById('regid');
if (home.scrollTop + home.clientHeight >= home.scrollHeight) {
setTimeout(function () {
emit('toSwpe',6);
}, 500);
}
if (home.scrollTop == 0) {
setTimeout(function () {
emit('toSwpe', 4);
}, 500);
}
}
const fwImg = ref([]);
//服务青年轮播图
const getFwImg = async () => {

View File

@ -53,8 +53,8 @@
<AppAboutdel></AppAboutdel>
</swiper-slide> -->
<!-- 留言板 -->
<swiper-slide @toSwpe="toswiper">
<AppContactUs></AppContactUs>
<swiper-slide >
<AppContactUs @toSwpe="toswiper"></AppContactUs>
</swiper-slide>
<!-- 搜索详情 -->
<!-- <swiper-slide :show="isSearch" id="searchid">
@ -158,9 +158,11 @@ const onSwiperNews = (swiper: any) => {
// isMeassage.value = false;
// console.log(newsSwiper);
swiper_exp.value = swiper.realIndex;
// newsSwiper.mousewheel.disable();
// newsSwiper.allowTouchMove = true;// 开启拖动
newsSwiper.mousewheel.disable();
newsSwiper.allowTouchMove = true;// 开启拖动
// if (swiper.realIndex == 1 || swiper.realIndex == 5 || swiper.realIndex == 2 || swiper.realIndex == 3 || swiper.realIndex == 4 || swiper.realIndex == 6) {
// if (swiper.realIndex == 1) {
// newsSwiper.mousewheel.disable();
// newsSwiper.allowTouchMove = true;// 开启拖动
// }

View File

@ -10,9 +10,9 @@
<img :src="`/img/index/dlogo.png`" alt="" style="width: 100%; height: 100%; object-fit: cover" />
</div>
<div class="inputform">
<input v-model="inputSearch" class="contactInput w-full md:w-[337px]" type="text"
<input v-model="keywords" class="contactInput w-full md:w-[337px]" type="text"
placeholder="请输入搜索关键字" />
<div class="search_rinput">
<div class="search_rinput" @click="getNewsdetail()">
<img src="/img/index/hmsearch.png" alt="" />
</div>
</div>
@ -115,6 +115,7 @@ const detailId = ref(null);
const datas = ref(null);
const keywords = ref(route.query.keywords)
const types = ref(route.query.type)
const inputSearch=ref('');
// emitter.on('inputSea', (data) => {
// console.log(data,111111)
// datas.value = data;
@ -179,6 +180,7 @@ const gotoDetails = (id: number) => {
// 新闻/百科/信息公开 搜索
const getNewsdetail = async () => {
console.log(types.value);
// 新闻
if (types.value == 1) {
@ -186,9 +188,10 @@ const getNewsdetail = async () => {
{
keywords:keywords.value,
page:1,
limit:30
limit:10
}
)
console.log(res.data.data.list);
Newsdetailist.value = res.data.data.list;
}else if(types.value == 2){
//信息公开

View File

@ -7,10 +7,19 @@ export const useStore = defineStore({
tempApiData: {}, // 存储API返回的临时数据
serApiData: {}, // 存储API返回的临时数据
isEnglish: 'zh', // 判断是否是英文
// 友情链接相关状态
friendshipLinks: [], // 存储友情链接原始数据
isLinksLoaded: false, // 标识友情链接数据是否已加载
_friendshipLinksPromise: null as Promise<any> | null, // 私有Promise缓存
}),
getters: {
// 获取临时API数据的getter
getTempApiData: state => state.tempApiData,
// 友情链接分类数据的getter
s_list: state => state.friendshipLinks.filter((item: any) => item.status == 1),
d_list: state => state.friendshipLinks.filter((item: any) => item.status == 2),
q_list: state => state.friendshipLinks.filter((item: any) => item.status == 3),
b_list: state => state.friendshipLinks.filter((item: any) => item.status == 4),
},
actions: {
// 保存API返回的临时数据
@ -28,6 +37,45 @@ export const useStore = defineStore({
clearTempApiData() {
this.tempApiData = {}
},
// 获取友情链接数据
async getFriendshipLinks() {
// 如果数据已经加载过,直接返回
if (this.isLinksLoaded) {
return
}
// 如果已经有正在进行的请求,直接返回该Promise
if (this._friendshipLinksPromise) {
return this._friendshipLinksPromise
}
// 创建新的Promise并缓存
this._friendshipLinksPromise = this._loadFriendshipLinks()
try {
await this._friendshipLinksPromise
} catch (error) {
// 如果请求失败,清除缓存的Promise,允许重新尝试
this._friendshipLinksPromise = null
throw error
}
},
// 私有方法:实际执行API调用
async _loadFriendshipLinks() {
try {
// 动态导入API模块
const { default: $api } = await import('@/service/webRequest')
const res = await $api.get('/api/index/friendship_link')
this.friendshipLinks = res.data.data.list
this.isLinksLoaded = true
console.log('友情链接数据已加载:', res.data.data)
return res.data.data
} catch (error) {
console.error('获取友情链接数据失败:', error)
throw error
}
},
},
})