diff --git a/api/app/lib/controllers/superScreen/community.js b/api/app/lib/controllers/superScreen/community.js index 67ff20e..6f54307 100644 --- a/api/app/lib/controllers/superScreen/community.js +++ b/api/app/lib/controllers/superScreen/community.js @@ -1,4 +1,6 @@ 'use strict'; +const request = require("superagent"); +const cheerio = require('cheerio'); function getPersonAge(opts) { return async function (ctx, next) { @@ -145,9 +147,44 @@ function getHomeInfo(opts) { } } +function getFgjvNotice(opts) { + return async function (ctx, next) { + let errMsg = { message: '获取房管局通知失败' } + try { + let rslt = []; + const res = await request.get('https://www.nc.gov.cn/ncszf/fgjv/2021_nav_list.shtml'); + const $ = cheerio.load(res.text); + $('div.pageList-line ul').children('li').each(function (i, elem) { + if (i >= 5) return false; + let obj = {}; + const a = $(this).find('a'); + obj.title = a.text(); + obj.time = $(this).find('span').text(); + obj.link = 'https://www.nc.gov.cn' + a.attr('href'); + rslt.push(obj); + }); + const promistArr = rslt.map(obj => request.get(obj.link)); + const detailRes = await Promise.all(promistArr); + for (let i = 0; i < rslt.length; i++) { + const detail$ = cheerio.load(detailRes[i].text); + const temp = detail$('ucapcontent').text().trim().substring(0, 50).replace(/\n/g, ""); + rslt[i].detail = temp; + } + + ctx.status = 200; + ctx.body = rslt; + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = errMsg + } + } +} + module.exports = { getPersonAge, getHomePerson, - getHomeInfo + getHomeInfo, + getFgjvNotice } diff --git a/api/app/lib/middlewares/authenticator.js b/api/app/lib/middlewares/authenticator.js index bf83caa..ac60cfd 100644 --- a/api/app/lib/middlewares/authenticator.js +++ b/api/app/lib/middlewares/authenticator.js @@ -73,6 +73,7 @@ let isPathExcluded = function (opts, path, method) { excludeOpts.push({ p: '/person/age', o: 'GET' }); excludeOpts.push({ p: '/home/person', o: 'GET' }); excludeOpts.push({ p: '/community/info', o: 'GET' }); + excludeOpts.push({ p: '/community/fgjv/notice', o: 'GET' }); excludes = new ExcludesUrls(excludeOpts); } diff --git a/api/app/lib/routes/superScreen/community.js b/api/app/lib/routes/superScreen/community.js index 2ed2eeb..0934dff 100644 --- a/api/app/lib/routes/superScreen/community.js +++ b/api/app/lib/routes/superScreen/community.js @@ -16,4 +16,7 @@ module.exports = function (app, router, opts, AuthCode) { app.fs.api.logAttr['GET/community/info'] = { content: '获取社区房屋统计信息', visible: true }; router.get('/community/info', community.getHomeInfo(opts)); + //获取房管局通知 + app.fs.api.logAttr['GET/community/fgjv/notice'] = { content: '获取房管局通知', visible: true }; + router.get('/community/fgjv/notice', community.getFgjvNotice(opts)); }; diff --git a/api/package.json b/api/package.json index 65da9b7..5e7f62e 100644 --- a/api/package.json +++ b/api/package.json @@ -18,6 +18,7 @@ "ali-oss": "^6.17.1", "args": "^3.0.7", "better-xlsx": "^0.7.6", + "cheerio": "^1.0.0-rc.12", "clickhouse": "^2.6.0", "crypto-js": "^4.0.0", "diskinfo": "0.0.3", diff --git a/super-screen/client/assets/images/homepage/communtity/arrow_right.png b/super-screen/client/assets/images/homepage/communtity/arrow_right.png new file mode 100644 index 0000000..7399c36 Binary files /dev/null and b/super-screen/client/assets/images/homepage/communtity/arrow_right.png differ diff --git a/super-screen/client/assets/images/homepage/communtity/notice.png b/super-screen/client/assets/images/homepage/communtity/notice.png new file mode 100644 index 0000000..0907013 Binary files /dev/null and b/super-screen/client/assets/images/homepage/communtity/notice.png differ diff --git a/super-screen/client/src/sections/community-safty/components/city-safty.js b/super-screen/client/src/sections/community-safty/components/city-safty.js index ba74c68..c451f8f 100644 --- a/super-screen/client/src/sections/community-safty/components/city-safty.js +++ b/super-screen/client/src/sections/community-safty/components/city-safty.js @@ -8,60 +8,88 @@ import './style.less'; function CitySafty(props) { const { waterLevelAlarms } = props; - const { data: fireAlarms = [] } = useFsRequest({ url: ApiTable.getFireAlarmList }); + // const { data: fireAlarms = [] } = useFsRequest({ url: ApiTable.getFireAlarmList }); - const getContent = () => { - return
- {fireAlarms.map(s => { - const handled = s?.state == 2 - return
-
-
-
-
{moment(s.createTime).format('YYYY-MM-DD HH:mm:ss')}
-
{handled ? '已处理' : '处理中'}
-
-
-
- -
事件地点: {s?.location?.length > 20 ? s?.location.substring(0, 20) + '...' : s?.location}
-
-
-
警情类型: {s?.type}
-
-
-
- })} + const { data: fgjvNoticeList = [] } = useFsRequest({ url: 'community/fgjv/notice' }); -
- } + // const getContent = () => { + // return
+ // {fireAlarms.map(s => { + // const handled = s?.state == 2 + // return
+ //
+ //
+ //
+ //
{moment(s.createTime).format('YYYY-MM-DD HH:mm:ss')}
+ //
{handled ? '已处理' : '处理中'}
+ //
+ //
+ //
+ // + //
事件地点: {s?.location?.length > 20 ? s?.location.substring(0, 20) + '...' : s?.location}
+ //
+ //
+ //
警情类型: {s?.type}
+ //
+ //
+ //
+ // })} - const renderList = () =>
+ //
+ // } + + // const renderList = () =>
+ // { + // waterLevelAlarms?.map(a =>
= 3 ? 'alarm_handle' : 'alarm_unhandle'}> + //
+ //
+ //
+ // + //
{a.alarms[0]?.source?.name}
+ //
+ //
= 3 ? '#FFEA00' : '#FF2C2C' }}>{convertLevelToLabel(a.alarms[0]?.level)}
+ //
+ //
{a.alarms[0]?.content}
+ //
+ //
) + // } + //
+ + const renderFgjvList = () =>
{ - waterLevelAlarms?.map(a =>
= 3 ? 'alarm_handle' : 'alarm_unhandle'}> -
-
+ fgjvNoticeList?.map(n =>
+
+
- -
{a.alarms[0]?.source?.name}
+ +
{n.title}
-
= 3 ? '#FFEA00' : '#FF2C2C' }}>{convertLevelToLabel(a.alarms[0]?.level)}
+
{ window.open(n.link) }} + > + 去查看 +
-
{a.alarms[0]?.content}
+
{n.detail}
) }
- const dataSource = fireAlarms.concat(waterLevelAlarms || []) + // const dataSource = fireAlarms.concat(waterLevelAlarms || []) + + const dataSource = fgjvNoticeList - return + return { dataSource?.length > 0 ? 2} content={<> - {renderList()} - {getContent()} + {/* {renderList()} */} + {/* {getContent()} */} + {renderFgjvList()} } divHeight={240} divId={`community-right-top`} /> diff --git a/super-screen/client/src/sections/community-safty/components/style.less b/super-screen/client/src/sections/community-safty/components/style.less index 90594a6..c22b832 100644 --- a/super-screen/client/src/sections/community-safty/components/style.less +++ b/super-screen/client/src/sections/community-safty/components/style.less @@ -483,5 +483,47 @@ color: #FFFFFF; letter-spacing: 0; } + + .arrow { + display: inline-block; + margin-left: 2px; + width: 10px; + height: 10px; + } + } + + .notice_list { + display: flex; + height: 89px; + margin-bottom: 20px; + + .notice_img { + width: 101px; + height: 89px; + background: url('/assets/images/homepage/communtity/notice.png'); + background-repeat: no-repeat; + background-size: 100% 100%; + } + + .notice_content { + width: calc(100% - 120px); + display: flex; + flex-direction: column; + justify-content: center; + + .notice_text { + padding-left: 16px; + padding-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; // 控制多行的行数 + -webkit-box-orient: vertical; + } + } + } + + .pointer { + cursor: pointer; } } \ No newline at end of file