Browse Source

Merge remote-tracking branch 'origin/master'

wangzhe 1 year ago
parent
commit
a481c8cccc
51 changed files with 5128 additions and 240 deletions
  1. 0 10
      api/handleAffairs/gridType.js
  2. 15 0
      api/help/help.js
  3. 17 0
      api/index/index.js
  4. 15 0
      api/inquiry/inquiry.js
  5. 7 0
      api/knowledge/knowledge.js
  6. 36 0
      api/me/matters/matters.js
  7. 10 1
      api/me/me.js
  8. 15 0
      api/psychology/psychology.js
  9. 17 0
      api/travelGuide/travelGuide.js
  10. 1 0
      main.js
  11. 143 3
      pages.json
  12. 2 2
      pages/fuwu/fuwu.vue
  13. 3 3
      pages/handleAffairs/handleAffairs.vue
  14. 136 0
      pages/help/help.css
  15. 110 0
      pages/help/help.vue
  16. 160 0
      pages/helpDetail/helpDetails.css
  17. 238 0
      pages/helpDetail/helpDetails.vue
  18. 69 16
      pages/index/index.vue
  19. 136 0
      pages/inquiry/inquiry.css
  20. 110 0
      pages/inquiry/inquiry.vue
  21. 160 0
      pages/inquiryDetail/inquiryDetails.css
  22. 238 0
      pages/inquiryDetail/inquiryDetails.vue
  23. 16 1
      pages/knowledge/knowledge.vue
  24. 132 0
      pages/knowledge/knowledgeForm.vue
  25. 4 2
      pages/matterAll/matterAll.vue
  26. 204 0
      pages/matters/matters.css
  27. 200 5
      pages/matters/matters.vue
  28. 4 0
      pages/mattersAdd/mattersAdd.css
  29. 296 0
      pages/mattersAdd/mattersAdd.vue
  30. 161 0
      pages/mattersDetail/mattersDetail.css
  31. 253 0
      pages/mattersDetail/mattersDetail.vue
  32. 5 0
      pages/me/me.vue
  33. 95 74
      pages/me/nameAuthentication.vue
  34. 91 73
      pages/me/officialAuthentication.vue
  35. 161 0
      pages/myPayKnow/informationDetail.css
  36. 233 0
      pages/myPayKnow/informationDetail.vue
  37. 103 0
      pages/myPayKnow/myPayKnow.css
  38. 100 0
      pages/myPayKnow/myPayKnow.vue
  39. 136 0
      pages/psychology/psychology.css
  40. 110 0
      pages/psychology/psychology.vue
  41. 160 0
      pages/psychologyDetail/psychologyDetails.css
  42. 238 0
      pages/psychologyDetail/psychologyDetails.vue
  43. 61 11
      pages/quotations/quotations.vue
  44. 9 11
      pages/quotations/quotationsForm.vue
  45. 39 21
      pages/quotations/quotationsSecond.vue
  46. 2 2
      pages/toGovernmentList/toGovernmentList.vue
  47. 10 5
      pages/topic/topic.vue
  48. 160 0
      pages/travelGuide/travelGuide.css
  49. 110 0
      pages/travelGuide/travelGuide.vue
  50. 160 0
      pages/travelGuideDetails/travelGuideDetails.css
  51. 237 0
      pages/travelGuideDetails/travelGuideDetails.vue

+ 0 - 10
api/handleAffairs/gridType.js

@@ -17,16 +17,6 @@ export function getGridType(id) {
   })
 }
 
-// 查询事项列表
-export function getMattersAll(query) {//需要移动地方,暂时放这里
-  return request({
-    url: '/system/matter/listAll',
-    method: 'get',
-    params: query
-  })
-}
-
-
 // 新增网格类型配置
 export function addGridType(data) {
   return request({

+ 15 - 0
api/help/help.js

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

+ 17 - 0
api/index/index.js

@@ -32,4 +32,21 @@ export function getList(query){
 		method: 'get',
 		data: query
 	})
+}
+
+//查询封面
+export function getCovers(){
+	return request({
+		url: '/my/img/getCover',
+		method: 'get'
+	})
+}
+
+
+//查询封面
+export function getCarousel(){
+	return request({
+		url: '/my/img/getCarousel',
+		method: 'get'
+	})
 }

+ 15 - 0
api/inquiry/inquiry.js

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

+ 7 - 0
api/knowledge/knowledge.js

@@ -48,4 +48,11 @@ export function addScore(data) {
     method: 'post',
 	data:data
   })
+}
+export function addKnowledge(data) {
+  return request({
+    url: '/knowledge/base',
+    method: 'post',
+	data:data
+  })
 }

+ 36 - 0
api/me/matters/matters.js

@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+
+// 我的事项列表
+export function getMattersList(query) {
+  return request({
+    url: '/system/matter/list',
+    method: 'get',
+	params:query
+  })
+}
+
+// 事项详情
+export function getMattersDetail(id) {
+  return request({
+    url: `/system/matter/lists/${id}`,
+    method: 'get'
+  })
+}
+
+// 查询主题类型配置列表
+export function getListTopicType(query) {
+  return request({
+    url: `/jnb/topicType/list`,
+    method: 'get',
+	params: query
+  })
+}
+
+// 查询部门列表
+export function getListDepts(query) {
+  return request({
+    url: `/system/department/list`,
+    method: 'get',
+	params: query
+  })
+}

+ 10 - 1
api/me/me.js

@@ -13,4 +13,13 @@ export function getUserInfo(userId){
 		url: '/system/user/getWxUserInfo/'+userId,
 		method: 'get'
 	})
-}
+}
+
+// 获取我的付费知识
+export function myPayKnow(query) {
+  return request({
+    url: '/knowledge/base/knowledgePayList',
+    method: 'get',
+	data:query
+  })
+}

+ 15 - 0
api/psychology/psychology.js

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

+ 17 - 0
api/travelGuide/travelGuide.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+
+//旅游向导列表
+export function list(query) {
+  return request({
+    url: '/high/server/travelGuideList',
+    method: 'get',
+	params:query
+  })
+}
+//旅游向导详情
+export function getDetails(id) {
+  return request({
+    url: '/high/server/travelGuideDetails/' + id,
+    method: 'get',
+  })
+}

+ 1 - 0
main.js

@@ -4,6 +4,7 @@ import store from './store' // store
 import plugins from './plugins' // plugins
 import './permission' // permission
 import config from '@/config'
+
 Vue.use(plugins)
 
 Vue.config.productionTip = false

+ 143 - 3
pages.json

@@ -135,6 +135,16 @@
 			}
 		},
 		{
+			"path": "pages/myPayKnow/myPayKnow",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"enablePullDownRefresh": true,
+				"navigationBarTitleText": "付费知识"
+			}
+		},
+		{
 			"path": "pages/matters/matters",
 			"style": {
 				"usingComponents": {},
@@ -144,6 +154,24 @@
 			}
 		},
 		{
+			"path": "pages/mattersAdd/mattersAdd",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "新增事项"
+			}
+		},
+		{
+			"path": "pages/mattersDetail/mattersDetail",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "事项详情"
+			}
+		},
+		{
 			"path": "pages/sannong/sannong",
 			"style": {
 				"usingComponents": {
@@ -181,6 +209,14 @@
 				"navigationBarTextStyle": "white",
 				"navigationBarTitleText": "资讯详情"
 			}
+		},{
+			"path": "pages/myPayKnow/informationDetail",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "付费知识详情"
+			}
 		},
 		{
 			"path": "pages/shangcheng/shangcheng",
@@ -237,12 +273,35 @@
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 5,
 				"navigationBarTextStyle": "white",
 				"navigationBarTitleText": "行情"
 
 
 			}
