zouling 1 年之前
父節點
當前提交
abc14c8441
共有 54 個文件被更改,包括 5957 次插入543 次删除
  1. 15 0
      api/mine/case.js
  2. 69 2
      api/mine/meeting.js
  3. 15 0
      api/mine/news.js
  4. 17 1
      api/mine/report.js
  5. 153 0
      api/mine/sqmyInfo.js
  6. 17 11
      components/footer/footer.vue
  7. 37 6
      components/notice/list.vue
  8. 1 1
      components/popup/popup.vue
  9. 1 1
      config.js
  10. 3 9
      manifest.json
  11. 77 1
      pages.json
  12. 141 121
      pages/index/index.vue
  13. 3 3
      pages/mine/index.vue
  14. 49 2
      pages/notice/index.vue
  15. 478 33
      pages/report/index.vue
  16. 7 2
      static/style.css
  17. 1 0
      store/getters.js
  18. 9 0
      store/modules/user.js
  19. 1 0
      utils/constant.js
  20. 1 1
      utils/storage.js
  21. 169 62
      work/components/meeting/list.vue
  22. 6 4
      work/components/news/list.vue
  23. 39 17
      work/components/popup/popup.vue
  24. 82 10
      work/components/report/list.vue
  25. 301 0
      work/components/sqmyInfo/list.vue
  26. 11 2
      work/components/zb-table/zb-tables.vue
  27. 20 19
      work/pages/case/add.vue
  28. 25 3
      work/pages/case/details.vue
  29. 46 12
      work/pages/case/mine.vue
  30. 283 0
      work/pages/meeting/activedetails.vue
  31. 170 13
      work/pages/meeting/add.vue
  32. 491 0
      work/pages/meeting/addactive.vue
  33. 37 16
      work/pages/meeting/addspeak.vue
  34. 284 0
      work/pages/meeting/details.vue
  35. 133 32
      work/pages/meeting/list.vue
  36. 155 54
      work/pages/meeting/people.vue
  37. 47 31
      work/pages/meeting/readdetail.vue
  38. 3 3
      work/pages/meeting/signin.vue
  39. 266 0
      work/pages/meeting/speakdetails.vue
  40. 48 13
      work/pages/news/add.vue
  41. 250 0
      work/pages/news/detail.vue
  42. 24 9
      work/pages/news/list.vue
  43. 7 0
      work/pages/report/addscore.vue
  44. 26 5
      work/pages/report/details.vue
  45. 0 0
      work/pages/report/index.vue
  46. 30 5
      work/pages/report/info.vue
  47. 44 2
      work/pages/report/mineinfo.vue
  48. 125 37
      work/pages/report/report.vue
  49. 546 0
      work/pages/sqmyInfo/add.vue
  50. 569 0
      work/pages/sqmyInfo/details.vue
  51. 625 0
      work/pages/sqmyInfo/mine.vue
  52. 二進制
      work/static/images/lwico.png
  53. 二進制
      work/static/images/lwup.png
  54. 二進制
      work/static/images/sxicon.png

+ 15 - 0
api/mine/case.js

@@ -150,4 +150,19 @@ export function getInfourgeFn(data) {
     'method': 'post',
 	'data':data
   })
+}
+//政府催办-列表zxUrge:urge:list
+export function geturgeListFn(data) {
+  return request({
+    'url': '/zxUrge/urge/list',
+    'method': 'get',
+	'data':data
+  })
+}
+//催办zxUrge:urge:query
+export function geturgeDetailFn(data) {
+  return request({
+    'url': '/zxUrge/urge/'+data,
+    'method': 'get',
+  })
 }

+ 69 - 2
api/mine/meeting.js

@@ -18,8 +18,9 @@ export function getMeetListNopageFn(data) {
 // 会议活动-详情 zxConference:conference:query
 export function getMeetDetaiFn(data) {
   return request({
-    'url': '/zxConference/conference/'+data,
-    'method': 'get',
+    'url': '/zxConference/conference/info',
+    'method': 'post',
+	'data':data
   })
 }
 // 会议活动-新增 zxConference:conference:query
@@ -38,6 +39,13 @@ export function getMeetEditFn(data) {
 	'data':data
   })
 }
+// 会议活动-删除 zxConference:conference:remove
+export function getMeetDelFn(data) {
+  return request({
+    'url': '/zxConference/conference/delete/'+data,
+    'method': 'get',
+  })
+}
 //会议活动人员-详情zxConference:conference:getUserInfo
 export function getMeetPeoListFn(data) {
   return request({
@@ -51,6 +59,7 @@ export function getInfotreeSelectFn(data) {
   return request({
     'url': '/member/info/treeSelect',
     'method': 'get',
+	'data':data
   })
 }
 // 政协发言-列表 zx:speak:list
@@ -99,6 +108,64 @@ export function getupdateReplyFn(data) {
 	'data':data
   })
 }
+
+
+// 政协活动-列表 zxActivity:activity:list
+export function getzxActivityListFn(data) {
+  return request({
+    'url': '/zxActivity/activity/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 政协活动-新增 zxActivity:activity:add
+export function getzxActivityAddFn(data) {
+  return request({
+    'url': '/zxActivity/activity',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协活动-修改 zxActivity:activity:edit
+export function getzxActivityEditFn(data) {
+  return request({
+    'url': '/zxActivity/activity/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协活动-删除 zxActivity:activity:remove
+export function getzxActivityDelFn(data) {
+  return request({
+    'url': '/zxActivity/activity/delete/'+data,
+    'method': 'get',
+  })
+}
+// 政协活动-详情 zxActivity:activity:query
+export function getzxActivityDetailFn(data) {
+  return request({
+    'url': '/zxActivity/activity/info',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协活动-修改活动答复信息 zxActivity:activity:updateReply
+export function getzxActivityReplyFn(data) {
+  return request({
+    'url': '/zxActivity/activity/updateReply',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协活动人员-详情zxActivity:activity:getUserInfo
+export function getzxActivityPeoFn(data) {
+  return request({
+    'url': '/zxActivity/activity/getUserInfo',
+    'method': 'post',
+	'data':data
+  })
+}
+
 // 会议通知-列表 zxConference:conference:list
 // export function getMeetListFn(data) {
 //   return request({

+ 15 - 0
api/mine/news.js

@@ -21,4 +21,19 @@ export function getNoticeDetail(data) {
     'url': '/zxNotice/notice/'+data,
     'method': 'get',
   })
+}
+// 消息通知-修改zxNotice:notice:edit
+export function getNoticeEdit(data) {
+  return request({
+    'url': '/zxNotice/notice/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 消息通知-删除zxNotice:notice:remove
+export function getNoticeDel(data) {
+  return request({
+    'url': '/zxNotice/notice/delete/'+data,
+    'method': 'get',
+  })
 }

+ 17 - 1
api/mine/report.js

@@ -11,7 +11,15 @@ export function getInfojopList(data) {
 export function getInfojopDetai(data) {
   return request({
     'url': '/member/info/getInfoJop',
-    'method': 'get',
+    'method': 'post',
+	'data':data
+  })
+}
+// 履职信息-年度报告member:info:MemberReport
+export function getInfomenberDetai(data) {
+  return request({
+    'url': '/member/info/getMemberReport',
+    'method': 'post',
 	'data':data
   })
 }
@@ -83,3 +91,11 @@ export function getBonusDelFn(data) {
     'method': 'get',
   })
 }
+// 手动更新所有委员分数,排名member:info:assessmentScore
+export function getinfoScoreFn(data) {
+  return request({
+    'url': '/member/info/assessmentScore',
+    'method': 'post',
+	'data':data
+  })
+}

+ 153 - 0
api/mine/sqmyInfo.js

@@ -0,0 +1,153 @@
+import request from '@/utils/request'
+// 提案信息-新增 sqmyInfo:info:add
+export function getsqmyInfoAddFn(data) {
+  return request({
+    'url': '/sqmyInfo/info',
+    'method': 'post',
+	'data':data
+  })
+}
+// 提案信息-列表 sqmyInfo:info:list
+export function getsqmyInfoListFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 提案信息-详情 sqmyInfo:info:query
+export function getsqmyInfoDetailFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/'+data,
+    'method': 'get',
+  })
+}
+// 提案信息-修改 sqmyInfo:info:edit
+export function getsqmyInfoEditFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 提案信息-删除 sqmyInfo:info:query
+export function getsqmyInfoDelFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/delete/'+data,
+    'method': 'get',
+  })
+}
+// 提案信息-类别
+export function getCasetalbFn(data) {
+  return request({
+    'url': '/category/proposal/categoryTree',
+    'method': 'get',
+	'data':data
+  })
+}
+// 提案人员 委员信息-列表不分页member:info:listNoPage
+export function getInfoListFn(data) {
+  return request({
+    'url': '/member/info/listNoPage',
+    'method': 'get',
+	'data':data
+  })
+}
+// 是否立案sqmyInfo:info:isRecord
+export function getsqmyInfoisRecordFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/isRecord',
+    'method': 'post',
+	'data':data
+  })
+}
+// 提案交办sqmyInfo:info:assign
+export function getsqmyInfoAssignFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/assign',
+    'method': 'post',
+	'data':data
+  })
+}
+// 单位答复sqmy:unit:reply
+export function getsqmyReplyFn(data) {
+  return request({
+    'url': '/sqmy/unit/reply',
+    'method': 'post',
+	'data':data
+  })
+}
+// 办结审核sqmyInfo:info:assignsh
+export function getsqmyInfoShFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/assignsh',
+    'method': 'post',
+	'data':data
+  })
+}
+// 委员意见sqmyInfo:info:idea
+export function getsqmyInfoIdeaFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/idea',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协意见sqmyInfo:info:zxIdea
+export function getsqmyInfozxIdeaFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/zxIdea',
+    'method': 'post',
+	'data':data
+  })
+}
+
+
+// 推荐重点sqmyInfo:info:keyPoint
+export function getsqmyInfokeyPointFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/keyPoint',
+    'method': 'post',
+	'data':data
+  })
+}
+// 推荐优秀sqmyInfo:info:outstanding
+export function getsqmyInfooutstandingFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/outstanding',
+    'method': 'post',
+	'data':data
+  })
+}
+//联名提案信息列表proposalInfo:info:jointlyList
+// export function getInfojointlyListFn(data) {
+//   return request({
+//     'url': '/proposalInfo/info/jointlyList',
+//     'method': 'get',
+// 	'data':data
+//   })
+// }
+//联名确认proposal:user:verify
+// export function getUserverifyFn(data) {
+//   return request({
+//     'url': '/proposal/user/verify',
+//     'method': 'post',
+// 	'data':data
+//   })
+// }
+//社情民意-承办单位信息列表proposalInfo:info:unitList
+export function getInfounitListFn(data) {
+  return request({
+    'url': '/sqmyInfo/info/unitList',
+    'method': 'get',
+	'data':data
+  })
+}
+//催办zxUrge:urge:add
+export function getInfourgeFn(data) {
+  return request({
+    'url': '/zxUrge/urge',
+    'method': 'post',
+	'data':data
+  })
+}

+ 17 - 11
components/footer/footer.vue

@@ -4,20 +4,24 @@
 	
 	<view style="height: 100rpx;"></view>
     <view class="com_footer">
-        <view class="in_item" v-for="(item,k) in footlist" :key="k" @click="gotopage(item)">
-			<view class="im_imgs">
-				<image class="in_img" :class="item.img" v-if="active == item.module" :src="item.icon_checked" mode="scaleToFill"></image>
-				<image class="in_img" :class="item.img" v-else :src="item.icon_nochecked" mode="scaleToFill"></image>
+		<block v-for="(item,k) in footlist" :key="k" >
+			<view class="in_item" v-if="!item.limit||item.limit&&checkPermi([item.limit])"  @click="gotopage(item)">
+				<view class="im_imgs">
+					<image class="in_img" :class="item.img" v-if="active == item.module" :src="item.icon_checked" mode="scaleToFill"></image>
+					<image class="in_img" :class="item.img" v-else :src="item.icon_nochecked" mode="scaleToFill"></image>
+				</view>
+				
+				<view class="in_txt" v-if="active == item.module" :style="'color: #'+color_checked">{{item.title}}</view>
+				<view class="in_txt" v-else :style="'color: #'+color_nochecked">{{item.title}}</view>
 			</view>
