Преглед изворни кода

Merge branch 'master' of http://192.168.10.18:3000/sooka_shop/sooka_consult_uniapp

付宇航 пре 1 година
родитељ
комит
145d1ed0c7
33 измењених фајлова са 3104 додато и 846 уклоњено
  1. 35 0
      api/index/index.js
  2. 15 0
      api/knowledge/knowledge.js
  3. 15 0
      api/lifeServices/lifeServices.js
  4. 28 12
      api/quotations/quotations.js
  5. 93 39
      pages.json
  6. 89 0
      pages/index/announcementDetails.vue
  7. 105 0
      pages/index/announcementList.vue
  8. 282 226
      pages/index/index.vue
  9. 12 3
      pages/informationDetail/informationDetail.vue
  10. 136 0
      pages/knowledge/knowledge.css
  11. 98 0
      pages/knowledge/knowledge.vue
  12. 0 0
      pages/knowledgeDetails/knowledgeDetails.css
  13. 238 0
      pages/knowledgeDetails/knowledgeDetails.vue
  14. 136 0
      pages/lifeServices/lifeServices.css
  15. 110 0
      pages/lifeServices/lifeServices.vue
  16. 160 0
      pages/lifeServicesDetails/lifeServicesDetails.css
  17. 237 0
      pages/lifeServicesDetails/lifeServicesDetails.vue
  18. 20 44
      pages/quotations/quotations.vue
  19. 189 0
      pages/quotations/quotationsForm.vue
  20. 148 0
      pages/quotations/quotationsSecond.vue
  21. 30 44
      pages/specialService/financialInfrastructure/details.vue
  22. 128 0
      pages/specialService/financialInfrastructure/financialInfrastructure.css
  23. 56 0
      pages/specialService/financialInfrastructure/financialInfrastructure.vue
  24. 30 44
      pages/specialService/legalService/details.vue
  25. 128 0
      pages/specialService/legalService/legalService.css
  26. 56 0
      pages/specialService/legalService/legalService.vue
  27. 117 107
      pages/toGovernmentList/index.css
  28. 149 58
      pages/toGovernmentList/toGovernmentList.vue
  29. 0 269
      pages/toGovernmentList/toGovernmentListDetail.vue
  30. 2 0
      uni_modules/uni-section/changelog.md
  31. 167 0
      uni_modules/uni-section/components/uni-section/uni-section.vue
  32. 87 0
      uni_modules/uni-section/package.json
  33. 8 0
      uni_modules/uni-section/readme.md

+ 35 - 0
api/index/index.js

@@ -0,0 +1,35 @@
+import request from '@/utils/request'
+
+// 获取最新消息(首页滚动)
+export function getListToAnnouncement(userId) {
+  return request({
+    url: '/my/announcement/getNewAnnouncement?userId='+userId,
+    method: 'get'
+  })
+}
+
+// 根据公告id获取详情
+export function getDetialisById(annoId){
+	return request({
+		url: '/my/announcement/'+annoId,
+		method: 'get'
+	})
+}
+
+//新增已读记录
+export function announcementReat(query){
+	return request({
+		url: '/my/announcement/readAnnouncement',
+		method: 'post',
+		data: query
+	})
+}
+
+//查询公告列表
+export function getList(query){
+	return request({
+		url: '/my/announcement/list',
+		method: 'get',
+		data: query
+	})
+}

+ 15 - 0
api/knowledge/knowledge.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+export function list(query) {
+  return request({
+    url: '/knowledge/base/list',
+    method: 'get',
+	params:query
+  })
+}
+export function getDetails(id) {
+  return request({
+    url: '/knowledge/base/' + id,
+    method: 'get',
+  })
+}

+ 15 - 0
api/lifeServices/lifeServices.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+export function list(query) {
+  return request({
+    url: '/high/server/lifeServicesList',
+    method: 'get',
+	params:query
+  })
+}
+export function getDetails(id) {
+  return request({
+    url: '/high/server/lifeServicesDetails/' + id,
+    method: 'get',
+  })
+}

+ 28 - 12
api/quotations/quotations.js

@@ -1,20 +1,36 @@
 import request from '@/utils/request'
 
 // 查询行情列表
-export  function listQuotations(query) {
-  return request({
-    url: '/quotations/list',
-    method: 'get',
-    params: query
-  })
+export function listQuotations(query) {
+    return request({
+        url: '/quotations/list',
+        method: 'get',
+        params: query
+    })
 }
+
 // 查询行情配置列表
 export function listConfig(query) {
-  return request({
-    url: '/quotationsConfig/all',
-    method: 'get',
-    params: query
-  })
-
+    return request({
+        url: '/quotationsConfig/all',
+        method: 'get',
+        params: query
+    })
+}
+//新增列表
+export function addQuotations(data) {
+    return request({
+        url: '/quotations',
+        method: 'post',
+        data: data
+    })
+}
 
+//查询行情配置子级
+export function QuotationsList(data) {
+    return request({
+        url: '/quotationsConfig/list',
+        method: 'get',
+        data: data
+    })
 }

+ 93 - 39
pages.json

@@ -1,6 +1,5 @@
 {
-	"pages": [
-		{
+	"pages": [{
 			"path": "pages/login",
 			"style": {
 				"navigationBarTitleText": "登录",
@@ -35,6 +34,42 @@
 			}
 		},
 		{
+			"path": "pages/specialService/legalService/legalService",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "法律服务"
+			}
+		},
+		{
+			"path": "pages/specialService/legalService/details",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "法律服务详情"
+			}
+		},
+		{
+			"path": "pages/specialService/financialInfrastructure/financialInfrastructure",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "金融基建"
+			}
+		},
+		{
+			"path": "pages/specialService/financialInfrastructure/details",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "金融基建详情"
+			}
+		},
+		{
 			"path": "pages/cooperative/details",
 			"style": {
 				"usingComponents": {},
@@ -63,6 +98,24 @@
 			}
 		},
 		{
+			"path": "pages/index/announcementDetails",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "公告详情"
+			}
+		},
+		{
+			"path": "pages/index/announcementList",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "公告列表"
+			}
+		},
+		{
 			"path": "pages/fuwu/fuwu",
 			"style": {
 				"usingComponents": {},
@@ -179,18 +232,17 @@
 
 			}
 		},
-		// {
-		// 	"path": "pages/quotations/quotations",
-		// 	"style": {
-		// 		"usingComponents": {},
-		// 		"navigationBarBackgroundColor": "#07c160",
-		// 		"navigationBarTextStyle": "white",
-		// 		"navigationBarTitleText": "行情"
+		{
+			"path": "pages/quotations/quotations",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "行情"
 
 
-		// 	}
-		// },
-		{
+			}
+		}, {
 			"path": "pages/toGovernmentList/toGovernmentList",
 			"style": {
 				"usingComponents": {},
@@ -207,7 +259,7 @@
 				"navigationBarBackgroundColor": "#07c160",
 				"navigationBarTextStyle": "white",
 				"navigationBarTitleText": "法律下乡"
-		
+
 			}
 		},
 		{
@@ -230,52 +282,57 @@
 			}
 		},
 		{
-			"path": "pages/asking/asking",
+			"path": "pages/liveBroadcast/liveBroadcast",
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
 				"navigationBarTextStyle": "white",
-				"navigationBarTitleText": "问吧"
-
+				"navigationBarTitleText": "直播带货"
 			}
 		},
 		{
-			"path": "pages/me/nameAuthentication",
+			"path": "pages/liveBroadcastDetails/liveBroadcastDetails",
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
 				"navigationBarTextStyle": "white",
-				"navigationBarTitleText": "实名认证"
-
+				"navigationBarTitleText": "直播带货详情"
 			}
 		},
 		{
-			"path": "pages/me/officialAuthentication",
+			"path": "pages/lifeServices/lifeServices",
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
 				"navigationBarTextStyle": "white",
-				"navigationBarTitleText": "官方认证"
-
+				"navigationBarTitleText": "生活服务"
 			}
 		},
 		{
-			"path" : "pages/liveBroadcast/liveBroadcast",
-			"style" :
-			{
+			"path": "pages/lifeServicesDetails/lifeServicesDetails",
+			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
 				"navigationBarTextStyle": "white",
-				"navigationBarTitleText": "直播带货"
+				"navigationBarTitleText": "生活服务详情"
 			}
 		},
 		{
-			"path" : "pages/liveBroadcastDetails/liveBroadcastDetails",
+			"path": "pages/knowledge/knowledge",
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
 				"navigationBarTextStyle": "white",
-				"navigationBarTitleText": "直播带货详情"
+				"navigationBarTitleText": "知识库"
+			}
+		},
+		{
+			"path": "pages/knowledgeDetails/knowledgeDetails",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "知识库详情"
 			}
 		}
 	],
@@ -292,8 +349,7 @@
 		"selectedColor": "#2f2f2f",
 		"borderStyle": "black",
 		"backgroundColor": "#f9f9f9",