-		}, {
+		},
+		{
+			"path": "pages/quotations/quotationsForm",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "新增行情列表"
+			}
+		},
+		{
+			"path": "pages/quotations/quotationsSecond",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"enablePullDownRefresh": true,
+				"onReachBottomDistance": 5,
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "行情列表"
+			}
+		},
+		{
 			"path": "pages/toGovernmentList/toGovernmentList",
 			"style": {
 				"usingComponents": {},
@@ -336,7 +395,88 @@
 			}
 		},
 		{
-			"path" : "pages/topic/topic",
+			"path": "pages/knowledge/knowledgeForm",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "知识库新增"
+			}
+		},
+		{
+			"path": "pages/travelGuide/travelGuide",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "旅游向导"
+			}
+		},
+		{
+			"path": "pages/travelGuideDetails/travelGuideDetails",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "旅游向导详情"
+			}
+		},
+		{
+			"path": "pages/psychology/psychology",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "心理咨询"
+			}
+		},
+		{
+			"path": "pages/psychologyDetail/psychologyDetails",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "心理咨询详情"
+			}
+		},
+		{
+			"path": "pages/inquiry/inquiry",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "线上问诊"
+			}
+		},
+		{
+			"path": "pages/inquiryDetail/inquiryDetails",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "线上问诊详情"
+			}
+		},
+		{
+			"path": "pages/help/help",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "帮扶救助"
+			}
+		},
+		{
+			"path": "pages/helpDetail/helpDetails",
+			"style": {
+				"usingComponents": {},
+				"navigationBarBackgroundColor": "#07c160",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "帮扶救助详情"
+			}
+		},
+		{
+			"path": "pages/topic/topic",
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",
@@ -345,7 +485,7 @@
 			}
 		},
 		{
-			"path" : "pages/matterAll/matterAll",
+			"path": "pages/matterAll/matterAll",
 			"style": {
 				"usingComponents": {},
 				"navigationBarBackgroundColor": "#07c160",

+ 2 - 2
pages/fuwu/fuwu.vue

@@ -35,8 +35,8 @@
 	
 	           <view class="jlSj">
 	                <span class="jf">
-	                   <!-- {{ item.jf }}
-	                    <em class="iconfont icon-jifen"></em> -->
+	                   {{ item.updateTime || item.createTime }}
+	                    <!-- <em class="iconfont icon-jifen"></em> -->
 	                </span>
 	                <view class="ck">
 	                    <!-- <span>

+ 3 - 3
pages/handleAffairs/handleAffairs.vue

@@ -66,10 +66,10 @@
 		methods: {
 			confirm(){
 				if (!this.title.trim()) {//去除前后空格,在判断是否为空
-					return 
+					return
 				}
 				console.log(this.title)
-				uni.setStorageSync('data', {title:this.title})
+				uni.setStorageSync('data', {title:this.title,examine:1})
 				uni.navigateTo({
 					url: '/pages/matterAll/matterAll',
 				});
@@ -89,7 +89,7 @@
 				uni.setStorageSync('id', item.id)
 				uni.navigateTo({
 					url: '/pages/gridQuery/gridQuery?titleText='+item.name
-					 
+
 				});
 			},
 			getList() {

+ 136 - 0
pages/help/help.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/help/help.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/help/help.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/helpDetail/helpDetails?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 './help.css';
+</style>

+ 160 - 0
pages/helpDetail/helpDetails.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/helpDetail/helpDetails.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 article">
+				<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/help/help.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 './helpDetails.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>

+ 69 - 16
pages/index/index.vue

@@ -2,7 +2,7 @@
 	<view>
 		<!-- index.wxml -->
 		<view class="topBj">
-			<image :src="'https://tse1-mm.cn.bing.net/th/id/OIP-C.JsghMT_u8V52I4PSHow2hAHaEG?w=332&h=186&c=7&r=0&o=5&pid=1.7'"></image>
+			<image :src="loadImgSrc(bigImg)"></image>
 		</view>
 		<view class="container">
 			<!-- 主导航 -->
@@ -68,7 +68,7 @@
 			<view class="zcTuijian">
 				<image :src="loadImgSrc('/zctj.png')"></image>
 				<ul>
-					<view v-for="(item, index) in governmentList" :key="index">
+					<view v-for="(item, index) in governmentList" :key="index" @click="goZcDetail(item)">
 						<li style="display: flex;">
 							<em class="iconfont icon-yuandianxiao"></em>
 							{{ item.titleName }}
@@ -86,7 +86,7 @@
 				:circular="circular" class="banner">
 				<block v-for="(item, index) in banners" :key="index">
 					<swiper-item>
-						<image :src="item.src" mode="aspectFill"></image>
+						<image :src="loadImgSrc(item)" mode="aspectFill"></image>
 					</swiper-item>
 				</block>
 			</swiper>
@@ -101,15 +101,15 @@
 			<view class="gpfwNav">
 				<ul>
 					<li>
-						<view class="lvxd"><em class="iconfont icon-jurassic_nav"></em></view>
+						<view class="lvxd"><em class="iconfont icon-jurassic_nav" @tap="golyxd"></em></view>
 						<span>旅游向导</span>
 					</li>
 					<li>
-						<view class="xlzx"><em class="iconfont icon-xinlizixun"></em></view>
+						<view class="xlzx"><em class="iconfont icon-xinlizixun" @tap="goxlzx"></em></view>
 						<span>心里咨询</span>
 					</li>
 					<li>
-						<view class="xswz"><em class="iconfont icon-wenzhen"></em></view>
+						<view class="xswz"><em class="iconfont icon-wenzhen" @tap="goxswz"></em></view>
 						<span>线上问诊</span>
 					</li>
 					<li>
@@ -119,7 +119,7 @@
 						<span @tap="goFinancialInfrastructure">社</span>
 					</li>
 					<li>
-						<view class="xlzx"><em class="iconfont icon-linshijiuzhu"></em></view>
+						<view class="xlzx"><em class="iconfont icon-linshijiuzhu" @tap="gobfjz"></em></view>
 						<span>帮扶救助</span>
 					</li>
 					<li>
@@ -219,7 +219,7 @@
 
 <script>
 	import {
-		getListToAnnouncement
+		getListToAnnouncement,getCovers,getCarousel
 	} from '@/api/index/index.js';
 	import {
 		governmentListData
@@ -233,11 +233,11 @@
 	export default {
 		data() {
 			return {
+				bigImg:'https://tse1-mm.cn.bing.net/th/id/OIP-C.JsghMT_u8V52I4PSHow2hAHaEG?w=332&h=186&c=7&r=0&o=5&pid=1.7',
 				// 图片轮播
-				banners: [{
-						src: 'https://tse1-mm.cn.bing.net/th/id/OIP-C.JsghMT_u8V52I4PSHow2hAHaEG?w=332&h=186&c=7&r=0&o=5&pid=1.7'
-					}
-				],
+				banners: [
+						'https://tse1-mm.cn.bing.net/th/id/OIP-C.JsghMT_u8V52I4PSHow2hAHaEG?w=332&h=186&c=7&r=0&o=5&pid=1.7'
+					],
 				announcementList: [{
 						id: '3',
 						announcementTitle: '关于高质量推进土地整治工作赋能乡村振兴的通知'
@@ -358,6 +358,7 @@
 		},
 		created() {
 			this.getList()
+			this.getCovers()
 		},
 		onReachBottom() {
 			let pageNum = this.knowledgeParams.pageNum
@@ -374,6 +375,22 @@
 			}
 		},
 		methods: {
+			goZcDetail(e) {
+				let id = e.id || ''
+				let type = 10
+			    uni.navigateTo({
+			        url: `../informationDetail/informationDetail?id=${id}&type=${type}`
+			    });
+			},
+			//封面与轮播图
+			getCovers(){
+				getCovers().then(res=>{
+					this.bigImg = res.data
+				})
+				getCarousel().then(res=>{
+					this.banners = res.data
+				})	
+			},
 			// 热门知识获取数据
 			getList(pageNum) {
 				let params = {
@@ -393,11 +410,13 @@
 					url: '/pages/toLegal/toLegal'
 				});
 			},
+			//政策推荐
 			toGovernmentList() {
 				uni.navigateTo({
 					url: '/pages/toGovernmentList/toGovernmentList'
 				});
 			},
+			//惠民通
 			toGovernmentList1() {
 				uni.navigateTo({
 					url: '/pages/toGovernmentList/toGovernmentList?type=10'
@@ -496,20 +515,54 @@
 					url: '/pages/knowledge/knowledge'
 				});
 			},
+			/**
+			 * 跳转旅游向导页面
+			 */
+			golyxd() {
+				uni.navigateTo({
+					url: '/pages/travelGuide/travelGuide'
+				});
+			},
+			/**
+			 * 跳转心理咨询页面
+			 */
+			goxlzx() {
+				uni.navigateTo({
+					url: '/pages/psychology/psychology'
+				});
+			},
+			/**
+			 * 跳转线上问诊页面
+			 */
+			goxswz() {
+				uni.navigateTo({
+					url: '/pages/inquiry/inquiry'
+				});
+			},
+			/**
+			 * 跳转帮扶救助页面
+			 */
+			gobfjz() {
+				uni.navigateTo({
+					url: '/pages/help/help'
+				});
+			},
 			goKnowledgeDetails(item) {
 				let params = {
 					userId: getApp().globalData.userId,
 					scoreNum: item.integral
 				};
+				if (item.purchaseStatus == 0) {
+					this.reduceScore(item)
+					this.addScore(item)
+				}
 				verifyScore(params).then((res) => {
 					if (res.data == false) {
 						uni.showToast({
 							title: '您的积分不足'
 						})
-					}else{
-						console.log("verifyScore",res)
-						this.reduceScore(item)
-						this.addScore(item)
+					} else {
+						this.getList()
 						uni.navigateTo({
 							url: '/pages/knowledgeDetails/knowledgeDetails?id=' + item.id,
 						});

+ 136 - 0
pages/inquiry/inquiry.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/inquiry/inquiry.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/inquiry/inquiry.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/inquiryDetail/inquiryDetails?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 './inquiry.css';
+</style>

+ 160 - 0
pages/inquiryDetail/inquiryDetails.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/inquiryDetail/inquiryDetails.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 article">
+				<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/inquiry/inquiry.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 './inquiryDetails.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>

+ 16 - 1
pages/knowledge/knowledge.vue

@@ -23,7 +23,10 @@
 					</view>
 				</view>
 			</view>
+			<uni-fab ref="fab" :horizontal="right" :vertical="bottom"
+			         @fabClick="fabClick()"/>
 		</view>
+
 	</view>
 </template>
 
@@ -44,6 +47,12 @@
 					pageSize: 10,
 				},
 				loading: false,
+				//是否显示弹出层
+				open: false,
+				//悬浮按钮右对齐
+				right: 'right',
+				//悬浮按钮下对齐
+				bottom: 'bottom',
 			}
 		},
 		/**
@@ -80,7 +89,7 @@
 			getList(pageNum) {
 				let params = {
 					pageSize: this.queryParams.pageSize,
-					pageNum: pageNum,
+					pageNum: pageNum
 				}
 				list(params).then(res => {
 					if (res.code == 200) {
@@ -89,6 +98,12 @@
 					}
 				})
 			},
+			//悬浮按钮点击事件
+			fabClick() {
+			  uni.navigateTo({
+			    url: '../knowledge/knowledgeForm'
+			  });
+			},
 		}
 	}
 </script>

+ 132 - 0
pages/knowledge/knowledgeForm.vue

@@ -0,0 +1,132 @@
+<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="titleName">
+					<uni-easyinput v-model="customFormData.titleName" placeholder="请输入标题" />
+				</uni-forms-item>
+				<uni-forms-item label="正文" required name="textDetails">
+					<uni-easyinput v-model="customFormData.textDetails" placeholder="请输入正文" />
+				</uni-forms-item>
+				<uni-forms-item label="图片" required name="url">
+					<upload :imgArr="imgUrlList" :fileSize="1" :limit="3" @updateImg="updateImg" />
+				</uni-forms-item>
+				<uni-forms-item label="是否热门" required name="integral">
+					<switch v-model="customFormData.popular" />
+				</uni-forms-item>
+				<uni-forms-item label="付费积分" required name="integral">
+					<uni-number-box v-model="customFormData.integral" />
+				</uni-forms-item>
+			</uni-forms>
+			<button type="primary" @click="submit('customForm')">提交</button>
+		</view>
+	</uni-section>
+</template>
+
+<script>
+	import {
+		addKnowledge
+	} from "@/api/knowledge/knowledge";
+	import upload from '../../components/upload/index.vue'
+	export default {
+		components: {
+			upload
+		},
+		data() {
+			return {
+				html: '<div>Hello World!</div>',
+				// 基础表单数据
+				baseFormData: {
+					titleName: '',
+					textDetails: '',
+					integral: '',
+					popular: '',
+					url: []
+				},
+				// 校验规则
+				rules: {
+					titleName: {
+						rules: [{
+							required: true,
+							errorMessage: '标题不能为空'
+						}]
+					},
+					textDetails: {
+						rules: [{
+							required: true,
+							errorMessage: '正文不能为空'
+						}]
+					}
+				},
+				imgUrlList: [],
+				customFormData: {},
+			}
+		},
+		onLoad() {},
+		onReady() {
+			// 设置自定义表单校验规则,必须在节点渲染完毕后执行
+			this.$refs.customForm.setRules(this.rules)
+		},
+		created() {},
+		methods: {
+			submit(ref) {
+				this.$refs[ref].validate().then(res => {
+					if (res) {
+						if (this.imgUrlList != null && this.imgUrlList != [] && this.imgUrlList.length > 1) {
+							uni.showToast({
+								title: '图片只能上传一张'
+							})
+						} else {
+							this.customFormData.imgUrlList = this.imgUrlList.join(',')
+							addKnowledge(this.customFormData).then(response => {
+								this.$modal.msgSuccess('提交成功');
+								this.customFormData = {
+									...this.baseFormData
+								};
+								this.imgUrlList = [];
+								uni.navigateTo({
+									url: '../knowledge/knowledge'
+								});
+							}).catch(err => {
+								console.log('err', err);
+							})
+						}
+					}
+				})
+			},
+			updateImg(imgUrlList) {
+				this.imgUrlList = imgUrlList;
+			}
+		}
+	}
+</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>

+ 4 - 2
pages/matterAll/matterAll.vue

@@ -1,7 +1,7 @@
 <template>
 	<view>
 		<uni-list>
-			<uni-list-item  :title="item.title" v-for="(item,index) in dataList"></uni-list-item>
+			<uni-list-item  :title="item.title" v-for="(item,index) in dataList" @click="onclick(item)"></uni-list-item>
 		</uni-list>
 	</view>
 </template>
@@ -24,7 +24,9 @@
 			this.getMatters(data)
 		},
 		methods: {
-
+			onclick(data){//点击详情
+				
+			},
 			getMatters(data) {
 				let _that = this
 				getMattersAll(data).then(res => {

+ 204 - 0
pages/matters/matters.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;
+}

+ 200 - 5
pages/matters/matters.vue

@@ -1,11 +1,206 @@
 <template>
-	<view class="">
-		我的事项
+    <!-- pages/me.wxml -->
+	<view class="container">
+		<uni-search-bar  :focus="true" v-model="searchValue"  @input="search"
+			style="width: 100%;"
+			@cancel="cancel">
+		</uni-search-bar>
+		<!-- <view style="width: 100%;display: flex;">
+			<uni-search-bar  :focus="true" v-model="searchValue"  @input="search"
+				style="width: 70%;"
+				@cancel="cancel">
+			</uni-search-bar>
+			  <uni-data-select
+				  style="width: 30%;margin: auto;"
+				  v-model="value"
+				  placeholder="请选择排序"
+				  :localdata="range"
+				  @change="getList(value)"
+			></uni-data-select>
+		</view> -->
+	    <view class="rnwdList">
+	        <view class="list" @tap="goDetails(item)" v-for="(item, index1) in qbwd" :key="index1">
+	            <span class="listTitle">{{ item.title }}</span>
+	            <view class="onePic">
+	                <image :src="loadImgSrc(item.picture)">
+					</image>
+	            </view>
+			</view>
+			<uni-fab ref="fab" horizontal="right"  style="position: fixed;bottom: 1%;right: 1%;z-index: 200;"
+			         @fabClick="fabClick()"/>
+	    </view>
+		<!-- 新增资讯按钮 -->
+		<!-- <button class="addInfomarionBtn" @click="addInfomation()"></button> -->
 	</view>
 </template>
 
 <script>
+import { getMattersList } from '@/api/me/matters/matters.js'
+// pages/me.js
+export default {
+    data() {
+        return {
+			qbwd:[],
+			listParams:{
+			  pageNum: 1,
+			  pageSize: 7,
+			  title: '',
+			  isTop:0,
+			  type: 11,
+			  flag:''
+			},
+			topList:[],
+			total:0,
+			searchValue:'',
+			favoriteList:[],
+			value: 1,
+			range: [
+				{ value: 'watch', text: "热度" },
+				{ value: 'like', text: "点赞" },
+				{ value: '', text: "最新" },
+			],
+		};
+    },
+	created(){
+		this.getList()
+	},
+	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(null,'dropDown')
+		}
+	},
+	methods:{
+		currentFavoriteCount(e){
+			if(this.favoriteList.includes(e.id)){
+				return e.likeNum + 1
+			} else {
+				return e.likeNum
+			}
+		},
+		addFavorite(e){
+			if(this.favoriteList.includes(e.id)) return
+			likeServer({
+				id:e.id,
+				type:11
+			}).then(e => {
+			})
+			this.favoriteList.push(e.id)
+			return
+			if(this.favoriteList.includes(e.id)){
+				// 取消点赞
+				likeServer({
+					id:e.id,
+					type:12
+				})
+				let deleteIdx = this.favoriteList.findIndex((v => v == e.id))
+				this.favoriteList.splice(deleteIdx,1)
+			} else {
+				likeServer({
+					id:e.id,
+					type:12
+				})
+				this.favoriteList.push(e.id)
+			}
+		},
+		cancel(){
+			this.listParams.title = ''
+		},
+		fabClick(){
+			uni.navigateTo({
+				url: `../mattersAdd/mattersAdd`
+			})
+		},
+		search(){
+			this.listParams.title = this.searchValue
+			this.getList()
+		},
+		getList(val = null,type){
+			this.listParams.flag = val || ''
+			switch(type){
+				case 'dropDown':
+				// 上拉
+					getMattersList(this.listParams).then(res => {
+						this.qbwd = [...this.qbwd,...res.rows]
+						this.total = res.total
+					})
+				break;
+				default:
+					this.qbwd = this.topList
+					getMattersList(this.listParams).then(res => {
+						this.qbwd = [...this.qbwd,...res.rows]
+						this.total = res.total
+					})
+				break;
+			}
+		},
+		goDetails(e) {
+			let id = e.id || ''
+			let type = 11
+		    uni.navigateTo({
+		        url: `../mattersDetail/mattersDetail?id=${id}`
+		    });
+		},
+		// 新增资讯
+		addInfomation(){
+			uni.navigateTo({
+			    url: `../informationAdd/informationAdd`
+			});
+		}
+	},
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {},
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {},
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {},
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {},
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {},
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {},
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {},
+};
 </script>
-
-<style>
-</style>
+<style lang="scss">
+@import './matters.css';
+.container{
+	height: 100%;
+}
+.container{
+	height: 100%;
+	content: '\e633';
+}
+.favorite{
+	.icon-shoucang:before{
+		color: red;
+	}
+}
+.not-favorite{
+	
+}
+</style>

+ 4 - 0
pages/mattersAdd/mattersAdd.css

@@ -0,0 +1,4 @@
+.container{
+	width: 100%;
+	height: 100%;
+}

+ 296 - 0
pages/mattersAdd/mattersAdd.vue

@@ -0,0 +1,296 @@
+/*
+ *@description: 新增资讯
+ *@author: yh Fu
+ *@date: 2024-03-04 14:45:49
+ *@version: V1.0.5
+*/
+<template>
+	<view>
+		<uni-forms :rules="rules" :value="formData" ref="form" validate-trigger="bind" err-show-type="undertext" class="uniForm">
+			<uni-group title="基本信息" top="0">
+				<uni-forms-item name="name" required label="事项标题">
+					<uni-easyinput type="text" :inputBorder="true" v-model="formData.titleName" placeholder="请输入事项标题"></uni-easyinput>
+				</uni-forms-item>
+				<!-- 使用原生input,需要绑定binddata -->
+				<uni-forms-item name="textDetails" required label="正文">
+					<uni-easyinput type="textarea" v-model="formData.textDetails" :maxlength="50" @blur="binddata('textDetails', $event.detail.value)" placeholder="请输入正文"></uni-easyinput>
+				</uni-forms-item>
+				<uni-forms-item label="电话" required name="phone">
+					<uni-easyinput v-model="formData.phone" placeholder="请输入电话" />
+				</uni-forms-item>
+				<uni-forms-item name="address" required label="地址">
+					<uni-easyinput type="text" :inputBorder="true" v-model="formData.address" placeholder="请输入地址"></uni-easyinput>
+				</uni-forms-item>
+				<uni-forms-item name="checked" label="主题类型" label-width="30%">
+					<uni-data-select
+						  style="width: 30%;margin: auto;"
+						  v-model="formData.type"
+						  placeholder="请选择主题类型"
+						  field="deptName as value, deptName as text"	
+						  :localdata="topicTypeList"
+					></uni-data-select>
+				</uni-forms-item>
+				<uni-forms-item name="checked" label="所属部门" label-width="30%">
+					<uni-data-select
+						  style="width: 30%;margin: auto;"
+						  v-model="formData.department"
+						  placeholder="请选择所属部门"
+						  field="name as value, name as text"	
+						  :localdata="departmentList"
+					></uni-data-select>
+				</uni-forms-item>
+				<uni-forms-item name="checked" label="是否常办" label-width="30%">
+					<switch :checked="formData.isTop" @change="change(' isTop', $event.detail.value)" style="margin-top: 2%;"/>
+				</uni-forms-item>
+				<uni-forms-item name="urlList" required label="图片">
+					<upload :imgArr="imageList" :fileSize="1" :limit="3" @updateImg="updateImg"></upload>
+				</uni-forms-item>
+			</uni-group>
+			<view>
+				<!-- <button  @click="submitForm('form')">校验表单</button>
+				<button size="mini" @click="validateField('form')">只校验用户名和邮箱项</button>
+				<button size="mini" @click="clearValidate('form', 'name')">移除用户名的校验结果</button>
+				<button size="mini" @click="clearValidate('form')">移除全部表单校验结果</button>
+				<button  @click="resetForm">重置表单</button> -->
+				<button  @click="submitForm('form')">新增</button>
+			</view>
+		</uni-forms>
+	</view>
+</template>
+ 
+<script>
+	import { 
+		getListTopicType,
+		getListDepts ,
+	} from '@/api/me/matters/matters.js'
+	import upload from '@/components/upload/index.vue'
+	export default {
+		components: {
+			upload
+		},
+		created(){
+			getListTopicType().then(e => {
+				e.rows.forEach(v => {
+					this.topicTypeList.push({
+						text:v.deptName,
+						value:v.id
+					})
+				})
+			})
+			getListDepts().then(e => {
+				e.rows.forEach(v => {
+					this.departmentList.push({
+						text:v.name,
+						value:v.name
+					})
+				})
+			})
+		},
+		data() {
+			return {
+				formData: {
+					titleName: '',
+					textDetails: '',
+					address:'',
+					phone:'',
+					email: '',
+					sex: '0',
+					hobby: [0, 2],
+					remarks: '热爱学习,热爱生活',
+					isGovernment: false,
+					isTop: false,
+					country: 2,
+					weight: 120,
+					birth: '',
+					type:'',
+					department:''
+				},
+				imageList:[],
+				topicTypeList:[],
+				departmentList:[],
+				sex: [{
+						text: '男',
+						value: '0'
+					},
+					{
+						text: '女',
+						value: '1'
+					},
+					{
+						text: '未知',
+						value: '2'
+					}
+				],
+				hobby: [{
+						text: '足球',
+						value: 0
+					},
+					{
+						text: '篮球',
+						value: 1
+					},
+					{
+						text: '游泳',
+						value: 2
+					}
+				],
+				range: ['中国', '美国', '澳大利亚'],
+				show: false,
+				rules: {
+					titleName: {
+						rules: [{
+								required: true,
+								errorMessage: '请输入标题'
+							},
+							{
+								minLength: 1,
+								errorMessage: '标题不得为空'
+							}
+						]
+					},
+					textDetails: {
+						rules: [{
+								required: true,
+								errorMessage: '请输入正文'
+							},
+							{
+								minLength: 10,
+								errorMessage: '正文不得少于 {minLength} 字'
+							}
+						]
+					},
+					weight: {
+						rules: [{
+								format: 'number',
+								errorMessage: '体重必须是数字'
+							},
+							{
+								minimum: 100,
+								maximum: 200,
+								errorMessage: '体重应该大于 {minimum} 斤,小于 {maximum} 斤'
+							}
+						]
+					},
+					birth: {
+						rules: [
+							{
+								required: true,
+								errorMessage: '请选择时间'
+							},
+							{
+								format: 'timestamp',
+								errorMessage: '必须是时间戳'
+							}
+						]
+					},
+					email: {
+						rules: [{
+							format: 'email',
+							errorMessage: '请输入正确的邮箱地址'
+						}]
+					},
+					isGovernment: {
+						rules: [{
+							format: 'bool'
+						}]
+					},
+					isTop: {
+						rules: [{
+							format: 'bool'
+						}]
+					},
+					sex: {
+						rules: [{
+							format: 'string'
+						}]
+					},
+					hobby: {
+						rules: [{
+								format: 'array'
+							},
+							{
+								validateFunction: function(rule, value, data, callback) {
+									if (value.length < 2) {
+										callback('请至少勾选两个兴趣爱好')
+									}
+									return true
+								}
+							}
+						]
+					}
+				}
+			}
+		},
+		methods: {
+			change(name, value) {
+				this.formData.checked = value
+				this.$refs.form.setValue(name, value)
+			},
+ 
+			submitForm(form) {
+				this.$refs[form]
+					.submit()
+					.then(res => {
+						console.log('表单的值:', res)
+						uni.showToast({
+							title: '验证成功'
+						})
+					})
+					.catch(errors => {
+						console.error('验证失败:', errors)
+					})
+			},
+ 
+			//重置表单 。原生的组件input组件不能重置表单
+			resetForm() {
+				this.$refs.form.resetFields()
+			},
+			validateField(form) {
+				this.$refs[form]
+					.validateField(['name', 'email'])
+					.then(res => {
+						uni.showToast({
+							title: '验证成功'
+						})
+						console.log('表单的值:', res)
+					})
+					.catch(errors => {
+						console.error('验证失败:', errors)
+					})
+			},
+			updateImg(imgList){
+				this.imageList = imgList;
+			},
+			clearValidate(form, name) {
+				if (!name) name = []
+				this.$refs[form].clearValidate(name)
+			}
+		}
+	}
+</script>
+<style lang="scss">
+	.uniForm{
+		.uni-forms-item{
+			margin: auto;
+			.uni-forms-item__content{
+				margin: auto;
+			}
+		}
+	}
+	.radioView{
+		margin: auto;
+		.uni-forms-item__content{
+			margin: auto;
+		}
+	}
+	.uni-input-border {
+		padding: 0 10px;
+		height: 35px;
+		width: 100%;
+		font-size: 14px;
+		color: #666;
+		border: 1px #e5e5e5 solid;
+		border-radius: 5px;
+		box-sizing: border-box;
+	}
+</style>

+ 161 - 0
pages/mattersDetail/mattersDetail.css

@@ -0,0 +1,161 @@
+/* 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 {
+	width: 100vw;
+    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;
+}

+ 253 - 0
pages/mattersDetail/mattersDetail.vue

@@ -0,0 +1,253 @@
+<template>
+    <view>
+        <!-- pages/me.wxml -->
+        <view class="container">
+            <h1 class="title">{{ detailInfo.titleName }}</h1>
+            <view class="wenzhangLy">
+                <!-- 头像昵称 -->
+                <view class="txTime">
+                    <image :src="loadImgSrc(detailInfo.headImg!=null?detailInfo.headImg:'/profile/upload/2024/03/05/abf969632ee94bd5a429c8c2dbb2f6b4 (1)_20240305092823A002.png')" style="border-radius: 50px;"></image>
+                    <view class="time">
+                        <p>{{detailInfo.department?detailInfo.department:'网友'}}</p>
+                        <span>{{ detailInfo.createTime }}</span>
+                    </view>
+                </view>
+                <!-- 积分 -->
+<!--                <span class="jf">100</span> -->
+            </view>
+            <view class="wenzhangCont article">
+                <span v-html="detailInfo.content">
+                </span>
+			
+                <view >
+                    <image :src="loadImgSrc(detailInfo.picture)"  style="background-size: 100% 100%;"></image>
+                </view>
+            </view>
+			
+			
+        </view>
+	</view>
+</template>
+
+<script>
+import { 
+	getMattersDetail 
+} from '@/api/me/matters/matters.js'
+export default {
+    data() {
+        return {
+			anwserVal:'',
+			anwserList:[
+				{
+					deptName:'国家乡村振兴局',
+					updateTime:'2023-2-27 16:04',
+					desc:'用好政策效果评估成果,进一步优化巩固拓展脱贫攻坚成果同乡村振兴有效衔接政策供给,为推动工作提质增效提供有力支撑保障。',					
+				}
+			],
+			isCollection:false,
+			isAdopt:false,
+			adoptTopSize:'115',
+			adoptIndex:null,
+			detailInfo:{},
+        };
+    },
+	methods: {
+		// 评论回答
+		answerFunc(){
+			this.anwserList.push({
+				deptName:'国家烟草局',
+				updateTime:new Date().getFullYear() + "-" + new Date().getMonth() + "-" + new Date().getDay() + " " + (new Date().getHours() < 10 ? "0" + new Date().getHours() : new Date().getHours()) + ':' + (new Date().getMinutes() < 10 ? "0" + new Date().getMinutes() : new Date().getMinutes()),
+				desc:this.anwserVal,		
+			})
+			this.anwserVal = null
+		},
+		adoptFunc(idx){
+			this.adoptIndex = idx
+			this.isAdopt = true
+		},
+		// 标记喜欢
+		collectionFunc(){
+			this.isCollection = !this.isCollection
+		},
+		// 加工图片路径
+		srcExcutedFunc(html){
+			let newReg = /(?<=(src="))[^"]*?(?=")/ig;
+			let newHtml = html
+			var allSrc = html.match(newReg);
+			try{
+				if(allSrc.length != 0){
+					allSrc.forEach(e => {
+						newHtml = newHtml.replace(e,this.loadImgSrc(e))
+					})
+				} 
+			}catch(e){
+				//TODO handle the exception
+			}
+			
+			return newHtml
+		}
+	}
+    /**
+     * 生命周期函数--监听页面加载
+     */,
+    onLoad(options) {
+		getMattersDetail(options.id).then(res => {
+			debugger
+			let result = res.data
+			// result.textDetails = this.srcExcutedFunc(result.textDetails)
+			this.detailInfo = result
+		})
+	},
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady(e) {  
+	}, 
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {},
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {},
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {},
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {},
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {},
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {},
+};
+</script>
+<style lang="scss">
+@import './mattersDetail.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>

+ 5 - 0
pages/me/me.vue

@@ -53,6 +53,11 @@ export default {
 					id: 'matters/matters',
 					name: '我的事项',
 					open: false,
+				},
+				{
+					id: 'myPayKnow/myPayKnow',
+					name: '我的付费知识',
+					open: false,
 				}
 			]
 		};

+ 95 - 74
pages/me/nameAuthentication.vue

@@ -1,81 +1,102 @@
 <template>
-	<uni-section title="自定义校验规则" type="line">
-			<view class="example">
-				<!-- 自定义表单校验 -->
-				<uni-forms ref="customForm" :rules="customRules" :modelValue="form">
-					<uni-forms-item label="姓名" required name="name">
-						<uni-easyinput v-model="form.name" placeholder="请输入姓名" />
-					</uni-forms-item>
-					<uni-forms-item label="电话" required name="phone">
-						<uni-easyinput v-model="form.phone" placeholder="请输入电话" />
-					</uni-forms-item>
-					<uni-forms-item label="身份证号" required name="idCard">
-						<uni-easyinput v-model="form.idCard" placeholder="请输入身份证号" />
-					</uni-forms-item>
-					<uni-forms-item label="身份证正反面" required name="path">
-						<upload :imgArr="imageList" name="path" v-model="form.path" :fileSize="1" :limit="2" @updateImg="updateImg"></upload>
-					</uni-forms-item>
-				</uni-forms>
-				<button type="primary" @click="submitForm('customForm')">提交</button>
-			</view>
-		</uni-section>
+    <uni-section title="实名认证" type="line">
+        <view class="example">
+            <!-- 自定义表单校验 -->
+            <uni-forms ref="customForm" :rules="customRules" :modelValue="form">
+                <uni-forms-item label="姓名" required name="name">
+                    <uni-easyinput v-model="form.name" placeholder="请输入姓名" maxlength="20"/>
+                </uni-forms-item>
+                <uni-forms-item label="电话" required name="phone">
+                    <uni-easyinput v-model="form.phone" placeholder="请输入电话" maxlength="13"/>
+                </uni-forms-item>
+                <uni-forms-item label="身份证号" required name="idCard">
+                    <uni-easyinput v-model="form.idCard" placeholder="请输入身份证号" maxlength="18"/>
+                </uni-forms-item>
+                <uni-forms-item label="身份证正反面" required name="path">
+                    <upload :imgArr="imageList" name="path" v-model="form.path" :fileSize="1" :limit="2"
+                            @updateImg="updateImg"></upload>
+                </uni-forms-item>
+            </uni-forms>
+            <button type="primary" @click="submitForm('customForm')">提交</button>
+        </view>
+    </uni-section>
 </template>
 
 <script>
-import upload from '../../components/upload/index.vue'
-import {appletAdd} from '@/api/me/nameAuthentication.js'
-export default {
-	components: {
-		upload
-	},
-	onReady() {
-		// 设置自定义表单校验规则,必须在节点渲染完毕后执行
-		this.$refs.customForm.setRules(this.customRules)
-	},
-	data() {
-		return{
-			form:{
-				
-			},
-			// 表单校验
-			customRules: {
-				name: {
-					rules: [{
-						required: true,
-						errorMessage: '姓名不能为空'
-					}]
-				},
-			},
-			imageList:[]
-		}
-	},
-	methods: {
-	    // 取消按钮
-	    cancel() {
-	      this.open = false;
-	      this.reset();
-	    },
-	    /** 提交按钮 */
-	    submitForm(e) {
-			console.log("11111")
-			this.$refs[e].validate().then(res => {
-				console.log('success', res);
-				uni.showToast({
-				  title: `校验通过`
-				})
-			  }).catch(err => {
-				console.log('err', err);
-			})
-			let path = this.imageList.join(',');
-			console.log(path)
-			this.form.path = path
-			appletAdd(this.form).then(res =>{})
-	    },
-		updateImg(imgList){
-			this.imageList = imgList;
-		}
-	}
-};
+    import upload from '../../components/upload/index.vue'
+    import {appletAdd} from '@/api/me/nameAuthentication.js'
+
+    export default {
+        components: {
+            upload
+        },
+        onReady() {
+            // 设置自定义表单校验规则,必须在节点渲染完毕后执行
+            this.$refs.customForm.setRules(this.customRules)
+        },
+        data() {
+            return {
+                form: {},
+                // 表单校验
+                customRules: {
+                    name: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '姓名不能为空'
+                        }]
+                    },
+                    phone: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '电话不能为空'
+                        },
+						{
+						  pattern:'^1[3456789]\\d{9}$',
+						  errorMessage: '请填写正确的手机号'
+						}]
+                    },
+                    idCard: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '身份证号不能为空'
+                        },
+						{
+						  pattern: '/(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/',
+						  errorMessage: '请填写正确的身份号'
+						}]
+                    },
+                    path: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '身份证正反面不能为空'
+                        }]
+                    },
+                },
+                imageList: []
+            }
+        },
+        methods: {
+            // 取消按钮
+            cancel() {
+                this.open = false;
+                this.reset();
+            },
+            /** 提交按钮 */
+            submitForm(e) {
+                this.$refs[e].validate().then(res => {
+                    appletAdd(this.form).then(res => {
+						uni.navigateBack();
+					});
+                }).catch(err => {
+                })
+            },
+
+            updateImg(imgList) {
+                this.imageList = imgList;
+                this.form.path = this.imageList.join(',');
+            }
+        }
+    };
 </script>
 
 <style>

