浏览代码

页面搭建

zouling 1 年之前
父节点
当前提交
ce1a1c9e31
共有 54 个文件被更改,包括 2506 次插入687 次删除
  1. 9 1
      api/login.js
  2. 55 0
      api/mine/case.js
  3. 24 0
      api/mine/news.js
  4. 0 91
      api/mine/order.js
  5. 2 2
      config.js
  6. 32 1
      pages.json
  7. 7 4
      pages/index/index.vue
  8. 117 52
      pages/login.vue
  9. 440 333
      pages/mine/index.vue
  10. 9 10
      pages/mine/pwd/index.vue
  11. 二进制
      static/images/mine/habg.png
  12. 二进制
      static/images/mine/header.png
  13. 二进制
      static/images/mine/mconta.png
  14. 二进制
      static/images/mine/mcontb.png
  15. 二进制
      static/images/mine/mcontc.png
  16. 二进制
      static/images/mine/mcontd.png
  17. 二进制
      static/images/mine/minea.png
  18. 二进制
      static/images/mine/mineb.png
  19. 二进制
      static/images/mine/minec.png
  20. 二进制
      static/images/mine/mined.png
  21. 二进制
      static/images/mine/minee.png
  22. 二进制
      static/images/mine/minef.png
  23. 二进制
      static/images/mine/mineg.png
  24. 二进制
      static/images/mine/mineh.png
  25. 二进制
      static/images/mine/minei.png
  26. 二进制
      static/images/mine/rimg.png
  27. 二进制
      static/images/mine/wrimg.png
  28. 二进制
      static/images/mine/wrimgs.png
  29. 9 1
      static/style.css
  30. 4 0
      store/getters.js
  31. 31 2
      store/modules/user.js
  32. 16 0
      utils/common.js
  33. 4 0
      utils/constant.js
  34. 1 1
      utils/storage.js
  35. 113 59
      work/components/case/list.vue
  36. 111 0
      work/components/news/list.vue
  37. 83 3
      work/components/popup/popup.vue
  38. 1 1
      work/components/zb-table/components/table-checkbox.vue
  39. 238 59
      work/pages/case/add.vue
  40. 355 14
      work/pages/case/details.vue
  41. 62 29
      work/pages/case/lmtapeople.vue
  42. 32 8
      work/pages/case/mine.vue
  43. 37 16
      work/pages/case/talbclass.vue
  44. 361 0
      work/pages/news/add.vue
  45. 165 0
      work/pages/news/info.vue
  46. 188 0
      work/pages/news/list.vue
  47. 二进制
      work/static/images/dpho.png
  48. 二进制
      work/static/images/fbico.png
  49. 二进制
      work/static/images/ntya.png
  50. 二进制
      work/static/images/ntyb.png
  51. 二进制
      work/static/images/ntyc.png
  52. 二进制
      work/static/images/ntyd.png
  53. 二进制
      work/static/images/rimg.png
  54. 二进制
      work/static/images/ups.png

+ 9 - 1
api/login.js

@@ -1,10 +1,11 @@
 import request from '@/utils/request'
 // 登录方法