-			
-			<view class="in_txt" v-if="active == item.module" :style="'color: #'+color_checked">{{item.title}}</view>
-			<view class="in_txt" v-else :style="'color: #'+color_nochecked">{{item.title}}</view>
-        </view>
+		</block>
+       
     </view>
 	</view>
 </template>
 
 <script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	// import api from '../../api/api.js'
 	// import plugins from '../../commen/js/plugin.js'
     export default {
@@ -33,8 +37,8 @@
 				active :'',
 				footlist:[
 					{module:'home',title:'潜山政协',img:"imga",icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
-					{module:'report',title:'履职报告',img:"imgb",icon_checked:require('@/static/images/tabbar/report_.png'),icon_nochecked:require('@/static/images/tabbar/report.png')},
-					{module:'notice',title:'会议通知',img:"imgc",icon_checked:require('@/static/images/tabbar/notice_.png'),icon_nochecked:require('@/static/images/tabbar/notice.png')},
+					{module:'report',title:'履职报告',img:"imgb",icon_checked:require('@/static/images/tabbar/report_.png'),icon_nochecked:require('@/static/images/tabbar/report.png'),limit:"member:info:MemberReport"},
+					{module:'notice',title:'会议通知',img:"imgc",icon_checked:require('@/static/images/tabbar/notice_.png'),icon_nochecked:require('@/static/images/tabbar/notice.png'),limit:"zxConference:conference:list"},
 					{module:'mine',title:'个人中心',img:"imgd",icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
 					],
 				color_checked :'222327',
@@ -46,6 +50,7 @@
 			this.active = this.footerindex;
 		},
         methods:{
+			checkPermi, checkRole,
             // 跳转底部导航页面
 			gotopage(e){
 				var that = this;
@@ -53,7 +58,8 @@
 				if(module == 'home'){
 					this.$tab.reLaunch('/pages/index/index')
 				}else if(module == 'report'){
-					this.$tab.reLaunch('/pages/report/index')
+					var id=this.$store.state.user.userId
+					this.$tab.reLaunch('/pages/report/index?id='+id)
 				}else if(module == 'notice'){
 					this.$tab.reLaunch('/pages/notice/index')
 				}else if(module == 'mine'){

+ 37 - 6
components/notice/list.vue

@@ -3,7 +3,7 @@
 	<view v-if="datalist.length>0">
 		<!-- 新闻 -->
 		<block v-if="type==1">
-			<view class="nlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
+			<view class="nlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.categoryId)">
 				<!-- 置顶 -->
 				<!-- <block v-if="ite.isTop">
 					<view class="nrbox">
@@ -12,15 +12,31 @@
 					</view>
 					<image :src="ite.img" class="titimg"></image>
 				</block> -->
-				<view class="tit overtwo">{{ite.tit}}</view>
+				<view class="tit overtwo">{{ite.title}}</view>
 				<view class="txt flexcj mb10">
 					<view class="flex0 label">案号</view>
-					<view class="txts">22</view>
-					<view class="btns">已立案</view>
+					<view class="txts">{{ite.proposalNumber}}</view>
+					<view class="btns">{{kaType(ite.proposalProgress,tajdlist)}}</view>
 				</view>
 				<view class="txt flexcj">
 					<view class="flex0 label">提案类别</view>
-					<view class="txts">社会建设类/教育事业</view>
+					<view class="txts">{{ite.categoryName}}</view>
+					<view class="flex0 ml6">{{ite.createTime}}</view>
+				</view>
+			</view>
+		</block>
+		<!--  -->
+		<block v-if="type==2">
+			<view class="nlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
+				<view class="tit overtwo">{{ite.title}}</view>
+				<view class="txt flexcj mb10">
+					<view class="flex0 label">案号</view>
+					<view class="txts">{{ite.sqmyNumber}}</view>
+					<view class="btns">{{kaType(ite.sqmyProgress,tajdlist)}}</view>
+				</view>
+				<view class="txt flexcj">
+					<view class="flex0 label">主题类型</view>
+					<view class="txts">{{kaType(ite.topicType,tajdlist)}}</view>
 					<view class="flex0 ml6">{{ite.time}}</view>
 				</view>
 			</view>
@@ -34,7 +50,7 @@
 </template>
 
 <script>
-	import { selectDictValue } from '@/utils/common.js';
+	import { selectValue } from '@/utils/common.js';
 	import noData from "@/components/nodata/nodata.vue"
   export default {
 	props:{
@@ -56,6 +72,18 @@
 				return ''
 			}
 		},
+		tajdlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		ztlxlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		}
 	},
 	components:{
 		noData
@@ -68,6 +96,9 @@
 	onLoad: function() {
 	},
 	methods:{
+		kaType(ite,list){
+			return selectValue(list, ite);
+		},
 		getDetail(e){
 			this.$emit('getDetail',e)
 		},

+ 1 - 1
components/popup/popup.vue

@@ -16,7 +16,7 @@
 			</view>
 		</view>
 		<!-- 暂存提案的弹窗 -->
-		<view class="fixedbox" v-if="type=='zcta'||type=='zchy'">
+		<view class="fixedbox" v-if="type=='zcta'||type=='zchy'||type=='sqmy'">
 			<view class="ttit">提示</view>
 			<view  class="boxs">
 				<view class="ztit">您有一条暂存信息还未提交</view>

+ 1 - 1
config.js

@@ -3,7 +3,7 @@ module.exports = {
   // baseUrl: 'https://vue.ruoyi.vip/prod-api',
   // baseUrl: 'https://lyyy.qs163.cn/prod-api',
   baseUrl: 'http://192.168.101.168:8055',
-  // baseUrl: 'http://192.168.101.11:8055',
+  // baseUrl: 'http://192.168.101.245:8055',
   // baseUrlimg: 'http://114.99.127.243:2001',
   Clientid:'428a8310cd442757ae699df5d894f051',//
  // https://xygl.cnzxy.cn h5链接地址

+ 3 - 9
manifest.json

@@ -18,8 +18,7 @@
             "delay" : 0
         },
         "modules" : {
-            "Geolocation" : {},
-            "Speech" : {}
+            "Geolocation" : {}
         },
         "distribute" : {
             "android" : {
@@ -63,13 +62,8 @@
                         "appkey_android" : "b85f0c64b3c9a082d740912cf3019c88"
                     }
                 },
-                "speech" : {
-                    "baidu" : {
-                        "appid" : "",
-                        "apikey" : "",
-                        "secretkey" : ""
-                    }
-                }
+                "speech" : {},
+                "push" : {}
             },
             "icons" : {
                 "android" : {

+ 77 - 1
pages.json

@@ -140,7 +140,7 @@
 			{
 				"path": "pages/case/mine",
 				"style": {
-					"navigationBarTitleText": "我的提案",
+					"navigationBarTitleText": "政协提案",
 					"navigationBarBackgroundColor": "#1D64E2",
 					"navigationBarTextStyle": "white",
 					"navigationStyle": "custom",
@@ -165,6 +165,37 @@
 					"h5":{"titleNView":false}
 				}
 			},
+			
+			
+			{
+				"path": "pages/sqmyInfo/add",
+				"style": {
+					"navigationBarTitleText": "提交社情民意",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/sqmyInfo/mine",
+				"style": {
+					"navigationBarTitleText": "社情民意",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"navigationStyle": "custom",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/sqmyInfo/details",
+				"style": {
+					"navigationBarTitleText": "社情民意详情",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			
 			{
 				"path": "pages/news/add",
 				"style": {
@@ -174,6 +205,15 @@
 					"h5":{"titleNView":false}
 				}
 			},
+			{
+				"path": "pages/news/detail",
+				"style": {
+					"navigationBarTitleText": "通知详情",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
 			{
 				"path": "pages/news/list",
 				"style": {
@@ -212,6 +252,42 @@
 					"h5":{"titleNView":false}
 				}
 			},
+			{
+				"path": "pages/meeting/details",
+				"style": {
+					"navigationBarTitleText": "会议详情",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/speakdetails",
+				"style": {
+					"navigationBarTitleText": "发言详情",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/activedetails",
+				"style": {
+					"navigationBarTitleText": "活动详情",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/addactive",
+				"style": {
+					"navigationBarTitleText": "创建活动",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
 			{
 				"path": "pages/meeting/addspeak",
 				"style": {

+ 141 - 121
pages/index/index.vue

@@ -23,13 +23,13 @@
 						</view>
 						<view class="tit">提交提案</view>
 					</view>
-					<view class="htop" v-if="checkPermi(['sqmyInfo:info:add'])">
+					<view class="htop" @click="getAddsqmy" v-if="checkPermi(['sqmyInfo:info:add'])">
 						<view class="imgs">
 							<image :src="htopb" class="imgb"></image>
 						</view>
 						<view class="tit">上报社情民意</view>
 					</view>
-					<view class="htop" v-if="checkPermi(['member:info:list'])">
+					<view class="htop" @click="getAddlzda" v-if="checkPermi(['member:info:MemberReport'])">
 						<view class="imgs">
 							<image :src="htopc" class="imgc"></image>
 						</view>
@@ -59,7 +59,7 @@
 									<image :src="hrimga" class="flex0 imga"></image>
 								</view>
 							</view>
-							<view class="htbox">
+							<view class="htbox" @click="getsqmyInfoFn" v-if="checkPermi(['sqmyInfo:info:list'])">
 								<image :src="hrbgb" class="hrbg"></image>
 								<view class="htboxa flexc">
 									<view class="flex1 mr10">
@@ -69,7 +69,7 @@
 									<image :src="hrimgb" class="flex0 imgb"></image>
 								</view>
 							</view>
-							<view class="htbox" @click="getlzInfoFn">
+							<view class="htbox" @click="getlzInfoFn" v-if="checkPermi(['member:info:list'])">
 								<image :src="hrbgc" class="hrbg"></image>
 								<view class="htboxa flexc">
 									<view class="flex1 mr10">
@@ -100,15 +100,18 @@
 		<view class="hnbox">
 			<view class="hntabs flexc" :class="fixedflag?'tabfix':''"  :style="fixedflag?'top:'+nvaHeight+'px;':''">
 				<view class="flex1 flexc">
-					<view class="tit" v-for="(ite,idx) in tabList" :key="idx" :class="tabval==ite.val?'act':''" @click="getTab(ite.val)">{{ite.tit}}</view>
+					<block v-for="(ite,idx) in tabList" :key="idx">
+						<view class="tit" v-if="checkPermi([ite.limit])"  :class="tabval==ite.val?'act':''" @click="getTab(ite.val)">{{ite.tit}}</view>
+					</block>
+					
 				</view>
-				<view class="flex0 txtr">了解更多>></view>
+				<view class="flex0 txtr" @click="getMoreList">了解更多>></view>
 			</view>
 			<view style="height:114rpx;" v-if="fixedflag"></view>
 			<!-- 列表 -->
-			<view class="mt2 plr12">
-				<notice-list :datalist="list" :wtdt="wtdt" type='1' @getDetail="getDetail"></notice-list>
-				<view class="upmore flexccc">
+			<view class="mt2 plr12" :style="'min-height: ' + minheight + 'px;'">
+				<notice-list :datalist="list" :wtdt="wtdt" :tajdlist="tajdlist" :ztlxlist="ztlxlist" :type='tabval' @getDetail="getDetail"></notice-list>
+				<view class="upmore flexccc" @click="getMoreFn" v-if="reachflag">
 					<image :src="upimg"></image>
 					<view>下拉更多</view>
 				</view>
@@ -122,8 +125,10 @@
 <script>
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	// let { calendar } = require("@/components/lunc-calendar/calendar.js");
-	// import {getReservatcountl,getReservatList,getReservatDel,getReservatSh} from "@/api/mine/order.js"
-	// import {getDictionaryFn} from "@/api/mine/register.js"
+	import {getCaseListFn} from "@/api/mine/case.js"
+	import {getsqmyInfoListFn} from "@/api/mine/sqmyInfo.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import {getNoticeList} from "@/api/mine/news.js"
 	import popUp from "@/components/popup/popup.vue"
 	import hNotice from '@/components/swiper/notice.vue'
 	import noticeList from '@/components/notice/list.vue'
@@ -159,14 +164,9 @@
 			hrimgc:require("@/static/images/home/hrimgc.png"),
 			hrimgd:require("@/static/images/home/hrimgd.png"),
 			upimg:require("@/static/images/home/up.png"),
-			tabval:'0',
-			tabList:[{tit:'公开提案',val:'0'},{tit:'社情民意',val:'1'},],
-			list:[
-				{tit:'全国政协十四届二次会议在京开幕 习近平等党和 国家领导人到会祝贺',img:require("@/static/images/bg.png"),from:'新华网',time:'2024-03-04',isTop:true},
-				{tit:'政协全国委员会关于颁发2023年度全国政协委员 优秀履职奖的决定',img:require("@/static/images/bg.png"),from:'人民政协报',time:'2024-03-03',isTop:false},
-				{tit:'市政协办公室党支部召开党员大会',img:require("@/static/images/bg.png"),from:'人民政协报',time:'2024-03-02',isTop:false},
-			
-			],
+			tabval:1,
+			tabList:[{tit:'公开提案',val:1,limit:'proposalInfo:info:list'},{tit:'社情民意',val:2,limit:'sqmyInfo:info:list'},],
+			list:[],
 			pageSize: 10,
 			pageNum: 1,
 			reachflag: true,
@@ -175,7 +175,9 @@
 			listTop:0,//距离顶部的距离
 			fixedflag:false,
 			ptype:"",//lmta 联名填弹窗
-			
+			tajdlist:[],
+			ztlxlist:[],
+			minheight:0,
 		}
 	},
 	onPageScroll(e) {
@@ -200,14 +202,17 @@
 		// 	this.pageNum=1;
 		// 	this.list=[];
 		// 	this.getDataFn();
-		// 	// this.getcount();
 		// })
 		
-		// this.init()
-		// // this.getcount()
-		// this.getDataFn()
-		this.nvaHeight=uni.getSystemInfoSync().statusBarHeight+44;
-		
+		this.init()
+		this.getDataFn()
+		this.getNoticeList()
+		uni.getSystemInfo({
+			success: (e) => {
+				this.nvaHeight = Number(e.statusBarHeight)+44;
+				this.minheight = e.screenHeight -Number(this.nvaHeight)- 57;
+			}
+		})
 	},
 	onUnload() {
 		uni.$off('refreshdatalist')
@@ -232,11 +237,39 @@
 		getNewsFn(){
 			this.$tab.navigateTo('/work/pages/news/list')
 		},
+		getMoreFn(){
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		getNoticeList(){
+			var params={
+				pageSize:10,
+				pageNum:1
+			}
+			getNoticeList(params).then(res=>{
+				if(res.code==200){
+					
+				}
+			})
+		},
+		getMoreList(){
+			if(this.tabval==1){
+				this.getZxCaseFn()
+			}else if(this.tabval==2){
+				this.getsqmyInfoFn()
+			}
+		},
 		getClose(){
 			this.ptype=''
 		},
 		getTab(val){
 			this.tabval=val;
+			this.list=[];
+			this.pageNum=1;
+			this.reachflag=true;
+			this.getDataFn()
 		},
 		getHeightFn(){
 			let query = uni.createSelectorQuery().in(this);
@@ -253,6 +286,16 @@
 				this.$tab.navigateTo('/work/pages/case/add')
 			}
 		},
+		getAddsqmy(){
+			if(uni.getStorageSync('sqmyList')){
+				this.ptype='sqmy'
+			}else{
+				this.$tab.navigateTo('/work/pages/sqmyInfo/add')
+			}
+		},
+		getAddlzda(){
+			this.$tab.navigateTo('/work/pages/report/info')
+		},
 		getAddhy(){
 			if(uni.getStorageSync('cjhyList')){
 				this.ptype='zchy'
@@ -267,90 +310,47 @@
 				this.$tab.navigateTo('/work/pages/case/add?type='+type)	
 			}else if(ptype=='zchy'){
 				if(type=='new'){uni.removeStorageSync('cjhyList')}
-				this.$tab.navigateTo('/work/pages/meeting/add?type='+type)	
-			}
-			
+				this.$tab.navigateTo('/work/pages/meeting/add?type='+type)
+			}else if(ptype=='sqmy'){
+				if(type=='new'){uni.removeStorageSync('sqmyList')}
+				this.$tab.navigateTo('/work/pages/sqmyInfo/add?type='+type)	
+			}	
 		},
 		getZxCaseFn(){
 			this.$tab.navigateTo('/work/pages/case/mine')
 		},
+		getsqmyInfoFn(){
+			this.$tab.navigateTo('/work/pages/sqmyInfo/mine')
+		},
 		getMettFn(){
 			this.$tab.navigateTo('/work/pages/meeting/list')
 		},
 		getlzInfoFn(){
 			this.$tab.navigateTo('/work/pages/report/info')
 		},
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
-		
+
 		
 		init(){
-			// 记录来源
-			getDictionaryFn('jluly').then(res=>{
+			// 提案进度
+			getDictionaryFn('proposal_progress').then(res=>{
 				if(res.code==200){
-					this.adrlist = res.data.map(v => {
+					this.tajdlist = res.data.map(v => {
 						return {
-							dictLabel: v.dictLabel,
-							dictValue: v.dictValue
+							label: v.dictLabel,
+							value: v.dictValue
 						}
 					})
 				}
 			})
-		},
-		getMoreFn(){
-			this.$tab.navigateTo("/pages/order/list")
-		},
-		getDelFn(id){
-			var that=this;
-			getReservatDel(id).then(res=>{
+			//主题类型
+			getDictionaryFn('sqmy_topic_type').then(res=>{
 				if(res.code==200){
-					that.$toast('删除成功')
-					setTimeout(function(){
-						that.reachflag=true;
-						that.pageNum=1;
-						that.list=[];
-						that.getDataFn();
-						// that.getcount();
-					},1500)
-					
-				}else{
-					that.$toast(res.msg)
-				}
-			})
-		},
-		gettypeFn(ite){
-			var that=this;
-			var params={
-				reservatId:ite.id,
-				visitType:ite.type
-			}
-			getReservatSh(params).then(res=>{
-				if(res.code==200){
-					that.$toast('审核成功')
-					setTimeout(function(){
-						that.reachflag=true;
-						that.pageNum=1;
-						that.list=[];
-						that.getDataFn();
-						// that.getcount();
-					},1500)
-					
-				}else{
-					that.$toast(res.msg)
+					this.ztlxlist = res.data.map(v => {
+						return {
+							label: v.dictLabel,
+							value: v.dictValue
+						}
+					})
 				}
 			})
 		},
@@ -372,18 +372,8 @@
 			// 	'0' + s) : s);
 			// this.kaTime = yearStr + ' ' + timeStr;
 		},
-		getcount(){
-			
-			getReservatcountl().then(res=>{
-				if(res.code==200){
-					this.conuntinfo=res.data
-				}else{
-					this.$toast(res.msg)
-				}
-			})
-		},
 		getDetail(data){
-			this.$tab.navigateTo('/pages/order/staffcode?type=look&id='+data)
+			// this.$tab.navigateTo('/pages/order/staffcode?type=look&id='+data)
 		},
 		getDataFn(){
 			var params={
@@ -391,30 +381,60 @@
 				pageNum: this.pageNum,
 				// visitType:3
 			}
-			getReservatList(params).then(res=>{
-				if(res.code==200){
-					if (res.rows.length < this.pageSize) {
-						this.reachflag = false
-						this.wtdt = '到底了~';
-					} else {
-						var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
-						if (num < res.total) {
-							this.reachflag = true
-							this.wtdt = '上拉加载更多'
-						} else {
+			if(this.tabval==1){//公开提案
+				params.isPublicity='是';
+				params.isRecord=0
+				getCaseListFn(params).then(res=>{
+					if(res.code==200){
+						if (res.rows.length < this.pageSize) {
 							this.reachflag = false
 							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+							if (num < res.total) {
+								this.reachflag = true
+								this.wtdt = '上拉加载更多'
+							} else {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							}
+						}
+						if (this.pageNum == 1) {
+							this.list = res.rows;
+						} else {
+							this.list = this.list.concat(res.rows)
 						}
+					}else{
+						this.$toast(res.msg)
 					}
-					if (this.pageNum == 1) {
-						this.list = res.rows;
-					} else {
-						this.list = this.list.concat(res.rows)
+				}) 
+			}else if(this.tabval==2){//社情民意
+				getsqmyInfoListFn(params).then(res=>{
+					if(res.code==200){
+						if (res.rows.length < this.pageSize) {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+							if (num < res.total) {
+								this.reachflag = true
+								this.wtdt = '上拉加载更多'
+							} else {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							}
+						}
+						if (this.pageNum == 1) {
+							this.list = res.rows;
+						} else {
+							this.list = this.list.concat(res.rows)
+						}
+					}else{
+						this.$toast(res.msg)
 					}
-				}else{
-					this.$toast(res.msg)
-				}
-			}) 
+				}) 
+			}
+			
 			
 		},
 	},

+ 3 - 3
pages/mine/index.vue

@@ -68,14 +68,14 @@
 					<view class="tit flex1">政协提案</view>
 					<image :src="rimg" class="rimg"></image>
 				</view>
-				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['sqmyInfo:info:list'])">
 					<view class="limg">
 						<image :src="listimgd" class="imgc"></image>
 					</view>
 					<view class="tit flex1">社情民意</view>
 					<image :src="rimg" class="rimg"></image>
 				</view>
-				<view class="flexc mine_list" @click="handleToAddlz" v-if="checkPermi(['sqmyInfo:info:list'])">
+				<view class="flexc mine_list" @click="handleToAddlz" v-if="checkPermi(['member:info:list'])">
 					<view class="limg">
 						<image :src="listimge" class="imgc"></image>
 					</view>
@@ -464,7 +464,7 @@ page {background-color: #f5f5f5;}
 			}
 			
 		}
-		.mbgbox{width: 100%;background: #FFFFFF;border-radius: 10rpx;margin-bottom: 24rpx;padding: 16rpx 0;
+		.mbgbox{width: 100%;background: #FFFFFF;border-radius: 10rpx;margin-bottom: 24rpx;
 			.mine_list{
 				padding: 28rpx 22rpx;
 				.limg{flex: 0 0 auto;width: 42rpx;height: 42rpx;margin-right: 26rpx;display: flex;align-items: center;justify-content: center;

+ 49 - 2
pages/notice/index.vue

@@ -1,5 +1,9 @@
 <template>
   <view >
+	  <view class="notbox">
+		   <meet-list :datalist="list" :wtdt="wtdt"   :type='ptype' @getDetail="getDetail" ></meet-list>
+	  </view>
+	 
 	<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
  </view>
 </template>
@@ -7,8 +11,10 @@
 <script>
 	import footers from '@/components/footer/footer.vue'
   import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  import {getMeetListFn} from "@/api/mine/meeting.js"
+  import meetList from "@/work/components/meeting/list.vue"
   export default {
-	components:{footers},
+	components:{footers,meetList},
     data() {
       return {
 		  footlist:[
@@ -21,15 +27,55 @@
 		  color_nochecked :'AAAAAA',
 		  footerindex:'notice',
 		  isfootflag:true,
-		  
+		  list:[],
+		  pageSize: 10,
+		  pageNum: 1,
+		  reachflag: true,
+		  wtdt:'',
+		  ptype:'hytz',
+		  userId:this.$store.state.user.userId,
       }
     },
 	onShow() {
 	},
 	onLoad() {
+		this.getDataFn()
 	},
     methods: {
 		checkPermi, checkRole,
+		getDataFn(){
+			var params={
+				pageSize:this.pageSize,
+				pageNum: this.pageNum,
+				// visitType:3
+			}
+			// params.userId=this.userId
+			getMeetListFn(params).then(res=>{
+				if(res.code==200){
+					if (res.rows.length < this.pageSize) {
+						this.reachflag = false
+						this.wtdt = '到底了~';
+					} else {
+						var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+						if (num < res.total) {
+							this.reachflag = true
+							this.wtdt = '上拉加载更多'
+						} else {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						}
+					}
+					if (this.pageNum == 1) {
+						this.list = res.rows;
+					} else {
+						this.list = this.list.concat(res.rows)
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+	
+		},
     }
   }
 </script>
@@ -38,4 +84,5 @@
   page {
     background-color: #f5f6f7;
   }
+  .notbox{padding: 24rpx;}
 </style>

+ 478 - 33
pages/report/index.vue

@@ -1,41 +1,486 @@
 <template>
-  <view >
-	<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
- </view>
+	<view class="zxbox">
+		<view class="navbox">
+			<uni-nav-bar color="#ffffff" rightWidth="200rpx" @clickLeft="getBack"  title="年度履职报告" :background-color="backgroundColor" :border="false"
+				statusBar='true' fixed="true">
+				<!-- <block slot="left">
+					<view class="topl">
+						<image :src="backimg" ></image>
+					</view>
+				</block> -->
+				<block slot="right">
+					<picker mode="date" fields="year" value="nd" class="infolist_a" @change='bindDateChange'>
+						<view class="picks">
+							<view :class="year?'':'f16 co80'">{{year||"请选择"}}</view>
+							<image :src="upimg"></image>
+						</view>
+					</picker>
+				</block>
+			</uni-nav-bar>
+		</view>
+		<image :src="bgimg" class="bgimg"></image>
+		<view class="mbox">
+			<view class="head flexc mb18">
+				<image :src="headimg" class="headimg"></image>
+				<view class="hinfo">
+					<view class="tit">{{memberInfo.name}}</view>
+					<view class="medal flexc">
+						<view class="bg bg1">
+							<image :src="medala"></image>
+							界别<text></text>{{kaType(memberInfo.boundary,jblist)}}
+						</view>
+						<view class="bg bg2">
+							<image :src="medalb"></image>
+							党派<text></text>{{kaType(memberInfo.partyAffiliation,dplist)}}
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="jinfo">
+				<view class="tit mb14">基本信息</view>
+				<view class="flex mb11">
+					<view class="imgs"><image :src="infoa" class="imga"></image></view>
+					<view class="txt">身份证号 | {{memberInfo.card}}</view>
+				</view>
+				<view class="flex mb11">
+					<view class="imgs"><image :src="infob" class="imgb"></image></view>
+					<view class="txt">联系方式 | {{memberInfo.phonenumber}}</view>
+				</view>
+				<view class="flex mb11">
+					<view class="imgs"><image :src="infoc" class="imgc"></image></view>
+					<view class="txt">工作单位及职务 | {{memberInfo.unit}}</view>
+				</view>
+				<view class="flex mb11">
+					<view class="imgs"><image :src="infod" class="imgd"></image></view>
+					<view class="txt">乡镇(经开区)委员工作室 | {{memberInfo.studio}}</view>
+				</view>
+			</view>
+			<!-- 分 -->
+			<view class="score flexcj mb20">
+				<view class="scorea">
+					<image :src="bga"></image>
+					<view class="box flexccc">
+						<view class="num">{{scorecount.totalScore}}</view>
+						<view class="f12 fw coe2">履职得分情况</view>
+						<view class="f12 co22">(满分{{scorecount.fullScore||0}}分)</view>
+					</view>
+				</view>
+				<view class="scorea">
+					<image :src="bgb"></image>
+					<view class="box flexccc">
+						<view class="num">{{scorecount.rank||""}}</view>
+						<view class="f12 fw co83">综合排名</view>
+						<view class="f12 co22">(共{{scorecount.totalPeople||0}}名)</view>
+					</view>
+				</view>
+			</view>
+			<!-- tab -->
+			<view class="tabs mb27">
+				<view v-for="(ite,idx) in tabList" @click="getTabFn(ite.val)" :class="tabval==ite.val?'act':''" class="tab" :key="ite.val">{{ite.tit}}</view>
+			</view>
+			<block v-if="tabval==0">
+			<view class="flexcw mb28">
+				<view class="nums bga">
+					<view class="tit flex1">政协提案</view>
+					<view class="txt"><text>{{mapcount.proposalInfoNum}}</text>件</view>
+				</view>
+				<view class="nums bgb">
+					<view class="tit flex1">社情民意</view>
+					<view class="txt"><text>{{mapcount.sqmyInfoNum}}</text>件</view>
+				</view>
+				<view class="nums bga">
+					<view class="tit flex1">全会</view>
+					<view class="txt"><text>{{mapcount.plenarySessionNum}}</text>件</view>
+				</view>
+				<view class="nums bgb">
+					<view class="tit flex1">活动</view>
+					<view class="txt"><text>{{mapcount.activityNum}}</text>件</view>
+				</view>
+				<view class="nums bga">
+					<view class="tit flex1">普通会议</view>
+					<view class="txt"><text>{{mapcount.conferenceNum}}</text>件</view>
+				</view>
+				<view class="nums bgb">
+					<view class="tit flex1">会议发言</view>
+					<view class="txt"><text>{{mapcount.speakNum}}</text>件</view>
+				</view>
+			</view>
+			<!-- 雷达图 -->
+			<view class="mb32">
+				<qiun-data-charts type="radar" :opts="opts" :chartData="chartData"></qiun-data-charts>
+			</view>
+			<!-- 各项得分 -->
+			<view class="jinfo">
+				<view class="tit mb14">各项得分</view>
+				<view class="gsbox">
+					<view class="gslist">
+						<view class="gtit">活动</view>
+						<view class="gtxt">{{scorecount.activityScore}}</view>
+					</view>
+					<view class="gslist">
+						<view class="gtit">会议</view>
+						<view class="gtxt">{{scorecount.conferenceScore}}</view>
+					</view>
+					<view class="gslist">
+						<view class="gtit">社情民意</view>
+						<view class="gtxt">{{scorecount.sqmyScore}}</view>
+					</view>
+					<view class="gslist">
+						<view class="gtit">政协提案</view>
+						<view class="gtxt">{{scorecount.proposalScore}}</view>
+					</view>
+					<!-- <view class="gslist">
+						<view class="gtit">会议发言</view>
+						<view class="gtxt">{{scorecount.conferenceScore}}</view>
+					</view> -->
+					<view class="gslist">
+						<view class="gtit">其他</view>
+						<view class="gtxt">{{scorecount.bonusScore}}</view>
+					</view>
+				</view>
+			</view>
+			</block>
+			<!-- 提案方便 -->
+			<view class="list" v-if="tabval!=0">
+				<view class="zfbox" v-if="tabval==2">个人提案方面总计得分 <text class="znum">{{scorecount.proposalScore||0}}</text> 分</view>
+				<view class="zfbox" v-if="tabval==3">个人社情民意方面总计得分 <text class="znum">{{scorecount.sqmyScore||0}}</text> 分</view>
+				<view class="zfbox" v-if="tabval==4">个人会议参与情况总计得分 <text class="znum">{{scorecount.conferenceScore||0}}</text> 分</view>
+				<view class="zfbox" v-if="tabval==5">个人活动参与情况总计得分 <text class="znum">{{scorecount.activityScore||0}}</text> 分</view>
+				<report-list :type='tabval' :wtdt="wtdt" :tajdlist="tajdlist" :ztlxlist="ztlxlist" :hylxlist="hylxlist" :hdlxlist="hdlxlist" :datalist="list"></report-list>
+				<!-- <view class="upmore flexccc">
+					<image :src="upmimg"></image>
+					<view>下拉更多</view>
+				</view> -->
+			</view>
+		</view>
+		<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
+	</view>
 </template>
 
 <script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { selectValue } from '@/utils/common.js';
+	import {getInfomenberDetai} from "@/api/mine/report.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import reportList from "@/work/components/report/list.vue"
 	import footers from '@/components/footer/footer.vue'
-  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
-  export default {
-	components:{footers},
-    data() {
-      return {
-		  footlist:[
-		  	{module:'home',title:'潜山政协',icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
-		  	{module:'report',title:'履职报告',icon_checked:require('@/static/images/tabbar/report_.png'),icon_nochecked:require('@/static/images/tabbar/report.png')},
-		  	{module:'notice',title:'会议通知',icon_checked:require('@/static/images/tabbar/notice_.png'),icon_nochecked:require('@/static/images/tabbar/notice.png')},
-		  	{module:'mine',title:'个人中心',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
-		  	],
-		  color_checked :'222327',
-		  color_nochecked :'AAAAAA',
-		  footerindex:'report',
-		  isfootflag:true,
-		  
-      }
-    },
-	onShow() {
-	},
-	onLoad() {
-	},
-    methods: {
-		checkPermi, checkRole,
-    }
-  }
+	export default {
+		components:{reportList,footers},
+		data() {
+			return {
+				footlist:[
+					{module:'home',title:'潜山政协',icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
+					{module:'report',title:'履职报告',icon_checked:require('@/static/images/tabbar/report_.png'),icon_nochecked:require('@/static/images/tabbar/report.png')},
+					{module:'notice',title:'会议通知',icon_checked:require('@/static/images/tabbar/notice_.png'),icon_nochecked:require('@/static/images/tabbar/notice.png')},
+					{module:'mine',title:'个人中心',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
+					],
+				color_checked :'222327',
+				color_nochecked :'AAAAAA',
+				footerindex:'report',
+				isfootflag:true,
+				backgroundColor:'transparent',
+				headimg:require("@/static/images/mine/header.png"),
+				backimg:require("@/work/static/images/back.png"),
+				bgimg: require("@/work/static/images/report/bg.png"),
+				infoa:require("@/work/static/images/report/infoa.png"),
+				infob:require("@/work/static/images/report/infob.png"),
+				infoc:require("@/work/static/images/report/infoc.png"),
+				infod:require("@/work/static/images/report/infod.png"),
+				bga:require("@/work/static/images/report/bga.png"),
+				bgb:require("@/work/static/images/report/bgb.png"),
+				medala:require("@/work/static/images/report/medala.png"),
+				medalb:require("@/work/static/images/report/medalb.png"),
+				upimg:require("@/work/static/images/report/up.png"),
+				upmimg:require("@/static/images/home/up.png"),
+				backgroundColor:'transparent',
+				year:'2024',
+				
+				wtdt:'',
+				memberInfo:{},
+				proposalInfoList:[],//提案集合
+				sqmyInfoList:[],//社情民意集合
+				zxConferenceList:[],//会议集合
+				zxActivityList:[],//活动集合
+				zxSpeakList:[],//发言集合
+				jblist:[],
+				dplist:[],
+				tajdlist:[],
+				ztlxlist:[],
+				hylxlist:[],
+				hdlxlist:[],
+				mapcount:{},
+				scorecount:{},
+				tabval:0,
+				list:[],
+				tabList:[{tit:'履职状况',val:'0'},{tit:'提案方面',val:2},{tit:'社情民意方面',val:3},{tit:'会议参与情况',val:4},{tit:'活动参与情况',val:5},{tit:'会议发言情况',val:6}],
+				chartData:{
+					categories: ["活动","会议","社情民意","政协提案","其他"],
+					series: [],				
+				},
+				opts: {
+				    color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],
+				      padding: [5,5,5,5],
+				      dataLabel: false,
+				      enableScroll: false,
+				      legend: {
+				        show: true,
+				        position: "right",
+				        lineHeight: 25
+				      },
+					  "legend": {"show": false,},
+				      extra: {
+				        radar: {
+				          gridType: "radar",
+				          gridColor: "#CCCCCC",
+				          gridCount: 3,
+				          opacity: 0.2,
+				          max: 200,
+				          labelShow: true,
+				          border: true
+				        }
+				      }
+				    }
+			}
+		},
+		onPageScroll(e) {
+			var scrollTop = Number(e.scrollTop);
+			var listTop=Number(this.listTop)-Number(this.nvaHeight)
+			if (scrollTop <=this.nvaHeight) {
+				const opacity = scrollTop / 100 // 计算透明度值
+				const color = `rgba(29, 100, 226, ${opacity})`
+				this.backgroundColor = color // 更新盒子背景颜色
+			} else {
+				this.backgroundColor = '#1D64E2'
+			}
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+		},
+		methods: {
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			kaType(ite,list){
+				return selectValue(list, ite);
+			},
+			bindDateChange(e){
+				var val=e.detail.value;
+				this.year=val;
+				this.getDetail()
+			},
+			getTabFn(val){
+				this.tabval=val
+				if(val==2){
+					this.list=this.proposalInfoList
+				}else if(val==3){
+					this.list=this.sqmyInfoList
+				}else if(val==4){
+					this.list=this.zxConferenceList
+				}else if(val==5){
+					this.list=this.zxActivityList
+				}else if(val==6){
+					this.list=this.zxSpeakList
+				}
+			},
+			init(){
+				// 界别
+				getDictionaryFn('circles').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.jblist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value:v.dictValue
+							}
+						})
+					}
+				})
+				// 党派
+				getDictionaryFn('political_parties').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.dplist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 提案进度
+				getDictionaryFn('proposal_progress').then(res=>{
+					if(res.code==200){
+						this.tajdlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				//主题类型
+				getDictionaryFn('sqmy_topic_type').then(res=>{
+					if(res.code==200){
+						this.ztlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				//会议类型
+				getDictionaryFn('conference_type').then(res=>{
+					if(res.code==200){
+						this.hylxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				//活动类型
+				getDictionaryFn('activity_type').then(res=>{
+					if(res.code==200){
+						this.hdlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getDetail(){
+				var params={
+					userId:this.id,
+					year:this.year
+				}
+				getInfomenberDetai(params).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						this.memberInfo=res.data.memberInfo;
+						if(res.data.memberAssessmentInfo){
+							this.scorecount=JSON.parse(JSON.stringify(res.data.memberAssessmentInfo));
+							var score=res.data.memberAssessmentInfo
+							var newArr=[score.activityScore||0,score.conferenceScore||0,score.sqmyScore||0,score.proposalScore||0,score.bonusScore||0]
+							var obj={
+								name:'分值',
+								data:newArr
+							}
+							var series=[]
+							series.push(obj)
+							this.chartData.series=series
+						}
+						if(res.data.map){
+							this.mapcount=JSON.parse(JSON.stringify(res.data.map));
+						}
+						
+						
+						this.proposalInfoList=res.data.proposalInfoList;
+						this.sqmyInfoList=res.data.sqmyInfoList;
+						this.zxConferenceList=res.data.zxConferenceList;
+						this.zxActivityList=res.data.zxActivityList;
+						this.zxSpeakList=res.data.zxSpeakList;
+					}
+				})
+			},
+		}
+	}
 </script>
 
-<style lang="scss" scoped>
-  page {
-    background-color: #f5f6f7;
-  }
+<style lang="scss">
+page {background-color: #ffffff;}
+.navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4;
+	.topl{width: 60rpx;height: 60rpx;display: flex;align-items: center;justify-content: center;
+		image{width: 40rpx;height: 30rpx;}
+	}
+	.topr{width: 36rpx;height: 36rpx;position: relative;margin-right: 10rpx;
+		image{width: 100%;height: 100%;}
+		.cir{width: 14rpx;height: 14rpx;background: #DF0024;border-radius: 50%;position: absolute;right: -7rpx;top: -7rpx;}
+	}	
+}
+.zxbox{
+	.bgimg{width: 100%;height: 196rpx;}
+	.mbox{margin-top: -34rpx;padding: 34rpx 24rpx 30rpx;z-index: 1;position: relative;border-radius: 30rpx 30rpx 0 0;background-color: #ffffff;
+		.head{
+			.headimg{width: 140rpx;height: 140rpx;flex: 0 0 auto;margin-right: 34rpx;}
+			.hinfo{
+				.tit{font-weight: bold;font-size: 34rpx;color: #222327;margin-bottom: 26rpx;}
+				.medal{
+					.bg{position: relative;height: 40rpx;border-radius: 4rpx;min-width: 200rpx;font-weight: 500;
+font-size: 20rpx;padding-left: 16rpx;box-sizing: border-box;text-align: center;
+color: #FFFFFF;line-height: 40rpx;
+text{border-right: 2rpx solid #ffffff;margin: 0 8rpx;}
+					&.bg1{background: #C8A46D;margin-right: 36rpx;}
+					&.bg2{background: #BC2828;}
+						image{width: 32rpx;height: 40rpx;position: absolute;left: -16rpx;top: 0;}
+					}
+				}
+			}
+		}
+		.jinfo{padding-bottom: 22rpx;
+			.tit{font-weight: bold;font-size: 30rpx;color: #222327;}
+			.imgs{width: 30rpx;height: 34rpx;display: flex;align-items: center;justify-content: center;margin-right: 14rpx;
+				.imga{width:30rpx;height: 24rpx;}
+				.imgb{width:18rpx;height: 26rpx;}
+				.imgc{width:30rpx;height: 26rpx;}
+				.imgd{width:26rpx;height: 26rpx;}
+			}
+			.txt{font-weight: 500;font-size: 26rpx;color: #222327;}
+			.gsbox{background: #ECF1FD;border-radius: 10rpx;padding: 48rpx 26rpx 18rpx;display: flex;flex-wrap: wrap;justify-content: space-between;
+				.gslist{width: 242rpx;display: flex;align-items: center;margin-bottom: 28rpx;flex: 0 1 auto;
+					.gtit{font-weight: bold;font-size: 26rpx;color: #222327;flex: 0 0 auto;}
+					.gtxt{font-weight: bold;font-size: 30rpx;color: #004BF6;flex:1;text-align: right;}
+				}
+			}
+		}
+		.score{
+			.scorea{width: 334rpx;height: 146rpx;position: relative;
+				image{width: 100%;height: 100%;}
+				.box{position: absolute;left: 0;right: 0;top: 0;bottom: 0;text-align: center;
+					.num{font-weight: 800;font-size: 40rpx;color: #222327;}	
+				}
+			}
+		}
+		.tabs{display: flex;align-items: center;overflow-x: auto;
+			.tab{font-weight: 500;font-size: 26rpx;color: #666666;position: relative;height: 88rpx;line-height: 88rpx;margin-right: 40rpx;flex: 0 0 auto;
+				&.act{font-size: 30rpx;font-weight: bold;color: #222327;
+					&::after{content: '';width:52rpx;height: 10rpx;background: #1D64E2;border-radius: 6rpx;position: absolute;left: 50%;margin-left: -26rpx;bottom: 0rpx;}
+				}
+			}
+		}
+		.nums{width: 332rpx;height: 110rpx;border-radius: 10rpx;display: flex;align-items: center;padding: 0 26rpx;margin-bottom: 24rpx;margin-right: 38rpx;
+			&:nth-child(2n){margin-right: 0;}
+			.tit{font-weight: bold;font-size: 30rpx;}
+			.txt{font-weight: 500;font-size: 24rpx;
+				text{font-weight: 500;font-size: 40rpx;color: #343434;margin-right: 8rpx;}
+			}
+			&.bga{background: #E8EFFF;
+				.tit{color: #004BF6;}
+				text{color: #004BF6;}
+			}
+			&.bgb{background: #FFECE3;
+				.tit{color: #FF4E00;}
+				text{color: #FF4E00;}
+			}	
+		}
+		.zfbox{font-weight: bold;font-size:26rpx;color: #222327;margin-bottom: 36rpx;
+			.znum{font-size: 40rpx;color: #1D64E2;padding: 0 8rpx;}
+		}
+	}
+}
+.picks{
+	width: 160rpx;height: 56rpx;background-color: rgba(15, 57, 116, 0.5);display: flex;align-items: center;padding: 0 24rpx;box-sizing: border-box;border-radius: 10rpx;
+		image{width: 16rpx;height: 10rpx;flex: 0 0 auto;}
+		view{font-weight: bold;font-size: 26rpx;color: #FFFFFF;flex: 1;}
+}
+.upmore{
+	image{width: 40rpx;height: 32rpx;margin-bottom: 16rpx;}
+	view{font-weight: 500;font-size: 26rpx;color: #AAAAAA;}	
+}
 </style>

+ 7 - 2
static/style.css

@@ -50,7 +50,7 @@ image{display: block;}
 .co34{color: #343434;}
 .co6{color: #666666;}
 .co0b{color: #00B034 !important;}
-.co1d{color: #1D64E2;}
+.co1d{color: #1D64E2 !important;}
 .cof0{color: #ff0000;}
 .coa{color: #aaaaaa !important;}
 .cofe{color: #FE5A0E !important;}
@@ -104,4 +104,9 @@ image{display: block;}
 
 .fwbtns{position: fixed;left: 0;right: 0;bottom: 0;height: 98rpx;font-weight: 500;
 font-size: 30rpx;
-color: #FFFFFF;background: #1D64E2;text-align: center;line-height: 98rpx;}
+color: #FFFFFF;background: #1D64E2;text-align: center;line-height: 98rpx;}
+
+.addbox .lbtabp{display: flex;align-items: center;flex: 0 0 auto;margin-left: 24rpx;height: 100%;justify-content: flex-end;
+		view{font-size: 30rpx;color: #222327;}
+	}
+.addbox .lbtab view{font-size: 30rpx;color: #222327;}

+ 1 - 0
store/getters.js

@@ -9,6 +9,7 @@ const getters = {
   userId:state=>state.user.userId,
   phonenumber: state => state.user.phonenumber,
   autologin:state => state.user.autologin,
+  memberInfo:state => state.user.memberInfo,
   wgtcode:state => state.user.wgtcode
 }
 export default getters

+ 9 - 0
store/modules/user.js

@@ -18,6 +18,7 @@ const user = {
 	deptName: storage.get(constant.deptName),
 	phonenumber: storage.get(constant.phonenumber),
 	autologin:storage.get(constant.autologin),
+	memberInfo:storage.get(constant.memberInfo),
 	wgtcode:storage.get(constant.wgtcode)
   },
 
@@ -57,6 +58,10 @@ const user = {
 	  state.userId = userId
 	  storage.set(constant.userId, userId) 
 	},
+	SET_MEMBERINFO: (state, memberInfo) => {
+	  state.memberInfo = memberInfo
+	  storage.set(constant.memberInfo, memberInfo) 
+	},
 	SET_AUTOLOGIN: (state, autologin) => {
 	  state.autologin = autologin
 	  storage.set(constant.autologin, autologin)
@@ -125,6 +130,7 @@ const user = {
 		  const deptId = (user == null || user.deptId == "" || user.deptId == null) ? "" : user.deptId
           const userId = (user == null || user.userId == "" || user.userId == null) ? "" : user.userId
           const deptName = (user == null ||user.dept==null|| user.dept == ""||user.dept.deptName == "" || user.dept.deptName == null) ? "" : user.dept.deptName
+          const memberInfo = res.memberInfo == null  ? "" : res.memberInfo
 		  if (res.roles && res.roles.length > 0) {
             commit('SET_ROLES', res.roles)
             commit('SET_PERMISSIONS', res.permissions)
@@ -137,6 +143,8 @@ const user = {
 		  commit('SET_DEPID', deptId)
 		  commit('SET_USERID', userId)
 		  commit('SET_DEPTNAME', deptName)
+		  commit('SET_MEMBERINFO', memberInfo)
+		  
           resolve(res)
         }).catch(error => {
           reject(error)
@@ -151,6 +159,7 @@ const user = {
           commit('SET_TOKEN', '')
           commit('SET_ROLES', [])
           commit('SET_PERMISSIONS', [])
+          commit('SET_MEMBERINFO', {})
           removeToken()
           storage.clean()
           resolve()

+ 1 - 0
utils/constant.js

@@ -9,6 +9,7 @@ const constant = {
    scorknow: 'vuex_scorknow',
    autologin:'vuex_autologin',
    phonenumber: 'vuex_phonenumber',
+   memberInfo:"vuex_memberInfo",
    wgtcode:'vuex_wgtcode',
  }
 

+ 1 - 1
utils/storage.js

@@ -4,7 +4,7 @@ import constant from './constant'
 let storageKey = 'storage_data'
 
 // 存储节点变量名
-let storageNodeKeys = [constant.phonenumber,constant.autologin,constant.scorknow,constant.avatar, constant.name, constant.roles, constant.permissions,constant.deptId,constant.deptName,constant.userId,constant.wgtcode]
+let storageNodeKeys = [constant.phonenumber,constant.autologin,constant.scorknow,constant.avatar, constant.name, constant.roles,constant.memberInfo, constant.permissions,constant.deptId,constant.deptName,constant.userId,constant.wgtcode]
 
 const storage = {
   set: function(key, value) {

+ 169 - 62
work/components/meeting/list.vue

@@ -2,18 +2,17 @@
   <view>
 	<view v-if="datalist.length>0">
 		<!-- 我的提案 -->
-		<block v-if="type">
-			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.conferenceId)">
-				<view class="tit overtwo" v-if="type=='wdfy'">{{ite.speakTitle}}</view>
-				<view v-else class="flexcj mb20">
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">
+				<view class="tit overtwo" v-if="type=='wdfy'||type=='hyfy'">{{ite.speakTitle}}</view>
+				<view class="tit overtwo" v-else-if="type=='hdtz'">{{ite.activityTitle}}</view>
+				<view  class="flexcj mb20" v-else>
 					<view class="tit overtwo" style="margin-bottom: 0;">{{ite.conferenceTitle}}</view>
-					<image :src="codeimg" class='codeimg' @click.stop="getTuiFn(ite,'qdm')"></image>
+					<image :src="codeimg" v-if="type=='hyhd'" class='codeimg' @click.stop="getTuiFn(ite,'qdm')"></image>
 				</view>
-				
-				<block v-if="type!='wdfy'&&type!='hyfy'">
+				<block v-if="type=='hytz'||type=='hyhd'">
 					<view class="ftxt">
 						<text>会议时间</text>
-						<view>{{ite.conferenceDate}}</view>
+						<view>{{ite.conferenceDate}} {{ite.conferenceTime}}</view>
 					</view>
 					<view class="ftxt">
 						<text>会议地点</text>
@@ -23,14 +22,72 @@
 						<text>发布时间</text>
 						<view>{{ite.publishTime}}</view>
 					</view>
-					
 					<view class="ftxt">
 						<text>备注信息</text>
 						<view>{{ite.remark}}</view>
 					</view>
+					<view class="casebtn flexc" v-if="type=='hyhd'">
+						<view class="lfread">未读人数({{ite.noRead}})<text class="lfdet">已读人数({{ite.read}})</text></view>
+						<view class="co1d" v-if="checkPermi(['zxConference:conference:getUserInfo'])" @click.stop="getReadFn(ite.conferenceId)">查看阅读详情</view>
+					</view>
+					<view class="casebtn  flexc" v-if="type=='hytz'&&checkPermi(['zxConference:conference:updateReply'])">
+						<block v-if="ite.isJoin">
+							<view class="lftit">是否参会已答复,查看<text class="lfdet" @click.stop="getDfFn(ite)">答复内容</text></view>
+							<view class="btn btn3" @click.stop="">已答复</view>
+						</block>
+						<block v-else>
+							<view class="lftit">是否成参会暂未答复</view>
+							<view class="btn btn2"  @click.stop="getTuiFn(ite,'chdf')">参会答复</view>
+						</block>
+						<view v-if="ite.isJoin=='Y'&&!ite.signIn" class="btn btn2" @click.stop="getTuiFn(ite,'hyhd')">去签到</view>
+						<view class="btn btn3" v-if="ite.signIn" @click.stop="">已签到</view>	
+							<!-- <view class="lftit">当前会议已结束,查看<text class="lfdet">签到情况</text></view> -->	
+					</view>
+				</block>
+				<block v-if="type=='hdtz'">
+					<view class="ftxt">
+						<text>活动时间</text>
+						<view>{{ite.activityDate}} {{ite.activityTime}}</view>
+					</view>
+					<view class="ftxt">
+						<text>活动类型</text>
+						<view>{{kaType(ite.activityType,hdlxlist)}}</view>
+					</view>
+					<view class="ftxt">
+						<text>活动地点</text>
+						<view>{{ite.activityAddress}}</view>
+					</view>
+					<view class="ftxt" >
+						<text>发布时间</text>
+						<view>{{ite.publishTime}}</view>
+					</view>
+					<view class="ftxt">
+						<text>活动内容</text>
+						<!-- <view>{{ite.activityDetails}}</view> -->
+						<view class="over">
+							<rich-text :nodes="ite.activityDetails"></rich-text>
+						</view>
+					</view>
+					<view class="casebtn flexc">
+						<view class="lfread">未读人数({{ite.noRead}})<text class="lfdet">已读人数({{ite.read}})</text></view>
+						<view class="co1d" v-if="checkPermi(['zxActivity:activity:getUserInfo'])"  @click.stop="getReadFn(ite.activityId)">查看阅读详情</view>
+					</view>
+					<view class="casebtn  flexc" v-if="checkPermi(['zxActivity:activity:updateReply'])">
+						<block v-if="ite.isJoin">
+							<view class="lftit">是否参会已答复,查看<text class="lfdet" @click.stop="getDfFn(ite)">答复内容</text></view>
+							<view class="btn btn3" @click.stop="">已答复</view>
+						</block>
+						<block v-else>
+							<view class="lftit">是否成参会暂未答复</view>
+							<view class="btn btn2"  @click.stop="getTuiFn(ite,'chdf')">参会答复</view>
+						</block>
+						<!-- <view v-if="ite.isJoin=='Y'&&!ite.signIn" class="btn btn2" @click.stop="getTuiFn(ite,'hyhd')">去签到</view>
+						<view class="btn btn3" v-if="ite.signIn" @click.stop="">已签到</view>	 -->
+							<!-- <view class="lftit">当前会议已结束,查看<text class="lfdet">签到情况</text></view> -->	
+					</view>
 				</block>
 				
-				<block v-if="type=='wdfy'">
+				<block v-if="type=='wdfy'||type=='hyfy'">
 					<view class="flexcw" >
 						<view class="ftxt">
 							<text>发言人</text>
@@ -51,7 +108,7 @@
 					</view>
 					<view class="ftxt">
 						<text>发言类型</text>
-						<view>{{kaType(ite.speakType)}}</view>
+						<view>{{kaType(ite.speakType,fylxlist)}}</view>
 					</view>
 					<view class="ftxt">
 						<text>提交时间</text>
@@ -62,60 +119,62 @@
 						<view class="co0b">{{ite.speakStatus==2?'已审核':'待审核'}}</view>
 					</view>
 				</block>
-				<block v-if="type=='hyfy'">
-					<view class="ftxt" >
-						<text>关联会议</text>
-						<view>{{ite.conferenceTitle}}</view>
-					</view>
-					<view class="ftxt" >
-						<text>发言人数</text>
-						<view>{{ite.conferenceTitle}}</view>
-					</view>
+				<!-- <block v-if="type=='hyfy'">
 					<view class="casebtn flexc">
-						<view class="lfread">已审核({{ite.noRead}})<text class="lfdet">未审核({{ite.read}})</text></view>
-						<view class="co1d" @click.stop="getReadFn(ite.conferenceId)">去审核</view>
+						<view class="lfread">
+							已审核({{ite.noRead}})<text class="lfdet">未审核({{ite.read}})</text>
+						</view>
+						<view class="co1d" @click.stop="getReadFn(ite.speakId)">去审核</view>
 					</view>
-				</block>
+				</block> -->
+				
+				
+				<!-- 会议活动,活动通知管理员 -->
 				
 				
-				<!-- 会议活动,管理员 -->
-				<view class="casebtn flexc" v-if="type=='hyhd'">
-					<!-- <view class="lfread">未读人数({{ite.noRead}})<text class="lfdet">已读人数({{ite.read}})</text></view>
-					<view class="co1d" @click.stop="getReadFn(ite.conferenceId)">查看阅读详情</view> -->
-					<!-- 暂放 -->
-					<view class="lftit">当前会议暂未签到</view>
-					<view class="btn btn2" @click.stop="getTuiFn(ite,'hyqd')">去签到</view>
-				</view>
 				<!-- 答复情况 签到-->
-				<view class="casebtn flexc" v-if="type=='hytz'">
-					<block v-if="ite.zxConferenceUserList&&ite.zxConferenceUserList[0].isJoin=='Y'">
-						<view class="lftit">是否参会已答复,查看<text class="lfdet">答复内容</text></view>
-						<view class="btn btn3">已答复</view>
-					</block>
-					<block v-else>
-						<view class="lftit">是否成参会暂未答复</view>
-						<view class="btn btn2" @click.stop="getTuiFn(ite,'chdf')">参会答复</view>
-					</block>
-					<block v-if="ite.signIn">
-						<view class="lftit">当前会议已结束,查看<text class="lfdet">签到情况</text></view>
-						<view class="btn btn3">已签到</view>
-					</block>
-					<block v-if="ite.zxConferenceUserList&&ite.zxConferenceUserList[0].isJoin=='Y'">
-						<view class="lftit">当前会议暂未签到</view>
-						<view class="btn btn2" @click.stop="getTuiFn(ite,'hyhd')">去签到</view>
-					</block>
-				</view>
+				
+				<!-- <view class="casebtn flexc" >
+					<view class="btn btn1" @click.stop="getTuiFn(ite,'scfk','1')">删除</view>
+					<view class="btn btn2" @click.stop="getTuiFn(ite,'scfk','0')">修改</view>
+				</view> -->
 			</view>
-		</block>
+		<!-- <block v-if="type">
+		</block> -->
 		<view class="shax" v-if="wtdt">{{wtdt}}</view>
 	</view>
 	<block v-else>
 		<no-data></no-data>
 	</block>
+	<!-- 弹窗 -->
+	<view class="bgbox" @click="getClose" v-if="dfflag"></view>
+	<view class="fixedbox" v-if="dfflag">
+		<view class="ttit">提示</view>
+		<view  class="boxs">
+			<view class="ftxt">
+				<text>是否参会</text>
+				<view>{{info.isJoin=='Y'?'是':'否'}}</view>
+			</view>
+			<view class="ftxt">
+				<text>请假类型</text>
+				<view>{{kaType(info.leaveType,qjlxlist)}}</view>
+			</view>
+			<view class="ftxt">
+				<text>请假事由</text>
+				<view>{{info.leaveReason}}</view>
+			</view>
+			<view class="fixedbtn flexcj">
+				<view class="btns btn1" @click.stop="getClose">取消</view>
+				<!-- <view class="btns btn2" @click.stop="getTuiFn(info,'chdf')">重新答复</view> -->
+			</view>
+		</view>
+		
+	</view>
   </view>
 </template>
 
 <script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import { selectValue } from '@/utils/common.js';
 	import noData from "@/components/nodata/nodata.vue"
   export default {
@@ -126,12 +185,6 @@
 				return []
 			}
 		},
-		tajdlist: {
-			type: Array,
-			default () {
-				return []
-			}
-		},
 		wtdt:{
 			type: String,
 			default () {
@@ -144,6 +197,12 @@
 				return ''
 			}
 		},
+		hdlxlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
 		listtype:{
 			type: [String,Number],
 			default () {
@@ -155,6 +214,12 @@
 			default () {
 				return []
 			}
+		},	
+		qjlxlist:{
+			type: Array,
+			default () {
+				return []
+			}
 		}
 	},
 	components:{
@@ -169,23 +234,46 @@
 			flower:require("@/work/static/images/flower.png"),
 			nflower:require("@/work/static/images/nflower.png"),
 			codeimg:require("@/work/static/images/meeting/code.png"),
+			info:{},
+			dfflag:false,
 		}
 	},
 	onLoad: function() {
 	},
 	methods:{
-		kaType(ite){
-			console.log(this.fylxlist)
-			return selectValue(this.fylxlist, ite);
+		checkPermi, checkRole,
+		kaType(ite,list){
+			return selectValue(list, ite);
+		},
+		getClose(){
+			this.dfflag=false
 		},
 		getDetail(e){
-			this.$emit('getDetail',e)
+			var id='';
+			var type=this.type;
+			if(type=='hyhd'||type=='hytz'){
+				id=e.conferenceId
+			}else if(type=='wdfy'){
+				id=e.speakId
+			}else if(type=='hdtz'){
+				id=e.activityId
+			}
+			this.$emit('getDetail',id)
+		},
+		getDfFn(ite){
+			if(this.type=='hdtz'){
+				this.info=ite.zxActivityUserList[0];
+			}else{
+				this.info=ite.zxConferenceUserList[0];	
+			}
+			this.dfflag=true	
 		},
 		getReadFn(e){
 			this.$emit('getReadFn',e)
 		},
 		getTuiFn(ite,txt,sh){
 			var that=this;
+			this.dfflag=false
 			if(txt=='scfk'&&sh==0){
 				uni.showModal({
 					title: '确认立案',
@@ -206,10 +294,15 @@
 					}
 				});
 			}else{
+				var id=ite.conferenceId;
+				if(this.type=='hdtz'){
+					id=ite.activityId
+				}
 				var obj={
-					id:ite.conferenceId,
+					id:id,
 					type:txt,
 					sh:sh,
+					item:ite
 				}
 				this.$emit('getTuiFn',obj)
 			}
@@ -262,5 +355,19 @@ font-size: 26rpx;margin-left: 26rpx;line-height: 52rpx;text-align: center;paddin
 		}
 	}
 }
-
+.fixedbox{position: fixed;left: 48rpx;right: 48rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-50%);z-index: 10;padding: 32rpx 40rpx 50rpx;max-height: calc(100vh - 300rpx);overflow: auto;box-sizing: border-box;
+	.ftxt{display: flex;align-items: flex-start;margin-bottom: 32rpx;flex:0 1 auto;min-width: 50%;
+		text{font-weight: bold;font-size: 26rpx;color: #CACACA;flex: 0 0 auto;min-width: 104rpx;text-align-last: justify;}
+		view{flex: 1;color: #343434;font-size: 26rpx;margin-left: 20rpx;line-height: 34rpx;}
+	}
+	.ttit{position: relative;text-align: center;font-weight: bold;font-size: 36rpx;color: #222327;margin-bottom: 34rpx;}
+	.fixedbtn{padding-top: 18rpx;
+			.btns{width: 254rpx;height: 80rpx;border-radius: 40rpx;font-weight: bold;flex: 1;
+	font-size: 30rpx;display: flex;align-items: center;justify-content: center;box-sizing: border-box;
+				&.btn1{color: #1D64E2;border: 2rpx solid #1D64E2;}
+				&.btn2{color: #ffffff;background: #1D64E2;}
+				.down{width: 26rpx;height: 26rpx;margin-right: 6rpx;flex: 0 0 auto;}
+			}	
+		}
+}
 </style>

+ 6 - 4
work/components/news/list.vue

@@ -3,19 +3,21 @@
 	<view v-if="datalist.length>0">
 		<!-- 消息通知 -->
 		<block v-if="type==1">
+			<!--  -->
 			<view class="newslist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.zxNoticeId)">
 				<view class="newsl">
-					<image :src="ntyaimg" class="imga" v-if="ite.type==0"></image>
-					<image :src="ntybimg" class="imgb" v-if="ite.type==1"></image>
+					<image :src="ntyaimg" class="imga" ></image>
+					<!-- <image :src="ntybimg" class="imgb" v-if="ite.type==1"></image>
 					<image :src="ntycimg" class="imgc" v-if="ite.type==2"></image>
-					<image :src="ntydimg" class="imgd" v-if="ite.type==3"></image>
+					<image :src="ntydimg" class="imgd" v-if="ite.type==3"></image> -->
 				</view>
 				<view class="newsr">
 					<view class="flexc over mb8">
 						<view class="tit over">{{ite.noticeTitle}}</view>
 						<view class="time">{{ite.createTime}}</view>
 					</view>
-					<view class="overtwo txt">{{ite.noticeContent}}</view>
+					<view class=" txt"><rich-text :nodes="ite.noticeContent"></rich-text></view>
+					<!-- <view class="overtwo txt">{{ite.noticeContent}}</view> -->
 				</view>
 			</view>
 		</block>

+ 39 - 17
work/components/popup/popup.vue

@@ -5,7 +5,7 @@
 		<!-- 弹窗 -->
 		<!-- 推荐优秀 -->
 		<view class="fixedbox" v-if="type=='tjyx'||type=='tjzd'">
-			<view class="ttit">推荐为优秀</view>
+			<view class="ttit">推荐为{{type=='tjyx'?'优秀':"重点"}}</view>
 			<view  class="boxs">
 				<view class="flexcj mb14">
 					<view class="ttxt"><text class="cof0">*</text>推荐意见</view>
@@ -92,7 +92,7 @@
 					</view>
 					<view class="ptb2" v-if="filelist&&filelist.length">
 						<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-							<view class="flext f15 c6" @click="getDown(ite.path)">
+							<view class="flext f15 c6" @click="getDown(ite.url)">
 								<view class="imgl"><image :src="fjimg" ></image></view>
 								<view class="tit">{{ite.name}}</view>
 							</view>
@@ -136,16 +136,16 @@
 			</view>
 		</view>
 		<!-- 暂存提案的弹窗 -->
-		<view class="fixedbox" v-if="type=='zcta'">
+		<view class="fixedbox" v-if="type=='zcta'||type=='zchy'">
 			<view class="ttit">提示</view>
 			<view  class="boxs">
-				<view class="ztit">您有一条暂存提案还未提交</view>
+				<view class="ztit">您有一条暂存信息还未提交</view>
 				<view class="ztit">是否继续编辑?</view>
-				<view class="ztit mb32">查看<text @click="getFaFn('old')">暂存提案</text></view>
+				<view class="ztit mb32">查看<text @click="getFaFn('old',type)">暂存提案</text></view>
 			</view>
 			<view class="fixedbtn flexcj">
-				<view class="btns btn1" @click="getFaFn('new')">重新发布</view>
-				<view class="btns btn2" @click="getFaFn('old')">继续发布</view>
+				<view class="btns btn1" @click="getFaFn('new',type)">重新发布</view>
+				<view class="btns btn2" @click="getFaFn('old',type)">继续发布</view>
 			</view>
 		</view>
 		<!-- 2审查反馈 -->
@@ -162,6 +162,11 @@
 					  
 					></uni-data-select>
 				</view>
+				<!-- 提案号 -->
+				<view class="mb16">
+					<view class="ttxt mb18"><text class="cof0">*</text>提案号</view>
+					<input class="input" v-model="txtnumber"  placeholder="请输入提案号"/>
+				</view>
 				<view class="mb16" >
 					<view class="ttxt mb18"><text class="cof0">*</text>答复单位</view>
 					<view @click="getRecorddwFn" class="chosebox flexc">
@@ -242,7 +247,7 @@
 					</view>
 					<view class="ptb2" v-if="filelist&&filelist.length">
 						<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-							<view class="flext f15 c6" @click="getDown(ite.path)">
+							<view class="flext f15 c6" @click="getDown(ite.url)">
 								<view class="imgl"><image :src="fjimg" ></image></view>
 								<view class="tit">{{ite.name}}</view>
 							</view>
@@ -314,7 +319,7 @@
 					</view>
 					<view class="ptb2" v-if="filelist&&filelist.length">
 						<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-							<view class="flext f15 c6" @click="getDown(ite.path)">
+							<view class="flext f15 c6" @click="getDown(ite.url)">
 								<view class="imgl"><image :src="fjimg" ></image></view>
 								<view class="tit">{{ite.name}}</view>
 							</view>
@@ -450,7 +455,7 @@
 		<!-- 会议签到二维码 -->
 		<view class="fixedbox" v-if="type=='qdm'">
 			<view class="ttit" style="margin-bottom: 80rpx;">会议签到二维码</view>
-			<image :src="codeimg" class="codeimg"></image>
+			<image :src="baseUrl+codeQr" class="codeimg"></image>
 			<view class="fixedbtn flexcj">
 				<view class="btns btn1" @click="getClose">取消</view>
 				<view class="btns btn2" @click="getcodeDown">
@@ -540,6 +545,12 @@
 					return 'add'
 				}
 			},
+			codeQr:{
+				type: String,
+				default () {
+					return ''
+				}
+			},
 			iteminfo:{},
 			xmjzinfo:{},
 			dataTree:{
@@ -624,7 +635,7 @@
 				range: [{ value: 0, text: "满意" },{ value: 1, text: "不满意" },],
 				sfrange: [{ value: 0, text: "是" },{ value: 1, text: "否" },],
 				larange:[{ value: 0, text: "立案" },{ value: 1, text: "不立案" }],
-				jbsharange:[{ value: 7, text: "不通过" },{ value: 8, text: "通过" }],
+				jbsharange:[{ value: 6, text: "不通过" },{ value: 7, text: "通过" }],
 				agreelist:[{ value: 1, text: "同意" },{ value: 2, text: "不同意" }],
 				joinlist:[{ value: 'Y', text: "是" },{ value: 'N', text: "否" }],
 				value: 0,
@@ -640,9 +651,11 @@
 				recorddwlist:[],
 				recorddwmlist:[],//协办单位
 				content:'',//文本输入
+				txtnumber:'',//提案号
 				ftype:'',//二层弹窗
 				blfsval:'',//办理方式
 				cheklist:[],
+				baseUrl:'',
 				
 				voiceflag:false,
 				voiceToken: '',
@@ -710,6 +723,7 @@
 			
 		},
 		mounted() {
+			this.baseUrl=baseUrl;
 			var that=this;
 					// #ifdef APP-PLUS
 					// 监听语音识别事件
@@ -866,15 +880,23 @@
 					if(isRecord===''){
 						this.$toast('请选择会否立案')
 						return
-					}
-					
+					}	
 					var obj={
 						isRecord:this.isRecord
 					}
+					if(this.isRecord==0&&!this.txtnumber){
+						this.$toast('请输入提案号')
+						return
+					}
 					if(this.isRecord==1&&!this.recorddw){
 						this.$toast('请选择答复单位')
 						return
 					}
+					if(this.isRecord==0){
+						obj.proposalNumber=this.txtnumber
+						
+						onj.sqmyNumber=this.txtnumber
+					}
 					if(this.isRecord==1){
 						obj.proposalUnitReplyList=this.recorddwlist
 					}
@@ -972,7 +994,7 @@
 					// }
 					var obj={
 						urgeContent:this.content,
-						urgeType:1
+						// urgeType:1
 					}
 					this.$emit('getupSubmit',obj)
 				}else if(type=='tjyx'){
@@ -1034,7 +1056,7 @@
 				var newobj={}
 				var responseText=JSON.parse(item.responseText)
 				newobj.name=responseText.originalFilename;
-				newobj.path=responseText.fileName;
+				newobj.url=responseText.fileName;
 				this.filelist.push(newobj)
 					this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
 			},
@@ -1178,8 +1200,8 @@
 						console.log('endRecognize');
 			
 					},
-			getFaFn(type){
-				this.$emit('getFaFn',type)
+			getFaFn(type,ptype){
+				this.$emit('getFaFn',type,ptype)
 			},
 			getClose(){
 				this.$emit("getClose")

+ 82 - 10
work/components/report/list.vue

@@ -40,7 +40,7 @@
 		</block>
 		<!-- 加分记录 -->
 		<block v-if="type=='jfju'">
-			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.memberId)">
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' >
 
 				<view class="tit overtwo">{{kaType(ite.boundary,jblist)}}</view>
 				<view class="ftxt">
@@ -72,21 +72,68 @@
 		</block>
 		<!-- 提案方面 -->
 		<block v-if="type==2">
-			<view class="talist">
-				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
+			<view class="talist" v-for="(ite,idx) in datalist" :key='idx'>
+				<view class="tit overtwo">{{ite.title}}</view>
+				<view class="flexc">
+					<view class="f12 co6 fw5 mr24">{{ite.isJointly}}</view>
+					<view class="f12 co6 fw5">{{ite.createTime}}</view>
+				</view>
+				<view class="mt9 flexcj">
+					<view class="btna">{{kaType(ite.proposalProgress,tajdlist)}}</view>
+					<!-- <view class="btnb">4.3 <text>分</text></view> -->
+				</view>
+			</view>
+		</block>
+		<!-- 社情民意集合 -->
+		<block v-if="type==3">
+			<view class="talist" v-for="(ite,idx) in datalist" :key='idx'>
+				<view class="tit overtwo">{{ite.title}}</view>
 				<view class="flexc">
-					<view class="f12 co6 fw5 mr24">个人提案</view>
-					<view class="f12 co6 fw5">2024-01-01</view>
+					<view class="f12 co6 fw5 mr24">{{kaType(ite.topicType,ztlxlist)}}</view>
+					<view class="f12 co6 fw5">{{ite.createTime}}</view>
 				</view>
 				<view class="mt9 flexcj">
-					<!-- <view class="btna">已立案</view> -->
-					<view class="btna">办理中</view>
-					<!-- <view class="btna">已办结</view> -->
+					<view class="btna">{{kaType(ite.sqmyProgress,tajdlist)}}</view>
+					<!-- <view class="btnb">4.3 <text>分</text></view> -->
+				</view>
+			</view>
+		</block>
+		<!-- 会议集合 -->
+		<block v-if="type==4">
+			<view class="talist" v-for="(ite,idx) in datalist" :key='idx'>
+				<view class="tit overtwo">{{ite.conferenceTitle}}</view>
+				<view class="f12 co6 fw5 mr24">{{kaType(ite.conferenceType,hylxlist)}}</view>
+				<view class="f12 co6 fw5">{{ite.conferenceDate}} {{ite.conferenceTime}}</view>
+				<view class="mt9 flexcj">
+					<!-- <view class="btna">{{kaType(ite.proposalProgress,tajdlist)}}</view> -->
+					<!-- <view class="btnb">4.3 <text>分</text></view> -->
+				</view>
+			</view>
+		</block>
+		<!-- 活动集合 -->
+		<block v-if="type==5">
+			<view class="talist" v-for="(ite,idx) in datalist" :key='idx'>
+				<view class="tit overtwo">{{ite.activityTitle}}</view>
+				<view class="flexc">
+					<view class="f12 co6 fw5 mr24">{{kaType(ite.activityType,hdlxlist)}}</view>
+					<view class="f12 co6 fw5">{{ite.activityDate}} {{ite.activityTime}}</view>
+				</view>
+				<!-- <view class="mt9 flexcj">
+					<view class="btna">{{kaType(ite.proposalProgress,tajdlist)}}</view>
 					<view class="btnb">4.3 <text>分</text></view>
+				</view> -->
+			</view>
+		</block>
+		<!-- 发言集合 -->
+		<block v-if="type==6">
+			<view class="talist" v-for="(ite,idx) in datalist" :key='idx'>
+				<view class="tit overtwo">{{ite.speakTitle}}</view>
+				<view class="flexc">
+					<view class="f12 co6 fw5 mr24">{{ite.conferenceTitle}}</view>
+					<view class="f12 co6 fw5">{{ite.speakUnit}} {{ite.speakTime}}</view>
 				</view>
 			</view>
 		</block>
-		
 		<view class="shax" v-if="wtdt">{{wtdt}}</view>
 	</view>
 	<block v-else>
@@ -133,6 +180,30 @@
 				return []
 			}
 		},
+		tajdlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		ztlxlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		hylxlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		hdlxlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
 		jflxList: {
 			type: Array,
 			default () {
@@ -164,6 +235,7 @@
 			nzanimg:require("@/work/static/images/nzanico.png"),
 			flower:require("@/work/static/images/flower.png"),
 			nflower:require("@/work/static/images/nflower.png"),
+			baseUrl:"",
 		}
 	},
 	onLoad: function() {
@@ -238,7 +310,7 @@ font-size: 26rpx;margin-left: 24rpx;line-height: 52rpx;text-align: center;paddin
 		}
 	}
 }
-.talist{width: 100%;background: #F2F6FF;border-radius: 10rpx;padding: 24rpx 24rpx;
+.talist{width: 100%;background: #F2F6FF;border-radius: 10rpx;padding: 24rpx 24rpx;margin-bottom: 24rpx;
 	.tit{font-weight: bold;font-size: 30rpx;color: #222327;margin-bottom: 16rpx;}
 	.btna{font-weight: bold;font-size: 24rpx;color: #FF4E00;}
 	.btnb{font-weight: bold;font-size: 46rpx;color: #1D64E2;

+ 301 - 0
work/components/sqmyInfo/list.vue

@@ -0,0 +1,301 @@
+<template>
+  <view>
+	<view v-if="datalist.length>0">
+		<!-- 我的提案 -->
+		<block v-if="listtype=='case'">
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.sqmyId)">
+				<view class="tit overtwo">{{ite.title}}</view>
+				<view class="ftxt" v-if="type!='xxsb'&&type!='swsqmy'">
+					<text>上报者</text>
+					<view>{{ite.sqmyName}}</view>
+				</view>
+				<view class="ftxt" v-if="type!='swsqmy'&&type!='tjyx'&&type!='tjzd'">
+					<text>主题类型</text>
+					<view>{{kaType(ite.topicType,ztlxlist)}}</view>
+				</view>
+				<view class="flexcw" v-if="type=='swsqmy'">
+					<view class="ftxt" >
+						<text>刊物类型</text>
+						<view>社情民意</view>
+					</view>
+					<view class="ftxt">
+						<text>期刊号</text>
+						<view>二十一期</view>
+					</view>
+				</view>
+				
+				<view class="ftxt" v-if="type!='swsqmy'&&type!='tjyx'&&type!='tjzd'">
+					<text>提交时间</text>
+					<view>{{ite.createTime}}</view>
+				</view>
+				<view class="ftxt" v-if="type=='tjyx'||type=='tjzd'">
+					<text>推荐截止日期</text>
+					<view>{{ite.categoryName}}</view>
+				</view>
+				<view class="ftxt" v-if="type=='xxsb'">
+					<text>信息状态</text>
+					<view>{{ite.categoryName}}</view>
+				</view>
+				<view class="ftxt" v-if="type=='swsqmy'">
+					<text>批示情况 </text>
+					<view class="co0b">已批示</view>
+					<view class="cof0">未批示</view>
+				</view>
+				
+				<!-- 委员反馈 提案办理 -->
+				<view class="casebtn flexc" v-if="type=='xxsb'||type=='xxbl'">
+					<view class="ftit">办理状态<text>待反馈</text></view>
+					<view class="btn btn3" v-if="ite.satisfaction">已反馈</view>
+					<view class="btn btn2" v-else @click.stop="getTuiFn(ite,'dwdf')">反馈意见</view>
+				</view>
+				<!-- 提案审查 -->
+				<!-- <view class="casebtn flexc" v-if="type=='xxsh'">
+					<block v-if="!ite.isRecord">
+						<view class="lftit">该提案暂未审查立案</view>
+						<view class="btn btn1" @click.stop="getTuiFn(ite,'scfk','1')">不予立案</view>
+						<view class="btn btn2" @click.stop="getTuiFn(ite,'scfk','0')">立案</view>
+					</block>
+				</view> -->
+				<!--提案交办  -->
+				<view class="casebtn flexc" v-if="type=='xxjb'">
+					<block v-if="ite.sqmyProgress>4">
+						<view class="lftit">该提案已进行交办,查看<text class="lfdet">交办详情</text></view>
+						<view class="btn btn3">已交办</view>
+					</block>
+					<block v-if="ite.sqmyProgress==4">
+						<view class="lftit">该提案暂未进行交办</view>
+						<view class="btn btn2" @click.stop="getTuiFn(ite,'xxjb')">交办</view>
+					</block>
+				</view>
+				<!-- 办结审核 -->
+				<view class="casebtn flexc" v-if="type=='bjsh'">
+					<block v-if="ite.sqmyProgress==6">
+						<view class="lftit">该提案已办结,查看<text class="lfdet">办结审核情况</text></view>
+						<view class="btn btn3">已办结</view>
+					</block>
+					<block v-if="ite.sqmyProgress==7">
+						<view class="lftit">该提案暂未办结</view>
+						<view class="btn btn2" @click.stop="getTuiFn(ite,'bjsh')">交办审核</view>
+					</block>
+				</view>
+				<!--信息审核  -->
+				<view class="casebtn flexc" v-if="type=='xxsh'">
+					<view class="ftxt flex1" style="margin-bottom: 0;">
+						<text>办理状态</text>
+						<view class="co1d">待审核</view>
+						<view class="co22">已审核</view>
+					</view>
+					<view class="btn btn2" @click.stop="getTuiFn(ite,'scfk','1')">审核</view>
+				</view>
+				<!--催办  4(不包含4) 之后 可以催办-->
+				<view class="casebtn flexc" v-if="type=='xxcb'">
+					<!-- <block v-if="ite.isRecord=='0'">
+						<view class="lftit">该提案已被催办 <text class="co1d">1次</text></view>
+						<view class="btn btn3">再次催办</view>
+					</block> -->
+					<!-- <block v-if="ite.isRecord==1">
+						<view class="lftit">该提案暂未被催办</view>
+						<view class="btn btn2" @click.stop="getTuiFn(ite,'tacb')">催办</view>
+					</block> -->
+					<view class="lftit"></view>
+					<view class="btn btn2" @click.stop="getTuiFn(ite,'tacb')">催办</view>
+				</view>
+				<!-- 推荐优秀 -->
+				<view class="casebtn flexc" v-if="type=='tjyx'">
+					<block v-if="ite.isOutstanding==0">
+						<view class="lftit" >该提案已推荐为优秀,查看<text class="lfdet">推荐理由</text></view>
+						<view class="btn btn2"><image :src="zanimg" class="zanimg"></image>推荐优秀</view>
+					</block>
+					<block v-else>
+						<view class="lftit">该提案暂未推荐为优秀</view>
+						<view class="btn btn3"  @click.stop="getTuiFn(ite,'tjyx')"><image :src="nzanimg" class="zanimg"></image>推荐优秀</view>
+					</block>
+				</view>
+				<!-- 推荐重点 -->
+				<view class="casebtn flexc" v-if="type=='tjzd'">
+					<block v-if="ite.isKeyPoint==0">
+						<view class="lftit" >该提案已推荐为重点,查看<text class="lfdet">推荐理由</text></view>
+						<view class="btn btn2"  @click.stop="getTuiFn(ite,'tjzd')"><image :src="start" class="staimg"></image>推荐重点</view>
+					</block>
+					<block v-else>
+						<view class="lftit" >该提案暂未推荐为重点</view>
+						<view class="btn btn3" @click.stop="getTuiFn(ite,'tjzd')"><image :src="nstart" class="staimg"></image>推荐重点</view>
+					</block>
+				</view>
+				<!-- 质量评议 -->
+				<!-- <view class="casebtn flexc" v-if="type=='lmta'">
+					<view class="lftit">该提案暂未进行质量评议</view>
+					<view class="lftit">该提案已评议,查看<text class="lfdet">评议详情</text></view>
+					<view class="btn btn2" @click="getTuiFn('zlpy')"><image :src="flower" class="staimg"></image>质量评议</view>
+					<view class="btn btn3"><image :src="nflower" class="staimg"></image>已评议</view>
+				</view> -->
+			</view>
+		</block>
+		<view class="shax" v-if="wtdt">{{wtdt}}</view>
+	</view>
+	<block v-else>
+		<no-data></no-data>
+	</block>
+  </view>
+</template>
+
+<script>
+	import { selectValue } from '@/utils/common.js';
+	import noData from "@/components/nodata/nodata.vue"
+  export default {
+	props:{
+		datalist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		ztlxlist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		tajdlist:{
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		wtdt:{
+			type: String,
+			default () {
+				return ''
+			}
+		},
+		type:{
+			type: [String,Number],
+			default () {
+				return ''
+			}
+		},
+		listtype:{
+			type: [String,Number],
+			default () {
+				return ''
+			}
+		}
+	},
+	components:{
+		noData
+	},
+	data(){
+		return{
+			start:require("@/work/static/images/start.png"),
+			nstart:require("@/work/static/images/nstart.png"),
+			zanimg:require("@/work/static/images/zanico.png"),
+			nzanimg:require("@/work/static/images/nzanico.png"),
+			flower:require("@/work/static/images/flower.png"),
+			nflower:require("@/work/static/images/nflower.png"),
+		}
+	},
+	onLoad: function() {
+	},
+	methods:{
+		kaType(ite,list){
+			return selectValue(list, ite);
+		},
+		getDetail(e){
+			this.$emit('getDetail',e)
+		},
+		getTuiFn(ite,txt,sh){
+			var that=this;
+			console.log(txt,2)
+			if(txt=='scfk'&&sh==0){
+				uni.showModal({
+					title: '确认立案',
+					content: "是否确认立案",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							var obj={
+								id:ite.sqmyId,
+								type:txt,
+								sh:sh,
+							}
+							that.$emit('getTuiFn',obj)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			}else if(txt=='lmta'&&sh==1){
+				uni.showModal({
+					title: '确认联名',
+					content: "是否确认联名",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							var obj={
+								id:ite.sqmyId,
+								type:txt,
+								sh:sh,
+							}
+							that.$emit('getTuiFn',obj)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			}else{
+				var obj={
+					id:ite.sqmyId,
+					type:txt,
+					sh:sh,
+				}
+				this.$emit('getTuiFn',obj)
+			}
+			
+		},
+		typeFn(data){
+			if(data){
+				var newArr=[]
+				var astr=data.split('-')
+				astr.forEach(ite=>{
+					var a=ite.substring(0,5);
+					newArr.push(a)
+				})
+				return newArr.join('-')
+			}else{
+				return ''
+			}
+		},
+	},
+	
+  }
+</script>
+
+<style lang="scss" scoped>
+.caselist{background: #FFFFFF;border-radius: 30rpx;margin-top: 24rpx;padding: 38rpx 24rpx 8rpx;
+	.tit{font-weight: bold;font-size: 32rpx;color: #222327;margin-bottom: 42rpx;}
+	.ftxt{display: flex;align-items: flex-start;margin-bottom: 32rpx;flex:0 1 auto;min-width: 50%;
+		text{font-weight: bold;font-size: 26rpx;color: #CACACA;flex: 0 0 auto;min-width: 104rpx;text-align-last: justify;}
+		view{flex: 1;color: #343434;font-size: 26rpx;margin-left: 20rpx;line-height: 34rpx;}
+	}
+	.casebtn{padding: 24rpx 0;border-top: 2rpx solid #E6E6E6;
+		.ftit{font-weight: bold;font-size: 26rpx;color: #CACACA;flex: 1;
+			text{color: $com-cd3;margin-left: 20rpx;font-weight:500;min-width: 104rpx;text-align-last: justify;}
+		}
+		.lftit{font-weight: 500;font-size: 26rpx;color: #666666;flex:1;
+			.lfdet{color: $com-cd3;text-decoration: underline;}
+		}
+		.zanimg{width: 22rpx;height: 20rpx;margin-right: 14rpx;}
+		.staimg{width: 24rpx;height: 24rpx;margin-right: 14rpx;}
+		.btn{min-width: 118rpx;height: 52rpx;border-radius: 26rpx;font-weight: bold;flex: 0 0 auto;display: flex;align-items: center;
+font-size: 26rpx;margin-left: 26rpx;line-height: 52rpx;text-align: center;padding: 0 32rpx;box-sizing: border-box;
+		&.btn1{background: #FFEDED;color: #FF4141;}
+		&.btn2{background: #E4EEFF;color: #1D64E2;}
+		&.btn3{background: #ECECEC;color: #666666;}
+		
+		}
+	}
+}
+
+</style>

+ 11 - 2
work/components/zb-table/zb-tables.vue

@@ -102,8 +102,9 @@
 						  <!-- 查看详情 -->
 						  <template v-if="ren.type==='detail'" >
 						    <view :class="ren.class||''" style="cursor: pointer" @click.stop="">
-						      {{ite.filters?itemFilter(item,ite):formatterAction(item,ite,index,i)}}
-							  <text  v-if="item.isJoin=='否'" @click.stop="$emit(ren.func,item,index)" style="color:#1D64E2">{{item.isJoin=='否'?'(查看详情)':''}}</text>
+								<block v-if="item.isJoin">{{item.isJoin=='N'?'否':'是'}}</block>
+								<block v-else>--</block>
+							  <text  v-if="item.isJoin=='N'" @click.stop="$emit(ren.func,item,index)" style="color:#1D64E2">({{kayType(item.leaveType,parameter[ite.key])}})</text>
 						    </view>
 						  </template>
                           <template v-else>
@@ -346,6 +347,14 @@
                             {{ren.name}}
                           </view>
                         </template>
+						<!-- 查看详情 -->
+						<template v-if="ren.type==='detail'" >
+						  <view :class="ren.class||''" style="cursor: pointer" @click.stop="">
+								<block v-if="item.isJoin">{{item.isJoin=='N'?'否':'是'}}</block>
+								<block v-else>--</block>
+								<text  v-if="item.isJoin=='N'" @click.stop="$emit(ren.func,item,index)" style="color:#1D64E2">({{kayType(item.leaveType,parameter[ite.key])}})</text>
+						  </view>
+						</template>
                         <template v-else>
                           <button
                               :class="ren.class||''"

+ 20 - 19
work/pages/case/add.vue

@@ -19,7 +19,7 @@
 						<view class="txt"><text>提案者:</text>{{datainfo.proposalName}}</view>
 						<view class="txt"><text>联系方式:</text>{{datainfo.proposalPhone}}</view>
 						<view class="txt"><text>界别:</text>{{kayType(datainfo.boundary,jblist)}}</view>
-						<view class="txt"><text>党派:</text>{{datainfo.partyAffiliation}}</view>
+						<view class="txt"><text>党派:</text>{{kayType(datainfo.partyAffiliation,dplist)}}</view>
 						<view class="txt"><text>联系地址:</text>{{datainfo.contactAddress}}</view>
 					</view>
 					<image :src="infobg" class="infobg"></image>
@@ -87,7 +87,7 @@
 				</view>
 				<view class="ptb12" v-if="filelist&&filelist.length">
 					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-						<view class="flext" @click="getDown(ite.path)">
+						<view class="flext" @click="getDown(ite.url)">
 							<view class="imgl"><image :src="fjimg" ></image></view>
 							<view class="tit">{{ite.name}}</view>
 						</view>
@@ -140,7 +140,7 @@
 				</uni-forms-item>
 				<uni-forms-item label="需要办理的协商方式" name="negotiateType">
 					<view class="matab">
-						<view class="list" :class="checkidx.indexOf(ite.value)!=-1?'act':''" v-for="(ite,idx) in matterlist" :key='idx' @click="getCheck(ite.value)">{{ite.label}}</view>
+						<view class="list" :class="checkidx.indexOf(ite.label)!=-1?'act':''" v-for="(ite,idx) in matterlist" :key='idx' @click="getCheck(ite.label)">{{ite.label}}</view>
 					</view>
 				</uni-forms-item>
 				<uni-forms-item label="建议承办的单位" name="proposedContractor">
@@ -209,11 +209,11 @@
 				datainfo:{
 					"proposalUserId":this.$store.state.user.userId,//提案人ID
 					"title":"",//标题
-					"proposalName":this.$store.state.user.name,//提案人姓名
-					"proposalPhone":this.$store.state.user.phonenumber,//提案人手机号码
-					"boundary":"1",//界别
-					"partyAffiliation":"中国共产党",//党派
-					"contactAddress":"潜山市政协委员",//联系地址
+					"proposalName":this.$store.state.user.memberInfo.name,//提案人姓名
+					"proposalPhone":this.$store.state.user.memberInfo.phonenumber,//提案人手机号码
+					"boundary":this.$store.state.user.memberInfo.boundary,//界别
+					"partyAffiliation":this.$store.state.user.memberInfo.partyAffiliation,//党派
+					"contactAddress":this.$store.state.user.memberInfo.unit,//联系地址
 					"categoryId":"",//提案类别id
 					"categoryName":"",//提案类别
 					"proposalType":'1',//提案类型(0大会提案 1平时提案)
@@ -237,6 +237,7 @@
 				sfList:[{text: '是',value: '是'},{text: '否',value: '否'}],
 				matterlist:[],
 				jblist:[],
+				dplist:[],
 				checkidx:[],
 				editorCtx:'',
 				tary:'',
@@ -310,16 +311,16 @@
 					}
 				})
 				// 党派
-				// getDictionaryFn('political_parties').then(res=>{
-				// 	if(res.code==200&&res.data.length){
-				// 		this.jblist = res.data.map(v => {
-				// 			return {
-				// 				label: v.dictLabel,
-				// 				value: v.dictValue
-				// 			}
-				// 		})
-				// 	}
-				// })
+				getDictionaryFn('political_parties').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.dplist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
 			},
 			getDetail(){
 				var that=this;
@@ -447,7 +448,7 @@
 				var newobj={}
 				var responseText=JSON.parse(item.responseText)
 				newobj.name=responseText.originalFilename;
-				newobj.path=responseText.fileName;
+				newobj.url=responseText.fileName;
 				this.filelist.push(newobj)
 				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
 			},

+ 25 - 3
work/pages/case/details.vue

@@ -29,7 +29,8 @@
 					<view class="txt"> <text>提案类别</text>{{datainfo.categoryName}}</view>
 					<view class="txt"><text>提案类型</text>{{datainfo.proposalType==0?'大会提案':'平时提案'}}</view>
 					<view class="txt"><text>提交时间</text>{{datainfo.createTime}}</view>
-					<view class="txt"><text>工作单位及职务</text>{{datainfo.contactAddress}}{{datainfo.unit}}</view>
+					<view class="txt"><text>工作单位及职务</text>{{datainfo.unit}}</view>
+					<!-- {{datainfo.contactAddress}} -->
 				</view>
 				<view class="titinf " :class="zheList[0].zheflag?'nact':'act'">
 					<view class="bortop"></view>
@@ -38,7 +39,7 @@
 					<view class="txt"><text>经过调研</text>{{datainfo.isSurvey}}</view>
 					<view class="txt"><text>第一次提出</text>{{datainfo.isFirst}}</view>
 					<view class="txt"><text>本人撰写</text>{{datainfo.isPerson}}</view>
-					<view class="txt"> <text>需要办理的协商方式</text>{{kaType(datainfo.negotiateType)}}</view>
+					<view class="txt"> <text>需要办理的协商方式</text>{{datainfo.negotiateType}}</view>
 					<view class="txt"><text>建议承办的单位</text>{{datainfo.proposedContractor}}</view>
 				</view>
 				<!-- 折叠 -->
@@ -452,6 +453,27 @@
 					}
 				})
 			},
+			getDown(e){
+				 uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
 		}
 	}
 </script>
@@ -536,7 +558,7 @@
 // 按钮
 	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;display: flex;flex-wrap: wrap;
 		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
-		justify-content: center;margin:0 12rpx;flex:1;flex: 0 0 auto;
+		justify-content: center;margin:0 12rpx;flex:1;
 			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
 			&.btn2{background: #1D64E2;color: #ffffff;}
 		}

+ 46 - 12
work/pages/case/mine.vue

@@ -7,12 +7,12 @@
 						<image :src="backimg" ></image>
 					</view>
 				</block>
-				<block slot="right">
+				<!-- <block slot="right">
 					<view class="topr">
 						<image :src="ccicoimg"></image>
 						<view>提案查重</view>
 					</view>
-				</block>
+				</block> -->
 			</uni-nav-bar>
 			<view class="plr12 mt18">
 				<view class="search flex0 mb10">
@@ -22,9 +22,8 @@
 			</view>
 			<view class="tablists flexc mb20">
 				<block v-for="(ite,idx) in tabList" >
-					<view  v-if="checkPermi([ite.limit])" @click="getTabFn(ite)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
+					<view  v-if="!ite.limit||ite.limit&&checkPermi([ite.limit])" @click="getTabFn(ite)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
 				</block>
-				
 			</view>
 			<view style="height: 56rpx;"></view>
 			<view class="lbtab flexc">
@@ -66,7 +65,7 @@
 		
 		
 		<!-- 弹窗 -->
-		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" :mycdlist="mycdlist" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
+		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" :mycdlist="mycdlist" @getFaFn="getFaFn" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
 	</view>
 </template>
 
@@ -94,7 +93,7 @@
 				// {tit:'征集通知',val:0}, 提案催办 目前看所有
 				tabList:[{tit:'提案审查',jd:1,val:'tasc',limit:'proposalInfo:info:isRecord'},{tit:'提案交办',jd:3,val:'tajb',},
 				{tit:'提案办理',jd:4,val:'tabl',},{tit:'办结审核',jd:6,val:'jbsh',},
-				{tit:'提案催办',val:'tacb',},
+				{tit:'提案催办',val:'tacb',},{tit:'接收催办',val:'jstacb',},
 				{tit:'我的提案',val:'wdta',},{tit:'联名提案',val:'lmta',},{tit:'推荐优秀',val:'tjyx'},
 				{tit:'推荐重点',val:'tjzd'},{tit:'公开提案',val:'gkta'},
 				],
@@ -130,6 +129,7 @@
 				mycdlist:[],
 				id:'',
 				userId:this.$store.state.user.userId,
+				deptId:this.$store.state.user.deptId,
 			}
 		},
 		onUnload(){
@@ -170,11 +170,11 @@
 				})
 				
 				// 协办单位
-				getDeptTree().then(res=>{
-					if(res.code==200){
-						this.deptTree=res.data
-					}
-				})
+				// getDeptTree().then(res=>{
+				// 	if(res.code==200){
+				// 		this.deptTree=res.data
+				// 	}
+				// })
 				// 办理方式
 				getDictionaryFn('negotiation_mode').then(res=>{
 					if(res.code==200&&res.data.length){
@@ -209,6 +209,13 @@
 					}
 				})
 			},
+			getFaFn(type,ptype){
+				this.ptype='';
+				if(ptype=='zcta'){
+					if(type=='new'){uni.removeStorageSync('tjtaList')}
+					this.$tab.navigateTo('/work/pages/case/add?type='+type)		
+				}	
+			},
 			getConfirm(){
 				this.pageNum=1;
 				this.list=[];
@@ -365,6 +372,7 @@
 				}else if(type=='tacb'){
 					var params=JSON.parse(JSON.stringify(e))
 					params.scoreId=this.id
+					params.urgeType=1
 					getInfourgeFn(params).then(res=>{
 						if(res.code==200){
 							this.$toast("提案办结成功");
@@ -485,7 +493,7 @@
 				this.$tab.navigateTo('/work/pages/case/talbclass?data='+encodeURIComponent(JSON.stringify(obj)))
 			},
 			getChFn(){
-				this.$tab.navigateTo('/work/pages/case/tacheck')
+				// this.$tab.navigateTo('/work/pages/case/tacheck')
 			},
 			
 			getDetail(data){
@@ -546,6 +554,32 @@
 							this.$toast(res.msg)
 						}
 					}) 
+				}else if(this.tabidx=='jstacb'){
+					params.acceptDeptId=this.deptId
+					geturgeListFn(params).then(res=>{
+						if(res.code==200){
+							if (res.rows.length < this.pageSize) {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							} else {
+								var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+								if (num < res.total) {
+									this.reachflag = true
+									this.wtdt = '上拉加载更多'
+								} else {
+									this.reachflag = false
+									this.wtdt = '到底了~';
+								}
+							}
+							if (this.pageNum == 1) {
+								this.list = res.rows;
+							} else {
+								this.list = this.list.concat(res.rows)
+							}
+						}else{
+							this.$toast(res.msg)
+						}
+					})
 				}else{
 					getCaseListFn(params).then(res=>{
 						if(res.code==200){

+ 283 - 0
work/pages/meeting/activedetails.vue

@@ -0,0 +1,283 @@
+<template>
+	<view class="detail">
+		<!-- 主体 -->
+		<view class="deboxs">
+			<view class="bghbox"></view>
+			<view class="dbox fmt30">
+				<view class="dtit">{{datainfo.activityTitle}}</view>
+				<view class="titinf">
+					<view class="txt"><text>活动日期</text>{{datainfo.activityDate}}</view>
+					<view class="txt"><text>活动时间</text>{{datainfo.activityTime}}</view>
+					<view class="txt"><text>活动地点</text>{{datainfo.activityAddress}}</view>
+					<view class="txt"><text>参会人员</text>
+						<block v-if="datainfo.zxActivityUserList&&datainfo.zxActivityUserList.length">
+							<view v-for="(ite,idx) in datainfo.zxActivityUserList" :key="idx">{{ite.userName||ite.name}}
+								<block v-if="idx<datainfo.zxActivityUserList.length-1">,</block>
+							</view>
+						</block>
+					
+					</view>
+					<!-- <view class="txt"><text>备注</text>{{datainfo.remark}}</view> -->
+				</view>
+			</view>
+			<view class="dbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>活动内容</view>
+					</view>
+				</view>
+				<view class="txtbox" :class="zheList[0].zheflag?'nact':'act'">
+					<rich-text :nodes="datainfo.activityDetails"></rich-text>
+				</view>
+				<view class="zhebox" :class="zheList[0].zheflag?'':'act'" @click="getZheFn(0)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[0].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+				<view class="bortop"></view>
+				<view class="ftit mb14">附件信息</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.url)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+
+			<view class="fbtns" style="flex-wrap: wrap;">
+				<view class="btn btn1" @click="getDelFn" v-if="checkPermi(['zxActivity:activity:remove'])">删除</view>
+				<view class="btn btn1" @click="getEditFn" v-if="checkPermi(['zxActivity:activity:edit'])">修改</view>
+				<view class="btn btn2" @click="getScfkFn('dffk')" v-if="checkPermi(['zxActivity:activity:updateReply'])">答复反馈</view>
+			</view>
+			
+		</view>
+		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" :mycdlist="mycdlist" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import popUp from "@/work/components/popup/popup.vue"
+	import noData from "@/components/nodata/nodata.vue"
+	import {getDeptTree} from"@/api/mine/mine.js"
+	import { selectValue,selectValuetext } from '@/utils/common.js';
+	import {getzxActivityDetailFn,getzxActivityDelFn,getzxActivityReplyFn} from "@/api/mine/meeting.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		components:{popUp,noData},
+		data(){
+			return{
+				bgimg:require("@/static/images/bg.png"),
+				fjimg:require("@/work/static/images/fjimg.png"),
+				filelist:[], 
+				
+				tabidx:5,
+				titimg:require("@/work/static/images/titbg.png"),
+				upsimg:require("@/work/static/images/ups.png"),
+				zheList:[{val:0,zheflag:true,moreflag:true},],
+				ptype:'',
+				datainfo:{},
+				tary:''
+			}
+		},
+		onUnload(){
+			uni.$off('refreshdetail')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
+		},
+		methods:{
+			checkPermi, checkRole,
+			kaType(ite){
+				if(ite){
+					var newArr=ite.split(',')
+					var actions=[];
+					var datas=this.matterList;
+					newArr.forEach(ite=>{
+						Object.keys(datas).some((key) => {
+							if (datas[key].value == ('' + ite)) {
+								actions.push(datas[key].label);
+								return true;
+							}
+						})
+					})
+					return actions.join(' ')
+				}
+			},
+			typeFormat(ite,list){
+				return selectValue(list, ite);
+			},
+			typeFormattext(ite,list){
+				return selectValuetext(list, ite);
+			},
+			init(){
+
+			},
+			getupSubmit(e){
+				var that=this;
+				var type=this.ptype;
+				if(type=='dffk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.proposalId=this.id
+					getzxActivityReplyFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("回复成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}
+			},
+			getEditFn(){
+				this.$tab.navigateTo('/work/pages/meeting/addactive?type=edit&id='+this.id)
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getScfkFn(type){
+				this.ptype=type
+			},
+			getZheFn(idx){
+				this.zheList[idx].zheflag=!this.zheList[idx].zheflag
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该活动",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							getzxActivityDelFn(that.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功')
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getDetail(){
+				var params={
+					activityId:this.id
+				}
+				getzxActivityDetailFn(params).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						if(res.data.zxFjList&&res.data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
+						}
+					}
+				})
+			},
+			getDown(e){
+				 uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.detail{display: flex;flex-direction: column;height: 100vh;}
+
+.deboxs{flex:1;overflow: auto;padding-bottom: 30rpx;
+	.bghbox{height: 80rpx;background-color: $com-cd3;}
+	.dbox{background: #FFFFFF;border-radius: 10rpx;margin: 0 24rpx 24rpx;padding: 36rpx 24rpx 24rpx;
+		.dtit{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 48rpx;
+			text{color: #E70000;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+		}
+		.titinf{display: flex;flex-wrap: wrap;flex-direction: column;
+			&.nact{height: 0;overflow: hidden;}
+			&.act{height: auto;}
+			.txt{font-weight: 500;font-size: 26rpx;margin-bottom: 20rpx;color: #222327;display: flex;align-items: flex-start;wi
+				&.nact{height: 200rpx;overflow: hidden;}
+				&.act{height: auto;}
+				text{color: #AAAAAA;min-width: 104rpx;text-align-last: justify;flex: 0 0 auto;margin-right: 20rpx;
+					&.w65{width: 130rpx;}
+				}
+				// view{text-indent: 2rem;}
+			}
+		}
+		.txtbox{text-indent: 2rem;line-height: 36rpx;font-weight: 500;font-size: 26rpx;color: #222327;
+			&.nact{max-height: 432rpx;overflow: hidden;}
+			&.act{height: auto;}
+		}
+		// tab
+		.dbtabs{
+			.dbtab{font-weight: 500;font-size: 26rpx;height: 60rpx;line-height: 60rpx;color: #666666;position: relative;padding: 0 38rpx;margin-left: 8rpx;
+			&.act{font-weight: bold;font-size: 30rpx;color: #222327;
+				&::after{content: "";width: 48rpx;height: 4rpx;background: #3699FF;border-radius: 2rpx;position: absolute;left: 50%;margin-left: -24rpx;bottom: -4rpx;}
+			}
+			}
+		}
+		
+		
+		.bortop{border-top: 2rpx dashed #C1C1C1;margin-bottom: 32rpx;margin-top: 14rpx;width: 100%;}
+		.ftit{font-weight: bold;font-size: 26rpx;color: #222327;}
+		.zhebox{display: flex;align-items: center;flex-direction: column;padding: 24rpx 0;
+			image{width: 28rpx;height: 30rpx;margin-bottom: 10rpx;transition: all 0.3s;}
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+			view{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		}
+		// 附件
+		.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+			// image{margin-right: 18rpx;flex: 0 0 auto;}
+			.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 6rpx;flex: 0 0 auto;
+				image{width: 26rpx;height: 24rpx;}
+				}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;flex:1;}
+			.fjlook{font-weight: 500;font-size: 26rpx;color: #1D64E2;flex: 0 0 auto;margin-left: 20rpx;margin-top: 4rpx;}
+		}
+	}
+	
+}
+// 按钮
+	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;display: flex;flex-wrap: wrap;
+		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
+		justify-content: center;margin:0 12rpx;flex:1;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+		}
+	}
+</style>

+ 170 - 13
work/pages/meeting/add.vue

@@ -14,6 +14,15 @@
 					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.conferenceTitle" placeholder="请输入会议名称" />
 					<!-- <view class="edtip pa">* 标题前无须加关于,标题后无须加的建议,系统将自动填写</view> -->
 				</uni-forms-item>
+				<!-- 会议类型 -->
+				<picker  range-key='label' :value="hylxidx" :range="hylxlist"   @change='bindDateChangec'>
+					<uni-forms-item label="会议类型" name="activityId" required>
+						<view class="lbtabp">
+							<view v-if="datainfo.conferenceType&&!hylxtxt">{{statusFormat(datainfo.conferenceType,hylxlist,'hylx')}}</view>
+							<view v-else :class="hylxtxt?'':'coa'">{{hylxtxt||"请选择会议类型"}}</view>
+						</view>	
+					</uni-forms-item>
+				</picker>
 				<picker  mode="date"   @change='bindDateChangea'>
 					<uni-forms-item label="会议日期" name="conferenceDate" required>
 						<view class="lbtabp">
@@ -46,13 +55,51 @@
 				</view>
 				<view class="peoBox">
 					<block v-if="datainfo.zxConferenceUserList&&datainfo.zxConferenceUserList.length">
-						<view v-for="(ite,idx) in datainfo.zxConferenceUserList" :key="idx">{{ite.userName}}
+						<view v-for="(ite,idx) in datainfo.zxConferenceUserList" :key="idx">{{ite.userName||ite.name}}
 							<block v-if="idx<datainfo.zxConferenceUserList.length-1">,</block>
 						</view>
 					</block>
 					<view class="coa" v-else>请选择参会人员</view>
 				</view>
 			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>附件内容</view>
+					</view>
+				</view>
+				<view class="flexcj mb10">
+					<view class="fw f15 co34">添加附件</view>
+					<view class="fjadd"><lsj-upload
+						    ref="lsjUpload"
+						    childId="upload1"
+						    :width="width"
+						    :height="height"
+						    :option="option"
+						    :size="size"
+						    :formats="formats"
+						    :debug="debug"
+						    :instantly="instantly"
+						    @progress=""
+							@uploadEnd="onuploadEnd" >
+						        <view class="btn" :style="{width: width,height: height}">上传附件</view>
+						</lsj-upload>
+					</view>
+				</view>
+				<view class="ptb12" v-if="filelist&&filelist.length">
+					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
+						<view class="flext" @click="getDown(ite.url)">
+							<view class="imgl"><image :src="fjimg" ></image></view>
+							<view class="tit">{{ite.name}}</view>
+						</view>
+						<!-- 删除 -->
+						<view class="delimg flex0" @click.stop="getDelFj(idx)">
+							<image :src="delimg"></image>
+						</view>
+					</view>
+				</view>
+			</view>
 			<view class="boxs pdbox">
 				<view class="titbox mb20">
 					<view class="tit flexc">
@@ -62,8 +109,8 @@
 				<textarea placeholder="请输入备注信息" v-model="datainfo.remark"></textarea>
 			</view>
 			<view class="addbtn">
-				<view class="btn btn1" @click="getZanFnt">暂存</view>
-				<view class="btn btn2" @click="getSubmit">提交</view>
+				<!-- <view class="btn btn1" @click="getZanFnt">暂存</view> -->
+				<view class="btn btn2" v-if="checkPermi(['zxNotice:notice:add'])&&pagetype=='add'||checkPermi(['zxNotice:notice:edit'])&&pagetype=='edit'" @click="getSubmit">提交</view>
 			</view>
 		</view>
 		</uni-forms>
@@ -71,15 +118,51 @@
 </template>
 
 <script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import config from '@/config'
 	const baseUrl = config.baseUrl
 	import { getToken } from '@/utils/auth'
-	import { selectValue } from '@/utils/common.js';
+	import { selectValue,selectValueKey } from '@/utils/common.js';
 	import {getMeetAddFn,getMeetDetaiFn,getMeetEditFn} from "@/api/mine/meeting.js"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
 		data(){
 			return{
+				//附件
+				  option: {
+				    // 上传服务器地址,需要替换为你的接口地址
+				    url: baseUrl+'/common/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
+				    // 上传附件的key
+				    name: 'file',
+				     // 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
+				    header: {
+				        // 示例参数可删除
+				        'Authorization':  'Bearer ' + getToken(),
+				    },
+				    // 根据你接口需求自定义body参数
+				    formData: {}
+				},
+				// 选择文件后是否立即自动上传,true=选择后立即上传
+				instantly: true,
+				// 必传宽高且宽高应与slot宽高保持一致
+				width: '',
+				height: '48rpx',
+				// 限制允许上传的格式,空串=不限制,默认为空
+				formats: 'doc,docx,xls,xlsx,ppt,txt,pdf,zip,rar,word',
+				// 文件上传大小限制
+				size: 100,
+				// 文件数量限制 默认10
+				count: 5,
+				// 文件回显列表
+				files: new Map(),
+				// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+				wxFiles: [],
+				// 是否打印日志
+				debug: false,
+				filelist:[], 
+				fjimg:require("@/work/static/images/fjimg.png"),
+				delimg:require("@/work/static/images/delimg.png"),
+				
 				titimg:require("@/work/static/images/titbg.png"),
 				addimg:require("@/work/static/images/meeting/add.png"),
 				datainfo:{
@@ -93,6 +176,9 @@
 				id:"",
 				pagetype:'add',
 				editinfo:'',
+				hylxlist:[],
+				hylxtxt:'',
+				hylxidx:"",
 			}
 		},
 		onUnload(){
@@ -107,16 +193,39 @@
 				this.pagetype='edit'
 				this.getDetail()
 			}
+			this.init()
 			if(e.type=='old'&&uni.getStorageSync('cjhyList')){
 				var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('cjhyList')))
 				var params=newObj.params;
 				this.datainfo=params;
+				this.filelist=this.datainfo.zxFjList
 			}
 		},
 		methods:{
+			checkPermi, checkRole,
+			// 会议类型
+			init(){
+				getDictionaryFn('conference_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.hylxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value:v.dictValue
+							}
+						})
+					}
+				})
+			},
 			kayType(ite,list){
 				return selectValue(list, ite);
 			},
+			statusFormat(ite,list,type) {
+				var aite=selectValueKey(list, ite);
+				if(type=='hylx'){
+					this.hylxidx=aite.key
+				}
+				return aite.actions;
+			},
 			bindDateChangea(e){
 				var val=e.detail.value;
 				this.datainfo.conferenceDate=val;
@@ -125,21 +234,23 @@
 				var val=e.detail.value;
 				this.datainfo.conferenceTime=val+':00';
 			},
+			bindDateChangec(e){
+				var val=e.detail.value;
+				this.datainfo.conferenceType=this.hylxlist[val].value;
+				this.hylxtxt=this.hylxlist[val].label;	
+			},
 			getDetail(){
 				var that=this;
-				getCaseDetailFn(this.id).then(res=>{
+				var params={
+					conferenceId:this.id
+				}
+				getMeetDetaiFn(params).then(res=>{
 					if(res.code==200){
 						var data=res.data;
 						this.datainfo=res.data;
-						var taryList=data.proposalUserList;
-						if(taryList&&taryList.length){
-							var newArr=[]
-							taryList.forEach(ite=>{
-								newArr.push(ite.name)
-							})
-							this.tary=newArr.join('/')
+						if(data.zxFjList&&data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(data.zxFjList))
 						}
-						// this.dwdetList=res.data.proposalUnitReplyList;
 					}
 				})
 			},
@@ -189,6 +300,7 @@
 					getMeetAddFn(params).then(res=>{
 						if(res.code==200){
 							that.$toast("提交成功")
+							uni.removeStorageSync('cjhyList')
 							uni.$emit("refreshlist")
 							setTimeout(function(){
 								uni.navigateBack({
@@ -213,6 +325,51 @@
 					
 				}
 			},
+			onuploadEnd(item) {
+				var newobj={}
+				var responseText=JSON.parse(item.responseText)
+				newobj.name=responseText.originalFilename;
+				newobj.url=responseText.fileName;
+				this.filelist.push(newobj)
+				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
+			},
+			getDelFj(idx){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							that.filelist.splice(idx,1)
+							that.datainfo.zxFjList=JSON.parse(JSON.stringify(that.filelist))
+						} else if (res.cancel) {
+						}
+					}
+				});
+			},
+			getDown(e){
+					  uni.showLoading({
+					  	title: '加载中'
+					  });
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
 		}
 	}
 </script>

+ 491 - 0
work/pages/meeting/addactive.vue

@@ -0,0 +1,491 @@
+<template>
+	<view >
+		<view class="bgtop"></view>
+		<uni-forms :modelValue="datainfo">
+		<view class="addbox">
+			<view class="boxs pdbox" style="padding-bottom: 2rpx;">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>基本详情</view>
+					</view>
+				</view>
+				<uni-forms-item label="活动名称" name="activityTitle" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.activityTitle" placeholder="请输入活动名称" />
+					<!-- <view class="edtip pa">* 标题前无须加关于,标题后无须加的建议,系统将自动填写</view> -->
+				</uni-forms-item>
+				<picker  range-key='label' :value="hdlxidx" :range="hdlxlist"   @change='bindDateChangec'>
+					<uni-forms-item label="活动类型" name="activityId" required>
+						<view class="lbtabp">
+							<view v-if="datainfo.activityType&&!hdlxtxt">{{statusFormat(datainfo.activityType,hdlxlist,'hdlx')}}</view>
+							<view v-else :class="hdlxtxt?'':'coa'">{{hdlxtxt||"请选择活动类型"}}</view>
+						</view>	
+					</uni-forms-item>
+				</picker>
+				<picker  mode="date"   @change='bindDateChangea'>
+					<uni-forms-item label="活动日期" name="activityDate" required>
+						<view class="lbtabp">
+							<view :class="datainfo.activityDate?'':'coa'">{{datainfo.activityDate || "请选择活动日期"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<picker  mode="time"  @change='bindDateChangeb'>
+					<uni-forms-item label="活动时间" name="activityTime" required>
+						<view class="lbtabp">
+							<view :class="datainfo.activityTime?'':'coa'">{{datainfo.activityTime || "请选择活动时间"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<uni-forms-item label="活动地点" name="activityAddress" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.activityAddress" placeholder="请输入活动地点" />
+				</uni-forms-item>
+			</view>
+			<!-- 参会人员 -->
+			<view class="boxs pdbox">
+				<view class="titbox mb14 flexc">
+					<view class="tit flexc flex1">
+						<image :src="titimg"></image>
+						<view>参会人员</view>
+					</view>
+					<view class="addpeo" @click="getAddPeoFn">
+						<image :src="addimg"></image>
+						添加人员
+					</view>
+				</view>
+				<view class="peoBox">
+					<block v-if="datainfo.zxActivityUserList&&datainfo.zxActivityUserList.length">
+						<view v-for="(ite,idx) in datainfo.zxActivityUserList" :key="idx">{{ite.name||ite.userName}}
+							<block v-if="idx<datainfo.zxActivityUserList.length-1">,</block>
+						</view>
+					</block>
+					<view class="coa" v-else>请选择参会人员</view>
+				</view>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>附件内容</view>
+					</view>
+				</view>
+				<view class="flexcj mb10">
+					<view class="fw f15 co34">添加附件</view>
+					<view class="fjadd"><lsj-upload
+						    ref="lsjUpload"
+						    childId="upload1"
+						    :width="width"
+						    :height="height"
+						    :option="option"
+						    :size="size"
+						    :formats="formats"
+						    :debug="debug"
+						    :instantly="instantly"
+						    @progress=""
+							@uploadEnd="onuploadEnd" >
+						        <view class="btn" :style="{width: width,height: height}">上传附件</view>
+						</lsj-upload>
+					</view>
+				</view>
+				<view class="ptb12" v-if="filelist&&filelist.length">
+					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
+						<view class="flext" @click="getDown(ite.url)">
+							<view class="imgl"><image :src="fjimg" ></image></view>
+							<view class="tit">{{ite.name}}</view>
+						</view>
+						<!-- 删除 -->
+						<view class="delimg flex0" @click.stop="getDelFj(idx)">
+							<image :src="delimg"></image>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14 flexc">
+					<view class="tit flexc flex1">
+						<image :src="titimg"></image>
+						<view>活动内容</view>
+					</view>
+				</view>
+				<editor id="editor" :class="pbFlag?'pbbox':''" class="ql-container" placeholder="请输入提案内容" show-img-size show-img-toolbar
+					show-img-resize @statuschange="onStatusChange" :read-only="readOnly" @ready="onEditorReady">
+				</editor>
+				<view class="edtip flext mb24 mt14"><text>*</text> 提案正文内容原则上不超过2000字,提案正文内容输入完毕后, 可点击右上角的“一键排版”按钮进行快速排版</view>
+			</view>
+			<view class="addbtn">
+				<view class="btn btn1" @click="getZanFnt">暂存</view>
+				<view class="btn btn2" @click="getSubmit">提交</view>
+			</view>
+		</view>
+		</uni-forms>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	import { selectValueKey } from '@/utils/common.js';
+	import {getzxActivityAddFn,getzxActivityDetailFn,getzxActivityEditFn} from "@/api/mine/meeting.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		data(){
+			return{
+				//附件
+				  option: {
+				    // 上传服务器地址,需要替换为你的接口地址
+				    url: baseUrl+'/common/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
+				    // 上传附件的key
+				    name: 'file',
+				     // 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
+				    header: {
+				        // 示例参数可删除
+				        'Authorization':  'Bearer ' + getToken(),
+				    },
+				    // 根据你接口需求自定义body参数
+				    formData: {}
+				},
+				// 选择文件后是否立即自动上传,true=选择后立即上传
+				instantly: true,
+				// 必传宽高且宽高应与slot宽高保持一致
+				width: '',
+				height: '48rpx',
+				// 限制允许上传的格式,空串=不限制,默认为空
+				formats: 'doc,docx,xls,xlsx,ppt,txt,pdf,zip,rar,word',
+				// 文件上传大小限制
+				size: 100,
+				// 文件数量限制 默认10
+				count: 5,
+				// 文件回显列表
+				files: new Map(),
+				// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+				wxFiles: [],
+				// 是否打印日志
+				debug: false,
+				filelist:[], 
+				fjimg:require("@/work/static/images/fjimg.png"),
+				delimg:require("@/work/static/images/delimg.png"),
+				titimg:require("@/work/static/images/titbg.png"),
+				addimg:require("@/work/static/images/meeting/add.png"),
+				datainfo:{
+					"activityTitle":"",//活动名称
+					"activityType":"",//活动类型
+					"activityDate":"",//活动日期
+					"activityTime":"",//活动时间
+					"activityAddress":"",//活动地点,
+					"remark":'',//备注
+					'zxActivityUserList':[],//参会人员
+				},
+				id:"",
+				pagetype:'add',
+				editinfo:'',
+				hdlxlist:[],
+				hdlxtxt:'',
+				hdlxidx:'',
+				editorCtx:'',
+				pbFlag:false,
+				readOnly:false,
+			}
+		},
+		onUnload(){
+			uni.$off('refreshtalb')
+		},
+		onLoad(e) {
+			uni.$on('refreshtalb', (e) => {
+				this.datainfo.zxActivityUserList=e.zxConferenceUserList
+			})
+			this.init();
+			if(e.type=='edit'){
+				this.id=e.id;
+				this.pagetype='edit'
+				this.getDetail()
+			}
+			if(e.type=='old'&&uni.getStorageSync('httzList')){
+				var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('httzList')))
+				var params=newObj.params;
+				this.datainfo=params;
+				this.editinfo=params.activityDetails;
+			}
+		},
+		methods:{
+			statusFormat(ite,list,type) {
+				var aite=selectValueKey(list, ite);
+				if(type=='hdlx'){
+					this.hdlxidx=aite.key
+				}
+				return aite.actions;
+			},
+			init(){
+				// 活动类型
+				getDictionaryFn('activity_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.hdlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value:v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getPaiFn(){
+				this.pbFlag=true;
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.datainfo.activityDate=val;
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.datainfo.activityTime=val+':00';
+			},
+			bindDateChangec(e){
+				var val=e.detail.value;
+				this.datainfo.activityType=this.hdlxlist[val].value;
+				this.hdlxtxt=this.hdlxlist[val].label;
+			},
+			getDetail(){
+				var that=this;
+				var params={
+					activityId:this.id
+				}
+				getzxActivityDetailFn(params).then(res=>{
+					if(res.code==200){
+						var data=res.data;
+						this.datainfo=res.data;
+						this.editinfo=data.activityDetails;
+						uni.createSelectorQuery().select('#editor').context(function(res) {
+							that.editorCtx = res.context;
+							that.editorCtx.setContents({
+								html:that.editinfo
+							})
+						}).exec();
+						if(data.zxFjList&&data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(data.zxFjList))
+						}
+					}
+				})
+			},
+			getAddPeoFn(){
+				var obj={
+					list:this.datainfo.zxActivityUserList,
+				}
+				this.$tab.navigateTo('/work/pages/meeting/people?data='+encodeURIComponent(JSON.stringify(obj)))
+			},
+			gettalbFn(){
+				
+			},
+			// 暂存
+			getZanFnt(){
+				var that=this;
+				that.editorCtx.getContents({
+					success: function(data) { 
+						var params=that.datainfo;
+						params.activityDetails=data.html;
+						var obj={
+							params:params,
+						}
+						uni.setStorageSync('httzList', JSON.parse(JSON.stringify(obj)))
+						that.$toast("暂存成功")
+					}  
+				})	
+			},
+			getSubmit(){
+				var that=this;
+				if(!this.datainfo.activityTitle){
+					this.$toast("请输入活动名称")
+					return
+				}
+				if(!this.datainfo.activityType){
+					this.$toast("请选择活动类型")
+					return
+				}
+				if(!this.datainfo.activityDate){
+					this.$toast("请选择活动日期")
+					return
+				}
+				if(!this.datainfo.activityTime){
+					this.$toast("请选择活动时间")
+					return
+				}
+				if(!this.datainfo.activityAddress){
+					this.$toast("请输入活动地点")
+					return
+				}
+				if(this.datainfo.zxActivityUserList.length<1){
+					this.$toast("请选择活动人员")
+					return
+				}
+				that.editorCtx.getContents({
+					success: function(data) { 
+						var params=that.datainfo;
+						params.activityDetails=data.html;
+						if(that.pagetype=='add'){
+							getzxActivityAddFn(params).then(res=>{
+								if(res.code==200){
+									that.$toast("提交成功")
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						}else{
+							getzxActivityEditFn(params).then(res=>{
+								if(res.code==200){
+									that.$toast("修改成功")
+									uni.$emit("refreshdetail")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+									
+								}
+							})
+							
+						}
+					}
+				})
+			},
+			onuploadEnd(item) {
+				var newobj={}
+				var responseText=JSON.parse(item.responseText)
+				newobj.name=responseText.originalFilename;
+				newobj.url=responseText.fileName;
+				this.filelist.push(newobj)
+				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
+			},
+			getDelFj(idx){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							that.filelist.splice(idx,1)
+							that.datainfo.zxFjList=JSON.parse(JSON.stringify(that.filelist))
+						} else if (res.cancel) {
+						}
+					}
+				});
+			},
+			getDown(e){
+				 uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+			onStatusChange(){
+				
+			},
+			onEditorReady(){
+				var that=this;
+				uni.createSelectorQuery().select('#editor').context(function(res) {
+					that.editorCtx = res.context;
+					that.editorCtx.setContents({
+						html:that.editinfo
+					})
+				}).exec();
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.bgtop{height: 150rpx;background-color: $com-cd3;width: 100%;}
+.pdbox{padding: 34rpx 24rpx 16rpx;}
+.addbox /deep/ .uni-forms-item{margin-bottom:36rpx;}
+.addbox /deep/ .uni-easyinput{flex: 1;text-align: right;font-size: 30rpx;}
+.addbox /deep/ .uni-forms-item__label{font-weight: bold;font-size: 30rpx;color: #343434;width: 198rpx !important;padding-left:20rpx;}
+.addbox /deep/ .is-required{position: absolute;left: 0;top: 50%;margin-top: -10rpx;}
+.addbox /deep/ .uni-data-checklist{display: flex;align-items: center;justify-content: flex-end;}
+.addbox /deep/ .uni-easyinput__placeholder-class{font-weight: 500;font-size: 30rpx;color: #AAAAAA;}
+.addbox /deep/ .checklist-box{margin-right: 0 !important;margin-left: 40rpx !important;}
+.fjadd{
+	.btn{font-weight: bold;font-size: 30rpx;color: #1D64E2;margin: 0;display: flex;align-items: center;}
+}
+.addbox{margin-top: -120rpx;
+	padding: 0 24rpx 50rpx;
+	.boxs{background: #FFFFFF;border-radius: 30rpx;margin-bottom: 24rpx;overflow: hidden;position: relative;
+		.infobg{width: 102rpx;height: 106rpx;position: absolute;right: 26rpx;bottom: 22rpx;}
+		.tips{background: #F1F6FF;padding: 18rpx 38rpx;display: flex;align-items: flex-start;
+			image{width: 20rpx;height: 26rpx;margin-right: 16rpx;flex:0 0 auto;margin-top: 4rpx;}
+			view{font-weight: 500;font-size: 26rpx;color: #1D64E2;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+			.titr{width: 146rpx;height: 50rpx;background: #E4EEFF;border-radius: 26rpx;font-weight: 500;font-size: 24rpx;color: #1D64E2;text-align: center;line-height: 50rpx;}
+		}
+		.titinf{display: flex;flex-wrap: wrap;
+			.txt{font-weight: 500;font-size: 28rpx;margin-bottom: 18rpx;flex:0 1 auto;min-width: 50%;display: flex;align-items: flex-start;color: #222327;
+				text{flex: 0 0 auto;color: #9F9F9F;}
+			}
+		}
+		.addpeo{font-weight: bold;font-size: 30rpx;color: #1D64E2;display: flex;align-items: center;
+			image{width: 26rpx;height: 24rpx;margin-right: 14rpx;}
+		}
+		.openbox{display: flex;align-items: center;justify-content: flex-end;font-weight: 500;
+font-size: 30rpx;height: 100%;color: #222327;
+			
+			}
+		.edtip{font-weight: 500;font-size: 22rpx;color: #FF0000;
+			text{margin: 4rpx 8rpx 0 0;}
+			&.pa{position: absolute;right: 0;bottom: -15px;text-align: right;width: 702rpx;}
+		}
+	}
+	
+}
+	.matab{display: flex;align-items: center;flex-wrap: nowrap;overflow: auto;position: absolute;left: 0;right: -48rpx;
+				.list{min-width:112rpx;height: 50rpx;background: #ffffff;border-radius: 25rpx;font-size: 30rpx;font-weight: 500;box-sizing: border-box;
+	color: #AAAAAA;padding: 0 24rpx;box-sizing: border-box;margin-left:24rpx;flex: 0 0 auto;border: 2rpx solid #C1C1C1;display: flex;align-items: center;justify-content: center;
+				&.act{background: #E4EEFF;color: #1D64E2;border: none;}
+	}
+			}
+	// 附件
+	.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 26rpx;height: 24rpx;}
+			}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;}
+		.delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+			image{width: 26rpx;height: 26rpx;}
+		}
+	}
+	.peoBox{font-size: 30rpx;color: #AAAAAA;min-height: 200rpx;display: flex;
+		view{color: #222327;}
+	}
+	// 按钮
+	.addbtn{display: flex;align-items: center;justify-content: space-between;padding-top: 26rpx;
+		.btn{width: 336rpx;height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;justify-content: center;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+		}
+	}
+	.lbtabp{display: flex;align-items: center;flex: 0 0 auto;margin-left: 24rpx;height: 100%;justify-content: flex-end;
+		view{font-size: 30rpx;color: #222327;}
+	}
+.addbox /deep/ .pbbox .ql-editor  p{text-indent: 2rem;}
+</style>

+ 37 - 16
work/pages/meeting/addspeak.vue

@@ -39,7 +39,8 @@
 				<picker  range-key='label' :value="fylxidx" :range="fylxlist"   @change='bindDateChangeb'>
 					<uni-forms-item label="发言类型" name="speakType" required>
 						<view class="lbtabp">
-							<view :class="fylxtxt?'':'coa'">{{fylxtxt || "请选择发言类型"}}</view>
+							<view v-if="datainfo.speakType&&!fylxtxt">{{statusFormat(datainfo.speakType,fylxlist,'fylx')}}</view>
+							<view v-else :class="fylxtxt?'':'coa'">{{fylxtxt||"请选择发言类型"}}</view>
 						</view>
 					</uni-forms-item>
 				</picker>
@@ -71,7 +72,7 @@
 				</view>
 				<view class="ptb12" v-if="filelist&&filelist.length">
 					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-						<view class="flext" @click="getDown(ite.path)">
+						<view class="flext" @click="getDown(ite.url)">
 							<view class="imgl"><image :src="fjimg" ></image></view>
 							<view class="tit">{{ite.name}}</view>
 						</view>
@@ -105,8 +106,8 @@
 	const baseUrl = config.baseUrl
 	import { getToken } from '@/utils/auth'
 	import {getDeptTree} from "@/api/mine/mine.js"
-	import { selectValue } from '@/utils/common.js';
-	import {getMeetListNopageFn,getSpeakAddFn,getSpeakEditFn,getSpeakDelFn} from "@/api/mine/meeting.js"
+	import { selectValue,selectValueKey } from '@/utils/common.js';
+	import {getMeetListNopageFn,getSpeakAddFn,getSpeakEditFn,getSpeakDelFn,getSpeakDetailFn} from "@/api/mine/meeting.js"
 	import {getInfoListFn} from "@/api/mine/case.js"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	import selectnoreMorePicker from "@/components/ba-tree-picker/selectnoreMorePicker.vue"
@@ -149,6 +150,7 @@
 				debug: false,
 				filelist:[], 
 				
+				userId:'',
 				fjimg:require("@/work/static/images/fjimg.png"),
 				delimg:require("@/work/static/images/delimg.png"),
 				tipimg:require("@/work/static/images/tip.png"),
@@ -209,6 +211,13 @@
 			kayType(ite,list){
 				return selectValue(list, ite);
 			},
+			statusFormat(ite,list,type) {
+				var aite=selectValueKey(list, ite);
+				if(type=='fylx'){
+					this.fylxidx=aite.key
+				}
+				return aite.actions;
+			},
 			init(){
 				// 发言类型
 				getDictionaryFn('speak_type').then(res=>{
@@ -221,17 +230,7 @@
 						})
 					}
 				})
-				// 不分页活动列表
-				getMeetListNopageFn().then(res=>{
-					if(res.code==200){
-						this.glhylist= res.rows.map(v => {
-							return {
-								label: v.conferenceTitle,
-								value: v.conferenceId
-							}
-						})
-					}
-				})
+				
 				//委员列表
 				getInfoListFn().then(res=>{
 					if(res.code==200){
@@ -250,6 +249,22 @@
 					}
 				})
 			},
+			getTree(){
+				// 不分页活动列表
+				var params={
+					userId:this.userId
+				}
+				getMeetListNopageFn(params).then(res=>{
+					if(res.code==200){
+						this.glhylist= res.rows.map(v => {
+							return {
+								label: v.conferenceTitle,
+								value: v.conferenceId
+							}
+						})
+					}
+				})
+			},
 			bindDateChangea(e){
 				var val=e.detail.value;
 				this.datainfo.conferenceTitle=this.glhylist[val].label
@@ -264,6 +279,10 @@
 				var val=e.detail.value;
 				this.datainfo.name=this.fyrlist[val].label
 				this.datainfo.userId=this.fyrlist[val].value
+				this.userId=this.fyrlist[val].userId;
+				this.datainfo.conferenceTitle=''
+				this.datainfo.conferenceId=''
+				this.getTree()
 			},
 			getRecorddwFn(){
 				this.$refs.dfdwpicker.open(0).then(function() {
@@ -286,6 +305,8 @@
 						if(data.zxFjList&&data.zxFjList.length){
 							this.filelist=JSON.parse(JSON.stringify(data.zxFjList))
 						}
+						this.userId=res.data.userId;
+						this.getTree()
 					}
 				})
 			},
@@ -358,7 +379,7 @@
 				var newobj={}
 				var responseText=JSON.parse(item.responseText)
 				newobj.name=responseText.originalFilename;
-				newobj.path=responseText.fileName;
+				newobj.url=responseText.fileName;
 				this.filelist.push(newobj)
 				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
 			},

+ 284 - 0
work/pages/meeting/details.vue

@@ -0,0 +1,284 @@
+<template>
+	<view class="detail">
+		<!-- 主体 -->
+		<view class="deboxs">
+			<view class="bghbox"></view>
+			<view class="dbox fmt30">
+				<view class="dtit">{{datainfo.conferenceTitle}}</view>
+				<view class="titinf">
+					<view class="txt"><text>会议日期</text>{{datainfo.conferenceDate}}</view>
+					<view class="txt"><text>会议时间</text>{{datainfo.conferenceTime}}</view>
+					<view class="txt"><text>会议地点</text>{{datainfo.conferenceAddress}}</view>
+					<view class="txt"><text>参会人员</text>
+						<block v-if="datainfo.zxConferenceUserList&&datainfo.zxConferenceUserList.length">
+							<view v-for="(ite,idx) in datainfo.zxConferenceUserList" :key="idx">{{ite.userName}}
+								<block v-if="idx<datainfo.zxConferenceUserList.length-1">,</block>
+							</view>
+						</block>
+					
+					</view>
+					<view class="txt"><text>备注</text>{{datainfo.remark}}</view>
+				</view>
+			</view>
+			<view class="dbox" v-if="filelist.length">
+				<!-- <view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>会议内容</view>
+					</view>
+				</view>
+				<view class="txtbox" :class="zheList[0].zheflag?'nact':'act'">
+					<rich-text :nodes="datainfo.proposalContent"></rich-text>
+				</view>
+				<view class="zhebox" :class="zheList[0].zheflag?'':'act'" @click="getZheFn(0)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[0].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+				<view class="bortop"></view> -->
+				<view class="ftit mb14">附件信息</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.url)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+
+			<view class="fbtns" style="flex-wrap: wrap;">
+				<view class="btn btn1" @click="getEditFn" v-if="checkPermi(['zxConference:conference:edit'])">修改</view>
+				<view class="btn btn3" @click="getDelFn" v-if="checkPermi(['zxConference:conference:remove'])">删除</view>
+				<view class="btn btn2" @click="getScfkFn('chdf')" v-if="checkPermi(['zxConference:conference:updateReply'])">会议答复</view>
+			</view>
+			
+		</view>
+		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" :mycdlist="mycdlist" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import popUp from "@/work/components/popup/popup.vue"
+	import noData from "@/components/nodata/nodata.vue"
+	import {getDeptTree} from"@/api/mine/mine.js"
+	import { selectValue,selectValuetext } from '@/utils/common.js';
+	import {getMeetDetaiFn,getMeetDelFn,} from "@/api/mine/meeting.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		components:{popUp,noData},
+		data(){
+			return{
+				bgimg:require("@/static/images/bg.png"),
+				fjimg:require("@/work/static/images/fjimg.png"),
+				filelist:[], 
+				
+				tabidx:5,
+				titimg:require("@/work/static/images/titbg.png"),
+				upsimg:require("@/work/static/images/ups.png"),
+				zheList:[{val:0,zheflag:true,moreflag:true},],
+				ptype:'',
+				datainfo:{},
+				tary:''
+			}
+		},
+		onUnload(){
+			uni.$off('refreshdetail')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
+		},
+		methods:{
+			checkPermi, checkRole,
+			kaType(ite){
+				if(ite){
+					var newArr=ite.split(',')
+					var actions=[];
+					var datas=this.matterList;
+					newArr.forEach(ite=>{
+						Object.keys(datas).some((key) => {
+							if (datas[key].value == ('' + ite)) {
+								actions.push(datas[key].label);
+								return true;
+							}
+						})
+					})
+					return actions.join(' ')
+				}
+			},
+			typeFormat(ite,list){
+				return selectValue(list, ite);
+			},
+			typeFormattext(ite,list){
+				return selectValuetext(list, ite);
+			},
+			init(){
+
+			},
+			getupSubmit(e){
+				var that=this;
+				var type=this.ptype;
+				if(type=='zxmyfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.proposalId=this.id
+					getInfozxIdeaFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}
+			},
+			getEditFn(){
+				this.$tab.navigateTo('/work/pages/meeting/add?type=edit&id='+this.id)
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getScfkFn(type){
+				this.ptype=type
+			},
+			getZheFn(idx){
+				this.zheList[idx].zheflag=!this.zheList[idx].zheflag
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该提案",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							getMeetDelFn(that.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功')
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getDetail(){
+				var params={
+					conferenceId:this.id
+				}
+				getMeetDetaiFn(params).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						if(res.data.zxFjList&&res.data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
+						}
+					}
+				})
+			},
+			getDown(e){
+				 uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.detail{display: flex;flex-direction: column;height: 100vh;}
+
+.deboxs{flex:1;overflow: auto;padding-bottom: 30rpx;
+	.bghbox{height: 80rpx;background-color: $com-cd3;}
+	.dbox{background: #FFFFFF;border-radius: 10rpx;margin: 0 24rpx 24rpx;padding: 36rpx 24rpx 24rpx;
+		.dtit{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 48rpx;
+			text{color: #E70000;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+		}
+		.titinf{display: flex;flex-wrap: wrap;flex-direction: column;
+			&.nact{height: 0;overflow: hidden;}
+			&.act{height: auto;}
+			.txt{font-weight: 500;font-size: 26rpx;margin-bottom: 20rpx;color: #222327;display: flex;align-items: flex-start;wi
+				&.nact{height: 200rpx;overflow: hidden;}
+				&.act{height: auto;}
+				text{color: #AAAAAA;min-width: 104rpx;text-align-last: justify;flex: 0 0 auto;margin-right: 20rpx;
+					&.w65{width: 130rpx;}
+				}
+				// view{text-indent: 2rem;}
+			}
+		}
+		.txtbox{text-indent: 2rem;line-height: 36rpx;font-weight: 500;font-size: 26rpx;color: #222327;
+			&.nact{max-height: 432rpx;overflow: hidden;}
+			&.act{height: auto;}
+		}
+		// tab
+		.dbtabs{
+			.dbtab{font-weight: 500;font-size: 26rpx;height: 60rpx;line-height: 60rpx;color: #666666;position: relative;padding: 0 38rpx;margin-left: 8rpx;
+			&.act{font-weight: bold;font-size: 30rpx;color: #222327;
+				&::after{content: "";width: 48rpx;height: 4rpx;background: #3699FF;border-radius: 2rpx;position: absolute;left: 50%;margin-left: -24rpx;bottom: -4rpx;}
+			}
+			}
+		}
+		
+		
+		.bortop{border-top: 2rpx dashed #C1C1C1;margin-bottom: 32rpx;margin-top: 14rpx;width: 100%;}
+		.ftit{font-weight: bold;font-size: 26rpx;color: #222327;}
+		.zhebox{display: flex;align-items: center;flex-direction: column;padding: 24rpx 0;
+			image{width: 28rpx;height: 30rpx;margin-bottom: 10rpx;transition: all 0.3s;}
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+			view{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		}
+		// 附件
+		.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+			// image{margin-right: 18rpx;flex: 0 0 auto;}
+			.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 6rpx;flex: 0 0 auto;
+				image{width: 26rpx;height: 24rpx;}
+				}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;flex:1;}
+			.fjlook{font-weight: 500;font-size: 26rpx;color: #1D64E2;flex: 0 0 auto;margin-left: 20rpx;margin-top: 4rpx;}
+		}
+	}
+	
+}
+// 按钮
+	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;display: flex;flex-wrap: wrap;
+		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
+		justify-content: center;margin:0 12rpx;flex:1;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+			&.btn3{border: 2rpx solid #FF0000;background: #ffffff;color: #FF0000;}
+		}
+	}
+</style>

+ 133 - 32
work/pages/meeting/list.vue

@@ -21,15 +21,24 @@
 				</view>
 			</view>
 			<view class="tablists flexc mb20">
-				<view v-for="(ite,idx) in tabList" @click="getTabFn(ite.val)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
+				<block v-for="(ite,idx) in tabList" :key="idx">
+					<view v-if="!ite.limit||ite.limit&&checkPermi([ite.limit])"  @click="getTabFn(ite.val)" :class="{act:tabidx==ite.val}" >{{ite.tit}}</view>
+				</block>
+				
 			</view>
 			<view style="height: 56rpx;"></view>
 			<view class="lbtab flexc">
 				<image :src="lbicoimg" class="limg"></image>
 				<view class="lbtabs flexc">
-					<view class="lbtabp" v-for="(ite,idx) in litablist" :key="idx">
-						<picker  range-key='label' :value="talbidx" :range="taztList"  @change='bindDateChangea'>
-							<view :class="datainfo.dqjz?'':'f16 co80'">{{datainfo.talb || ite.tit}}</view>
+					<view class="lbtabp" v-if="tabidx!='hdtz'">
+						<picker mode="date" :value="time"   @change='bindDateChangeb'>
+							<view :class="time?'':'f16 co80'">{{time || "会议日期"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+					<view class="lbtabp" v-if="tabidx=='hdtz'">
+						<picker mode="date" :value="time"   @change='bindDateChangeb'>
+							<view :class="time?'':'f16 co80'">{{time || "活动日期"}}</view>
 						</picker>
 						<image :src="upimg" class="upimg"></image>
 					</view>
@@ -38,22 +47,24 @@
 		</view>
 		<!-- 列表 -->
 		<view class="mbox">
-			<meet-list :datalist="list" :wtdt="wtdt" :fylxlist='fylxlist'  :type='tabidx' @getDetail="getDetail" @getReadFn="getReadFn" @getTuiFn="getTuiFn"></meet-list>
+			<meet-list :datalist="list" :wtdt="wtdt" :hdlxlist="hdlxlist" :fylxlist='fylxlist' :qjlxlist="aqjlxlist"  :type='tabidx' @getDetail="getDetail" @getReadFn="getReadFn" @getTuiFn="getTuiFn"></meet-list>
 		</view>
-		<view v-if="checkPermi(['zxConference:conference:add'])&&tabidx=='hyhd'||checkPermi(['zx:speak:add'])&&tabidx=='wdfy'">
+		<view v-if="checkPermi(['zxConference:conference:add'])&&tabidx=='hyhd'||checkPermi(['zx:speak:add'])&&tabidx=='wdfy'||checkPermi(['zxActivity:activity:add'])&&tabidx=='hdtz'">
 			<view style="height: 100rpx;"></view>
 			<view class="fwbtns" @click="getAddMeet" v-if="checkPermi(['zxConference:conference:add'])&&tabidx=='hyhd'">创建会议</view>
 			<view class="fwbtns" @click="getAddSpeak" v-if="checkPermi(['zx:speak:add'])&&tabidx=='wdfy'">录入发言</view>
+			<view class="fwbtns" @click="getAddActive" v-if="checkPermi(['zxActivity:activity:add'])&&tabidx=='hdtz'">创建活动</view>
+			<!--  -->
 		</view>
 		
 		<!-- 弹窗 -->
-		<pop-up :type='ptype' @getClose="getClose" @getupSubmit="getupSubmit" :qjlxlist="qjlxlist"></pop-up>
+		<pop-up :type='ptype' :codeQr="codeQr" @getClose="getClose" @getupSubmit="getupSubmit" :qjlxlist="qjlxlist"></pop-up>
 	</view>
 </template>
 
 <script>
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
-	import {getMeetListFn,getSpeakListFn,getupdateReplyFn} from "@/api/mine/meeting.js"
+	import {getMeetListFn,getSpeakListFn,getupdateReplyFn,getzxActivityListFn,getzxActivityReplyFn} from "@/api/mine/meeting.js"
 	import popUp from "@/work/components/popup/popup.vue"
 	import meetList from "@/work/components/meeting/list.vue"
 	import {getDictionaryFn} from "@/api/mine/register.js"
@@ -67,9 +78,11 @@
 				backimg:require("@/work/static/images/back.png"),
 				upimg:require("@/work/static/images/up.png"),
 				backgroundColor:"#1D64E2",
-				tabidx:'hyhd',
+				tabidx:'hytz',
 				// 会议活动 管理员看的{tit:'会议发言',val:'hyfy',limit:'zx:speak:list'},
-				tabList:[{tit:'会议活动',val:'hyhd',limit:'zxConference:conference:add'},{tit:'我的发言',val:'wdfy',limit:'zx:speak:list'},{tit:'会议通知',val:'hytz',limit:'zxConference:conference:list'}],
+				tabList:[{tit:'会议通知',val:'hytz',limit:'zxConference:conference:list'},{tit:'会议活动',val:'hyhd',limit:'zxConference:conference:alllist'},{tit:'我的发言',val:'wdfy',limit:'zx:speak:list'},{tit:'会议发言',val:'hyfy',limit:'zx:speak:alllist'},
+					{tit:'活动通知',val:'hdtz',limit:'zxActivity:activity:list'}
+				],
 				litablist:[{tit:'会议日期',val:0},],
 				nvaHeight:44,
 				talbList:[{},],
@@ -86,9 +99,13 @@
 				wtdt:'',
 				qjlxlist:[],
 				fylxlist:[],
+				hdlxlist:[],
+				aqjlxlist:[],
 				userId:this.$store.state.user.userId,
 				id:'',
 				title:'',//关键词
+				time:"",
+				codeQr:""
 			}
 		},
 		onUnload(){
@@ -106,8 +123,9 @@
 		},
 		methods:{
 			checkPermi, checkRole,
-			// 请假类型
+			
 			init(){
+				// 请假类型
 				getDictionaryFn('leave').then(res=>{
 					if(res.code==200&&res.data.length){
 						this.qjlxlist = res.data.map(v => {
@@ -116,6 +134,12 @@
 								value: v.dictValue
 							}
 						})
+						this.aqjlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
 					}
 				})
 				// 发言类型
@@ -129,6 +153,22 @@
 						})
 					}
 				})
+				//活动类型
+				getDictionaryFn('activity_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.hdlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.time=val;
+				this.getConfirm()
 			},
 			getConfirm(){
 				this.pageNum=1;
@@ -164,12 +204,9 @@
 			bindDateChangea(e){
 				console.log(e,2)
 			},
-			getChFn(){
-				this.$tab.navigateTo('/work/pages/case/tacheck')
-			},
 			getReadFn(e){
-				if(this.tabidx=='hyhd'){
-					this.$tab.navigateTo('/work/pages/meeting/readdetail?id='+e)
+				if(this.tabidx=='hyhd'||this.tabidx=='hdtz'){
+					this.$tab.navigateTo('/work/pages/meeting/readdetail?id='+e+'&a='+this.tabidx)
 				}else if(this.tabidx=='hyfy'){
 					this.$tab.navigateTo('/work/pages/meeting/speaklist?id='+e)
 				}
@@ -179,12 +216,20 @@
 				if(ite.type=='hyqd'){
 					this.$tab.navigateTo('/work/pages/meeting/signin?id='+ite.id)
 				}else{
+					this.codeQr=ite.item.conferenceQr
 					this.ptype=ite.type;
 					this.id=ite.id
 				}
 			},
 			getDetail(data){
-				this.$tab.navigateTo('/work/pages/case/details?id='+data)	
+				var type=this.tabidx;
+				if(type=='hyhd'||type=='hytz'){
+					this.$tab.navigateTo('/work/pages/meeting/details?id='+data)	
+				}else if(type=='wdfy'){
+					this.$tab.navigateTo('/work/pages/meeting/speakdetails?id='+data)	
+				}else if(type=='hdtz'){
+					this.$tab.navigateTo('/work/pages/meeting/activedetails?id='+data)	
+				}	
 			},
 			getAddMeet(){
 				this.$tab.navigateTo('/work/pages/meeting/add')	
@@ -192,25 +237,47 @@
 			getAddSpeak(){
 				this.$tab.navigateTo('/work/pages/meeting/addspeak')	
 			},
+			getAddActive(){
+				this.$tab.navigateTo('/work/pages/meeting/addactive')	
+			},
 			getupSubmit(e){
 				var that=this;
 				var type=this.type;
 				var params=JSON.parse(JSON.stringify(e))
-				params.conferenceId=this.id;
 				params.userId=this.userId;
-				getupdateReplyFn(params).then(res=>{
-					if(res.code==200){
-						this.$toast("答复成功");
-						setTimeout(function(){
-							that.ptype='';
-							that.pageNum=1;
-							that.list=[];
-							that.reachflag=true;
-							that.getDataFn()
-						},1200)
-						
-					}
-				})
+				if(this.tabidx=='hdtz'){
+					params.activityId=this.id;
+					getzxActivityReplyFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("答复成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.pageNum=1;
+								that.list=[];
+								that.reachflag=true;
+								that.getDataFn()
+							},1200)
+							
+						}
+					})
+				}else {
+					params.conferenceId=this.id;
+					getupdateReplyFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("答复成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.pageNum=1;
+								that.list=[];
+								that.reachflag=true;
+								that.getDataFn()
+							},1200)
+							
+						}
+					})
+				}
+				
+				
 			},
 			getDataFn(){
 				var params={
@@ -218,9 +285,9 @@
 					pageNum: this.pageNum,
 					// visitType:3
 				}
-				params.conferenceTitle=this.title
 				if(this.tabidx=='wdfy'){
 					params.userId=this.userId;
+					params.conferenceTitle=this.title
 					getSpeakListFn(params).then(res=>{
 						if(res.code==200){
 							if (res.rows.length < this.pageSize) {
@@ -246,6 +313,7 @@
 						}
 					})
 				}else if(this.tabidx=='hyfy'){
+					params.conferenceTitle=this.title
 					getSpeakListFn(params).then(res=>{
 						if(res.code==200){
 							if (res.rows.length < this.pageSize) {
@@ -270,10 +338,43 @@
 							this.$toast(res.msg)
 						}
 					})
+				}else if(this.tabidx=='hdtz'){
+					if(this.time){
+						params.activityDate=this.time
+					}
+					params.activityTitle=this.title
+					getzxActivityListFn(params).then(res=>{
+						if(res.code==200){
+							if (res.rows.length < this.pageSize) {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							} else {
+								var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+								if (num < res.total) {
+									this.reachflag = true
+									this.wtdt = '上拉加载更多'
+								} else {
+									this.reachflag = false
+									this.wtdt = '到底了~';
+								}
+							}
+							if (this.pageNum == 1) {
+								this.list = res.rows;
+							} else {
+								this.list = this.list.concat(res.rows)
+							}
+						}else{
+							this.$toast(res.msg)
+						}
+					})
 				}else{
 					if(this.tabidx=='hytz'){
 						params.userId=this.userId
 					}
+					if(this.time){
+						params.conferenceDate=this.time
+					}
+					params.conferenceTitle=this.title
 					getMeetListFn(params).then(res=>{
 						if(res.code==200){
 							if (res.rows.length < this.pageSize) {

+ 155 - 54
work/pages/meeting/people.vue

@@ -1,53 +1,94 @@
 <template>
 	<view class="talbbox">
-		<!-- 左侧 -->
-		<view>
-			<scroll-view :scroll-top="scrollTop" class="cate-left" scroll-y="true" show-scrollbar="false">
-				<view class="cate-item" :class="{act:current==index}" v-for="(item,index) in cateList"
-					@click="menuTab(index)" :key="item.userId">
-					{{item.name}}
+		<!-- 搜索 -->
+		<view class="tabtop">
+			<view class="plr12">
+				<view class="search flex0" style="margin-bottom: 0;">
+					<image :src="searchimg"></image>
+					<input placeholder="输入关键字进行查询" v-model="title" @confirm="getConfirm"/>
 				</view>
-			</scroll-view>
-		</view>
-		<!-- 右侧 -->
-		<view class="cate-right">
-			<scroll-view :scroll-top="riscrollTop" :scroll-into-view="'cate'+tempCurrent" class="cate-right-scroll" scroll-y="true"
-				show-scrollbar="false" @scroll="getCurrentHeight">
-				<view :id="'cate'+index" v-for="(item,index) in cateList" :key="item.userId" class="cate-right-item">
-					<view class="flexcj">
-						<view class="cate-title">{{item.name}}</view>
-						<view class="allbtns" @click="getAll(item)">全选</view>
+			</view>
+			<view class="lbtab flexc">
+				<image :src="lbicoimg" class="limg"></image>
+				<view class="lbtabs flexc">
+					<view class="lbtabp">
+						<picker  range-key='label' :value="jbidx" :range="jblist"  @change='bindDateChangea'>
+							<view >{{jbtxt || "选择届次"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
 					</view>
-					<view class="cate-right-txt">
-						<!-- :class="checkList.findIndex((it) => it.userId === el.userId)!=-1?'act':''" -->
-						<text v-for="(el,idx) in item.children" @click="getTabFn(el,item)" :class="checkList.findIndex((it) => it.userId === el.userId)!=-1?'act':''"  :key="el.userId">{{el.name}}</text>
+					<view class="lbtabp" >
+						<picker  range-key='label' :value="sfwyidx" :range="sfList"  @change='bindDateChangeb'>
+							<view >{{sfwy || "是否常委"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
 					</view>
 				</view>
-				<view style="height: 30rpx;"></view>
-			</scroll-view>
+			</view>
+		</view>
+		<view class="mflexbox" v-if="cateList.length">
+			<!-- 左侧 -->
+			<view>
+				<scroll-view :scroll-top="scrollTop" class="cate-left" scroll-y="true" show-scrollbar="false">
+					<view class="cate-item" :class="{act:current==index}" v-for="(item,index) in cateList"
+						@click="menuTab(index)" :key="item.userId">
+						{{item.name}}
+					</view>
+				</scroll-view>
+			</view>
+			<!-- 右侧 -->
+			<view class="cate-right">
+				<scroll-view :scroll-top="riscrollTop" :scroll-into-view="'cate'+tempCurrent" class="cate-right-scroll" scroll-y="true"
+					show-scrollbar="false" @scroll="getCurrentHeight">
+					<view :id="'cate'+index" v-for="(item,index) in cateList" :key="item.userId" class="cate-right-item">
+						<view class="flexcj">
+							<view class="cate-title">{{item.userName||item.name}}</view>
+							<view class="allbtns" @click="getAll(item)">全选</view>
+						</view>
+						<view class="cate-right-txt">
+							<!-- :class="checkList.findIndex((it) => it.userId === el.userId)!=-1?'act':''" -->
+							<text v-for="(el,idx) in item.children" @click="getTabFn(el,item)" :class="checkList.findIndex((it) => it.userId === el.userId)!=-1?'act':''"  :key="el.userId">{{el.userName||el.name}}</text>
+						</view>
+					</view>
+					<view style="height: 30rpx;"></view>
+				</scroll-view>
+			</view>
 		</view>
+		<block v-else>
+			<no-data></no-data>
+		</block>
 		<!-- 弹窗 -->
 		<view class="lmtac">
 			<view class="flex1 table">
 				<view class="upimg">
-					<image :src="upimg"></image>
+					<image :src="upsimg"></image>
 				</view>
 				<view class="flex1" style="overflow-y: auto;">
 					<view class="lmtit mb14">已添加人员</view>
-					<block v-for="(item,index) in cateList" :key="item.userId">
+					<view class="lmtxt" >
+						<view class="lmame">
+							<block v-for="(ite,idx) in checkList" ::key="ite.userId">
+								<view class="tit">{{ite.userName||ite.name}}
+									<view class="delimg" @click="getDel(idx)"><image :src="delimg"></image></view>
+								</view>
+							</block>
+						</view>
+					</view>
+
+					<!-- <block v-for="(item,index) in cateList" :key="item.userId">
 						<block v-if="checkList.findIndex((it) => it.grade.indexOf(item.userId)!=-1)!=-1">
 							<view class="lmtxt mb14" >
 								<view class="laber">{{item.name}}:</view>
 								<view class="lmame">
 									<block v-for="(ite,idx) in checkList" ::key="ite.userId">
-										<view class="tit" v-if="ite.grade.indexOf(item.userId)!=-1">{{ite.userName}}
+										<view class="tit" v-if="ite.grade.indexOf(item.userId)!=-1">{{ite.name}}
 											<view class="delimg" @click="getDel(idx)"><image :src="delimg"></image></view>
 										</view>
 									</block>
 								</view>
 							</view>
 						</block>
-					</block>
+					</block> -->
 				</view>
 				
 			</view>	
@@ -58,35 +99,34 @@
 </template>
 
 <script>
+	import noData from "@/components/nodata/nodata.vue"
+	import {getDictionaryFn} from "@/api/mine/register.js"
 	import {getInfotreeSelectFn} from "@/api/mine/meeting.js"
 	export default {
+		components:{noData},
 		data() {
 			return {
-				upimg:require("@/work/static/images/meeting/up.png"),
+				searchimg: require("@/work/static/images/search.png"),
+				upsimg:require("@/work/static/images/meeting/up.png"),
 				delimg:require("@/work/static/images/meeting/del.png"),
-				cateList: [{name: "驻潜全国政协委员",userId:'a'},
-					{name: "驻潜省政协委员",userId:'b',
-						children:[
-							{boundary: "1",card: "342224199110121234",createBy: "",createTime: "2024-03-15 14:13:38",delFlag: "0",
-						grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenumber: "15333434321",unit: "潜山市政府",userId: 1},
-							{boundary: "1",card: "342224199110121234",createBy: "",createTime: "2024-03-15 14:13:38",delFlag: "0",
-						grade: "b",memberId: 5,name: "测试委员2",partyAffiliation: "zggcd",phonenumber: "15333434321",unit: "潜山市政府",userId: 2},
-						]
-					},
-					{name: "驻潜安庆市政协委员",userId:'c',
-						children:[
-							{boundary: "1",card: "342224199110121234",createBy: "",createTime: "2024-03-15 14:13:38",delFlag: "0",
-grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenumber: "15333434321",unit: "潜山市政府",userId: 1},
-]
-					}
-				],
+				lbicoimg:require("@/work/static/images/lwico.png"),
+				upimg:require("@/work/static/images/lwup.png"),
+				cateList: [],
+				sfList:[{label: '是',value: 'Y'},{label: '否',value: 'N'}],
+				sfwy:'',
+				sfwyidx:'',
+				isMember:'',
 				current: 0, //当前点击项
 				rectInfoList: [],
 				tempCurrent: 0,
 				ricurrent:'',
 				scrollTop: 0, //左侧导航栏距离顶部的位置
 				riscrollTop:0,//右侧导航栏距离顶部的位置
-				checkList:[],//选择的人员
+				checkList:[],//选择的人员,
+				jblist:[],
+				jbtxt:'',
+				jbidx:'',
+				title:'',
 			}
 		},
 		onLoad(e) {
@@ -94,7 +134,8 @@ grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenum
 				var newobj=JSON.parse(decodeURIComponent(e.data));
 				this.checkList=newobj.list;
 			}
-			// this.getCasetalbFn()
+			this.init()
+			this.getCasetalbFn()
 		},
 		mounted() {
 			setTimeout(() => {
@@ -102,8 +143,42 @@ grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenum
 			}, 200)
 		},
 		methods: {
+			init(){
+				// 界别circles
+				getDictionaryFn('circles').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.jblist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.jbtxt=this.jblist[val].label;
+				this.jbid=this.jblist[val].value;
+				this.getConfirm()
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.sfwy=this.sfList[val].label;
+				this.isMember=this.sfList[val].value;
+				this.getConfirm()
+			},
+			getConfirm(){
+				this.cateList=[];
+				this.getCasetalbFn()
+			},
 			getCasetalbFn(){
-				getInfotreeSelectFn().then(res=>{
+				var params={
+					name:this.title,
+					boundary:this.jbid,
+					isMember:this.isMember
+				}
+				getInfotreeSelectFn(params).then(res=>{
 					if(res.code==200){
 						this.cateList=res.data;
 					}
@@ -115,17 +190,26 @@ grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenum
 				this.riscrollTop = top;
 			},
 			getTabFn(ite,item){
-				var obj={
-					userId:ite.userId,
-					userName:ite.name,
-					postName:ite.unit,
-					userLevel:item.name,
-					grade:ite.grade,
-				}
+				// var obj={
+				// 	userId:ite.userId,
+				// 	userName:ite.name,
+				// 	postName:ite.unit,
+				// 	userLevel:item.name,
+				// 	grade:ite.grade,
+				// }
 				var indexNum = (this.checkList || []).findIndex((item) => item.userId === ite.userId);
 				if(indexNum!=-1){
 					this.checkList.splice(indexNum,1)
 				}else{
+					var obj={
+						userId:ite.userId,
+						userName:ite.name,
+						postName:ite.unit,
+						userLevel:item.name,
+						grade:ite.grade,
+						phonenumber:ite.phonenumber,
+						parentGrade:item.userId
+					}
 					this.checkList.push(obj)
 				}
 				
@@ -147,6 +231,8 @@ grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenum
 								postName:ite.unit,
 								userLevel:item.name,
 								grade:ite.grade,
+								phonenumber:ite.phonenumber,
+								parentGrade:item.userId
 							}
 							this.checkList.push(obj)
 						}
@@ -207,7 +293,7 @@ grade: "c,b",memberId: 4,name: "测试委员",partyAffiliation: "zggcd",phonenum
         height: 0;
     }
 .talbbox{
-	display: flex;height: 100vh;padding-bottom: 412rpx;
+	display: flex;height: 100vh;padding-bottom: 412rpx;flex-direction: column;
 	.cate-left{width: 252rpx;flex: 0 0 auto;height: 100%;background-color: #f5f5f5;
 		.cate-item{height: 110rpx;line-height: 110rpx;text-align: center;font-weight: 500;
 font-size: 28rpx;color: #666666;
@@ -229,9 +315,24 @@ font-size: 28rpx;color: #666666;
 	}
 	.allbtns{font-weight: bold;font-size: 26rpx;color: #28C529;padding: 0 26rpx;}
 }
+.tabtop{flex: 0 0 auto;padding-top: 20rpx;background: #1D64E2;
+	.lbtab{height: 96rpx;padding:0 24rpx 0 40rpx;
+			.limg{width: 40rpx;height: 34rpx;margin-right: 10rpx;flex:0 0 auto;}
+			.lbtabs{overflow: auto;flex-wrap: nowrap;flex: 1;
+				.lbtabp{display: flex;align-items: center;flex: 0 0 auto;margin-right: 40rpx;
+					view{color: #ffffff;font-size: 26rpx;}
+				}
+				.upimg{width: 18rpx;height: 10rpx;}
+				
+			}
+		}
+	
+}
+.mflexbox{flex: 1;display: flex;overflow: auto;}
+.lbtabs /deep/ picker{padding: 0 22rpx;}
 // 弹窗
 .lmtac{padding: 0 22rpx 40rpx;box-sizing: border-box;display: flex;flex-direction: column;
-	position: fixed;left: 0;right: 0;bottom: 0;background: #FFFFFF;height:612rpx;
+	position: fixed;left: 0;right: 0;bottom: 0;background: #FFFFFF;height:412rpx;
 box-shadow: 0px 12rpx 6rpx 0px #EDEDED;
 	.table{display: flex;flex-direction: column;overflow: hidden;}
 	.upimg{padding: 20rpx;margin: 0 auto 6rpx;width: 64rpx;flex: 0 0 auto;

+ 47 - 31
work/pages/meeting/readdetail.vue

@@ -4,7 +4,7 @@
 			<view class="plr12 mt18">
 				<view class="search flex0 mb10">
 					<image :src="searchimg"></image>
-					<input placeholder="输入委员姓名进行查询" />
+					<input placeholder="输入委员姓名进行查询" v-model="title" @confirm="getSearch"/>
 				</view>
 			</view>
 			<!-- <view class="tablists flexc mb20">
@@ -21,6 +21,7 @@
 				  :headbgColor="headbgColor"
 				  :stripe="false"
 				  :fit="true"
+				  :parameter="parameter"
 				  @rowClick="rowClick"
 				  @toggleRowSelection="toggleRowSelection"
 				  @toggleAllSelection="toggleAllSelection"
@@ -38,7 +39,7 @@
 
 <script>
 	import zbTable from "@/work/components/zb-table/zb-tables.vue"
-	import {getMeetDetaiFn} from "@/api/mine/meeting.js"
+	import {getMeetDetaiFn,getMeetPeoListFn,getzxActivityPeoFn} from "@/api/mine/meeting.js"
 	import popUp from "@/work/components/popup/popup.vue"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
@@ -61,16 +62,17 @@
 				},
 				columns: [
 				    { name: 'userName', label: '姓名',width:130,align:'center', },
-				    { name: 'postName', label: '职务',align:'center'},
+				    { name: 'postName', label: '工作地址及职务',align:'center'},
 				    { name: 'replyTime', label: '答复时间',align:'center'},
 				    // { name: 'unit', label: '是否参会',align:'center'},
-					{ name: 'isJoin', type:'operation',label: '是否参会',renders:[
+					{ name: 'isJoin', type:'operation',label: '是否参会',key:"qjlist",renders:[
 						  {
 						    name:'isJoin',
 						    type:'detail',
 						    func:"detail"
 						  },
 					]},
+					{ name: 'leaveReason', label: '请假事由',align:'center'},
 				],
 				ptype:'',//弹窗类型
 				border:true,
@@ -78,6 +80,11 @@
 				headbgColor:'#F1F1F1',
 				tableData:[],
 				id:'',
+				title:'',
+				parameter:{
+					qjlist:[]
+				},
+				tabidx:""
 				
 			}
 		},
@@ -86,9 +93,11 @@
 		},
 		onLoad(e) {
 			this.id=e.id;
+			this.tabidx=e.a
 			this.getDataFn()
+			this.init()
 			// this.getDataFn()
-			// this.init()
+			
 			// uni.$on('refreshlist', (e) => {
 			// 	this.getDataFn()
 			// })
@@ -98,16 +107,17 @@
 		methods:{
 			// 提案状态
 			init(){
-				// getDictionaryFn('proposal_progress').then(res=>{
-				// 	if(res.code==200&&res.data.length){
-				// 		this.tajdlist = res.data.map(v => {
-				// 			return {
-				// 				label: v.dictLabel,
-				// 				value: v.dictValue
-				// 			}
-				// 		})
-				// 	}
-				// })
+				// 请假理由
+				getDictionaryFn('leave').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.parameter.qjlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
 			},
 			getClose(){
 				this.ptype=""
@@ -120,15 +130,6 @@
 					delta:1
 				})
 			},
-			bindDateChangea(e){
-				console.log(e,2)
-			},
-			getChFn(){
-				this.$tab.navigateTo('/work/pages/case/tacheck')
-			},
-			getTuiFn(ite){
-				this.ptype=ite.type
-			},
 			rowClick(){
 				
 			},
@@ -136,15 +137,30 @@
 				console.log(52)
 				// this.$tab.navigateTo('/work/pages/case/details?id='+data)	
 			},
+			getSearch(){
+				this.getDataFn()
+			},
 			getDataFn(){
-				getMeetDetaiFn(this.id).then(res=>{
-					if(res.code==200){
-						if(res.data&&res.data.zxConferenceUserList){
-							this.tableData=res.data.zxConferenceUserList
+				var params={
+					userName:this.title
+				}
+				var type=this.tabidx;
+				if(type=='hdtz'){
+					params.activityId=this.id
+					getzxActivityPeoFn(params).then(res=>{
+						if(res.code==200){
+							this.tableData=res.rows
 						}
-						
-					}
-				}) 
+					}) 
+				}else{
+					params.conferenceId=this.id
+					getMeetPeoListFn(params).then(res=>{
+						if(res.code==200){
+							this.tableData=res.rows
+						}
+					}) 
+				}
+				
 				
 			},
 		}

+ 3 - 3
work/pages/meeting/signin.vue

@@ -62,13 +62,13 @@
 					conferenceId:this.id,
 					userId:this.userId
 				}
-				getMeetDetaiFn(this.id).then(res=>{
+				getMeetDetaiFn(params).then(res=>{
 					this.datainfo=res.data;
 				})
 				// 人员签到信息
-				getMeetPeoListFn(params).then(res=>{
+				// getMeetPeoListFn(params).then(res=>{
 					
-				})
+				// })
 			},
 			getCodeFn(){
 				var that = this;

+ 266 - 0
work/pages/meeting/speakdetails.vue

@@ -0,0 +1,266 @@
+<template>
+	<view class="detail">
+		<!-- 主体 -->
+		<view class="deboxs">
+			<view class="bghbox"></view>
+			<view class="dbox fmt30">
+				<view class="dtit">{{datainfo.speakTitle}}</view>
+				<view class="titinf">
+					<view class="txt"><text>发言人</text>{{datainfo.name}}</view>
+					<view class="txt"><text>录入人</text>{{datainfo.inputName}}</view>
+					<view class="txt"><text>关联会议</text>{{datainfo.conferenceTitle}}</view>
+					<view class="txt"><text>发言单位</text>{{datainfo.speakUnit}}</view>
+					<view class="txt"><text>发言类型</text>{{typeFormat(datainfo.speakType,fylxlist)}}</view>
+					<view class="txt"><text>备注</text>{{datainfo.remark}}</view>
+				</view>
+			</view>
+			<view class="dbox">
+				<!-- <view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>会议内容</view>
+					</view>
+				</view>
+				<view class="txtbox" :class="zheList[0].zheflag?'nact':'act'">
+					<rich-text :nodes="datainfo.proposalContent"></rich-text>
+				</view>
+				<view class="zhebox" :class="zheList[0].zheflag?'':'act'" @click="getZheFn(0)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[0].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+				<view class="bortop"></view> -->
+				<view class="ftit mb14">附件信息</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.url)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+
+			<view class="fbtns" style="flex-wrap: wrap;">
+				<view class="btn btn1" @click="getDelFn" v-if="checkPermi(['zx:speak:edit'])">删除</view>
+				<view class="btn btn1" @click="getEditFn" v-if="checkPermi(['zx:speak:edit'])">修改</view>
+				<!-- <view class="btn btn2" @click="getScfkFn('chdf')" v-if="checkPermi(['proposalInfo:info:isRecord'])">审查反馈</view> -->
+			</view>
+			
+		</view>
+		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" :mycdlist="mycdlist" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import popUp from "@/work/components/popup/popup.vue"
+	import noData from "@/components/nodata/nodata.vue"
+	import {getDeptTree} from"@/api/mine/mine.js"
+	import { selectValue,selectValuetext } from '@/utils/common.js';
+	import {getSpeakDetailFn,getSpeakDelFn,} from "@/api/mine/meeting.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		components:{popUp,noData},
+		data(){
+			return{
+				bgimg:require("@/static/images/bg.png"),
+				fjimg:require("@/work/static/images/fjimg.png"),
+				filelist:[], 
+				
+				tabidx:5,
+				titimg:require("@/work/static/images/titbg.png"),
+				upsimg:require("@/work/static/images/ups.png"),
+				zheList:[{val:0,zheflag:true,moreflag:true},],
+				ptype:'',
+				datainfo:{},
+				fylxlist:[],
+				tary:''
+			}
+		},
+		onUnload(){
+			uni.$off('refreshdetail')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
+		},
+		methods:{
+			checkPermi, checkRole,
+			typeFormat(ite,list){
+				return selectValue(list, ite);
+			},
+			init(){
+				// 发言类型
+				getDictionaryFn('speak_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.fylxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getupSubmit(e){
+				var that=this;
+				var type=this.ptype;
+				if(type=='zxmyfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.proposalId=this.id
+					getInfozxIdeaFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}
+			},
+			getEditFn(){
+				this.$tab.navigateTo('/work/pages/meeting/addspeak?type=edit&id='+this.id)
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getScfkFn(type){
+				this.ptype=type
+			},
+			getZheFn(idx){
+				this.zheList[idx].zheflag=!this.zheList[idx].zheflag
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该提案",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							getSpeakDelFn(that.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功')
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getDetail(){
+				getSpeakDetailFn(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						if(res.data.zxFjList&&res.data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
+						}
+					}
+				})
+			},
+			getDown(e){
+				 uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.detail{display: flex;flex-direction: column;height: 100vh;}
+
+.deboxs{flex:1;overflow: auto;padding-bottom: 30rpx;
+	.bghbox{height: 80rpx;background-color: $com-cd3;}
+	.dbox{background: #FFFFFF;border-radius: 10rpx;margin: 0 24rpx 24rpx;padding: 36rpx 24rpx 24rpx;
+		.dtit{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 48rpx;
+			text{color: #E70000;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+		}
+		.titinf{display: flex;flex-wrap: wrap;flex-direction: column;
+			&.nact{height: 0;overflow: hidden;}
+			&.act{height: auto;}
+			.txt{font-weight: 500;font-size: 26rpx;margin-bottom: 20rpx;color: #222327;display: flex;align-items: flex-start;wi
+				&.nact{height: 200rpx;overflow: hidden;}
+				&.act{height: auto;}
+				text{color: #AAAAAA;min-width: 104rpx;text-align-last: justify;flex: 0 0 auto;margin-right: 20rpx;
+					&.w65{width: 130rpx;}
+				}
+				// view{text-indent: 2rem;}
+			}
+		}
+		.txtbox{text-indent: 2rem;line-height: 36rpx;font-weight: 500;font-size: 26rpx;color: #222327;
+			&.nact{max-height: 432rpx;overflow: hidden;}
+			&.act{height: auto;}
+		}
+		// tab
+		.dbtabs{
+			.dbtab{font-weight: 500;font-size: 26rpx;height: 60rpx;line-height: 60rpx;color: #666666;position: relative;padding: 0 38rpx;margin-left: 8rpx;
+			&.act{font-weight: bold;font-size: 30rpx;color: #222327;
+				&::after{content: "";width: 48rpx;height: 4rpx;background: #3699FF;border-radius: 2rpx;position: absolute;left: 50%;margin-left: -24rpx;bottom: -4rpx;}
+			}
+			}
+		}
+		
+		
+		.bortop{border-top: 2rpx dashed #C1C1C1;margin-bottom: 32rpx;margin-top: 14rpx;width: 100%;}
+		.ftit{font-weight: bold;font-size: 26rpx;color: #222327;}
+		.zhebox{display: flex;align-items: center;flex-direction: column;padding: 24rpx 0;
+			image{width: 28rpx;height: 30rpx;margin-bottom: 10rpx;transition: all 0.3s;}
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+			view{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		}
+		// 附件
+		.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+			// image{margin-right: 18rpx;flex: 0 0 auto;}
+			.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 6rpx;flex: 0 0 auto;
+				image{width: 26rpx;height: 24rpx;}
+				}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;flex:1;}
+			.fjlook{font-weight: 500;font-size: 26rpx;color: #1D64E2;flex: 0 0 auto;margin-left: 20rpx;margin-top: 4rpx;}
+		}
+	}
+	
+}
+// 按钮
+	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;display: flex;flex-wrap: wrap;
+		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
+		justify-content: center;margin:0 12rpx;flex:1;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+		}
+	}
+</style>

+ 48 - 13
work/pages/news/add.vue

@@ -68,7 +68,7 @@
 				</view>
 				<view class="ptb12" v-if="filelist&&filelist.length">
 					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-						<view class="flext" @click="getDown(ite.path)">
+						<view class="flext" @click="getDown(ite.url)">
 							<view class="imgl"><image :src="fjimg" ></image></view>
 							<view class="tit">{{ite.name}}</view>
 						</view>
@@ -90,7 +90,7 @@
 
 <script>
 	import {getDictionaryFn} from "@/api/mine/register.js"
-	import {getNoticeAdd,getNoticeDetail} from "@/api/mine/news.js"
+	import {getNoticeAdd,getNoticeDetail,getNoticeEdit } from "@/api/mine/news.js"
 	import { selectValueKey } from '@/utils/common.js';
 	import config from '@/config'
 	const baseUrl = config.baseUrl
@@ -146,7 +146,8 @@
 				tzlblabe:'',
 				tzlbidx:'',
 				id:'',
-				editinfo:''
+				editinfo:'',
+				ptype:"add"
 			}
 		},
 		onLoad(e) {
@@ -155,6 +156,9 @@
 				this.id=e.id;
 				this.getNoticeDetail()
 			}
+			if(e.type){
+				this.ptype=e.type;
+			}
 			if(e.type=='old'&&uni.getStorageSync('zcList')){
 				var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('zcList')))
 				this.datainfo=newObj;
@@ -169,6 +173,7 @@
 			statusFormat(ite) {
 				var aite=selectValueKey(this.tzlbList, ite);
 				this.tzlbidx=aite.key;
+				this.tzlblabe=aite.actions;
 				return aite.actions;
 			},
 			init(){
@@ -192,10 +197,17 @@
 				this.pbFlag=true;
 			},
 			getNoticeDetail(){
+				var that=this;
 				getNoticeDetail(this.id).then(res=>{
 					if(res.code==200){
 						this.datainfo=res.data;
 						this.editinfo=res.data.noticeContent;
+						uni.createSelectorQuery().select('#editor').context(function(res) {
+							that.editorCtx = res.context;
+							that.editorCtx.setContents({
+								html:that.editinfo
+							})
+						}).exec();
 						if(res.data.zxFjList&&res.data.zxFjList.length){
 							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
 						}
@@ -232,12 +244,35 @@
 					success: function(data) { 
 						var params=that.datainfo;
 						params.noticeContent=data.html;
-						console.log(params)
-						getNoticeAdd(params).then(res=>{
-							if(res.code==200){
-								that.$toast("发布成功")
-							}
-						})
+						if(that.ptype=='edit'){
+							getNoticeEdit(params).then(res=>{
+								if(res.code==200){
+									that.$toast("修改成功")
+									
+									setTimeout(function(){
+										uni.$emit('refreshxxlist')
+										uni.$emit('refreshdetail')
+										uni.navigateBack({
+											delta:1
+										})
+									},1200)
+								}
+							})
+						}else{
+							getNoticeAdd(params).then(res=>{
+								if(res.code==200){
+									that.$toast("发布成功")
+									uni.removeStorageSync('zcList')
+									setTimeout(function(){
+										uni.$emit('refreshxxlist')
+										uni.navigateBack({
+											delta:1
+										})
+									},1200)
+								}
+							})
+						}
+						
 					}  
 				})
 			},
@@ -245,7 +280,7 @@
 				var newobj={}
 				var responseText=JSON.parse(item.responseText)
 				newobj.name=responseText.originalFilename;
-				newobj.path=responseText.fileName;
+				newobj.url=responseText.fileName;
 				this.filelist.push(newobj)
 				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
 			},
@@ -266,9 +301,9 @@
 				});
 			},
 			getDown(e){
-					  uni.showLoading({
-					  	title: '加载中'
-					  });
+				uni.showLoading({
+					title: '加载中'
+				});
 				var url=baseUrl+e;
 				uni.downloadFile({
 					url: url,//文件的下载路径

+ 250 - 0
work/pages/news/detail.vue

@@ -0,0 +1,250 @@
+<template>
+	<view class="detail">
+		<!-- 主体 -->
+		<view class="deboxs">
+			<view class="bghbox"></view>
+			<view class="dbox fmt30">
+				<view class="dtit">{{datainfo.noticeTitle}}</view>
+				<view class="titinf">
+					<view class="txt"><text>通知类别</text>{{typeFormat(datainfo.noticeType,tzlbList)}}</view>
+					<view class="txt"><text>发布人</text>{{datainfo.issuer}}</view>
+					<view class="txt"><text>发布单位</text>{{datainfo.issuerDept}}</view>
+					<view class="txt"><text>通知内容</text>
+						<rich-text :nodes="datainfo.noticeContent"></rich-text>
+					</view>
+				</view>
+			</view>
+			<view class="dbox" v-if="filelist.length">
+				<view class="ftit mb14">附件信息</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.url)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+			<view class="fbtns" style="flex-wrap: wrap;">
+				<view class="btn btn1" @click="getEditFn" v-if="checkPermi(['zxNotice:notice:edit'])">修改</view>
+				<view class="btn btn3" @click="getDelFn" v-if="checkPermi(['zxNotice:notice:remove'])">删除</view>
+			</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import popUp from "@/work/components/popup/popup.vue"
+	import noData from "@/components/nodata/nodata.vue"
+	import {getDeptTree} from"@/api/mine/mine.js"
+	import { selectValue,selectValuetext } from '@/utils/common.js';
+	import {getNoticeDetail,getNoticeDel,} from "@/api/mine/news.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	export default{
+		components:{popUp,noData},
+		data(){
+			return{
+				bgimg:require("@/static/images/bg.png"),
+				fjimg:require("@/work/static/images/fjimg.png"),
+				filelist:[], 
+				
+				tabidx:5,
+				titimg:require("@/work/static/images/titbg.png"),
+				upsimg:require("@/work/static/images/ups.png"),
+				zheList:[{val:0,zheflag:true,moreflag:true},],
+				ptype:'',
+				datainfo:{},
+				tary:'',
+				tzlbList:[],
+			}
+		},
+		onUnload(){
+			uni.$off('refreshdetail')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
+		},
+		methods:{
+			checkPermi, checkRole,
+			kaType(ite){
+				if(ite){
+					var newArr=ite.split(',')
+					var actions=[];
+					var datas=this.matterList;
+					newArr.forEach(ite=>{
+						Object.keys(datas).some((key) => {
+							if (datas[key].value == ('' + ite)) {
+								actions.push(datas[key].label);
+								return true;
+							}
+						})
+					})
+					return actions.join(' ')
+				}
+			},
+			typeFormat(ite,list){
+				return selectValue(list, ite);
+			},
+			typeFormattext(ite,list){
+				return selectValuetext(list, ite);
+			},
+			init(){
+				getDictionaryFn('sys_notice_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.tzlbList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getEditFn(){
+				this.$tab.navigateTo('/work/pages/news/add?type=edit&id='+this.id)
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getZheFn(idx){
+				this.zheList[idx].zheflag=!this.zheList[idx].zheflag
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该消息",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							getNoticeDel(that.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功')
+									uni.$emit("refreshxxlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getDetail(){
+				getNoticeDetail(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						if(res.data.zxFjList&&res.data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
+						}
+					}
+				})
+			},
+			getDown(e){
+				 uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.detail{display: flex;flex-direction: column;height: 100vh;}
+
+.deboxs{flex:1;overflow: auto;padding-bottom: 30rpx;
+	.bghbox{height: 80rpx;background-color: $com-cd3;}
+	.dbox{background: #FFFFFF;border-radius: 10rpx;margin: 0 24rpx 24rpx;padding: 36rpx 24rpx 24rpx;
+		.dtit{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 48rpx;
+			text{color: #E70000;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+		}
+		.titinf{display: flex;flex-wrap: wrap;flex-direction: column;
+			&.nact{height: 0;overflow: hidden;}
+			&.act{height: auto;}
+			.txt{font-weight: 500;font-size: 26rpx;margin-bottom: 20rpx;color: #222327;display: flex;align-items: flex-start;wi
+				&.nact{height: 200rpx;overflow: hidden;}
+				&.act{height: auto;}
+				text{color: #AAAAAA;min-width: 104rpx;text-align-last: justify;flex: 0 0 auto;margin-right: 20rpx;
+					&.w65{width: 130rpx;}
+				}
+				// view{text-indent: 2rem;}
+			}
+		}
+		.txtbox{text-indent: 2rem;line-height: 36rpx;font-weight: 500;font-size: 26rpx;color: #222327;
+			&.nact{max-height: 432rpx;overflow: hidden;}
+			&.act{height: auto;}
+		}
+		// tab
+		.dbtabs{
+			.dbtab{font-weight: 500;font-size: 26rpx;height: 60rpx;line-height: 60rpx;color: #666666;position: relative;padding: 0 38rpx;margin-left: 8rpx;
+			&.act{font-weight: bold;font-size: 30rpx;color: #222327;
+				&::after{content: "";width: 48rpx;height: 4rpx;background: #3699FF;border-radius: 2rpx;position: absolute;left: 50%;margin-left: -24rpx;bottom: -4rpx;}
+			}
+			}
+		}
+		
+		
+		.bortop{border-top: 2rpx dashed #C1C1C1;margin-bottom: 32rpx;margin-top: 14rpx;width: 100%;}
+		.ftit{font-weight: bold;font-size: 26rpx;color: #222327;}
+		.zhebox{display: flex;align-items: center;flex-direction: column;padding: 24rpx 0;
+			image{width: 28rpx;height: 30rpx;margin-bottom: 10rpx;transition: all 0.3s;}
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+			view{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		}
+		// 附件
+		.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+			// image{margin-right: 18rpx;flex: 0 0 auto;}
+			.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 6rpx;flex: 0 0 auto;
+				image{width: 26rpx;height: 24rpx;}
+				}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;flex:1;}
+			.fjlook{font-weight: 500;font-size: 26rpx;color: #1D64E2;flex: 0 0 auto;margin-left: 20rpx;margin-top: 4rpx;}
+		}
+	}
+	
+}
+// 按钮
+	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;display: flex;flex-wrap: wrap;
+		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
+		justify-content: center;margin:0 12rpx;flex:1;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+			&.btn3{border: 2rpx solid #FF0000;background: #ffffff;color: #FF0000;}
+		}
+	}
+</style>

+ 24 - 9
work/pages/news/list.vue

@@ -8,7 +8,7 @@
 					</view>
 				</block>
 				<block slot="right">
-					<view class="topr">
+					<view class="topr" v-if="checkPermi(['zxNotice:notice:add'])">
 						<image :src="ccicoimg"></image>
 						<view>发布消息</view>
 					</view>
@@ -30,6 +30,7 @@
 </template>
 
 <script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	import {getNoticeList} from "@/api/mine/news.js"
 	import popUp from "@/work/components/popup/popup.vue"
@@ -57,13 +58,26 @@
 				
 			}
 		},
+		onUnload(){
+			uni.$off('refreshxxlist')
+		},
 		onLoad(e) {
 			this.init()
+			uni.$on('refreshxxlist', (e) => {
+				that.getrefreshData()
+			})
 		},
 		mounted() {
 			this.getHeightFn()
 		},
 		methods:{
+			checkPermi, checkRole,
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
 			init(){
 				getDictionaryFn('sys_notice_type').then(res=>{
 					if(res.code==200&&res.data.length){
@@ -111,21 +125,22 @@
 				})
 			},
 			getAddNewsFn(){
+				if(checkPermi(['zxNotice:notice:add'])){
+					if(uni.getStorageSync('zcList')){
+						var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('zcList')))
+						this.ptype='zcfb'
+					}else{
+						this.$tab.navigateTo('/work/pages/news/add')
+					}
+				}
 				// this.ptype='zcfb'
 				// return
-				if(uni.getStorageSync('zcList')){
-					var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('zcList')))
-					this.ptype='zcfb'
-				}else{
-					this.$tab.navigateTo('/work/pages/news/add')
-				}
-				
 			},
 			getTuiFn(ite){
 				this.ptype=ite.type
 			},
 			getDetail(id){
-				this.$tab.navigateTo('/work/pages/news/add?id='+id)	
+				this.$tab.navigateTo('/work/pages/news/detail?id='+id)	
 			},
 			getDataFn(){
 				var params={

+ 7 - 0
work/pages/report/addscore.vue

@@ -217,9 +217,16 @@
 			},
 			getSubmit(){
 				var that=this;
+				
 				this.$refs.form.validate().then(res => {
 					var params=that.datainfo;
 					params.userId=that.userId;
+					var regex = /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/;
+					var s=regex.test(this.datainfo.bonusTime);
+					if(!s){
+						that.$toast("请选择完整的时间")
+						return
+					}
 					if(this.ptype=='add'){
 						getBonusAddFn(params).then(res=>{
 							if(res.code==200){

+ 26 - 5
work/pages/report/details.vue

@@ -109,10 +109,11 @@
 					<block v-if="zxConferenceList&&zxConferenceList.length">
 						<zb-table
 						  :show-header="true"
-						  :columns="zxcolumns"
+						  :columns="hycolumns"
 						  :headbgColor="headbgColor"
 						  :stripe="false"
 						  :fit="true"
+						  :parameter="parameter"
 						  @rowClick="rowClick"
 						  @toggleRowSelection="toggleRowSelection"
 						  @toggleAllSelection="toggleAllSelection"
@@ -224,6 +225,11 @@
 				    { name: 'num', label: '信息标题 ',width:230,align:'center', },
 				    { name: 'name', label: '类型',align:'center'},
 				],
+				hycolumns:[{ name: 'conferenceTitle', label: '会议名称 ',width:230,align:'center', },
+					{ name: 'conferenceType', type:"format", label: '会议类型',align:'center',key:"hylxlist"},
+					{ name: 'conferenceDate', label: '会议日期',align:'center'},
+					{ name: 'conferenceTime', label: '会议时间',align:'center'},
+					{ name: 'conferenceAddress', label: '会议地点',align:'center'},],
 				hdcolumns: [
 				    { name: 'activityTitle', label: '活动名称 ',width:230,align:'center', },
 				    { name: 'activityDate', label: '活动日期',align:'center'},
@@ -235,7 +241,8 @@
 				    { name: 'conferenceTitle', label: '关联会议',align:'center'},
 				],
 				parameter:{
-					hdlxlist:[]
+					hdlxlist:[],
+					hylxlist:[],
 				},
 				border:true,
 				borderr:false,
@@ -306,6 +313,18 @@
 						})
 					}
 				})
+				//会议类型
+				getDictionaryFn('conference_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.parameter.hylxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value:v.dictValue
+							}
+						})
+					}
+				})
+				// 活动类型
 				getDictionaryFn('activity_type').then(res=>{
 					if(res.code==200&&res.data.length){
 						this.parameter.hdlxlist = res.data.map(v => {
@@ -316,10 +335,9 @@
 						})
 					}
 				})
-				//活动类型
 			},
 			getReportFn(){
-				this.$tab.navigateTo('/work/pages/report/report?id='+this.id)
+				this.$tab.navigateTo('/work/pages/report/report?id='+this.memberInfo.userId)
 			},
 			getEditFn(){
 				if(checkPermi(['member:info:edit'])){
@@ -359,7 +377,10 @@
 				});
 			},
 			getDetail(){
-				getInfojopDetai(this.id).then(res=>{
+				var parms={
+					memberId:this.id,
+				}
+				getInfojopDetai(parms).then(res=>{
 					if(res.code==200){
 						this.datainfo=res.data;
 						this.memberInfo=res.data.memberInfo;

+ 0 - 0
work/pages/report/index.vue


+ 30 - 5
work/pages/report/info.vue

@@ -1,5 +1,5 @@
 <template>
-	<view class="pb50" :style="'padding-top:'+nvaHeight+'px;'">
+	<view :style="'padding-top:'+nvaHeight+'px;'">
 		<view class="navbox">
 			<uni-nav-bar  color="#ffffff" rightWidth="150rpx" title="履职信息" @clickLeft="getBack" @clickRight="getChFn"  :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
 				<block slot="left">
@@ -22,7 +22,7 @@
 			</view>
 			<view class="tablists flexc mb20">
 				<block v-for="(ite,idx) in tabList" >
-					<view  v-if="checkPermi([ite.limit])" @click="getTabFn(ite)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
+					<view  v-if="!ite.limit||ite.limit&&checkPermi([ite.limit])" @click="getTabFn(ite)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
 				</block>
 			</view>
 			<view style="height: 56rpx;"></view>
@@ -41,6 +41,10 @@
 						</picker>
 						<image :src="upimg" class="upimg"></image>
 					</view>
+					<view class="lbtabp" @click="getReafFn" v-if="checkPermi(['member:info:assessmentScore'])">
+						<image :src="reashimg" class="reashimg"></image>
+						<view :class="dptxt?'':'f16 co80'">刷新排名</view>
+					</view>
 				</view>
 			</view>
 		</view>
@@ -48,7 +52,8 @@
 		<view class="mbox">
 			<report-list :type="tabidx" :datalist="list" :wtdt="wtdt" :jcList="jcList" :khlxList='khlxList' :jflxList="jflxList"  :dplist="dplist" :jblist='jblist'  @getDetail="getDetail" @getTuiFn="getTuiFn"></report-list>
 		</view>
-		<view class="fwbtns" @click="getAddFn">履职档案</view>
+		<view style="height: 100rpx;" v-if="checkPermi(['member:info:add'])&&tabidx=='lzxx'"></view>
+		<view class="fwbtns" @click="getAddFn" v-if="checkPermi(['member:info:add'])&&tabidx=='lzxx'">履职档案</view>
 		
 		<!-- 弹窗 -->
 		<pop-up :type='ptype' @getClose="getClose"></pop-up>
@@ -57,7 +62,7 @@
 
 <script>
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
-	import {getInfojopList,getBonusListFn,getBonusDelFn,getInfojopDel} from "@/api/mine/report.js"
+	import {getInfojopList,getBonusListFn,getBonusDelFn,getInfojopDel,getinfoScoreFn} from "@/api/mine/report.js"
 	import popUp from "@/work/components/popup/popup.vue"
 	import reportList from "@/work/components/report/list.vue"
 	import {getDictionaryFn} from "@/api/mine/register.js"
@@ -71,6 +76,7 @@
 				lbicoimg:require("@/work/static/images/lbico.png"),
 				backimg:require("@/work/static/images/back.png"),
 				upimg:require("@/work/static/images/up.png"),
+				reashimg:require("@/work/static/images/sxicon.png"),
 				backgroundColor:"#1D64E2",
 				tabidx:'lzxx',
 				tabList:[{tit:'履职信息',val:'lzxx',limit:'member:info:list'},{tit:'加分记录',val:'jfju',limit:'zxBonus:bonus:list'}
@@ -97,6 +103,7 @@
 				jflxList:[],
 				khlxList:[],
 				jcList:[],
+				userId:this.$store.state.user.userId,
 			}
 		},
 		onUnload(){
@@ -173,6 +180,14 @@
 					}
 				})
 			},
+			getReafFn(){
+				var that=this;
+				getinfoScoreFn().then(res=>{
+					if(res.code==200){
+						that.getrefreshData()
+					}
+				})
+			},
 			getHeightFn(){
 				var s=uni.getSystemInfoSync().statusBarHeight;
 				let query = uni.createSelectorQuery().in(this);
@@ -224,7 +239,6 @@
 				if(checkPermi(['zxBonus:bonus:add'])){
 					this.$tab.navigateTo('/work/pages/report/addscore')
 				}
-				
 			},
 			getTuiFn(ite){
 				var type=ite.type;
@@ -287,6 +301,11 @@
 					params.name=this.title
 				}
 				if(this.tabidx=='lzxx'){
+					if(checkPermi(['member:info:alllist'])){
+						
+					}else {
+						params.userId=this.userId
+					}
 					getInfojopList(params).then(res=>{
 						if(res.code==200){
 							if (res.rows.length < this.pageSize) {
@@ -312,6 +331,11 @@
 						}
 					}) 
 				}else if(this.tabidx=='jfju'){
+					if(checkPermi(['zxBonus:bonus:list'])){
+						
+					}else {
+						params.userId=this.userId
+					}
 					getBonusListFn(params).then(res=>{
 						if(res.code==200){
 							if (res.rows.length < this.pageSize) {
@@ -371,6 +395,7 @@
 		}
 	}
 }
+.reashimg{width: 26rpx;height: 22rpx; margin-right: 18rpx;}
 .mbox{padding:58rpx 24rpx 28rpx;}
 .lbtabs /deep/ picker{padding: 0 18rpx;}
 </style>

+ 44 - 2
work/pages/report/mineinfo.vue

@@ -27,6 +27,10 @@
 				<view class="label">党派</view>
 				<view class="itetit">{{kaType(datainfo.partyAffiliation,dplist)}}</view>
 			</view>
+			<view class="items">
+				<view class="label">级别</view>
+				<view class="itetit">{{kaType(datainfo.grade,jeblist)}}</view>
+			</view>
 			<view class="items">
 				<view class="label">工作单位及职务</view>
 				<view class="itetit">{{datainfo.unit}}</view>
@@ -82,6 +86,15 @@
 					</view>
 				</uni-forms-item>
 			</picker>
+			<picker  range-key='label' :value="jebidx" :range="jeblist"  @change='bindDateChangec'>
+				<uni-forms-item label="级别" name="grade" required>
+					<view class="lbtabp">
+						<view v-if="datainfo.grade&&!grade">{{statusFormat(datainfo.grade,jeblist,'jeb')}}</view>
+						<view v-else :class="grade?'':'coa'">{{grade||"请选择级别"}}</view>
+						<image :src="rimg" class="rimg"></image>
+					</view>
+				</uni-forms-item>
+			</picker>
 			<uni-forms-item label="工作单位及职务" name="unit" required>
 				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.unit" placeholder="请输入工作单位及职务" />
 			</uni-forms-item>
@@ -119,6 +132,15 @@
 				rimg:require("@/work/static/images/rimg.png"),
 				readOnly:false,
 				datainfo:{
+					"name":"",//委员姓名
+					"card":"",//委员身份证号
+					"boundary":"",//界别
+					"partyAffiliation":"",//党派
+					"grade":'',
+					"phonenumber":"",//手机号码
+					"avatar":"",//委员照片地址
+					"unit":"",//工作单位及职务
+					"studio":"",//乡镇(经开区)委员工作室
 				},
 				tzlbList:[{label: '新闻',value: 0},{label: '开会',value: 1}],
 				tzlbidx:'',
@@ -128,6 +150,7 @@
 				baseUrl:'',
 				jbidx:[],
 				dpidx:[],
+				jeblist:[],
 				ptype:'',
 				rules: {
 				  // avatar: {rules: [{required: true,errorMessage: '请上传委员照片'}]},
@@ -135,6 +158,7 @@
 				  card: {rules: [{required: true,errorMessage: '请输入身份证号' } ]},
 				  boundary: {rules: [{required: true,errorMessage: '请选择界别'} ]},
 				  partyAffiliation: {rules: [{required: true,errorMessage: '请选择党派'} ]},
+				  grade: {rules: [{required: true,errorMessage: '请选择级别'} ]},
 				  unit: {rules: [{required: true,errorMessage: '请输入工作单位及职务'} ]},
 				  studio: {rules: [{required: true,errorMessage: '请输入乡镇(经开区)委员工作室'} ]},
 				  phonenumber: {rules: [{required: true,errorMessage: '请输入联系方式'} ]},
@@ -143,6 +167,7 @@
 				partyAffiliation:'',
 				tpidx:'',
 				dpidx:'',
+				grade:'',
 			}
 		},
 		onLoad(e) {
@@ -155,7 +180,6 @@
 			if(e.type&&e.type=='add'){
 				
 			}else{
-				console.log(23)
 				this.getDetail()
 			}
 			this.init();
@@ -171,6 +195,11 @@
 				this.partyAffiliation=this.dplist[val].label
 				this.datainfo.partyAffiliation=this.dplist[val].value
 			},
+			bindDateChangec(e){
+				var val=e.detail.value;
+				this.grade=this.jeblist[val].label
+				this.datainfo.grade=this.jeblist[val].value
+			},
 			statusFormat(ite,list,type) {
 				var aite=selectValueKey(list, ite);
 				if(type=='jc'){
@@ -179,6 +208,8 @@
 					this.khlxidx=aite.key
 				}else if(type=='jflx'){
 					this.jflxbidx=aite.key
+				}else if(type=='jeb'){
+					this.jebidx=aite.key
 				}
 				return aite.actions;
 			},
@@ -208,6 +239,17 @@
 						})
 					}
 				})
+				//级别
+				getDictionaryFn('grade').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.jeblist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
 			},
 			getDetail(){
 				getInfoDetailFn(this.id).then(res=>{
@@ -276,7 +318,7 @@
 						getInfoEditFn(params).then(res=>{
 							if(res.code==200){
 								that.$toast('修改成功')
-								that.updflag=false;
+								that.updflag=true;
 								setTimeout(function(){
 									uni.$emit('lzrefreshlist')
 									uni.$emit('refreshdetail')

+ 125 - 37
work/pages/report/report.vue

@@ -60,17 +60,17 @@
 				<view class="scorea">
 					<image :src="bga"></image>
 					<view class="box flexccc">
-						<view class="num">85</view>
+						<view class="num">{{scorecount.totalScore}}</view>
 						<view class="f12 fw coe2">履职得分情况</view>
-						<view class="f12 co22">(满分100分)</view>
+						<view class="f12 co22">(满分{{scorecount.fullScore||0}}分)</view>
 					</view>
 				</view>
 				<view class="scorea">
 					<image :src="bgb"></image>
 					<view class="box flexccc">
-						<view class="num">85</view>
+						<view class="num">{{scorecount.rank||""}}</view>
 						<view class="f12 fw co83">综合排名</view>
-						<view class="f12 co22">(共436名)</view>
+						<view class="f12 co22">(共{{scorecount.totalPeople||0}}名)</view>
 					</view>
 				</view>
 			</view>
@@ -78,30 +78,31 @@
 			<view class="tabs mb27">
 				<view v-for="(ite,idx) in tabList" @click="getTabFn(ite.val)" :class="tabval==ite.val?'act':''" class="tab" :key="ite.val">{{ite.tit}}</view>
 			</view>
+			<block v-if="tabval==0">
 			<view class="flexcw mb28">
 				<view class="nums bga">
 					<view class="tit flex1">政协提案</view>
-					<view class="txt"><text>5</text>件</view>
+					<view class="txt"><text>{{mapcount.proposalInfoNum}}</text>件</view>
 				</view>
 				<view class="nums bgb">
 					<view class="tit flex1">社情民意</view>
-					<view class="txt"><text>5</text>件</view>
+					<view class="txt"><text>{{mapcount.sqmyInfoNum}}</text>件</view>
 				</view>
 				<view class="nums bga">
 					<view class="tit flex1">全会</view>
-					<view class="txt"><text>5</text>件</view>
+					<view class="txt"><text>{{mapcount.plenarySessionNum}}</text>件</view>
 				</view>
 				<view class="nums bgb">
 					<view class="tit flex1">活动</view>
-					<view class="txt"><text>5</text>件</view>
+					<view class="txt"><text>{{mapcount.activityNum}}</text>件</view>
 				</view>
 				<view class="nums bga">
 					<view class="tit flex1">普通会议</view>
-					<view class="txt"><text>5</text>件</view>
+					<view class="txt"><text>{{mapcount.conferenceNum}}</text>件</view>
 				</view>
 				<view class="nums bgb">
 					<view class="tit flex1">会议发言</view>
-					<view class="txt"><text>5</text>件</view>
+					<view class="txt"><text>{{mapcount.speakNum}}</text>件</view>
 				</view>
 			</view>
 			<!-- 雷达图 -->
@@ -114,37 +115,42 @@
 				<view class="gsbox">
 					<view class="gslist">
 						<view class="gtit">活动</view>
-						<view class="gtxt">3.1</view>
+						<view class="gtxt">{{scorecount.activityScore}}</view>
 					</view>
 					<view class="gslist">
-						<view class="gtit">会议 </view>
-						<view class="gtxt">3.1</view>
+						<view class="gtit">会议</view>
+						<view class="gtxt">{{scorecount.conferenceScore}}</view>
 					</view>
 					<view class="gslist">
 						<view class="gtit">社情民意</view>
-						<view class="gtxt">3.1</view>
+						<view class="gtxt">{{scorecount.sqmyScore}}</view>
 					</view>
 					<view class="gslist">
 						<view class="gtit">政协提案</view>
-						<view class="gtxt">3.1</view>
+						<view class="gtxt">{{scorecount.proposalScore}}</view>
 					</view>
-					<view class="gslist">
+					<!-- <view class="gslist">
 						<view class="gtit">会议发言</view>
-						<view class="gtxt">3.1</view>
-					</view>
+						<view class="gtxt">{{scorecount.conferenceScore}}</view>
+					</view> -->
 					<view class="gslist">
 						<view class="gtit">其他</view>
-						<view class="gtxt">3.1</view>
+						<view class="gtxt">{{scorecount.bonusScore}}</view>
 					</view>
 				</view>
 			</view>
+			</block>
 			<!-- 提案方便 -->
-			<view class="list">
-				<report-list type='2' :wtdt="wtdt" :datalist="tabList"></report-list>
-				<view class="upmore flexccc">
+			<view class="list" v-if="tabval!=0">
+				<view class="zfbox" v-if="tabval==2">个人提案方面总计得分 <text class="znum">{{scorecount.proposalScore||0}}</text> 分</view>
+				<view class="zfbox" v-if="tabval==3">个人社情民意方面总计得分 <text class="znum">{{scorecount.sqmyScore||0}}</text> 分</view>
+				<view class="zfbox" v-if="tabval==4">个人会议参与情况总计得分 <text class="znum">{{scorecount.conferenceScore||0}}</text> 分</view>
+				<view class="zfbox" v-if="tabval==5">个人活动参与情况总计得分 <text class="znum">{{scorecount.activityScore||0}}</text> 分</view>
+				<report-list :type='tabval' :wtdt="wtdt" :tajdlist="tajdlist" :ztlxlist="ztlxlist" :hylxlist="hylxlist" :hdlxlist="hdlxlist" :datalist="list"></report-list>
+				<!-- <view class="upmore flexccc">
 					<image :src="upmimg"></image>
 					<view>下拉更多</view>
-				</view>
+				</view> -->
 			</view>
 		</view>
 	</view>
@@ -154,7 +160,7 @@
 	import config from '@/config'
 	const baseUrl = config.baseUrl
 	import { selectValue } from '@/utils/common.js';
-	import {getInfojopDetai} from "@/api/mine/report.js"
+	import {getInfomenberDetai} from "@/api/mine/report.js"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	import reportList from "@/work/components/report/list.vue"
 	export default {
@@ -176,20 +182,28 @@
 				upmimg:require("@/static/images/home/up.png"),
 				backgroundColor:'transparent',
 				year:'2024',
-				tabval:0,
+				
 				wtdt:'',
 				memberInfo:{},
-				proposalInfoList:{},
-				sqmyInfoList:{},
-				zxConferenceList:{},
-				zxActivityList:{},
-				zxSpeakList:{},
+				proposalInfoList:[],//提案集合
+				sqmyInfoList:[],//社情民意集合
+				zxConferenceList:[],//会议集合
+				zxActivityList:[],//活动集合
+				zxSpeakList:[],//发言集合
 				jblist:[],
 				dplist:[],
-				tabList:[{tit:'履职状况',val:'0'},{tit:'提案方面',val:'1'},{tit:'社情民意方面',val:'2'},{tit:'会议参与情况',val:'3'},{tit:'活动参与情况',val:'4'}],
+				tajdlist:[],
+				ztlxlist:[],
+				hylxlist:[],
+				hdlxlist:[],
+				mapcount:{},
+				scorecount:{},
+				tabval:0,
+				list:[],
+				tabList:[{tit:'履职状况',val:'0'},{tit:'提案方面',val:2},{tit:'社情民意方面',val:3},{tit:'会议参与情况',val:4},{tit:'活动参与情况',val:5},{tit:'会议发言情况',val:6}],
 				chartData:{
-					categories: ["活动","其他","维度3","维度4","维度5","维度6"],
-					series: [{ name: "成交量1", data: [90,110,165,195,187,172]},],				
+					categories: ["活动","会议","社情民意","政协提案","其他"],
+					series: [],				
 				},
 				opts: {
 				    color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],
@@ -248,6 +262,17 @@
 			},
 			getTabFn(val){
 				this.tabval=val
+				if(val==2){
+					this.list=this.proposalInfoList
+				}else if(val==3){
+					this.list=this.sqmyInfoList
+				}else if(val==4){
+					this.list=this.zxConferenceList
+				}else if(val==5){
+					this.list=this.zxActivityList
+				}else if(val==6){
+					this.list=this.zxSpeakList
+				}
 			},
 			init(){
 				// 界别
@@ -272,16 +297,77 @@
 						})
 					}
 				})
+				// 提案进度
+				getDictionaryFn('proposal_progress').then(res=>{
+					if(res.code==200){
+						this.tajdlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				//主题类型
+				getDictionaryFn('sqmy_topic_type').then(res=>{
+					if(res.code==200){
+						this.ztlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				//会议类型
+				getDictionaryFn('conference_type').then(res=>{
+					if(res.code==200){
+						this.hylxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				//活动类型
+				getDictionaryFn('activity_type').then(res=>{
+					if(res.code==200){
+						this.hdlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
 			},
 			getDetail(){
 				var params={
-					id:this.id,
+					userId:this.id,
 					year:this.year
 				}
-				getInfojopDetai(this.id).then(res=>{
+				getInfomenberDetai(params).then(res=>{
 					if(res.code==200){
 						this.datainfo=res.data;
 						this.memberInfo=res.data.memberInfo;
+						if(res.data.memberAssessmentInfo){
+							this.scorecount=JSON.parse(JSON.stringify(res.data.memberAssessmentInfo));
+							var score=res.data.memberAssessmentInfo
+							var newArr=[score.activityScore||0,score.conferenceScore||0,score.sqmyScore||0,score.proposalScore||0,score.bonusScore||0]
+							var obj={
+								name:'分值',
+								data:newArr
+							}
+							var series=[]
+							series.push(obj)
+							this.chartData.series=series
+						}
+						if(res.data.map){
+							this.mapcount=JSON.parse(JSON.stringify(res.data.map));
+						}
+						
+						
 						this.proposalInfoList=res.data.proposalInfoList;
 						this.sqmyInfoList=res.data.sqmyInfoList;
 						this.zxConferenceList=res.data.zxConferenceList;
@@ -368,8 +454,10 @@ text{border-right: 2rpx solid #ffffff;margin: 0 8rpx;}
 			&.bgb{background: #FFECE3;
 				.tit{color: #FF4E00;}
 				text{color: #FF4E00;}
-			}
-			
+			}	
+		}
+		.zfbox{font-weight: bold;font-size:26rpx;color: #222327;margin-bottom: 36rpx;
+			.znum{font-size: 40rpx;color: #1D64E2;padding: 0 8rpx;}
 		}
 	}
 }

+ 546 - 0
work/pages/sqmyInfo/add.vue

@@ -0,0 +1,546 @@
+<template>
+	<view >
+		<view class="bgtop"></view>
+		<uni-forms :modelValue="datainfo">
+		<view class="addbox">
+			<view class="boxs">
+				<view class="tips">
+					<image :src="tipimg"></image>
+					<view>请于填写信息前认真核对提案者信息是否有误</view>
+				</view>
+				<view class="pdbox">
+					<view class="titbox mb14">
+						<view class="tit flexc">
+							<image :src="titimg"></image>
+							<view>提案者信息</view>
+						</view>
+					</view>
+					<view class="titinf">
+						<view class="txt"><text>上报者:</text>{{datainfo.sqmyName}}</view>
+						<view class="txt"><text>联系方式:</text>{{datainfo.sqmyPhone}}</view>
+						<view class="txt"><text>联系地址:</text>{{datainfo.unit}}</view>
+					</view>
+					<image :src="infobg" class="infobg"></image>
+				</view>
+			</view>
+			<view class="boxs pdbox" style="padding-bottom: 2rpx;">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>基本详情</view>
+					</view>
+				</view>
+				<view class="pb8">
+					<uni-forms-item label="题目" name="title" required>
+						<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.title" placeholder="请输入标题" />
+						<view class="edtip pa">* 标题前无须加关于,标题后无须加的建议,系统将自动填写</view>
+					</uni-forms-item>
+				</view>
+				<!-- <uni-forms-item label="主题类型" name="categoryName" required>
+					<view class="openbox" :class="datainfo.categoryName?'':'coa'" @click="gettalbFn">{{datainfo.categoryName||"请选择主题类型"}}</view>
+				</uni-forms-item> -->
+				<picker  range-key='label' :value="ztlxidx" :range="ztlxlist"  @change='bindDateChangea'>
+					<uni-forms-item label="主题类型" name="topicType" required>
+						<view class="lbtabp">
+							<view v-if="datainfo.topicType&&!ztlxtxt">{{statusFormat(datainfo.topicType,ztlxlist,'ztlx')}}</view>
+							<view v-else :class="ztlxtxt?'':'coa'">{{ztlxtxt||"请选择主题类型"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<uni-forms-item label="联系人" name="lxrName" >
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.lxrName" placeholder="请输入联系人" />
+				</uni-forms-item>
+				<uni-forms-item label="联系人联系方式" name="lxrPhone" >
+					<uni-easyinput :inputBorder="false" type="number" v-model="datainfo.lxrPhone" placeholder="请输入联系人联系方式" />
+				</uni-forms-item>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14 flexc">
+					<view class="tit flexc flex1">
+						<image :src="titimg"></image>
+						<view>信息内容</view>
+					</view>
+					<view class="titr" @click="getPaiFn">一键排版</view>
+				</view>
+				<editor id="editor" :class="pbFlag?'pbbox':''" class="ql-container" placeholder="请输入提案内容" show-img-size show-img-toolbar
+					show-img-resize @statuschange="onStatusChange" :read-only="readOnly" @ready="onEditorReady">
+				</editor>
+				<view class="edtip flext mb24 mt14"><text>*</text>信息内容输入完毕后,可点击右上角“一键排版”按钮进行快速排版</view>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>附件内容</view>
+					</view>
+				</view>
+				<view class="flexcj mb10">
+					<view class="fw f15 co34">添加附件</view>
+					<view class="fjadd"><lsj-upload
+						    ref="lsjUpload"
+						    childId="upload1"
+						    :width="width"
+						    :height="height"
+						    :option="option"
+						    :size="size"
+						    :formats="formats"
+						    :debug="debug"
+						    :instantly="instantly"
+						    @progress=""
+							@uploadEnd="onuploadEnd" >
+						        <view class="btn" :style="{width: width,height: height}">上传附件</view>
+						</lsj-upload>
+					</view>
+				</view>
+				<view class="ptb12" v-if="filelist&&filelist.length">
+					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
+						<view class="flext" @click="getDown(ite.url)">
+							<view class="imgl"><image :src="fjimg" ></image></view>
+							<view class="tit">{{ite.name}}</view>
+						</view>
+						<!-- 删除 -->
+						<view class="delimg flex0" @click.stop="getDelFj(idx)">
+							<image :src="delimg"></image>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="boxs pdbox" style="padding-bottom: 2rpx;">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>更多信息</view>
+					</view>
+				</view>
+				<uni-forms-item label="是否公开" name="isPublicity">
+					<view class="checkbox">
+						<uni-data-checkbox v-model="datainfo.isPublicity" :localdata="sfList" />
+					</view>
+				</uni-forms-item>
+				<uni-forms-item label="是否涉密" name="isSecret">
+					<view class="checkbox">
+						<uni-data-checkbox v-model="datainfo.isSecret" :localdata="sfList" />
+					</view>
+				</uni-forms-item>
+			</view>
+			<view class="addbtn">
+				<view class="btn btn1" @click="getZanFnt">暂存</view>
+				<view class="btn btn2" @click="getSubmit">提交</view>
+			</view>
+		</view>
+		</uni-forms>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	import { selectValue,selectValueKey } from '@/utils/common.js';
+	import {getsqmyInfoAddFn,getsqmyInfoDetailFn,getsqmyInfoEditFn} from "@/api/mine/sqmyInfo.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		data(){
+			return{
+				//附件
+				  option: {
+				    // 上传服务器地址,需要替换为你的接口地址
+				    url: baseUrl+'/common/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
+				    // 上传附件的key
+				    name: 'file',
+				     // 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
+				    header: {
+				        // 示例参数可删除
+				        'Authorization':  'Bearer ' + getToken(),
+				    },
+				    // 根据你接口需求自定义body参数
+				    formData: {}
+				},
+				// 选择文件后是否立即自动上传,true=选择后立即上传
+				instantly: true,
+				// 必传宽高且宽高应与slot宽高保持一致
+				width: '',
+				height: '48rpx',
+				// 限制允许上传的格式,空串=不限制,默认为空
+				formats: 'doc,docx,xls,xlsx,ppt,txt,pdf,zip,rar,word',
+				// 文件上传大小限制
+				size: 100,
+				// 文件数量限制 默认10
+				count: 5,
+				// 文件回显列表
+				files: new Map(),
+				// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+				wxFiles: [],
+				// 是否打印日志
+				debug: false,
+				filelist:[], 
+				
+				pbFlag:false,
+				readOnly:false,
+				fjimg:require("@/work/static/images/fjimg.png"),
+				delimg:require("@/work/static/images/delimg.png"),
+				tipimg:require("@/work/static/images/tip.png"),
+				titimg:require("@/work/static/images/titbg.png"),
+				infobg:require("@/work/static/images/infobg.png"),
+				datainfo:{
+					 "sqmyUserId":this.$store.state.user.userId,//提案人ID
+					  "title":"",//标题
+					  "topicType":"",//主题类型1:经济建设类,2:政治建设类,3:文化建设类,4:社会建设类,5:生态文明建设类,6:其他
+					  "sqmyName":this.$store.state.user.memberInfo.name,//
+					  "sqmyPhone":this.$store.state.user.memberInfo.phonenumber,//
+					  "unit":this.$store.state.user.memberInfo.unit,//
+					  "lxrName":"",//
+					  "lxrPhone":"",//
+					  "sqmyContent":"",//内容
+					  "isPublicity":"0",//同意公开(0是 1否)
+					  "isSecret":"1",//是否涉密(0是 1否)
+					  "zxFjList":[]
+				},
+				ztlxidx:'',
+				ztlxtxt:'',
+				sfList:[{text: '是',value: '0'},{text: '否',value: '1'}],
+				ztlxlist:[],
+				editorCtx:'',
+				tary:'',
+				id:"",
+				pagetype:'add',
+				editinfo:'',
+			}
+		},
+		onUnload(){
+			uni.$off('refreshtalb')
+			uni.$off('refreshtary')
+		},
+		onLoad(e) {
+			uni.$on('refreshtalb', (e) => {
+				this.datainfo.categoryName=e.categoryName
+				this.datainfo.categoryId=e.categoryId
+			})
+			uni.$on('refreshtary', (e) => {
+				this.datainfo.proposalUserList=e.proposalUserList;
+				this.tary=e.namelist.join('/')
+			})
+			this.init()
+			if(e.type=='edit'){
+				this.id=e.id;
+				this.pagetype='edit'
+				this.getDetail()
+			}
+			if(e.type=='old'&&uni.getStorageSync('sqmyList')){
+				var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('sqmyList')))
+				var params=newObj.params;
+				this.datainfo=params;
+				this.editinfo=params.sqmyContent;
+				if(params.zxFjList&&params.zxFjList.length){
+					this.filelist=JSON.parse(JSON.stringify(params.zxFjList))
+				}
+			}
+		},
+		methods:{
+			kayType(ite,list){
+				return selectValue(list, ite);
+			},
+			statusFormat(ite,list,type) {
+				var aite=selectValueKey(list, ite);
+				if(type=='ztlx'){
+					this.ztlxidx=aite.key
+				}
+				return aite.actions;
+			},
+			init(){
+				// 主题类型
+				getDictionaryFn('sqmy_topic_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.ztlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 界别circles
+				// getDictionaryFn('circles').then(res=>{
+				// 	if(res.code==200&&res.data.length){
+				// 		this.jblist = res.data.map(v => {
+				// 			return {
+				// 				label: v.dictLabel,
+				// 				value: v.dictValue
+				// 			}
+				// 		})
+				// 	}
+				// })
+				// 党派
+				// getDictionaryFn('political_parties').then(res=>{
+				// 	if(res.code==200&&res.data.length){
+				// 		this.dplist = res.data.map(v => {
+				// 			return {
+				// 				label: v.dictLabel,
+				// 				value: v.dictValue
+				// 			}
+				// 		})
+				// 	}
+				// })
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.ztlxtxt=this.ztlxlist[val].label;
+				this.datainfo.topicType=this.ztlxlist[val].value;
+			},
+			getDetail(){
+				var that=this;
+				getsqmyInfoDetailFn(this.id).then(res=>{
+					if(res.code==200){
+						var data=res.data;
+						this.datainfo=res.data;
+						if(data.zxFjList&&data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(data.zxFjList))
+						}
+						this.editinfo=data.sqmyContent;
+						var taryList=data.proposalUserList;
+						if(taryList&&taryList.length){
+							var newArr=[]
+							taryList.forEach(ite=>{
+								newArr.push(ite.name)
+							})
+							this.tary=newArr.join('/')
+						}
+						that.checkidx=data.negotiateType.split(',')
+						// this.dwdetList=res.data.proposalUnitReplyList;
+					}
+				})
+			},
+			getCheck(id){
+				var idx=this.checkidx.indexOf(id)
+				if(idx!=-1){
+					this.checkidx.splice(idx,1)
+				}else{
+					this.checkidx.push(id)
+				}
+			},
+			getPaiFn(){
+				this.pbFlag=true;
+			},
+			gettalbFn(){
+				var obj={
+					id:this.datainfo.categoryId,
+					name:this.datainfo.categoryName,
+				}
+				this.$tab.navigateTo('/work/pages/case/talbclass?data='+encodeURIComponent(JSON.stringify(obj)))
+			},
+			getlmtaFn(){
+				var obj={
+					list:this.datainfo.proposalUserList
+				}
+				this.$tab.navigateTo('/work/pages/case/lmtapeople?data='+encodeURIComponent(JSON.stringify(obj)))
+			},
+			// 暂存
+			getZanFnt(){
+				var that=this;
+				that.editorCtx.getContents({
+					success: function(data) { 
+						var params=that.datainfo;
+						params.sqmyContent=data.html;
+						var obj={
+							params:params,
+						}
+						uni.setStorageSync('sqmyList', JSON.parse(JSON.stringify(obj)))
+						that.$toast("暂存成功")
+					}  
+				})
+			},
+			getSubmit(){
+				var that=this;
+				if(!this.datainfo.title){
+					this.$toast("请输入标题")
+					return
+				}
+				if(!this.datainfo.topicType){
+					this.$toast("请选择提案类别")
+					return
+				}
+				// if(!this.datainfo.lxrName){
+				// 	this.$toast("请输入联系人姓名")
+				// 	return
+				// }
+				// if(!this.datainfo.lxrPhone){
+				// 	this.$toast("请输入联系人手机号")
+					
+				// 	return
+				// }
+				if(this.datainfo.lxrPhone){
+					let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+					if (this.datainfo.lxrPhone && !regphone.test(this.datainfo.lxrPhone)) {
+						that.$toast("请输入正确的手机号")
+						return
+					}
+				}
+				var sqmyContent='';
+				that.editorCtx.getContents({  
+					success: function(data) { 
+						var params=that.datainfo;
+						params.sqmyContent=data.html;
+						if(that.pagetype=='add'){
+							getsqmyInfoAddFn(params).then(res=>{
+								if(res.code==200){
+									uni.removeStorageSync('sqmyList')
+									that.$toast("提交成功")
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						}else{
+							getsqmyInfoEditFn(params).then(res=>{
+								if(res.code==200){
+									that.$toast("修改成功")
+									uni.$emit("refreshdetail")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+									
+								}
+							})
+							
+						}
+						
+					}  
+				})
+			},
+			onuploadEnd(item) {
+				var newobj={}
+				var responseText=JSON.parse(item.responseText)
+				newobj.name=responseText.originalFilename;
+				newobj.url=responseText.fileName;
+				this.filelist.push(newobj)
+				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
+			},
+			getDelFj(idx){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							that.filelist.splice(idx,1)
+							that.datainfo.zxFjList=JSON.parse(JSON.stringify(that.filelist))
+						} else if (res.cancel) {
+						}
+					}
+				});
+			},
+			getDown(e){
+					  uni.showLoading({
+					  	title: '加载中'
+					  });
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+							uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       // console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+			onStatusChange(){
+				
+			},
+			onEditorReady(){
+				var that=this;
+				uni.createSelectorQuery().select('#editor').context(function(res) {
+					that.editorCtx = res.context;
+					that.editorCtx.setContents({
+						html:that.editinfo
+					})
+				}).exec();
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.bgtop{height: 150rpx;background-color: $com-cd3;width: 100%;}
+.pdbox{padding: 34rpx 24rpx 16rpx;}
+.addbox /deep/ .uni-forms-item{margin-bottom:36rpx;}
+.addbox /deep/ .uni-easyinput{flex: 1;text-align: right;font-size: 30rpx;}
+.addbox /deep/ .uni-forms-item__label{font-weight: bold;font-size: 30rpx;color: #343434;width: 198rpx !important;padding-left:20rpx;}
+.addbox /deep/ .is-required{position: absolute;left: 0;top: 50%;margin-top: -10rpx;}
+.addbox /deep/ .uni-data-checklist{display: flex;align-items: center;justify-content: flex-end;}
+.addbox /deep/ .uni-easyinput__placeholder-class{font-weight: 500;font-size: 30rpx;color: #AAAAAA;}
+.addbox /deep/ .checklist-box{margin-right: 0 !important;margin-left: 40rpx !important;}
+.fjadd{
+	.btn{font-weight: bold;font-size: 30rpx;color: #1D64E2;margin: 0;display: flex;align-items: center;}
+}
+.addbox{margin-top: -120rpx;
+	padding: 0 24rpx 50rpx;
+	.boxs{background: #FFFFFF;border-radius: 30rpx;margin-bottom: 24rpx;overflow: hidden;position: relative;
+		.infobg{width: 102rpx;height: 106rpx;position: absolute;right: 26rpx;bottom: 22rpx;}
+		.tips{background: #F1F6FF;padding: 18rpx 38rpx;display: flex;align-items: flex-start;
+			image{width: 20rpx;height: 26rpx;margin-right: 16rpx;flex:0 0 auto;margin-top: 4rpx;}
+			view{font-weight: 500;font-size: 26rpx;color: #1D64E2;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+			.titr{width: 146rpx;height: 50rpx;background: #E4EEFF;border-radius: 26rpx;font-weight: 500;font-size: 24rpx;color: #1D64E2;text-align: center;line-height: 50rpx;}
+		}
+		.titinf{display: flex;flex-wrap: wrap;
+			.txt{font-weight: 500;font-size: 28rpx;margin-bottom: 18rpx;flex:0 1 auto;min-width: 50%;display: flex;align-items: flex-start;color: #222327;
+				text{flex: 0 0 auto;color: #9F9F9F;}
+			}
+		}
+		
+		.openbox{display: flex;align-items: center;justify-content: flex-end;font-weight: 500;
+font-size: 30rpx;height: 100%;color: #222327;
+			
+			}
+		.edtip{font-weight: 500;font-size: 22rpx;color: #FF0000;
+			text{margin: 4rpx 8rpx 0 0;}
+			&.pa{position: absolute;right: 0;bottom: -15px;text-align: right;width: 702rpx;}
+		}
+	}
+	
+}
+	.matab{display: flex;align-items: center;flex-wrap: nowrap;overflow: auto;position: absolute;left: 0;right: -48rpx;
+				.list{min-width:112rpx;height: 50rpx;background: #ffffff;border-radius: 25rpx;font-size: 30rpx;font-weight: 500;box-sizing: border-box;
+	color: #AAAAAA;padding: 0 24rpx;box-sizing: border-box;margin-left:24rpx;flex: 0 0 auto;border: 2rpx solid #C1C1C1;display: flex;align-items: center;justify-content: center;
+				&.act{background: #E4EEFF;color: #1D64E2;border: none;}
+	}
+			}
+	// 附件
+	.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 26rpx;height: 24rpx;}
+			}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;}
+		.delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+			image{width: 26rpx;height: 26rpx;}
+		}
+	}
+	// 按钮
+	.addbtn{display: flex;align-items: center;justify-content: space-between;padding-top: 26rpx;
+		.btn{width: 336rpx;height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;justify-content: center;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+		}
+	}
+.addbox /deep/ .pbbox .ql-editor  p{text-indent: 2rem;}
+</style>

+ 569 - 0
work/pages/sqmyInfo/details.vue

@@ -0,0 +1,569 @@
+<template>
+	<view class="detail">
+		<view class="navbox">
+			<!-- 步骤条 -->
+			<view class="dtabs">
+				<view class="tab" :class="datainfo.sqmyProgress==ite.value?'act':''" v-for="(ite,idx) in stepList" :key="idx">
+					<view class="cir"></view>
+					<view class="tit">{{ite.label}}</view>
+				</view>
+			</view>
+		</view>
+		<!-- 主体 -->
+		<view class="deboxs">
+			<view class="bghbox"></view>
+			<view class="dbox fmt30">
+				<!-- <text>【市政协十五届一 次会议第301号提案】</text> -->
+				<view class="dtit">关于{{datainfo.title}}</view>
+				<!-- <view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>提案者信息</view>
+					</view>
+				</view> -->
+				<view class="titinf">
+					<view class="txt"><text>上报者</text>{{datainfo.sqmyName}}</view>
+					<view class="txt"><text>主题类别</text>{{typeFormat(datainfo.topicType,ztlxlist)}}</view>
+					<view class="txt"><text>工作单位及职务</text>{{datainfo.unit}}</view>
+					<view class="txt"><text>联系人</text>{{datainfo.lxrName}}</view>
+					<view class="txt"><text>联系方式</text>{{datainfo.lxrPhone}}</view>
+					<view class="txt"> <text>是否公开</text>{{datainfo.isPublicity==0?'是':'否'}}</view>
+					<view class="txt"><text>是否涉密</text>{{datainfo.isSecret==0?'是':'否'}}</view>
+					<view class="txt"><text>提交时间</text>{{datainfo.createTime}}</view>	
+				</view>
+			</view>
+			<view class="dbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>信息内容</view>
+					</view>
+				</view>
+				<view class="txtbox" :class="zheList[1].zheflag?'nact':'act'">
+					<rich-text :nodes="datainfo.sqmyContent"></rich-text>
+				</view>
+				<!-- 折叠 -->
+				<view class="zhebox" :class="zheList[1].zheflag?'':'act'" @click="getZheFn(1)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[1].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+				<view class="bortop"></view>
+				<view class="ftit mb14">附件信息</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.url)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+			<view class="dbox">
+				<view class="titbox mb16">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>审核情况</view>
+					</view>
+				</view>
+				<block v-for="(ite,idx) in datainfo.sqmyUnitReplyList" :key="idx">
+					<view v-if="dwVal==ite.type">
+						<view class="titinf" v-if="ite.type==2">
+							<view class="txt wb100"><text>审核单位</text>{{ite.deptName}}</view>
+							<view class="txt"><text>签收时间</text>{{ite.startTime}}</view>
+							<view class="txt"> <text>审核时间</text>{{ite.endTime}}</view>
+							<view class="txt" :class="zheList[2].zheflag?'nact':'act'"><text>答复内容</text>
+								<rich-text :nodes="ite.content"></rich-text>
+							</view>
+						</view>
+						<!-- 折叠 -->
+						<view class="zhebox" :class="zheList[2].zheflag?'':'act'" @click="getZheFn(2)">
+							<image :src="upsimg"></image>
+							<view>{{zheList[2].zheflag?'展开信息':'折叠信息'}}</view>
+						</view>
+						<view class="bortop"></view>
+						<view class="ftit mb14">答复函</view>
+						<view class="fjlists flext"  v-for="(item,idx) in ite.zxFjList" :key='item.id' @click="getDown(item.path)">
+							<view class="imgl"><image :src="fjimg" ></image></view>
+							<view class="tit">{{item.name}}</view>
+							<view class="fjlook">查看</view>
+						</view>
+					</view>
+					<!-- 暂无反馈 -->
+					<!-- <block v-else>
+						<no-data></no-data>
+					</block> -->
+					
+				</block>
+				
+			</view>
+			<!-- 提案立案以下隐藏 -->
+			<view class="dbox">
+				<view class="titbox mb16">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>办理情况</view>
+					</view>
+				</view>
+				<view class="dbtabs flexc mb20">
+					<view class="dbtab" :class="ite.val==dwVal?'act':''" v-for="(ite,idx) in dwList" :key="idx" @click="getDwFn(ite.val)">{{ite.tit}}</view>
+				</view>
+				<block v-for="(ite,idx) in datainfo.sqmyUnitReplyList" :key="idx">
+					<view v-if="dwVal==ite.type">
+						<view class="titinf" v-if="ite.type==2||ite.type==3">
+							<view class="txt wb100"><text>{{ite.type==2?'主办单位':'协办单位'}}</text>{{ite.deptName}}</view>
+							<view class="txt"><text>办理方式</text>{{ite.handling}}</view>
+							<view class="txt"><text>办理程度</text>{{ite.degree}}</view>
+							<view class="txt"><text>签收时间</text>{{ite.startTime}}</view>
+							<view class="txt"> <text>办结时间</text>{{ite.endTime}}</view>
+							<view class="txt" :class="zheList[2].zheflag?'nact':'act'"><text>答复内容</text>
+								<rich-text :nodes="ite.content"></rich-text>
+							</view>
+						</view>
+						<!-- 折叠 -->
+						<view class="zhebox" :class="zheList[2].zheflag?'':'act'" @click="getZheFn(2)">
+							<image :src="upsimg"></image>
+							<view>{{zheList[2].zheflag?'展开信息':'折叠信息'}}</view>
+						</view>
+						<view class="bortop"></view>
+						<view class="ftit mb14">答复函</view>
+						<view class="fjlists flext"  v-for="(item,idx) in ite.zxFjList" :key='item.id' @click="getDown(item.path)">
+							<view class="imgl"><image :src="fjimg" ></image></view>
+							<view class="tit">{{item.name}}</view>
+							<view class="fjlook">查看</view>
+						</view>
+					</view>
+					<!-- 暂无反馈 -->
+					<!-- <block v-else>
+						<no-data></no-data>
+					</block> -->
+					
+				</block>
+				
+			</view>
+			<view class="dbox">
+				<view class="titbox mb16">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>反馈情况</view>
+					</view>
+				</view>
+				<view class="titinf">
+					<view class="ftit mb10">委员反馈</view>
+					<view class="txt wb100" style="align-items: center;"><text class="w65">对办理情况是否满意</text>{{typeFormattext(datainfo.satisfaction,mycdlist)}}</view>
+					<view class="txt"><text class="w65">有何进一步意见和建议</text>
+						{{datainfo.membersOpinion}}
+					</view>
+				</view>
+				<view class="titinf">
+					<view class="ftit mb10 mt2">政协反馈</view>
+					<view class="txt wb100" style="align-items: center;"><text class="w65">对办理情况是否满意</text>{{typeFormattext(datainfo.zxSatisfaction,mycdlist)}}</view>
+					<view class="txt"><text class="w65">有何进一步意见和建议</text>
+						{{datainfo.zxOpinion}}
+					</view>
+				</view>
+			</view>
+			<view class="fbtns" style="flex-wrap: wrap;">
+				<!-- 按角色选择按钮 -->
+				<view class="btn btn1" @click="getDelFn" v-if="checkPermi(['sqmyInfo:info:query'])">删除</view>
+				<view class="btn btn1" @click="getEditFn" v-if="checkPermi(['sqmyInfo:info:edit'])">修改</view>
+				<view class="btn btn2" @click="getScfkFn('scfk')" v-if="checkPermi(['sqmyInfo:info:isRecord'])">2审查反馈</view>
+				<view class="btn btn2" @click="getScfkFn('tajb')" v-if="checkPermi(['sqmyInfo:info:assign'])">3提案交办</view>
+				<view class="btn btn2" @click="getScfkFn('dffk')" v-if="checkPermi(['sqmy:unit:reply'])">4答复反馈</view>
+				<view class="btn btn2" @click="getScfkFn('jbsh')" v-if="checkPermi(['sqmyInfo:info:assignsh'])">5交办审核</view>
+				<view class="btn btn2" @click="getScfkFn('dwdf')" v-if="checkPermi(['sqmy:unit:reply'])">5答复反馈</view>
+				<view class="btn btn2" @click="getScfkFn('wymyfk')" v-if="checkPermi(['sqmyInfo:info:idea'])">6办结审核</view>
+				<view class="btn btn2" @click="getScfkFn('zxmyfk')" v-if="checkPermi(['sqmyInfo:info:zxIdea'])">7办结审核</view>
+				<!--委员答复填内容,委员填满意度 -->
+				<!--协办单位,主办单位 填办理方式,办理程度,内容 附件 -->
+				<!-- 4.承办单位答复,交办单位审核(通过,不通过), -->
+				
+				<!-- 交办单位  审核后,承办单位答复(),委员直接提交评价(满意程度)-->
+				<!-- 流程 -->
+				<!-- 提案进度(0:提交提案,1:提案审查,2:提案立案,3:提案交办,4:办理提案,5:提案反馈,6:办结审核,7:已办结) -->
+				<!-- 1.委员录入
+				2.提案委立案是否,否 指定答复(交办)单位
+				3.交办 选择答复(承办)单位(主办,协办)
+				4.承办单位 答复反馈(办理方式,办理程度,内容)    
+				5.交办单位审核(通过,不通过),承办单位答复交办单位审核(内容,附件)
+				6.委员提交满意度,评价
+				7.政协 提交满意度(办结审核) -->
+				
+				<!-- 只要提案就可以 推荐重点,推荐优秀
+				提案办理,催办,联名,单列表 -->
+				<!-- 征集通知 ,提案查重,暂不需要 -->
+				<!-- 政协评价 -->
+				
+			</view>
+			
+		</view>
+		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" :mycdlist="mycdlist" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import popUp from "@/work/components/popup/popup.vue"
+	import noData from "@/components/nodata/nodata.vue"
+	import {getDeptTree} from"@/api/mine/mine.js"
+	import { selectValue,selectValuetext } from '@/utils/common.js';
+	import {getsqmyInfoDetailFn,getsqmyInfoDelFn,getsqmyInfoisRecordFn,getsqmyInfoAssignFn,getsqmyReplyFn,
+	getsqmyInfoShFn,getsqmyInfoIdeaFn,getsqmyInfozxIdeaFn} from "@/api/mine/sqmyInfo.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		components:{popUp,noData},
+		data(){
+			return{
+				bgimg:require("@/static/images/bg.png"),
+				fjimg:require("@/work/static/images/fjimg.png"),
+				filelist:[], 
+				
+				tabidx:5,
+				titimg:require("@/work/static/images/titbg.png"),
+				upsimg:require("@/work/static/images/ups.png"),
+				zheList:[{val:0,zheflag:true,moreflag:true},{val:0,zheflag:true,moreflag:true},{val:0,zheflag:true,moreflag:true},{val:0,zheflag:true,moreflag:true},],
+				dwList:[{tit:'主办单位',val:2},{tit:'协办单位',val:3}],
+				dwdetList:[],
+				dwVal:2,
+				ptype:'',
+				datainfo:{},
+				
+				dflxList:[],
+				ztlxlist:[],//主题类型
+				stepList:[],//提案状态
+				jblist:[],//界别
+				matterList:[],//方式
+				blcdlist:[],//办理程度
+				deptTree:[],//答复单位
+				mycdlist:[],//满意程度
+				tary:''
+			}
+		},
+		onUnload(){
+			uni.$off('refreshdetail')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
+			// this.deptTree=[{id:100,label:"若依科技",children:[{id:200,label:"吃完",},{id:201,label:"vf",}]}]
+		},
+		methods:{
+			checkPermi, checkRole,
+			kaType(ite){
+				if(ite){
+					var newArr=ite.split(',')
+					var actions=[];
+					var datas=this.matterList;
+					newArr.forEach(ite=>{
+						Object.keys(datas).some((key) => {
+							if (datas[key].value == ('' + ite)) {
+								actions.push(datas[key].label);
+								return true;
+							}
+						})
+					})
+					return actions.join(' ')
+				}
+			},
+			typeFormat(ite,list){
+				return selectValue(list, ite);
+			},
+			typeFormattext(ite,list){
+				return selectValuetext(list, ite);
+			},
+			init(){
+				//提案状态
+				getDictionaryFn('proposal_progress').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.stepList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value:v.dictValue
+							}
+						})
+					}
+				})
+				// 主题类型
+				getDictionaryFn('sqmy_topic_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.ztlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 协办单位
+				getDeptTree().then(res=>{
+					if(res.code==200){
+						this.deptTree=res.data
+					}
+				})
+				// 办理方式
+				getDictionaryFn('negotiation_mode').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.matterList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 办理程度degree
+				getDictionaryFn('degree').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.blcdlist = res.data.map(v => {
+							return {
+								text: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 满意程度
+				getDictionaryFn('member_satisfaction').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.mycdlist = res.data.map(v => {
+							return {
+								text: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getsqmyInfoisRecordFn(){
+				getsqmyInfoisRecordFn().then(res=>{
+					
+				})
+			},
+			getupSubmit(e){
+				var that=this;
+				var type=this.ptype;
+				if(type=='scfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoisRecordFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("立案成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)
+							
+						}
+					})
+				}else if(type=='tajb'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoAssignFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)
+						}
+					})
+				}else if(type=='dffk'||type=='dwdf'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyReplyFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("答复反馈成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='jbsh'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoShFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("交办审核成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='wymyfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoIdeaFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='zxmyfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfozxIdeaFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}
+			},
+			getEditFn(){
+				this.$tab.navigateTo('/work/pages/sqmyInfo/add?type=edit&id='+this.id)
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getScfkFn(type){
+				this.ptype=type
+			},
+			getZheFn(idx){
+				this.zheList[idx].zheflag=!this.zheList[idx].zheflag
+			},
+			getDwFn(idx){
+				this.dwVal=idx
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该提案",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							getsqmyInfoDelFn(that.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功')
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getDetail(){
+				getsqmyInfoDetailFn(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						if(res.data.zxFjList&&res.data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
+						}
+						var taryList=res.data.proposalUserList;
+						if(taryList&&taryList.length){
+							var newArr=[]
+							taryList.forEach(ite=>{
+								newArr.push(ite.name)
+							})
+							this.tary=newArr.join('/')
+						}
+						this.dwdetList=res.data.proposalUnitReplyList;
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.detail{display: flex;flex-direction: column;height: 100vh;}
+.navbox{background-color: $com-cd3;flex:0 0 auto;
+	.dtabs{display: flex;padding: 40rpx 24rpx;
+		.tab{position: relative;display: flex;flex-direction: column;align-items: center;flex: 1;
+			&::after{content: '';height: 2rpx;width: 50%;background: #86B2FF;left: 50%;top: 10rpx;position: absolute;transform: translateX(50%);}
+			&:last-child{
+				&::after{display: none;}
+			}
+			&.act{
+				.cir{background: #FFFFFF;}
+				.tit{color: #FFFFFF;}
+			}
+			.cir{width: 20rpx;height: 20rpx;background: #86B2FF;border-radius: 50%;margin-bottom: 24rpx;}
+			.tit{font-weight: bold;font-size: 24rpx;color: #86B2FF;width: 100%;text-align: center;padding: 0 8rpx;}
+		}
+	}
+}
+.deboxs{flex:1;overflow: auto;padding-bottom: 30rpx;
+	.bghbox{height: 60rpx;background-color: $com-cd3;}
+	.dbox{background: #FFFFFF;border-radius: 10rpx;margin: 0 24rpx 24rpx;padding: 36rpx 24rpx 24rpx;
+		.dtit{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 48rpx;
+			text{color: #E70000;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+		}
+		.titinf{display: flex;flex-wrap: wrap;
+			&.nact{height: 0;overflow: hidden;}
+			&.act{height: auto;}
+			.txt{font-weight: 500;font-size: 26rpx;margin-bottom: 20rpx;color: #222327;display: flex;align-items: flex-start;flex:0 1 auto;min-width: 50%;
+				&.nact{height: 200rpx;overflow: hidden;}
+				&.act{height: auto;}
+				text{color: #AAAAAA;min-width: 104rpx;text-align-last: justify;flex: 0 0 auto;margin-right: 20rpx;
+					&.w65{width: 130rpx;}
+				}
+				view{text-indent: 2rem;}
+			}
+		}
+		.txtbox{text-indent: 2rem;line-height: 36rpx;font-weight: 500;font-size: 26rpx;color: #222327;
+			&.nact{max-height: 432rpx;overflow: hidden;}
+			&.act{height: auto;}
+		}
+		// tab
+		.dbtabs{
+			.dbtab{font-weight: 500;font-size: 26rpx;height: 60rpx;line-height: 60rpx;color: #666666;position: relative;padding: 0 38rpx;margin-left: 8rpx;
+			&.act{font-weight: bold;font-size: 30rpx;color: #222327;
+				&::after{content: "";width: 48rpx;height: 4rpx;background: #3699FF;border-radius: 2rpx;position: absolute;left: 50%;margin-left: -24rpx;bottom: -4rpx;}
+			}
+			}
+		}
+		
+		
+		.bortop{border-top: 2rpx dashed #C1C1C1;margin-bottom: 32rpx;margin-top: 14rpx;width: 100%;}
+		.ftit{font-weight: bold;font-size: 26rpx;color: #222327;}
+		.zhebox{display: flex;align-items: center;flex-direction: column;padding: 24rpx 0;
+			image{width: 28rpx;height: 30rpx;margin-bottom: 10rpx;transition: all 0.3s;}
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+			view{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		}
+		// 附件
+		.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+			// image{margin-right: 18rpx;flex: 0 0 auto;}
+			.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 6rpx;flex: 0 0 auto;
+				image{width: 26rpx;height: 24rpx;}
+				}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;flex:1;}
+			.fjlook{font-weight: 500;font-size: 26rpx;color: #1D64E2;flex: 0 0 auto;margin-left: 20rpx;margin-top: 4rpx;}
+		}
+	}
+	
+}
+// 按钮
+	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;display: flex;flex-wrap: wrap;
+		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
+		justify-content: center;margin:0 12rpx;flex:1;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+		}
+	}
+</style>

+ 625 - 0
work/pages/sqmyInfo/mine.vue

@@ -0,0 +1,625 @@
+<template>
+	<view :style="'padding-top:'+nvaHeight+'px;'">
+		<view class="navbox">
+			<uni-nav-bar  color="#ffffff" rightWidth="150rpx" title="社情民意" @clickLeft="getBack" @clickRight="getChFn"  :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
+				<block slot="left">
+					<view class="topl">
+						<image :src="backimg" ></image>
+					</view>
+				</block>
+				<!-- <block slot="right">
+					<view class="topr">
+						<image :src="ccicoimg"></image>
+						<view>提案查重</view>
+					</view>
+				</block> -->
+			</uni-nav-bar>
+			<view class="plr12 mt18">
+				<view class="search flex0 mb10">
+					<image :src="searchimg"></image>
+					<input placeholder="输入关键字进行查询" v-model="title" @confirm="getConfirm"/>
+				</view>
+			</view>
+			<view class="tablists flexc mb20">
+				<block v-for="(ite,idx) in tabList" >
+					<view  v-if="checkPermi([ite.limit])" @click="getTabFn(ite)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
+				</block>
+				
+			</view>
+			<view style="height: 56rpx;"></view>
+			<view class="lbtab flexc">
+				<image :src="lbicoimg" class="limg"></image>
+				<view class="lbtabs flexc">
+					<view class="lbtabp">
+						<picker mode="date" fields="year"  range-key='label'    @change='bindDateChangeb'>
+							<view :class="year?'':'f16 co80'">{{year || "选择年份"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+					<view class="lbtabp">
+						<picker  range-key='label' :value="ztlxidx" :range="ztlxlist"  @change='bindDateChangea'>
+							<view :class="ztlx?'':'f16 co80'">{{ztlx || "主题类型"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+					<view class="lbtabp" v-if="tabidx=='xxsb'">
+						<picker  range-key='label' :value="sfcyidx" :range="taztList"  @change='bindDateChangec'>
+							<view :class="sfcy?'':'f16 co80'">{{sfcy || "是否采用"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+					<!-- <view class="lbtabp">
+						<picker  range-key='label' :value="kwlxidx" :range="kwlxList"  @change='bindDateChanged'>
+							<view :class="kwlx?'':'f16 co80'">{{kwlx || "刊物类型"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+					<view class="lbtabp">
+						<picker  range-key='label' :value="psqkidx" :range="psList"  @change='bindDateChangee'>
+							<view :class="psqk?'':'f16 co80'">{{psqk || "批示情况"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view> -->
+					<view class="lbtabp" v-if="tabidx=='qb'||tabidx=='xxsb'">
+						<picker  range-key='label' :value="tajdidx" :range="tajdlist"  @change='bindDateChangef'>
+							<view :class="tajd?'':'f16 co80'">{{tajd || "办理状态"}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 列表 -->
+		<view class="mbox">
+			<sqmy-info-list :datalist="list" :listtype="listtype" :wtdt="wtdt" :ztlxlist='ztlxlist' :tajdlist="tajdlist" :type='tabidx' @getDetail="getDetail"  @getTuiFn="getTuiFn"></sqmy-info-list>
+		</view>
+		<view v-if="checkPermi(['proposalInfo:info:add'])&&tabidx=='wdta'">
+			<view style="height: 100rpx;"></view>
+			<view class="fwbtns" @click="getAddCase">提交提案</view>
+		</view>
+		
+		
+		<!-- 弹窗 -->
+		<pop-up :type='ptype' :blfsList="matterList" :blcdlist="blcdlist" @getFaFn="getFaFn" :mycdlist="mycdlist" :dataTree="deptTree" @getClose="getClose" @getupSubmit="getupSubmit"></pop-up>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {getsqmyInfoListFn,getsqmyInfoisRecordFn,getsqmyInfoAssignFn,getsqmyReplyFn,
+	getsqmyInfoShFn,getsqmyInfoIdeaFn,getsqmyInfozxIdeaFn,
+	getInfourgeFn,getsqmyInfokeyPointFn,getsqmyInfooutstandingFn
+	} from "@/api/mine/sqmyInfo.js"
+	import popUp from "@/work/components/popup/popup.vue"
+	import sqmyInfoList from "@/work/components/sqmyInfo/list.vue"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import {getDeptTree} from"@/api/mine/mine.js"
+	export default{
+		components:{sqmyInfoList,popUp},
+		data(){
+			return{
+				searchimg: require("@/work/static/images/search.png"),
+				ccicoimg:require("@/work/static/images/ccico.png"),
+				lbicoimg:require("@/work/static/images/lbico.png"),
+				backimg:require("@/work/static/images/back.png"),
+				upimg:require("@/work/static/images/up.png"),
+				backgroundColor:"#1D64E2",
+				tabidx:'qb',
+				tabtype:'',//进度查询
+				// {tit:'征集通知',val:0}, 提案催办 目前看所有
+				tabList:[{tit:'全部',val:'qb',},{tit:'信息审核',jd:1,val:'xxsh',limit:'proposalInfo:info:isRecord'},{tit:'信息交办',jd:4,val:'xxjb',},
+				{tit:'信息办理',jd:5,val:'xxbl',},{tit:'办结审核',jd:6,val:'bjsh',},
+				{tit:'信息催办',val:'xxcb',},
+				{tit:'信息上报',val:'xxsb',},{tit:'上网社情民意',val:'swsqmy',},{tit:'推荐优秀',val:'tjyx'},
+				{tit:'推荐重点',val:'tjzd'}
+				],
+				// {tit:'开始日期',val:1},{tit:'结束日期',val:2},
+				// "sqmyProgress":"提案进度(0:提交提案,1:提案审查,2:提案立案,3:提案交办,4:办理提案,5:提案反馈,6:办结审核,7:已办结) ",
+				nvaHeight:44,
+				talbList:[{},],
+				taztList:[{label:'是',value:'0'},{label:'否',value:'1'}],
+				psList:[{label:'已批示',value:'0'},{label:'未批示',value:'1'}],
+				kwlxList:[{label:'社情民意',value:'0'},{label:'刊物类型',value:'1'}],
+				ptype:'',//弹窗类型
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+				tajdlist:[],//提案进度
+				listtype:'case',
+				
+				year:'',//提案时间
+				title:'',
+				deptTree:[],
+				matterList:[],
+				blcdlist:[],
+				mycdlist:[],
+				ztlxlist:[],//主题类型
+				ztlx:"",//主题
+				ztlxid:"",
+				ztlxidx:'',
+				sfcy:"",//采用
+				sfcyid:"",
+				sfcyidx:'',
+				kwlx:"",//刊物类型
+				kwlxid:"",
+				kwlxidx:'',
+				psqk:"",//批示情况
+				psqkid:"",
+				psqkidx:'',
+				tajd:"",//办理状态
+				tajdid:"",
+				tajdidx:'',
+				id:'',
+				userId:this.$store.state.user.userId,
+			}
+		},
+		onUnload(){
+			uni.$off('refreshlist')
+		},
+		onLoad(e) {
+			this.getDataFn()
+			this.init()
+			uni.$on('refreshlist', (e) => {
+				this.getDataFn()
+			})
+		},
+		mounted() {
+			this.getHeightFn()
+		},
+		methods:{
+			checkPermi, checkRole,
+			// 提案状态
+			init(){
+				// 主题类型
+				getDictionaryFn('sqmy_topic_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.ztlxlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				getDictionaryFn('proposal_progress').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.tajdlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 协办单位
+				getDeptTree().then(res=>{
+					if(res.code==200){
+						this.deptTree=res.data
+					}
+				})
+				// 办理方式
+				getDictionaryFn('negotiation_mode').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.matterList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 办理程度degree
+				getDictionaryFn('degree').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.blcdlist = res.data.map(v => {
+							return {
+								text: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 满意程度
+				getDictionaryFn('member_satisfaction').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.mycdlist = res.data.map(v => {
+							return {
+								text: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getConfirm(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			getFaFn(type,ptype){
+				this.ptype='';
+				if(ptype=='sqmy'){
+					if(type=='new'){uni.removeStorageSync('sqmyList')}
+					this.$tab.navigateTo('/work/pages/case/add?type='+type)		
+				}	
+			},
+			getTuiFn(data){
+				var sh=data.sh;
+				this.id=data.id;
+				var type=data.type;
+				console.log(type,1)
+				var that=this;
+				if(type=='scfk'){
+					if(sh==1){
+						this.ptype=data.type;
+					}else{
+						var params={
+							proposalId:data.id,
+							isRecord:0,
+						}
+						getsqmyInfoisRecordFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast("立案成功");
+								setTimeout(function(){
+									that.ptype='';
+									that.pageNum=1;
+									that.list=[];
+									that.reachflag=true;
+									that.getDataFn()
+								},1200)
+								
+							}
+						})
+					}
+				}else if(type=='lmta'){
+					if(sh==2){
+						this.ptype=data.type;
+					}else{
+						var params={
+							proposalId:data.id,
+							isAgree:1,
+						}
+						getUserverifyFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast("确认联名提案成功");
+								setTimeout(function(){
+									that.ptype='';
+									that.pageNum=1;
+									that.list=[];
+									that.reachflag=true;
+									that.getDataFn()
+								},1200)
+								
+							}
+						})
+					}
+				}else{
+					this.ptype=type
+				}	
+			},
+			getupSubmit(e){
+				var that=this;
+				var type=this.ptype;
+				if(type=='scfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoisRecordFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("立案成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)
+							
+						}
+					})
+				}else if(type=='tajb'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoAssignFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)
+						}
+					})
+				}else if(type=='dffk'||type=='dwdf'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyReplyFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("答复反馈成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='jbsh'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoShFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("交办审核成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='wymyfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfoIdeaFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='zxmyfk'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.sqmyId=this.id
+					getsqmyInfozxIdeaFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.getDetail()
+							},1200)	
+						}
+					})
+				}else if(type=='tacb'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.scoreId=this.id
+					params.urgeType=2
+					getInfourgeFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("提案办结成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.pageNum=1;
+								that.list=[];
+								that.reachflag=true;
+								that.getDataFn()
+							},1200)	
+						}
+					})
+				}else if(type=='tjyx'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.proposalId=this.id
+					getsqmyInfooutstandingFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("推荐优秀成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.pageNum=1;
+								that.list=[];
+								that.reachflag=true;
+								that.getDataFn()
+							},1200)	
+						}
+					})
+				}else if(type=='tjzd'){
+					var params=JSON.parse(JSON.stringify(e))
+					params.proposalId=this.id
+					getsqmyInfokeyPointFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast("推荐重点成功");
+							setTimeout(function(){
+								that.ptype='';
+								that.pageNum=1;
+								that.list=[];
+								that.reachflag=true;
+								that.getDataFn()
+							},1200)	
+						}
+					})
+				// }else if(type=='lmta'){
+				// 	var params=JSON.parse(JSON.stringify(e))
+				// 	var str='同意'
+				// 	if(params.isAgree==2){
+				// 		str="反对"
+				// 	}
+				// 	params.proposalId=this.id
+				// 	getUserverifyFn(params).then(res=>{
+				// 		if(res.code==200){
+				// 			this.$toast(str+"成功");
+				// 			setTimeout(function(){
+				// 				that.ptype='';
+				// 				that.pageNum=1;
+				// 				that.list=[];
+				// 				that.reachflag=true;
+				// 				that.getDataFn()
+				// 			},1200)	
+				// 		}
+				// 	})
+				}
+			},
+			getAddCase(){
+				if(uni.getStorageSync('tjtaList')){
+					// var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('tjtaList')))
+					this.ptype='zcta'
+				}else{
+					this.$tab.navigateTo('/work/pages/case/add')
+				}
+			},
+			getHeightFn(){
+				var s=uni.getSystemInfoSync().statusBarHeight;
+				let query = uni.createSelectorQuery().in(this);
+					//需要给黄色区域设置一个id标识,在这里是demo
+				query.select('.navbox').boundingClientRect(data => {
+					this.nvaHeight =s? data.height:Number(data.height)-20//赋值,待会要用
+				}).exec();
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getTabFn(ite){
+				this.tabidx=ite.val;
+				this.pageNum=1;
+				this.list=[],
+				this.reachflag=true;
+				this.tabtype=ite.jd||"";
+				this.getDataFn()
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.ztlx=this.ztlxlist[val].label;
+				this.ztlxid=this.ztlxlist[val].value;
+				this.getrefreshData()
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.year=val;
+				this.getrefreshData()
+			},
+			bindDateChangec(e){
+				var val=e.detail.value;
+				this.sfcy=this.taztList[val].label;
+				this.sfcyid=this.taztList[val].value;
+				this.getrefreshData()
+			},
+			bindDateChanged(e){
+				var val=e.detail.value;
+				this.kwlx=this.kwlxList[val].label;
+				this.kwlxid=this.kwlxList[val].value;
+				this.getrefreshData()
+			},
+			bindDateChangee(e){
+				var val=e.detail.value;
+				this.psqk=this.psList[val].label;
+				this.psqkid=this.psList[val].value;
+				this.getrefreshData()
+			},
+			bindDateChangef(e){
+				var val=e.detail.value;
+				this.tajd=this.tajdlist[val].label;
+				this.tajdid=this.tajdlist[val].value;
+				this.getrefreshData()
+			},
+			getChFn(){
+				this.$tab.navigateTo('/work/pages/case/tacheck')
+			},
+			
+			getDetail(data){
+				this.$tab.navigateTo('/work/pages/sqmyInfo/details?id='+data)	
+			},
+			getDataFn(){
+				var tab=this.tabidx;
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				if(this.tabtype){
+					params.sqmyProgress=this.tabtype
+				}
+				if(this.title){
+					params.title=this.title
+				}
+				if(this.year){//年份
+					params.year=this.year
+				}
+				if(this.ztlx){//主题
+					params.topicType=this.ztlxid
+				}
+				if(this.sfcy&&tab=='xxsb'){//采用
+					params.isRecord=this.sfcyid
+				}
+				if(this.tajd&&(tab=='qb'||tab=='xxsb')){//办理状态
+					params.sqmyProgress=this.tajdid
+				}
+				// if(this.kwlx){//刊物类型
+				// 	params.topicType=this.ztlxid
+				// }
+				// if(this.psqk){批示情况
+				// 	params.topicType=this.ztlxid
+				// }
+				
+				if(tab=='tjyx'){
+					params.isOutstanding="0"
+				}else if(tab=='tjzd'){
+					params.isKeyPoint="0"
+				}else if(tab=='xxsb'){
+					params.userId=this.userId
+				}
+				
+				getsqmyInfoListFn(params).then(res=>{
+					if(res.code==200){
+						if (res.rows.length < this.pageSize) {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+							if (num < res.total) {
+								this.reachflag = true
+								this.wtdt = '上拉加载更多'
+							} else {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							}
+						}
+						if (this.pageNum == 1) {
+							this.list = res.rows;
+						} else {
+							this.list = this.list.concat(res.rows)
+						}
+					}else{
+						this.$toast(res.msg)
+					}
+				}) 
+				
+				
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4;background-color: $com-cd3;
+	.topl{width: 60rpx;height: 60rpx;display: flex;align-items: center;justify-content: center;
+		image{width: 40rpx;height: 30rpx;}
+	}
+	.topr{display: flex;align-items: center;
+		image{width: 26rpx;height: 26rpx;margin-right: 12rpx;}
+		view{font-weight: 500;font-size: 26rpx;color: #FFFFFF;}
+	}
+	.tablists{
+		overflow: auto;flex-wrap: nowrap;
+		view{font-weight: bold;font-size: 26rpx;color: #FFFFFF;position: relative;flex: 1 0 auto;padding: 22rpx 24rpx;margin-right: 6rpx;box-sizing: border-box;text-align: center;
+			&:last-child{margin-right: 0;}
+			&.act{font-size: 30rpx;
+				&::after{content: '';width: 62rpx;height: 10rpx;background: #FFFFFF;border-radius: 4rpx;left: 50%;margin-left: -31rpx;bottom: 0rpx;position: absolute;}
+			}
+		}
+	}
+	.lbtab{height: 114rpx;background: #FFFFFF;border-radius: 30rpx;padding-left: 24rpx;position: absolute;left:24rpx;right: 24rpx;bottom: -58rpx;
+		.limg{width: 40rpx;height: 34rpx;margin-right: 10rpx;flex:0 0 auto;}
+		.lbtabs{overflow: auto;flex-wrap: nowrap;flex: 1;
+			.lbtabp{display: flex;align-items: center;flex: 0 0 auto;margin-right: 24rpx;}
+			.upimg{width: 18rpx;height: 10rpx;}
+			
+		}
+	}
+}
+.mbox{padding:58rpx 24rpx 28rpx;}
+.lbtabs /deep/ picker{padding: 0 18rpx;}
+</style>

二進制
work/static/images/lwico.png


二進制
work/static/images/lwup.png


二進制
work/static/images/sxicon.png