+ 91 - 73
pages/me/officialAuthentication.vue

@@ -1,80 +1,98 @@
 <template>
-	<uni-section title="自定义校验规则" type="line">
-			<view class="example">
-				<!-- 自定义表单校验 -->
-				<uni-forms ref="customForm" :rules="customRules" :modelValue="form">
-					<uni-forms-item label="企业名称" required name="enterpriseName">
-						<uni-easyinput v-model="form.enterpriseName" placeholder="请输入企业名称" />
-					</uni-forms-item>
-					<uni-forms-item label="法人姓名" required name="legalName">
-						<uni-easyinput v-model="form.legalName" placeholder="请输入法人姓名" />
-					</uni-forms-item>
-					<uni-forms-item label="联系电话" required name="phone">
-						<uni-easyinput v-model="form.phone" placeholder="请输入联系电话" />
-					</uni-forms-item>
-					<uni-forms-item label="证照信息" required name="path">
-						<upload :imgArr="imageList" name="path" v-model="form.path" :fileSize="1" :limit="3" @updateImg="updateImg"></upload>
-					</uni-forms-item>
-				</uni-forms>
-				<button type="primary" @click="submitForm('customForm')">提交</button>
-			</view>
-		</uni-section>
+    <uni-section title="官方认证" type="line">
+        <view class="example">
+            <!-- 自定义表单校验 -->
+            <uni-forms ref="customForm" :rules="customRules" :modelValue="form">
+                <uni-forms-item label="企业名称" required name="enterpriseName">
+                    <uni-easyinput v-model="form.enterpriseName" placeholder="请输入企业名称" maxlength="20"/>
+                </uni-forms-item>
+                <uni-forms-item label="法人姓名" required name="legalName">
+                    <uni-easyinput v-model="form.legalName" placeholder="请输入法人姓名" maxlength="20"/>
+                </uni-forms-item>
+                <uni-forms-item label="联系电话" required name="phone">
+                    <uni-easyinput v-model="form.phone" placeholder="请输入联系电话" maxlength="13"/>
+                </uni-forms-item>
+                <uni-forms-item label="证照信息" required name="path">
+                    <upload :imgArr="imageList" name="path" v-model="form.path" :fileSize="1" :limit="3"
+                            @updateImg="updateImg"></upload>
+                </uni-forms-item>
+            </uni-forms>
+            <button type="primary" @click="submitForm('customForm')">提交</button>
+        </view>
+    </uni-section>
 </template>
 
 <script>
