瀏覽代碼

Merge remote-tracking branch 'origin/master'

qinhouyu 1 年之前
父節點
當前提交
e53dbb64e9
共有 30 個文件被更改,包括 2633 次插入206 次删除
  1. 15 0
      api/knowledge/knowledge.js
  2. 15 0
      api/lifeServices/lifeServices.js
  3. 28 12
      api/quotations/quotations.js
  4. 84 38
      pages.json
  5. 19 4
      pages/index/index.vue
  6. 1 0
      pages/informationDetail/informationDetail.css
  7. 3 2
      pages/informationDetail/informationDetail.vue
  8. 136 0
      pages/knowledge/knowledge.css
  9. 98 0
      pages/knowledge/knowledge.vue
  10. 160 0
      pages/knowledgeDetails/knowledgeDetails.css
  11. 238 0
      pages/knowledgeDetails/knowledgeDetails.vue
  12. 136 0
      pages/lifeServices/lifeServices.css
  13. 110 0
      pages/lifeServices/lifeServices.vue
  14. 160 0
      pages/lifeServicesDetails/lifeServicesDetails.css
  15. 237 0
      pages/lifeServicesDetails/lifeServicesDetails.vue
  16. 19 5
      pages/liveBroadcast/liveBroadcast.vue
  17. 23 3
      pages/liveBroadcastDetails/liveBroadcastDetails.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. 6 9
      pages/specialService/loveAtVillage/details.vue
  28. 204 0
      pages/toLegal/toLegal.css
  29. 153 0
      pages/toLegal/toLegal.vue
  30. 3 1
      static/scss/colorui.css

+ 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
+    })
 }

+ 84 - 38
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": {},
@@ -179,18 +214,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": {},
@@ -201,6 +235,16 @@
 			}
 		},
 		{
+			"path": "pages/toLegal/toLegal",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "法律下乡"
+
+			}
+		},
+		{
 			"path": "pages/me/meOperate",
 			"style": {
 				"usingComponents": {},
@@ -220,52 +264,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": "知识库详情"
 			}
 		}
 	],
@@ -282,8 +331,7 @@
 		"selectedColor": "#2f2f2f",
 		"borderStyle": "black",
 		"backgroundColor": "#f9f9f9",
-		"list": [
-			{
+		"list": [{
 				"text": "服务",
 				"pagePath": "pages/index/index",
 				"iconPath": "static/pages/images/fuwu2.png",
@@ -312,15 +360,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": []
-}
+}

+ 19 - 4
pages/index/index.vue

@@ -31,7 +31,7 @@
                 <image :src="loadImgSrc('/cnfl-fr.png')"></image>
             </view>
             <view class="cnfl">
-                <view class="fv">
+                <view class="fv" @click="toLegal()">
                     <text>法律乡下</text>
                     <image :src="loadImgSrc('/fv.jpg')"></image>
                 </view>
@@ -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>
@@ -332,6 +334,11 @@ export default {
 		this.governmentListData()
 	},
     methods: {
+		toLegal(){
+			uni.navigateTo({
+			    url: '/pages/toLegal/toLegal'
+			});
+		},
 		toGovernmentList(){
 			uni.navigateTo({
 			    url: '/pages/toGovernmentList/toGovernmentList'
@@ -382,7 +389,7 @@ export default {
                 url: '/pages/cooperative/cooperative'
             });
         },
-        goSpecialService() {
+        goLoveAtVillage() {
             uni.navigateTo({
                 url: '/pages/specialService/loveAtVillage/loveAtVillage'
             });
@@ -410,6 +417,14 @@ export default {
 			    url: '/pages/liveBroadcast/liveBroadcast'
 			});
 		},
+		/**
+		 * 跳转知识库页面
+		 */
+		gozsk(){
+			uni.navigateTo({
+			    url: '/pages/knowledge/knowledge'
+			});
+		},
     }
 };
 </script>

+ 1 - 0
pages/informationDetail/informationDetail.css

@@ -58,6 +58,7 @@
     line-height: 0;
 }
 .wenzhangCont {
+	width: 100vw;
     font-size: 34rpx;
     margin: 30rpx 0;
 }

+ 3 - 2
pages/informationDetail/informationDetail.vue

@@ -15,7 +15,7 @@
                 <!-- 积分 -->
 <!--                <span class="jf">100</span> -->
             </view>
-            <view class="wenzhangCont">
+            <view class="wenzhangCont article">
                 <span v-html="detailInfo.textDetails">
                 </span>
 			
@@ -89,7 +89,7 @@ export default {
 		console.log('options',options)
 		getServer(options).then(res => {
 			let result = res.data
-			result.textDetails = this.srcExcutedFunc(result.textDetails)
+			// result.textDetails = this.srcExcutedFunc(result.textDetails)
 			this.detailInfo = result
 		})
 	},
@@ -126,6 +126,7 @@ export default {
 </script>
 <style lang="scss">
 @import './informationDetail.css';
+
 .collect{
 	.icon-shoucang:before{
 		color: red;

+ 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>

+ 160 - 0
pages/knowledgeDetails/knowledgeDetails.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;
+}

+ 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>

+ 19 - 5
pages/liveBroadcast/liveBroadcast.vue

@@ -5,19 +5,19 @@
 			<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.length == 1">
+				<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.length == 2">
+				<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.length == 3">
+				<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.length > 3">
+				<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>
@@ -64,6 +64,20 @@
 		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({
@@ -82,7 +96,7 @@
 				}
 				list(params).then(res => {
 					if (res.code == 200) {
-						this.dataSource = res.rows
+						this.dataSource = [...this.dataSource,...res.rows]
 						this.total = res.total
 					}
 				})

+ 23 - 3
pages/liveBroadcastDetails/liveBroadcastDetails.vue

@@ -6,9 +6,10 @@
 			<view class="wenzhangLy">
 				<!-- 头像昵称 -->
 				<view class="txTime">
-					<image :src="loadImgSrc('/moren.png')"></image>
+					<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>{{fromData.createBy}}</p>
+						<p>{{initInfo.wechatName}}</p>
 						<span>{{fromData.createTime}}</span>
 					</view>
 				</view>
@@ -28,12 +29,22 @@
 	import {
 		getDetails
 	} from '@/api/liveBroadcast/liveBroadcast.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: {
@@ -45,6 +56,12 @@
 					}
 				})
 			},
