zouling 1 yıl önce
ebeveyn
işleme
1e4b068592

+ 4 - 4
1.txt

@@ -1,10 +1,10 @@
-包名:zs.yuanqu.app
+包名:zs.zhengxie.app
 
 
-证书别名:__uni__9ace566
-证书私钥密码:UmhugJmm
+证书别名:__uni__ff95f38
+证书私钥密码:UsFZ7LNq
 
-SHA1: 73:E5:A0:DD:64:51:C9:85:18:EF:A1:00:23:3E:81:90:C8:9F:12:3C
+SHA1: FE:DC:24:F0:77:9A:97:2B:16:53:0E:A8:A1:5B:F5:F5:38:93:1A:90
 
 高德key:b85f0c64b3c9a082d740912cf3019c88
 

BIN
40fbd6d4d4e4b2feea076c59423a03ce.keystore


+ 109 - 0
api/mine/meeting.js

@@ -0,0 +1,109 @@
+import request from '@/utils/request'
+// 会议活动-列表 zxConference:conference:list
+export function getMeetListFn(data) {
+  return request({
+    'url': '/zxConference/conference/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 会议活动不分页zxConference:conference:listNoPage
+export function getMeetListNopageFn(data) {
+  return request({
+    'url': '/zxConference/conference/listNoPage',
+    'method': 'get',
+	'data':data
+  })
+}
+// 会议活动-详情 zxConference:conference:query
+export function getMeetDetaiFn(data) {
+  return request({
+    'url': '/zxConference/conference/'+data,
+    'method': 'get',
+  })
+}
+// 会议活动-新增 zxConference:conference:query
+export function getMeetAddFn(data) {
+  return request({
+    'url': '/zxConference/conference',
+    'method': 'post',
+	'data':data
+  })
+}
+// 会议活动-修改 zxConference:conference:edit
+export function getMeetEditFn(data) {
+  return request({
+    'url': '/zxConference/conference/put',
+    'method': 'post',
+	'data':data
+  })
+}
+//会议活动人员-详情zxConference:conference:getUserInfo
+export function getMeetPeoListFn(data) {
+  return request({
+    'url': '/zxConference/conference/getUserInfo',
+    'method': 'post',
+	'data':data
+  })
+}
+//委员信息-列表下拉树 人员信息
+export function getInfotreeSelectFn(data) {
+  return request({
+    'url': '/member/info/treeSelect',
+    'method': 'get',
+  })
+}
+// 政协发言-列表 zx:speak:list
+export function getSpeakListFn(data) {
+  return request({
+    'url': '/zx/speak/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 政协发言-新增 zx:speak:add
+export function getSpeakAddFn(data) {
+  return request({
+    'url': '/zx/speak',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协发言-修改 zx:speak:edit
+export function getSpeakEditFn(data) {
+  return request({
+    'url': '/zx/speak/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 政协发言-删除 zx:speak:edit
+export function getSpeakDelFn(data) {
+  return request({
+    'url': '/zx/speak/delete/'+data,
+    'method': 'get',
+  })
+}
+// 政协发言-详情 zx:speak:query
+export function getSpeakDetailFn(data) {
+  return request({
+    'url': '/zx/speak/'+data,
+    'method': 'get',
+  })
+}
+// 会议活动-修改会议答复信息 zxConference:conference:updateReply
+export function getupdateReplyFn(data) {
+  return request({
+    'url': '/zxConference/conference/updateReply',
+    'method': 'post',
+	'data':data
+  })
+}
+// 会议通知-列表 zxConference:conference:list
+// export function getMeetListFn(data) {
+//   return request({
+//     'url': '/zxConference/conference/list',
+//     'method': 'get',
+// 	'data':data
+//   })
+// }

+ 85 - 0
api/mine/report.js

@@ -0,0 +1,85 @@
+import request from '@/utils/request'
+// 履职信息-列表member:info:list
+export function getInfojopList(data) {
+  return request({
+    'url': '/member/info/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 履职信息-详情member:info:queryJop
+export function getInfojopDetai(data) {
+  return request({
+    'url': '/member/info/getInfoJop',
+    'method': 'get',
+	'data':data
+  })
+}
+// 履职信息-删除member:info:remove
+export function getInfojopDel(data) {
+  return request({
+    'url': '/member/info/delete/'+data,
+    'method': 'get',
+  })
+}
+
+// 委员信息-详情member:info:query
+export function getInfoDetailFn(data) {
+  return request({
+    'url': '/member/info/'+data,
+    'method': 'get',
+  })
+}
+// 委员信息-新增member:info:add
+export function getinfoAddFn(data) {
+  return request({
+    'url': '/member/info',
+    'method': 'post',
+	'data':data
+  })
+}
+// 委员信息-修改member:info:edit
+export function getInfoEditFn(data) {
+  return request({
+    'url': '/member/info/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 履历加分-新增zxBonus:bonus:add
+export function getBonusAddFn(data) {
+  return request({
+    'url': '/zxBonus/bonus',
+    'method': 'post',
+	'data':data
+  })
+}
+// 履历加分-列表履历加分-列表
+export function getBonusListFn(data) {
+  return request({
+    'url': '/zxBonus/bonus/list',
+    'method': 'get',
+  })
+}
+// 履历加分-详情zxBonus:bonus:query
+export function getBonusDetailFn(data) {
+  return request({
+    'url': '/zxBonus/bonus/'+data,
+    'method': 'get',
+  })
+}
+// 履历加分-修改zxBonus:bonus:edit
+export function getBonusEditFn(data) {
+  return request({
+    'url': '/zxBonus/bonus/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 履历加分-删除zxBonus:bonus:remove
+export function getBonusDelFn(data) {
+  return request({
+    'url': '/zxBonus/bonus/delete/'+data,
+    'method': 'get',
+  })
+}

+ 7 - 7
components/popup/popup.vue

@@ -16,16 +16,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>
 	</view>
@@ -63,8 +63,8 @@
 			getClose(){
 				this.$emit("getClose")
 			},
-			getFaFn(type){
-				this.$emit('getFaFn',type)
+			getFaFn(type,ptype){
+				this.$emit('getFaFn',type,ptype)
 			},
 		}
 	}

BIN
de4e95932d839b29e1a2ead7fb41f2ea.keystore


+ 2 - 2
manifest.json

@@ -1,6 +1,6 @@
 {
-    "name" : "园区安防",
-    "appid" : "__UNI__9ACE566",
+    "name" : "政协",
+    "appid" : "__UNI__FF95F38",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : 100,

+ 46 - 1
pages.json

@@ -186,7 +186,7 @@
 			},
 			
 			{
-				"path": "pages/notice/readdetail",
+				"path": "pages/meeting/readdetail",
 				"style": {
 					"navigationBarTitleText": "阅读详情",
 					"navigationBarBackgroundColor": "#1D64E2",
@@ -194,6 +194,51 @@
 					"h5":{"titleNView":false}
 				}
 			},
+			{
+				"path": "pages/meeting/list",
+				"style": {
+					"navigationBarTitleText": "阅读详情",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/add",
+				"style": {
+					"navigationBarTitleText": "创建会议",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/addspeak",
+				"style": {
+					"navigationBarTitleText": "录入发言",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/speaklist",
+				"style": {
+					"navigationBarTitleText": "发言列表",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/meeting/people",
+				"style": {
+					"navigationBarTitleText": "添加人员",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
 			{
 				"path": "pages/meeting/signin",
 				"style": {

+ 23 - 9
pages/index/index.vue

@@ -23,19 +23,19 @@
 						</view>
 						<view class="tit">提交提案</view>
 					</view>
-					<view class="htop">
+					<view class="htop" v-if="checkPermi(['sqmyInfo:info:add'])">
 						<view class="imgs">
 							<image :src="htopb" class="imgb"></image>
 						</view>
 						<view class="tit">上报社情民意</view>
 					</view>
-					<view class="htop">
+					<view class="htop" v-if="checkPermi(['member:info:list'])">
 						<view class="imgs">
 							<image :src="htopc" class="imgc"></image>
 						</view>
 						<view class="tit">履职档案</view>
 					</view>
-					<view class="htop">
+					<view class="htop" @click="getAddhy" v-if="checkPermi(['zxConference:conference:add'])">
 						<view class="imgs">
 							<image :src="htopd" class="imga"></image>
 						</view>
@@ -79,7 +79,7 @@
 									<image :src="hrimgc" class="flex0 imgc"></image>
 								</view>
 							</view>
-							<view class="htbox">
+							<view class="htbox" @click="getMettFn" v-if="checkPermi(['zxConference:conference:list'])">
 								<image :src="hrbgd" class="hrbg"></image>
 								<view class="htboxa flexc">
 									<view class="flex1 mr10">
@@ -253,16 +253,30 @@
 				this.$tab.navigateTo('/work/pages/case/add')
 			}
 		},
-		getFaFn(type){
-			this.ptype="";
-			if(type=='new'){
-				uni.removeStorageSync('tjtaList')
+		getAddhy(){
+			if(uni.getStorageSync('cjhyList')){
+				this.ptype='zchy'
+			}else{
+				this.$tab.navigateTo('/work/pages/meeting/add')
+			}
+		},
+		getFaFn(type,ptype){
+			this.ptype='';
+			if(ptype=='zcta'){
+				if(type=='new'){uni.removeStorageSync('tjtaList')}
+				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/case/add?type='+type)	
+			
 		},
 		getZxCaseFn(){
 			this.$tab.navigateTo('/work/pages/case/mine')
 		},
+		getMettFn(){
+			this.$tab.navigateTo('/work/pages/meeting/list')
+		},
 		getlzInfoFn(){
 			this.$tab.navigateTo('/work/pages/report/info')
 		},

+ 18 - 6
pages/mine/index.vue

@@ -22,7 +22,7 @@
 				</view>
 				<image :src="wrimg" class="rimg"></image>
 			</view>
-			<view class="conts flexcj">
+			<!-- <view class="conts flexcj">
 				<view class="clist">
 					<image :src="mconta"></image>
 					<view class="num">31</view>
@@ -43,7 +43,7 @@
 					<view class="num">31</view>
 					<view class="tit">办结中<text>/件</text></view>
 				</view>
-			</view>
+			</view> -->
 			<view class="mbgbox">
 				<view class="flexc mine_list" @click="handleToAddNews" v-if="checkPermi(['projectV2:sbbzb:add'])">
 					<view class="limg">
@@ -52,7 +52,7 @@
 					<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="handleToAddhy" v-if="checkPermi(['zxConference:conference:add'])">
 					<view class="limg">
 						<image :src="listimgb" class="imgb"></image>
 					</view>
@@ -61,7 +61,7 @@
 				</view>
 			</view>
 			<view class="mbgbox">
-				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+				<view class="flexc mine_list" @click="handleToAddzx" v-if="checkPermi(['proposalInfo:info:list'])">
 					<view class="limg">
 						<image :src="listimgc" class="imgc"></image>
 					</view>
@@ -75,14 +75,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="handleToAddlz" v-if="checkPermi(['sqmyInfo:info:list'])">
 					<view class="limg">
 						<image :src="listimge" class="imgc"></image>
 					</view>
 					<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="handleTohy" v-if="checkPermi(['zxConference:conference:list'])">
 					<view class="limg">
 						<image :src="listimgf" class="imgc"></image>
 					</view>
@@ -295,6 +295,18 @@
 			handleToAddNews(){
 				this.$tab.navigateTo('/work/pages/news/add')
 			},
+			handleToAddhy(){
+				this.$tab.navigateTo('/work/pages/meeting/add')
+			},
+			handleToAddzx(){
+				this.$tab.navigateTo('/work/pages/case/mine')
+			},
+			handleToAddlz(){
+				this.$tab.navigateTo('/work/pages/report/info')
+			},
+			handleTohy(){
+				this.$tab.navigateTo('/work/pages/meeting/list')
+			},
 			handleToLogin() {
 				this.$tab.reLaunch('/pages/login')
 			},

+ 79 - 0
utils/common.js

@@ -1,3 +1,10 @@
+import store from '@/store'
+import config from '@/config'
+import { getToken } from '@/utils/auth'
+import errorCode from '@/utils/errorCode'
+let timeout = 10000
+const baseUrl = config.baseUrl
+const clientid = config.Clientid
 /**
 * 显示消息提示框
 * @param content 提示的标题
@@ -75,6 +82,78 @@ export function selectValuetext(datas, value) {
 	})
 	return actions.join('')
 }
+//上传图片
+export function uploadmore(api, filePaths, successUp, failUp, i, length, files, callback) {
+	const isToken = (config.headers || {}).isToken === false
+	config.header = config.header || {}
+	if (getToken() && !isToken) {
+	  config.header['Authorization'] = 'Bearer ' + getToken();
+	  config.header['clientid']=clientid;
+	}
+	// get请求映射params参数
+	if (config.params) {
+	  let url = config.url + '?' + tansParams(config.params)
+	  url = url.slice(0, -1)
+	  config.url = url
+	}
+	
+	uni.showLoading({
+		title: '上传中'
+	})
+	var failfile = [];
+	uni.uploadFile({
+		timeout: config.timeout || timeout,
+		url: baseUrl + api, //仅为示例,非真实的接口地址
+		filePath: filePaths[i],
+		name: 'file',
+		header: config.header,
+		formData: config.formData,
+		success: function(resp) {
+			uni.hideLoading();
+			let result = JSON.parse(resp.data)
+			const code = result.code || 200
+			const msg = errorCode[code] || result.msg || errorCode['default']
+			// console.log(result.fileName,8)
+			if (result.code == 200) {
+				successUp++;
+				files[i] = result.fileName;
+			} else if(result.code==401) {
+				showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then(res => {
+				  if (res.confirm) {
+				    store.dispatch('LogOut').then(res => {
+				      uni.reLaunch({ url: '/pages/login/login' })
+				    })
+				  }
+				})
+				callback('无效的会话,或者会话已过期,请重新登录。');
+			}else{
+				failfile = failfile.concat(filePaths[i])
+				failUp++;
+			}
+		},
+		fail: function(res) {
+			uni.hideLoading();
+			failfile = failfile.concat(filePaths[i])
+			failUp++;
+		},
+		complete: function(rsp) {
+			// console.log(rsp, filePaths[i])
+			uni.hideLoading();
+			i++;
+			if (i == length) {
+				// uni.showToast({
+				// 	title: '总共' + successUp + '张上传成功,' + failUp + '张上传失败!',
+				// 	icon: 'none',
+				// 	duration: 2000
+				// });
+				callback(files);
+			} else { //递归调用upload函数
+				uploadmore(api, filePaths, successUp, failUp, i, length, files, callback);
+			}
+		}
+	});
+
+}
 /**
 * 参数处理
 * @param params 参数

+ 10 - 8
work/components/case/list.vue

@@ -40,7 +40,7 @@
 				</block>
 				
 				<!-- 委员反馈 提案办理 -->
-				<view class="casebtn flexc" v-if="type=='tabl'||type=='tasc'">
+				<view class="casebtn flexc" v-if="type=='tabl'">
 					<view class="ftit">办理状态<text>待反馈</text></view>
 					<view class="btn btn3" v-if="ite.satisfaction">已反馈</view>
 					<view class="btn btn2" v-else>反馈意见</view>
@@ -52,13 +52,13 @@
 						<view class="btn btn1" @click.stop="getTuiFn(ite,'scfk','1')">不予立案</view>
 						<view class="btn btn2" @click.stop="getTuiFn(ite,'scfk','0')">立案</view>
 					</block>
-					<block v-if="ite.isRecord=='0'">
+					<!-- <block v-if="ite.isRecord=='0'">
 						<view class="lftit">该提案已审查立案,查看<text class="lfdet">审查反馈</text></view>
 						<view class="btn btn3">已立案</view>
 					</block>
 					<block v-if="ite.isRecord==1">
 						<view class="lftit">该提案暂未通过审查立案</view>
-					</block>
+					</block> -->
 				</view>
 				<!--提案交办  -->
 				<view class="casebtn flexc" v-if="type=='tajb'">
@@ -82,16 +82,18 @@
 						<view class="btn btn2" @click.stop="getTuiFn(ite,'jbsh')">交办审核</view>
 					</block>
 				</view>
-				<!--催办  -->
+				<!--催办  4(不包含4) 之后 可以催办-->
 				<view class="casebtn flexc" v-if="type=='tacb'">
-					<block v-if="ite.isRecord=='0'">
+					<!-- <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">
+					</block> -->
+					<!-- <block v-if="ite.isRecord==1">
 						<view class="lftit">该提案暂未被催办</view>
 						<view class="btn btn2" @click.stop="getTuiFn(ite,'tacb')">催办</view>
-					</block>
+					</block> -->
+					<view class="lftit"></view>
+					<view class="btn btn2" @click.stop="getTuiFn(ite,'tacb')">催办</view>
 				</view>
 				<!-- 联名提案 -->
 				<view class="casebtn flexc" v-if="type=='lmta'">

+ 266 - 0
work/components/meeting/list.vue

@@ -0,0 +1,266 @@
+<template>
+  <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="tit overtwo" style="margin-bottom: 0;">{{ite.conferenceTitle}}</view>
+					<image :src="codeimg" class='codeimg' @click.stop="getTuiFn(ite,'qdm')"></image>
+				</view>
+				
+				<block v-if="type!='wdfy'&&type!='hyfy'">
+					<view class="ftxt">
+						<text>会议时间</text>
+						<view>{{ite.conferenceDate}}</view>
+					</view>
+					<view class="ftxt">
+						<text>会议地点</text>
+						<view>{{ite.conferenceAddress}}</view>
+					</view>
+					<view class="ftxt" >
+						<text>发布时间</text>
+						<view>{{ite.publishTime}}</view>
+					</view>
+					
+					<view class="ftxt">
+						<text>备注信息</text>
+						<view>{{ite.remark}}</view>
+					</view>
+				</block>
+				
+				<block v-if="type=='wdfy'">
+					<view class="flexcw" >
+						<view class="ftxt">
+							<text>发言人</text>
+							<view>{{ite.name}}</view>
+						</view>
+						<view class="ftxt">
+							<text>录入人</text>
+							<view>{{ite.inputName}}</view>
+						</view>
+					</view>
+					<view class="ftxt">
+						<text>关联会议</text>
+						<view>{{ite.conferenceTitle}}</view>
+					</view>
+					<view class="ftxt">
+						<text>发言单位</text>
+						<view>{{ite.speakUnit}}</view>
+					</view>
+					<view class="ftxt">
+						<text>发言类型</text>
+						<view>{{kaType(ite.speakType)}}</view>
+					</view>
+					<view class="ftxt">
+						<text>提交时间</text>
+						<view>{{ite.publishTime}}</view>
+					</view>
+					<view class="ftxt">
+						<text>审核状态</text>
+						<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>
+					<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>
+				</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>
+		</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 []
+			}
+		},
+		tajdlist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		wtdt:{
+			type: String,
+			default () {
+				return ''
+			}
+		},
+		type:{
+			type: [String,Number],
+			default () {
+				return ''
+			}
+		},
+		listtype:{
+			type: [String,Number],
+			default () {
+				return ''
+			}
+		},
+		fylxlist:{
+			type: Array,
+			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"),
+			codeimg:require("@/work/static/images/meeting/code.png"),
+		}
+	},
+	onLoad: function() {
+	},
+	methods:{
+		kaType(ite){
+			console.log(this.fylxlist)
+			return selectValue(this.fylxlist, ite);
+		},
+		getDetail(e){
+			this.$emit('getDetail',e)
+		},
+		getReadFn(e){
+			this.$emit('getReadFn',e)
+		},
+		getTuiFn(ite,txt,sh){
+			var that=this;
+			if(txt=='scfk'&&sh==0){
+				uni.showModal({
+					title: '确认立案',
+					content: "是否确认立案",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							var obj={
+								id:ite.conferenceId,
+								type:txt,
+								sh:sh,
+							}
+							that.$emit('getTuiFn',obj)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			}else{
+				var obj={
+					id:ite.conferenceId,
+					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;}
+	}
+	.codeimg{width: 42rpx;height: 42rpx;flex: 0 0 auto;margin-left: 20rpx;}
+	.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;}
+		}
+		.lfread{font-weight: bold;font-size: 26rpx;color: #FF0000;flex:1;
+			.lfdet{color: #222327;margin-left: 16rpx;}
+		}
+		.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>

+ 206 - 10
work/components/popup/popup.vue

@@ -201,16 +201,11 @@
 		<view class="fixedbox" v-if="type=='dffk'">
 			<view class="ttit">答复反馈</view>
 			<view  class="boxs">
-				<view class="mb16" @click="handling='电话,网络'">
-					<!-- @change="change" -->
+				<view class="mb16" >
 					<view class="ttxt mb18"><text class="cof0">*</text>办理方式</view>
-					<!-- 多选 -->
-					<uni-data-select
-					  v-model="handling"
-					  placeholder="请选择办理方式"
-					  :localdata="larange"
-					  
-					></uni-data-select>
+					<view @click="getBlfsMoreFn" class="chosebox flexc">
+						<view class="tit" :class="handling?'':'coa'">{{handling||'请选择协办单位'}}</view>
+					</view>
 				</view>
 				<view class="mb16">
 					<!-- @change="change" -->
@@ -407,6 +402,62 @@
 				<view class="btns btn2" @click="getupSubmit">提交</view>
 			</view>
 		</view>
+		<!-- 办理方式 -->
+		<view class="bgbox" style="z-index: 15;" @click="ftype=''" v-if="ftype=='blfs'"></view>
+		
+		<view class="fixefbox" v-if="ftype=='blfs'">
+			<view class="closebox" @click="ftype=''">
+				<image :src="closeimg"></image>
+			</view>
+			
+			<view class="tit">办理方式(可多选)</view>
+			<view class="bllist">
+				<view :class="cheklist.indexOf(ite.label)!=-1?'act':''" @click="getCheck(ite)" v-for="(ite,idx) in blfsList" :key='idx'>{{ite.label}}</view>
+			</view>
+		</view>
+		<!-- 参会答复 -->
+		<view class="fixedbox" v-if="type=='chdf'">
+			<view class="ttit">参会答复</view>
+			<view  class="boxs">
+				<view class="mb16">
+					<view class="ttxt mb18"><text class="cof0">*</text>是否参会</view>
+					<uni-data-select
+					  v-model="isJoin"
+					  :localdata="joinlist"
+					  @change="change"
+					></uni-data-select>
+					<view class="ptips">* 若选择否,请务必填写请假事由并提交</view>
+				</view>
+				<view class="mb16">
+					<!-- @change="change" -->
+					<view class="ttxt mb18"><text class="cof0"></text>请假类型</view>
+					<uni-data-select
+					  v-model="qjlxtxt"
+					  placeholder="请选择请假类型"
+					  :localdata="qjlxlist"  
+					></uni-data-select>
+				</view>
+				<view class="mb16">
+					<view class="ttxt mb18"><text class="cof0"></text>请假事由</view>
+					<textarea class="textar " style="height: 186rpx;" @blur="getBlur" v-model="content" placeholder="请输入请假事由" maxlength="1000" ></textarea>
+				</view>
+			</view>
+			<view class="fixedbtn flexcj">
+				<view class="btns btn1" @click="getClose">取消</view>
+				<view class="btns btn2" @click="getupSubmit">提交</view>
+			</view>
+		</view>
+		<!-- 会议签到二维码 -->
+		<view class="fixedbox" v-if="type=='qdm'">
+			<view class="ttit" style="margin-bottom: 80rpx;">会议签到二维码</view>
+			<image :src="codeimg" class="codeimg"></image>
+			<view class="fixedbtn flexcj">
+				<view class="btns btn1" @click="getClose">取消</view>
+				<view class="btns btn2" @click="getcodeDown">
+					<image :src="downimg" class="down"></image>
+					保存至手机</view>
+			</view>
+		</view>
 		<selectnore-more-picker
 			ref="dfdwpicker"
 			:title="dfdwpicker.title"
@@ -514,6 +565,12 @@
 				default () {
 					return []
 				}
+			},
+			qjlxlist:{
+				type: Array,
+				default () {
+					return []
+				}
 			}
 		},
 		data(){
@@ -559,6 +616,9 @@
 				filelist:[], 
 				fjimg:require("@/work/static/images/fjimg.png"),
 				delimg:require("@/work/static/images/delimg.png"),
+				codeimg:require("@/work/static/images/meeting/code.png"),
+				downimg:require("@/work/static/images/meeting/down.png"),
+				closeimg:require("@/work/static/images/close.png"),
 				
 				speechimgs:require('@/work/static/images/voice.png'),
 				range: [{ value: 0, text: "满意" },{ value: 1, text: "不满意" },],
@@ -566,18 +626,23 @@
 				larange:[{ value: 0, text: "立案" },{ value: 1, text: "不立案" }],
 				jbsharange:[{ value: 7, text: "不通过" },{ value: 8, text: "通过" }],
 				agreelist:[{ value: 1, text: "同意" },{ value: 2, text: "不同意" }],
+				joinlist:[{ value: 'Y', text: "是" },{ value: 'N', text: "否" }],
 				value: 0,
 				isRecord:'',//是否立案
 				jbshtxt:'',//审核通过不通过
 				handling:'',//办理方式
 				degree:'',//办理程度
 				mycdtxt:'',//满意程度
+				isJoin:'',//是否参会
+				qjlxtxt:'',//请假类型
 				recorddw:'',
 				recorddwm:'',//协办单位
 				recorddwlist:[],
 				recorddwmlist:[],//协办单位
 				content:'',//文本输入
-				
+				ftype:'',//二层弹窗
+				blfsval:'',//办理方式
+				cheklist:[],
 				
 				voiceflag:false,
 				voiceToken: '',
@@ -672,6 +737,101 @@
 			getRecorddwMoreFn(){
 				this.$refs.treePickerxtdw._show();
 			},
+			getBlfsMoreFn(){
+				this.ftype='blfs'
+			},
+			getCheck(ite){
+				var idx=this.cheklist.findIndex(item=>item==ite.label)
+				if(idx!=-1){
+					this.cheklist.splice(idx,1)
+				}else{
+					this.cheklist.push(ite.label)
+				}
+				this.handling=this.cheklist.join(',')
+				
+			},
+			change(){
+				
+			},
+			getcodeDown(){
+				// #ifdef H5
+				// 将base64格式的图片转换成Blob对象
+				  var arr = this.yycode.split(","),
+				    mime = arr[0].match(/:(.*?);/)[1],
+				    bstr = atob(arr[1]),
+				    n = bstr.length,
+				    u8arr = new Uint8Array(n);
+				  while (n--) {
+				    u8arr[n] = bstr.charCodeAt(n);
+				  }
+				  // 将Blob对象转换成文件并下载到本地
+				  var blob = new Blob([u8arr], {
+				    type: mime
+				  });
+				  var a = document.createElement('a');
+				  a.download = 'qrcode';
+				  a.href = URL.createObjectURL(blob);
+				  a.click();
+				// #endif
+				// #ifndef H5
+				uni.getSetting({//获取用户的当前设置
+				    success:(res)=> {
+				        if(res.authSetting['scope.writePhotosAlbum']){//验证用户是否授权可以访问相册
+				            this.saveImageToPhotosAlbum();
+				        }else{
+				            uni.authorize({//如果没有授权,向用户发起请求
+				                scope: 'scope.writePhotosAlbum',
+				                success:()=> {
+				                    this.saveImageToPhotosAlbum();
+				                },
+				                fail:()=>{
+				                    uni.showToast({
+				                        title:"请打开保存相册权限,再点击保存相册分享",
+				                        icon:"none",
+				                        duration:3000
+				                    });
+				                    setTimeout(()=>{
+				                        uni.openSetting({//调起客户端小程序设置界面,让用户开启访问相册
+				                            success:(res2)=> {
+				                                // console.log(res2.authSetting)
+				                            }
+				                        });
+				                    },3000);
+				                }
+				            })
+				        }
+				    }
+				})
+				// #endif
+				
+			},
+			saveImageToPhotosAlbum(){
+			    let base64=this.yycode.replace(/^data:image\/\w+;base64,/, "");//去掉data:image/png;base64,
+			    let filePath=wx.env.USER_DATA_PATH + '/qrcode.png';
+			    uni.getFileSystemManager().writeFile({
+			        filePath:filePath ,  //创建一个临时文件名
+			        data: base64,    //写入的文本或二进制数据
+			        encoding: 'base64',  //写入当前文件的字符编码
+			        success: res => {
+			            uni.saveImageToPhotosAlbum({
+			                filePath: filePath,
+			                success: function(res2) {
+			                    uni.showToast({
+			                        title: '保存成功,请从相册选择再分享',
+			                        icon:"none",
+			                        duration:5000
+			                    })
+			                },
+			                fail: function(err) {
+			                    // console.log(err.errMsg);
+			                }
+			            })
+			        },
+			        fail: err => {
+			            //console.log(err)
+			        }
+			    })
+			},
 			selectChangextdw(e){
 				if(e.length){
 					var newArr=[]
@@ -844,6 +1004,25 @@
 						isAgree:this.jbshtxt,
 					}
 					this.$emit('getupSubmit',obj)
+				}else if(type=='chdf'){
+					if(!this.isJoin){
+						this.$toast('请选择是否参会')
+						return
+					}
+					if(this.isJoin=='N'&&this.qjlxtxt==''){
+						this.$toast('请选择请假类型')
+						return
+					}
+					if(this.isJoin=='N'&&!this.content){
+						this.$toast('请输入请假事由')
+						return
+					}
+					var obj={
+						isJoin:this.isJoin,
+						leaveType:this.qjlxtxt,
+						leaveReason:this.content,
+					}
+					this.$emit('getupSubmit',obj)
 				}
 				
 				
@@ -1065,6 +1244,7 @@
 				&.coa{color: #AAAAAA;}
 			}
 		}
+		.ptips{font-weight: 500;font-size: 13px;color: #FF0000;text-align: right;margin-top: 16rpx;}
 		// 语音按钮
 		.speech{
 			width: 190rpx;height:56rpx;background: linear-gradient(180deg, #4480EB 0%, #1D64E2 100%);border-radius: 28rpx;
@@ -1076,15 +1256,31 @@
 			&.texthe{height: 190rpx;}
 		}
 	}
+	.codeimg{width: 384rpx;height: 384rpx;margin: 0 auto 88rpx;}
 	.fixedbtn{padding-top: 18rpx;
 		.btns{width: 254rpx;height: 80rpx;border-radius: 40rpx;font-weight: bold;
 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;}
 		}
 		
 	}
 }
+.fixefbox{background-color: #fff;padding: 36rpx 0;position: fixed;left:0;right: 0;bottom: 0;z-index: 20;
+	.tit{font-weight: bold;font-size: 30rpx;color: #222327;padding: 0 80rpx;text-align: center;
+		text{font-size: 26rpx;color: #AAAAAA;}
+	}
+	.closebox{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;	
+		position: absolute;left:28rpx;top: 36rpx;
+		image{width: 24rpx;height: 22rpx;}
+	}
+	.bllist{padding: 0 12rpx;display: flex;flex-wrap: wrap;
+		view{min-width: 194rpx;height: 70rpx;background: #F5F5F5;border-radius: 36rpx;margin: 30rpx 24rpx 0;line-height: 70rpx;text-align: center;padding: 0 24rpx;box-sizing: border-box;
+			&.act{background: #DFEBFF;color: #1D64E2;}
+		}
+	}
+}
 // 附件
 .fjadd{
 	.btn{font-weight: bold;font-size: 30rpx;color: #1D64E2;margin: 0;display: flex;align-items: center;}

+ 84 - 21
work/components/report/list.vue

@@ -2,42 +2,75 @@
   <view>
 	<view v-if="datalist.length>0">
 		<!-- 履职信息 -->
-		<block v-if="type==1">
-			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.proposalId)">
+		<block v-if="type=='lzxx'">
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.memberId)">
 				<view class="head flexc mb18">
-					<image :src="avatarimg"></image>
+					<image v-if="ite.avatar" :src="baseUrl+ite.avatar"></image>
+					<image v-else :src="avatarimg"></image>
 					<view class="headr">
-						<view class="name">吴爱妮</view>
-						<view class="unit">中国共产党;中国共产党</view>
+						<view class="name">{{ite.name}}</view>
+						<view class="unit">{{kaType(ite.boundary,jblist)}};{{kaType(ite.partyAffiliation,dplist)}}</view>
 					</view>
 				</view>
 				<!-- <view class="tit overtwo">{{ite.title}}</view> -->
 				<view class="ftxt">
 					<text>工作单位及职位</text>
-					<view>潜山市政协委员会 委员</view>
+					<view>{{ite.unit}}</view>
 				</view>
 				<view class="ftxt">
-					<text>联系方式 </text>
-					<view>13700562888</view>
+					<text>联系方式</text>
+					<view>{{ite.phonenumber}}</view>
 				</view>
 				<view class="flexw">
 					<view class="ftxt">
 						<text>履职得分</text>
-						<view class="cofe">86</view>
+						<view class="cofe">{{ite.score}}</view>
 					</view>
 					<view class="ftxt">
 						<text>综合排名</text>
-						<view class="cofe">3</view>
+						<view class="cofe">{{ite.ranking}}</view>
 					</view>
 				</view>
 				<view class="casebtn">
-					<view class="btn btn2">审核</view>
-					<view class="btn btn4">修改</view>
-					<view class="btn btn1">删除</view>
+					<!-- <view class="btn btn2">审核</view> -->
+					<view class="btn btn4" v-if="checkPermi(['member:info:edit'])" @click.stop="getTuiFn(ite.memberId,'edit')">修改</view>
+					<view class="btn btn1" v-if="checkPermi(['member:info:remove'])" @click.stop="getTuiFn(ite.memberId,'del')">删除</view>
 				</view>
 			</view>
 		</block>
-		<!-- 提案方便 -->
+		<!-- 加分记录 -->
+		<block v-if="type=='jfju'">
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.memberId)">
+
+				<view class="tit overtwo">{{kaType(ite.boundary,jblist)}}</view>
+				<view class="ftxt">
+					<text>考核类型</text>
+					<view>{{kaType(ite.checkType,khlxList)}}</view>
+				</view>
+				<view class="ftxt">
+					<text>加分类型</text>
+					<view>{{kaType(ite.bonusType,jflxList)}}</view>
+				</view>
+				<view class="ftxt">
+					<text>加分时间</text>
+					<view>{{ite.bonusTime}}</view>
+				</view>
+				<view class="ftxt">
+					<text>分值</text>
+					<view class="cofe">{{ite.score}}</view>
+				</view>
+				<view class="ftxt">
+					<text>加分事由</text>
+					<view >{{ite.bonusReason}}</view>
+				</view>
+				<view class="casebtn">
+					<!-- <view class="btn btn2">审核</view> -->
+					<view class="btn btn4" v-if="checkPermi(['zxBonus:bonus:edit'])" @click.stop="getTuiFn(ite.bonusId,'edit')">修改</view>
+					<view class="btn btn1" v-if="checkPermi(['zxBonus:bonus:remove'])" @click.stop="getTuiFn(ite.bonusId,'del')">删除</view>
+				</view>
+			</view>
+		</block>
+		<!-- 提案方面 -->
 		<block v-if="type==2">
 			<view class="talist">
 				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
@@ -63,6 +96,9 @@
 </template>
 
 <script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import config from '@/config'
+	const baseUrl = config.baseUrl
 	import { selectValue } from '@/utils/common.js';
 	import noData from "@/components/nodata/nodata.vue"
   export default {
@@ -73,7 +109,31 @@
 				return []
 			}
 		},
-		tajdlist: {
+		dplist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		jblist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		jcList: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		khlxList: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		jflxList: {
 			type: Array,
 			default () {
 				return []
@@ -98,8 +158,6 @@
 	data(){
 		return{
 			avatarimg:require("@/static/images/mine/header.png"),
-			
-			
 			start:require("@/work/static/images/start.png"),
 			nstart:require("@/work/static/images/nstart.png"),
 			zanimg:require("@/work/static/images/zanico.png"),
@@ -109,18 +167,23 @@
 		}
 	},
 	onLoad: function() {
+		
+	},
+	mounted() {
+		this.baseUrl=baseUrl;
 	},
 	methods:{
-		kaType(ite){
-			return selectValue(this.tajdlist, ite);
+		checkPermi, checkRole,
+		kaType(ite,list){
+			return selectValue(list, ite);
 		},
 		getDetail(e){
 			this.$emit('getDetail',e)
 		},
-		getTuiFn(txt){
+		getTuiFn(id,txt){
 			var obj={
 				type:txt,
-				id:1,
+				id:id,
 			}
 			this.$emit('getTuiFn',obj)
 		},

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

@@ -103,7 +103,7 @@
 						  <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.isc=='否'" @click.stop="$emit(ren.func,item,index)" style="color:#1D64E2">{{item.isc=='否'?'(查看详情)':''}}</text>
+							  <text  v-if="item.isJoin=='否'" @click.stop="$emit(ren.func,item,index)" style="color:#1D64E2">{{item.isJoin=='否'?'(查看详情)':''}}</text>
 						    </view>
 						  </template>
                           <template v-else>
@@ -114,6 +114,10 @@
 	                      </view>
 	                    </view>
 	                  </template>
+					<!-- 格式化处理 -->
+					<template v-else-if="ite.type==='format'">
+						<view>{{kayType(itemFilter(item,ite),parameter[ite.key])}}</view>
+					</template>
                     <template v-else-if="ite.type==='selection'">
                       <view class="checkbox-item">
                         <tableCheckbox @checkboxSelected="(e)=>checkboxSelected(e,item)" :cellData="item" :checked="item.checked"/>
@@ -350,6 +354,10 @@
                       </view>
                     </view>
                   </template>
+				  <!-- 格式化处理 -->
+				  <template v-else-if="ite.type==='format'">
+						<view>{{kayType(itemFilter(item,ite),parameter[ite.key])}}</view>
+				  </template>
                   <template v-else-if="ite.type==='selection'">
                     <view class="checkbox-item">
                       <tableCheckbox @checkboxSelected="(e)=>checkboxSelected(e,item)" :cellData="item" :checked="item.checked"/>
@@ -405,6 +413,7 @@ import {getScrollbarSize} from "./js/util";
 // show-header 是否显示表头
 //headbgColor  头部背景色
 //borderr右侧的线
+// parameter 格式化数据总对象
 export default {
   components:{
     TableCheckbox,
@@ -419,6 +428,10 @@ export default {
 		type:Boolean,
 		default:true
 	},
+	parameter:{
+		type:Object,
+		default:null
+	},
     highlight:{
       type:Boolean,
       default:false
@@ -526,7 +539,6 @@ export default {
           }else if(column.type==="img"){
 			   }else if(column.type==="selection"){
 			}else{
-				console.log(column,23)
 			let arr = [this.getTextWidth(column.label)]
             this.data.forEach(data=>{
               let str = (data[column.name]+'')
@@ -658,6 +670,17 @@ export default {
   mounted(){
   },
   methods: {
+	  kayType(value,datas){
+		var actions = [];
+		var idx=0;
+		Object.keys(datas).some((key) => {
+			if (datas[key].value == ('' + value)) {
+				actions.push(datas[key].label);
+				return true;
+			}
+		})
+		return actions.join('')  
+	  },
 getMove(){
 	
 },

+ 1 - 0
work/pages/case/add.vue

@@ -414,6 +414,7 @@
 						if(that.pagetype=='add'){
 							getCaseAddFn(params).then(res=>{
 								if(res.code==200){
+									uni.removeStorageSync('tjtaList')
 									that.$toast("提交成功")
 									uni.$emit("refreshlist")
 									setTimeout(function(){

+ 91 - 51
work/pages/case/mine.vue

@@ -42,7 +42,7 @@
 					</view>
 					<view class="lbtabp">
 						<picker mode="date" fields="year"  range-key='label' :value="talbidx"   @change='bindDateChangeb'>
-							<view :class="tatime?'':'f16 co80'">{{tatime || "选择年份"}}</view>
+							<view :class="year?'':'f16 co80'">{{year || "选择年份"}}</view>
 						</picker>
 						<image :src="upimg" class="upimg"></image>
 					</view>
@@ -59,7 +59,7 @@
 		<view class="mbox">
 			<case-list :datalist="list" :listtype="listtype" :wtdt="wtdt" :tajdlist='tajdlist' :type='tabidx' @getDetail="getDetail"  @getTuiFn="getTuiFn"></case-list>
 		</view>
-		<view v-if="checkPermi(['proposalInfo:info:add'])">
+		<view v-if="checkPermi(['proposalInfo:info:add'])&&tabidx=='wdta'">
 			<view style="height: 100rpx;"></view>
 			<view class="fwbtns" @click="getAddCase">提交提案</view>
 		</view>
@@ -73,7 +73,7 @@
 <script>
 	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
 	import {getCaseListFn,getInfoisRecordFn,getInfoAssignFn,getInfoReplyFn,getInfoShFn,getInfoIdeaFn,getInfozxIdeaFn,
-	getInfourgeFn,getInfokeyPointFn,getInfooutstandingFn,getUserverifyFn 
+	getInfourgeFn,getInfokeyPointFn,getInfooutstandingFn,getUserverifyFn,getInfojointlyListFn
 	} from "@/api/mine/case.js"
 	import popUp from "@/work/components/popup/popup.vue"
 	import caseList from "@/work/components/case/list.vue"
@@ -122,13 +122,14 @@
 				talbid:'',//提案类别id
 				talx:'',//提案类型
 				talxid:'',
-				tatime:'',//提案时间
+				year:'',//提案时间
 				title:'',
 				deptTree:[],
 				matterList:[],
 				blcdlist:[],
 				mycdlist:[],
 				id:'',
+				userId:this.$store.state.user.userId,
 			}
 		},
 		onUnload(){
@@ -162,7 +163,7 @@
 						this.tajdlist = res.data.map(v => {
 							return {
 								label: v.dictLabel,
-								value: Number(v.dictValue)
+								value: v.dictValue
 							}
 						})
 					}
@@ -218,7 +219,7 @@
 				var sh=data.sh;
 				this.id=data.id;
 				var type=data.type;
-				console.log(data,2)
+				var that=this;
 				if(type=='scfk'){
 					if(sh==1){
 						this.ptype=data.type;
@@ -459,15 +460,23 @@
 					delta:1
 				})
 			},
-			bindDateChangea(e){
-				var val=e.detail.value;
-				this.talx=this.talxList[val].label;
-				this.talxid=this.talxList[val].value;
+			getrefreshData(){
 				this.pageNum=1;
 				this.list=[];
 				this.reachflag=true;
 				this.getDataFn()
 			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.talx=this.talxList[val].label;
+				this.talxid=this.talxList[val].value;
+				this.getrefreshData()
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.year=val;
+				this.getrefreshData()
+			},
 			getTalbFn(){
 				var obj={
 					id:this.talbid,
@@ -488,51 +497,82 @@
 					pageSize:this.pageSize,
 					pageNum: this.pageNum,
 				}
-				// if(this.tabtype){
-				// 	params.proposalProgress=this.tabtype
-				// }
-				// if(this.talx){
-				// 	params.proposalType=this.talxid
-				// }
-				// if(this.tnlbname){
-				// 	params.categoryId=this.talbid
-				// }
-				// if(this.title){
-				// 	params.title=this.title
-				// }
-				// if(tab=='lmta'){
-				// 	params.isJointly="是"
-				// }else if(tab=='tjyx'){
-				// 	params.isOutstanding="0"
-				// }else if(tab=='tjzd'){
-				// 	params.isKeyPoint="0"
-				// }else if(tab=='gkta'){
-				// 	params.isKeyPoint="是"
-				// }
-				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 {
+				if(this.tabtype){
+					params.proposalProgress=this.tabtype
+				}
+				if(this.talx){
+					params.proposalType=this.talxid
+				}
+				if(this.tnlbname){
+					params.categoryId=this.talbid
+				}
+				if(this.title){
+					params.title=this.title
+				}
+				if(this.year){
+					params.year=this.year
+				}
+				if(tab=='tjyx'){
+					params.isOutstanding="0"
+				}else if(tab=='tjzd'){
+					params.isKeyPoint="0"
+				}else if(tab=='gkta'){
+					params.isPublicity="是"
+				}else if(tab=='wdta'){
+					params.userId=this.userId
+				}
+				if(this.tabidx=='lmta'){
+					getInfojointlyListFn(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{
+					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)
 						}
-					}else{
-						this.$toast(res.msg)
-					}
-				}) 
+					}) 
+				}
+				
 				
 			},
 		}
@@ -550,7 +590,7 @@
 	}
 	.tablists{
 		overflow: auto;flex-wrap: nowrap;
-		view{font-weight: bold;font-size: 26rpx;color: #FFFFFF;position: relative;flex: 0 0 auto;padding: 22rpx 24rpx;margin-right: 6rpx;box-sizing: border-box;
+		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;}

+ 298 - 0
work/pages/meeting/add.vue

@@ -0,0 +1,298 @@
+<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="conferenceTitle" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.conferenceTitle" placeholder="请输入会议名称" />
+					<!-- <view class="edtip pa">* 标题前无须加关于,标题后无须加的建议,系统将自动填写</view> -->
+				</uni-forms-item>
+				<picker  mode="date"   @change='bindDateChangea'>
+					<uni-forms-item label="会议日期" name="conferenceDate" required>
+						<view class="lbtabp">
+							<view :class="datainfo.conferenceDate?'':'coa'">{{datainfo.conferenceDate || "请选择会议日期"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<picker  mode="time"  @change='bindDateChangeb'>
+					<uni-forms-item label="会议时间" name="conferenceTime" required>
+						<view class="lbtabp">
+							<view :class="datainfo.conferenceTime?'':'coa'">{{datainfo.conferenceTime || "请选择会议时间"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<uni-forms-item label="会议地点" name="conferenceAddress" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.conferenceAddress" 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.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 class="coa" v-else>请选择参会人员</view>
+				</view>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb20">
+					<view class="tit flexc">
+						<view>备注信息</view>
+					</view>
+				</view>
+				<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>
+		</view>
+		</uni-forms>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	import { selectValue } from '@/utils/common.js';
+	import {getMeetAddFn,getMeetDetaiFn,getMeetEditFn} from "@/api/mine/meeting.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		data(){
+			return{
+				titimg:require("@/work/static/images/titbg.png"),
+				addimg:require("@/work/static/images/meeting/add.png"),
+				datainfo:{
+					"conferenceTitle":"",//会议名称
+					"conferenceDate":"",//会议日期
+					"conferenceTime":"",//会议时间
+					"conferenceAddress":"",//会议地点,
+					"remark":'',//备注
+					'zxConferenceUserList':[],//参会人员
+				},
+				id:"",
+				pagetype:'add',
+				editinfo:'',
+			}
+		},
+		onUnload(){
+			uni.$off('refreshtalb')
+		},
+		onLoad(e) {
+			uni.$on('refreshtalb', (e) => {
+				this.datainfo.zxConferenceUserList=e.zxConferenceUserList
+			})
+			if(e.type=='edit'){
+				this.id=e.id;
+				this.pagetype='edit'
+				this.getDetail()
+			}
+			if(e.type=='old'&&uni.getStorageSync('cjhyList')){
+				var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('cjhyList')))
+				var params=newObj.params;
+				this.datainfo=params;
+			}
+		},
+		methods:{
+			kayType(ite,list){
+				return selectValue(list, ite);
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.datainfo.conferenceDate=val;
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.datainfo.conferenceTime=val+':00';
+			},
+			getDetail(){
+				var that=this;
+				getCaseDetailFn(this.id).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('/')
+						}
+						// this.dwdetList=res.data.proposalUnitReplyList;
+					}
+				})
+			},
+			getAddPeoFn(){
+				var obj={
+					list:this.datainfo.zxConferenceUserList,
+				}
+				this.$tab.navigateTo('/work/pages/meeting/people?data='+encodeURIComponent(JSON.stringify(obj)))
+			},
+			gettalbFn(){
+				
+			},
+			// 暂存
+			getZanFnt(){
+				var that=this;
+				var params=that.datainfo;
+				var obj={
+					params:params,
+				}
+				uni.setStorageSync('cjhyList', JSON.parse(JSON.stringify(obj)))
+				that.$toast("暂存成功")
+			},
+			getSubmit(){
+				var that=this;
+				if(!this.datainfo.conferenceTitle){
+					this.$toast("请输入会议名称")
+					return
+				}
+				if(!this.datainfo.conferenceDate){
+					this.$toast("请选择会议日期")
+					return
+				}
+				if(!this.datainfo.conferenceTime){
+					this.$toast("请选择会议时间")
+					return
+				}
+				if(!this.datainfo.conferenceAddress){
+					this.$toast("请输入会议地点")
+					return
+				}
+				if(this.datainfo.zxConferenceUserList.length<1){
+					this.$toast("请选择会议人员")
+					return
+				}
+				var params=this.datainfo
+				if(that.pagetype=='add'){
+					getMeetAddFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast("提交成功")
+							uni.$emit("refreshlist")
+							setTimeout(function(){
+								uni.navigateBack({
+									delta: 1 //返回层数,2则上上页
+								});
+							},1200)
+						}
+					})
+				}else{
+					getMeetEditFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast("修改成功")
+							uni.$emit("refreshdetail")
+							setTimeout(function(){
+								uni.navigateBack({
+									delta: 1 //返回层数,2则上上页
+								});
+							},1200)
+							
+						}
+					})
+					
+				}
+			},
+		}
+	}
+</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>

+ 491 - 0
work/pages/meeting/addspeak.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="speakTitle" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.speakTitle" placeholder="请输入标题" />
+					<!-- <view class="edtip pa">* 标题前无须加关于,标题后无须加的建议,系统将自动填写</view> -->
+				</uni-forms-item>
+				<picker  range-key='label' :value="fyridx" :range="fyrlist"   @change='bindDateChangec'>
+					<uni-forms-item label="发言人" name="name" required>
+						<view class="lbtabp">
+							<view :class="datainfo.name?'':'coa'">{{datainfo.name || "请选择发言人"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<uni-forms-item label="录入人" name="inputName" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.inputName" placeholder="请输入录入人" />
+				</uni-forms-item>
+				<picker  range-key='label' :value="glhyidx" :range="glhylist"   @change='bindDateChangea'>
+					<uni-forms-item label="关联会议" name="conferenceId" required>
+						<view class="lbtabp">
+							<view :class="datainfo.conferenceTitle?'':'coa'">{{datainfo.conferenceTitle || "请选择关联会议"}}</view>
+						</view>
+					</uni-forms-item>
+				</picker>
+				<uni-forms-item label="发言单位" name="speakUnit" required>
+					<view class="lbtabp" @click="getRecorddwFn">
+						<view :class="datainfo.speakUnit?'':'coa'">{{datainfo.speakUnit || "请选择发言单位"}}</view>
+					</view>
+				</uni-forms-item>
+				<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>
+					</uni-forms-item>
+				</picker>
+			</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.path)">
+							<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="addbtn">
+				<view class="btn btn1" @click="getZanFnt">暂存</view>
+				<view class="btn btn2" @click="getSubmit">提交</view>
+			</view>
+		</view>
+		</uni-forms>
+		<!-- 选择单位 -->
+		<selectnore-more-picker
+			ref="dfdwpicker"
+			:title="dfdwpicker.title"
+			:layer="dfdwpicker.layer"
+			:titflag='dfdwpicker.titflag'
+			:data="deptTree"
+			@callback="dfdwpickerCallback"
+		></selectnore-more-picker>
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	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 {getInfoListFn} from "@/api/mine/case.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import selectnoreMorePicker from "@/components/ba-tree-picker/selectnoreMorePicker.vue"
+	export default{
+		components:{
+			selectnoreMorePicker
+		},
+		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"),
+				tipimg:require("@/work/static/images/tip.png"),
+				titimg:require("@/work/static/images/titbg.png"),
+				infobg:require("@/work/static/images/infobg.png"),
+				datainfo:{
+					"speakTitle":"",//发言标题
+					"name":"",//发言人
+					"inputName":"",//录入人
+					"conferenceId":"",//会议活动id
+					'conferenceTitle':'',
+					"speakUnit":"",//发言单位
+					"deptId":"",//发言单位id
+					"speakType":"",//发言类型(字典值)	
+				},
+				deptTree:[],//答复单位
+				dfdwpicker: {
+					title: '选择发言单位',
+					layer: null,
+					titflag:true,
+					data: []
+				},
+				fylxlist:[],
+				fylxidx:'',
+				fylxtxt:'',//发言类型
+				glhyidx:'',//关联会议
+				glhylist:[],//管理会议
+				fyrlist:[],//发言人列表
+				fyridx:'',
+				
+				id:"",
+				pagetype:'add',
+				
+			}
+		},
+		onUnload(){
+			uni.$off('refreshtalb')
+			uni.$off('refreshtary')
+		},
+		onLoad(e) {
+			uni.$on('refreshtalb', (e) => {
+				// this.datainfo.categoryName=e.categoryName
+				// this.datainfo.categoryId=e.categoryId
+			})
+			this.init()
+			if(e.type=='edit'){
+				this.id=e.id;
+				this.pagetype='edit'
+				this.getDetail()
+			}
+			if(e.type=='old'&&uni.getStorageSync('lrfyList')){
+				var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('lrfyList')))
+				var params=newObj.params;
+				this.datainfo=params;
+			}
+		},
+		methods:{
+			kayType(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
+							}
+						})
+					}
+				})
+				// 不分页活动列表
+				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){
+						this.fyrlist= res.rows.map(v => {
+							return {
+								label: v.name,
+								value: v.userId
+							}
+						})
+					}
+				})
+				// 协办单位
+				getDeptTree().then(res=>{
+					if(res.code==200){
+						this.deptTree=res.data
+					}
+				})
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.datainfo.conferenceTitle=this.glhylist[val].label
+				this.datainfo.conferenceId=this.glhylist[val].value
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.fylxtxt=this.fylxlist[val].label
+				this.datainfo.speakType=this.fylxlist[val].value
+			},
+			bindDateChangec(e){
+				var val=e.detail.value;
+				this.datainfo.name=this.fyrlist[val].label
+				this.datainfo.userId=this.fyrlist[val].value
+			},
+			getRecorddwFn(){
+				this.$refs.dfdwpicker.open(0).then(function() {
+				
+				});
+			},
+			dfdwpickerCallback(e){
+				var newArr=e.data;
+				var dwList=[]
+				var len=Number(newArr.length)-1;
+				this.datainfo.speakUnit=newArr[len].label;
+				this.datainfo.deptId=newArr[len].id;
+			},
+			getDetail(){
+				var that=this;
+				getSpeakDetailFn(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))
+						}
+					}
+				})
+			},
+			// 暂存
+			getZanFnt(){
+				var that=this;
+				var params=that.datainfo;
+				var obj={
+					params:params,
+				}
+				uni.setStorageSync('lrfyList', JSON.parse(JSON.stringify(obj)))
+				that.$toast("暂存成功")
+			},
+			getSubmit(){
+				var that=this;
+				if(!this.datainfo.speakTitle){
+					this.$toast("请输入标题")
+					return
+				}
+				if(!this.datainfo.name){
+					this.$toast("请选择发言人")
+					return
+				}
+				if(!this.datainfo.inputName){
+					this.$toast("请输入录入人")
+					return
+				}
+				if(!this.datainfo.conferenceTitle){
+					this.$toast("请选择关联会议")
+					return
+				}
+				if(!this.datainfo.speakUnit){
+					this.$toast("请选择发言单位")
+					return
+				}
+				if(!this.datainfo.speakType){
+					this.$toast("请选择发言类型")
+					return
+				}
+				var params=this.datainfo;
+				if(that.pagetype=='add'){
+					getSpeakAddFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast("提交成功")
+							uni.$emit("refreshlist")
+							setTimeout(function(){
+								uni.navigateBack({
+									delta: 1 //返回层数,2则上上页
+								});
+							},1200)
+						}
+					})
+				}else{
+					getSpeakEditFn(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.path=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;}
+		}
+	}
+	.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>

+ 338 - 0
work/pages/meeting/list.vue

@@ -0,0 +1,338 @@
+<template>
+	<view class="pb50" :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">
+				<view v-for="(ite,idx) in tabList" @click="getTabFn(ite.val)" :class="{act:tabidx==ite.val}" :key="idx">{{ite.tit}}</view>
+			</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>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 列表 -->
+		<view class="mbox">
+			<meet-list :datalist="list" :wtdt="wtdt" :fylxlist='fylxlist'  :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 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>
+		
+		<!-- 弹窗 -->
+		<pop-up :type='ptype' @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 popUp from "@/work/components/popup/popup.vue"
+	import meetList from "@/work/components/meeting/list.vue"
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	export default{
+		components:{meetList,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:'hyhd',
+				// 会议活动 管理员看的{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'}],
+				litablist:[{tit:'会议日期',val:0},],
+				nvaHeight:44,
+				talbList:[{},],
+				taztList:[{label:'是',value:'0'},{label:'否',value:'1'}],
+				talbidx:'',
+				datainfo:{
+					talb:'',
+				},
+				ptype:'',//弹窗类型
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+				qjlxlist:[],
+				fylxlist:[],
+				userId:this.$store.state.user.userId,
+				id:'',
+				title:'',//关键词
+			}
+		},
+		onUnload(){
+			uni.$off('refreshlist')
+		},
+		onLoad(e) {
+			this.getDataFn()
+			this.init()
+			uni.$on('refreshlist', (e) => {
+				this.getDataFn()
+			})
+		},
+		mounted() {
+			this.getHeightFn()
+		},
+		methods:{
+			checkPermi, checkRole,
+			// 请假类型
+			init(){
+				getDictionaryFn('leave').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.qjlxlist = res.data.map(v => {
+							return {
+								text: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 发言类型
+				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
+							}
+						})
+					}
+				})
+			},
+			getConfirm(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			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//赋值,待会要用
+					this.nvaHeight =Number(data.height)//赋值,待会要用
+				}).exec();
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getTabFn(idx){
+				this.tabidx=idx;
+				this.pageNum=1;
+				this.list=[],
+				this.reachflag=true;
+				// this.tabtype=ite.jd||"";
+				this.getDataFn()
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			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)
+				}else if(this.tabidx=='hyfy'){
+					this.$tab.navigateTo('/work/pages/meeting/speaklist?id='+e)
+				}
+				
+			},
+			getTuiFn(ite){
+				if(ite.type=='hyqd'){
+					this.$tab.navigateTo('/work/pages/meeting/signin?id='+ite.id)
+				}else{
+					this.ptype=ite.type;
+					this.id=ite.id
+				}
+			},
+			getDetail(data){
+				this.$tab.navigateTo('/work/pages/case/details?id='+data)	
+			},
+			getAddMeet(){
+				this.$tab.navigateTo('/work/pages/meeting/add')	
+			},
+			getAddSpeak(){
+				this.$tab.navigateTo('/work/pages/meeting/addspeak')	
+			},
+			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)
+						
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					// visitType:3
+				}
+				params.conferenceTitle=this.title
+				if(this.tabidx=='wdfy'){
+					params.userId=this.userId;
+					getSpeakListFn(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=='hyfy'){
+					getSpeakListFn(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
+					}
+					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>
+
+<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;
+			.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>

+ 259 - 0
work/pages/meeting/people.vue

@@ -0,0 +1,259 @@
+<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>
+			</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="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>
+				</view>
+				<view style="height: 30rpx;"></view>
+			</scroll-view>
+		</view>
+		<!-- 弹窗 -->
+		<view class="lmtac">
+			<view class="flex1 table">
+				<view class="upimg">
+					<image :src="upimg"></image>
+				</view>
+				<view class="flex1" style="overflow-y: auto;">
+					<view class="lmtit mb14">已添加人员</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="delimg" @click="getDel(idx)"><image :src="delimg"></image></view>
+										</view>
+									</block>
+								</view>
+							</view>
+						</block>
+					</block>
+				</view>
+				
+			</view>	
+			<view class="btns" @click="getSure">确定</view>
+		</view>
+		<!-- <view class="fwbtns" @click="getSure">确定</view> -->
+	</view>
+</template>
+
+<script>
+	import {getInfotreeSelectFn} from "@/api/mine/meeting.js"
+	export default {
+		data() {
+			return {
+				upimg: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},
+]
+					}
+				],
+				current: 0, //当前点击项
+				rectInfoList: [],
+				tempCurrent: 0,
+				ricurrent:'',
+				scrollTop: 0, //左侧导航栏距离顶部的位置
+				riscrollTop:0,//右侧导航栏距离顶部的位置
+				checkList:[],//选择的人员
+			}
+		},
+		onLoad(e) {
+			if(e.data){
+				var newobj=JSON.parse(decodeURIComponent(e.data));
+				this.checkList=newobj.list;
+			}
+			// this.getCasetalbFn()
+		},
+		mounted() {
+			setTimeout(() => {
+				this.getRectInfo();
+			}, 200)
+		},
+		methods: {
+			getCasetalbFn(){
+				getInfotreeSelectFn().then(res=>{
+					if(res.code==200){
+						this.cateList=res.data;
+					}
+				})
+			},
+			menuTab(index){
+				var top=this.rectInfoList[index].top;
+				this.current = index;
+				this.riscrollTop = top;
+			},
+			getTabFn(ite,item){
+				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{
+					this.checkList.push(obj)
+				}
+				
+				
+			},
+			getDel(idx){
+				this.checkList.splice(idx,1)
+			},
+			getAll(item){
+				var newArr=this.checkList;
+				if(item.children&&item.children.length){
+					item.children.forEach(ite=>{
+						const matchingData = newArr.find(d => d.userId == ite.userId);
+						if(matchingData){
+						}else{
+							var obj={
+								userId:ite.userId,
+								userName:ite.name,
+								postName:ite.unit,
+								userLevel:item.name,
+								grade:ite.grade,
+							}
+							this.checkList.push(obj)
+						}
+					})
+				}
+			},
+			getSure(){
+				// 带数据返回
+				var obj={
+					zxConferenceUserList:this.checkList,
+				}
+				uni.$emit("refreshtalb",obj)
+				uni.navigateBack({
+					delta: 1 //返回层数,2则上上页
+				});
+				
+			},
+			// 获取与顶部之间的距离
+			getRectInfo() {
+				var top = 0;
+				var bottom = 0;
+				var temp = 0;
+				for (var i = 0; i < this.cateList.length; i++) {
+					let view = uni.createSelectorQuery().in(this).select("#cate" + i);
+					view.fields({
+						size: true,
+						rect: true
+					}, data => {
+						top = temp;
+						bottom = top + data.height;
+						temp = bottom;
+						this.rectInfoList[i] = {
+							'top': top,
+							'bottom': bottom
+						}
+						// console.log(top, bottom);
+					}).exec();
+				}
+			},
+			getCurrentHeight(e) {
+				var currentHeight = e.detail.scrollTop;
+				this.rectInfoList.forEach((item, index) => {
+					if (currentHeight >= item.top && currentHeight <= item.bottom) {
+						// 当前获取的盒子高度大于top小于bottom,判定将索引传至左侧菜单导航
+						this.current = index;
+						this.scrollTop = index * uni.upx2px(100);
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+/deep/::-webkit-scrollbar {
+        display: none;
+        width: 0;
+        height: 0;
+    }
+.talbbox{
+	display: flex;height: 100vh;padding-bottom: 412rpx;
+	.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;
+			&.act{background-color: #ffffff;font-weight: bold;color: #1D64E2;}
+		}
+	}
+	.cate-right{flex: 1;height: 100%;background: #ffffff;
+		.cate-right-scroll{height: 100%;padding-left:34rpx;
+			.cate-right-item{
+				.cate-title{font-weight: bold;font-size: 30rpx;color: #222327;height: 110rpx;line-height: 110rpx;}
+				.cate-right-txt{display: flex;flex-wrap: wrap;
+					text{font-weight: 500;font-size: 26rpx;color: #666666;min-width: 130rpx;margin-right:24rpx ;margin-bottom: 16rpx;padding: 8rpx 0;
+						&.act{color: #1D64E2;}
+					}
+				}
+			}
+		
+		}
+	}
+	.allbtns{font-weight: bold;font-size: 26rpx;color: #28C529;padding: 0 26rpx;}
+}
+// 弹窗
+.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;
+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;
+		image{width: 24rpx;height: 26rpx;}
+	}
+	.lmtit{font-weight: bold;font-size: 30rpx;color: #222327;}
+	.lmtxt{
+		display: flex;align-items: flex-start;font-weight: bold;font-size: 30rpx;
+		.laber{color: #222327;flex: 0 0 auto;}
+		.lmame{display: flex;flex-wrap: wrap;flex: 1;
+			.tit{color: #1D64E2;display: flex;align-items: center;margin-right: 20rpx;}
+			.delimg{
+				width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;
+				image{width: 26rpx;height: 26rpx;margin-left: 12rpx;}
+			}
+			
+		}
+	}
+	.btns{width: 100%;height: 80rpx;margin-top: 30rpx;
+background: #1D64E2;font-weight: bold;font-size: 30rpx;
+color: #FFFFFF;display: flex;align-items: center;justify-content: center;
+border-radius: 40rpx;}
+
+	}
+</style>

+ 18 - 42
work/pages/notice/readdetail.vue → work/pages/meeting/readdetail.vue

@@ -7,9 +7,9 @@
 					<input placeholder="输入委员姓名进行查询" />
 				</view>
 			</view>
-			<view class="tablists flexc mb20">
+			<!-- <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>
-			</view>
+			</view> -->
 		</view>
 		<view class="ctip flex0">请左右滑动查看详细信息</view>
 		<!-- 表格 -->
@@ -20,7 +20,7 @@
 				  :columns="columns"
 				  :headbgColor="headbgColor"
 				  :stripe="false"
-				  :fit="false"
+				  :fit="true"
 				  @rowClick="rowClick"
 				  @toggleRowSelection="toggleRowSelection"
 				  @toggleAllSelection="toggleAllSelection"
@@ -38,8 +38,7 @@
 
 <script>
 	import zbTable from "@/work/components/zb-table/zb-tables.vue"
-	
-	import {getCaseListFn} from "@/api/mine/case.js"
+	import {getMeetDetaiFn} from "@/api/mine/meeting.js"
 	import popUp from "@/work/components/popup/popup.vue"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
@@ -61,13 +60,13 @@
 					talb:'',
 				},
 				columns: [
-				    { name: 'name', label: '姓名',width:130,align:'center', },
-				    { name: 'unit', label: '职务',align:'center'},
-				    { name: 'unit', label: '答复时间',align:'center'},
+				    { name: 'userName', label: '姓名',width:130,align:'center', },
+				    { name: 'postName', label: '职务',align:'center'},
+				    { name: 'replyTime', label: '答复时间',align:'center'},
 				    // { name: 'unit', label: '是否参会',align:'center'},
-					{ name: 'isc', type:'operation',label: '是否参会',renders:[
+					{ name: 'isJoin', type:'operation',label: '是否参会',renders:[
 						  {
-						    name:'isc',
+						    name:'isJoin',
 						    type:'detail',
 						    func:"detail"
 						  },
@@ -77,12 +76,8 @@
 				border:true,
 				borderr:false,
 				headbgColor:'#F1F1F1',
-				tableData:[{name:'校长',unit:"委员",time:"2023",isc:'否'},{name:'校长',unit:"委员",time:"2023",isc:'是'},{name:'校长',unit:"委员",time:"2023",isc:'是'},{name:'校长',unit:"委员",time:"2023",isc:'是'},{name:'校长',unit:"委员",time:"2023",isc:'是'}],
-				// pageSize: 10,
-				// pageNum: 1,
-				// reachflag: true,
-				// wtdt:'',
-				// tajdlist:[]
+				tableData:[],
+				id:'',
 				
 			}
 		},
@@ -90,6 +85,8 @@
 			uni.$off('refreshlist')
 		},
 		onLoad(e) {
+			this.id=e.id;
+			this.getDataFn()
 			// this.getDataFn()
 			// this.init()
 			// uni.$on('refreshlist', (e) => {
@@ -106,7 +103,7 @@
 				// 		this.tajdlist = res.data.map(v => {
 				// 			return {
 				// 				label: v.dictLabel,
-				// 				value: Number(v.dictValue)
+				// 				value: v.dictValue
 				// 			}
 				// 		})
 				// 	}
@@ -140,33 +137,12 @@
 				// this.$tab.navigateTo('/work/pages/case/details?id='+data)	
 			},
 			getDataFn(){
-				var params={
-					pageSize:this.pageSize,
-					pageNum: this.pageNum,
-					// visitType:3
-				}
-				getCaseListFn(params).then(res=>{
+				getMeetDetaiFn(this.id).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)
+						if(res.data&&res.data.zxConferenceUserList){
+							this.tableData=res.data.zxConferenceUserList
 						}
-					}else{
-						this.$toast(res.msg)
+						
 					}
 				}) 
 				

+ 88 - 14
work/pages/meeting/signin.vue

@@ -1,33 +1,33 @@
 <template>
 	<view class="meet">
 		<view class="mtop">
-			<view class="tit">潜山市政协委员会内部会议</view>
+			<view class="tit">{{datainfo.conferenceTitle}}</view>
 			<view class="ftxt">
 				<text>会议地点</text>
-				<view>二楼会议室</view>
+				<view>{{datainfo.conferenceAddress}}</view>
 			</view>
 			<view class="ftxt">
 				<text>会议时间</text>
-				<view class="co1d">2024-03-23 15:00</view>
+				<view class="co1d">{{datainfo.conferenceDate}} {{datainfo.conferenceTime}}</view>
 			</view>
 			<view class="ftxt">
 				<text>备注信息</text>
-				<view>备注信息备注信息备注信息备注信息备注信息备注信息备注信息备注信息备注信息</view>
+				<view>{{datainfo.remerk}}</view>
 			</view>
 		</view>
 		<view class="mtop madr">
-			<view class="tit">当前位置</view>
-			<view class="madra">
+			<view class="tit mb24">会议签到</view>
+			<!-- <view class="madra">
 				<image :src="adrimg"></image>
 				<view>安徽省合肥市蜀山区高薪技术产业开发区黄山路59号 时代数码港</view>
-			</view>
-			<view class="madrb">
+			</view> -->
+			<view class="madrb" @click="getCodeFn">
 				<view class="time">14:47:16</view>
-				<view class="mqian">参会打卡</view>
+				<view class="mqian">扫码签到</view>
 			</view>
 			<view class="tips flexcc">
-				<image :src="choseimg"></image>
-				<view>您已进入签到范围</view>
+				<!-- <image :src="choseimg"></image> -->
+				<view>会议即将开始,请尽快签到哦</view>
 			</view>
 			<view class="madrc">
 				<!-- 步骤条 -->
@@ -39,6 +39,7 @@
 </template>
 
 <script>
+	import {getMeetDetaiFn,getMeetPeoListFn,getupdateReplyFn} from "@/api/mine/meeting.js"
 	import meetStep from "@/work/components/meeting/step.vue"
 	export default{
 		components:{meetStep},
@@ -46,14 +47,87 @@
 			return{
 				adrimg:require("@/work/static/images/meeting/adr.png"),
 				choseimg:require("@/work/static/images/meeting/chose.png"),
-				recordList:[{tit:'123'}]
+				recordList:[{tit:'123'}],
+				datainfo:{},
+				userId:this.$store.state.user.userId,
 			}
 		},
 		onLoad(e) {
-			
+			this.id=e.id;
+			this.getDataFn();
 		},
 		methods:{
-			
+			getDataFn(){
+				var params={
+					conferenceId:this.id,
+					userId:this.userId
+				}
+				getMeetDetaiFn(this.id).then(res=>{
+					this.datainfo=res.data;
+				})
+				// 人员签到信息
+				getMeetPeoListFn(params).then(res=>{
+					
+				})
+			},
+			getCodeFn(){
+				var that = this;
+				uni.scanCode({
+					onlyFromCamera: true,
+					autoZoom:false,
+					scanType: ['qrCode'],
+					success: function(red) {
+						let result = red.result;
+						if (typeof result == 'string') {
+							try {
+							
+							} catch (e) {
+								uni.navigateBack({
+									delta: 1
+								})
+								uni.showToast({
+									title: '扫码查询失败,请检查二维码是否正确',
+									icon: "none"
+								})
+								return
+							}
+						}
+						var id = red.result
+						var params = {
+							conferenceId: id,
+							userId:this.userId
+						}
+						getupdateReplyFn(params).then(res => {
+							if (res.code == 200) {
+								if(res.msg=='核销失败'){
+									that.$toast(res.msg)
+									// that.$tab.navigateTo('/pages/order/stafffail')
+								}else{
+									that.$toast('签到成功')
+									that.getDataFn()
+								}
+								
+							} else {
+								uni.showToast({
+									title: res.msg,
+									duration: 1000,
+									icon: 'none'
+								});
+							
+							}
+						})
+					},
+					fail: function(e) {
+						if (e && e.errMsg && e.errMsg.indexOf('scanCode:fail cancel') != -1) {
+							return;
+						}
+						uni.showToast({
+							title: '扫码失败',
+							icon: "none"
+						})
+					},
+				});
+			},
 		}
 	}
 </script>

+ 166 - 0
work/pages/meeting/speaklist.vue

@@ -0,0 +1,166 @@
+<template>
+	<view>
+		<!-- 列表 -->
+		<view class="mbox">
+			<meet-list :datalist="list" :wtdt="wtdt" :fylxlist='fylxlist'  :type='tabidx' @getDetail="getDetail" @getReadFn="getReadFn" @getTuiFn="getTuiFn"></meet-list>
+		</view>
+		<!-- 弹窗 -->
+		<pop-up :type='ptype' @getClose="getClose" @getupSubmit="getupSubmit" :qjlxlist="qjlxlist"></pop-up>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {getSpeakListFn} 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"
+	export default{
+		components:{meetList,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:'wdfy',
+				nvaHeight:44,
+				talbList:[{},],
+				taztList:[{label:'是',value:'0'},{label:'否',value:'1'}],
+				talbidx:'',
+				datainfo:{
+					talb:'',
+				},
+				ptype:'',//弹窗类型
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+				qjlxlist:[],
+				fylxlist:[],
+				userId:this.$store.state.user.userId,
+				id:'',
+				title:'',//关键词
+			}
+		},
+		onUnload(){
+			uni.$off('refreshlist')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			this.getDataFn()
+			this.init()
+			uni.$on('refreshlist', (e) => {
+				this.getDataFn()
+			})
+		},
+		mounted() {
+		},
+		methods:{
+			checkPermi, checkRole,
+			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
+							}
+						})
+					}
+				})
+			},
+			getClose(){
+				this.ptype=""
+			},
+			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)
+						
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					conferenceId:this.id
+				}
+				getSpeakListFn(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;
+			.lbtabp{display: flex;align-items: center;flex: 0 0 auto;margin-right: 24rpx;}
+			.upimg{width: 18rpx;height: 10rpx;}
+			
+		}
+	}
+}
+.mbox{padding:2rpx 24rpx 28rpx;}
+.lbtabs /deep/ picker{padding: 0 18rpx;}
+</style>

+ 0 - 8
work/pages/notice/add.vue

@@ -1,8 +0,0 @@
-<template>
-</template>
-
-<script>
-</script>
-
-<style>
-</style>

+ 0 - 211
work/pages/notice/list.vue

@@ -1,211 +0,0 @@
-<template>
-	<view class="pb50" :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="输入关键字进行查询" />
-				</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>
-			</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>
-						</picker>
-						<image :src="upimg" class="upimg"></image>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- 列表 -->
-		<view class="mbox">
-			<case-list :datalist="list" :wtdt="wtdt" :tajdlist='tajdlist' :type='tabidx' @getDetail="getDetail" @getTuiFn="getTuiFn"></case-list>
-		</view>
-		<view class="fwbtns">提交提案</view>
-		
-		<!-- 弹窗 -->
-		<pop-up :type='ptype' @getClose="getClose"></pop-up>
-	</view>
-</template>
-
-<script>
-	import {getCaseListFn} from "@/api/mine/case.js"
-	import popUp from "@/work/components/popup/popup.vue"
-	import caseList from "@/work/components/case/list.vue"
-	import {getDictionaryFn} from "@/api/mine/register.js"
-	export default{
-		components:{caseList,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:7,
-				tabList:[{tit:'征集通知',val:0},{tit:'提案审查',val:7},{tit:'我的提案',val:1},{tit:'联名提案',val:2},{tit:'推荐优秀',val:3},
-				{tit:'推荐重点',val:4},{tit:'公开提案',val:5},{tit:'办理质量评议',val:6}],
-				litablist:[{tit:'提案类别',val:0},{tit:'提案状态',val:1},{tit:'办理状态',val:2},{tit:'联名状态',val:1},{tit:'评议状态',val:1},{tit:'承办单位',val:2},{tit:'选择年份',val:1},{tit:'选择会议',val:3},
-					{tit:'推荐状态',val:0},{tit:'开始日期',val:1},{tit:'结束日期',val:2},
-				],
-				nvaHeight:44,
-				talbList:[{},],
-				taztList:[{label:'是',value:'0'},{label:'否',value:'1'}],
-				talbidx:'',
-				datainfo:{
-					talb:'',
-				},
-				ptype:'',//弹窗类型
-				list:[],
-				pageSize: 10,
-				pageNum: 1,
-				reachflag: true,
-				wtdt:'',
-				tajdlist:[]
-				
-			}
-		},
-		onUnload(){
-			uni.$off('refreshlist')
-		},
-		onLoad(e) {
-			this.getDataFn()
-			this.init()
-			uni.$on('refreshlist', (e) => {
-				this.getDataFn()
-			})
-		},
-		mounted() {
-			this.getHeightFn()
-		},
-		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: Number(v.dictValue)
-							}
-						})
-					}
-				})
-			},
-			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(idx){
-				this.tabidx=idx;
-			},
-			getBack(){
-				uni.navigateBack({
-					delta:1
-				})
-			},
-			bindDateChangea(e){
-				console.log(e,2)
-			},
-			getChFn(){
-				this.$tab.navigateTo('/work/pages/case/tacheck')
-			},
-			getTuiFn(ite){
-				this.ptype=ite.type
-			},
-			getDetail(data){
-				this.$tab.navigateTo('/work/pages/case/details?id='+data)	
-			},
-			getDataFn(){
-				var params={
-					pageSize:this.pageSize,
-					pageNum: this.pageNum,
-					// visitType:3
-				}
-				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)
-					}
-				}) 
-				
-			},
-		}
-	}
-</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: 0 0 auto;padding: 22rpx 24rpx;margin-right: 6rpx;box-sizing: border-box;
-			&: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;
-			.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>

+ 164 - 141
work/pages/report/addscore.vue

@@ -1,7 +1,7 @@
 <template>
 	<view >
 		<view class="bgtop"></view>
-		<uni-forms :modelValue="datainfo">
+		<uni-forms :modelValue="datainfo" ref="form" :rules="rules">
 		<view class="addbox">
 			<view class="boxs pdbox" style="padding-bottom: 2rpx;">
 				<!-- <view class="titbox mb14">
@@ -11,45 +11,63 @@
 					</view>
 				</view> -->
 				
-				<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
-					<uni-forms-item label="考核届次" name="s" required>
+				<picker  range-key='label' :value="jcidx" :range="jcList"  @change='bindDateChangea'>
+					<uni-forms-item label="考核届次" name="boundary" required>
 						<view class="lbtabp">
-							<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择考核届次"}}</view>
+							<view class="lbtabp">
+								<view v-if="datainfo.boundary&&!boundary">{{statusFormat(datainfo.boundary,jcList,'jc')}}</view>
+								<view v-else :class="boundary?'':'coa'">{{boundary||"请选择考核届次"}}</view>
+							</view>
 						</view>
 					</uni-forms-item>
 				</picker>
-				<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
-					<uni-forms-item label="考核类型" name="s" required>
+				<picker  range-key='label' :value="khlxidx" :range="khlxList"  @change='bindDateChangeb'>
+					<uni-forms-item label="考核类型" name="checkType" required>
 						<view class="lbtabp">
-							<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择考核类型"}}</view>
+							<view v-if="datainfo.checkType&&!checkType">{{statusFormat(datainfo.checkType,khlxList,'khlx')}}</view>
+							<view v-else :class="checkType?'':'coa'">{{checkType||"请选择考核类型"}}</view>
+							<!-- <view :class="checkType?'':'coa'">{{checkType || "请选择考核类型"}}</view> -->
 						</view>
 					</uni-forms-item>
 				</picker>
-				<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
-					<uni-forms-item label="加分类型" name="s" required>
+				<picker  range-key='label' :value="jflxbidx" :range="jflxList"  @change='bindDateChangec'>
+					<uni-forms-item label="加分类型" name="bonusType" required>
 						<view class="lbtabp">
-							<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择加分类型"}}</view>
+							<view v-if="datainfo.bonusType&&!bonusType">{{statusFormat(datainfo.bonusType,jflxList,'jflx')}}</view>
+							<view v-else :class="bonusType?'':'coa'">{{bonusType||"请选择加分类型"}}</view>
+							<!-- <view :class="bonusType?'':'coa'">{{bonusType || "请选择加分类型"}}</view> -->
 						</view>
 					</uni-forms-item>
 				</picker>
-				<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
-					<uni-forms-item label="加分时间" name="s" required>
+<!-- 				<picker  mode="date"   @change='bindDateChanged'>
+					<uni-forms-item label="加分时间" name="bonusTime" required>
 						<view class="lbtabp">
-							<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择加分时间"}}</view>
+							<view :class="datainfo.bonusTime?'':'coa'">{{datainfo.bonusTime || "请选择加分时间"}}</view>
 						</view>
 					</uni-forms-item>
-				</picker>
-				<uni-forms-item label="分值" name="noticeTitle" required>
-					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.noticeTitle" placeholder="请输入分值" />
+				</picker> -->
+				<uni-forms-item label="加分时间" name="bonusTime" required >
+					<!-- <view class="lbtabp" >
+						<uni-datetime-picker  :border="false" placeholder="请选择加分时间"  type="datetime" :clear-icon="false" v-model="datainfo.bonusTime" @maskClick="bindDateChanged" />
+					</view> -->
+					<view class="lbtabp">
+						<uni-datetime-picker v-model="datainfo.bonusTime">
+						<view :class="datainfo.bonusTime?'':'coa'">{{datainfo.bonusTime || "请选择加分时间"}}</view>
+						</uni-datetime-picker>
+					</view>
+				</uni-forms-item>
+				
+				<uni-forms-item label="分值" name="score" required>
+					<uni-easyinput :inputBorder="false" type="number" v-model="datainfo.score" placeholder="请输入分值" />
 				</uni-forms-item>
 			</view>
 			<view class="boxs pdboxa">
 				<view class="titbox mb20">
 					<view class="tit flexc">
-						<view>加分事由</view>
+						<view @click="timeshow=true">加分事由</view>
 					</view>
 				</view>
-				<textarea placeholder="请输入加分事由…"></textarea>
+				<textarea placeholder="请输入加分事由…" v-model="datainfo.bonusReason"></textarea>
 			</view>
 			<view class="addbtn">
 				<!-- <view class="btn btn1" @click="getZanFnt">暂存</view> -->
@@ -62,7 +80,7 @@
 
 <script>
 	import {getDictionaryFn} from "@/api/mine/register.js"
-	import {getNoticeAdd,getNoticeDetail} from "@/api/mine/news.js"
+	import {getBonusAddFn,getBonusEditFn,getBonusDetailFn} from "@/api/mine/report.js"
 	import { selectValueKey } from '@/utils/common.js';
 	import config from '@/config'
 	const baseUrl = config.baseUrl
@@ -70,47 +88,98 @@
 	export default{
 		data(){
 			return{
-				pbFlag:false,
+
 				titimg:require("@/work/static/images/titbg.png"),
 				rimg:require("@/work/static/images/rimg.png"),
 				datainfo:{
-					noticeTitle:'',
-					issuer:this.$store.state.user.name,
-					issuerDept:this.$store.state.user.deptName,
+					"boundary":"",//考核界次
+					"checkType":"",//考核类型
+					"bonusType":"",//加分类型
+					"bonusReason":"",//加分事由
+					"bonusTime":"",//加分时间
+					"score":"",//分数
+				},
+				rules: {
+				  boundary: {rules: [{required: true,errorMessage: '请选择考核届次'} ]},
+				  checkType: {rules: [{required: true,errorMessage: '请选择考核类型'} ]},
+				  bonusType: {rules: [{required: true,errorMessage: '请选择加分类型'} ]},
+				  bonusTime: {rules: [{required: true,errorMessage: '请选择加分时间'} ]},
+				  score: {rules: [{required: true,errorMessage: '请输入分值'} ]},
+				  bonusReason: {rules: [{required: true,errorMessage: '请输入加分事由'} ]},
 				},
-				tzlbList:[{label:"23届",value:10},],
+				userId:this.$store.state.user.userId,
 				tzlblabe:'',
 				tzlbidx:'',
 				id:'',
-				editinfo:''
+				editinfo:'',
+				jcList:[],
+				khlxList:[],
+				jflxList:[],
+				jcidx:'',
+				khlxidx:'',
+				jflxbidx:'',
+				boundary:"",
+				checkType:"",
+				bonusType:"",
+				timeshow:false,
+				id:'',
+				ptype:'add'
 			}
 		},
 		onLoad(e) {
-			// this.init()
-			// if(e.id){
-			// 	this.id=e.id;
-			// 	this.getNoticeDetail()
-			// }
-			// if(e.type=='old'&&uni.getStorageSync('zcList')){
-			// 	var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('zcList')))
-			// 	this.datainfo=newObj;
-			// 	this.editinfo=newObj.noticeContent;
-			// 	if(newObj.zxFjList&&newObj.zxFjList.length){
-			// 		this.filelist=JSON.parse(JSON.stringify(newObj.zxFjList))
-			// 	}
-			// }
+			this.init()
+			if(e.id){
+				this.id=e.id;
+				this.getDetail()
+			}
+			this.ptype=e.type||'add';
 		},
 		
 		methods:{
-			statusFormat(ite) {
-				var aite=selectValueKey(this.tzlbList, ite);
-				this.tzlbidx=aite.key;
+			kaType(ite,list){
+				return selectValue(list, ite);
+			},
+			statusFormat(ite,list,type) {
+				var aite=selectValueKey(list, ite);
+				if(type=='jc'){
+					this.jcidx=aite.key
+				}else if(type=='khlx'){
+					this.khlxidx=aite.key
+				}else if(type=='jflx'){
+					this.jflxbidx=aite.key
+				}
 				return aite.actions;
+			},
+			getTimeFn(){
+				
 			},
 			init(){
-				getDictionaryFn('sys_notice_type').then(res=>{
+				//界别 
+				getDictionaryFn('circles').then(res=>{
 					if(res.code==200&&res.data.length){
-						this.tzlbList = res.data.map(v => {
+						this.jcList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 考核类型
+				getDictionaryFn('check_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.khlxList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 加分类型
+				getDictionaryFn('bonus_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.jflxList = res.data.map(v => {
 							return {
 								label: v.dictLabel,
 								value: v.dictValue
@@ -121,119 +190,64 @@
 			},
 			bindDateChangea(e){
 				var val=e.detail.value;
-				this.tzlblabe=this.tzlbList[val].label;
-				this.datainfo.noticeType=this.tzlbList[val].value;
+				this.boundary=this.jcList[val].label;
+				this.datainfo.boundary=this.jcList[val].value;
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.checkType=this.khlxList[val].label;
+				this.datainfo.checkType=this.khlxList[val].value;
+			},
+			bindDateChangec(e){
+				var val=e.detail.value;
+				this.bonusType=this.jflxList[val].label;
+				this.datainfo.bonusType=this.jflxList[val].value;
 			},
-			getPaiFn(){
-				this.pbFlag=true;
+			bindDateChanged(e){
+				console.log(e,1)
+				// var val=e.detail.value;
+				// this.datainfo.bonusTime=val;
 			},
-			getNoticeDetail(){
-				getNoticeDetail(this.id).then(res=>{
+			getDetail(){
+				getBonusDetailFn(this.id).then(res=>{
 					if(res.code==200){
 						this.datainfo=res.data;
-						this.editinfo=res.data.noticeContent;
-						if(res.data.zxFjList&&res.data.zxFjList.length){
-							this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
-						}
 					}
 				})
 			},
-			// 暂存
-			getZanFnt(){
-				var that=this;
-				that.editorCtx.getContents({
-					success: function(data) { 
-						// noticeContent=data.html;
-						// that.datainfo.zxFjList=JSON.parse(JSON.stringify(that.filelist));
-						var params=that.datainfo;
-						params.noticeContent=data.html;
-						
-						uni.setStorageSync('zcList', JSON.parse(JSON.stringify(params)))
-						that.$toast("暂存成功")
-					}  
-				})
-			},
 			getSubmit(){
 				var that=this;
-				if(!this.datainfo.noticeTitle){
-					this.$toast("请输入标题")
-					return
-				}
-				if(!this.tzlblabe){
-					this.$toast("请选择通知类别")
-					return
-				}
-				var noticeContent='';
-				that.editorCtx.getContents({  
-					success: function(data) { 
-						var params=that.datainfo;
-						params.noticeContent=data.html;
-						console.log(params)
-						getNoticeAdd(params).then(res=>{
+				this.$refs.form.validate().then(res => {
+					var params=that.datainfo;
+					params.userId=that.userId;
+					if(this.ptype=='add'){
+						getBonusAddFn(params).then(res=>{
 							if(res.code==200){
-								that.$toast("发布成功")
+								that.$toast("履职加分申请成功")
+								setTimeout(function(){
+									uni.$emit('lzrefreshlist')
+									uni.navigateBack({
+										delta:1
+									})
+								},1200)
+							}
+						})
+					}else{
+						getBonusEditFn(params).then(res=>{
+							if(res.code==200){
+								that.$toast("履职加分修改成功")
+								
+								setTimeout(function(){
+									uni.$emit('lzrefreshlist')
+									uni.navigateBack({
+										delta:1
+									})
+								},1200)
 							}
 						})
-					}  
-				})
-			},
-			onuploadEnd(item) {
-				var newobj={}
-				var responseText=JSON.parse(item.responseText)
-				newobj.name=responseText.originalFilename;
-				newobj.path=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(e){
-				console.log(e,2)
-			},
-			onEditorReady(e){
-				var that=this;
-				uni.createSelectorQuery().select('#editor').context(function(res) {
-					that.editorCtx = res.context;
-					that.editorCtx.setContents({
-						html:that.editinfo
-					})
-				}).exec();
-			}
 		}
 	}
 </script>
@@ -249,6 +263,15 @@
 .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;}
+.addbox /deep/ .uni-forms-item__error{right: 0;left: auto;margin-top: -18rpx;}
+
+// .addbox /deep/ .uni-forms-item__content{display: flex;align-items: center;}
+.addbox /deep/ .uni-date{text-align: right;font-size: 30rpx;}
+.addbox /deep/ .uni-input-wrapper{text-align: right;font-size: 30rpx;}
+.addbox /deep/ .uni-date__x-input{padding: 0;text-align: right;font-size: 30rpx;}
+.addbox /deep/ .uni-date-x{padding: 0;}
+// .addbox /deep/ .uniui-calendar::before{display: none;}
+.addbox /deep/ .uni-input-placeholder{color:#AAAAAA;font-size: 30rpx;}
 .fjadd{
 	.btn{font-weight: bold;font-size: 30rpx;color: #1D64E2;margin: 0;display: flex;align-items: center;}
 }

+ 150 - 61
work/pages/report/details.vue

@@ -8,7 +8,7 @@
 					</view>
 				</block>
 				<block slot="right">
-					<view class="topr">
+					<view class="topr" v-if="checkPermi(['member:info:edit'])">
 						<image :src="editimg"></image>
 						<view>修改</view>
 					</view>
@@ -26,17 +26,17 @@
 				</view>
 				<view class="header flexc">
 					<view class="titinf flex1">
-						<view class="txt"><text>委员姓名</text>{{datainfo.proposalName}}</view>
-						<view class="txt"><text>身份证号</text>{{datainfo.boundary}}</view>
-						<view class="txt"><text>联系方式</text>{{datainfo.partyAffiliation}}</view>
+						<view class="txt"><text>委员姓名</text>{{memberInfo.name}}</view>
+						<view class="txt"><text>身份证号</text>{{memberInfo.card}}</view>
+						<view class="txt"><text>联系方式</text>{{memberInfo.phonenumber}}</view>
 					</view>
-					<image :src="fjimg"></image>
+					<image :src="baseUrl+memberInfo.avatar"></image>
 				</view>
 				<view class="titinf">
-					<view class="txt"><text>党派</text>{{datainfo.proposalPhone}}</view>
-					<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>{{kaType(memberInfo.partyAffiliation,dplist)}}</view>
+					<view class="txt"> <text>界别</text>{{kaType(memberInfo.boundary,jblist)}}</view>
+					<view class="txt"><text>工作单位及职务</text>{{memberInfo.unit}}</view>
+					<view class="txt"><text>乡镇(经开区)委员工作室</text>{{memberInfo.studio}}</view>
 				</view>
 			</view>
 			<view class="dbox">
@@ -48,6 +48,7 @@
 					<view class="tips">请左右滑动查看详细信息</view>
 				</view>
 				<view class="mb10">
+					<block v-if="proposalInfoList&&proposalInfoList.length">
 					<zb-table
 					  :show-header="true"
 					  :columns="columns"
@@ -60,7 +61,11 @@
 					  :border="border"
 					  :borderr="borderr"
 					  @detail="getDetail"
-					  :data="tableData"></zb-table>	
+					  :data="proposalInfoList"></zb-table>	
+					</block>
+					<block v-else>
+						<no-data padtop="0" padbottom="20"></no-data>
+					</block>
 				</view>
 			</view>
 			<view class="dbox">
@@ -72,19 +77,24 @@
 					<view class="tips">请左右滑动查看详细信息</view>
 				</view>
 				<view class="mb10">
-					<zb-table
-					  :show-header="true"
-					  :columns="zxcolumns"
-					  :headbgColor="headbgColor"
-					  :stripe="false"
-					  :fit="true"
-					  @rowClick="rowClick"
-					  @toggleRowSelection="toggleRowSelection"
-					  @toggleAllSelection="toggleAllSelection"
-					  :border="border"
-					  :borderr="borderr"
-					  @detail="getDetail"
-					  :data="tableData"></zb-table>	
+					<block v-if="sqmyInfoList&&sqmyInfoList.length">
+						<zb-table
+						  :show-header="true"
+						  :columns="zxcolumns"
+						  :headbgColor="headbgColor"
+						  :stripe="false"
+						  :fit="true"
+						  @rowClick="rowClick"
+						  @toggleRowSelection="toggleRowSelection"
+						  @toggleAllSelection="toggleAllSelection"
+						  :border="border"
+						  :borderr="borderr"
+						  @detail="getDetail"
+						  :data="sqmyInfoList"></zb-table>
+					</block>
+					<block v-else>
+						<no-data padtop="0" padbottom="20"></no-data>
+					</block>
 				</view>
 			</view>
 			<view class="dbox">
@@ -96,7 +106,24 @@
 					<view class="tips">请左右滑动查看详细信息</view>
 				</view>
 				<view class="mb10">
-					<no-data padtop="0" padbottom="20"></no-data>
+					<block v-if="zxConferenceList&&zxConferenceList.length">
+						<zb-table
+						  :show-header="true"
+						  :columns="zxcolumns"
+						  :headbgColor="headbgColor"
+						  :stripe="false"
+						  :fit="true"
+						  @rowClick="rowClick"
+						  @toggleRowSelection="toggleRowSelection"
+						  @toggleAllSelection="toggleAllSelection"
+						  :border="border"
+						  :borderr="borderr"
+						  @detail="getDetail"
+						  :data="zxConferenceList"></zb-table>
+					</block>
+					<block v-else>
+						<no-data padtop="0" padbottom="20"></no-data>
+					</block>
 				</view>
 			</view>
 			<view class="dbox">
@@ -108,7 +135,25 @@
 					<view class="tips">请左右滑动查看详细信息</view>
 				</view>
 				<view class="mb10">
-					<no-data padtop="0" padbottom="20"></no-data>
+					<block v-if="zxActivityList&&zxActivityList.length">
+					<zb-table
+					  :show-header="true"
+					  :columns="hdcolumns"
+					  :headbgColor="headbgColor"
+					  :stripe="false"
+					  :fit="true"
+					  :parameter="parameter"
+					  @rowClick="rowClick"
+					  @toggleRowSelection="toggleRowSelection"
+					  @toggleAllSelection="toggleAllSelection"
+					  :border="border"
+					  :borderr="borderr"
+					  @detail="getDetail"
+					  :data="zxActivityList"></zb-table>
+					</block>
+					<block v-else>
+						<no-data padtop="0" padbottom="20"></no-data>
+					</block>
 				</view>
 			</view>
 			<view class="dbox">
@@ -120,6 +165,7 @@
 					<view class="tips">请左右滑动查看详细信息</view>
 				</view>
 				<view class="mb10">
+					<block v-if="zxSpeakList&&zxSpeakList.length">
 					<zb-table
 					  :show-header="true"
 					  :columns="fycolumns"
@@ -132,12 +178,16 @@
 					  :border="border"
 					  :borderr="borderr"
 					  @detail="getDetail"
-					  :data="tableData"></zb-table>	
+					  :data="zxSpeakList"></zb-table>
+					</block>
+					<block v-else>
+						<no-data padtop="0" padbottom="20"></no-data>
+					</block>
 				</view>
 			</view>
 			<view class="fbtns">
 				<view class="btn btn1" @click="getReportFn">生成报告</view>
-				<view class="btn btn2" @click="getScfkFn">审核</view>
+				<!-- <view class="btn btn2" @click="getScfkFn">审核</view> -->
 			</view>
 			
 		</view>
@@ -146,11 +196,14 @@
 </template>
 
 <script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import config from '@/config'
+	const baseUrl = config.baseUrl
 	import noData from "@/components/nodata/nodata.vue"
 	import zbTable from "@/work/components/zb-table/zb-tables.vue"
 	import popUp from "@/work/components/popup/popup.vue"
 	import { selectValue } from '@/utils/common.js';
-	import {getCaseDetailFn,getCasDelFn} from "@/api/mine/case.js"
+	import {getInfojopDetai} from "@/api/mine/report.js"
 	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
 		components:{popUp,zbTable,noData},
@@ -171,10 +224,19 @@
 				    { name: 'num', label: '信息标题 ',width:230,align:'center', },
 				    { name: 'name', label: '类型',align:'center'},
 				],
+				hdcolumns: [
+				    { name: 'activityTitle', label: '活动名称 ',width:230,align:'center', },
+				    { name: 'activityDate', label: '活动日期',align:'center'},
+				    { name: 'activityAddress', label: '活动地点',align:'center'},
+				    { name: 'activityType', type:"format", label: '活动类型',align:'center',key:"hdlxlist"},
+				],
 				fycolumns: [
-				    { name: 'num', label: '发言题目 ',width:230,align:'center', },
-				    { name: 'name', label: '关联会议',align:'center'},
+				    { name: 'speakTitle', label: '发言题目 ',width:230,align:'center', },
+				    { name: 'conferenceTitle', label: '关联会议',align:'center'},
 				],
+				parameter:{
+					hdlxlist:[]
+				},
 				border:true,
 				borderr:false,
 				headbgColor:'#F1F1F1',
@@ -184,51 +246,69 @@
 				ptype:'',
 				datainfo:{},
 				matterList:[],
+				memberInfo:{},
+				proposalInfoList:{},
+				sqmyInfoList:{},
+				zxConferenceList:{},
+				zxActivityList:{},
+				zxSpeakList:{},
+				jblist:[],
+				dplist:[],
 			}
 		},
 		onUnload(){
 			uni.$off('refreshdetail')
 		},
 		onLoad(e) {
-			// this.id=e.id;
-			// this.getDetail()
-			// this.init()
-			// uni.$on('refreshdetail', (e) => {
-			// 	this.getDetail()
-			// })
+			this.id=e.id;
+			this.baseUrl=baseUrl;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
 		},
 		mounted() {
 		},
 		methods:{
+			checkPermi, checkRole,
 			getBack(){
 				uni.navigateBack({
 					delta:1
 				})
 			},
-			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(' ')
-				}
+			kaType(ite,list){
+				return selectValue(list, ite);
 			},
 			typeFormat(ite,list){
 				return selectValue(list, ite);
 			},
 			init(){
-				//提案状态
-				getDictionaryFn('proposal_progress').then(res=>{
+				// 界别
+				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.stepList = res.data.map(v => {
+						this.dplist = 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 => {
 							return {
 								label: v.dictLabel,
 								value:v.dictValue
@@ -236,12 +316,15 @@
 						})
 					}
 				})
+				//活动类型
 			},
 			getReportFn(){
-				this.$tab.navigateTo('/work/pages/report/report')
+				this.$tab.navigateTo('/work/pages/report/report?id='+this.id)
 			},
 			getEditFn(){
-				this.$tab.navigateTo('/work/pages/report/mineinfo')
+				if(checkPermi(['member:info:edit'])){
+					this.$tab.navigateTo('/work/pages/report/mineinfo?id='+this.id)
+				}
 			},
 			getClose(){
 				this.ptype=""
@@ -276,13 +359,19 @@
 				});
 			},
 			getDetail(){
-				getCaseDetailFn(this.id).then(res=>{
+				getInfojopDetai(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))
-						}
-						this.dwdetList=res.data.proposalUnitReplyList;
+						this.memberInfo=res.data.memberInfo;
+						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;
+						// if(res.data.zxFjList&&res.data.zxFjList.length){
+						// 	this.filelist=JSON.parse(JSON.stringify(res.data.zxFjList))
+						// }
+						// this.dwdetList=res.data.proposalUnitReplyList;
 					}
 				})
 			},

+ 221 - 44
work/pages/report/info.vue

@@ -8,7 +8,7 @@
 					</view>
 				</block>
 				<block slot="right">
-					<view class="topr">
+					<view class="topr" v-if="checkPermi(['zxBonus:bonus:add'])">
 						<image :src="ccicoimg"></image>
 						<view>履职加分</view>
 					</view>
@@ -17,16 +17,27 @@
 			<view class="plr12 mt18">
 				<view class="search flex0 mb24">
 					<image :src="searchimg"></image>
-					<input placeholder="输入委员姓名进行查询" />
+					<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" 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">
+						<picker  range-key='label'  :range="jblist"  @change='bindDateChangea'>
+							<view :class="jbtxt?'':'f16 co80'">{{jbtxt || '选择界别'}}</view>
+						</picker>
+						<image :src="upimg" class="upimg"></image>
+					</view>
+					<view class="lbtabp">
+						<picker  range-key='label'  :range="dplist"  @change='bindDateChangeb'>
+							<view :class="dptxt?'':'f16 co80'">{{dptxt || '选择党派'}}</view>
 						</picker>
 						<image :src="upimg" class="upimg"></image>
 					</view>
@@ -35,9 +46,9 @@
 		</view>
 		<!-- 列表 -->
 		<view class="mbox">
-			<report-list type="1" :datalist="list" :wtdt="wtdt" :tajdlist='tajdlist'  @getDetail="getDetail" @getTuiFn="getTuiFn"></report-list>
+			<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">履职档案</view>
+		<view class="fwbtns" @click="getAddFn">履职档案</view>
 		
 		<!-- 弹窗 -->
 		<pop-up :type='ptype' @getClose="getClose"></pop-up>
@@ -45,10 +56,12 @@
 </template>
 
 <script>
-	import {getCaseListFn} from "@/api/mine/case.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {getInfojopList,getBonusListFn,getBonusDelFn,getInfojopDel} 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"
+	
 	export default{
 		components:{reportList,popUp},
 		data(){
@@ -59,7 +72,9 @@
 				backimg:require("@/work/static/images/back.png"),
 				upimg:require("@/work/static/images/up.png"),
 				backgroundColor:"#1D64E2",
-				litablist:[{tit:'选择界别',val:0},{tit:'选择党派',val:1},{tit:'综合排名',val:2}],
+				tabidx:'lzxx',
+				tabList:[{tit:'履职信息',val:'lzxx',limit:'member:info:list'},{tit:'加分记录',val:'jfju',limit:'zxBonus:bonus:list'}
+				],
 				nvaHeight:44,
 				taztList:[{label:'是',value:'0'},{label:'否',value:'1'}],
 				talbidx:'',
@@ -72,32 +87,87 @@
 				pageNum: 1,
 				reachflag: true,
 				wtdt:'',
-				tajdlist:[]
-				
+				jblist:[],
+				dplist:[],
+				jbtxt:'',
+				dptxt:"",
+				jbval:'',
+				dpval:'',
+				title:'',
+				jflxList:[],
+				khlxList:[],
+				jcList:[],
 			}
 		},
 		onUnload(){
-			uni.$off('refreshlist')
+			uni.$off('lzrefreshlist')
 		},
 		onLoad(e) {
-			// this.getDataFn()
-			// this.init()
-			// uni.$on('refreshlist', (e) => {
-			// 	this.getDataFn()
-			// })
+			var that=this;
+			this.getDataFn()
+			this.init()
+			uni.$on('lzrefreshlist', (e) => {
+				console.log(23)
+				that.getrefreshData()
+			})
 		},
 		mounted() {
 			this.getHeightFn()
 		},
 		methods:{
-			// 提案状态
+			checkPermi, checkRole,
 			init(){
-				getDictionaryFn('proposal_progress').then(res=>{
+				// 界别
+				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('circles').then(res=>{
 					if(res.code==200&&res.data.length){
-						this.tajdlist = res.data.map(v => {
+						this.jcList = res.data.map(v => {
 							return {
 								label: v.dictLabel,
-								value: Number(v.dictValue)
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 考核类型
+				getDictionaryFn('check_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.khlxList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 加分类型
+				getDictionaryFn('bonus_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.jflxList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
 							}
 						})
 					}
@@ -114,19 +184,94 @@
 			getClose(){
 				this.ptype=""
 			},
+			getTabFn(ite){
+				this.tabidx=ite.val;
+				this.pageNum=1;
+				this.list=[],
+				this.reachflag=true;
+				this.getDataFn()
+			},
 			getBack(){
 				uni.navigateBack({
 					delta:1
 				})
 			},
 			bindDateChangea(e){
-				console.log(e,2)
+				var val=e.detail.value;
+				this.jbtxt=this.jblist[val].label;
+				this.jbval=this.jblist[val].value;
+				this.getrefreshData()
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.dptxt=this.dplist[val].label;
+				this.dpval=this.dplist[val].value;
+				this.getrefreshData()
+			},
+			getrefreshData(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			getConfirm(){
+				this.pageNum=1;
+				this.list=[];
+				this.reachflag=true;
+				this.getDataFn()
 			},
 			getChFn(){
-				this.$tab.navigateTo('/work/pages/report/addscore')
+				if(checkPermi(['zxBonus:bonus:add'])){
+					this.$tab.navigateTo('/work/pages/report/addscore')
+				}
+				
 			},
 			getTuiFn(ite){
-				this.ptype=ite.type
+				var type=ite.type;
+				var that=this;
+				if(type=='del'){
+					uni.showModal({
+						title: '确认删除',
+						content: "是否确认删除",
+						cancelText: '取消',
+						confirmText: '确认',
+						success: function(res) {
+							if (res.confirm) {
+								if(that.tabidx=='jfju'){
+									getBonusDelFn(ite.id).then(res=>{
+										if(res.code==200){
+											that.$toast('删除成功'),
+											setTimeout(function(){
+												that.getrefreshData()
+											},1200)
+										}
+									})
+								}else if(that.tabidx=='lzxx'){
+									getInfojopDel(ite.id).then(res=>{
+										if(res.code==200){
+											that.$toast('删除成功'),
+											setTimeout(function(){
+												that.getrefreshData()
+											},1200)
+										}
+									})
+								}
+							} else if (res.cancel) {
+							}
+						}
+					});
+				}else if(type=='edit'){
+					if(this.tabidx=='jfju'){
+						this.$tab.navigateTo('/work/pages/report/addscore?type=edit&id='+ite.id)
+					}else if(this.tabidx=='lzxx'){
+						this.$tab.navigateTo('/work/pages/report/mineinfo?type=edit&id='+ite.id)
+					}
+						
+				}
+				// this.ptype=ite.type
+			},
+			getAddFn(){
+				this.$tab.navigateTo('/work/pages/report/mineinfo?type=add')
 			},
 			getDetail(data){
 				this.$tab.navigateTo('/work/pages/report/details?id='+data)	
@@ -135,32 +280,64 @@
 				var params={
 					pageSize:this.pageSize,
 					pageNum: this.pageNum,
-					// visitType:3
 				}
-				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 {
+				params.boundary=this.jbval
+				params.partyAffiliation=this.dpval
+				if(this.title){
+					params.name=this.title
+				}
+				if(this.tabidx=='lzxx'){
+					getInfojopList(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.tabidx=='jfju'){
+					getBonusListFn(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)
-					}
-				}) 
+					}) 
+				}
+				
 				
 			},
 		}

+ 206 - 34
work/pages/report/mineinfo.vue

@@ -6,91 +6,100 @@
 				<view class="label flex1">委员照片</view>
 				<view class="flexr">
 					<view class="addbox">
-						<image :src="dphoimg" class="adimg"></image>
+						<image v-if="datainfo.avatar" :src="baseUrl+datainfo.avatar" class="phoimg"></image>
+						<image v-else :src="dphoimg" class="adimg"></image>
 					</view>
 				</view>
 			</view>
 			<view class="items">
 				<view class="label">委员姓名</view>
-				<view class="itetit">何潇潇</view>
+				<view class="itetit">{{datainfo.name}}</view>
 			</view>
 			<view class="items">
 				<view class="label">身份证号</view>
-				<view class="itetit">32000019810205003X</view>
+				<view class="itetit">{{datainfo.card}}</view>
 			</view>
 			<view class="items">
 				<view class="label">界别</view>
-				<view class="itetit">中国共产党</view>
+				<view class="itetit">{{kaType(datainfo.boundary,jblist)}}</view>
 			</view>
 			<view class="items">
 				<view class="label">党派</view>
-				<view class="itetit">中国共产党</view>
+				<view class="itetit">{{kaType(datainfo.partyAffiliation,dplist)}}</view>
 			</view>
 			<view class="items">
 				<view class="label">工作单位及职务</view>
-				<view class="itetit">潜山市政协委员</view>
+				<view class="itetit">{{datainfo.unit}}</view>
 			</view>
 			<view class="items">
 				<view class="label">乡镇(经开区)委员工作室</view>
-				<view class="itetit">黄铺镇工作室</view>
+				<view class="itetit">{{datainfo.studio}}</view>
 			</view>
 			<view class="items">
 				<view class="label">联系方式</view>
-				<view class="itetit">19105672384</view>
+				<view class="itetit">{{datainfo.phonenumber}}</view>
 			</view>
 			<view class="brbtns" @click="updflag=true">修改信息</view>
 		</view>
 		<!-- 修改 -->
-		<uni-forms :modelValue="datainfo" class="forms"  v-else>
+		<uni-forms :modelValue="datainfo" ref="form" :rules="rules" class="forms"  v-else>
 			<view class="items">
 				<view class="flex1">
 					<view class="label"><text class="cir">*</text> 委员照片</view>
 					<view class="addtip">请上传一寸免冠照片,大小不超过300k</view>
 				</view>
 				<view class="flexr">
-					<view class="addbox">
-						<image :src="dphoimg" class="adimg"></image>
+					<view class="addbox" @click.stop="getphotoFn">
+						<image v-if="datainfo.avatar" :src="baseUrl+datainfo.avatar" class="phoimg"></image>
+						<image v-else :src="dphoimg" class="adimg"></image>
 					</view>
 				</view>
 				
 			</view>
-			<uni-forms-item label="委员姓名" name="s" required>
+			<uni-forms-item label="委员姓名" name="name" required>
 				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.name" placeholder="请输入委员姓名" />
 			</uni-forms-item>
-			<uni-forms-item label="身份证号" name="s" required>
-				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.name" placeholder="请输入身份证号" />
+			<uni-forms-item label="身份证号" name="card" required>
+				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.card" placeholder="请输入身份证号" />
 			</uni-forms-item>
-			<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
-				<uni-forms-item label="界别" name="s" required>
+			<picker  range-key='label' :value="jbidx" :range="jblist"  @change='bindDateChangea'>
+				<uni-forms-item label="界别" name="boundary" required>
 					<view class="lbtabp">
-						<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择界别"}}</view>
+						<view v-if="datainfo.boundary&&!boundary">{{statusFormat(datainfo.boundary,jblist,'jb')}}</view>
+						<view v-else :class="boundary?'':'coa'">{{boundary||"请选择界别"}}</view>
+						<!-- <view :class="kaType(datainfo.boundary,jblist)?'':'coa'">{{kaType(datainfo.boundary,jblist) || "请选择界别"}}</view> -->
 						<image :src="rimg" class="rimg"></image>
 					</view>
 				</uni-forms-item>
 			</picker>
-			<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
-				<uni-forms-item label="党派" name="s" required>
+			<picker  range-key='label' :value="tpidx" :range="dplist"  @change='bindDateChangeb'>
+				<uni-forms-item label="党派" name="partyAffiliation" required>
 					<view class="lbtabp">
-						<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择党派"}}</view>
+						<view v-if="datainfo.partyAffiliation&&!partyAffiliation">{{statusFormat(datainfo.partyAffiliation,dplist,'dp')}}</view>
+						<view v-else :class="partyAffiliation?'':'coa'">{{partyAffiliation||"请选择党派"}}</view>
+						<!-- <view :class="kaType(datainfo.partyAffiliation,dplist)?'':'coa'">{{kaType(datainfo.partyAffiliation,dplist) || "请选择党派"}}</view> -->
 						<image :src="rimg" class="rimg"></image>
 					</view>
 				</uni-forms-item>
 			</picker>
-			<uni-forms-item label="工作单位及职务" name="s" required>
-				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.name" placeholder="请输入工作单位及职务" />
+			<uni-forms-item label="工作单位及职务" name="unit" required>
+				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.unit" placeholder="请输入工作单位及职务" />
+			</uni-forms-item>
+			<uni-forms-item label="乡镇(经开区)委员工作室" name="studio" required>
+				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.studio" placeholder="请输入委员工作室" />
 			</uni-forms-item>
-			<picker  range-key='label'  :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
+			<!-- <picker  range-key='label'  :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
 				<uni-forms-item label="乡镇(经开区)委员工作室" name="s" required>
 					<view class="lbtabp">
 						<view :class="datainfo.tzlb?'':'coa'">{{datainfo.tzlb || "请选择委员工作室"}}</view>
 						<image :src="rimg" class="rimg"></image>
 					</view>
 				</uni-forms-item>
-			</picker>
-			<uni-forms-item label="联系方式" name="s" required>
-				<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.name" placeholder="请输入联系方式" />
+			</picker> -->
+			<uni-forms-item label="联系方式" name="phonenumber" required>
+				<uni-easyinput :inputBorder="false" type="number" v-model="datainfo.phonenumber" placeholder="请输入联系方式" />
 			</uni-forms-item>
-			<view class="brbtns" @click="updflag=false">确认</view>
+			<view class="brbtns" @click="getSubmit">确认</view>
 		</uni-forms>
 		
 	</view>
@@ -100,6 +109,9 @@
 	import config from '@/config'
 	const baseUrl = config.baseUrl
 	import { getToken } from '@/utils/auth'
+	import { selectValue,uploadmore,selectValueKey } from '@/utils/common.js';
+	import {getInfoDetailFn,getInfoEditFn,getinfoAddFn} from "@/api/mine/report.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
 		data(){
 			return{
@@ -107,21 +119,179 @@
 				rimg:require("@/work/static/images/rimg.png"),
 				readOnly:false,
 				datainfo:{
-					tatype:1,
-					name:'',
 				},
 				tzlbList:[{label: '新闻',value: 0},{label: '开会',value: 1}],
 				tzlbidx:'',
-				updflag:false
+				updflag:false,
+				jblist:[],
+				dplist:[],
+				baseUrl:'',
+				jbidx:[],
+				dpidx:[],
+				ptype:'',
+				rules: {
+				  // avatar: {rules: [{required: true,errorMessage: '请上传委员照片'}]},
+				  name: {rules: [{required: true,errorMessage: '请输入委员姓名',}]},
+				  card: {rules: [{required: true,errorMessage: '请输入身份证号' } ]},
+				  boundary: {rules: [{required: true,errorMessage: '请选择界别'} ]},
+				  partyAffiliation: {rules: [{required: true,errorMessage: '请选择党派'} ]},
+				  unit: {rules: [{required: true,errorMessage: '请输入工作单位及职务'} ]},
+				  studio: {rules: [{required: true,errorMessage: '请输入乡镇(经开区)委员工作室'} ]},
+				  phonenumber: {rules: [{required: true,errorMessage: '请输入联系方式'} ]},
+				},
+				boundary:'',
+				partyAffiliation:'',
+				tpidx:'',
+				dpidx:'',
 			}
 		},
 		onLoad(e) {
-			
+			this.baseUrl=baseUrl;
+			this.id=e.id;
+			this.ptype=e.type;
+			if(this.ptype=='edit'||this.ptype=='add'){
+				this.updflag=true
+			}	
+			if(e.type&&e.type=='add'){
+				
+			}else{
+				console.log(23)
+				this.getDetail()
+			}
+			this.init();
 		},
 		methods:{
 			bindDateChangea(e){
-				console.log(e,2)
+				var val=e.detail.value;
+				this.boundary=this.jblist[val].label
+				this.datainfo.boundary=this.jblist[val].value
+			},
+			bindDateChangeb(e){
+				var val=e.detail.value;
+				this.partyAffiliation=this.dplist[val].label
+				this.datainfo.partyAffiliation=this.dplist[val].value
+			},
+			statusFormat(ite,list,type) {
+				var aite=selectValueKey(list, ite);
+				if(type=='jc'){
+					this.jcidx=aite.key
+				}else if(type=='khlx'){
+					this.khlxidx=aite.key
+				}else if(type=='jflx'){
+					this.jflxbidx=aite.key
+				}
+				return aite.actions;
 			},
+			kaType(ite,list){
+				return selectValue(list, ite);
+			},
+			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
+							}
+						})
+					}
+				})
+			},
+			getDetail(){
+				getInfoDetailFn(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+					}
+				})
+			},
+			getphotoFn(){
+				let that = this;
+				uni.chooseImage({
+					count: 1,
+					success:function(res){
+						let img= res.tempFilePaths;
+						let imglen = res.tempFilePaths.length;
+						var fuwufile = [];
+						uploadmore('/common/upload',img,0,0,0,imglen,fuwufile,function(rs){
+							var file = rs;
+							that.datainfo.avatar=file.join(',')
+						})	
+					}
+				});
+			},
+			getSubmit(){
+				var that=this;
+				this.$refs.form.validate().then(res => {
+					var params=that.datainfo;
+					// if(!params.avatar){
+					// 	this.$toast('请上传委员照片')
+					// 	return
+					// }
+					if(params.card){
+						let _IDRe18 =
+							/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
+						let _IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
+						// 校验身份证:
+						if (_IDRe18.test(params.card) || _IDre15.test(params.card)) {
+						}else{
+							this.$toast('请输入正确身份证号')
+							return
+						}
+					}
+					if(params.phonenumber){
+						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 (params.phonenumber && !regphone.test(params.phonenumber)) {
+							that.$toast("请输入正确的手机号")
+							return
+						}
+					}
+					if(this.ptype&&this.ptype=='add'){
+						getinfoAddFn(params).then(res=>{
+							if(res.code==200){
+								that.$toast('新增成功')
+								that.updflag=false;
+								setTimeout(function(){
+									uni.$emit('lzrefreshlist')
+									uni.$emit('refreshdetail')
+									uni.navigateBack({
+										delta:1
+									})
+								},1200)
+							}
+						})
+						
+					}else{
+						getInfoEditFn(params).then(res=>{
+							if(res.code==200){
+								that.$toast('修改成功')
+								that.updflag=false;
+								setTimeout(function(){
+									uni.$emit('lzrefreshlist')
+									uni.$emit('refreshdetail')
+									uni.navigateBack({
+										delta:1
+									})
+								},1200)
+								
+								
+							}
+						})
+					}
+				})
+				
+			}
 		}
 	}
 </script>
@@ -134,12 +304,14 @@
 .info /deep/ .uni-forms-item{background: #FFFFFF;padding: 14rpx 24rpx;margin-bottom: 24rpx;}
 .info /deep/ .uni-easyinput__content-input{font-weight: 500;font-size: 30rpx;text-align: right;color: #222327;}
 .info /deep/ .uni-input-placeholder{color: #aaaaaa;font-weight: 500;font-size: 30rpx;}
-
+.info /deep/ .uni-forms-item__error{right: 0;left: auto;margin-top: -18rpx;}
+.info /deep/ .uni-forms-item__content{display:flex;align-items: center;}
 
 
 .forms{padding: 0 24rpx 10rpx;
 	.addbox{width: 110rpx;height: 110rpx;display: flex;align-items: center;justify-content: center;background: #EDEDED;border-radius: 10rpx;margin:12rpx;margin-right: 0;
 		.adimg{width: 32rpx;height: 32rpx;}
+		.phoimg{width: 100%;height: 100%;}
 	}
 	.items{background: #FFFFFF;padding: 14rpx 24rpx;border-radius: 10rpx;margin-bottom: 24rpx;min-height: 100rpx;position: relative;display: flex;box-sizing: border-box;align-items: center;
 		.addtip{font-weight: 500;font-size: 24rpx;color: #9D9D9D;margin: 6rpx 0 0 20rpx;}
@@ -156,7 +328,7 @@
 }
 
 
-.lbtabp{display: flex;align-items: center;flex: 0 0 auto;height: 100%;justify-content: flex-end;
+.lbtabp{display: flex;align-items: center;flex: 1;height: 100%;justify-content: flex-end;
 		view{font-size: 30rpx;color: #222327;}
 		.rimg{width: 14rpx;height: 26rpx;margin-left: 20rpx;flex: 0 0 auto;}
 	}

+ 76 - 11
work/pages/report/report.vue

@@ -11,7 +11,7 @@
 				<block slot="right">
 					<picker mode="date" fields="year" value="nd" class="infolist_a" @change='bindDateChange'>
 						<view class="picks">
-							<view :class="nd?'':'f16 co80'">{{nd||"请选择"}}</view>
+							<view :class="year?'':'f16 co80'">{{year||"请选择"}}</view>
 							<image :src="upimg"></image>
 						</view>
 					</picker>
@@ -23,15 +23,15 @@
 			<view class="head flexc mb18">
 				<image :src="headimg" class="headimg"></image>
 				<view class="hinfo">
-					<view class="tit">何潇潇</view>
+					<view class="tit">{{memberInfo.name}}</view>
 					<view class="medal flexc">
 						<view class="bg bg1">
 							<image :src="medala"></image>
-							界别<text></text>中国共产党
+							界别<text></text>{{kaType(memberInfo.boundary,jblist)}}
 						</view>
 						<view class="bg bg2">
 							<image :src="medalb"></image>
-							党派<text></text>中国共产党
+							党派<text></text>{{kaType(memberInfo.partyAffiliation,dplist)}}
 						</view>
 					</view>
 				</view>
@@ -40,19 +40,19 @@
 				<view class="tit mb14">基本信息</view>
 				<view class="flex mb11">
 					<view class="imgs"><image :src="infoa" class="imga"></image></view>
-					<view class="txt">身份证号 | 32000019810205003X</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">联系方式 | 13700558100</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">工作单位及职务 | 潜山市政协委员会 委员</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">乡镇(经开区)委员工作室 | 黄铺镇工作室</view>
+					<view class="txt">乡镇(经开区)委员工作室 | {{memberInfo.studio}}</view>
 				</view>
 			</view>
 			<!-- 分 -->
@@ -151,6 +151,11 @@
 </template>
 
 <script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { selectValue } from '@/utils/common.js';
+	import {getInfojopDetai} from "@/api/mine/report.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
 	import reportList from "@/work/components/report/list.vue"
 	export default {
 		components:{reportList},
@@ -170,9 +175,17 @@
 				upimg:require("@/work/static/images/report/up.png"),
 				upmimg:require("@/static/images/home/up.png"),
 				backgroundColor:'transparent',
-				nd:'2024',
+				year:'2024',
 				tabval:0,
 				wtdt:'',
+				memberInfo:{},
+				proposalInfoList:{},
+				sqmyInfoList:{},
+				zxConferenceList:{},
+				zxActivityList:{},
+				zxSpeakList:{},
+				jblist:[],
+				dplist:[],
 				tabList:[{tit:'履职状况',val:'0'},{tit:'提案方面',val:'1'},{tit:'社情民意方面',val:'2'},{tit:'会议参与情况',val:'3'},{tit:'活动参与情况',val:'4'}],
 				chartData:{
 					categories: ["活动","其他","维度3","维度4","维度5","维度6"],
@@ -214,7 +227,10 @@
 				this.backgroundColor = '#1D64E2'
 			}
 		},
-		onLoad() {
+		onLoad(e) {
+			this.id=e.id;
+			this.getDetail()
+			this.init()
 		},
 		methods: {
 			getBack(){
@@ -222,9 +238,58 @@
 					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
-			}
+			},
+			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
+							}
+						})
+					}
+				})
+			},
+			getDetail(){
+				var params={
+					id:this.id,
+					year:this.year
+				}
+				getInfojopDetai(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						this.memberInfo=res.data.memberInfo;
+						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>

BIN
work/static/images/close.png


BIN
work/static/images/meeting/add.png


BIN
work/static/images/meeting/code.png


BIN
work/static/images/meeting/del.png


BIN
work/static/images/meeting/down.png


BIN
work/static/images/meeting/up.png