-import upload from '../../components/upload/index.vue'
-import {appletAdd} from '@/api/me/officialAuthentication.js'
-export default {
-	components: {
-		upload
-	},
-	onReady() {
-		// 设置自定义表单校验规则,必须在节点渲染完毕后执行
-		this.$refs.customForm.setRules(this.customRules)
-	},
-	data() {
-		return{
-			form:{
-				
-			},
-			// 表单校验
-			customRules: {
-				name: {
-					rules: [{
-						required: true,
-						errorMessage: '姓名不能为空'
-					}]
-				},
-			},
-			imageList:[]
-		}
-	},
-	methods: {
-	    // 取消按钮
-	    cancel() {
-	      this.open = false;
-	      this.reset();
-	    },
-	    /** 提交按钮 */
-	    submitForm(e) {
-			console.log("11111")
-			this.$refs[e].validate().then(res => {
-				console.log('success', res);
-				uni.showToast({
-				  title: `校验通过`
-				})
-			  }).catch(err => {
-				console.log('err', err);
-			})
-			let path = this.imageList.join(',');
-			this.form.path = path
-			appletAdd(this.form).then(res =>{})
-	    },
-		updateImg(imgList){
-			this.imageList = imgList;
-		}
-	}
-};
+    import upload from '../../components/upload/index.vue'
+    import {appletAdd} from '@/api/me/officialAuthentication.js'
+
+    export default {
+        components: {
+            upload
+        },
+        onReady() {
+            // 设置自定义表单校验规则,必须在节点渲染完毕后执行
+            this.$refs.customForm.setRules(this.customRules)
+        },
+        data() {
+            return {
+                form: {},
+                // 表单校验
+                customRules: {
+                    enterpriseName: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '企业名称不能为空'
+                        }]
+                    },
+                    legalName: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '法人姓名不能为空'
+                        }]
+                    },
+                    phone: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '联系电话不能为空'
+                        },
+						{
+						  pattern:'^1[3456789]\\d{9}$',
+						  errorMessage: '请填写正确的手机号'
+						}]
+                    },
+                    path: {
+                        rules: [{
+                            required: true,
+                            errorMessage: '证照信息不能为空'
+                        }]
+                    },
+                },
+                imageList: []
+            }
+        },
+        methods: {
+            // 取消按钮
+            cancel() {
+                this.open = false;
+                this.reset();
+            },
+            /** 提交按钮 */
+            submitForm(e) {
+                this.$refs[e].validate().then(res => {
+					appletAdd(this.form).then(res => {
+						uni.navigateBack();
+					})
+                }).catch(err => {
+                    console.log('err', err);
+                })
+            },
+            updateImg(imgList) {
+                this.imageList = imgList;
+                this.form.path = this.imageList.join(',');
+            }
+        }
+    };
 </script>
 
 <style>