+			getUserInfoByUserId(userId) {
+				getUserInfo(userId).then(res => {
+					this.initInfo = res.data;
+					console.log("this.initInfo", this.initInfo)
+				})
+			},
 		}
 		/**
 		 * 生命周期函数--监听页面加载
@@ -57,7 +74,10 @@
 		/**
 		 * 生命周期函数--监听页面初次渲染完成
 		 */
-		onReady(e) {},
+		onReady() {
+			this.userId = getApp().globalData.userId
+			this.getUserInfoByUserId(this.userId)
+		},
 		/**
 		 * 生命周期函数--监听页面显示
 		 */

+ 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>

+ 6 - 9
pages/specialService/loveAtVillage/details.vue

@@ -1,17 +1,12 @@
 <template>
     <view class="container">
-        <!-- 供销社详情 -->
+        <!-- 详情 -->
         <view class="cooperativeImgBox">
             <image :src="loadImgSrc('/snbj.png')" class="cooperativeImg"></image>
         </view>
         <view class="itemBox">
             <view class="item">
                 <span>
-                    {{ details.titleName }}
-                </span>
-            </view>
-            <view class="item">
-                <span>
                     {{ details.textDetails }}
                 </span>
             </view>
@@ -40,9 +35,11 @@ export default {
         /** 详情 */
         getServer(id, type) {
             getServer(id, type).then(response => {
-                this.details = response.data;
-                console.log(id)
-                console.log(data)
+                let details = response.data;
+                this.details = details;
+                wx.setNavigationBarTitle({
+                    title: details.titleName
+                })
             });
         },
     }

+ 204 - 0
pages/toLegal/toLegal.css

@@ -0,0 +1,204 @@
+/* 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;
+    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;
+}
+.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;
+}
+
+.pane-con {
+    margin: 20rpx 0;
+}
+.tabs-pane {
+    padding: 10rpx 20rpx;
+    margin-right: 20rpx;
+    border: 1px solid lightgrey;
+}
+.tabs-pane:nth-last-child(1) {
+    margin-right: 0;
+}
+.tabs-pane.active {
+    background: #5495df;
+    border-color: #5495df;
+    color: #fff;
+}
+
+.tab-class {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100vw;
+    bottom: 0;
+}
+
+.guidebook .img_box {
+    margin-bottom: 12rpx;
+    padding-left: 4rpx;
+}
+.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;
+}
+.guidebook .img_item.four:nth-child(2n) {
+    margin-right: 30rpx;
+}
+.guidebook .img_item.many {
+    width: 198rpx;
+    height: 198rpx;
+    margin-right: 16rpx;
+    margin-bottom: 16rpx;
+    border-radius: 16rpx;
+    overflow: hidden;
+}
+.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;
+}

+ 153 - 0
pages/toLegal/toLegal.vue

@@ -0,0 +1,153 @@
+<template>
+    <!-- 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 { listWxs ,listWx} from '@/api/information/information.js'
+// pages/me.js
+export default {
+    data() {
+        return {
+			qbwd:[],
+			listParams:{
+			  pageNum: 1,
+			  pageSize: 7,
+			  titleName: '',
+			  type: 11,
+			  flag:''
+			},
+			total:0,
+			searchValue:''
+		};
+    },
+	created(){
+		this.getList()
+		// 查置顶
+		listWx({}).then(e => {
+		})
+	},
+	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 = 11
+		    uni.navigateTo({
+		        url: `../informationDetail/informationDetail?id=${id}&type=${type}`
+		    });
+		},
+		// 新增资讯
+		addInfomation(){
+			uni.navigateTo({
+			    url: `../informationAdd/informationAdd`
+			});
+		}
+	},
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {},
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {},
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {},
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {},
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {},
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {},
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {},
+};
+</script>
+<style>
+@import './toLegal.css';
+.container{
+	height: 100%;
+}
+</style>

+ 3 - 1
static/scss/colorui.css

@@ -102,7 +102,9 @@ checkbox .uni-checkbox-input {
 	width: 24px;
 	height: 24px;
 }
-
+.article [src]{
+    max-width: 100%;
+}
 checkbox.round .wx-checkbox-input,
 checkbox.round .uni-checkbox-input {
 	border-radius: 100upx;