-export function login(username, password, code, uuid) {
+export function login(username, password, code,type, uuid) {
   const data = {
     username,
     password,
     code,
+	type,
     uuid
   }
   return request({
@@ -63,3 +64,10 @@ export function sendSmsFn(data) {
     'method': 'get'
   })
 }
+export function sendSmsOnly(data) {
+  return request({
+    'url': '/sendSms/sendLoginSms',
+    'method': 'POST',
+	data:data
+  })
+}

+ 55 - 0
api/mine/case.js

@@ -0,0 +1,55 @@
+import request from '@/utils/request'
+// 提案信息-新增 proposalInfo:info:add
+export function getCaseAddFn(data) {
+  return request({
+    'url': '/proposalInfo/info',
+    'method': 'post',
+	'data':data
+  })
+}
+// 提案信息-列表 proposalInfo:info:add
+export function getCaseListFn(data) {
+  return request({
+    'url': '/proposalInfo/info/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 提案信息-详情 proposalInfo:info:query
+export function getCaseDetailFn(data) {
+  return request({
+    'url': '/proposalInfo/info/'+data,
+    'method': 'get',
+  })
+}
+// 提案信息-修改 proposalInfo:info:edit
+export function getCaseEditFn(data) {
+  return request({
+    'url': '/proposalInfo/info/put',
+    'method': 'post',
+	'data':data
+  })
+}
+// 提案信息-删除 proposalInfo:info:query
+export function getCasDelFn(data) {
+  return request({
+    'url': '/proposalInfo/info/delete/'+data,
+    'method': 'get',
+  })
+}
+// 提案信息-类别
+export function getCasetalbFn(data) {
+  return request({
+    'url': '/category/proposal/categoryTree',
+    'method': 'get',
+	'data':data
+  })
+}
+// 提案人员 委员信息-列表不分页member:info:listNoPage
+export function getInfoListFn(data) {
+  return request({
+    'url': '/member/info/listNoPage',
+    'method': 'get',
+	'data':data
+  })
+}

+ 24 - 0
api/mine/news.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+// 消息通知-列表
+export function getNoticeList(data) {
+  return request({
+    'url': '/zxNotice/notice/list',
+    'method': 'get',
+	'data':data
+  })
+}
+// 消息通知-新增
+export function getNoticeAdd(data) {
+  return request({
+    'url': '/zxNotice/notice',
+    'method': 'post',
+	'data':data
+  })
+}
+// 消息通知-详情
+export function getNoticeDetail(data) {
+  return request({
+    'url': '/zxNotice/notice/'+data,
+    'method': 'get',
+  })
+}

+ 0 - 91
api/mine/order.js

@@ -1,91 +0,0 @@
-import request from '@/utils/request'
-// 查询预约时段配置信息列表
-export function getReservatTime(data) {
-  return request({
-    'url': '/reservat/time/list',
-    'method': 'get',
-	'data':data
-  })
-}
-// 新增预约
-export function getReservatAdd(data) {
-  return request({
-    'url': '/system/reservat',
-    'method': 'post',
-	'data':data
-  })
-}
-// 查询陵园预约信息列表
-export function getReservatList(data) {
-  return request({
-    'url': '/system/reservat/list',
-    'method': 'get',
-	'data':data
-  })
-}
-// 审核
-export function getReservatSh(data) {
-  return request({
-    'url': '/system/reservat/sh',
-    'method': 'post',
-	'data':data
-  })
-}
-// end
-
-// 查询陵园预约配置信息列表
-export function getConfigList(data) {
-  return request({
-    'url': '/reservat/config/list',
-    'method': 'get',
-	'data':data
-  })
-}
-// H5时段信息 日历
-export function getCalendarList(data) {
-  return request({
-    'url': '/boman/common/reservatConfig/calendar',
-    'method': 'post',
-	'data':data
-  })
-}
-
-// 预约详情
-export function getReservatDetail(data) {
-  return request({
-    'url': '/system/reservat/'+data,
-    'method': 'get',
-  })
-}
-// 取消预约
-export function getReservatDel(data) {
-  return request({
-    'url': '/system/reservat/delete/'+data,
-    'method': 'get',
-  })
-}
-// 预约首页统计 system:reservat:add
-export function getReservatcountl(data) {
-  return request({
-    'url': '/boman/common/indexStatistics',
-    'method': 'post',
-	'data':data
-  })
-}
-// 预约信息核销 system:reservat:cav
-export function getReservatvav(data) {
-  return request({
-    'url': '/system/reservat/hx',
-    'method': 'get',
-	'data':data
-  })
-}
-// 预约须知
-export function getNewsList(data) {
-  return request({
-    'url': '/system/news/list',
-    'method': 'get',
-	'data':data
-  })
-}
-// 新的end

+ 2 - 2
config.js

@@ -1,8 +1,8 @@
 // 应用全局配置
 module.exports = {
-  baseUrl: 'https://vue.ruoyi.vip/prod-api',
+  // baseUrl: 'https://vue.ruoyi.vip/prod-api',
   // baseUrl: 'https://lyyy.qs163.cn/prod-api',
-  // baseUrl: 'http://192.168.101.168:8055',
+  baseUrl: 'http://192.168.101.168:8055',
   // baseUrl: 'http://192.168.101.11:8055',
   // baseUrlimg: 'http://114.99.127.243:2001',
   Clientid:'428a8310cd442757ae699df5d894f051',//

+ 32 - 1
pages.json

@@ -65,7 +65,10 @@
   }, {
     "path": "pages/mine/pwd/index",
     "style": {
-      "navigationBarTitleText": "修改密码"
+      "navigationBarTitleText": "修改密码",
+	  "navigationBarBackgroundColor": "#1D64E2",
+	  "navigationBarTextStyle": "white",
+	  "h5":{"titleNView":false}
     }
 	}, {
 	  "path": "pages/mine/pwd/forgetpwd",
@@ -161,6 +164,34 @@
 					"navigationBarTextStyle": "white",
 					"h5":{"titleNView":false}
 				}
+			},
+			{
+				"path": "pages/news/add",
+				"style": {
+					"navigationBarTitleText": "发布通知",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/news/list",
+				"style": {
+					"navigationBarTitleText": "消息通知",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"navigationStyle": "custom",
+					"h5":{"titleNView":false}
+				}
+			},
+			{
+				"path": "pages/news/info",
+				"style": {
+					"navigationBarTitleText": "个人信息",
+					"navigationBarBackgroundColor": "#1D64E2",
+					"navigationBarTextStyle": "white",
+					"h5":{"titleNView":false}
+				}
 			}
 		]
   	}

+ 7 - 4
pages/index/index.vue

@@ -2,7 +2,7 @@
 	<view class="zxbox">
 		<view class="zxtop">
 			<view class="navbox">
-				<uni-nav-bar  color="#ffffff" leftWidth='340rpx'  :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
+				<uni-nav-bar  color="#ffffff" leftWidth='340rpx' @clickRight="getNewsFn"  :background-color="backgroundColor" :border="false" statusBar='true' fixed="true">
 					<block slot="left">
 						<image :src="titimg" class="topl"></image>
 					</block>
@@ -227,6 +227,9 @@
 	},
 	methods:{
 		checkPermi, checkRole,
+		getNewsFn(){
+			this.$tab.navigateTo('/work/pages/news/list')
+		},
 		getTab(val){
 			this.tabval=val;
 		},
@@ -269,7 +272,7 @@
 					this.adrlist = res.data.map(v => {
 						return {
 							dictLabel: v.dictLabel,
-							dictValue: Number(v.dictValue)
+							dictValue: v.dictValue
 						}
 					})
 				}
@@ -398,8 +401,8 @@
 	
 
 .zxbox{
-	.bgimg{width: 100%;height: 420rpx;z-index: -1;}
-	.zxmain{margin-top: -260rpx;z-index: 1;
+	.bgimg{width: 100%;height: 420rpx;}
+	.zxmain{margin-top: -260rpx;z-index: 1;position: relative;
 		.htop{width: 25%;display: flex;flex-direction: column;align-items: center;justify-content: center;
 			.imgs{
 				width: 74rpx;height: 74rpx;display: flex;align-items: center;justify-content: center;

+ 117 - 52
pages/login.vue

@@ -14,22 +14,21 @@
 		   <!-- #endif -->
 		  <view class="tab flexcc">
 			  <block v-for="(ite,idx) in tablist" :key="idx">
-				  <view v-if="ite.val!=1"  class="tabtit" :class="tabidx==ite.val?'act':''" @click="getTab(ite.val)">
+				  <view   class="tabtit" :class="tabidx==ite.val?'act':''" @click="getTab(ite.val)">
 				  {{ite.tit}}</view> 
 			  </block>
 			 
 		  </view>
 		  <!-- 手机号登录 -->
-		  <view class="login-form-content" v-if="tabidx!=1">
-
-		  	<view class="input-item">
-		  		<view class="login_tit">账号</view>
-		  		<view class="login_box">
-		  			<!-- <view class="login_boxl">+86</view> -->
-		  			 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入登录账号" maxlength="30" />
-		  		</view>
-		  	</view>
-		  	<block v-if="tabidx==2">
+		  <view class="login-form-content">
+		  	<block v-if="tabidx==1">
+				<view class="input-item">
+					<view class="login_tit">账号</view>
+					<view class="login_box">
+						<view class="login_boxl" v-if="tabidx==2">+86</view>
+						 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入账号" maxlength="30" />
+					</view>
+				</view>
 		  		<view class="input-item" >
 					<view class="flexcj">
 						<view class="login_tit">密码</view>
@@ -53,25 +52,36 @@
 		  		    <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
 		  		  </view  >
 		  		</view>
-		  		 
+				<button v-if="captchaEnabled"  type="primary" class=" rbtn mb24 mt50" :class="tucode&&loginForm.username&&loginForm.password?'btn2':'btn'"  @click="getLogin">登录</button>
+				<button v-else type="primary" class=" rbtn mb24 mt50" :class="loginForm.username&&loginForm.password?'btn2':'btn'"   @click="getLogin">登录</button>
+				
 		  	</block>
-		  	<!-- <view v-if="tabidx==0" class="input-item" style="margin-bottom: 24rpx;" >
-		  		<view class="login_tit">验证码</view>
-		  		 <view style="display: flex;align-items: center;">
-		  			 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
-		  			 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
-		  			 <view v-else class="codess" @click="getsendCode">发送验证码</view>
-		  		 </view>
-		  	</view> -->
-		    <button v-if="captchaEnabled"  type="primary" class=" rbtn mb24 mt50" :class="tucode&&loginForm.username&&loginForm.password?'btn2':'btn'"  @click="getLogin">登录</button>
-		    <button v-else type="primary" class=" rbtn mb24 mt50" :class="loginForm.username&&loginForm.password?'btn2':'btn'"   @click="getLogin">登录</button>
-		  </view>
+			<block v-if="tabidx==2">
+				<view class="input-item">
+					<view class="login_tit">手机号</view>
+					<view class="login_box">
+						<view class="login_boxl" v-if="tabidx==2">+86</view>
+						 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入手机号" maxlength="30" />
+					</view>
+				</view>
+				<view  class="input-item" style="margin-bottom: 24rpx;" >
+					<view class="login_tit">验证码</view>
+					 <view style="display: flex;align-items: center;">
+						 <input v-model="duancode" type="code" class="input" placeholder="请输入短信验证码" maxlength="20" />
+						 <view v-if="timefalg" class="codes">重新发送{{time}}s</view>
+						 <view v-else class="codess" @click="getsendCode">发送验证码</view>
+					 </view>
+				</view>
+				<button v-if="tabidx==2" type="primary" class=" rbtn mb24 mt50" :class="loginForm.username&&duancode?'btn2':'btn'"   @click="getLogin">登录</button>
+				
+			</block>
+		   </view>
 		  <!-- 微信登录 -->
-		  <block v-if="tabidx==1">
+		 <!-- <block v-if="tabidx==1">
 			  <button  type="primary" class="rbtn mb24 mt50" open-type="getUserInfo" @getuserinfo="getuserinfo" >
 			  	<text class="btn-txt">快捷登录</text>
 			  </button>
-		  </block>
+		  </block> -->
 		  
 		  
 		  <!-- 账号密码登录 -->
@@ -120,12 +130,13 @@
 			codeUrl:'',
 			time:'',
 			timefalg:'',
-			tabidx:2,
-			tablist:[{tit:'微信登录',val:1},{tit:'密码登录',val:2},],
+			tabidx:1,
+			tablist:[{tit:'账号登录',val:1},{tit:'验证码登录',val:2},],
 			loginForm: {
 				username: "",
 				code: "",
 				password:'',
+				type:1,//1:账号密码 2:短信验证码
 			},
 			voList:[],
 			voindex:0,
@@ -136,6 +147,7 @@
 	methods:{
 		getTab(idx){
 			this.tabidx=idx;
+			this.loginForm.type=idx;
 		},
 
 		// 获取图形验证码
@@ -150,9 +162,6 @@
 		},
 		getForget(){
 			this.$tab.navigateTo(`/pages/mine/pwd/forgetpwd`)
-		},
-		getSchoolFn(){
-			this.$tab.navigateTo(`/mine/pages/mine/school?id=`+this.loginForm.school)
 		},
 		 getregister(){
 			 this.$tab.navigateTo(`/mine/pages/login/register`)
@@ -160,37 +169,50 @@
 			 // this.$tab.navigateTo(`/mine/pages/mine/auth`)
 		 },
 		 getLogin(){
-			 if(!this.loginForm.username||!this.loginForm.password||(!this.tucode&& this.captchaEnabled)){
-			 	 return
+			 if(this.tabidx==1){
+				if(!this.loginForm.username||!this.loginForm.password||(!this.tucode&& this.captchaEnabled)){
+					 return
+				} 
+				this.loginForm.code=this.tucode;
+			 }else{
+				let regphone = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
+				// 座机号
+				if (this.loginForm.username && !regphone.test(this.loginForm.username)) {
+					this.$toast("请输入正确的手机号")
+					return
+				}
+				if(!this.loginForm.username||!this.duancode){
+					 return
+				}
+				this.loginForm.code=this.duancode;
 			 }
-			// 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(!regphone.test(this.loginForm.username)){
-			// 	this.$toast('请输入正确的手机号')
-			// 	return
-			// }
+			 this.pwdLogin()
+			
+			
 			 // if(!this.checkflag){
 			 // 	this.$toast("请同意用户协议")
 			 // 	return
 			 // }
-			 this.loginForm.code=this.tucode;
-			 this.pwdLogin()
+			
 		 },
 		 // 密码登录
 		 async pwdLogin() {
 		 	var that=this;
-			
 		   this.$store.dispatch('Login', this.loginForm).then((res) => {
 			   // 判断是否记住密码
-			  if(that.jzflag){
-			  	var newObj={
-			  		username:that.loginForm.username,
-			  		password:base64.encode(that.loginForm.password),
-					captchaEnabled:that.captchaEnabled,
-			  	}	
-			  	uni.setStorageSync('account', JSON.parse(JSON.stringify(newObj)))
-			  }else{
-			  	uni.removeStorageSync('account')
-			  } 
+			   if(this.tabidx==1){
+				   if(that.jzflag){
+				   	var newObj={
+				   		username:that.loginForm.username,
+				   		password:base64.encode(that.loginForm.password),
+				   					captchaEnabled:that.captchaEnabled,
+				   	}	
+				   	uni.setStorageSync('account', JSON.parse(JSON.stringify(newObj)))
+				   }else{
+				   	uni.removeStorageSync('account')
+				   } 
+			   }
+			  
 		     this.$modal.closeLoading()
 		 		  this.$toast('登录成功')
 		 		  setTimeout(function(){
@@ -205,6 +227,50 @@
 		 	},1000)
 		   })
 		 },
+		 // 获取短信验证码
+		 getsendCode(){
+		 	var that=this;
+		 	if (!this.loginForm.username ) {
+		 		that.$toast("请输入手机号")
+		 		return
+		 	}
+		 	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}$/
+		 	// 座机号
+		 	let reg1=/^(0\d{2,3})-?(\d{7,8})$/
+		 	if (this.loginForm.username && !regphone.test(this.loginForm.username)) {
+		 		that.$toast("请输入正确的手机号")
+		 		return
+		 	}
+		 	var params={
+		 		'username':this.loginForm.username
+		 	}
+		 		// getSMS();
+		 		// return
+		 	sendSmsOnly(params).then(res=>{
+		 		if (res.code == 200) {
+		 			// 发送验证码
+		 			that.$toast("发送成功")
+		 			that.time=60;
+		 			that.timefalg=true;
+		 			that.setTimein()
+		 		} else {
+		 			that.$toast(res.msg)
+		 		}
+		 	})
+		 },
+		 // 验证码倒计时
+		 setTimein(){
+		 	var that=this;
+		 	clearInterval(that.timer)
+		 	that.timer=setInterval(()=>{
+		 		if(that.time<=1){
+		 			that.timefalg=false;
+		 			that.time=60;
+		 			clearInterval(that.timer)
+		 		}
+		 		that.time=that.time-1;
+		 	},1000)
+		 },
 		 handlePrivacy(){
 			this.$tab.navigateTo(`/pages/agreement`)  
 		 },
@@ -217,7 +283,6 @@
 		 getPhoneNumber(data){
 			 var that=this;
 			 var params=data
-			 params.tenantId=this.loginForm.tenantId
 			 that.$store.dispatch('Login', params).then(() => {
 			   that.$modal.closeLoading()
 			 	that.$toast('登录成功')
@@ -398,7 +463,7 @@ color: $com-cd3;text-align: center;}
 .codess{font-size: 34rpx;color: $com-cd3;flex: 0 0 auto;min-width: 200rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
 .codes{background: none;font-size: 28rpx;flex: 0 0 auto;width: 180rpx;text-align: center;border-left: 2rpx solid #CDCDCD;}
 .login_box{display: flex;align-items: center;}
-.login_boxl{width:130rpx;font-size: 34rpx;color: #343434;border-right: 2rpx solid #CDCDCD;}
+.login_boxl{width:130rpx;font-size: 34rpx;color: #343434;border-right: 2rpx solid #CDCDCD;margin-right: 4rpx;}
 .login_txt{text-align: right;flex: 0 0 auto; padding:0 24rpx;
 	text{font-size: 30rrpx;color:#666666;}
 }

+ 440 - 333
pages/mine/index.vue

@@ -1,366 +1,473 @@
 <template>
-  <view class="mine-container" >
-    <!--顶部个人信息栏-->
-		<view class="home_top">
-		  <uni-nav-bar title="我的" :background-color="backgroundColor" :border="navborder" statusBar='true' fixed="true">
-			  <!-- checkPermi(['system:notice:list']) -->
-			  <!-- <block slot="left" >
-			  		<view class="min_top" @click="getMessage">
-			  			<image :src="noticimg"></image>
-						<view class="circ"></view>
-			  		</view>
-			  </block> -->
-		  </uni-nav-bar> 
-	  </view>
-	  <image :src="abg" class="abg"></image>
-	 
-	<view style="margin-top: -487rpx;position: relative;padding:0 34rpx 20rpx;">
-		<view class="header_top flexc mb6" @click="handleToinfo">
-			<image v-if="avatar" @click.stop="handleToAvatar" :src="avatar" class="flex0 limg" mode="aspectFill"></image>
-			<image v-else @click.stop="handleToAvatar" :src="avatarimg" class="flex0 limg" mode="aspectFill"></image>
-			<view class="flex1 hcen">
-				<view class="f17 fw c16 mb8 flexc">{{name}}
-				<!-- <text v-if="choseroles=='teacher'">老师</text>
-				<text v-if="choseroles=='school'">学校管理员</text>
-				<text v-if="choseroles=='parents'">家长</text> -->
+	<view class="zxbox">
+		<view class="navbox">
+			<uni-nav-bar color="#ffffff" @clickRight="getNewsFn" :background-color="backgroundColor" :border="false"
+				statusBar='true' fixed="true">
+				<block slot="right">
+					<view class="topr">
+						<image :src="noticimg"></image>
+						<view class="cir"></view>
+					</view>
+				</block>
+			</uni-nav-bar>
+		</view>
+		<image :src="bgimg" class="bgimg"></image>
+		<view class="mbox">
+			<view class="infobox flexc" @click="handleToInfo">
+				<image v-if="avatar" @click.stop="handleToAvatar" :src="avatar" class="limg" mode="aspectFill"></image>
+				<image v-else @click.stop="handleToAvatar" :src="avatarimg" class="limg" mode="aspectFill"></image>
+				<view class="cbox">
+					<view class="tit">{{name?name:'登录账号'}}</view>
+					<view class="txt">Hi,欢迎登陆潜山智慧政协平台</view>
 				</view>
-				<!-- <view class="f15 co6" v-if="choseroles=='teacher'">{{schoolName}}/{{discipline}}</view>
-				<view class="f15 co6" v-else-if="choseroles!='parents'" >{{schoolName}}</view> -->
+				<image :src="wrimg" class="rimg"></image>
 			</view>
-			<image :src="rimg" class="flex0 rimg"></image>
-		</view>
-		<view class="mnbox">
-			<view class="mn_tit">账号设置</view>
-			<view class="mn_list">
-				<view class="mlist flexc"  @click="handleUpassword">
-					<view class="mlistl"><image :src="miconj" class="imgh"></image></view>
-					<view class="mlistc">修改密码</view>
+			<view class="conts flexcj">
+				<view class="clist">
+					<image :src="mconta"></image>
+					<view class="num">31</view>
+					<view class="tit">审查中<text>/件</text></view>
+				</view>
+				<view class="clist">
+					<image :src="mcontb"></image>
+					<view class="num">31</view>
+					<view class="tit">交办中<text>/件</text></view>
+				</view>
+				<view class="clist">
+					<image :src="mcontc"></image>
+					<view class="num">31</view>
+					<view class="tit">办理中<text>/件</text></view>
+				</view>
+				<view class="clist">
+					<image :src="mcontd"></image>
+					<view class="num">31</view>
+					<view class="tit">办结中<text>/件</text></view>
+				</view>
+			</view>
+			<view class="mbgbox">
+				<view class="flexc mine_list" @click="handleToAddNews" v-if="checkPermi(['projectV2:sbbzb:add'])">
+					<view class="limg">
+						<image :src="listimga" class="imga"></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="limg">
+						<image :src="listimgb" class="imgb"></image>
+					</view>
+					<view class="tit flex1">创建会议</view>
+					<image :src="rimg" class="rimg"></image>
+				</view>
+			</view>
+			<view class="mbgbox">
+				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+					<view class="limg">
+						<image :src="listimgc" class="imgc"></image>
+					</view>
+					<view class="tit flex1">政协提案</view>
+					<image :src="rimg" class="rimg"></image>
 				</view>
-				<view class="mlist flexc"  @click="handlePrivacy">
-					<view class="mlistl"><image :src="miconf" class="imgd"></image></view>
-					<view class="mlistc">用户协议</view>
+				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+					<view class="limg">
+						<image :src="listimgd" class="imgc"></image>
+					</view>
+					<view class="tit flex1">社情民意</view>
+					<image :src="rimg" class="rimg"></image>
 				</view>
-				<view class="mlist flexc"  @click="onlineWgt">
-					<view class="mlistl"><image :src="micong" class="imgg"></image></view>
-					<view class="mlistc">版本更新</view>
+				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+					<view class="limg">
+						<image :src="listimge" class="imgc"></image>
+					</view>
+					<view class="tit flex1">履职信息</view>
+					<image :src="rimg" class="rimg"></image>
 				</view>
-				<view class="mlist flexc"  @click="handleLogout">
-					<view class="mlistl"><image :src="miconl" class="imgc"></image></view>
-					<view class="mlistc">退出登录</view>
+				<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+					<view class="limg">
+						<image :src="listimgf" class="imgc"></image>
+					</view>
+					<view class="tit flex1">会议活动</view>
+					<image :src="rimg" class="rimg"></image>
+				</view>
+			</view>
+			<view class="mbgbox">
+				<view class="flexc mine_list" @click="handleUpassword">
+					<view class="limg">
+						<image :src="listimgg" class="imgc"></image>
+					</view>
+					<view class="tit flex1">修改密码</view>
+					<image :src="rimg" class="rimg"></image>
+				</view>
+				<view class="flexc mine_list"@click="onlineWgt">
+					<view class="limg">
+						<image :src="listimgh" class="imgc"></image>
+					</view>
+					<view class="tit flex1">版本号</view>
+					 <view  class="txt">{{wgtcode}}</view>
+
+				</view>
+				<view class="flexc mine_list" @click="handleLogout">
+					<view class="limg">
+						<image :src="listimgi" class="imgc"></image>
+					</view>
+					<view class="tit flex1">退出登录</view>
+					<image :src="rimg" class="rimg"></image>
 				</view>
 			</view>
 		</view>
+		<view class="ztit">安徽中新云计算有限公司提供支持</view>
+		<!-- <view class="header-section" style="display: none;">
+      <view class="flex padding justify-between">
+        <view class="flex align-center">
+          <view v-if="!avatar" class="cu-avatar xl round bg-white">
+            <view class="iconfont icon-people text-gray icon"></view>
+          </view>
+          <image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round" mode="widthFix">
+          </image>
+          <view v-if="!name" @click="handleToLogin" class="login-tip">
+            点击登录
+          </view>
+          <view v-if="name" @click="handleToInfo" class="user-info">
+            <view class="u_title">
+              用户名:{{ name }}
+            </view>
+          </view>
+        </view>
+        <view @click="handleToInfo" class="flex align-center">
+          <text>个人信息</text>
+          <view class="iconfont icon-right"></view>
+        </view>
+      </view>
+    </view> -->
+
+		<!-- <view class="content-section" style="display: none;">
+      <view class="mine-actions grid col-4 text-center">
+        <view class="action-item" @click="handleJiaoLiuQun">
+          <view class="iconfont icon-friendfill text-pink icon"></view>
+          <text class="text">交流群</text>
+        </view>
+        <view class="action-item" @click="handleBuilding">
+          <view class="iconfont icon-service text-blue icon"></view>
+          <text class="text">在线客服</text>
+        </view>
+        <view class="action-item" @click="handleBuilding">
+          <view class="iconfont icon-community text-mauve icon"></view>
+          <text class="text">反馈社区</text>
+        </view>
+        <view class="action-item" @click="handleBuilding">
+          <view class="iconfont icon-dianzan text-green icon"></view>
+          <text class="text">点赞我们</text>
+        </view>
+      </view>
+    </view> -->
+		<!-- <view class="flex0"></view> -->
+		<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked"
+			:color_nochecked="color_nochecked" :isHomeIndex="false"></footers>
+
+
 	</view>
-	<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
- </view>
 </template>
 
 <script>
+	import storage from '@/utils/storage'
 	import footers from '@/components/footer/footer.vue'
-  import config from '@/config'
-  const baseUrl = config.baseUrl
-  import storage from '@/utils/storage'
-  import {findVersion} from "@/api/system/user.js"
-  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
-  import {getInfo } from '@/api/login'
-  
-  export default {
-	components:{footers},
-    data() {
-      return {
-		  footlist:[
-		  	{module:'home',title:'潜山政协',icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
-		  	{module:'report',title:'履职报告',icon_checked:require('@/static/images/tabbar/report_.png'),icon_nochecked:require('@/static/images/tabbar/report.png')},
-		  	{module:'notice',title:'会议通知',icon_checked:require('@/static/images/tabbar/notice_.png'),icon_nochecked:require('@/static/images/tabbar/notice.png')},
-		  	{module:'mine',title:'个人中心',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
-		  	],
-		  color_checked :'222327',
-		  color_nochecked :'AAAAAA',
-		  footerindex:'mine',
-		  isfootflag:true,
-		  
-		  abg:require('@/static/images/mine/habg.png'),
-		  noticimg:require('@/static/images/mine/mnotic.png'),
-		  rimg:require('@/static/images/mine/rimg.png'),
-		  wrimg:require('@/static/images/mine/wrimg.png'),	 
-		  miconf:require('@/static/images/mine/miconf.png'),
-		  miconj:require('@/static/images/mine/miconj.png'),
-		  miconl:require('@/static/images/mine/miconl.png'),
-		  micong:require('@/static/images/mine/micong.png'),
-		
-		type:0,
-		confdat:{tit:'系统提示',txt:"确定注销并退出系统吗?",closetxt:'取消',suretxt:'确认'},
-		  backgroundColor:"transparent",
-		  navborder:false,
-		  timetit:'',
-		  timelist:[],
-		  timetype:'',
-		  discipline:'',
-		  schoolName:'',
-		  schoolId:'',
-		  classId:'',
-		  
-		  teacherClass:[],
-		  roles:'',
-		  baseUrl:'',
-        name: this.$store.state.user.name,
-		avatarimg:require("@/static/images/mine/profile.png"),
-		platform:'Android',  
-        // version: getApp().globalData.config.appInfo.version
-      }
-    },
-    computed: {
-      avatar() {
-        return this.$store.state.user.avatar
-      },
-	  choseroles() {
-	    return this.$store.state.user.choseroles
-	  },
-      windowHeight() {
-        return uni.getSystemInfoSync().windowHeight - 50
-      }
-    },
-	onShow() {
-	},
-	onLoad() {
-		this.baseUrl=baseUrl;
-	},
-	onPageScroll(e) {
-		var scrollTop=Number(e.scrollTop);
-		if(scrollTop>0){
-			this.backgroundColor='#c4defb'
-		}else{
-			this.backgroundColor='transparent'
-		}
-	},
-    methods: {
-		checkPermi, checkRole,
-		onlineWgt() {
-			let that = this;
-			plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
-				that.$store.dispatch('SetwgtFn',widgetInfo.version).then(()=>{
-				})
-				that.comparisonVersionNo(widgetInfo.versionCode);
-			});
-			// that.comparisonVersionNo()
+	// import {getNoticenumber} from "@/api/work/index.js"
+	import {updateUserProfile,findVersion} from "@/api/system/user.js"
+	import {checkPermi,checkRole} from "@/utils/permission"; // 权限判断函数
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	export default {
+		data() {
+			return {
+				bgimg: require("@/static/images/bg.png"),
+				avatarimg:require("@/static/images/mine/header.png"),
+				noticimg: require("@/static/images/home/notice.png"),
+				mconta:require("@/static/images/mine/mconta.png"),
+				mcontb:require("@/static/images/mine/mcontb.png"),
+				mcontc:require("@/static/images/mine/mcontc.png"),
+				mcontd:require("@/static/images/mine/mcontd.png"),
+				
+				listimga: require('@/static/images/mine/minea.png'),
+				listimgb: require('@/static/images/mine/mineb.png'),
+				listimgc: require('@/static/images/mine/minec.png'),
+				listimgd: require('@/static/images/mine/mined.png'),
+				listimge: require('@/static/images/mine/minee.png'),
+				listimgf: require('@/static/images/mine/minef.png'),
+				listimgg: require('@/static/images/mine/mineg.png'),
+				listimgh: require('@/static/images/mine/mineh.png'),
+				listimgi: require('@/static/images/mine/minei.png'),
+				
+
+				rimg:require("@/static/images/mine/rimg.png"),
+				wrimg:require("@/static/images/mine/wrimgs.png"),
+				border: false,
+				backgroundColor: 'transparent',
+
+				name: this.$store.state.user.name,
+				// version: getApp().globalData.config.appInfo.version,
+				footlist: [{
+						module: 'home',
+						title: '潜山政协',
+						icon_checked: require('@/static/images/tabbar/home_.png'),
+						icon_nochecked: require('@/static/images/tabbar/home.png')
+					},
+					{
+						module: 'report',
+						title: '履职报告',
+						icon_checked: require('@/static/images/tabbar/report_.png'),
+						icon_nochecked: require('@/static/images/tabbar/report.png')
+					},
+					{
+						module: 'notice',
+						title: '会议通知',
+						icon_checked: require('@/static/images/tabbar/notice_.png'),
+						icon_nochecked: require('@/static/images/tabbar/notice.png')
+					},
+					{
+						module: 'mine',
+						title: '个人中心',
+						icon_checked: require('@/static/images/tabbar/mine_.png'),
+						icon_nochecked: require('@/static/images/tabbar/mine.png')
+					},
+				],
+				color_checked: '222327',
+				color_nochecked: 'AAAAAA',
+				footerindex: 'mine',
+				isfootflag: true,
+				noticenum: 0,
+				deptId: this.$store.state.user.deptId,
+				wgtcode: this.$store.state.user.wgtcode,
+				platform: 'Android',
+				nvaHeight:44,
+			}
 		},
-		comparisonVersionNo(versionCode) {
-			
-			let that = this;
-			// console.log("aaaaaaa===versionCode", versionCode);
-			const parmas = {
-				model: that.platform
+		components: {
+			footers
+		},
+		computed: {
+			avatar() {
+				return this.$store.state.user.avatar
+			},
+			windowHeight() {
+				return uni.getSystemInfoSync().windowHeight - 50
+			}
+		},
+		onPageScroll(e) {
+			var scrollTop = Number(e.scrollTop);
+			var listTop=Number(this.listTop)-Number(this.nvaHeight)
+			if (scrollTop <=this.nvaHeight) {
+				const opacity = scrollTop / 100 // 计算透明度值
+				const color = `rgba(29, 100, 226, ${opacity})`
+				this.backgroundColor = color // 更新盒子背景颜色
+			} else {
+				this.backgroundColor = '#1D64E2'
 			}
-			console.log(parmas)
-			findVersion(parmas).then(res => {
-				console.log(res,2)
-				if (res.code == "200") {
-					let versionNos = res.data.code;
-					console.log(versionNos,'versionNos')
-					// console.log(res.data.path);
-					let filePath = res.data.path;
-					if (versionNos != versionCode) { //服务器返回1更新,0则不更新
-						uni.showModal({
-							title: '提示',
-							content: '发现新版本,是否升级',
-							success: function(res) {
-								// console.log(widgetInfo.version);
-								if (res.confirm) {
-									console.log('用户点击确定');
-									that.getProperty(filePath);
-								} else if (res.cancel) {
-									console.log('用户点击取消');
+			// if(scrollTop>listTop){
+			// 	this.fixedflag=true
+			// }else{
+			// 	this.fixedflag=false
+			// }
+		},
+		onLoad() {
+			this.nvaHeight=uni.getSystemInfoSync().statusBarHeight+44;
+			if (checkPermi(['system:notice:number'])) {
+				this.getNoticenumber()
+			}
+		},
+		methods: {
+			checkPermi,
+			checkRole,
+			// 修改密码
+			handleUpassword(){
+				this.$tab.navigateTo(`/pages/mine/pwd/index`)  
+			},
+			// 账号信息
+			handleToInfo() {
+				this.$tab.navigateTo('/pages/mine/info/index')
+			},
+			//消息
+			getNewsFn() {
+				this.$tab.navigateTo('/work/pages/news/list')
+				// if (checkPermi(['system:notice:list'])) {
+				// 	this.$tab.navigateTo('/pages/work/message')
+				// }
+			},
+			handleToAddNews(){
+				this.$tab.navigateTo('/work/pages/news/add')
+			},
+			handleToLogin() {
+				this.$tab.reLaunch('/pages/login')
+			},
+			handleToAvatar() {
+				this.$tab.navigateTo('/pages/mine/avatar/index')
+			},
+			handleLogout() {
+				this.$modal.confirm('确定注销并退出系统吗?').then(() => {
+					this.$store.dispatch('LogOut').then(() => {
+						this.$tab.reLaunch('/pages/index')
+					})
+				})
+			},
+			onlineWgt() {
+				let that = this;
+				plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
+					that.$store.dispatch('SetwgtFn', widgetInfo.version).then(() => {})
+					that.comparisonVersionNo(widgetInfo.versionCode);
+				});
+				// that.comparisonVersionNo()
+			},
+			comparisonVersionNo(versionCode) {
+				let that = this;
+				// console.log("aaaaaaa===versionCode", versionCode);
+				const parmas = {
+					model: that.platform
+				}
+				findVersion(parmas).then(res => {
+					if (res.code == "200") {
+						let versionNos = res.data.code;
+						console.log(versionNos, 'versionNos')
+						// console.log(res.data.path);
+						let filePath = res.data.path;
+						if (versionNos != versionCode) { //服务器返回1更新,0则不更新
+							uni.showModal({
+								title: '提示',
+								content: '发现新版本,是否升级',
+								success: function(res) {
+									// console.log(widgetInfo.version);
+									if (res.confirm) {
+										console.log('用户点击确定');
+										that.getProperty(filePath);
+									} else if (res.cancel) {
+										console.log('用户点击取消');
+									}
 								}
-							}
-						});
-					}else{
-						this.$toast('该版本已是最新版')
+							});
+						} else {
+							this.$toast('该版本已是最新版')
+						}
 					}
-				}
-			}).catch(error=>{
-				uni.hideLoading()
-				console.log(error)
-			})
-		},
-		getProperty(getProperty) {
-			// console.log("bbbbbbbbb----------->", getProperty)
-			let that = this;
-			// 在线升级app/热更新
-			that.showwri = true;
-			const downloadTask = uni.downloadFile({ //下载文件
-				url: baseUrl + getProperty,
-				success: (downloadResult) => {
-					// console.log(downloadResult);
-					if (downloadResult.statusCode == 200) {
-						// 更新升级
-						plus.runtime.install(downloadResult.tempFilePath, {
-							force: true
-						}, function() {
-							// console.log('install success...');
-							that.showwri = false;
-							plus.nativeUI.alert("应用资源更新完成!", function() {
-								plus.runtime.restart();
+				}).catch(error => {
+					uni.hideLoading()
+					console.log(error)
+				})
+			},
+			getProperty(getProperty) {
+				// console.log("bbbbbbbbb----------->", getProperty)
+				let that = this;
+				// 在线升级app/热更新
+				that.showwri = true;
+				const downloadTask = uni.downloadFile({ //下载文件
+					url: baseUrl + getProperty,
+					success: (downloadResult) => {
+						// console.log(downloadResult);
+						if (downloadResult.statusCode == 200) {
+							// 更新升级
+							plus.runtime.install(downloadResult.tempFilePath, {
+								force: true
+							}, function() {
+								// console.log('install success...');
+								that.showwri = false;
+								plus.nativeUI.alert("应用资源更新完成!", function() {
+									plus.runtime.restart();
+								});
+							}, function(e) {
+								that.showwri = false;
+								plus.nativeUI.alert("更新失败,请稍后再试");
 							});
-						}, function(e) {
-							that.showwri = false;
-							plus.nativeUI.alert("更新失败,请稍后再试");
-						});
+						}
 					}
+				});
+				downloadTask.onProgressUpdate((res) => { //下载文件的进度
+					that.totalBytesWritten = res.totalBytesWritten; //当前下载大小
+					that.progress = res.progress; //当前下载比例
+					that.totalBytesExpectedToWrite = res.totalBytesExpectedToWrite; //
+				});
+			},
+			
+			getNoticenumber() {
+				var params = {
+					deptId: this.deptId
 				}
-			});
-			downloadTask.onProgressUpdate((res) => { //下载文件的进度
-				that.totalBytesWritten = res.totalBytesWritten; //当前下载大小
-				that.progress = res.progress; //当前下载比例
-				that.totalBytesExpectedToWrite = res.totalBytesExpectedToWrite; //
-			});
-		},
-		getConfirm(){
-			this.$store.dispatch('LogOut').then(() => {
-			  this.$tab.reLaunch('/pages/index/index')
-			})
-		},
-		handlePrivacy(){
-			this.$tab.navigateTo(`/pages/agreement`)  
-		},
-		handleUpassword(){
-			this.$tab.navigateTo(`/pages/mine/pwd/index`)  
-		},
-	
-		
-		handleToAvatar() {
-		  this.$tab.navigateTo('/pages/mine/avatar/index')
-		},
-      handleToinfo() {
-        this.$tab.navigateTo('/pages/mine/info/index')
-      },
-      
-      handleLogout() {
-        this.$modal.confirm('确定注销并退出系统吗?').then(() => {
-          this.$store.dispatch('LogOut').then(() => {
-            this.$tab.reLaunch('/pages/index/index')
-          })
-        })
-      },
-    }
-  }
+				getNoticenumber(params).then(res => {
+					if (res.code == 200) {
+						this.noticenum = Number(res.data)
+					} else {
+						this.$toast(res.msg)
+					}
+				})
+			},
+			// 项目进展
+			handleToAdd() {
+				// this.$tab.navigateTo('/pages/work/addclues')
+				// this.$tab.navigateTo('/pages/work/addcluelist') 
+			},
+			
+			// handleToSetting() {
+			//   this.$tab.navigateTo('/pages/mine/setting/index')
+			// },
+			
+			// handleHelp() {
+			// 	this.$tab.navigateTo('/pages/mine/help/index')
+			// },
+			// handleAbout() {
+			// 	this.$tab.navigateTo('/pages/mine/about/index')
+			// },
+			// handleJiaoLiuQun() {
+			// 	this.$toast('QQ群:133713780')
+			// },
+			// handleBuilding() {
+			// 	this.$toast('模块建设中~')
+			// }
+		}
+	}
 </script>
 
 <style lang="scss">
-  page {
-    background-color: #f5f6f7;
-  }
-  .home_top /deep/ .uni-navbar__placeholder{height: 0 !important;}
-.abg{width: 100%;height: 622rpx;}
-.min_top{position: relative;width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;
-	image{width: 32rpx;height: 32rpx;}
-	.circ{width: 12rpx;height: 12rpx;background: #EB5663;border-radius: 50%;position: absolute;right: 4rpx;top: 4rpx;}
-}
-.header_top{padding: 34rpx 26rpx;
-	.limg{width: 120rpx;height: 120rpx;border-radius: 50%;margin-right: 26rpx;}
-	.rimg{width: 14rpx;height: 24rpx;margin-left: 26rpx;}
-	.hcen{
-		text{height: 34rpx;background: #89A8F6;border-radius: 16rpx;line-height: 34rpx;font-weight: normal;font-size: 24rpx;color: #ffffff;display: inline-block;min-width: 78rpx;padding: 0 10rpx;box-sizing: border-box;margin-left: 24rpx;}
-	}
+page {background-color: #f5f5f5;}
+.navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4;
+	.topl{width: 274rpx;height: 50rpx;margin-left: 14rpx;}
+	.topr{width: 36rpx;height: 36rpx;position: relative;margin-right: 10rpx;
+		image{width: 100%;height: 100%;}
+		.cir{width: 14rpx;height: 14rpx;background: #DF0024;border-radius: 50%;position: absolute;right: -7rpx;top: -7rpx;}
+	}	
 }
-.bgf{
-	.mlist{padding:30rpx 34rpx;
-		.mlistl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
-			.imga{width: 38rpx;height: 38rpx;}
-			.imgb{width: 32rpx;height: 32rpx;}
-			.imgc{width: 30rpx;height: 30rpx;}
-			.imgd{width: 32rpx;height: 34rpx;}
-			.imge{width: 32rpx;height: 26rpx;}
-			.imgf{width: 32rpx;height: 30rpx;}
-			.imgg{width: 34rpx;height: 34rpx;}
-			.imgi{width: 34rpx;height: 34rpx;}
-			.imgk{width: 32rpx;height: 30rpx;}
+.zxbox{
+	.bgimg{width: 100%;height: 416rpx;}
+	.mbox{margin-top: -280rpx;padding: 0 24rpx;z-index: 1;position: relative;
+		.infobox{
+			.limg{width: 140rpx;height: 140rpx;flex: 0 0 auto;margin-right: 26rpx;border-radius: 50%;}
+			.cbox{flex: 1;z-index: 1;
+				.tit{font-weight: bold;font-size: 40rpx;color: #ffffff;margin-bottom: 14rpx;}
+				.txt{font-weight: 500;font-size: 26rpx;color: #ffffff;}
+			}
+			.rimg{width: 12rpx;height: 20rpx;flex: 0 0 auto;margin-left: 20rpx;}
 		}
-		.mlistc{flex: 1;font-size: 32rpx;font-weight: 500;
-	color: #161616;}
-		.mlistr{width: 14rpx;height: 24rpx;marign-left:16rpx}
-	}
-}
-
-.mnbox{
-	background: #FFFFFF;border-radius: 18rpx;margin-bottom: 24rpx;padding: 40rpx 0 16rpx;
-	.mn_tit{font-size: 32rpx;font-weight: bold;
-color: #161616;padding-left: 68rpx;position: relative;margin-bottom: 12rpx;
-		&::before{width: 6rpx;background: $com-cd3;border-radius: 4rpx;position: absolute;left: 36rpx;top: 4rpx;content: '';bottom: 4rpx;}
-	}
-	.mn_list{display: flex;flex-wrap: wrap;
-		.mlist{width: 25%;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;padding: 26rpx 0;
-			.mlistl{width: 50rpx;height: 50rpx;display: flex;align-items: center;justify-content: center;margin-bottom: 16rpx;
-				.imga{width: 42rpx;height: 44rpx;}
-				.imgb{width: 44rpx;height: 44rpx;}
-				.imgc{width: 44rpx;height: 42rpx;}
-				.imgd{width: 42rpx;height: 44rpx;}
-				.imge{width: 44rpx;height: 42rpx;}
-				.imgf{width: 32rpx;height: 30rpx;}
-				.imgg{width: 44rpx;height: 44rpx;}
-				.imgh{width: 40rpx;height: 44rpx;}
-				.imgk{width: 40rpx;height: 42rpx;}
+		.conts{margin-top: 60rpx;margin-bottom: 24rpx;
+			.clist{width: 164rpx;height: 246rpx;background: #FFFFFF;border-radius: 10rpx;padding: 24rpx;box-sizing: border-box;display: flex;flex-direction: column;
+				image{width: 42rpx;height: 42rpx;flex: 0 0 auto;}
+				.num{font-weight: bold;font-size: 48rpx;color: #222327;flex: 1;display: flex;align-items: center;}
+				.tit{font-weight: 500;font-size: 26rpx;color: #222327;flex: 0 0 auto;
+					text{color: #AAAAAA;}
+				}
+			}
+			
+		}
+		.mbgbox{width: 100%;background: #FFFFFF;border-radius: 10rpx;margin-bottom: 24rpx;padding: 16rpx 0;
+			.mine_list{
+				padding: 28rpx 22rpx;
+				.limg{flex: 0 0 auto;width: 42rpx;height: 42rpx;margin-right: 26rpx;display: flex;align-items: center;justify-content: center;
+					.imga{width: 36rpx;height: 38rpx;}
+					.imgb{width: 38rpx;height: 36rpx;}
+					.imgc{width: 42rpx;height: 42rpx;}
+				}
+				.tit{font-weight: bold;font-size: 30rpx;color: #222327;}
+				.txt{font-weight: 500;font-size: 30rpx;color: #666666;margin-left: 20rpx;flex: 0 0 auto;}
+				.rimg{width: 12rpx;height: 20rpx;margin-left: 20rpx;flex: 0 0 auto;}
 			}
-			.mlistc{flex: 1;font-size: 30rpx;font-weight: 500;color: #666666;}
 		}
 	}
-	
 }
 
+.ztit{font-size: 24rpx;color:#c6c6c9;text-align: center;flex:0 0 auto;margin-bottom: 28rpx;margin-top: 40rpx;}
 
-  .mine-container {
-    width: 100%;
-    height: 100%;
-
-
-    .header-section {
-      padding: 15px 15px 45px 15px;
-      color: white;
-
-      .login-tip {
-        font-size: 18px;
-        margin-left: 10px;
-      }
-
-      .cu-avatar {
-        border: 2px solid #eaeaea;
-
-        .icon {
-          font-size: 40px;
-        }
-      }
-
-      .user-info {
-        margin-left: 15px;
-
-        .u_title {
-          font-size: 18px;
-          line-height: 30px;
-        }
-      }
-    }
-
-    .content-section {
-      position: relative;
-      top: -50px;
-
-      .mine-actions {
-        margin: 15px 15px;
-        padding: 20px 0px;
-        border-radius: 8px;
-        background-color: white;
-
-        .action-item {
-          .icon {
-            font-size: 28px;
-          }
-
-          .text {
-            display: block;
-            font-size: 13px;
-            margin: 8px 0px;
-          }
-        }
-      }
-    }
-  }
 </style>

+ 9 - 10
pages/mine/pwd/index.vue

@@ -1,16 +1,16 @@
 <template>
   <view class="pwd-retrieve-container pwd">
     <uni-forms ref="form" :value="user" >
-      <uni-forms-item name="oldPassword" label="旧密码">
+      <!-- <uni-forms-item name="oldPassword" label="旧密码">
         <uni-easyinput :inputBorder="false" type="password" v-model="user.oldPassword" placeholder="请输入旧密码" />
-      </uni-forms-item>
+      </uni-forms-item> -->
       <uni-forms-item name="newPassword" label="新密码">
-        <uni-easyinput :inputBorder="false" type="password" v-model="user.newPassword" placeholder="请输入新密码" />
+        <uni-easyinput :inputBorder="false" type="password" v-model="user.newPassword" placeholder="请输入您的新密码" />
       </uni-forms-item>
-      <uni-forms-item name="confirmPassword" label="确认密码">
-        <uni-easyinput :inputBorder="false" type="password" v-model="user.confirmPassword" placeholder="请确认新密码" />
+      <uni-forms-item name="confirmPassword" label="再次确认密码">
+        <uni-easyinput :inputBorder="false" type="password" v-model="user.confirmPassword" placeholder="请再次输入您的新密码" />
       </uni-forms-item>
-      <view class="rbtn" @click="submit">提交</view>
+      <view class="rbtn" @click="submit">确认</view>
     </uni-forms>
   </view>
 </template>
@@ -86,10 +86,9 @@
     padding: 10rpx 36rpx;
   }
   .pwd .rbtn{width: 100%;height: 98rpx;background: $com-cd3;border-radius: 49rpx;text-align: center;line-height: 98rpx;font-size: 32rpx;font-weight: bold;color: #FFFEFE;margin-top: 68rpx;}
-  .pwd /deep/ .uni-forms-item{height: 126rpx;background: #FFFFFF;border-radius: 18rpx;margin-top: 30rpx;padding: 0 40rpx;box-sizing: border-box;display: flex;align-items: center;margin-bottom: 0;}
-  .pwd /deep/ .uni-forms-item__label{font-size: 32rpx;font-weight: 500;
-color: #161616;flex: 0 0 auto;width: auto !important;}
-  .pwd /deep/ .uni-easyinput{flex: 1;text-align: right;font-size: 32rpx;color: #161616;}
+  .pwd /deep/ .uni-forms-item{height: 100rpx;background: #FFFFFF;border-radius: 10rpx;margin-top: 24rpx;padding: 0 34rpx;box-sizing: border-box;display: flex;align-items: center;margin-bottom: 0;}
+  .pwd /deep/ .uni-forms-item__label{font-size: 30rpx;font-weight: 500;color: #161616;flex: 0 0 auto;width: auto !important;}
+  .pwd /deep/ .uni-easyinput{flex: 1;text-align: right;font-size: 30rpx;color: #161616;}
   .pwd /deep/ .uni-forms-item__content{display: flex;align-items: center;flex-direction: row;}
   .pwd /deep/ .uni-easyinput__placeholder-class{font-size: 30rpx;}
   .pwd /deep/ .uni-easyinput__content-input{font-size: 30rpx;}

二进制
static/images/mine/habg.png


二进制
static/images/mine/header.png


二进制
static/images/mine/mconta.png


二进制
static/images/mine/mcontb.png


二进制
static/images/mine/mcontc.png


二进制
static/images/mine/mcontd.png


二进制
static/images/mine/minea.png


二进制
static/images/mine/mineb.png


二进制
static/images/mine/minec.png


二进制
static/images/mine/mined.png


二进制
static/images/mine/minee.png


二进制
static/images/mine/minef.png


二进制
static/images/mine/mineg.png


二进制
static/images/mine/mineh.png


二进制
static/images/mine/minei.png


二进制
static/images/mine/rimg.png


二进制
static/images/mine/wrimg.png


二进制
static/images/mine/wrimgs.png


+ 9 - 1
static/style.css

@@ -1,6 +1,6 @@
 .flex{display: flex;}
 .flexc{display: flex;align-items: center;}
-.flex1{flex: 1;}
+.flex1{flex: 1 !important;}
 .flex0{flex: 0 0 auto;}
 .flex01{flex: 0 1 auto;}
 .flexcc{display: flex;align-items: center;justify-content: center;}
@@ -33,6 +33,7 @@ image{display: block;}
 .regbox .rimg image{width: 18rpx;height: 30rpx;}
 .regbox .apllytxt{font-size: 30rpx;font-weight: 500;color: #DF0024;margin-top: 26rpx;color: #AAAAAA;text-align: center;}
 .regbox .apllytxt	text{color: #DF0024;padding-right: 16rpx;font-size: 30rpx;}
+.shax {font-size: 30rpx;color: #666;text-align: center;padding: 20rpx 0;}
 
 .pregbox{padding: 160rpx 56rpx 96rpx;}
 
@@ -44,11 +45,14 @@ image{display: block;}
 .fwn{font-weight: normal;}
 
 /* 新 */
+.wb100{width: 100%;}
 .co34{color: #343434;}
 .co0b{color: #00B034 !important;}
 .co1d{color: #1D64E2;}
 .cof0{color: #ff0000;}
+.coa{color: #aaaaaa !important;}
 
+.mb8{margin-bottom: 16rpx !important;}
 .mb10{margin-bottom: 20rpx !important;}
 .mb14{margin-bottom: 28rpx;}
 .mb16{margin-bottom: 32rpx;}
@@ -57,10 +61,12 @@ image{display: block;}
 .mb22{margin-bottom: 44rpx;}
 .mb25{margin-bottom: 50rpx;}
 .mb27{margin-bottom: 54rpx;}
+.mb32{margin-bottom: 64rpx;}
 .mt2{margin-top: 4rpx;}
 .mt14{margin-top: 28rpx;}
 .mt18{margin-top: 36rpx;}
 .mt22{margin-top: 44rpx;}
+.fmt30{margin-top: -60rpx !important;}
 .ml6{margin-left: 12rpx;}
 .mr10{margin-right: 20rpx;}
 .pl12{padding-left: 24rpx;}
@@ -74,7 +80,9 @@ image{display: block;}
 .flexcw{display: flex;align-items: center;flex-wrap: wrap;}
 .flexcj{display: flex;align-items: center;justify-content: space-between;}
 .flexccc{display: flex;align-items: center;justify-content: center;flex-direction: column;}
+.flexw{display: flex;flex-wrap: wrap;}
 
+.brbtns{height: 80rpx;font-weight: bold;font-size: 30rpx;color: #FFFFFF;background: #1D64E2;border-radius: 40rpx;line-height: 80rpx;text-align: center;margin: 54rpx 24rpx 34rpx;}
 /* 搜索 */
 .search{width: 100%;height: 80rpx;background: #EFEFEF;border-radius: 38rpx;display: flex;align-items: center;justify-content: center;padding: 0 24rpx;margin-bottom: 30rpx;}
 .search image{width: 24rpx;height: 24rpx;margin-right: 26rpx;flex: 0 0 auto;}

+ 4 - 0
store/getters.js

@@ -4,6 +4,10 @@ const getters = {
   name: state => state.user.name,
   roles: state => state.user.roles,
   permissions: state => state.user.permissions,
+  deptId:state=>state.user.deptId,
+  deptName:state=>state.user.deptName,
+  userId:state=>state.user.userId,
+  phonenumber: state => state.user.phonenumber,
   autologin:state => state.user.autologin,
   wgtcode:state => state.user.wgtcode
 }

+ 31 - 2
store/modules/user.js

@@ -13,6 +13,10 @@ const user = {
     avatar: storage.get(constant.avatar),
     roles: storage.get(constant.roles),
     permissions: storage.get(constant.permissions),
+	deptId: storage.get(constant.deptId),
+	userId: storage.get(constant.userId),
+	deptName: storage.get(constant.deptName),
+	phonenumber: storage.get(constant.phonenumber),
 	autologin:storage.get(constant.autologin),
 	wgtcode:storage.get(constant.wgtcode)
   },
@@ -37,6 +41,22 @@ const user = {
       state.permissions = permissions
       storage.set(constant.permissions, permissions)
     },
+	SET_PHONENUMBER: (state, phonenumber) => {
+	  state.phonenumber = phonenumber
+	  storage.set(constant.phonenumber, phonenumber)
+	},
+	SET_DEPID: (state, deptId) => {
+	  state.deptId = deptId
+	  storage.set(constant.deptId, deptId)
+	},
+	SET_DEPTNAME: (state, deptName) => {
+	  state.deptName = deptName
+	  storage.set(constant.deptName, deptName)
+	},
+	SET_USERID: (state, userId) => {
+	  state.userId = userId
+	  storage.set(constant.userId, userId) 
+	},
 	SET_AUTOLOGIN: (state, autologin) => {
 	  state.autologin = autologin
 	  storage.set(constant.autologin, autologin)
@@ -57,10 +77,11 @@ const user = {
       const username = userInfo.username.trim()
       const password = userInfo.password
       const code = userInfo.code
+      const type = userInfo.type
       const uuid = userInfo.uuid
 	  const strfrom = userInfo.strfrom||""
       return new Promise((resolve, reject) => {
-        login(username, password, code, uuid).then(res => {
+        login(username, password, code,type, uuid).then(res => {
           setToken(res.token)
           commit('SET_TOKEN', res.token)
 		  commit('SET_AUTOLOGIN',true)
@@ -100,7 +121,11 @@ const user = {
           const user = res.user
           const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar
           const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
-          if (res.roles && res.roles.length > 0) {
+         const phonenumber = (user == null || user.phonenumber == "" || user.phonenumber == null) ? "" : user.phonenumber
+		  const deptId = (user == null || user.deptId == "" || user.deptId == null) ? "" : user.deptId
+          const userId = (user == null || user.userId == "" || user.userId == null) ? "" : user.userId
+          const deptName = (user == null ||user.dept==null|| user.dept == ""||user.dept.deptName == "" || user.dept.deptName == null) ? "" : user.dept.deptName
+		  if (res.roles && res.roles.length > 0) {
             commit('SET_ROLES', res.roles)
             commit('SET_PERMISSIONS', res.permissions)
           } else {
@@ -108,6 +133,10 @@ const user = {
           }
           commit('SET_NAME', username)
           commit('SET_AVATAR', avatar)
+		  commit('SET_PHONENUMBER', phonenumber)
+		  commit('SET_DEPID', deptId)
+		  commit('SET_USERID', userId)
+		  commit('SET_DEPTNAME', deptName)
           resolve(res)
         }).catch(error => {
           reject(error)

+ 16 - 0
utils/common.js

@@ -37,6 +37,22 @@ export function selectDictValue(datas, value) {
 	})
 	return actions.join('');
 }
+export function selectValue(datas, value) {
+	var actions = [];
+	var idx=0;
+	Object.keys(datas).some((key) => {
+		if (datas[key].value == ('' + value)) {
+			idx=key;
+			actions.push(datas[key].label);
+			return true;
+		}
+	})
+	var newObj={
+		actions:actions.join(''),
+		key:idx
+	}
+	return newObj
+}
 /**
 * 参数处理
 * @param params 参数

+ 4 - 0
utils/constant.js

@@ -3,8 +3,12 @@ const constant = {
    name: 'vuex_name',
    roles: 'vuex_roles',
    permissions: 'vuex_permissions',
+   deptId: 'vuex_deptId',
+   deptName: 'vuex_deptName',
+   userId: 'vuex_userId',
    scorknow: 'vuex_scorknow',
    autologin:'vuex_autologin',
+   phonenumber: 'vuex_phonenumber',
    wgtcode:'vuex_wgtcode',
  }
 

+ 1 - 1
utils/storage.js

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

+ 113 - 59
work/components/case/list.vue

@@ -3,23 +3,26 @@
 	<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.reservatId)">
-				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.proposalId)">
+				<view class="tit overtwo">{{ite.title}}</view>
 				<view class="ftxt">
 					<text>提案类别</text>
-					<view>社会建设类/教育事业</view>
+					<view>{{ite.categoryName}}</view>
 				</view>
 				<view class="ftxt">
 					<text>提交时间</text>
-					<view>2024-02-22 14:12:38</view>
+					<view>{{ite.createTime}}</view>
 				</view>
 				<view class="ftxt">
 					<text>提案状态</text>
-					<view class="co0b">审核中</view>
+					<view class="co0b">{{kaType(ite.proposalProgress)}}</view>
 				</view>
+				<!-- 委员反馈 -->
 				<view class="casebtn flexc">
 					<view class="ftit">办理状态<text>待反馈</text></view>
-					<view class="btn btn2">反馈意见</view>
+					
+					<view class="btn btn1" v-if="ite.satisfaction">已反馈</view>
+					<view class="btn btn2" v-else>反馈意见</view>
 				</view>
 			</view>
 		</block>
@@ -27,28 +30,29 @@
 		<block v-if="type==2">
 			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
 				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
-				<view class="flex">
-					<view class="ftxt w50">
+				<view class="flexw">
+					<view class="ftxt">
 						<text>提案者</text>
 						<view>何潇潇</view>
 					</view>
-					<view class="ftxt w50">
+					<view class="ftxt">
 						<text>案号</text>
 						<view>222</view>
 					</view>
+					<view class="ftxt">
+						<text>提案类别</text>
+						<view>社会建设类/教育事业</view>
+					</view>
+					<view class="ftxt">
+						<text>提交时间</text>
+						<view>2024-02-22 14:12:38</view>
+					</view>
+					<view class="ftxt">
+						<text>联名状态</text>
+						<view class="co0b">办理中</view>
+					</view>
 				</view>
-				<view class="ftxt">
-					<text>提案类别</text>
-					<view>社会建设类/教育事业</view>
-				</view>
-				<view class="ftxt">
-					<text>提交时间</text>
-					<view>2024-02-22 14:12:38</view>
-				</view>
-				<view class="ftxt">
-					<text>联名状态</text>
-					<view class="co0b">办理中</view>
-				</view>
+				
 				<view class="casebtn flexc">
 					<view class="lftit">您的联名提案未反馈</view>
 					<!-- <view class="lftit">您的联名提案已反馈,查看<text class="lfdet">反馈详情</text></view> -->
@@ -62,19 +66,19 @@
 		<block v-if="type==3">
 			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
 				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
-				<view class="flex">
-					<view class="ftxt w50">
+				<view class="flexw">
+					<view class="ftxt">
 						<text>提案者</text>
 						<view>何潇潇</view>
 					</view>
-					<view class="ftxt w50">
+					<view class="ftxt">
 						<text>案号</text>
 						<view>222</view>
 					</view>
-				</view>
-				<view class="ftxt">
-					<text>推荐截止</text>
-					<view>2024-02-22</view>
+					<view class="ftxt">
+						<text>推荐截止</text>
+						<view>2024-02-22</view>
+					</view>
 				</view>
 				<view class="casebtn flexc">
 					<view class="lftit">该提案暂未推荐为优秀</view>
@@ -88,19 +92,19 @@
 		<block v-if="type==4">
 			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
 				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
-				<view class="flex">
-					<view class="ftxt w50">
+				<view class="flexw">
+					<view class="ftxt">
 						<text>提案者</text>
 						<view>何潇潇</view>
 					</view>
-					<view class="ftxt w50">
+					<view class="ftxt">
 						<text>案号</text>
 						<view>222</view>
 					</view>
-				</view>
-				<view class="ftxt">
-					<text>推荐截止</text>
-					<view>2024-02-22</view>
+					<view class="ftxt">
+						<text>推荐截止</text>
+						<view>2024-02-22</view>
+					</view>
 				</view>
 				<view class="casebtn flexc">
 					<view class="lftit">该提案暂未推荐为重点</view>
@@ -114,21 +118,23 @@
 		<block v-if="type==5">
 			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
 				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
-				<view class="ftxt">
-					<text>案号</text>
-					<view>222</view>
-				</view>
-				<view class="ftxt">
-					<text>提案类别</text>
-					<view>社会建设类/教育事业</view>
-				</view>
-				<view class="ftxt">
-					<text>提交时间</text>
-					<view>2024-02-22 14:12:38</view>
-				</view>
-				<view class="ftxt">
-					<text>办理状态</text>
-					<view class="co0b">审核中</view>
+				<view class="flexw">
+					<view class="ftxt">
+						<text>案号</text>
+						<view>222</view>
+					</view>
+					<view class="ftxt">
+						<text>提案类别</text>
+						<view>社会建设类/教育事业</view>
+					</view>
+					<view class="ftxt">
+						<text>提交时间</text>
+						<view>2024-02-22 14:12:38</view>
+					</view>
+					<view class="ftxt">
+						<text>办理状态</text>
+						<view class="co0b">审核中</view>
+					</view>
 				</view>
 			</view>
 		</block>
@@ -136,13 +142,15 @@
 		<block v-if="type==6">
 			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
 				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
-				<view class="ftxt">
-					<text>案号</text>
-					<view>222</view>
-				</view>
-				<view class="ftxt">
-					<text>承办单位</text>
-					<view>市教育局</view>
+				<view class="flexw">
+					<view class="ftxt">
+						<text>案号</text>
+						<view>222</view>
+					</view>
+					<view class="ftxt">
+						<text>承办单位</text>
+						<view>市教育局</view>
+					</view>
 				</view>
 				<view class="casebtn flexc">
 					<view class="lftit">该提案暂未进行质量评议</view>
@@ -152,6 +160,42 @@
 				</view>
 			</view>
 		</block>
+		<!-- 提案审查 -->
+		<block v-if="type==7">
+			<view class="caselist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.reservatId)">
+				<view class="tit overtwo">关于拓展市校合作,助推高质量发展的建议</view>
+				<view class="flexw">
+					<view class="ftxt">
+						<text>提案人</text>
+						<view>刘本吉</view>
+					</view>
+					<view class="ftxt">
+						<text>提案类型</text>
+						<view>大会提案</view>
+					</view>
+					<view class="ftxt">
+						<text>提案类别</text>
+						<view>社会建设类/教育事业</view>
+					</view>
+					<view class="ftxt">
+						<text>提交时间</text>
+						<view>2024-02-22  14:12:38</view>
+					</view>
+					<view class="ftxt">
+						<text>提案状态</text>
+						<!-- <view class="co0b">待审查</view> -->
+						<view>已审查</view>
+					</view>
+				</view>
+				<view class="casebtn flexc">
+					<!-- <view class="lftit">该提案暂未审查立案</view> -->
+					<view class="lftit">该提案已审查立案,查看<text class="lfdet">审查反馈</text></view>
+					<!-- <view class="btn btn1" @click="getTuiFn('zlpy')">不予立案</view>
+					<view class="btn btn2" @click="getTuiFn('zlpy')">立案</view> -->
+					<view class="btn btn3">立案</view>
+				</view>
+			</view>
+		</block>
 		<view class="shax" v-if="wtdt">{{wtdt}}</view>
 	</view>
 	<block v-else>
@@ -161,7 +205,7 @@
 </template>
 
 <script>
-	import { selectDictValue } from '@/utils/common.js';
+	import { selectValue } from '@/utils/common.js';
 	import noData from "@/components/nodata/nodata.vue"
   export default {
 	props:{
@@ -171,6 +215,12 @@
 				return []
 			}
 		},
+		tajdlist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
 		wtdt:{
 			type: String,
 			default () {
@@ -200,6 +250,10 @@
 	onLoad: function() {
 	},
 	methods:{
+		kaType(ite){
+			var aite=selectValue(this.tajdlist, ite);
+			return aite.actions;
+		},
 		getDetail(e){
 			this.$emit('getDetail',e)
 		},
@@ -231,7 +285,7 @@
 <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;
+	.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;}
 	}

+ 111 - 0
work/components/news/list.vue

@@ -0,0 +1,111 @@
+<template>
+  <view>
+	<view v-if="datalist.length>0">
+		<!-- 消息通知 -->
+		<block v-if="type==1">
+			<view class="newslist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite.zxNoticeId)">
+				<view class="newsl">
+					<image :src="ntyaimg" class="imga" v-if="ite.type==0"></image>
+					<image :src="ntybimg" class="imgb" v-if="ite.type==1"></image>
+					<image :src="ntycimg" class="imgc" v-if="ite.type==2"></image>
+					<image :src="ntydimg" class="imgd" v-if="ite.type==3"></image>
+				</view>
+				<view class="newsr">
+					<view class="flexc over mb8">
+						<view class="tit over">{{ite.noticeTitle}}</view>
+						<view class="time">{{ite.createTime}}</view>
+					</view>
+					<view class="overtwo txt">{{ite.noticeContent}}</view>
+				</view>
+			</view>
+		</block>
+		<view class="shax" v-if="wtdt">{{wtdt}}</view>
+	</view>
+	<block v-else>
+		<no-data></no-data>
+	</block>
+  </view>
+</template>
+
+<script>
+	import { selectDictValue } from '@/utils/common.js';
+	import noData from "@/components/nodata/nodata.vue"
+  export default {
+	props:{
+		datalist: {
+			type: Array,
+			default () {
+				return []
+			}
+		},
+		wtdt:{
+			type: String,
+			default () {
+				return ''
+			}
+		},
+		type:{
+			type: [String,Number],
+			default () {
+				return ''
+			}
+		},
+	},
+	components:{
+		noData
+	},
+	data(){
+		return{
+			ntyaimg:require("@/work/static/images/ntya.png"),
+			ntybimg:require("@/work/static/images/ntyb.png"),
+			ntycimg:require("@/work/static/images/ntyc.png"),
+			ntydimg:require("@/work/static/images/ntyd.png"),
+		}
+	},
+	onLoad: function() {
+	},
+	methods:{
+		getDetail(e){
+			this.$emit('getDetail',e)
+		},
+		getTuiFn(txt){
+			var obj={
+				type:txt,
+				id:1,
+			}
+			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>
+.newslist{padding: 0rpx 24rpx;display: flex;align-items: center;
+	.newsl{width: 86rpx;height: 86rpx;margin-right:14rpx;flex: 0 0 auto;display: flex;align-items: center;justify-content: center;background: rgba(29, 100, 226, 0.1);border-radius: 50%;
+		.imga{width: 36rpx;height: 32rpx;}
+		.imgb{width: 30rpx;height: 30rpx;}
+		.imgc{width: 32rpx;height: 32rpx;}
+		.imgd{width: 26rpx;height: 32rpx;}
+	}
+	.newsr{border-bottom: 2rpx solid #C1C1C1;flex:1;overflow: hidden;padding: 36rpx 2rpx 32rpx 8rpx;
+		.tit{font-weight: bold;font-size: 30rpx;color: #222327;flex: 1;}
+		.time{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		.txt{font-weight: 500;font-size: 24rpx;color: #A0A0A0;}
+	}
+}
+
+</style>

+ 83 - 3
work/components/popup/popup.vue

@@ -90,6 +90,81 @@
 							</lsj-upload>
 						</view>
 					</view>
+					<view class="ptb2" v-if="filelist&&filelist.length">
+						<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
+							<view class="flext f15 c6" @click="getDown(ite.path)">
+								<view class="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>
+			<view class="fixedbtn flexcj">
+				<view class="btns btn1" @click="getClose">取消</view>
+				<view class="btns btn2" @click="getyjSubmit">提交</view>
+			</view>
+		</view>
+		<!-- 暂存发布的弹窗 -->
+		<view class="fixedbox" v-if="type=='zcfb'">
+			<view class="ttit">提示</view>
+			<view  class="boxs">
+				<view class="ztit">您有一条暂存通知还未发布</view>
+				<view class="ztit">是否继续编辑?</view>
+				<view class="ztit mb32">查看<text @click="getFaFn('old')">暂存通知</text></view>
+			</view>
+			<view class="fixedbtn flexcj">
+				<view class="btns btn1" @click="getFaFn('new')">重新发布</view>
+				<view class="btns btn2" @click="getFaFn('old')">继续发布</view>
+			</view>
+		</view>
+		<!-- 审查反馈 -->
+		<view class="fixedbox" v-if="type=='scfk'">
+			<view class="ttit">审查反馈</view>
+			<view  class="boxs">
+				<view class="mb16">
+					<view class="ttxt mb18"><text class="cof0">*</text>是否并案</view>
+					<uni-section title="本地数据" type="line">
+					     <uni-data-select
+					       v-model="value"
+					       :localdata="sfrange"
+					       @change="change"
+					     ></uni-data-select>
+					</uni-section>
+				</view>
+				<view class="mb16">
+					<view class="ttxt mb18"><text class="cof0">*</text>答复单位</view>
+					<uni-section title="本地数据" type="line">
+					     <uni-data-select
+					       v-model="value"
+					       :localdata="sfrange"
+					       @change="change"
+					     ></uni-data-select>
+					</uni-section>
+				</view>
+				<view class="mb16">
+					<view class="flexcj mb10">
+						<view class="ttxt">添加附件</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="ptb2" v-if="filelist&&filelist.length">
 						<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
 							<view class="flext f15 c6" @click="getDown(ite.path)">
@@ -109,7 +184,6 @@
 				<view class="btns btn2" @click="getyjSubmit">提交</view>
 			</view>
 		</view>
-		
 		<!-- 语音识别 -->
 		<view class="bgbox bgvoice"  v-if="voiceflag"  @click="getClosevoice"></view>
 		<view class="voice" v-if="voiceflag">
@@ -214,7 +288,7 @@
 				wxFiles: [],
 				// 是否打印日志
 				debug: false,
-				filelist:[{fjName:'关于加强危化品安全监管的建议文档.word',path:"123"}], 
+				filelist:[{name:'关于加强危化品安全监管的建议文档.word',path:"123"}], 
 				fjimg:require("@/work/static/images/fjimg.png"),
 				delimg:require("@/work/static/images/delimg.png"),
 				
@@ -310,7 +384,7 @@
 			onuploadEnd(item) {
 				var newobj={}
 				var responseText=JSON.parse(item.responseText)
-				newobj.fjName=responseText.originalFilename;
+				newobj.name=responseText.originalFilename;
 				newobj.path=responseText.fileName;
 				this.filelist.push(newobj)
 					this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
@@ -455,6 +529,9 @@
 						console.log('endRecognize');
 			
 					},
+			getFaFn(type){
+				this.$emit('getFaFn',type)
+			},
 			getClose(){
 				this.$emit("getClose")
 			},
@@ -508,6 +585,9 @@
 		.ttxt{font-weight: bold;font-size: 30rpx;color: #222327;
 			text{margin-right: 6rpx;}
 		}
+		.ztit{font-weight: 500;font-size: 26rpx;color: #222327;text-align: center;line-height: 56rpx;text-align: center;
+			text{color: #1D64E2;text-decoration: underline;margin: 0 6rpx;}
+		}
 		// 语音按钮
 		.speech{
 			width: 190rpx;height:56rpx;background: linear-gradient(180deg, #4480EB 0%, #1D64E2 100%);border-radius: 28rpx;

+ 1 - 1
work/components/zb-table/components/table-checkbox.vue

@@ -67,7 +67,7 @@
 				if (this.isDisabled) return
 				this.isIndeterminate = false
 				this.isChecked = !this.isChecked
-        console.log('===',this.indeterminate,this.isChecked)
+        // console.log('===',this.indeterminate,this.isChecked)
 				this.$emit('checkboxSelected', {
 					checked: this.isChecked,
 					data: this.cellData

+ 238 - 59
work/pages/case/add.vue

@@ -15,12 +15,12 @@
 							<view>提案者信息</view>
 						</view>
 					</view>
-					<view class="titinf flexcw">
-						<view class="w50 txt">提案者:<text>何潇潇</text></view>
-						<view class="w50 txt">联系方式:<text>13700556785</text></view>
-						<view class="w50 txt">界别:<text>中国共产党</text></view>
-						<view class="w50 txt">党派:<text>中国共产党</text></view>
-						<view class="txt">联系地址:<text>潜山市政协委员会</text></view>
+					<view class="titinf">
+						<view class="txt"><text>提案者:</text>{{datainfo.proposalName}}</view>
+						<view class="txt"><text>联系方式:</text>{{datainfo.proposalPhone}}</view>
+						<view class="txt"><text>界别:</text>{{datainfo.boundary}}</view>
+						<view class="txt"><text>党派:</text>{{datainfo.partyAffiliation}}</view>
+						<view class="txt"><text>联系地址:</text>{{datainfo.contactAddress}}</view>
 					</view>
 					<image :src="infobg" class="infobg"></image>
 				</view>
@@ -33,21 +33,18 @@
 					</view>
 				</view>
 				<view class="pb8">
-					<uni-forms-item label="题目" name="name" required>
-						<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.name" placeholder="请输入标题" />
+					<uni-forms-item label="题目" name="title" required>
+						<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.title" placeholder="请输入标题" />
 						<view class="edtip pa">* 标题前无须加关于,标题后无须加的建议,系统将自动填写</view>
 					</uni-forms-item>
 				</view>
-				
-				
-				<uni-forms-item label="提案类别" name="s" required>
-					<view class="openbox" @click="gettalbFn">请选择提案类别</view>
+				<uni-forms-item label="提案类别" name="categoryName" required>
+					<view class="openbox" :class="datainfo.categoryName?'':'coa'" @click="gettalbFn">{{datainfo.categoryName||"请选择提案类别"}}</view>
 				</uni-forms-item>
-				<uni-forms-item label="提案类型" name="tatype">
+				<uni-forms-item label="提案类型" name="proposalType">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="typeList" />
+						<uni-data-checkbox v-model="datainfo.proposalType" :localdata="typeList" />
 					</view>
-					
 				</uni-forms-item>
 			</view>
 			<view class="boxs pdbox">
@@ -56,9 +53,9 @@
 						<image :src="titimg"></image>
 						<view>提案内容</view>
 					</view>
-					<view class="titr">一键排版</view>
+					<view class="titr" @click="getPaiFn">一键排版</view>
 				</view>
-				<editor id="editor" class="ql-container" placeholder="请输入提案内容" show-img-size show-img-toolbar
+				<editor id="editor" :class="pbFlag?'pbbox':''" class="ql-container" placeholder="请输入提案内容" show-img-size show-img-toolbar
 					show-img-resize @statuschange="onStatusChange" :read-only="readOnly" @ready="onEditorReady">
 				</editor>
 				<view class="edtip flext mb24 mt14"><text>*</text> 提案正文内容原则上不超过2000字,提案正文内容输入完毕后, 可点击右上角的“一键排版”按钮进行快速排版</view>
@@ -90,9 +87,9 @@
 				</view>
 				<view class="ptb12" v-if="filelist&&filelist.length">
 					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
-						<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="flext" @click="getDown(ite.path)">
 							<view class="imgl"><image :src="fjimg" ></image></view>
-							<view class="tit">{{ite.fjName}}</view>
+							<view class="tit">{{ite.name}}</view>
 						</view>
 						<!-- 删除 -->
 						<view class="delimg flex0" @click.stop="getDelFj(idx)">
@@ -108,51 +105,51 @@
 						<view>更多信息</view>
 					</view>
 				</view>
-				<uni-forms-item label="联名提案" name="tatype">
+				<uni-forms-item label="联名提案" name="isJointly">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="sfList" />
+						<uni-data-checkbox v-model="datainfo.isJointly" :localdata="sfList" />
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="联名提案人员" name="s">
-					<view class="openbox" @click="getlmtaFn">请选择联名提案人员</view>
+				<uni-forms-item label="联名提案人员" name="proposalUserList" v-if="datainfo.isJointly==0">
+					<view class="openbox" @click="getlmtaFn" :class="tary?'':'coa'">{{tary||"请选择联名提案人员"}}</view>
 				</uni-forms-item>
-				<uni-forms-item label="同意公开" name="tatype">
+				<uni-forms-item label="同意公开" name="isPublicity">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="sfList" />
+						<uni-data-checkbox v-model="datainfo.isPublicity" :localdata="sfList" />
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="内容公开" name="tatype">
+				<uni-forms-item label="内容公开" name="contentPublicity">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="sfList" />
+						<uni-data-checkbox v-model="datainfo.contentPublicity" :localdata="sfList" />
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="经过调研" name="tatype">
+				<uni-forms-item label="经过调研" name="isSurvey">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="sfList" />
+						<uni-data-checkbox v-model="datainfo.isSurvey" :localdata="sfList" />
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="第一次提出" name="tatype">
+				<uni-forms-item label="第一次提出" name="isFirst">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="sfList" />
+						<uni-data-checkbox v-model="datainfo.isFirst" :localdata="sfList" />
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="由本人撰写" name="tatype">
+				<uni-forms-item label="由本人撰写" name="isPerson">
 					<view class="checkbox">
-						<uni-data-checkbox v-model="datainfo.tatype" :localdata="sfList" />
+						<uni-data-checkbox v-model="datainfo.isPerson" :localdata="sfList" />
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="需要办理的协商方式" name="s">
+				<uni-forms-item label="需要办理的协商方式" name="negotiateType">
 					<view class="matab">
-						<view class="list" :class="checkidx.indexOf(idx)!=-1?'act':''" v-for="(ite,idx) in matterlist" :key='idx' @click="getCheck(idx)">{{ite.tit}}</view>
+						<view class="list" :class="checkidx.indexOf(ite.value)!=-1?'act':''" v-for="(ite,idx) in matterlist" :key='idx' @click="getCheck(ite.value)">{{ite.label}}</view>
 					</view>
 				</uni-forms-item>
-				<uni-forms-item label="建议承办的单位" name="name">
-					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.name" placeholder="请输入单位名称" />
+				<uni-forms-item label="建议承办的单位" name="proposedContractor">
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.proposedContractor" placeholder="请输入单位名称" />
 				</uni-forms-item>
 			</view>
 			<view class="addbtn">
-				<view class="btn btn1">暂存</view>
-				<view class="btn btn2">提交</view>
+				<view class="btn btn1" @click="getZanFnt">暂存</view>
+				<view class="btn btn2" @click="getSubmit">提交</view>
 			</view>
 		</view>
 		</uni-forms>
@@ -163,13 +160,15 @@
 	import config from '@/config'
 	const baseUrl = config.baseUrl
 	import { getToken } from '@/utils/auth'
+	import {getCaseAddFn,getCaseDetailFn,getCaseEditFn} from "@/api/mine/case.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
 		data(){
 			return{
 				//附件
 				  option: {
 				    // 上传服务器地址,需要替换为你的接口地址
-				    // url: baseUrl+'/common/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
+				    url: baseUrl+'/common/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
 				    // 上传附件的key
 				    name: 'file',
 				     // 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
@@ -186,7 +185,7 @@
 				width: '',
 				height: '48rpx',
 				// 限制允许上传的格式,空串=不限制,默认为空
-				formats: 'doc,docx,xls,ppt,txt,pdf,zip,rar,word',
+				formats: 'doc,docx,xls,xlsx,ppt,txt,pdf,zip,rar,word',
 				// 文件上传大小限制
 				size: 100,
 				// 文件数量限制 默认10
@@ -197,8 +196,9 @@
 				wxFiles: [],
 				// 是否打印日志
 				debug: false,
-				filelist:[{fjName:'关于加强危化品安全监管的建议文档.word',path:"123"}], 
+				filelist:[], 
 				
+				pbFlag:false,
 				readOnly:false,
 				fjimg:require("@/work/static/images/fjimg.png"),
 				delimg:require("@/work/static/images/delimg.png"),
@@ -206,32 +206,202 @@
 				titimg:require("@/work/static/images/titbg.png"),
 				infobg:require("@/work/static/images/infobg.png"),
 				datainfo:{
-					tatype:1,
-					name:'',
+					"proposalUserId":this.$store.state.user.userId,//提案人ID
+					// "proposalNumber":"",//提案号
+					"title":"",//标题
+					"proposalName":this.$store.state.user.name,//提案人姓名
+					"proposalPhone":this.$store.state.user.phonenumber,//提案人手机号码
+					"boundary":"20届",//界别
+					"partyAffiliation":"中国共产党",//党派
+					"contactAddress":"潜山市政协委员",//联系地址
+					"categoryId":"",//提案类别id
+					"categoryName":"",//提案类别
+					"proposalType":1,//提案类型(0大会提案 1平时提案)
+					"proposalContent":"",//提案内容
+					"isJointly":1,//联名提案(0是 1否)
+					"isPublicity":0,//同意公开(0是 1否)
+					"contentPublicity":0,//内容公开(0是 1否)
+					"isSurvey":1,//经过调研(0是 1否)
+					"isFirst":1,//第一次提出(0是 1否)
+					"isPerson":1,//由本人撰写(0是 1否)
+					"isRecord":1,//是否立案(0是 1否)
+					"negotiateType":"",//需要办理的协商方式
+					"proposedContractor":"",//建议承办单位
+					// "proposalProgress":" ",//提案进度(0:提交提案,1:提案审查,2:提案立案,3:提案交办,4:办理提案,5:提案反馈,6:办结审核,7:已办结)
+					// "rollingProcess":"",//滚动办理(0是 1否)
+					// "complexType":" ",//提案答复类型(A:A类,B:B类,C:C类)
+					// "isCasesTogether":"",//是否被并案(0是 1否)
+					// "uniteProposalId":"",//被并案的案件id
+					// "satisfaction":"",//委员满意程度(0:不满意,1:一般,2:满意,3:非常满意) 
+					// "membersOpinion":"",//委员意见
+					"proposalUserList":[////提案人员
+						// { "name":"姓名","unit":"职务","type":"地址类型 1:领衔,2:附议"},
+					],
+					"zxFjList":[//提案附件
+						// { "name":"附件名称","url":"附件地址"},
+					],
+					
 				},
-				typeList:[{text: '大会提案',value: 0},{text: '平时提案',value: 1}],
-				sfList:[{text: '是',value: 0},{text: '否',value: 1}],
-				matterlist:[{tit:"电话"},{tit:"面商"},{tit:"座谈"},{tit:"电话"},],
-				checkidx:[0,1]
+				typeList:[{text: '大会提案',value: '0'},{text: '平时提案',value: '1'}],
+				sfList:[{text: '是',value: '0'},{text: '否',value: '1'}],
+				matterlist:[],
+				checkidx:[],
+				editorCtx:'',
+				tary:'',
+				id:"",
+				pagetype:'add',
+				editinfo:'',
 			}
 		},
+		onUnload(){
+			uni.$off('refreshtalb')
+			uni.$off('refreshtary')
+		},
 		onLoad(e) {
-			
+			uni.$on('refreshtalb', (e) => {
+				this.datainfo.categoryName=e.categoryName
+				this.datainfo.categoryId=e.categoryId
+			})
+			uni.$on('refreshtary', (e) => {
+				this.datainfo.proposalUserList=e.proposalUserList;
+				this.tary=e.namelist.join('/')
+			})
+			this.init()
+			if(e.type=='edit'){
+				this.id=e.id;
+				this.pagetype='edit'
+				this.getDetail()
+			}
 		},
 		methods:{
+			init(){
+				getDictionaryFn('negotiation_mode').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.matterlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getDetail(){
+				var that=this;
+				getCaseDetailFn(this.id).then(res=>{
+					if(res.code==200){
+						var data=res.data;
+						this.datainfo=res.data;
+						if(data.zxFjList&&data.zxFjList.length){
+							this.filelist=JSON.parse(JSON.stringify(data.zxFjList))
+						}
+						this.editinfo=data.proposalContent;
+						var taryList=data.proposalUserList;
+						if(taryList&&taryList.length){
+							var newArr=[]
+							taryList.forEach(ite=>{
+								newArr.push(ite.name)
+							})
+							this.tary=newArr.join('/')
+						}
+						that.checkidx=data.negotiateType.split(',')
+						// this.dwdetList=res.data.proposalUnitReplyList;
+					}
+				})
+			},
+			getCheck(id){
+				var idx=this.checkidx.indexOf(id)
+				if(idx!=-1){
+					this.checkidx.splice(idx,1)
+				}else{
+					this.checkidx.push(id)
+				}
+			},
+			getPaiFn(){
+				this.pbFlag=true;
+			},
 			gettalbFn(){
-				this.$tab.navigateTo('/work/pages/case/talbclass')
+				var obj={
+					id:this.datainfo.categoryId,
+					name:this.datainfo.categoryName,
+				}
+				this.$tab.navigateTo('/work/pages/case/talbclass?data='+encodeURIComponent(JSON.stringify(obj)))
 			},
 			getlmtaFn(){
-				this.$tab.navigateTo('/work/pages/case/lmtapeople')
+				var obj={
+					list:this.datainfo.proposalUserList
+				}
+				this.$tab.navigateTo('/work/pages/case/lmtapeople?data='+encodeURIComponent(JSON.stringify(obj)))
+			},
+			// 暂存
+			getZanFnt(){
+				var that=this;
+				that.editorCtx.getContents({
+					success: function(data) { 
+						// proposalContent=data.html;
+						// that.datainfo.zxFjList=JSON.parse(JSON.stringify(that.filelist));
+						var params=that.datainfo;
+						params.proposalContent=data.html;
+						
+						uni.setStorageSync('tjtaList', JSON.parse(JSON.stringify(params)))
+						that.$toast("暂存成功")
+					}  
+				})
+			},
+			getSubmit(){
+				var that=this;
+				if(!this.datainfo.title){
+					this.$toast("请输入标题")
+					return
+				}
+				if(!this.datainfo.categoryName){
+					this.$toast("请选择提案类别")
+					return
+				}
+				if(this.datainfo.isJointly==0&&!this.tary){
+					this.$toast("请选择联名提案人员")
+					return
+				}
+				var proposalContent='';
+				that.editorCtx.getContents({  
+					success: function(data) { 
+						var params=that.datainfo;
+						params.proposalContent=data.html;
+						if(that.checkidx&&that.checkidx.length>0){
+							params.negotiateType=that.checkidx.join(',')
+						}
+						if(that.pagetype=='add'){
+							getCaseAddFn(params).then(res=>{
+								if(res.code==200){
+									that.$toast("提交成功")
+								}
+							})
+						}else{
+							getCaseEditFn(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.fjName=responseText.originalFilename;
+				newobj.name=responseText.originalFilename;
 				newobj.path=responseText.fileName;
 				this.filelist.push(newobj)
-					this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+				this.datainfo.zxFjList=JSON.parse(JSON.stringify(this.filelist))
 			},
 			getDelFj(idx){
 				var that=this;
@@ -243,7 +413,7 @@
 					success: function(res) {
 						if (res.confirm) {
 							that.filelist.splice(idx,1)
-							that.datainfo.zsyzFjList=JSON.parse(JSON.stringify(that.filelist))
+							that.datainfo.zxFjList=JSON.parse(JSON.stringify(that.filelist))
 						} else if (res.cancel) {
 						}
 					}
@@ -274,7 +444,13 @@
 				
 			},
 			onEditorReady(){
-				
+				var that=this;
+				uni.createSelectorQuery().select('#editor').context(function(res) {
+					that.editorCtx = res.context;
+					that.editorCtx.setContents({
+						html:that.editinfo
+					})
+				}).exec();
 			}
 		}
 	}
@@ -308,14 +484,16 @@
 			}
 			.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{
-			.txt{font-weight: 500;font-size: 28rpx;color: #9F9F9F;margin-bottom: 18rpx;
-				text{color: #222327;}
+		.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: #AAAAAA;}
+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;}
@@ -347,4 +525,5 @@ font-size: 30rpx;height: 100%;color: #AAAAAA;}
 			&.btn2{background: #1D64E2;color: #ffffff;}
 		}
 	}
+.addbox /deep/ .pbbox .ql-editor  p{text-indent: 2rem;}
 </style>

+ 355 - 14
work/pages/case/details.vue

@@ -1,38 +1,379 @@
 <template>
-	<view>
+	<view class="detail">
 		<view class="navbox">
-			<!-- <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 class="dtabs">
+				<view class="tab" :class="datainfo.proposalProgress==ite.value?'act':''" v-for="(ite,idx) in stepList" :key="idx">
+					<view class="cir"></view>
+					<view class="tit">{{ite.label}}</view>
+				</view>
+			</view>
+		</view>
+		<!-- 主体 -->
+		<view class="deboxs">
+			<view class="bghbox"></view>
+			<view class="dbox fmt30">
+				<!-- <text>【市政协十五届一 次会议第301号提案】</text> -->
+				<view class="dtit">关于{{datainfo.titile}}</view>
+				<!-- <view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>提案者信息</view>
+					</view>
+				</view> -->
+				<view class="titinf">
+					<view class="txt"><text>提案者</text>{{datainfo.proposalName}}</view>
+					<view class="txt"><text>界别</text>{{datainfo.boundary}}</view>
+					<view class="txt"><text>党派</text>{{datainfo.partyAffiliation}}</view>
+					<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>{{datainfo.contactAddress}}{{datainfo.unit}}</view>
+				</view>
+				<view class="titinf " :class="zheList[0].zheflag?'nact':'act'">
+					<view class="bortop"></view>
+					<view class="txt"><text>联名提案</text>{{datainfo.isJointly==0?'是':'否'}}</view>
+					<view class="txt"><text>经过调研</text>{{datainfo.isSurvey==0?'是':'否'}}</view>
+					<view class="txt"><text>第一次提出</text>{{datainfo.isFirst==0?'是':'否'}}</view>
+					<view class="txt"><text>本人撰写</text>{{datainfo.isPerson==0?'是':'否'}}</view>
+					<view class="txt"> <text>需要办理的协商方式</text>{{kaType(datainfo.negotiateType)}}</view>
+					<view class="txt"><text>建议承办的单位</text>{{datainfo.proposedContractor}}</view>
+				</view>
+				<!-- 折叠 -->
+				<view class="zhebox" :class="zheList[0].zheflag?'':'act'" @click="getZheFn(0)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[0].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+			</view>
+			<view class="dbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>提案内容</view>
+					</view>
+				</view>
+				<view class="txtbox" :class="zheList[1].zheflag?'nact':'act'">
+					<rich-text :nodes="datainfo.proposalContent"></rich-text>
+				</view>
+				<!-- 折叠 -->
+				<view class="zhebox" :class="zheList[1].zheflag?'':'act'" @click="getZheFn(1)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[1].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+				<view class="bortop"></view>
+				<view class="ftit mb14">附件信息</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.path)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+			<!-- 提案立案以下隐藏 -->
+			<view class="dbox">
+				<view class="titbox mb16">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>办理情况</view>
 					</view>
 				</view>
-			</view> -->
+				<view>
+					<view class="dbtabs flexc mb20">
+						<view class="dbtab" :class="ite.val==dwVal?'act':''" v-for="(ite,idx) in dwList" :key="idx" @click="getDwFn(ite.val)">{{ite.tit}}</view>
+					</view>
+					<view class="titinf">
+						<view class="txt wb100"><text>主办单位</text>市公安局</view>
+						<view class="txt"><text>办理方式</text>网络</view>
+						<view class="txt"><text>办理程度</text>{{typeFormat(datainfo.complexType,dflxList)}}</view>
+						<view class="txt"><text>签收时间</text>2024-01-03 17:56</view>
+						<view class="txt"> <text>办结时间</text>2024-01-03 18:31</view>
+						<view class="txt" :class="zheList[2].zheflag?'nact':'act'"><text>答复内容</text>
+							<view>我市作为全省重要的化工城市,化工企业主要集中在大观区和高新区。2018年,安庆石化将投入大量资金建设化工项目,城区危化品安全管理难度进一步加大,而万华油品“4.2”事故已经暴露出城区危化品安全监管基层基础力量薄弱,缺乏专业化监管队伍、无危化品物流园等问题。</view>
+						</view>
+					</view>
+				</view>
+				<!-- 折叠 -->
+				<view class="zhebox" :class="zheList[2].zheflag?'':'act'" @click="getZheFn(2)">
+					<image :src="upsimg"></image>
+					<view>{{zheList[2].zheflag?'展开信息':'折叠信息'}}</view>
+				</view>
+				<view class="bortop"></view>
+				<view class="ftit mb14">答复函</view>
+				<view class="fjlists flext"  v-for="(ite,idx) in filelist" :key='idx' @click="getDown(ite.path)">
+					<view class="imgl"><image :src="fjimg" ></image></view>
+					<view class="tit">{{ite.name}}</view>
+					<view class="fjlook">查看</view>
+				</view>
+			</view>
+			<view class="dbox">
+				<view class="titbox mb16">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>反馈情况</view>
+					</view>
+				</view>
+				<view class="titinf">
+					<view class="txt wb100" style="align-items: center;"><text class="w65">对办理情况是否满意</text>{{typeFormat(datainfo.satisfaction,mycdlist)}}</view>
+					<view class="txt"><text class="w65">有何进一步意见和建议</text>
+						{{datainfo.membersOpinion}}
+					</view>
+				</view>
+			</view>
+			<view class="fbtns">
+				<view class="btn btn1" @click="getDelFn">删除</view>
+				<view class="btn btn1" @click="getEditFn">修改提案</view>
+				<view class="btn btn2" @click="getScfkFn">审查反馈</view>
+			</view>
+			
 		</view>
+		<pop-up :type='ptype' @getClose="getClose"></pop-up>
 	</view>
 </template>
 
 <script>
+	import popUp from "@/work/components/popup/popup.vue"
+	import { selectValue } from '@/utils/common.js';
+	import {getCaseDetailFn,getCasDelFn} from "@/api/mine/case.js"
+	import {getDictionaryFn} from "@/api/mine/register.js"
 	export default{
+		components:{popUp},
 		data(){
 			return{
 				bgimg:require("@/static/images/bg.png"),
+				fjimg:require("@/work/static/images/fjimg.png"),
+				filelist:[], 
+				stepList:[],
+				tabidx:5,
+				titimg:require("@/work/static/images/titbg.png"),
+				upsimg:require("@/work/static/images/ups.png"),
+				zheList:[{val:0,zheflag:true,moreflag:true},{val:0,zheflag:true,moreflag:true},{val:0,zheflag:true,moreflag:true},{val:0,zheflag:true,moreflag:true},],
+				dwList:[{tit:'主办单位',val:0},{tit:'协办单位',val:1}],
+				dwdetList:[],
+				dwVal:0,
+				ptype:'',
+				datainfo:{},
+				matterList:[],
+				mycdlist:[],
+				dflxList:[],
 			}
 		},
+		onUnload(){
+			uni.$off('refreshdetail')
+		},
 		onLoad(e) {
-			
+			this.id=e.id;
+			this.getDetail()
+			this.init()
+			uni.$on('refreshdetail', (e) => {
+				this.getDetail()
+			})
 		},
 		methods:{
-			
+			kaType(ite){
+				if(ite){
+					var newArr=ite.split(',')
+					var actions=[];
+					var datas=this.matterList;
+					newArr.forEach(ite=>{
+						Object.keys(datas).some((key) => {
+							if (datas[key].value == ('' + ite)) {
+								actions.push(datas[key].label);
+								return true;
+							}
+						})
+					})
+					return actions.join(' ')
+				}
+			},
+			typeFormat(ite,list){
+				var aite=selectValue(list, ite);
+				return aite.actions;
+			},
+			init(){
+				//提案状态
+				getDictionaryFn('proposal_progress').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.stepList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value:v.dictValue
+							}
+						})
+					}
+				})
+				// 答复类型
+				getDictionaryFn('proposal_complex_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.dflxList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 协商方式
+				getDictionaryFn('negotiation_mode').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.matterList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+				// 满意程度
+				getDictionaryFn('member_satisfaction').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.mycdlist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			getEditFn(){
+				this.$tab.navigateTo('/work/pages/case/add?type=edit&id='+this.id)
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getScfkFn(){
+				this.ptype="scfk"
+			},
+			getZheFn(idx){
+				this.zheList[idx].zheflag=!this.zheList[idx].zheflag
+			},
+			getDwFn(idx){
+				this.dwVal=idx
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该提案",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							getCasDelFn(this.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功')
+									uni.$emit("refreshlist")
+									setTimeout(function(){
+										uni.navigateBack({
+											delta: 1 //返回层数,2则上上页
+										});
+									},1200)
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getDetail(){
+				getCaseDetailFn(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;
+					}
+				})
+			},
 		}
 	}
 </script>
 
 <style scoped lang="scss">
-.navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4;background-color: $com-cd3;}	
+.detail{display: flex;flex-direction: column;height: 100vh;}
+.navbox{background-color: $com-cd3;flex:0 0 auto;
+	.dtabs{display: flex;padding: 40rpx 24rpx;
+		.tab{position: relative;display: flex;flex-direction: column;align-items: center;flex: 1;
+			&::after{content: '';height: 2rpx;width: 50%;background: #86B2FF;left: 50%;top: 10rpx;position: absolute;transform: translateX(50%);}
+			&:last-child{
+				&::after{display: none;}
+			}
+			&.act{
+				.cir{background: #FFFFFF;}
+				.tit{color: #FFFFFF;}
+			}
+			.cir{width: 20rpx;height: 20rpx;background: #86B2FF;border-radius: 50%;margin-bottom: 24rpx;}
+			.tit{font-weight: bold;font-size: 24rpx;color: #86B2FF;width: 100%;text-align: center;padding: 0 8rpx;}
+		}
+	}
+}
+.deboxs{flex:1;overflow: auto;padding-bottom: 30rpx;
+	.bghbox{height: 60rpx;background-color: $com-cd3;}
+	.dbox{background: #FFFFFF;border-radius: 10rpx;margin: 0 24rpx 24rpx;padding: 36rpx 24rpx 24rpx;
+		.dtit{font-weight: bold;font-size: 15px;color: #222327;margin-bottom: 48rpx;
+			text{color: #E70000;}
+		}
+		.titbox{
+			.tit{
+				image{width: 32rpx;height: 18rpx;margin-right: 10rpx;}
+				view{font-weight: bold;font-size: 32rpx;color: #222327;}
+			}
+		}
+		.titinf{display: flex;flex-wrap: wrap;
+			&.nact{height: 0;overflow: hidden;}
+			&.act{height: auto;}
+			.txt{font-weight: 500;font-size: 26rpx;margin-bottom: 20rpx;color: #222327;display: flex;align-items: flex-start;flex:0 1 auto;min-width: 50%;
+				&.nact{height: 200rpx;overflow: hidden;}
+				&.act{height: auto;}
+				text{color: #AAAAAA;min-width: 104rpx;text-align-last: justify;flex: 0 0 auto;margin-right: 20rpx;
+					&.w65{width: 130rpx;}
+				}
+				view{text-indent: 2rem;}
+			}
+		}
+		.txtbox{text-indent: 2rem;line-height: 36rpx;font-weight: 500;font-size: 26rpx;color: #222327;
+			&.nact{max-height: 432rpx;overflow: hidden;}
+			&.act{height: auto;}
+		}
+		// tab
+		.dbtabs{
+			.dbtab{font-weight: 500;font-size: 26rpx;height: 60rpx;line-height: 60rpx;color: #666666;position: relative;padding: 0 38rpx;margin-left: 8rpx;
+			&.act{font-weight: bold;font-size: 30rpx;color: #222327;
+				&::after{content: "";width: 48rpx;height: 4rpx;background: #3699FF;border-radius: 2rpx;position: absolute;left: 50%;margin-left: -24rpx;bottom: -4rpx;}
+			}
+			}
+		}
+		
+		
+		.bortop{border-top: 2rpx dashed #C1C1C1;margin-bottom: 32rpx;margin-top: 14rpx;width: 100%;}
+		.ftit{font-weight: bold;font-size: 26rpx;color: #222327;}
+		.zhebox{display: flex;align-items: center;flex-direction: column;padding: 24rpx 0;
+			image{width: 28rpx;height: 30rpx;margin-bottom: 10rpx;transition: all 0.3s;}
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+			view{font-weight: 500;font-size: 24rpx;color: #AAAAAA;}
+		}
+		// 附件
+		.fjlists {display: flex;align-items: flex-start;justify-content: space-between;margin-bottom: 12rpx;
+			// image{margin-right: 18rpx;flex: 0 0 auto;}
+			.imgl{width: 40rpx;height: 40rpx;display: flex;align-items: center;justify-content: center;margin-right: 6rpx;flex: 0 0 auto;
+				image{width: 26rpx;height: 24rpx;}
+				}
+			.tit{font-size: 26rpx;color: #343434;font-weight: 500;margin-top: 4rpx;flex:1;}
+			.fjlook{font-weight: 500;font-size: 26rpx;color: #1D64E2;flex: 0 0 auto;margin-left: 20rpx;margin-top: 4rpx;}
+		}
+	}
+	
+}
+// 按钮
+	.fbtns{display: flex;align-items: center;justify-content: space-between;padding: 54rpx 12rpx 34rpx;
+		.btn{height: 80rpx;font-weight: bold;font-size: 30rpx;box-sizing: border-box;border-radius: 40rpx;display: flex;align-items: center;
+		justify-content: center;margin:0 12rpx;flex:1;
+			&.btn1{border: 2rpx solid #1D64E2;background: #ffffff;color: #1D64E2;}
+			&.btn2{background: #1D64E2;color: #ffffff;}
+		}
+	}
 </style>

+ 62 - 29
work/pages/case/lmtapeople.vue

@@ -14,6 +14,7 @@
 				  :stripe="false"
 				 
 				  :fit="false"
+				  :checkList="checkList"
 				  @rowClick="rowClick"
 				  @toggleRowSelection="toggleRowSelection"
 				  @toggleAllSelection="toggleAllSelection"
@@ -36,28 +37,25 @@
 				<view class="tab_list">
 					<view v-for="(ite,idx) in checkList" :key="idx" class="tablist">
 						<view class="w60 tr">{{ite.name}}</view>
-						<view class="tr" style="flex: 1;">{{ite.zw}}</view>
-						<view class="tr w70" @click="getLxFn(idx)" >
-							<uni-data-checkbox v-model="tatype" :localdata="sfList" />
+						<view class="tr" style="flex: 1;">{{ite.unit}}</view>
+						<view class="tr w70" @click="getLxFn(ite)" >
+							<uni-data-checkbox v-model="ite.type" :localdata="sfList" />
 							<!-- <image :src="checkimg" class="staimg" v-if="ite.lx"></image>
 							<image :src="ncheckimg" class="staimg" v-else></image> -->
 						</view>
-						<!-- <view class="w50 tr" @click="getFyFn(idx)">
-							<image :src="checkimg" class="staimg" v-if="ite.fy"></image>
-							<image :src="ncheckimg" class="staimg" v-else></image>
-						</view> -->
-						<view class="w50 tr" @click="getDelFn(idx)">
+						<view class="w50 tr" @click="getDelFn(ite,idx)">
 							<image :src="delimg" class="staimg"></image>
 						</view>
 					</view>
 				</view>
 			</view>	
-			<view class="btns">确定</view>
+			<view class="btns" @click="getSure">确定</view>
 		</view>
 	</view>
 </template>
 
 <script>
+	import {getInfoListFn} from "@/api/mine/case.js"
 	import zbTable from "@/work/components/zb-table/zb-tables.vue"
 	export default {
 		components:{zbTable},
@@ -69,42 +67,77 @@
 				delimg: require("@/work/static/images/del.png"),
 				searchVal: '',
 				border: false,
-				sfList:[{text: '领衔',value: 0},{text: '附议',value: 1}],
+				sfList:[{text: '领衔',value: '1'},{text: '附议',value: '2'}],
 				tatype:'',
 				columns: [
 				    { type:'selection', width:120,align:'center',},
 				    { name: 'name', label: '姓名',width:130,align:'center', },
-				    { name: 'zw', label: '职务',align:'center'},
+				    { name: 'unit', label: '职务',align:'center'},
 				],
-				tableData:[{name:'刘丽娟',zw:"潜山市政协委员"},{name:'刘丽娟',zw:"潜山市政协委员"},{name:'刘本吉',zw:"潜山市政协委员"},{name:'王晓宇',zw:"潜山市政协委员"},{name:'李球球',zw:"潜山市政协委员"},
-				{name:'李世莲',zw:"潜山市政协委员"},{name:'严猛',zw:"潜山市政协委员"},{name:'周安',zw:"潜山市政协委员"},{name:'郑小希',zw:"潜山市政协委员"},],
-				checkList:[
-					{name:'刘丽娟',zw:"潜山市政协委员",lx:false,fy:false},{name:'刘丽娟',zw:"潜山市政协委员",lx:false,fy:false},{name:'刘本吉',zw:"潜山市政协委员",lx:false,fy:false},{name:'王晓宇',zw:"潜山市政协委员",lx:false,fy:false},
-					{name:'李世莲',zw:"潜山市政协委员",lx:false,fy:false},{name:'严猛',zw:"潜山市政协委员",lx:false,fy:false},
-				]
-			}
+				tableData:[],
+				checkList:[],
+				selectList:[]
+			} 
 		},
 		onLoad(e) {
-
+			this.init()
+			if(e.data){
+				var newobj=JSON.parse(decodeURIComponent(e.data));
+				this.checkList=newobj.list;
+			}
 		},
 		methods: {
-			getLxFn(idx){
-				this.checkList[idx].lx=!this.checkList[idx].lx
+			getLxFn(ite){
+				var indexNum = (this.tableData || []).findIndex((item) => item.userId === ite.userId);
+				this.tableData[indexNum].type=ite.type
 			},
-			getFyFn(idx){
-				this.checkList[idx].fy=!this.checkList[idx].fy
-			},
-			getDelFn(){
-				
+			getDelFn(ite,idx){
+				this.checkList.splice(idx,1);
+				// var indexNum = (this.tableData || []).findIndex((item) => item.userId === ite.userId);
+				// console.log(indexNum)
+				// this.tableData[indexNum].checked=false;
 			},
 			toggleRowSelection(e,data){
-				console.log(23,e,data)
+				this.checkList=JSON.parse(JSON.stringify(data))
 			},
 			toggleAllSelection(e){
-				
 			},
-			selectionChange(){
+			init(){
+				getInfoListFn().then(res=>{
+					if(res.code==200){
+						this.tableData=res.rows;
+						var newArr=this.checkList;
+						if(newArr&&newArr.length){
+							newArr.forEach(ite=>{
+								var indexNum = (this.tableData || []).findIndex((item) => item.userId === ite.userId);
+								this.tableData[indexNum].checked=true
+								this.tableData[indexNum].type=ite.type
+							})
+						}
+						
+					}
+				})
+			},
+			getSure(){
+				var list=this.checkList;
+				var newArr = [];
+				var a='';
+				for(var i=0;i<list.length;i++){
+					if (!list[i].type) {
+						this.$toast("请选择"+list[i].name+"领衔/附议")
+						return
+					}
+					newArr.push(list[i].name)
+				}
 				
+				var obj={
+					proposalUserList:this.checkList,
+					namelist:newArr
+				}
+				uni.$emit("refreshtary",obj)
+				uni.navigateBack({
+					delta: 1 //返回层数,2则上上页
+				});
 			}
 		}
 	}

+ 32 - 8
work/pages/case/mine.vue

@@ -21,7 +21,7 @@
 				</view>
 			</view>
 			<view class="tablists flexc mb20">
-				<view v-for="(ite,idx) in tabList" @click="getTabFn(idx)" :class="{act:tabidx==idx}" :key="idx">{{ite.tit}}</view>
+				<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">
@@ -38,7 +38,7 @@
 		</view>
 		<!-- 列表 -->
 		<view class="mbox">
-			<case-list :datalist="list" :wtdt="wtdt" :type='tabidx' @getDetail="getDetail" @getTuiFn="getTuiFn"></case-list>
+			<case-list :datalist="list" :wtdt="wtdt" :tajdlist='tajdlist' :type='tabidx' @getDetail="getDetail" @getTuiFn="getTuiFn"></case-list>
 		</view>
 		<view class="fwbtns">提交提案</view>
 		
@@ -48,8 +48,10 @@
 </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(){
@@ -60,8 +62,8 @@
 				backimg:require("@/work/static/images/back.png"),
 				upimg:require("@/work/static/images/up.png"),
 				backgroundColor:"#1D64E2",
-				tabidx:2,
-				tabList:[{tit:'征集通知',val:0},{tit:'我的提案',val:1},{tit:'联名提案',val:2},{tit:'推荐优秀',val:3},
+				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},
@@ -74,20 +76,42 @@
 					talb:'',
 				},
 				ptype:'',//弹窗类型
-				list:[{tit:'关于拓展市校合作,助推高质量发展的建议'},{tit:'关于拓展市校合作,助推高质量发展的建议'}],
+				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);
@@ -117,7 +141,7 @@
 				this.ptype=ite.type
 			},
 			getDetail(data){
-				this.$tab.navigateTo('/work/pages/case/details')	
+				this.$tab.navigateTo('/work/pages/case/details?id='+data)	
 			},
 			getDataFn(){
 				var params={
@@ -125,7 +149,7 @@
 					pageNum: this.pageNum,
 					// visitType:3
 				}
-				getReservatList(params).then(res=>{
+				getCaseListFn(params).then(res=>{
 					if(res.code==200){
 						if (res.rows.length < this.pageSize) {
 							this.reachflag = false
@@ -174,7 +198,7 @@
 		}
 	}
 	.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;}
+		.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;}

+ 37 - 16
work/pages/case/talbclass.vue

@@ -5,7 +5,7 @@
 			<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.id">
-					{{item.catename}}
+					{{item.label}}
 				</view>
 			</scroll-view>
 		</view>
@@ -14,39 +14,40 @@
 			<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.id" class="cate-right-item">
-					<view class="cate-title">{{item.catename}}</view>
+					<view class="cate-title">{{item.label}}</view>
 					<view class="cate-right-txt">
-						<text v-for="(el,index) in item.product" :class="{act:ricurrent==index}" :key="el.id">{{el.title}}</text>
+						<text v-for="(el,index) in item.children" @click="getTabFn(el)" :class="{act:ricurrent==el.id}" :key="el.id">{{el.label}}</text>
 					</view>
 				</view>
 				<view style="height: 30rpx;"></view>
 			</scroll-view>
 		</view>
-		<view class="fwbtns">提交提案</view>
+		<view class="fwbtns" @click="getSure">确定</view>
 	</view>
 </template>
 
 <script>
+	import {getCasetalbFn} from "@/api/mine/case.js"
 	export default {
 		data() {
 			return {
-				cateList: [
-					{catename: '经济建设类',id: '0',product: [{title: "交通",id: '23'}, {title: "城市管理",id: '24'}, {title: "经济发展",id: '25'},{title: "财税金融",id: '23'}, {title: "农林水利",id: '24'}, {title: "工业商贸",id: '25'},{title: "城乡建设",id: '24'}, {title: "科学技术",id: '25'}, ]},
-					{catename: '政治建设类',id: '1',product: [{title: "交通",id: '23'}, {title: "城市管理",id: '24'}, {title: "经济发展",id: '25'}, ]},
-					{catename: '文化建设类',id: '2',product: [{title: "交通",id: '23'}, {title: "城市管理",id: '24'}, {title: "经济发展",id: '25'}, ]},
-					{catename: '社会建设类',id: '3',product: [{title: "交通",id: '23'}, {title: "城市管理",id: '24'}, {title: "经济发展",id: '25'}, ]},
-					{catename: '生态文明建设类',id: '4',product: [{title: "交通",id: '23'}, {title: "城市管理",id: '24'}, {title: "经济发展",id: '25'}, ]},
-					],
+				cateList: [],
 				current: 0, //当前点击项
 				rectInfoList: [],
 				tempCurrent: 0,
-				ricurrent:1,
+				ricurrent:'',
+				categoryName:'',//选择的名字
 				scrollTop: 0, //左侧导航栏距离顶部的位置
 				riscrollTop:0,//右侧导航栏距离顶部的位置
 			}
 		},
 		onLoad(e) {
-
+			if(e.data){
+				var newobj=JSON.parse(decodeURIComponent(e.data));
+				this.ricurrent=newobj.id;
+				this.categoryName=newobj.name
+			}
+			this.getCasetalbFn()
 		},
 		mounted() {
 			setTimeout(() => {
@@ -54,13 +55,34 @@
 			}, 200)
 		},
 		methods: {
+			getCasetalbFn(){
+				getCasetalbFn().then(res=>{
+					if(res.code==200){
+						this.cateList=res.data;
+					}
+				})
+			},
 			menuTab(index){
-				console.log(this.rectInfoList)
 				var top=this.rectInfoList[index].top;
-				console.log(top)
 				this.current = index;
 				this.riscrollTop = top;
 			},
+			getTabFn(ite){
+				this.ricurrent=ite.id;
+				this.categoryName=ite.label
+			},
+			getSure(){
+				// 带数据返回
+				var obj={
+					categoryName:this.categoryName,
+					categoryId:this.ricurrent,
+				}
+				uni.$emit("refreshtalb",obj)
+				uni.navigateBack({
+					delta: 1 //返回层数,2则上上页
+				});
+				
+			},
 			// 获取与顶部之间的距离
 			getRectInfo() {
 				var top = 0;
@@ -82,7 +104,6 @@
 						// console.log(top, bottom);
 					}).exec();
 				}
-				console.log(this.rectInfoList);
 			},
 			getCurrentHeight(e) {
 				var currentHeight = e.detail.scrollTop;

+ 361 - 0
work/pages/news/add.vue

@@ -0,0 +1,361 @@
+<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="noticeTitle" required>
+					<uni-easyinput :inputBorder="false" type="text" v-model="datainfo.noticeTitle" placeholder="请输入标题" />
+				</uni-forms-item>
+				<uni-forms-item label="通知类别" name="noticeType" required>
+					<view class="lbtabp">
+						<picker  range-key='label' :value="tzlbidx" :range="tzlbList"  @change='bindDateChangea'>
+							<view v-if="datainfo.noticeType&&!tzlblabe">{{statusFormat(datainfo.noticeType)}}</view>
+							<view v-else :class="tzlblabe?'':'coa'">{{tzlblabe||"请选择通知类别"}}</view>
+						</picker>
+					</view>
+				</uni-forms-item>
+				<uni-forms-item label="发布人" name="issuer" required>
+					<uni-easyinput  disabled :inputBorder="false" type="text" v-model="datainfo.issuer" placeholder="请输入发布人" />
+				</uni-forms-item>
+				<uni-forms-item label="发布单位" name="issuerDept" required>
+					<uni-easyinput disabled :inputBorder="false" type="text" v-model="datainfo.issuerDept" placeholder="请输入发布单位" />
+				</uni-forms-item>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14 flexc">
+					<view class="tit flexc flex1">
+						<image :src="titimg"></image>
+						<view>通知内容</view>
+					</view>
+					<view class="titr" @click="getPaiFn">一键排版</view>
+				</view>
+				<editor id="editor" :class="pbFlag?'pbbox':''" class="ql-container" placeholder="请输入通知内容" show-img-size show-img-toolbar
+					show-img-resize @statuschange="onStatusChange" :read-only="readOnly" @ready="onEditorReady">
+				</editor>
+				<view class="edtip flext mb24 mt14"><text>*</text>通知正文内容输入完毕后,可点击右上角的“一键排版”按钮进行快 速排版</view>
+			</view>
+			<view class="boxs pdbox">
+				<view class="titbox mb14">
+					<view class="tit flexc">
+						<image :src="titimg"></image>
+						<view>附件内容</view>
+					</view>
+				</view>
+				<view class="flexcj mb10">
+					<view class="fw f15 co34">添加附件</view>
+					<view class="fjadd"><lsj-upload
+						    ref="lsjUpload"
+						    childId="upload1"
+						    :width="width"
+						    :height="height"
+						    :option="option"
+						    :size="size"
+						    :formats="formats"
+						    :debug="debug"
+						    :instantly="instantly"
+						    @progress=""
+							@uploadEnd="onuploadEnd" >
+						        <view class="btn" :style="{width: width,height: height}">上传附件</view>
+						</lsj-upload>
+					</view>
+				</view>
+				<view class="ptb12" v-if="filelist&&filelist.length">
+					<view class="fjlists"  v-for="(ite,idx) in filelist" :key='idx'>
+						<view class="flext" @click="getDown(ite.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>
+	</view>
+</template>
+
+<script>
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import {getNoticeAdd,getNoticeDetail} from "@/api/mine/news.js"
+	import { selectValue } from '@/utils/common.js';
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	export default{
+		data(){
+			return{
+				//附件
+				  option: {
+				    // 上传服务器地址,需要替换为你的接口地址
+				    url: baseUrl+'/common/upload', // 该地址非真实路径,需替换为你项目自己的接口地址
+				    // 上传附件的key
+				    name: 'file',
+				     // 根据你接口需求自定义请求头,默认不要写content-type,让浏览器自适配
+				    header: {
+				        // 示例参数可删除
+				        'Authorization':  'Bearer ' + getToken(),
+				    },
+				    // 根据你接口需求自定义body参数
+				    formData: {}
+				},
+				// 选择文件后是否立即自动上传,true=选择后立即上传
+				instantly: true,
+				// 必传宽高且宽高应与slot宽高保持一致
+				width: '',
+				height: '48rpx',
+				// 限制允许上传的格式,空串=不限制,默认为空
+				formats: 'doc,docx,xls,xlsx,ppt,txt,pdf,zip,rar,word',
+				// 文件上传大小限制
+				size: 100,
+				// 文件数量限制 默认10
+				count: 5,
+				// 文件回显列表
+				files: new Map(),
+				// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+				wxFiles: [],
+				// 是否打印日志
+				debug: false,
+				filelist:[], 
+				
+				pbFlag:false,
+				readOnly:false,
+				editorCtx:'',
+				fjimg:require("@/work/static/images/fjimg.png"),
+				delimg:require("@/work/static/images/delimg.png"),
+				titimg:require("@/work/static/images/titbg.png"),
+				datainfo:{
+					noticeTitle:'',
+					issuer:this.$store.state.user.name,
+					issuerDept:this.$store.state.user.deptName,
+				},
+				tzlbList:[],
+				tzlblabe:'',
+				tzlbidx:'',
+				id:'',
+				editinfo:''
+			}
+		},
+		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))
+				}
+			}
+		},
+		
+		methods:{
+			statusFormat(ite) {
+				var aite=selectValue(this.tzlbList, ite);
+				this.tzlbidx=aite.key;
+				return aite.actions;
+			},
+			init(){
+				getDictionaryFn('sys_notice_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.tzlbList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					}
+				})
+			},
+			bindDateChangea(e){
+				var val=e.detail.value;
+				this.tzlblabe=this.tzlbList[val].label;
+				this.datainfo.noticeType=this.tzlbList[val].value;
+			},
+			getPaiFn(){
+				this.pbFlag=true;
+			},
+			getNoticeDetail(){
+				getNoticeDetail(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=>{
+							if(res.code==200){
+								that.$toast("发布成功")
+							}
+						})
+					}  
+				})
+			},
+			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>
+
+<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;
+		.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;}
+		}
+		
+		.openbox{display: flex;align-items: center;justify-content: flex-end;font-weight: 500;
+font-size: 30rpx;height: 100%;color: #AAAAAA;}
+		.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;}
+		}
+	}
+	
+}
+	
+	// 附件
+	.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>

+ 165 - 0
work/pages/news/info.vue

@@ -0,0 +1,165 @@
+<template>
+	<view class="info">
+		<!-- 详情 -->
+		<view class="forms detail" v-if="!updflag">
+			<view class="items">
+				<view class="label flex1">委员照片</view>
+				<view class="flexr">
+					<view class="addbox">
+						<image :src="dphoimg" class="adimg"></image>
+					</view>
+				</view>
+			</view>
+			<view class="items">
+				<view class="label">委员姓名</view>
+				<view class="itetit">何潇潇</view>
+			</view>
+			<view class="items">
+				<view class="label">身份证号</view>
+				<view class="itetit">32000019810205003X</view>
+			</view>
+			<view class="items">
+				<view class="label">界别</view>
+				<view class="itetit">中国共产党</view>
+			</view>
+			<view class="items">
+				<view class="label">党派</view>
+				<view class="itetit">中国共产党</view>
+			</view>
+			<view class="items">
+				<view class="label">工作单位及职务</view>
+				<view class="itetit">潜山市政协委员</view>
+			</view>
+			<view class="items">
+				<view class="label">乡镇(经开区)委员工作室</view>
+				<view class="itetit">黄铺镇工作室</view>
+			</view>
+			<view class="items">
+				<view class="label">联系方式</view>
+				<view class="itetit">19105672384</view>
+			</view>
+			<view class="brbtns" @click="updflag=true">修改信息</view>
+		</view>
+		<!-- 修改 -->
+		<uni-forms :modelValue="datainfo" 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>
+				</view>
+				
+			</view>
+			<uni-forms-item label="委员姓名" name="s" 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>
+			<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>
+			<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="请输入工作单位及职务" />
+			</uni-forms-item>
+			<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="请输入联系方式" />
+			</uni-forms-item>
+			<view class="brbtns" @click="updflag=false">确认</view>
+		</uni-forms>
+		
+	</view>
+</template>
+
+<script>
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	export default{
+		data(){
+			return{
+				dphoimg:require("@/work/static/images/dpho.png"),
+				rimg:require("@/work/static/images/rimg.png"),
+				readOnly:false,
+				datainfo:{
+					tatype:1,
+					name:'',
+				},
+				tzlbList:[{label: '新闻',value: 0},{label: '开会',value: 1}],
+				tzlbidx:'',
+				updflag:false
+			}
+		},
+		onLoad(e) {
+			
+		},
+		methods:{
+			bindDateChangea(e){
+				console.log(e,2)
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.info{padding: 24rpx 0 54rpx;}
+.flexr{display: flex;justify-content: flex-end;}
+.info /deep/ .uni-forms-item__label{width: 190rpx !important;font-weight: bold;font-size: 30rpx;color: #343434;min-height: 72rpx;padding: 14rpx 0;align-items: flex-start;height: auto;}
+.info /deep/ .is-required{margin-right: 8rpx;color: #FF0000;margin-top: 4rpx;}
+.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;}
+
+
+
+.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;}
+	}
+	.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;}
+		.label{font-weight: bold;font-size: 30rpx;color: #343434;flex: 0 0 auto;
+			.cir{color: #FF0000;margin-right: 8rpx;}
+		}
+		.itetit{flex: 1;text-align: right;font-weight: 500;font-size: 30rpx;color: #222327;}	
+	}
+}
+.detail {
+	.items{
+		.label{width: 170rpx;margin-right: 20rpx;padding: 14rpx 0;}
+	}
+}
+
+
+.lbtabp{display: flex;align-items: center;flex: 0 0 auto;height: 100%;justify-content: flex-end;
+		view{font-size: 30rpx;color: #222327;}
+		.rimg{width: 14rpx;height: 26rpx;margin-left: 20rpx;flex: 0 0 auto;}
+	}
+
+
+</style>

+ 188 - 0
work/pages/news/list.vue

@@ -0,0 +1,188 @@
+<template>
+	<view :style="'padding-top:'+nvaHeight+'px;'">
+		<view class="navbox">
+			<uni-nav-bar  color="#ffffff" rightWidth="150rpx" title="消息通知" @clickLeft="getBack" @clickRight="getAddNewsFn"  :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="tablists flexc">
+				<view v-for="(ite,idx) in tabList" @click="getTabFn(ite.value)" :class="{act:tabval==ite.value}" :key="idx">{{ite.label}}</view>
+			</view>
+		</view>
+		<!-- 列表 -->
+		<view class="mbox">
+			<news-list :datalist="list" :wtdt="wtdt" :type='type' @getDetail="getDetail" @getTuiFn="getTuiFn"></news-list>
+		</view>
+		<!-- <view class="fwbtns">提交提案</view> -->
+		
+		<!-- 弹窗 -->
+		<pop-up :type='ptype' @getClose="getClose" @getFaFn="getFaFn"></pop-up>
+	</view>
+</template>
+
+<script>
+	import {getDictionaryFn} from "@/api/mine/register.js"
+	import {getNoticeList} from "@/api/mine/news.js"
+	import popUp from "@/work/components/popup/popup.vue"
+	import newsList from "@/work/components/news/list.vue"
+	export default{
+		components:{newsList,popUp},
+		data(){
+			return{
+				ccicoimg:require("@/work/static/images/fbico.png"),
+				backimg:require("@/work/static/images/back.png"),
+				backgroundColor:"#1D64E2",
+				tabval:'',
+				type:1,
+				tabList:[],
+				nvaHeight:44,
+				datainfo:{
+					talb:'',
+				},
+				ptype:'',//弹窗类型
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag: true,
+				wtdt:'',
+				
+			}
+		},
+		onLoad(e) {
+			this.init()
+		},
+		mounted() {
+			this.getHeightFn()
+		},
+		methods:{
+			init(){
+				getDictionaryFn('sys_notice_type').then(res=>{
+					if(res.code==200&&res.data.length){
+						this.tabList = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+						if(res.data){
+							this.tabval=res.data[0].dictValue;
+							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//赋值,待会要用
+				}).exec();
+			},
+			getClose(){
+				this.ptype=""
+			},
+			getFaFn(type){
+				this.ptype="";
+				if(type=='new'){
+					uni.removeStorageSync('zcList')
+				}
+				this.$tab.navigateTo('/work/pages/news/add?type='+type)	
+			},
+			getTabFn(idx){
+				this.tabval=idx;
+				this.list=[];
+				this.pageNum=1;
+				this.reachflag=true;
+				this.getDataFn()
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			getAddNewsFn(){
+				// this.ptype='zcfb'
+				// return
+				if(uni.getStorageSync('zcList')){
+					var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('zcList')))
+					this.ptype='zcfb'
+				}else{
+					this.$tab.navigateTo('/work/pages/news/add')
+				}
+				
+			},
+			getTuiFn(ite){
+				this.ptype=ite.type
+			},
+			getDetail(id){
+				this.$tab.navigateTo('/work/pages/news/add?id='+id)	
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					noticeType:this.tabval
+				}
+				getNoticeList(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">
+page{background-color: #FFFFFF;}
+.navbox{position: fixed;left: 0;right: 0;top: 0;z-index: 4;background-color: $com-cd3;padding-bottom: 40rpx;
+	.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;min-height:84rpx;
+		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;}
+			}
+		}
+	}
+}
+.mbox{}
+
+</style>

二进制
work/static/images/dpho.png


二进制
work/static/images/fbico.png


二进制
work/static/images/ntya.png


二进制
work/static/images/ntyb.png


二进制
work/static/images/ntyc.png


二进制
work/static/images/ntyd.png


二进制
work/static/images/rimg.png


二进制
work/static/images/ups.png