+ 161 - 0
pages/myPayKnow/informationDetail.css

@@ -0,0 +1,161 @@
+/* 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 {
+	width: 100vw;
+    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;
+}

+ 233 - 0
pages/myPayKnow/informationDetail.vue

@@ -0,0 +1,233 @@
+<template>
+    <view>
+        <!-- pages/me.wxml -->
+        <view class="container">
+            <h1 class="title">{{ detailInfo.titleName }}</h1>
+            <view class="wenzhangLy">
+                <!-- 头像昵称 -->
+                <!-- <view class="txTime"> -->
+                    <!-- <image :src="loadImgSrc(detailInfo.headImg!=null?detailInfo.headImg:'/profile/upload/2024/03/05/abf969632ee94bd5a429c8c2dbb2f6b4 (1)_20240305092823A002.png')" style="border-radius: 50px;"></image> -->
+                    <!-- <view class="time">
+                        <p>{{detailInfo.nickName?detailInfo.nickName:'网友'}}</p>
+                        <span>{{ detailInfo.createTime }}</span>
+                    </view> -->
+                <!-- </view> -->
+                <!-- 积分 -->
+<!--                <span class="jf">100</span> -->
+            </view>
+            <view class="wenzhangCont article">
+                <span v-html="detailInfo.textDetails">
+                </span>
+
+                <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)"  style="background-size: 100% 100%;"></image></swiper-item>
+                        </block>
+                    </swiper>
+                </view>
+            </view>
+
+
+        </view>
+	</view>
+</template>
+
+<script>
+export default {
+    data() {
+        return {
+			anwserVal:'',
+			anwserList:[
+				{
+					deptName:'国家乡村振兴局',
+					updateTime:'2023-2-27 16:04',
+					desc:'用好政策效果评估成果,进一步优化巩固拓展脱贫攻坚成果同乡村振兴有效衔接政策供给,为推动工作提质增效提供有力支撑保障。',
+				}
+			],
+			isCollection:false,
+			isAdopt:false,
+			adoptTopSize:'115',
+			adoptIndex:null,
+			detailInfo:{},
+        };
+    },
+	methods: {
+		// 评论回答
+		answerFunc(){
+			this.anwserList.push({
+				deptName:'国家烟草局',
+				updateTime:new Date().getFullYear() + "-" + new Date().getMonth() + "-" + new Date().getDay() + " " + (new Date().getHours() < 10 ? "0" + new Date().getHours() : new Date().getHours()) + ':' + (new Date().getMinutes() < 10 ? "0" + new Date().getMinutes() : new Date().getMinutes()),
+				desc:this.anwserVal,
+			})
+			this.anwserVal = null
+		},
+		adoptFunc(idx){
+			this.adoptIndex = idx
+			this.isAdopt = true
+		},
+		// 标记喜欢
+		collectionFunc(){
+			this.isCollection = !this.isCollection
+		}
+	}
+    /**
+     * 生命周期函数--监听页面加载
+     */,
+    onLoad(options) {
+		 this.detailInfo = JSON.parse(options.obj)
+	  },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady(e) {
+	},
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {},
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {},
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {},
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {},
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {},
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {},
+};
+</script>
+<style lang="scss">
+@import './informationDetail.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>