-		"list": [
-			{
+		"list": [{
 				"text": "服务",
 				"pagePath": "pages/index/index",
 				"iconPath": "static/pages/images/fuwu2.png",
@@ -322,15 +378,13 @@
 		"navigationBarTitleText": "Weixin",
 		"navigationBarTextStyle": "black"
 	},
-	"condition" : { //模式配置,仅开发期间生效
+	"condition": { //模式配置,仅开发期间生效
 		"current": 0, //当前激活的模式(list 的索引项)
-		"list": [
-			{
-				"name": "test", //模式名称
-				"path": "pages/index/index", //启动页面,必选
-				"query": "" //启动参数,在页面的onLoad函数里面得到
-			}
-		]
+		"list": [{
+			"name": "test", //模式名称
+			"path": "pages/index/index", //启动页面,必选
+			"query": "" //启动参数,在页面的onLoad函数里面得到
+		}]
 	},
 	"subPackages": []
-}
+}

+ 89 - 0
pages/index/announcementDetails.vue

@@ -0,0 +1,89 @@
+<template>
+	<view class="uni-wrap">
+		<uni-section class="mb-10" :title="annoDetail.announcementTitle" :sub-title="subTitle">
+			<view class="uni-common-mt" style="background: #fff; padding: 20rpx">
+				<rich-text :nodes="annoDetail.announcementBody"></rich-text>
+			</view>
+		</uni-section>
+	</view>
+</template>
+
+<script>
+import { getDetialisById, announcementReat } from '@/api/index/index.js';
+
+export default {
+	data() {
+		return {
+			annoDetail: {
+				createBy: null,
+				createTime: '2024-03-04 09:19:49',
+				updateBy: null,
+				updateTime: null,
+				remark: null,
+				id: '2',
+				announcementTitle: '123',
+				announcementBody: '<p><strong>这是内容</strong></p><p><strong><em>真的是内容</em></strong></p><p><strong><em><u>还是内容</u></em></strong></p><p><strong><em><u><span class="ql-cursor">\ufeff</span></u></em></strong><img src="/dev-api/profile/upload/2024/03/04/程序员_20240304091946A002.jpg"></p>',
+				validityStartTime: '2024-03-03',
+				validityEndTime: '2024-03-05',
+				announcementImg: '/profile/upload/2024/03/04/程序员_20240304091901A001.jpg'
+			},
+			queryData:{
+				userId: getApp().globalData.userId,
+				annoId: null,
+			}
+		};
+	},
+	computed: {
+	    subTitle () {
+	      return this.annoDetail.updateBy !== null ? `${this.annoDetail.createTime} - ${this.annoDetail.updateBy}` : `${this.annoDetail.createTime} - ${this.annoDetail.createBy}`
+	    }
+	  },
+	/**
+	 * 生命周期函数--监听页面加载
+	 */
+	onLoad(options) {
+		this.queryData.annoId = options.id
+		this.getDetails(options.id);
+		this.setDataType();
+	},
+	methods: {
+		getDetails(annoId) {
+			getDetialisById(annoId).then((res) => {
+				this.annoDetail = res.data;
+			});
+		},
+		setDataType(){
+			announcementReat(this.queryData).then(res=>{
+				console.log(res.msg)
+			})
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+$uni-success: #18bc37 !default;
+
+.uni-wrap {
+	flex-direction: column;
+	/* #ifdef H5 */
+	height: calc(100vh - 44px);
+	/* #endif */
+	/* #ifndef H5 */
+	height: 100vh;
+	/* #endif */
+	flex: 1;
+}
+
+.mb-10 {
+	margin-bottom: 10px;
+}
+
+.decoration {
+	width: 6px;
+	height: 6px;
+	margin-right: 4px;
+	border-radius: 50%;
+	background-color: $uni-success;
+}
+</style>

+ 105 - 0
pages/index/announcementList.vue

@@ -0,0 +1,105 @@
+<template>
+	<view class="list">
+		<view v-for="(item, index) in list" :key="item.id" class="item">
+			<img :src="loadImgSrc(`${item.announcementImg}`)" class="avatar" />
+			<view class="info" style="height: 10em;">
+				<view class="name" @click="handleNavigate(item)">
+					{{ item.announcementTitle }}
+					<view class="unread-dot" v-if="item.readType == 0"></view>
+				</view>
+			</view>
+			<em class="iconfont icon-xiangyoujiantou" @click="handleNavigate(item)"></em>
+		</view>
+	</view>
+</template>
+
+<script>
+import { getList } from '@/api/index/index.js';
+
+export default {
+	data() {
+		return {
+			queryParam: {
+				pageNum: 1,
+				pageSize: 10,
+				userId: getApp().globalData.userId
+			},
+			total: null,
+			list: []
+		};
+	},
+	onLoad() {
+		this.getAnnoList();
+	},
+	onReachBottom() {
+		let pageNum = this.queryParam.pageNum;
+		let pageSize = this.queryParam.pageSize;
+		let total = this.total;
+		if (pageNum * pageSize >= total) {
+			uni.showToast({
+				title: '暂无更多数据'
+			});
+			return;
+		} else {
+			this.queryParam.pageNum += 1;
+			this.getAnnoList();
+		}
+	},
+	methods: {
+		getAnnoList() {
+			console.log(this.queryParam)
+			getList(this.queryParam).then((res) => {
+				this.list = [...this.list,...res.rows]
+				// this.list = res.rows;
+				this.total = res.total;
+			});
+		},
+		handleNavigate(item) {
+			item.readType = 1;
+			uni.navigateTo({
+				url: '/pages/index/announcementDetails?id=' + item.id
+			});
+		}
+	}
+};
+</script>
+<style>
+.list {
+	padding: 20rpx;
+}
+
+.item {
+	display: flex;
+	align-items: center;
+	margin-bottom: 20rpx;
+}
+
+.avatar {
+	width: 60rpx;
+	height: 60rpx;
+	border-radius: 50%;
+}
+
+.info {
+	display: flex;
+	align-items: center;
+}
+
+.name {
+	font-size: 28rpx;
+	font-weight: bold;
+	margin-right: 10rpx; /* 添加间距 */
+	position: relative;
+}
+
+.unread-dot {
+	width: 10rpx;
+	height: 10rpx;
+	background-color: red;
+	border-radius: 50%;
+	position: absolute;
+	right: -15rpx; /* 相对于父容器位置调整 */
+	top: 50%;
+	transform: translateY(-50%);
+}
+</style>

+ 282 - 226
pages/index/index.vue

@@ -35,8 +35,8 @@
                     <text>法律乡下</text>
                     <image :src="loadImgSrc('/fv.jpg')"></image>
                 </view>
-                <view class="hm">
-                    <text>惠民通</text>
+                <view class="hm" @click='toGovernmentList1'>
+                    <text >惠民通</text>
                     <image :src="loadImgSrc('/hm.jpg')"></image>
                 </view>
             </view>
@@ -50,14 +50,14 @@
                     <em class="iconfont icon-gonggao"></em>
                     [公告]
                 </span>
-                <swiper class="swiper_container" :autoplay="true" :circular="true" :vertical="true" interval="2000">
-                    <block v-for="(item, index) in msgList" :key="index">
-                        <swiper-item>
-                            <view class="swiper_item">{{ item.title }}</view>
-                        </swiper-item>
-                    </block>
-                </swiper>
-                <em class="iconfont icon-xiangyoujiantou"></em>
+              <swiper class="swiper_container" :autoplay="true" :circular="true" :vertical="true" interval="2000">
+                <block v-for="(item, index) in announcementList" :key="index">
+                  <swiper-item @click="handleNavigate(item.id)">
+                    <view class="swiper_item">{{ item.announcementTitle }}</view>
+                  </swiper-item>
+                </block>
+              </swiper>
+              <em class="iconfont icon-xiangyoujiantou" @click="goAnnoList()"></em>
             </view>
         </view>
         <!-- 公告 end -->
@@ -111,14 +111,16 @@
                     </li>
                     <li>
                         <view class="gxs" @tap="goCooperative"><em class="iconfont icon-gongxiaoshelogo"></em></view>
-                        <span @tap="goSpecialService">供销社</span>
+                        <span @tap="goLoveAtVillage">供</span>
+                        <span @tap="goLegalService">销</span>
+                        <span @tap="goFinancialInfrastructure">社</span>
                     </li>
                     <li>
                         <view class="xlzx"><em class="iconfont icon-linshijiuzhu"></em></view>
                         <span>帮扶救助</span>
                     </li>
                     <li>
-                        <view class="xswz"><em class="iconfont icon-zhishi1"></em></view>
+                        <view class="xswz"><em class="iconfont icon-zhishi1" @tap="gozsk"></em></view>
                         <span>知识库</span>
                     </li>
                     <li>
@@ -143,193 +145,217 @@
                 <view class="list" @tap="goDetails" v-for="(item, index) in indexList" :key="index">
                     <span class="listTitle">{{ item.title }}</span>
 
-                    <view class="onePic" v-if="item.imgList.length == 1">
-                        <image :src="loadImgSrc('/'+item.url)" v-for="(item, index1) in item.imgList" :key="index1"></image>
-                    </view>
+					<view class="onePic" v-if="item.imgList.length == 1">
+						<image :src="loadImgSrc('/' + item.url)" v-for="(item, index1) in item.imgList" :key="index1"></image>
+					</view>
 
-                    <view class="twoPic" v-if="item.imgList.length == 2">
-                        <image :src="loadImgSrc('/'+item.url)" v-for="(item, index1) in item.imgList" :key="index1"></image>
-                    </view>
+					<view class="twoPic" v-if="item.imgList.length == 2">
+						<image :src="loadImgSrc('/' + item.url)" v-for="(item, index1) in item.imgList" :key="index1"></image>
+					</view>
 
-                    <view class="threePic" v-if="item.imgList.length == 3">
-                        <image :src="loadImgSrc('/'+item.url)" v-for="(item, index1) in item.imgList" :key="index1"></image>
-                    </view>
+					<view class="threePic" v-if="item.imgList.length == 3">
+						<image :src="loadImgSrc('/' + item.url)" v-for="(item, index1) in item.imgList" :key="index1"></image>
+					</view>
 
-                    <view class="jlSj">
-                        <span class="jf">
-                            {{ item.jf }}
-                            <em class="iconfont icon-jifen"></em>
-                        </span>
-                        <view class="ck">
-                            <span>
-                                <em class="iconfont icon-pinglun"></em>
-                                {{ item.pl }}
-                            </span>
-                            <span>
-                                <em class="iconfont icon-chakan"></em>
-                                {{ item.ck }}
-                            </span>
-                            <span>
-                                <em class="iconfont icon-shoucang"></em>
-                                {{ item.dz }}
-                            </span>
-                        </view>
-                    </view>
-                </view>
-            </view>
-        </view>
-        <view class="fengexian"></view>
-        <!-- 分割线 -->
-        <view class="container">
-            <view class="titleLeft">
-                <em class="iconfont icon-zhishiku1"></em>
-                热门知识
-            </view>
-            <ul class="rmzsList">
-                <li>
-                    <image :src="loadImgSrc('/10_16.png')"></image>
-                    <view class="listCont">
-                        <p>稳预期 促互通——专家学者建言献策国际农产品市场和贸易高质量发展</p>
-                        <text>唐旭 姚媛</text>
-                        <view class="biaoqian">
-                            <span>三农</span>
-                            <span>教育</span>
-                        </view>
-                        <view class="jiage">
-                            <span class="yhjg">
-                                <em>¥</em>
-                                200
-                            </span>
-                            <span class="yjjg">¥500</span>
-                        </view>
-                    </view>
-                </li>
-                <li>
-                    <image :src="loadImgSrc('/10_16.png')"></image>
-                    <view class="listCont">
-                        <p>稳预期 促互通——专家学者建言献策国际农产品市场和贸易高质量发展</p>
-                        <text>唐旭 姚媛</text>
-                        <view class="biaoqian">
-                            <span>三农</span>
-                            <span>教育</span>
-                        </view>
-                        <view class="jiage">
-                            <span class="yhjg">
-                                <em>¥</em>
-                                200
-                            </span>
-                            <span class="yjjg">¥500</span>
-                        </view>
-                    </view>
-                </li>
-            </ul>
-        </view>
-    </view>
+					<view class="jlSj">
+						<span class="jf">
+							{{ item.jf }}
+							<em class="iconfont icon-jifen"></em>
+						</span>
+						<view class="ck">
+							<span>
+								<em class="iconfont icon-pinglun"></em>
+								{{ item.pl }}
+							</span>
+							<span>
+								<em class="iconfont icon-chakan"></em>
+								{{ item.ck }}
+							</span>
+							<span>
+								<em class="iconfont icon-shoucang"></em>
+								{{ item.dz }}
+							</span>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="fengexian"></view>
+		<!-- 分割线 -->
+		<view class="container">
+			<view class="titleLeft">
+				<em class="iconfont icon-zhishiku1"></em>
+				热门知识
+			</view>
+			<ul class="rmzsList">
+				<li>
+					<image :src="loadImgSrc('/10_16.png')"></image>
+					<view class="listCont">
+						<p>稳预期 促互通——专家学者建言献策国际农产品市场和贸易高质量发展</p>
+						<text>唐旭 姚媛</text>
+						<view class="biaoqian">
+							<span>三农</span>
+							<span>教育</span>
+						</view>
+						<view class="jiage">
+							<span class="yhjg">
+								<em>¥</em>
+								200
+							</span>
+							<span class="yjjg">¥500</span>
+						</view>
+					</view>
+				</li>
+				<li>
+					<image :src="loadImgSrc('/10_16.png')"></image>
+					<view class="listCont">
+						<p>稳预期 促互通——专家学者建言献策国际农产品市场和贸易高质量发展</p>
+						<text>唐旭 姚媛</text>
+						<view class="biaoqian">
+							<span>三农</span>
+							<span>教育</span>
+						</view>
+						<view class="jiage">
+							<span class="yhjg">
+								<em>¥</em>
+								200
+							</span>
+							<span class="yjjg">¥500</span>
+						</view>
+					</view>
+				</li>
+			</ul>
+		</view>
+	</view>
 </template>
 
 <script>
-	import {governmentListData} from '@/api/information/information.js'
+import { getListToAnnouncement } from '@/api/index/index.js';
+import { governmentListData } from '@/api/information/information.js';
+
 export default {
-    data() {
-        return {
-            // 图片轮播
-            banners: [
-                {
-                    src: '/img1.png'
-                },
-                {
-                    src: '/img2.png'
-                }
-            ],
-            msgList: [
-                {
-                    id: 0,
-                    title: '关于高质量推进土地整治工作赋能乡村振兴的通知'
-                },
-                {
-                    id: 1,
-                    title: '关于高质量推进土地整治工作的通知'
-                },
-                {
-                    id: 2,
-                    title: '关于乡村振兴的通知'
-                }
-            ],
-            indicatorDots: true,
-            vertical: false,
-            autoplay: true,
-            interval: 2000,
-            duration: 500,
-            circular: true,
-			governmentList:[],
-            indexList: [
-			  {
-				  "ck": "10",
-				  "dz": "10",
-				  "id": 1,
-				  "imgList": [],
-				  "jf": "100",
-				  "pl": "10",
-				  "title": "探索乡村能源供给新模式 绘就乡村振兴美丽新画卷"
-			  },
-			  {
-				  "ck": "20",
-				  "dz": "200",
-				  "id": 2,
-				  "imgList": [
-					  {
-						  "url": "/xczx01.png"
-					  }
-				  ],
-				  "jf": "220",
-				  "pl": "20",
-				  "title": "探索乡村能源供给新模式 绘就乡村振兴美丽新画卷"
-			  },
-			  {
-				  "ck": "30",
-				  "dz": "320",
-				  "id": 3,
-				  "imgList": [
-					  {
-						  "url": "/xczx01.png"
-					  },
-					  {
-						  "url": "/xczx01.png"
-					  }
-				  ],
-				  "jf": "300",
-				  "ly": "30",
-				  "title": "探索乡村能源供给新模式 绘就乡村振兴美丽新画卷"
-			  },
-			  {
-				  "ck": "40",
-				  "dz": "420",
-				  "id": 4,
-				  "imgList": [
-					  {
-						  "url": "/img1.png"
-					  },
-					  {
-						  "url": "/img1.png"
-					  },
-					  {
-						  "url": "/img1.png"
-					  }
-				  ],
-				  "jf": "400",
-				  "pl": "40",
-				  "title": "探索乡村能源供给新模式 绘就乡村振兴美丽新画卷"
-			  }
-			]
-        };
-    }
-    /**
-     * 生命周期函数--监听页面加载
-     */,
-    onLoad(options) {
-    },
+	data() {
+		return {
+			// 图片轮播
+			banners: [
+				{
+					src: '/img1.png'
+				},
+				{
+					src: '/img2.png'
+				}
+			],
+			announcementList: [
+				{
+					id: '3',
+					announcementTitle: '关于高质量推进土地整治工作赋能乡村振兴的通知'
+				},
+				{
+					id: '2',
+					announcementTitle: '关于高质量推进土地整治工作的通知'
+				},
+				{
+					id: '1',
+					announcementTitle: '关于乡村振兴的通知'
+				}
+			],
+			requestParam: {
+				userId: getApp().globalData.userId
+			},
+			msgList: [
+				{
+					id: 0,
+					title: '关于高质量推进土地整治工作赋能乡村振兴的通知'
+				},
+				{
+					id: 1,
+					title: '关于高质量推进土地整治工作的通知'
+				},
+				{
+					id: 2,
+					title: '关于乡村振兴的通知'
+				}
+			],
+			indicatorDots: true,
+			vertical: false,
+			autoplay: true,
+			interval: 2000,
+			duration: 500,
+			circular: true,
+			governmentList: [],
+			indexList: [
+				{
+					ck: '10',
+					dz: '10',
+					id: 1,
+					imgList: [],
+					jf: '100',
+					pl: '10',
+					title: '探索乡村能源供给新模式 绘就乡村振兴美丽新画卷'
+				},
+				{
+					ck: '20',
+					dz: '200',
+					id: 2,
+					imgList: [
+						{
+							url: '/xczx01.png'
+						}
+					],
+					jf: '220',
+					pl: '20',
+					title: '探索乡村能源供给新模式 绘就乡村振兴美丽新画卷'
+				},
+				{
+					ck: '30',
+					dz: '320',
+					id: 3,
+					imgList: [
+						{
+							url: '/xczx01.png'
+						},
+						{
+							url: '/xczx01.png'
+						}
+					],
+					jf: '300',
+					ly: '30',
+					title: '探索乡村能源供给新模式 绘就乡村振兴美丽新画卷'
+				},
+				{
+					ck: '40',
+					dz: '420',
+					id: 4,
+					imgList: [
+						{
+							url: '/img1.png'
+						},
+						{
+							url: '/img1.png'
+						},
+						{
+							url: '/img1.png'
+						}
+					],
+					jf: '400',
+					pl: '40',
+					title: '探索乡村能源供给新模式 绘就乡村振兴美丽新画卷'
+				}
+			],
+			queryParam: {
+				pageNum: 1,
+				pageSize: 10,
+				userId: getApp().globalData.userId
+			}
+		};
+	},
+	/**
+	 * 生命周期函数--监听页面加载
+	 */ onLoad(options) {
+		this.getAnnouncementList(getApp().globalData.userId);
+	},
 	mounted() {
-		this.governmentListData()
+		this.governmentListData();
 	},
     methods: {
 		toLegal(){
@@ -339,50 +365,55 @@ export default {
 		},
 		toGovernmentList(){
 			uni.navigateTo({
-			    url: '/pages/toGovernmentList/toGovernmentList'
+				url: '/pages/toGovernmentList/toGovernmentList'
+			});
+		},
+		toGovernmentList1(){
+			uni.navigateTo({
+			    url: '/pages/toGovernmentList/toGovernmentList?type=10'
 			});
 		},
-		governmentListData(){
+		governmentListData() {
 			let params = {
-			  pageSize: 10,
-			  pageNum: 1,
-			  type:10,
-			  isGovernment:1
-			  }
-			governmentListData(params).then(res =>{
-				if (res.code==200) {
-					this.governmentList=res.data
+				pageSize: 10,
+				pageNum: 1,
+				type: 10,
+				isGovernment: 1
+			};
+			governmentListData(params).then((res) => {
+				if (res.code == 200) {
+					this.governmentList = res.data;
 				}
-			})
+			});
+		},
+		goWenBa() {
+			uni.navigateTo({
+				url: '/pages/asking/asking'
+			});
+		},
+		goHangQing() {
+			uni.navigateTo({
+				url: '/pages/quotations/quotations'
+			});
+		},
+		goShangCheng() {
+			uni.navigateTo({
+				url: '/pages/shangcheng/shangcheng'
+			});
 		},
-        goWenBa() {
-            uni.navigateTo({
-                url: '/pages/asking/asking'
-            });
-        },
-      goHangQing() {
-        uni.navigateTo({
-          url: '/pages/quotations/quotations'
-        });
-      },
-        goShangCheng() {
-            uni.navigateTo({
-                url: '/pages/shangcheng/shangcheng'
-            });
-        },
 
-        goDetails() {
-            uni.navigateTo({
-                url: '/pages/wenbaxiangqing/wenbaxiangqing'
-            });
-        },
+		goDetails() {
+			uni.navigateTo({
+				url: '/pages/wenbaxiangqing/wenbaxiangqing'
+			});
+		},
 
         goCooperative() {
             uni.navigateTo({
                 url: '/pages/cooperative/cooperative'
             });
         },
-        goSpecialService() {
+        goLoveAtVillage() {
             uni.navigateTo({
                 url: '/pages/specialService/loveAtVillage/loveAtVillage'
             });
@@ -402,15 +433,40 @@ export default {
 				url: '/pages/handleAffairs/handleAffairs'
 			});
 		},
+		//获取最新公告列表(三条未读消息)
+		getAnnouncementList(userId) {
+			getListToAnnouncement(userId).then((res) => {
+				this.announcementList = res.data;
+			});
+		},
+		handleNavigate(item) {
+			uni.navigateTo({
+				url: '/pages/index/announcementDetails?id=' + item
+			});
+		},
+		//跳转公告列表页面
+		goAnnoList() {
+			uni.navigateTo({
+				url: '/pages/index/announcementList'
+			});
+		},
 		/**
 		 * 跳转直播带货页面
 		 */
-		gozbdh(){
+		gozbdh() {
+			uni.navigateTo({
+				url: '/pages/liveBroadcast/liveBroadcast'
+			});
+		},
+		/**
+		 * 跳转知识库页面
+		 */
+		gozsk(){
 			uni.navigateTo({
-			    url: '/pages/liveBroadcast/liveBroadcast'
+			    url: '/pages/knowledge/knowledge'
 			});
 		},
-    }
+	}
 };
 </script>
 <style>

+ 12 - 3
pages/informationDetail/informationDetail.vue

@@ -6,9 +6,9 @@
             <view class="wenzhangLy">
                 <!-- 头像昵称 -->
                 <view class="txTime">
-                    <image :src="loadImgSrc('/moren.png')"></image>
+                    <image :src="loadImgSrc(detailInfo.headImg!=null?detailInfo.headImg:'/profile/upload/2024/03/05/abf969632ee94bd5a429c8c2dbb2f6b4 (1)_20240305092823A002.png')"></image>
                     <view class="time">
-                        <p>国家乡村振兴局</p>
+                        <p>{{detailInfo.nickName?detailInfo.nickName:'网友'}}</p>
                         <span>{{ detailInfo.createTime }}</span>
                     </view>
                 </view>
@@ -19,8 +19,17 @@
                 <span v-html="detailInfo.textDetails">
                 </span>
 			
-                <!-- <image :src="loadImgSrc('/img2.png')"></image> -->
+                <view >
+                    <!-- 图片轮播 -->
+                    <swiper :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval" :duration="duration" :circular="circular">
+                        <block v-for="(one, index) in detailInfo.urls" :key="index">
+                            <swiper-item><image :src="loadImgSrc(one)" mode="aspectFill"></image></swiper-item>
+                        </block>
+                    </swiper>
+                </view>
             </view>
+			
+			
         </view>
 	</view>
 </template>

+ 136 - 0
pages/knowledge/knowledge.css

@@ -0,0 +1,136 @@
+/* pages/wenda/wenda.wxss */
+.wendaFL {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 30rpx 0 0 0;
+}
+.wendaFL li {
+    width: 48%;
+    height: 168rpx;
+    position: relative;
+}
+.lbBj {
+    position: absolute;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 100%;
+    height: 100%;
+}
+.wendaFL li h2 {
+    font-size: 36rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 40rpx;
+    z-index: 1;
+    font-weight: bold;
+}
+.wendaFL li span {
+    font-size: 30rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 88rpx;
+    z-index: 1;
+}
+.wendaFL li.sanNong {
+    color: #0d9970;
+}
+.wendaFL li.jiuYe {
+    color: #1e8fb4;
+}
+.wendaFL li.faLv {
+    color: #1e5dab;
+}
+.wendaFL li.jiuZhen {
+    color: #4a700d;
+}
+/* 列表 */
+.rnwdList {
+    width: 100%;
+    height: 100%;
+}
+.list {
+    border-bottom: solid 2rpx #f6f6f6;
+    padding: 10rpx 0;
+    width: 100%;
+}
+.lb {
+    background: #0d9970;
+    color: #fff;
+    font-size: 24rpx;
+    width: 12%;
+    text-align: center;
+    padding: 2rpx 0;
+    line-height: 40rpx;
+    height: 40rpx;
+    border-radius: 10rpx;
+}
+.listTitle {
+    font-size: 32rpx;
+    color: #333;
+    line-height: 40rpx;
+}
+.icon-jifen {
+    font-size: 28rpx;
+    color: #07c160;
+    margin: 0 0 0 6rpx;
+}
+.icon-pinglun,
+.icon-chakan,
+.icon-shoucang {
+    font-size: 28rpx;
+    margin: 0 6rpx 0 20rpx;
+    color: #c4c4c4;
+}
+.icon-xiangyoujiantou {
+    font-size: 30rpx;
+    color: #c4c4c4;
+    line-height: 60rpx;
+}
+.onePic {
+    width: 100%;
+    height: 360rpx;
+    border-radius: 20rpx;
+    overflow: hidden;
+    margin: 20rpx 0;
+}
+.onePic image {
+    width: 100%;
+    height: 100%;
+}
+.twoPic {
+    width: 100%;
+    height: 220rpx;
+    margin: 20rpx 0;
+    display: flex;
+    justify-content: space-between;
+}
+.twoPic image {
+    width: 49%;
+    height: auto;
+    border-radius: 20rpx;
+}
+.threePic {
+    width: 100%;
+    height: 160rpx;
+    margin: 20rpx 0;
+    display: flex;
+    justify-content: space-between;
+}
+.threePic image {
+    width: 32%;
+    height: auto;
+    border-radius: 20rpx;
+}
+.jlSj {
+    height: 40rpx;
+    display: flex;
+    justify-content: space-between;
+    font-size: 24rpx;
+    margin: 20rpx 0 0 0;
+}
+.ck {
+    color: #c4c4c4;
+	margin-left:240px;
+}

+ 98 - 0
pages/knowledge/knowledge.vue

@@ -0,0 +1,98 @@
+<template>
+	<!-- 知识库列表 -->
+	<view class="container">
+		<view class="rnwdList">
+			<view class="list" @tap="goDetails(item.id)" v-for="(item, index1) in dataSource" :key="index1">
+				<span class="listTitle">{{ item.titleName }}</span>
+
+				<view class="onePic">
+					<image :src="loadImgSrcLocalhost(item.imgUrlList)">
+					</image>
+				</view>
+
+				<view class="jlSj">
+					<view class="ck">
+						<span>
+							<em class="iconfont icon-chakan"></em>
+							{{ item.likeNum }}
+						</span>
+						<span>
+							<em class="iconfont icon-shoucang"></em>
+							{{ item.watchNum }}
+						</span>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		list
+	} from '@/api/knowledge/knowledge.js';
+	export default {
+		data() {
+			return {
+				dataSource: [],
+				// 数据总量
+				total: 0,
+				queryParams: {
+					// 当前页
+					pageNum: 1,
+					// 每页数据量
+					pageSize: 10,
+				},
+				loading: false,
+			}
+		},
+		/**
+		 * 生命周期函数--监听页面加载
+		 */
+		onLoad(options) {
+			this.getList(1)
+		},
+		onReachBottom(){
+			let pageNum = this.queryParams.pageNum
+			let pageSize = this.queryParams.pageSize
+			let total = this.total
+			if(pageNum * pageSize >= total){
+				uni.showToast({
+					title:'暂无更多数据'
+				})
+				return
+			} else {
+				this.queryParams.pageNum += 1;
+				this.getList()
+			}
+		},
+		methods: {
+			goDetails(id) {
+				uni.navigateTo({
+					url: '/pages/knowledgeDetails/knowledgeDetails?id=' + id,
+				});
+			},
+			// 分页触发
+			change(e) {
+				this.getList(e.current);
+			},
+			// 获取数据
+			getList(pageNum) {
+				let params = {
+					pageSize: this.queryParams.pageSize,
+					pageNum: pageNum,
+				}
+				list(params).then(res => {
+					if (res.code == 200) {
+						this.dataSource = [...this.dataSource,...res.rows]
+						this.total = res.total
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	@import './knowledge.css';
+</style>

pages/toGovernmentList/toGovernmentListDetail.css → pages/knowledgeDetails/knowledgeDetails.css


+ 238 - 0
pages/knowledgeDetails/knowledgeDetails.vue

@@ -0,0 +1,238 @@
+<template>
+	<view>
+		<!-- 知识库详情 -->
+		<view class="container">
+			<h1 class="title">{{fromData.titleName}}</h1>
+			<view class="wenzhangLy">
+				<!-- 头像昵称 -->
+				<view class="txTime">
+					<img class="uni-header-image"
+						:src="initInfo.headImg == null || initInfo.headImg == '' ? 'http://116.142.80.12:9000/10_03.png' : initInfo.headImg" />
+					<view class="time">
+						<p>{{initInfo.wechatName}}</p>
+						<span>{{fromData.createTime}}</span>
+					</view>
+				</view>
+			</view>
+			<view class="wenzhangCont">
+				<view v-html="fromData.textDetails"></view>
+				<view>
+					<image :src="loadImgSrcLocalhost(fromData.imgUrlList)"></image>
+				</view>
+			</view>
+			<view class="fengexian"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getDetails
+	} from '@/api/knowledge/knowledge.js';
+	import {
+		getUserInfo
+	} from '@/api/me/me.js'
+	export default {
+		data() {
+			return {
+				parentId: "",
+				fromData: {},
+				content: "",
+				initInfo: {
+					userId: null,
+					scoreNum: 0,
+					wechatName: "微信用户",
+					name: null,
+					headImg: null,
+				},
+			};
+		},
+		methods: {
+			// 获取数据
+			getDetails() {
+				getDetails(this.parentId).then(res => {
+					if (res.code == 200) {
+						this.fromData = res.data
+					}
+				})
+			},
+			getUserInfoByUserId(userId) {
+				getUserInfo(userId).then(res => {
+					this.initInfo = res.data;
+					console.log("this.initInfo", this.initInfo)
+				})
+			},
+		}
+		/**
+		 * 生命周期函数--监听页面加载
+		 */
+		,
+		onLoad(options) {
+			this.parentId = options.id
+			this.getDetails()
+		},
+		/**
+		 * 生命周期函数--监听页面初次渲染完成
+		 */
+		onReady() {
+			this.userId = getApp().globalData.userId
+			this.getUserInfoByUserId(this.userId)
+		},
+		/**
+		 * 生命周期函数--监听页面显示
+		 */
+		onShow() {},
+		/**
+		 * 生命周期函数--监听页面隐藏
+		 */
+		onHide() {},
+		/**
+		 * 生命周期函数--监听页面卸载
+		 */
+		onUnload() {},
+		/**
+		 * 页面相关事件处理函数--监听用户下拉动作
+		 */
+		onPullDownRefresh() {},
+		/**
+		 * 页面上拉触底事件的处理函数
+		 */
+		onReachBottom() {},
+		/**
+		 * 用户点击右上角分享
+		 */
+		onShareAppMessage() {},
+	};
+</script>
+<style lang="scss">
+	@import './knowledgeDetails.css';
+
+	.collect {
+		.icon-shoucang:before {
+			color: red;
+		}
+	}
+
+	.not-collect {}
+
+	.effectBix {
+		width: 56px;
+		height: 56px;
+		border-radius: 50px;
+		font-family: 'Bebas Neue', cursive;
+		background: linear-gradient(45deg, transparent 5%, #FF013C 5%);
+		border: 0;
+		color: #fff;
+		text-align: center;
+		line-height: 56px;
+		outline: transparent;
+		position: absolute;
+		transform: rotate(-30deg);
+		right: 3%;
+		top: -5%;
+	}
+
+	.effectBox,
+	.effectBox::after {
+		width: 56px;
+		height: 56px;
+		border-radius: 50px;
+		font-size: 16px;
+		font-family: 'Bebas Neue', cursive;
+		background: linear-gradient(45deg, transparent 5%, #FF013C 5%);
+		border: 0;
+		color: #fff;
+		opacity: 1;
+		letter-spacing: 3px;
+		text-align: center;
+		line-height: 56px;
+		outline: transparent;
+		position: relative;
+		left: 78%;
+		top: 113%;
+		transform: rotate(-30deg);
+		z-index: 1;
+	}
+
+	.effectBox::after {
+		--slice-0: inset(50% 50% 50% 50%);
+		--slice-1: inset(80% -6px 0 0);
+		--slice-2: inset(50% -6px 30% 0);
+		--slice-3: inset(10% -6px 85% 0);
+		--slice-4: inset(40% -6px 43% 0);
+		--slice-5: inset(80% -6px 5% 0);
+
+		content: 'AVAILABLE NOW';
+		display: block;
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: linear-gradient(45deg, transparent 3%, #00E6F6 3%, #00E6F6 5%, #FF013C 5%);
+		text-shadow: -3px -3px 0px #F8F005, 3px 3px 0px #00E6F6;
+		clip-path: var(--slice-0);
+	}
+
+	.effectBox:hover::after {
+		animation: 1s glitch;
+		animation-timing-function: steps(2, end);
+	}
+
+	@keyframes glitch {
+		0% {
+			clip-path: var(--slice-1);
+			transform: translate(-20px, -10px);
+		}
+
+		10% {
+			clip-path: var(--slice-3);
+			transform: translate(10px, 10px);
+		}
+
+		20% {
+			clip-path: var(--slice-1);
+			transform: translate(-10px, 10px);
+		}
+
+		30% {
+			clip-path: var(--slice-3);
+			transform: translate(0px, 5px);
+		}
+
+		40% {
+			clip-path: var(--slice-2);
+			transform: translate(-5px, 0px);
+		}
+
+		50% {
+			clip-path: var(--slice-3);
+			transform: translate(5px, 0px);
+		}
+
+		60% {
+			clip-path: var(--slice-4);
+			transform: translate(5px, 10px);
+		}
+
+		70% {
+			clip-path: var(--slice-2);
+			transform: translate(-10px, 10px);
+		}
+
+		80% {
+			clip-path: var(--slice-5);
+			transform: translate(20px, -10px);
+		}
+
+		90% {
+			clip-path: var(--slice-1);
+			transform: translate(-10px, 0px);
+		}
+
+		100% {
+			clip-path: var(--slice-1);
+			transform: translate(0);
+		}
+	}
+</style>

+ 136 - 0
pages/lifeServices/lifeServices.css

@@ -0,0 +1,136 @@
+/* pages/wenda/wenda.wxss */
+.wendaFL {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 30rpx 0 0 0;
+}
+.wendaFL li {
+    width: 48%;
+    height: 168rpx;
+    position: relative;
+}
+.lbBj {
+    position: absolute;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 100%;
+    height: 100%;
+}
+.wendaFL li h2 {
+    font-size: 36rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 40rpx;
+    z-index: 1;
+    font-weight: bold;
+}
+.wendaFL li span {
+    font-size: 30rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 88rpx;
+    z-index: 1;
+}
+.wendaFL li.sanNong {
+    color: #0d9970;
+}
+.wendaFL li.jiuYe {
+    color: #1e8fb4;
+}
+.wendaFL li.faLv {
+    color: #1e5dab;
+}
+.wendaFL li.jiuZhen {
+    color: #4a700d;
+}
+/* 列表 */
+.rnwdList {
+    width: 100%;
+    height: 100%;
+}
+.list {
+    border-bottom: solid 2rpx #f6f6f6;
+    padding: 10rpx 0;
+    width: 100%;
+}
+.lb {
+    background: #0d9970;
+    color: #fff;
+    font-size: 24rpx;
+    width: 12%;
+    text-align: center;
+    padding: 2rpx 0;
+    line-height: 40rpx;
+    height: 40rpx;
+    border-radius: 10rpx;
+}
+.listTitle {
+    font-size: 32rpx;
+    color: #333;
+    line-height: 40rpx;
+}
+.icon-jifen {
+    font-size: 28rpx;
+    color: #07c160;
+    margin: 0 0 0 6rpx;
+}
+.icon-pinglun,
+.icon-chakan,
+.icon-shoucang {
+    font-size: 28rpx;
+    margin: 0 6rpx 0 20rpx;
+    color: #c4c4c4;
+}
+.icon-xiangyoujiantou {
+    font-size: 30rpx;
+    color: #c4c4c4;
+    line-height: 60rpx;
+}
+.onePic {
+    width: 100%;
+    height: 360rpx;
+    border-radius: 20rpx;
+    overflow: hidden;
+    margin: 20rpx 0;
+}
+.onePic image {
+    width: 100%;
+    height: 100%;
+}
+.twoPic {
+    width: 100%;
+    height: 220rpx;
+    margin: 20rpx 0;
+    display: flex;
+    justify-content: space-between;
+}
+.twoPic image {
+    width: 49%;
+    height: auto;
+    border-radius: 20rpx;
+}
+.threePic {
+    width: 100%;
+    height: 160rpx;
+    margin: 20rpx 0;
+    display: flex;
+    justify-content: space-between;
+}
+.threePic image {
+    width: 32%;
+    height: auto;
+    border-radius: 20rpx;
+}
+.jlSj {
+    height: 40rpx;
+    display: flex;
+    justify-content: space-between;
+    font-size: 24rpx;
+    margin: 20rpx 0 0 0;
+}
+.ck {
+    color: #c4c4c4;
+	margin-left:240px;
+}

+ 110 - 0
pages/lifeServices/lifeServices.vue

@@ -0,0 +1,110 @@
+<template>
+	<!-- 生活服务列表 -->
+	<view class="container">
+		<view class="rnwdList">
+			<view class="list" @tap="goDetails(item.id)" v-for="(item, index1) in dataSource" :key="index1">
+				<span class="listTitle">{{ item.titleName }}</span>
+
+				<view class="onePic" v-if="item.pictureList != null && item.pictureList.length == 1">
+					<image :src="loadImgSrcLocalhost(item2)" v-for="(item2, index2) in item.pictureList" :key="index2">
+					</image>
+				</view>
+				<view class="twoPic" v-if="item.pictureList != null && item.pictureList.length == 2">
+					<image :src="loadImgSrcLocalhost(item2)" v-for="(item2, index2) in item.pictureList" :key="index2">
+					</image>
+				</view>
+				<view class="threePic" v-if="item.pictureList != null && item.pictureList.length == 3">
+					<image :src="loadImgSrcLocalhost(item2)" v-for="(item2, index2) in item.pictureList" :key="index2">
+					</image>
+				</view>
+				<view class="threePic" v-if="item.pictureList != null && item.pictureList.length > 3">
+					<image :src="loadImgSrcLocalhost(item2)" v-for="(item2, index2) in item.pictureList"
+						v-if="index2 < 3" :key="index2"></image>
+				</view>
+
+				<view class="jlSj">
+					<view class="ck">
+						<span>
+							<em class="iconfont icon-chakan"></em>
+							{{ item.likeNum }}
+						</span>
+						<span>
+							<em class="iconfont icon-shoucang"></em>
+							{{ item.watchNum }}
+						</span>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		list
+	} from '@/api/lifeServices/lifeServices.js';
+	export default {
+		data() {
+			return {
+				dataSource: [],
+				// 数据总量
+				total: 0,
+				queryParams: {
+					// 当前页
+					pageNum: 1,
+					// 每页数据量
+					pageSize: 10,
+				},
+				loading: false,
+			}
+		},
+		/**
+		 * 生命周期函数--监听页面加载
+		 */
+		onLoad(options) {
+			this.getList(1)
+		},
+		onReachBottom(){
+			let pageNum = this.queryParams.pageNum
+			let pageSize = this.queryParams.pageSize
+			let total = this.total
+			if(pageNum * pageSize >= total){
+				uni.showToast({
+					title:'暂无更多数据'
+				})
+				return
+			} else {
+				this.queryParams.pageNum += 1;
+				this.getList()
+			}
+		},
+		methods: {
+			goDetails(id) {
+				uni.navigateTo({
+					url: '/pages/lifeServicesDetails/lifeServicesDetails?id=' + id,
+				});
+			},
+			// 分页触发
+			change(e) {
+				this.getList(e.current);
+			},
+			// 获取数据
+			getList(pageNum) {
+				let params = {
+					pageSize: this.queryParams.pageSize,
+					pageNum: pageNum,
+				}
+				list(params).then(res => {
+					if (res.code == 200) {
+						this.dataSource = [...this.dataSource,...res.rows]
+						this.total = res.total
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+	@import './lifeServices.css';
+</style>

+ 160 - 0
pages/lifeServicesDetails/lifeServicesDetails.css

@@ -0,0 +1,160 @@
+/* pages/wenbaxiangqing.wxss */
+.title {
+    font-size: 44rpx;
+    text-align: center;
+    line-height: 70rpx;
+    color: #333;
+    margin: 30rpx 0;
+}
+.wenzhangLy {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    border-bottom: solid 2rpx #e8e8e8;
+    padding: 0 0 14rpx 0;
+}
+.txTime {
+    display: flex;
+    flex-direction: row;
+}
+.txTime image {
+    width: 80rpx;
+    height: 80rpx;
+}
+.time {
+    display: flex;
+    flex-direction: column;
+    padding: 10rpx 0 0 8px;
+}
+.time p {
+    font-size: 28rpx;
+    color: #9c9c9c;
+}
+.time span {
+    font-size: 24rpx;
+    color: #c4c4c4;
+}
+
+.jf {
+    color: #07c160;
+    line-height: 80rpx;
+    font-size: 24rpx;
+}
+.icon-jifen {
+    font-size: 28rpx;
+    color: #07c160;
+    margin: 0 0 0 6rpx;
+}
+.ck {
+    color: #c4c4c4;
+    font-size: 28rpx;
+}
+.icon-pinglun,
+.icon-chakan,
+.ck .icon-shoucang {
+    font-size: 28rpx;
+    margin: 0 6rpx 0 20rpx;
+    color: #c4c4c4;
+    line-height: 0;
+}
+.wenzhangCont {
+    font-size: 34rpx;
+    margin: 30rpx 0;
+}
+.wenzhangCont image {
+    width: 100%;
+    height: 320rpx;
+    margin: 20rpx auto;
+}
+.pinglunTj {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 30rpx 0;
+}
+.pinglunTitle {
+    font-size: 34rpx;
+    color: #2e2e2e;
+    font-weight: 600;
+}
+.pinglunTitle em {
+    font-size: 34rpx;
+    color: #9b9b9b;
+    font-weight: normal;
+    margin: 0 0 0 10rpx;
+}
+.pinglunList {
+    width: 100%;
+    padding: 0 0 120rpx 0;
+}
+.pinglunList li {
+    margin: 20rpx 0;
+    border-bottom: solid 2rpx #e8e8e8;
+    padding: 0 0 20rpx 0;
+    display: flex;
+    flex-direction: column;
+}
+.plListcont {
+    font-size: 30rpx;
+    color: #696868;
+    margin: 20rpx 0;
+}
+.pinglunList li button {
+    width: 80%;
+    border-radius: 10rpx;
+    background: #07c160;
+    color: #fff;
+    font-size: 28rpx;
+    font-weight: normal;
+    margin: 16rpx auto;
+}
+.fabiaoPl {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    position: fixed;
+    left: 0;
+    bottom: 0;
+    height: 112rpx;
+    background: #e8e8e8;
+    box-shadow: 0rpx 0rpx 16rpx #999;
+}
+.shuRu {
+    width: 72%;
+    display: flex;
+    flex-direction: row;
+    height: 76rpx;
+    background: #e0e0e0;
+    border-radius: 60rpx;
+    margin: 20rpx 0 0 20rpx;
+}
+.shuRu input {
+    line-height: 38px;
+    height: 76rpx;
+    font-size: 30rpx;
+    width: 83%;
+}
+.icon-bianji {
+    font-size: 38rpx;
+    line-height: 76rpx;
+    margin: 0 10rpx 0 20rpx;
+    color: #828181;
+}
+.icon-shoucang {
+    font-size: 50rpx;
+    line-height: 112rpx;
+    color: #828181;
+}
+.fasong {
+    width: 58rpx;
+    height: 58rpx;
+    border-radius: 50rpx;
+    background: #07c160;
+    margin: 26rpx 20rpx 0 10rpx;
+    text-align: center;
+    line-height: 58rpx;
+}
+.icon-fasong {
+    font-size: 40rpx;
+    color: #fff;
+}

+ 237 - 0
pages/lifeServicesDetails/lifeServicesDetails.vue

@@ -0,0 +1,237 @@
+<template>
+	<view>
+		<!-- 生活服务详情 -->
+		<view class="container">
+			<h1 class="title">{{fromData.titleName}}</h1>
+			<view class="wenzhangLy">
+				<!-- 头像昵称 -->
+				<view class="txTime">
+					<img class="uni-header-image"
+						:src="initInfo.headImg == null || initInfo.headImg == '' ? 'http://116.142.80.12:9000/10_03.png' : initInfo.headImg" />
+					<view class="time">
+						<p>{{initInfo.wechatName}}</p>
+						<span>{{fromData.createTime}}</span>
+					</view>
+				</view>
+			</view>
+			<view class="wenzhangCont">
+				<view v-html="fromData.textDetails"></view>
+				<view v-for="(item, index) in fromData.pictureList" :key="index">
+					<image :src="loadImgSrcLocalhost(item)"></image>
+				</view>
+			</view>
+			<view class="fengexian"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		getDetails
+	} from '@/api/lifeServices/lifeServices.js';
+	import {
+		getUserInfo
+	} from '@/api/me/me.js'
+	export default {
+		data() {
+			return {
+				parentId: "",
+				fromData: {},
+				content: "",
+				initInfo: {
+					userId: null,
+					scoreNum: 0,
+					wechatName: "微信用户",
+					name: null,
+					headImg: null,
+				},
+			};
+		},
+		methods: {
+			// 获取数据
+			getDetails() {
+				getDetails(this.parentId).then(res => {
+					if (res.code == 200) {
+						this.fromData = res.data
+					}
+				})
+			},
+			getUserInfoByUserId(userId) {
+				getUserInfo(userId).then(res => {
+					this.initInfo = res.data;
+				})
+			},
+		}
+		/**
+		 * 生命周期函数--监听页面加载
+		 */
+		,
+		onLoad(options) {
+			this.parentId = options.id
+			this.getDetails()
+		},
+		/**
+		 * 生命周期函数--监听页面初次渲染完成
+		 */
+		onReady() {
+			this.userId = getApp().globalData.userId
+			this.getUserInfoByUserId(this.userId)
+		},
+		/**
+		 * 生命周期函数--监听页面显示
+		 */
+		onShow() {},
+		/**
+		 * 生命周期函数--监听页面隐藏
+		 */
+		onHide() {},
+		/**
+		 * 生命周期函数--监听页面卸载
+		 */
+		onUnload() {},
+		/**
+		 * 页面相关事件处理函数--监听用户下拉动作
+		 */
+		onPullDownRefresh() {},
+		/**
+		 * 页面上拉触底事件的处理函数
+		 */
+		onReachBottom() {},
+		/**
+		 * 用户点击右上角分享
+		 */
+		onShareAppMessage() {},
+	};
+</script>
+<style lang="scss">
+	@import './lifeServicesDetails.css';
+
+	.collect {
+		.icon-shoucang:before {
+			color: red;
+		}
+	}
+
+	.not-collect {}
+
+	.effectBix {
+		width: 56px;
+		height: 56px;
+		border-radius: 50px;
+		font-family: 'Bebas Neue', cursive;
+		background: linear-gradient(45deg, transparent 5%, #FF013C 5%);
+		border: 0;
+		color: #fff;
+		text-align: center;
+		line-height: 56px;
+		outline: transparent;
+		position: absolute;
+		transform: rotate(-30deg);
+		right: 3%;
+		top: -5%;
+	}
+
+	.effectBox,
+	.effectBox::after {
+		width: 56px;
+		height: 56px;
+		border-radius: 50px;
+		font-size: 16px;
+		font-family: 'Bebas Neue', cursive;
+		background: linear-gradient(45deg, transparent 5%, #FF013C 5%);
+		border: 0;
+		color: #fff;
+		opacity: 1;
+		letter-spacing: 3px;
+		text-align: center;
+		line-height: 56px;
+		outline: transparent;
+		position: relative;
+		left: 78%;
+		top: 113%;
+		transform: rotate(-30deg);
+		z-index: 1;
+	}
+
+	.effectBox::after {
+		--slice-0: inset(50% 50% 50% 50%);
+		--slice-1: inset(80% -6px 0 0);
+		--slice-2: inset(50% -6px 30% 0);
+		--slice-3: inset(10% -6px 85% 0);
+		--slice-4: inset(40% -6px 43% 0);
+		--slice-5: inset(80% -6px 5% 0);
+
+		content: 'AVAILABLE NOW';
+		display: block;
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: linear-gradient(45deg, transparent 3%, #00E6F6 3%, #00E6F6 5%, #FF013C 5%);
+		text-shadow: -3px -3px 0px #F8F005, 3px 3px 0px #00E6F6;
+		clip-path: var(--slice-0);
+	}
+
+	.effectBox:hover::after {
+		animation: 1s glitch;
+		animation-timing-function: steps(2, end);
+	}
+
+	@keyframes glitch {
+		0% {
+			clip-path: var(--slice-1);
+			transform: translate(-20px, -10px);
+		}
+
+		10% {
+			clip-path: var(--slice-3);
+			transform: translate(10px, 10px);
+		}
+
+		20% {
+			clip-path: var(--slice-1);
+			transform: translate(-10px, 10px);
+		}
+
+		30% {
+			clip-path: var(--slice-3);
+			transform: translate(0px, 5px);
+		}
+
+		40% {
+			clip-path: var(--slice-2);
+			transform: translate(-5px, 0px);
+		}
+
+		50% {
+			clip-path: var(--slice-3);
+			transform: translate(5px, 0px);
+		}
+
+		60% {
+			clip-path: var(--slice-4);
+			transform: translate(5px, 10px);
+		}
+
+		70% {
+			clip-path: var(--slice-2);
+			transform: translate(-10px, 10px);
+		}
+
+		80% {
+			clip-path: var(--slice-5);
+			transform: translate(20px, -10px);
+		}
+
+		90% {
+			clip-path: var(--slice-1);
+			transform: translate(-10px, 0px);
+		}
+
+		100% {
+			clip-path: var(--slice-1);
+			transform: translate(0);
+		}
+	}
+</style>

+ 20 - 44
pages/quotations/quotations.vue

@@ -32,49 +32,28 @@
           </uni-td>
         </uni-tr>
       </uni-table>
-      <uni-fab ref="fab"  :horizontal="right" :vertical="bottom"
-                 @fabClick="fabClick('bottom')"/>
+      <uni-fab ref="fab" :horizontal="right" :vertical="bottom"
+               @fabClick="fabClick()"/>
     </view>
-    <uni-popup ref="popup" background-color="#fff" @change="popup">
-    <view class="example">
-      <!-- 基础用法,不包含校验规则 -->
-      <uni-forms ref="baseForm" :modelValue="form" >
-        <uni-forms-item label="产品名称" required>
-          <uni-easyinput v-model="form.productName" placeholder="请输入产品名称" />
-        </uni-forms-item>
-        <uni-forms-item label="地区" required>
-          <uni-easyinput v-model="form.area" placeholder="请输入地区" />
-        </uni-forms-item>
-        <uni-forms-item label="价格" required>
-          <uni-easyinput v-model="form.price" placeholder="请输入价格" />
-        </uni-forms-item>
-        <uni-forms-item label="地址" required>
-          <uni-easyinput v-model="form.address" placeholder="请输入地址" />
-        </uni-forms-item>
-        <uni-forms-item label="手机号" required>
-          <uni-easyinput v-model="form.phone" placeholder="请输入手机号" />
-        </uni-forms-item>
-        <uni-forms-item label="图片" required>
-        <upload :imgArr="imageList" :fileSize="1" :limit="3" @updateImg="updateImg"></upload>
-        </uni-forms-item>
-      </uni-forms>
-    </view>
-    </uni-popup>
   </view>
 </template>
 
 <script>
 import {listConfig, listQuotations} from "@/api/quotations/quotations";
+import upload from '../../components/upload/index.vue'
 
 export default {
+  components: {
+    upload
+  },
   data() {
     return {
       //是否显示弹出层
       open: false,
       //悬浮按钮右对齐
-      right:'right',
+      right: 'right',
       //悬浮按钮下对齐
-      bottom:'bottom',
+      bottom: 'bottom',
       //分类列表
       categories: [
         // 这里是一级分类的数据
@@ -90,8 +69,8 @@ export default {
         id: null,
       },
       //表单数据
-      form:{},
-      imageList:[]
+      form: {},
+      imageList: []
     }
   },
   created() {
@@ -114,23 +93,20 @@ export default {
     },
     //根据分类id查询列表
     change(e) {
-      this.queryParams.type = e.detail.index;
-      listQuotations(this.queryParams).then(response => {
-        this.quotationsList = response.rows.map(item => {
-          let date = new Date(item.createTime);
-          item.createTime = date.toLocaleDateString('zh-CN', {dateStyle: 'short'});
-          return item;
-        });
+      console.log(e)
+      const type = e.detail.index;
+      uni.navigateTo({
+        url: `../quotations/quotationsSecond?type=${type}`
       });
     },
     //悬浮按钮点击事件
-    fabClick(type){
-      this.type = type
-      // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
-      this.$refs.popup.open(type)
+    fabClick() {
+      uni.navigateTo({
+        url: '../quotations/quotationsForm'
+      });
     },
-    popup(){
-
+    updateImg(imgList) {
+      this.imageList = imgList;
     }
 
   }

+ 189 - 0
pages/quotations/quotationsForm.vue

@@ -0,0 +1,189 @@
+<template>
+  <uni-section title="自定义校验规则" type="line">
+    <view class="example">
+      <!-- 自定义表单校验 -->
+      <uni-forms ref="customForm" :rules="rules" :modelValue="customFormData" label-align="center">
+        <uni-forms-item label="产品名称" required name="productName" label-width="85" label-align="center">
+          <uni-easyinput v-model="customFormData.productName" placeholder="请输入产品名称" />
+        </uni-forms-item>
+        <uni-forms-item label="地区" required name="area" >
+          <uni-easyinput v-model="customFormData.area" placeholder="请输入地区" />
+        </uni-forms-item>
+        <uni-forms-item label="价格" required name="price" >
+          <uni-easyinput v-model="customFormData.price" placeholder="请输入价格" />
+        </uni-forms-item>
+        <uni-forms-item label="手机号" required name="phone" >
+          <uni-easyinput v-model="customFormData.phone" placeholder="请输入手机号" />
+        </uni-forms-item>
+        <uni-forms-item label="地址" required name="address">
+          <uni-easyinput v-model="customFormData.address" placeholder="请输入地址" />
+        </uni-forms-item>
+        <uni-forms-item label="类型" required name="type" >
+          <uni-data-picker placeholder="请选择分类" popup-title="请选择所属分类" :localdata="TreeData" v-model="customFormData.type"/>
+        </uni-forms-item>
+        <uni-forms-item label="图片" required name="url" label-width="85">
+          <upload :imgArr="imageList" :fileSize="1" :limit="3" @updateImg="updateImg"/>
+        </uni-forms-item>
+      </uni-forms>
+      <button type="primary" @click="submit('customForm')">提交</button>
+    </view>
+  </uni-section>
+</template>
+
+<script>
+import {listConfig,addQuotations} from "@/api/quotations/quotations";
+import upload from '../../components/upload/index.vue'
+export default {
+  components: {
+    upload
+  },
+  data() {
+    return {
+      // 基础表单数据
+      baseFormData: {
+        productName: '',
+        area:'',
+        price:'',
+        phone:'',
+        address:'',
+        type:'',
+        url:[]
+      },
+      //树数据
+      TreeData:[],
+      // 校验规则
+      rules: {
+        productName: {
+          rules: [{
+            required: true,
+            errorMessage: '产品名称不能为空'
+          }]
+        },
+        area: {
+          rules: [{
+            required: true,
+            errorMessage: '地区不能为空'
+          }]
+        },
+        phone: {
+          rules: [{
+            required: true,
+            errorMessage: '年龄不能为空'
+          }, {
+            validateFunction: function(rule, value, data, callback) {
+              const reg = /^1[3-9]\.\d{9}$/;
+              if (!reg.test(value)) {
+                callback('请输入正确的手机号码');
+              }
+              return true;
+            }
+          }]
+        },
+        address: {
+          rules: [{
+            required: true,
+            errorMessage: '地址不能为空'
+          }]
+        },
+        type: {
+          rules: [{
+            required: true,
+            errorMessage: '分类不能为空'
+          }]
+        },
+        imgUrlList: {
+          rules: [{
+            required: true,
+            errorMessage: '图片不能为空'
+          }]
+        },
+        price: {
+          rules: [{
+            required: true,
+            errorMessage: '年龄不能为空'
+          }, {
+            format: 'number',
+            errorMessage: '年龄只能输入数字'
+          }]
+        }
+      },
+      imageList: [],
+      customFormData:{}
+    }
+  },
+  onLoad() {},
+  onReady() {
+    // 设置自定义表单校验规则,必须在节点渲染完毕后执行
+    this.$refs.customForm.setRules(this.rules)
+  },
+  created() {
+    this.getType();
+  },
+  methods: {
+    getType(){
+      listConfig().then(response => {
+        this.TreeData = this.formatOptions(response.data.quotations);
+      });
+    },
+    //转换为下拉选列表
+    formatOptions(data) {
+      return data.map(item => ({
+        value: item.id,
+        text: item.productName,
+        children: item.children ? this.formatOptions(item.children) : null,
+      }));
+    },
+    submit(ref) {
+      this.$refs[ref].validate().then(res => {
+        if (res) {
+          this.customFormData.url = this.imageList.join(',')
+          addQuotations(this.customFormData).then(response => {
+            this.$modal.msgSuccess('提交成功');
+            this.customFormData = {...this.baseFormData};
+            this.imageList = [];
+            uni.navigateTo({
+              url: '../quotations/quotations'
+            });
+          }).catch(err => {
+            console.log('err', err);
+          })
+        }
+      })
+    },
+    updateImg(imgList) {
+      this.imageList = imgList;
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+
+.example {
+  padding: 15px;
+  background-color: #fff;
+}
+
+.segmented-control {
+  margin-bottom: 15px;
+}
+
+.button-group {
+  margin-top: 15px;
+  display: flex;
+  justify-content: space-around;
+}
+
+.form-item {
+  display: flex;
+  align-items: center;
+}
+
+.button {
+  display: flex;
+  align-items: center;
+  height: 35px;
+  margin-left: 10px;
+}
+</style>
+

+ 148 - 0
pages/quotations/quotationsSecond.vue

@@ -0,0 +1,148 @@
+<template>
+  <view>
+    <view>
+      <scroll-view class="scroll-view_H" scroll-x="true" @scroll="scroll" scroll-left="120">
+        <uni-grid :column="5" @change="change" showBorder="false" square="false">
+          <uni-grid-item v-for="item in categories" :index="item.id">
+            <view class="grid-item-box">
+              <image class="image" :src="loadImgSrc(item.icon)" mode="aspectFit"></image>
+              <text class="text">{{ item.productName }}</text>
+            </view>
+          </uni-grid-item>
+        </uni-grid>
+      </scroll-view>
+    </view>
+    <view class="uni-container">
+      <uni-table>
+        <uni-tr>
+          <uni-th width="80" align="center">名称</uni-th>
+          <uni-th width="80" align="center">类型</uni-th>
+          <uni-th width="80" align="center">价格</uni-th>
+          <uni-th width="100" align="center">时间</uni-th>
+        </uni-tr>
+        <uni-tr v-for="(item, index) in quotationsList" :key="index">
+          <uni-td align="center">{{ item.productName }}
+          </uni-td>
+          <uni-td align="center">
+            <view class="name">{{ item.type }}</view>
+          </uni-td>
+          <uni-td align="center">{{ item.price }}
+          </uni-td>
+          <uni-td align="center">{{ item.createTime }}
+          </uni-td>
+        </uni-tr>
+      </uni-table>
+      <uni-fab ref="fab" :horizontal="right" :vertical="bottom"
+               @fabClick="fabClick()"/>
+    </view>
+  </view>
+</template>
+
+<script>
+import {listConfig,QuotationsList, listQuotations} from "@/api/quotations/quotations";
+import upload from '../../components/upload/index.vue'
+
+export default {
+  components: {
+    upload
+  },
+  data() {
+    return {
+      //父组件传值
+      FatherType: '',
+      //是否显示弹出层
+      open: false,
+      //悬浮按钮右对齐
+      right: 'right',
+      //悬浮按钮下对齐
+      bottom: 'bottom',
+      //分类列表
+      categories: [
+        // 这里是一级分类的数据
+      ],
+      // 行情列表
+      quotationsList: [
+        // 这里是列表的数据
+      ],
+      //查询参数
+      queryParams: {
+        // pageNum: 1,
+        // pageSize: 10,
+        id: null,
+      },
+      //表单数据
+      form: {},
+      //分类树列表
+      forms:{},
+      imageList: []
+    }
+  },
+  onLoad(e) {
+    this.FatherType = e.type;
+    this.getList();
+  },
+  methods: {
+    getList(row) {
+      // 这里是获取列表的方法
+      this.form.type = this.FatherType
+      listQuotations(this.form).then(response => {
+        this.quotationsList = response.rows.map(item => {
+          let date = new Date(item.createTime);
+          item.createTime = date.toLocaleDateString('zh-CN', {dateStyle: 'short'});
+          return item;
+        });
+      });
+      this.forms.parentId = this.FatherType
+      //获取分类树的方法
+      QuotationsList(this.forms).then(response => {
+        //取出response.rows中所有homeDisplay为1的数据
+        this.categories = response.rows.filter(item => item.homeDisplay === 1);
+      });
+    },
+    //递归查询分类的父级
+
+    //根据分类id查询列表
+    change(e) {
+      this.queryParams.type = e.detail.index;
+      listQuotations(this.queryParams).then(response => {
+        this.quotationsList = response.rows.map(item => {
+          let date = new Date(item.createTime);
+          item.createTime = date.toLocaleDateString('zh-CN', {dateStyle: 'short'});
+          return item;
+        });
+      });
+    },
+    //悬浮按钮点击事件
+    fabClick() {
+      uni.navigateTo({
+        url: '../quotations/quotationsForm'
+      });
+    },
+    updateImg(imgList) {
+      this.imageList = imgList;
+    }
+
+  }
+}
+</script>
+
+<style>
+.grid-item-box {
+  flex: 1;
+// position: relative;
+  /* #ifndef APP-NVUE */
+  display: flex;
+  /* #endif */
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  padding: 0px 0;
+}
+
+.image {
+  height: 100%;
+  width: 100%;
+}
+
+
+</style>

+ 30 - 44
pages/specialService/financialInfrastructure/details.vue

@@ -1,16 +1,13 @@
 <template>
     <view class="container">
-        <!-- 供销社详情 -->
+        <!-- 详情 -->
         <view class="cooperativeImgBox">
             <image :src="loadImgSrc('/snbj.png')" class="cooperativeImg"></image>
         </view>
-        <view class="itemBox" v-for="(item, index) in list" :key="index">
+        <view class="itemBox">
             <view class="item">
                 <span>
-                    {{ item.title }}:
-                </span>
-                <span>
-                    {{ item.content }}
+                    {{ details.textDetails }}
                 </span>
             </view>
         </view>
@@ -18,47 +15,36 @@
 </template>
 
 <script>
-export default {
-    data() {
-        return {
-            list: [
-                {
-                    title: "名称",
-                    content: "第十三号供销社",
-                },
-                {
-                    title: "地址",
-                    content: "十三号街区地下研究所",
-                },
-                {
-                    title: "负责人",
-                    content: "高耀",
-                },
-                {
-                    title: "负责人电话",
-                    content: "13178945612",
+    import { listServer, getServer, delServer, addServer, updateServer } from '@/api/highFrequencyService/highFrequencyService';
+    export default {
+        data() {
+            return {
+                details: {
+                    titleName: "-",
+                    textDetails: "-",
                 }
-            ],
-            cooperative: {
-                name:"供销社1",
-                address:"供销社地址1",
-                chargePeople:"负责人1",
-                chargePhone:"13103215236",
-                imgUrl:"/profile/upload/2024/03/01/nacos_20240301145836A002.png"
             }
         }
-    }
-    /**
-     * 生命周期函数--监听页面加载
-     */,
-    onLoad(options) {
-        console.log(666)
-    },
-    methods: {
-
-    }
-};
+        /**
+         * 生命周期函数--监听页面加载
+         */,
+        onLoad(options) {
+            this.getServer(options.id, options.type);
+        },
+        methods: {
+            /** 详情 */
+            getServer(id, type) {
+                getServer(id, type).then(response => {
+                    let details = response.data;
+                    this.details = details;
+                    wx.setNavigationBarTitle({
+                        title: details.titleName
+                    })
+                });
+            },
+        }
+    };
 </script>
 <style>
-@import './details.css';
+    @import './details.css';
 </style>

+ 128 - 0
pages/specialService/financialInfrastructure/financialInfrastructure.css

@@ -0,0 +1,128 @@
+/* pages/wenda/wenda.wxss */
+.wendaFL {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 30rpx 0 0 0;
+}
+.wendaFL li {
+    width: 48%;
+    height: 168rpx;
+    position: relative;
+}
+.cooperativeBox{
+    position: relative;
+    left: 30rpx;
+    top: 10rpx;
+    z-index: 0;
+    width: 800rpx;
+    height: 100rpx;
+}
+.cooperativeImgBox{
+    position: relative;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 330rpx;
+    height: 100rpx;
+}
+.cooperativeImg{
+    position: relative;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 100%;
+    height: 100%;
+}
+
+.lbBj {
+    position: absolute;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 100%;
+    height: 100%;
+}
+.wendaFL li h2 {
+    font-size: 36rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 40rpx;
+    z-index: 1;
+    font-weight: bold;
+}
+.wendaFL li span {
+    font-size: 30rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 88rpx;
+    z-index: 1;
+}
+.wendaFL li.sanNong {
+    color: #0d9970;
+}
+.wendaFL li.jiuYe {
+    color: #1e8fb4;
+}
+.wendaFL li.faLv {
+    color: #1e5dab;
+}
+.wendaFL li.jiuZhen {
+    color: #4a700d;
+}
+/* 列表 */
+.rnwdList {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 20rpx 0;
+}
+.list {
+    width: 79%;
+}
+.lb {
+    background: #0d9970;
+    color: #fff;
+    font-size: 24rpx;
+    width: 12%;
+    text-align: center;
+    padding: 2rpx 0;
+    line-height: 40rpx;
+    height: 40rpx;
+    border-radius: 10rpx;
+}
+.listTitle {
+    font-size: 32rpx;
+    color: #333;
+    line-height: 40rpx;
+}
+.jlSj {
+    height: 40rpx;
+    display: flex;
+    justify-content: space-between;
+    font-size: 24rpx;
+    margin: 20rpx 0 0 0;
+}
+.jf {
+    color: #07c160;
+}
+.icon-jifen {
+    font-size: 28rpx;
+    color: #07c160;
+    margin: 0 0 0 6rpx;
+}
+.ck {
+    color: #c4c4c4;
+}
+.icon-pinglun,
+.icon-chakan,
+.icon-shoucang {
+    font-size: 28rpx;
+    margin: 0 6rpx 0 20rpx;
+    color: #c4c4c4;
+}
+.icon-xiangyoujiantou {
+    font-size: 30rpx;
+    color: #c4c4c4;
+    line-height: 60rpx;
+}

+ 56 - 0
pages/specialService/financialInfrastructure/financialInfrastructure.vue

@@ -0,0 +1,56 @@
+<template>
+    <view class="container">
+        <!-- 供销社列表 -->
+        <view class="rnwdList" v-for="(item, index) in list" :key="index">
+            <view @tap="goDetails(item.id, item.type)" class="cooperativeImgBox">
+                <image :src="loadImgSrc('/snbj.png')" class="cooperativeImg"></image>
+            </view>
+            <view @tap="goDetails(item.id, item.type)" class="cooperativeBox">
+                <view class="list">
+                    <span class="listTitle">{{ item.titleName }}</span>
+                </view>
+            </view>
+            <em class="iconfont icon-xiangyoujiantou"></em>
+        </view>
+    </view>
+</template>
+
+<script>
+import { listServer, getServer, delServer, addServer, updateServer } from '@/api/highFrequencyService/highFrequencyService';
+export default {
+    data() {
+        return {
+            list: [
+                {
+                    titleName:"-",
+                    imgUrlList:"-"
+                }
+            ],
+        };
+    }
+    /**
+     * 生命周期函数--监听页面加载
+     */,
+    onLoad(options) {
+        this.getList(9);
+    },
+    methods: {
+        /** 查询列表 */
+        getList(type) {
+            this.loading = true;
+            listServer({type: type}).then(response => {
+                this.list = response.rows;
+            });
+        },
+        /** 查询详情 */
+        goDetails(id, type) {
+            uni.navigateTo({
+                url: '/pages/specialService/financialInfrastructure/details?id='+id+'&type='+type
+            });
+        }
+    }
+};
+</script>
+<style>
+@import './financialInfrastructure.css';
+</style>

+ 30 - 44
pages/specialService/legalService/details.vue

@@ -1,16 +1,13 @@
 <template>
     <view class="container">
-        <!-- 供销社详情 -->
+        <!-- 详情 -->
         <view class="cooperativeImgBox">
             <image :src="loadImgSrc('/snbj.png')" class="cooperativeImg"></image>
         </view>
-        <view class="itemBox" v-for="(item, index) in list" :key="index">
+        <view class="itemBox">
             <view class="item">
                 <span>
-                    {{ item.title }}:
-                </span>
-                <span>
-                    {{ item.content }}
+                    {{ details.textDetails }}
                 </span>
             </view>
         </view>
@@ -18,47 +15,36 @@
 </template>
 
 <script>
-export default {
-    data() {
-        return {
-            list: [
-                {
-                    title: "名称",
-                    content: "第十三号供销社",
-                },
-                {
-                    title: "地址",
-                    content: "十三号街区地下研究所",
-                },
-                {
-                    title: "负责人",
-                    content: "高耀",
-                },
-                {
-                    title: "负责人电话",
-                    content: "13178945612",
+    import { listServer, getServer, delServer, addServer, updateServer } from '@/api/highFrequencyService/highFrequencyService';
+    export default {
+        data() {
+            return {
+                details: {
+                    titleName: "-",
+                    textDetails: "-",
                 }
-            ],
-            cooperative: {
-                name:"供销社1",
-                address:"供销社地址1",
-                chargePeople:"负责人1",
-                chargePhone:"13103215236",
-                imgUrl:"/profile/upload/2024/03/01/nacos_20240301145836A002.png"
             }
         }
-    }
-    /**
-     * 生命周期函数--监听页面加载
-     */,
-    onLoad(options) {
-        console.log(666)
-    },
-    methods: {
-
-    }
-};
+        /**
+         * 生命周期函数--监听页面加载
+         */,
+        onLoad(options) {
+            this.getServer(options.id, options.type);
+        },
+        methods: {
+            /** 详情 */
+            getServer(id, type) {
+                getServer(id, type).then(response => {
+                    let details = response.data;
+                    this.details = details;
+                    wx.setNavigationBarTitle({
+                        title: details.titleName
+                    })
+                });
+            },
+        }
+    };
 </script>
 <style>
-@import './details.css';
+    @import './details.css';
 </style>

+ 128 - 0
pages/specialService/legalService/legalService.css

@@ -0,0 +1,128 @@
+/* pages/wenda/wenda.wxss */
+.wendaFL {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 30rpx 0 0 0;
+}
+.wendaFL li {
+    width: 48%;
+    height: 168rpx;
+    position: relative;
+}
+.cooperativeBox{
+    position: relative;
+    left: 30rpx;
+    top: 10rpx;
+    z-index: 0;
+    width: 800rpx;
+    height: 100rpx;
+}
+.cooperativeImgBox{
+    position: relative;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 330rpx;
+    height: 100rpx;
+}
+.cooperativeImg{
+    position: relative;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 100%;
+    height: 100%;
+}
+
+.lbBj {
+    position: absolute;
+    left: 0;
+    top: 0;
+    z-index: 0;
+    width: 100%;
+    height: 100%;
+}
+.wendaFL li h2 {
+    font-size: 36rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 40rpx;
+    z-index: 1;
+    font-weight: bold;
+}
+.wendaFL li span {
+    font-size: 30rpx;
+    position: absolute;
+    left: 30rpx;
+    top: 88rpx;
+    z-index: 1;
+}
+.wendaFL li.sanNong {
+    color: #0d9970;
+}
+.wendaFL li.jiuYe {
+    color: #1e8fb4;
+}
+.wendaFL li.faLv {
+    color: #1e5dab;
+}
+.wendaFL li.jiuZhen {
+    color: #4a700d;
+}
+/* 列表 */
+.rnwdList {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin: 20rpx 0;
+}
+.list {
+    width: 79%;
+}
+.lb {
+    background: #0d9970;
+    color: #fff;
+    font-size: 24rpx;
+    width: 12%;
+    text-align: center;
+    padding: 2rpx 0;
+    line-height: 40rpx;
+    height: 40rpx;
+    border-radius: 10rpx;
+}
+.listTitle {
+    font-size: 32rpx;
+    color: #333;
+    line-height: 40rpx;
+}
+.jlSj {
+    height: 40rpx;
+    display: flex;
+    justify-content: space-between;
+    font-size: 24rpx;
+    margin: 20rpx 0 0 0;
+}
+.jf {
+    color: #07c160;
+}
+.icon-jifen {
+    font-size: 28rpx;
+    color: #07c160;
+    margin: 0 0 0 6rpx;
+}
+.ck {
+    color: #c4c4c4;
+}
+.icon-pinglun,
+.icon-chakan,
+.icon-shoucang {
+    font-size: 28rpx;
+    margin: 0 6rpx 0 20rpx;
+    color: #c4c4c4;
+}
+.icon-xiangyoujiantou {
+    font-size: 30rpx;
+    color: #c4c4c4;
+    line-height: 60rpx;
+}

+ 56 - 0
pages/specialService/legalService/legalService.vue

@@ -0,0 +1,56 @@
+<template>
+    <view class="container">
+        <!-- 供销社列表 -->
+        <view class="rnwdList" v-for="(item, index) in list" :key="index">
+            <view @tap="goDetails(item.id, item.type)" class="cooperativeImgBox">
+                <image :src="loadImgSrc('/snbj.png')" class="cooperativeImg"></image>
+            </view>
+            <view @tap="goDetails(item.id, item.type)" class="cooperativeBox">
+                <view class="list">
+                    <span class="listTitle">{{ item.titleName }}</span>
+                </view>
+            </view>
+            <em class="iconfont icon-xiangyoujiantou"></em>
+        </view>
+    </view>
+</template>
+
+<script>
+import { listServer, getServer, delServer, addServer, updateServer } from '@/api/highFrequencyService/highFrequencyService';
+export default {
+    data() {
+        return {
+            list: [
+                {
+                    titleName:"-",
+                    imgUrlList:"-"
+                }
+            ],
+        };
+    }
+    /**
+     * 生命周期函数--监听页面加载
+     */,
+    onLoad(options) {
+        this.getList(8);
+    },
+    methods: {
+        /** 查询列表 */
+        getList(type) {
+            this.loading = true;
+            listServer({type: type}).then(response => {
+                this.list = response.rows;
+            });
+        },
+        /** 查询详情 */
+        goDetails(id, type) {
+            uni.navigateTo({
+                url: '/pages/specialService/legalService/details?id='+id+'&type='+type
+            });
+        }
+    }
+};
+</script>
+<style>
+@import './legalService.css';
+</style>

+ 117 - 107
pages/toGovernmentList/index.css

@@ -1,44 +1,96 @@
-/*
+/* pages/fuwu.wxss */
+/* pages/sannong.wxss */
+.snTab {
+    width: 100%;
+}
+
+.fontColorBox,
+.fontColorBox1 {
+    color: #07c160;
+}
+
+.navBox {
+    /* 顶部tab盒子样式 */
+    width: 100%;
+    height: 108rpx;
+    background: white;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    justify-content: center;
+}
+/* 最后一个tab标题的样式 */
+
+.titleBox {
+    /* 未选中文字的样式 */
+    color: rgb(168, 170, 175);
+    font-size: 30rpx;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    width: 32%;
+}
+.lineBox,
+.notLineBox {
+    /* 选中及未选中底线共同样式 */
+    width: 32rpx;
+    height: 8rpx;
+}
+
+.lineBox {
+    /* 选中底线样式 */
+    background: #07c160;
+    margin-top: 16rpx;
+    border-radius: 4rpx;
+}
+
+.notLineBox {
+    /* 未选中底线样式 */
+    background: transparent;
+}
+
+.swiperTtemBox {
+    /* 底部内容样式 */
+    height: 100vh;
+    overflow: scroll;
+    margin: 12rpx 0rpx;
+    background: white;
+    font-size: 28rpx;
+}
+
 /* 热门问答 */
 .rnwdList {
     width: 100%;
+    height: 100%;
 }
-
 .list {
     border-bottom: solid 2rpx #f6f6f6;
     padding: 10rpx 0;
     width: 100%;
 }
-
 .listTitle {
     font-size: 32rpx;
     color: #333;
     line-height: 40rpx;
 }
-
 .jlSj {
     height: 40rpx;
     display: flex;
     justify-content: space-between;
-    align-items: center;
     font-size: 24rpx;
     margin: 20rpx 0 0 0;
 }
-
 .jf {
     color: #07c160;
 }
-
 .icon-jifen {
-    font-size: 26rpx;
+    font-size: 28rpx;
     color: #07c160;
     margin: 0 0 0 6rpx;
 }
-
 .ck {
     color: #c4c4c4;
 }
-
 .icon-pinglun,
 .icon-chakan,
 .icon-shoucang {
@@ -46,7 +98,6 @@
     margin: 0 6rpx 0 20rpx;
     color: #c4c4c4;
 }
-
 .onePic {
     width: 100%;
     height: 360rpx;
@@ -54,31 +105,10 @@
     overflow: hidden;
     margin: 20rpx 0;
 }
-
 .onePic image {
     width: 100%;
     height: 100%;
 }
-.imageContainer {
-  display: flex;
-}
-
-.imageContainer.one-image {
-  justify-content: center;
-  align-items: center;
-}
-
-.imageContainer.two-images {
-  justify-content: space-between;
-}
-
-.imageContainer.three-images {
-  justify-content: space-between;
-}
-
-.imageContainer image {
-  /* 根据需要设置图片样式 */
-}
 .twoPic {
     width: 100%;
     height: 220rpx;
@@ -86,13 +116,11 @@
     display: flex;
     justify-content: space-between;
 }
-
 .twoPic image {
     width: 49%;
     height: auto;
     border-radius: 20rpx;
 }
-
 .threePic {
     width: 100%;
     height: 160rpx;
@@ -100,95 +128,77 @@
     display: flex;
     justify-content: space-between;
 }
-
 .threePic image {
     width: 32%;
     height: auto;
     border-radius: 20rpx;
 }
 
-/* 热门知识 */
-.rmzsList li {
-    width: 100%;
-    border-bottom: solid 2rpx #f6f6f6;
-    padding: 20rpx 0;
-    display: flex;
-    justify-content: space-between;
-}
-
-.rmzsList li image {
-    width: 40%;
-    height: 200rpx;
+.pane-con {
+    margin: 20rpx 0;
 }
-
-.listCont {
-    width: 58%;
+.tabs-pane {
+    padding: 10rpx 20rpx;
+    margin-right: 20rpx;
+    border: 1px solid lightgrey;
 }
-
-.listCont p {
-    font-size: 32rpx;
-    color: #333;
-    overflow: hidden;
-    line-height: 40rpx;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    display: -webkit-box;
-    -webkit-line-clamp: 2;
-    -webkit-box-orient: vertical;
+.tabs-pane:nth-last-child(1) {
+    margin-right: 0;
 }
-
-.listCont text {
-    font-size: 24rpx;
-    color: #9c9c9c;
+.tabs-pane.active {
+    background: #5495df;
+    border-color: #5495df;
+    color: #fff;
 }
 
-.biaoqian {
-    display: flex;
-    margin: 6rpx 0;
+.tab-class {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100vw;
+    bottom: 0;
 }
 
-.biaoqian span {
-    padding: 2rpx 20rpx;
-    font-size: 20rpx;
-    background: #e0e0e0;
-    color: #9c9c9c;
-    margin: 0 20rpx 0 0;
-    border-radius: 30rpx;
+.guidebook .img_box {
+    margin-bottom: 12rpx;
+    padding-left: 4rpx;
 }
-
-.jiage {
+.guidebook .img_box .many_img {
     display: flex;
+    justify-self: start;
+    flex-wrap: wrap;
+}
+.guidebook .img_item.four {
+    width: 198rpx;
+    height: 198rpx;
+    margin-right: 16rpx;
+    margin-bottom: 16rpx;
+    border-radius: 16rpx;
+    overflow: hidden;
 }
-
-.yhjg {
-    font-size: 30rpx;
-    color: #07c160;
-}
-
-.yhjg em {
-    font-size: 24rpx;
-    color: #07c160;
-}
-
-.yjjg {
-    font-size: 24rpx;
-    color: #9c9c9c;
-    margin: 6rpx 0 0 20rpx;
-    text-decoration: line-through;
-}
-
-/* 公告start */
-
-.swiper_container {
-    height: 55rpx;
-    width: 70%;
-    line-height: 60rpx;
+.guidebook .img_item.four:nth-child(2n) {
+    margin-right: 30rpx;
 }
-
-.swiper_item {
-    color: #000;
-    font-size: 28rpx;
+.guidebook .img_item.many {
+    width: 198rpx;
+    height: 198rpx;
+    margin-right: 16rpx;
+    margin-bottom: 16rpx;
+    border-radius: 16rpx;
     overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
 }
+.guidebook .img_item.many:nth-child(3n) {
+    margin-right: 0;
+}
+.addInfomarionBtn{
+	position: fixed;
+	bottom: 3%;
+	right: 3%;
+	width: 40px;
+	height: 40px;
+	background: url('@/static/images/upload/add.png') 0 0 no-repeat;
+	background-size: 100% 100%;
+}
+.addInfomarionBtn::after{
+	border: none;
+}

+ 149 - 58
pages/toGovernmentList/toGovernmentList.vue

@@ -1,72 +1,163 @@
 <template>
-        <!-- 分割线 -->
-        <view class="container">
-            <view class="rnwdList">
-                <view class="list" v-for="(item, index) in indexList1" :key="index" @click="toGovernmentList1">
-                    <span class="listTitle">{{ item.titleName }}</span>
-                    <view class="onePic" v-if="item.urls!=null&&item.urls.length > 0" v-for="(url, i) in item.urls">
-                        <image :src="'http://localhost:88/dev-api'+url" :key="i"></image>
-                    </view>
-                    <view class="jlSj">
-                        <span class="jf">
-                            {{ item.createTime }}
-                        </span>
-                        <view class="ck">
-                            <span>
-                                <em class="iconfont icon-chakan"></em>
-                                {{ item.watchNum }}
-                            </span>
-                            <span>
-                                <em class="iconfont icon-shoucang"></em>
-                                {{ item.likeNum }}
-                            </span>
-                        </view>
-                    </view>
-                </view>
-            </view>
-        </view>
-
+    <!-- pages/me.wxml -->
+	<view class="container">
+		<uni-search-bar @confirm="search" :focus="true" v-model="searchValue" @blur="search"  @input="search"
+		style="width: 100%;"
+			@cancel="cancel">
+		</uni-search-bar>
+	    <view class="rnwdList">
+	        <view class="list" @tap="goDetails(item)" v-for="(item, index1) in qbwd" :key="index1">
+	            <span class="listTitle">{{ item.titleName }}</span>
+	
+	            <view class="onePic" v-if="item.urls.length == 1">
+	                <image :src="loadImgSrc(item.urls[index2])" v-for="(v, index2) in item.urls" :key="index2">
+					</image>
+	            </view>
+	            <view class="twoPic" v-if="item.urls.length == 2">
+	                <image :src="loadImgSrc(item.urls[index2])" v-for="(v, index2) in item.urls" :key="index2">
+					</image>
+	            </view>
+	
+	            <view class="threePic" v-if="item.urls.length == 3">
+	                <image :src="loadImgSrc(item.urls[index2])" v-for="(v, index2) in item.urls" :key="index2">
+					</image>
+	            </view>
+	
+	           <!-- <view class="jlSj">
+	                <span class="jf">
+	                    {{ item.jf }}
+	                    <em class="iconfont icon-jifen"></em>
+	                </span>
+	                <view class="ck">
+	                    <span>
+	                        <em class="iconfont icon-pinglun"></em>
+	                        {{ item.pl }}
+	                    </span>
+	                    <span>
+	                        <em class="iconfont icon-chakan"></em>
+	                        {{ item.ck }}
+	                    </span>
+	                    <span>
+	                        <em class="iconfont icon-shoucang"></em>
+	                        {{ item.dz }}
+	                    </span>
+	                </view>
+	            </view> -->
+	
+			</view>
+	    </view>
+		<!-- 新增资讯按钮 -->
+		<!-- <button class="addInfomarionBtn" @click="addInfomation()"></button> -->
+	</view>
 </template>
 
 <script>
-	import {governmentListMore} from '@/api/information/information.js'
+import { listWxs ,listWx} from '@/api/information/information.js'
+// pages/me.js
 export default {
     data() {
         return {
-            indexList1: []
-        };
-    }
-    /**
-     * 生命周期函数--监听页面加载
-     */,
-    onLoad(options) {
-		this.governmentListMores()
+			qbwd:[],
+			listParams:{
+			  pageNum: 1,
+			  pageSize: 7,
+			  titleName: '',
+			  isGovernment:'',
+			  type: 10,
+			  flag:''
+			},
+			total:0,
+			searchValue:''
+		};
     },
-	mounted() {
-
+	created(){
+		
 	},
-    methods: {
-      toGovernmentList1(){
-        uni.navigateTo({
-          url: '/pages/toGovernmentList/toGovernmentListDetail'
-        });
-      },
-		governmentListMores(){
-			let params = {
-			  pageSize: 10,
-			  pageNum: 1,
-			  type:10,
-			  isGovernment:1
-			  }
-			governmentListMore(params).then(res =>{
-				if (res.code==200) {
-					this.indexList1=res.rows
-				}
+	onReachBottom(){
+		let pageNum = this.listParams.pageNum
+		let pageSize = this.listParams.pageSize
+		let total = this.total
+		if(pageNum * pageSize >= total){
+			uni.showToast({
+				title:'暂无更多数据'
+			})
+			return
+		} else {
+			this.listParams.pageNum += 1;
+			this.getList()
+		}
+	},
+	methods:{
+		search(){
+			this.listParams.titleName = this.searchValue
+			this.qbwd = []
+			this.getList()
+		},
+		getList(){
+			listWxs(this.listParams).then(res => {
+				this.qbwd = [...this.qbwd,...res.rows]
+				this.total = res.total
 			})
+		},
+		goDetails(e) {
+			let id = e.id || ''
+			let type = 10
+		    uni.navigateTo({
+		        url: `../informationDetail/informationDetail?id=${id}&type=${type}`
+		    });
+		},
+		// 新增资讯
+		addInfomation(){
+			uni.navigateTo({
+			    url: `../informationAdd/informationAdd`
+			});
 		}
-    }
+	},
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+		console.log(options)
+		if(options.type!=null){
+			this.listParams.type = options.type
+		}
+		if(options.type==null){
+			this.listParams.isGovernment = 1
+		}
+		this.getList()
+		// 查置顶
+		listWx({}).then(e => {
+		})
+	},
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {},
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {},
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {},
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {},
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {},
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {},
 };
 </script>
-<style scoped>
-	@import url("./index.css");
+<style>
+@import './index.css';
+.container{
+	height: 100%;
+}
 </style>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 269
pages/toGovernmentList/toGovernmentListDetail.vue


+ 2 - 0
uni_modules/uni-section/changelog.md

@@ -0,0 +1,2 @@
+## 0.0.1(2022-07-22)
+- 初始化

+ 167 - 0
uni_modules/uni-section/components/uni-section/uni-section.vue

@@ -0,0 +1,167 @@
+<template>
+	<view class="uni-section">
+		<view class="uni-section-header" @click="onClick">
+				<view class="uni-section-header__decoration" v-if="type" :class="type" />
+        <slot v-else name="decoration"></slot>
+
+        <view class="uni-section-header__content">
+          <text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title" :class="{'distraction':!subTitle}">{{ title }}</text>
+          <text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}" class="uni-section-header__content-sub">{{ subTitle }}</text>
+        </view>
+
+        <view class="uni-section-header__slot-right">
+          <slot name="right"></slot>
+        </view>
+		</view>
+
+		<view class="uni-section-content" :style="{padding: _padding}">
+			<slot />
+		</view>
+	</view>
+</template>
+
+<script>
+
+	/**
+	 * Section 标题栏
+	 * @description 标题栏
+	 * @property {String} type = [line|circle|square] 标题装饰类型
+	 * 	@value line 竖线
+	 * 	@value circle 圆形
+	 * 	@value square 正方形
+	 * @property {String} title 主标题
+	 * @property {String} titleFontSize 主标题字体大小
+	 * @property {String} titleColor 主标题字体颜色
+	 * @property {String} subTitle 副标题
+	 * @property {String} subTitleFontSize 副标题字体大小
+	 * @property {String} subTitleColor 副标题字体颜色
+	 * @property {String} padding 默认插槽 padding
+	 */
+
+	export default {
+		name: 'UniSection',
+    emits:['click'],
+		props: {
+			type: {
+				type: String,
+				default: ''
+			},
+			title: {
+				type: String,
+				required: true,
+				default: ''
+			},
+      titleFontSize: {
+        type: String,
+        default: '14px'
+      },
+			titleColor:{
+				type: String,
+				default: '#333'
+			},
+			subTitle: {
+				type: String,
+				default: ''
+			},
+      subTitleFontSize: {
+        type: String,
+        default: '12px'
+      },
+      subTitleColor: {
+        type: String,
+        default: '#999'
+      },
+			padding: {
+				type: [Boolean, String],
+				default: false
+			}
+		},
+    computed:{
+      _padding(){
+        if(typeof this.padding === 'string'){
+          return this.padding
+        }
+
+        return this.padding?'10px':''
+      }
+    },
+		watch: {
+			title(newVal) {
+				if (uni.report && newVal !== '') {
+					uni.report('title', newVal)
+				}
+			}
+		},
+    methods: {
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+<style lang="scss" >
+	$uni-primary: #2979ff !default;
+
+	.uni-section {
+		background-color: #fff;
+    .uni-section-header {
+      position: relative;
+      /* #ifndef APP-NVUE */
+      display: flex;
+      /* #endif */
+      flex-direction: row;
+      align-items: center;
+      padding: 12px 10px;
+      font-weight: normal;
+
+      &__decoration{
+        margin-right: 6px;
+        background-color: $uni-primary;
+        &.line {
+          width: 4px;
+          height: 12px;
+          border-radius: 10px;
+        }
+
+        &.circle {
+          width: 8px;
+          height: 8px;
+          border-top-right-radius: 50px;
+          border-top-left-radius: 50px;
+          border-bottom-left-radius: 50px;
+          border-bottom-right-radius: 50px;
+        }
+
+        &.square {
+          width: 8px;
+          height: 8px;
+        }
+      }
+
+      &__content {
+        /* #ifndef APP-NVUE */
+        display: flex;
+        /* #endif */
+        flex-direction: column;
+        flex: 1;
+        color: #333;
+
+        .distraction {
+          flex-direction: row;
+          align-items: center;
+        }
+        &-sub {
+          margin-top: 2px;
+        }
+      }
+
+      &__slot-right{
+        font-size: 14px;
+      }
+    }
+
+    .uni-section-content{
+      font-size: 14px;
+    }
+	}
+</style>

+ 87 - 0
uni_modules/uni-section/package.json

@@ -0,0 +1,87 @@
+{
+  "id": "uni-section",
+  "displayName": "uni-section 标题栏",
+  "version": "0.0.1",
+  "description": "标题栏组件",
+  "keywords": [
+    "uni-ui",
+    "uniui",
+    "标题栏"
+],
+  "repository": "https://github.com/dcloudio/uni-ui",
+  "engines": {
+    "HBuilderX": ""
+  },
+  "directories": {
+    "example": "../../temps/example_temps"
+  },
+  "dcloudext": {
+    "category": [
+      "前端组件",
+      "通用组件"
+    ],
+    "sale": {
+      "regular": {
+        "price": "0.00"
+      },
+      "sourcecode": {
+        "price": "0.00"
+      }
+    },
+    "contact": {
+      "qq": ""
+    },
+    "declaration": {
+      "ads": "无",
+      "data": "无",
+      "permissions": "无"
+    },
+    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
+  },
+  "uni_modules": {
+    "dependencies": [
+      "uni-scss"
+    ],
+    "encrypt": [],
+    "platforms": {
+      "cloud": {
+        "tcb": "y",
+        "aliyun": "y"
+      },
+      "client": {
+        "App": {
+          "app-vue": "y",
+          "app-nvue": "y"
+        },
+        "H5-mobile": {
+          "Safari": "y",
+          "Android Browser": "y",
+          "微信浏览器(Android)": "y",
+          "QQ浏览器(Android)": "y"
+        },
+        "H5-pc": {
+          "Chrome": "y",
+          "IE": "y",
+          "Edge": "y",
+          "Firefox": "y",
+          "Safari": "y"
+        },
+        "小程序": {
+          "微信": "y",
+          "阿里": "y",
+          "百度": "y",
+          "字节跳动": "y",
+          "QQ": "y"
+        },
+        "快应用": {
+          "华为": "u",
+          "联盟": "u"
+        },
+        "Vue": {
+            "vue2": "y",
+            "vue3": "y"
+        }
+      }
+    }
+  }
+}

+ 8 - 0
uni_modules/uni-section/readme.md

@@ -0,0 +1,8 @@
+## Section 标题栏
+> **组件名:uni-section**
+> 代码块: `uSection`
+
+uni-section 组件主要用于文章、列表详情等标题展示
+
+### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section)
+#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839