{"version":3,"file":"notices.js","sources":["pages/index/notices.vue","../../HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvbm90aWNlcy52dWU"],"sourcesContent":["<template>\r\n\t<view class=\"min-h-screen bg-gray-100\">\r\n\t\t<!-- Tab 切换 -->\r\n\t\t<view class=\"p-2 w-95-percent\">\r\n\t\t\t<uni-segmented-control :current=\"currentTab\" :values=\"tabs\" @clickItem=\"onTabChange\" style-type=\"button\"\r\n\t\t\t\tactive-color=\"#3b82f6\" class=\"mb-4\" />\r\n\t\t</view>\r\n\t\t<!-- 加载提示 -->\r\n\t\t<view v-if=\"loading\" class=\"text-center text-gray-500 py-8\">\r\n\t\t\t加载中...\r\n\t\t</view>\r\n\t\t<!-- 预约信息卡片列表 -->\r\n\t\t<scroll-view scroll-y class=\"p-2 h-calc-100vh-120px w-95-percent\">\r\n\t\t\t<view v-for=\"(item, index) in filterednotices\" :key=\"index\"\r\n\t\t\t\tclass=\"bg-white rounded-lg shadow p-4 mb-4 flex flex-row\" @click=\"gotoDetail(item)\">\r\n\r\n\t\t\t\t<div class=\"w-24 h-16 mt-4 flex-shrink-0 mr-2 rounded-5\">\r\n\t\t\t\t\t<img :src=\"parseContentImg(item.content) || `https://farm.evcc.top/Uploads/yuanboyuan/news/${encodeURIComponent(item.category)}.jpg`\"\r\n\t\t\t\t\t\tmode=\"aspectFill\" alt=\"icon\" class=\"w-24 h-16 rounded-5\" />\r\n\t\t\t\t</div>\r\n\t\t\t\t<!-- 右侧内容 -->\r\n\t\t\t\t<div class=\"flex-1 space-y-2\">\r\n\t\t\t\t\t<view class=\"text-sm space-y-2\">\r\n\t\t\t\t\t\t<!--<text class=\"text-gray-600 font-bold\">消息标题:</text> -->\r\n\t\t\t\t\t\t<text>{{ item.title.length > 36 ? item.title.slice(0, 36) + '……' : item.title }}</text>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t<view class=\"text-sm space-y-2\">\r\n\t\t\t\t\t\t<text class=\"text-gray-600\">发布时间:</text>\r\n\t\t\t\t\t\t<text>{{ item.createTime }}</text>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t<!--\r\n\t\t\t\t\t<view class=\"text-sm space-y-2\">\r\n\t\t\t\t\t\t<text class=\"text-gray-600\">消息正文:</text>\r\n\t\t\t\t\t\t<text>{{ parseContentText(item.content) }}</text>\r\n\t\t\t\t\t</view>\r\n\t\t\t\t\t-->\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<!-- 卡片内容 -->\r\n\r\n\t\t\t</view>\r\n\t\t\t<!-- 无数据提示 -->\r\n\t\t\t<view v-if=\"!filterednotices.length\" class=\"text-center text-gray-500 py-8\">\r\n\t\t\t\t暂无{{ tabs[currentTab] }}的信息\r\n\t\t\t</view>\r\n\t\t</scroll-view>\r\n\t</view>\r\n</template>\r\n\r\n<script>\r\n\timport {\r\n\t\tref,\r\n\t\tcomputed,\r\n\t\tonMounted\r\n\t} from 'vue'\r\n\timport {\r\n\t\tapiService\r\n\t} from '@/apiservice/apiService'\r\n\r\n\texport default {\r\n\t\tsetup() {\r\n\t\t\t// Tab 数据\r\n\t\t\tconst tabs = ['景区动态', '新闻报道', '活动演出', '景区通知'];\r\n\t\t\tconst currentTab = ref(0);\r\n\t\t\tlet notices = ref([]);\r\n\t\t\tconst loading = ref(false);\r\n\r\n\t\t\t// 获取预约列表\r\n\t\t\tconst fetchnotices = async () => {\r\n\t\t\t\tloading.value = true;\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst res = await apiService.noticeList()\r\n\t\t\t\t\tif (res.code === 1000) {\r\n\t\t\t\t\t\tnotices.value = res.data\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.warn('查询失败:', res.message)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\tconsole.error('获取预约信息错误:', error);\r\n\t\t\t\t\tuni.showToast({\r\n\t\t\t\t\t\ttitle: '网络错误',\r\n\t\t\t\t\t\ticon: 'none'\r\n\t\t\t\t\t});\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tloading.value = false;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tconst parseContentImg = (content = '') => {\r\n\t\t\t\tif (!content || typeof content !== 'string') {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t\tconst imgMatch = content.match(/<img[^>]+src=[\"']?([^\"'>]+)[\"']?/i);\r\n\t\t\t\tconst imgSrc = imgMatch ? imgMatch[1] : null;\r\n\r\n\t\t\t\treturn imgSrc;\r\n\r\n\t\t\t};\r\n\t\t\tconst parseContentText = (content = '') => {\r\n\t\t\t\tif (!content || typeof content !== 'string') {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\t\t\t\tlet text = content\r\n\t\t\t\t\t.replace(/<[^>]+>/g, '') // 去掉HTML标签\r\n\t\t\t\t\t.replace(/\\s+/g, ' ') // 合并多余空格\r\n\t\t\t\t\t.trim();\r\n\t\t\t\tif (text.length > 50) {\r\n\t\t\t\t\ttext = text.slice(0, 50) + '......'; // 截取前50字符\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn text;\r\n\t\t\t};\r\n\t\t\tconst gotoDetail = (item) => {\r\n\t\t\t\tconst data = encodeURIComponent(JSON.stringify(item));\r\n\t\t\t\t uni.navigateTo({\r\n\t\t\t\t url: `/pages/index/notices-detail?data=${data}`\r\n\t\t\t\t });\r\n\t\t\t};\r\n\r\n\t\t\t// 根据当前 Tab 过滤数据\r\n\t\t\tconst filterednotices = computed(() => {\r\n\t\t\t\treturn notices.value.filter(item => item.category === tabs[currentTab.value]);\r\n\t\t\t});\r\n\r\n\r\n\t\t\t// Tab 切换\r\n\t\t\tconst onTabChange = (e) => {\r\n\t\t\t\tcurrentTab.value = e.currentIndex;\r\n\t\t\t};\r\n\r\n\t\t\t// 页面加载时获取数据\r\n\t\t\tonMounted(() => {\r\n\t\t\t\tfetchnotices();\r\n\t\t\t});\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttabs,\r\n\t\t\t\tcurrentTab,\r\n\t\t\t\tnotices,\r\n\t\t\t\tfilterednotices,\r\n\t\t\t\tloading,\r\n\t\t\t\tonTabChange,\r\n\t\t\t\tparseContentImg,\r\n\t\t\t\tparseContentText,\r\n\t\t\t\tgotoDetail\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n</script>\r\n\r\n<style>\r\n\t.min-h-screen {\r\n\t\tmin-height: 100vh;\r\n\t}\r\n\r\n\t.bg-gray-100 {\r\n\t\tbackground-color: #f3f4f6;\r\n\t}\r\n\r\n\t.ml-5 {\r\n\t\tleft: 10rpx;\r\n\t}\r\n\r\n\t.w-95-percent {\r\n\t\twidth: 95%;\r\n\t}\r\n\r\n\t.mr-5 {\r\n\t\tright: 10rpx;\r\n\t}\r\n\r\n\t.mb-4 {\r\n\t\tmargin-bottom: 1rem;\r\n\t}\r\n\r\n\t.mt-4 {\r\n\t\tmargin-top: 1rem;\r\n\t}\r\n\r\n\t.text-center {\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.text-gray-500 {\r\n\t\tcolor: #6b7280;\r\n\t}\r\n\r\n\t.text-gray-600 {\r\n\t\tcolor: #4b5563;\r\n\t}\r\n\r\n\t.py-8 {\r\n\t\tpadding-top: 2rem;\r\n\t\t/* 32px */\r\n\t\tpadding-bottom: 2rem;\r\n\t}\r\n\r\n\t.h-calc-100vh-120px {\r\n\t\theight: calc(100vh - 120px);\r\n\t}\r\n\r\n\t.px-4 {\r\n\t\tpadding-left: 1rem;\r\n\t\tpadding-right: 1rem;\r\n\t}\r\n\r\n\t.bg-white {\r\n\t\tbackground-color: #ffffff;\r\n\t}\r\n\r\n\t.rounded-lg {\r\n\t\tborder-radius: 0.5rem;\r\n\t\t/* 8px */\r\n\t}\r\n\r\n\t.shadow {\r\n\t\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);\r\n\t}\r\n\r\n\t.p-4 {\r\n\t\tpadding: 1rem;\r\n\t}\r\n\t\r\n\t.p-2 {\r\n\t\tpadding: 0.5rem;\r\n\t}\r\n\r\n\t.mb-4 {\r\n\t\tmargin-bottom: 1rem;\r\n\t}\r\n\r\n\t.mt-1 {\r\n\t\tmargin-top: 0.2rem;\r\n\t}\r\n\r\n\t.relative {\r\n\t\tposition: relative;\r\n\t}\r\n\r\n\t.absolute {\r\n\t\tposition: absolute;\r\n\t}\r\n\r\n\t.top-2 {\r\n\t\ttop: 0.5rem;\r\n\t\t/* 8px */\r\n\t}\r\n\r\n\t.right-2 {\r\n\t\tright: 0.5rem;\r\n\t\t/* 8px */\r\n\t}\r\n\r\n\t.bg-red-500 {\r\n\t\tbackground-color: #ef4444;\r\n\t}\r\n\r\n\t.bg-blue-500 {\r\n\t\tbackground-color: #3b82f6;\r\n\t}\r\n\r\n\t.text-white {\r\n\t\tcolor: #ffffff;\r\n\t}\r\n\r\n\t.text-sm {\r\n\t\tfont-size: 0.875rem;\r\n\t\t/* 14px */\r\n\t\tline-height: 1.25rem;\r\n\t\t/* 20px */\r\n\t}\r\n\r\n\t.text-base {\r\n\t\tfont-size: 1rem;\r\n\t\t/* 14px */\r\n\t\tline-height: 1.5rem;\r\n\t\t/* 20px */\r\n\t}\r\n\r\n\t.px-2 {\r\n\t\tpadding-left: 0.5rem;\r\n\t\tpadding-right: 0.5rem;\r\n\t}\r\n\r\n\t.py-1 {\r\n\t\tpadding-top: 0.25rem;\r\n\t\tpadding-bottom: 0.25rem;\r\n\t}\r\n\r\n\t.rounded {\r\n\t\tborder-radius: 0.25rem;\r\n\t\t/* 4px */\r\n\t}\r\n\r\n\t.space-y-2 {\r\n\t\tmargin-top: 0.5rem;\r\n\t\t/* 8px */\r\n\t}\r\n\r\n\t.flex {\r\n\t\tdisplay: flex;\r\n\t}\r\n\r\n\t.justify-between {\r\n\t\tjustify-content: space-between;\r\n\t}\r\n\r\n\t.font-bold {\r\n\t\tfont-weight: 700;\r\n\t}\r\n\r\n\t.text-lg {\r\n\t\tfont-size: 1.125rem;\r\n\t\t/* 18px */\r\n\t\tline-height: 1.75rem;\r\n\t\t/* 28px */\r\n\t}\r\n\r\n\t.w-24 {\r\n\t\twidth: 6rem;\r\n\t\t/* 32px */\r\n\r\n\t}\r\n\r\n\t.h-16 {\r\n\t\theight: 5rem;\r\n\t\t/* 32px */\r\n\t}\r\n\r\n\t.flex-shrink-0 {\r\n\t\tflex-shrink: 0;\r\n\t}\r\n\r\n\t.mr-2 {\r\n\t\tmargin-right: 0.5rem;\r\n\t\t/* 8px */\r\n\t}\r\n\r\n\t.rounded-5 {\r\n\t\tborder-radius: 5px;\r\n\t}\r\n</style>","import MiniProgramPage from 'D:/HBuilderProjects/园博园/pages/index/notices.vue'\nwx.createPage(MiniProgramPage)"],"names":["ref","apiService","uni","computed","onMounted"],"mappings":";;;AA2DC,MAAK,YAAU;AAAA,EACd,QAAQ;AAEP,UAAM,OAAO,CAAC,QAAQ,QAAQ,QAAQ,MAAM;AAC5C,UAAM,aAAaA,kBAAI,CAAC;AACxB,QAAI,UAAUA,kBAAI,CAAA,CAAE;AACpB,UAAM,UAAUA,kBAAI,KAAK;AAGzB,UAAM,eAAe,YAAY;AAChC,cAAQ,QAAQ;AAChB,UAAI;AACH,cAAM,MAAM,MAAMC,sBAAU,WAAC,WAAW;AACxC,YAAI,IAAI,SAAS,KAAM;AACtB,kBAAQ,QAAQ,IAAI;AAAA,eAEd;AACNC,wBAAa,MAAA,MAAA,QAAA,iCAAA,SAAS,IAAI,OAAO;AAAA,QAClC;AAAA,MAEC,SAAO,OAAO;AACfA,sBAAA,MAAA,MAAA,SAAA,iCAAc,aAAa,KAAK;AAChCA,sBAAAA,MAAI,UAAU;AAAA,UACb,OAAO;AAAA,UACP,MAAM;AAAA,QACP,CAAC;AAAA,MACF,UAAU;AACT,gBAAQ,QAAQ;AAAA,MACjB;AAAA;AAGD,UAAM,kBAAkB,CAAC,UAAU,OAAO;AACzC,UAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC5C,eAAO;AAAA,MACR;AACA,YAAM,WAAW,QAAQ,MAAM,mCAAmC;AAClE,YAAM,SAAS,WAAW,SAAS,CAAC,IAAI;AAExC,aAAO;AAAA;AAGR,UAAM,mBAAmB,CAAC,UAAU,OAAO;AAC1C,UAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC5C,eAAO;AAAA,MACR;AACA,UAAI,OAAO,QACT,QAAQ,YAAY,EAAE,EACtB,QAAQ,QAAQ,GAAG,EACnB;AACF,UAAI,KAAK,SAAS,IAAI;AACrB,eAAO,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,MAC5B;AAEA,aAAO;AAAA;AAER,UAAM,aAAa,CAAC,SAAS;AAC5B,YAAM,OAAO,mBAAmB,KAAK,UAAU,IAAI,CAAC;AAClDA,oBAAAA,MAAI,WAAW;AAAA,QACb,KAAK,oCAAoC,IAAI;AAAA,MAC/C,CAAC;AAAA;AAIJ,UAAM,kBAAkBC,cAAAA,SAAS,MAAM;AACtC,aAAO,QAAQ,MAAM,OAAO,UAAQ,KAAK,aAAa,KAAK,WAAW,KAAK,CAAC;AAAA,IAC7E,CAAC;AAID,UAAM,cAAc,CAAC,MAAM;AAC1B,iBAAW,QAAQ,EAAE;AAAA;AAItBC,kBAAAA,UAAU,MAAM;AACf;IACD,CAAC;AAED,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;EAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnJF,GAAG,WAAW,eAAe;"}
|