+ 103 - 0
pages/myPayKnow/myPayKnow.css

@@ -0,0 +1,103 @@
+/* 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%;
+    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;
+}

+ 100 - 0
pages/myPayKnow/myPayKnow.vue

@@ -0,0 +1,100 @@
+<template>
+    <!-- pages/fuwu/fuwu.wxml -->
+    <view class="container">
+        <view class="rnwdList" @tap="goDetails(item)" v-for="(item, index) in wb" :key="index">
+            <span class="lb">{{ item.popular == '1' ? '热门' : '非热门' }}</span>
+
+            <view class="list">
+                <span class="listTitle">{{ item.titleName }}</span>
+                <view class="jlSj">
+                    <span class="jf">
+                        {{ item.updateTime || item.createTime }}
+                    </span>
+                    <view class="ck">
+                       <span class="jf">
+                           {{ item.integral }}
+                           <em class="iconfont icon-jifen"></em>
+                       </span>
+                        <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>
+</template>
+
+<script>
+	import {myPayKnow} from '@/api/me/me.js'
+	
+export default {
+    data() {
+        return {
+			query:{
+				pageSize:10,
+				pageNum:1,
+				createId:null
+			},
+            wb: [],
+			total:0
+        };
+    }
+    /**
+     * 生命周期函数--监听页面加载
+     */,
+	 onReachBottom(){
+	 	let pageNum = this.query.pageNum
+	 	let pageSize = this.query.pageSize
+	 	let total = this.total
+	 	if(pageNum*pageSize >= total){
+	 		uni.showToast({
+	 			title:'暂无更多数据'
+	 		})
+	 		return
+	 	} else {
+	 		this.query.pageNum += 1;
+	 		this.getlist()
+	 	}
+	 },
+	 onPullDownRefresh() {
+	   this.query.pageNum = 1;
+	   this.wb = [];
+	   this.getlist()
+	 },
+    onLoad(options) {
+		// this.query.createId = getApp().globalData.userId
+		this.query.createId = '1763382026214764546'
+		this.getlist()
+    },
+    methods: {
+		getlist(){
+			myPayKnow(this.query).then(res=>{
+				this.wb = [...this.wb,...res.rows]
+				this.total = res.total
+			})
+			uni.stopPullDownRefresh();
+		},
+        goSanNong() {
+            uni.navigateTo({
+                url: '/pages/sannong/sannong'
+            });
+        },
+
+        goDetails(item) {
+			if(item==null) return;
+            uni.navigateTo({
+                url: '/pages/myPayKnow/informationDetail?obj='+ JSON.stringify(item)
+            });
+        }
+    }
+};
+</script>
+<style>
+@import './myPayKnow.css';
+</style>

+ 136 - 0
pages/psychology/psychology.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/psychology/psychology.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/psychology/psychology.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/psychologyDetail/psychologyDetails?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 './psychology.css';
+</style>

+ 160 - 0
pages/psychologyDetail/psychologyDetails.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/psychologyDetail/psychologyDetails.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 article">
+				<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/psychology/psychology.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 './psychologyDetails.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>

+ 61 - 11
pages/quotations/quotations.vue

@@ -15,12 +15,15 @@
     <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="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.area+item.address }}
+          </uni-td>
           <uni-td align="center">{{ item.productName }}
           </uni-td>
           <uni-td align="center">
@@ -32,6 +35,7 @@
           </uni-td>
         </uni-tr>
       </uni-table>
+      <uni-load-more :status="status" :content-text="contentText"/>
       <uni-fab ref="fab" :horizontal="right" :vertical="bottom"
                @fabClick="fabClick()"/>
     </view>
@@ -64,31 +68,74 @@ export default {
       ],
       //查询参数
       queryParams: {
-        // pageNum: 1,
-        // pageSize: 10,
+        pageNum: 1,
+        pageSize: 15,
         id: null,
+        status:"1",
+      },
+      //加载更多
+      status: 'more',
+      contentText: {
+        contentdown: '查看更多',
+        contentrefresh: '加载中',
+        contentnomore: '没有更多'
       },
+
       //表单数据
       form: {},
       imageList: []
     }
   },
-  created() {
+  onPullDownRefresh() {
+    this.queryParams.pageNum = 1;
+    this.quotationsList = [];
+    this.getList()
+  },
+  //上拉加载
+  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()
+  	}
+  },
+  onLoad() {
     this.getList();
   },
   methods: {
     getList(row) {
       // 这里是获取列表的方法
-      listQuotations().then(response => {
-        this.quotationsList = response.rows.map(item => {
-          let date = new Date(item.createTime);
-          item.createTime = date.toLocaleDateString('zh-CN', {dateStyle: 'short'});
-          return item;
-        });
+      listQuotations(this.queryParams).then(response => {
+        if (this.queryParams.pageNum === 1) {
+          this.quotationsList = this.dataFormat(response.rows)
+        } else {
+          this.quotationsList = this.quotationsList.concat(this.dataFormat(response.rows));
+        }
+        // 判断是否还有更多数据
+        if (response.rows.length < this.queryParams.pageSize) {
+          this.status = 'noMore'; // 没有更多数据
+        } else {
+          this.status = 'more'; // 还有更多数据
+        }
       });
       //获取分类树的方法
       listConfig().then(response => {
-        this.categories = response.data.quotations;
+        this.categories = response.data.quotations.filter(item => item.homeDisplay === "1");
+      });
+      uni.stopPullDownRefresh();
+    },
+    dataFormat(rows) {
+      return rows.map(item => {
+        let date = new Date(item.createTime);
+        item.createTime = date.toLocaleDateString('zh-CN', {dateStyle: 'short'});
+        return item;
       });
     },
     //根据分类id查询列表
@@ -123,13 +170,16 @@ export default {
   flex-direction: column;
   align-items: center;
   justify-content: center;
-  padding: 0px 0;
+  padding: 0 0;
 }
 
 .image {
   height: 100%;
   width: 100%;
 }
+.uni-container{
+  align-items: center;
+}
 
 
 </style>

+ 9 - 11
pages/quotations/quotationsForm.vue

@@ -66,18 +66,16 @@ export default {
           }]
         },
         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;
+          rules: [
+            {
+              required: true,
+              errorMessage: '手机号码不能为空'
+            },
+            {
+              pattern:'^1[3456789]\\d{9}$',
+              errorMessage: '手机号不合法'
             }
-          }]
+          ]
         },
         address: {
           rules: [{

+ 39 - 21
pages/quotations/quotationsSecond.vue

@@ -32,8 +32,6 @@
           </uni-td>
         </uni-tr>
       </uni-table>
-      <uni-fab ref="fab" :horizontal="right" :vertical="bottom"
-               @fabClick="fabClick()"/>
     </view>
   </view>
 </template>
@@ -64,11 +62,11 @@ export default {
       quotationsList: [
         // 这里是列表的数据
       ],
-      //查询参数
       queryParams: {
-        // pageNum: 1,
-        // pageSize: 10,
+        pageNum: 1,
+        pageSize: 15,
         id: null,
+        type: null,
       },
       //表单数据
       form: {},
@@ -77,6 +75,19 @@ export default {
       imageList: []
     }
   },
+  onPullDownRefresh() {
+    this.queryParams.pageNum = 1;
+    this.quotationsList = [];
+    this.getList()
+  },
+  //上拉加载
+  onReachBottom() {
+    if (this.status === 'noMore') {
+      return;
+    }
+    this.queryParams.pageNum++;
+    this.getList();
+  },
   onLoad(e) {
     this.FatherType = e.type;
     this.getList();
@@ -84,23 +95,36 @@ export default {
   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.queryParams.type = this.FatherType
+      listQuotations(this.queryParams).then(response => {
+        if (this.queryParams.pageNum === 1) {
+          this.quotationsList = this.dataFormat(response.rows)
+        } else {
+          this.quotationsList = this.quotationsList.concat(this.dataFormat(response.rows));
+        }
+        // 判断是否还有更多数据
+        if (response.rows.length < this.queryParams.pageSize) {
+          this.status = 'noMore'; // 没有更多数据
+        } else {
+          this.status = 'more'; // 还有更多数据
+        }
       });
       this.forms.parentId = this.FatherType
       //获取分类树的方法
       QuotationsList(this.forms).then(response => {
         //取出response.rows中所有homeDisplay为1的数据
-        this.categories = response.rows.filter(item => item.homeDisplay === 1);
+        this.categories = response.rows
+      });
+      uni.stopPullDownRefresh();
+    },
+    //格式化时间
+    dataFormat(rows) {
+      return rows.map(item => {
+        let date = new Date(item.createTime);
+        item.createTime = date.toLocaleDateString('zh-CN', {dateStyle: 'short'});
+        return item;
       });
     },
-    //递归查询分类的父级
-
     //根据分类id查询列表
     change(e) {
       this.queryParams.type = e.detail.index;
@@ -112,12 +136,6 @@ export default {
         });
       });
     },
-    //悬浮按钮点击事件
-    fabClick() {
-      uni.navigateTo({
-        url: '../quotations/quotationsForm'
-      });
-    },
     updateImg(imgList) {
       this.imageList = imgList;
     }

+ 2 - 2
pages/toGovernmentList/toGovernmentList.vue

@@ -35,8 +35,8 @@
 
 	           <view class="jlSj">
 	                <span class="jf">
-	                   <!-- {{ item.jf }}
-	                    <em class="iconfont icon-jifen"></em> -->
+	                   {{ item.updateTime || item.createTime }}
+	                    <!-- <em class="iconfont icon-jifen"></em> -->
 	                </span>
 	                <view class="ck">
 	                    <!-- <span>

+ 10 - 5
pages/topic/topic.vue

@@ -5,10 +5,10 @@
 			</button>
 		</view>
 		<view>
-			<uni-grid :column="2" :square="false" :highlight="false">
-				<uni-grid-item v-for="(item, index) in dataList" :index="index" :key="index">
-					<view class="grid-item-box">
-						<text class="text">{{ item.deptName }}</text>
+			<uni-grid :column="2" :square="false" :highlight="false" >
+				<uni-grid-item v-for="(item, index) in dataList" :index="index" :key="index" >
+					<view class="grid-item-box" @click="onMatters(item)">
+						<text class="text" >{{ item.deptName }}</text>
 					</view>
 				</uni-grid-item>
 			</uni-grid>
@@ -38,7 +38,12 @@
 			this.getdataList()//初始化数据
 		},
 		methods: {
-			
+			onMatters(data){
+				uni.setStorageSync('data', {type:data.deptName,examine:1})
+				uni.navigateTo({
+					url: '/pages/matterAll/matterAll',
+				});
+			},
 			getdataList(data){
 				let _that = this
 				if (!data) {

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

+ 110 - 0
pages/travelGuide/travelGuide.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/travelGuide/travelGuide.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/travelGuideDetails/travelGuideDetails?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 './travelGuide.css';
+</style>

+ 160 - 0
pages/travelGuideDetails/travelGuideDetails.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/travelGuideDetails/travelGuideDetails.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/travelGuide/travelGuide.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 './travelGuideDetails.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>