Ver Fonte

数据局,招商

zouling há 3 semanas atrás
pai
commit
2f0fc9b70d
100 ficheiros alterados com 27284 adições e 0 exclusões
  1. 8 0
      .gitignore
  2. 25 0
      qs_zhaoshang/.gitignore
  3. 12 0
      qs_zhaoshang/1.txt
  4. BIN
      qs_zhaoshang/7008a54323611568c0ea1be7904e2045.keystore
  5. 207 0
      qs_zhaoshang/App.vue
  6. 21 0
      qs_zhaoshang/LICENSE
  7. 52 0
      qs_zhaoshang/README.md
  8. 47 0
      qs_zhaoshang/api/login.js
  9. 74 0
      qs_zhaoshang/api/system/user.js
  10. 325 0
      qs_zhaoshang/api/work/addclue.js
  11. 96 0
      qs_zhaoshang/api/work/addsk.js
  12. 282 0
      qs_zhaoshang/api/work/clue.js
  13. 125 0
      qs_zhaoshang/api/work/count.js
  14. 55 0
      qs_zhaoshang/api/work/index.js
  15. 89 0
      qs_zhaoshang/api/zdwork/addclue.js
  16. 189 0
      qs_zhaoshang/api/zdwork/clue.js
  17. 100 0
      qs_zhaoshang/api/zdwork/index.js
  18. 286 0
      qs_zhaoshang/components/addclue/first.vue
  19. 198 0
      qs_zhaoshang/components/addclue/second.vue
  20. 152 0
      qs_zhaoshang/components/addclue/third.vue
  21. 124 0
      qs_zhaoshang/components/ba-tree-picker/README.md
  22. 650 0
      qs_zhaoshang/components/ba-tree-picker/ba-tree-picker.vue
  23. 658 0
      qs_zhaoshang/components/ba-tree-picker/ba-tree-pickerfixed.vue
  24. 406 0
      qs_zhaoshang/components/ba-tree-picker/danpicker.vue
  25. 568 0
      qs_zhaoshang/components/ba-tree-picker/selectMorePicker.vue
  26. 570 0
      qs_zhaoshang/components/ba-tree-picker/selectnoreMorePicker.vue
  27. 344 0
      qs_zhaoshang/components/clue/clue.vue
  28. 246 0
      qs_zhaoshang/components/clue/signup.vue
  29. 214 0
      qs_zhaoshang/components/clue/startwork.vue
  30. 251 0
      qs_zhaoshang/components/clue/tputinto.vue
  31. 69 0
      qs_zhaoshang/components/footer/footer.vue
  32. 39 0
      qs_zhaoshang/components/nodata/nodata.vue
  33. 1056 0
      qs_zhaoshang/components/popup/popup.vue
  34. 153 0
      qs_zhaoshang/components/popup/skdwzjpop.vue
  35. 353 0
      qs_zhaoshang/components/projectlist/list.vue
  36. 177 0
      qs_zhaoshang/components/projectlist/zdlist.vue
  37. 50 0
      qs_zhaoshang/components/steps/step.vue
  38. 53 0
      qs_zhaoshang/components/timedata/hfduban.vue
  39. 68 0
      qs_zhaoshang/components/timedata/timeyear.vue
  40. 78 0
      qs_zhaoshang/components/toptab/banner.vue
  41. 556 0
      qs_zhaoshang/components/toptab/search.vue
  42. 492 0
      qs_zhaoshang/components/toptab/searchone.vue
  43. 76 0
      qs_zhaoshang/components/toptab/tab.vue
  44. 167 0
      qs_zhaoshang/components/uni-section/uni-section.vue
  45. 102 0
      qs_zhaoshang/components/upload/upload.vue
  46. 277 0
      qs_zhaoshang/components/zdclue/point.vue
  47. 206 0
      qs_zhaoshang/components/zdclue/rate.vue
  48. 182 0
      qs_zhaoshang/components/zdclue/stage.vue
  49. 201 0
      qs_zhaoshang/components/zdclue/tbasic.vue
  50. 29 0
      qs_zhaoshang/config.js
  51. 20 0
      qs_zhaoshang/main.js
  52. 267 0
      qs_zhaoshang/manifest.json
  53. 19 0
      qs_zhaoshang/package.json
  54. 561 0
      qs_zhaoshang/pages.json
  55. 61 0
      qs_zhaoshang/pages/1.vue
  56. 80 0
      qs_zhaoshang/pages/agreement.vue
  57. 192 0
      qs_zhaoshang/pages/center.vue
  58. 43 0
      qs_zhaoshang/pages/common/textview/index.vue
  59. 34 0
      qs_zhaoshang/pages/common/webview/index.vue
  60. 431 0
      qs_zhaoshang/pages/index.vue
  61. 552 0
      qs_zhaoshang/pages/indexs.vue
  62. 393 0
      qs_zhaoshang/pages/login.vue
  63. 75 0
      qs_zhaoshang/pages/mine/about/index.vue
  64. 631 0
      qs_zhaoshang/pages/mine/avatar/index.vue
  65. 112 0
      qs_zhaoshang/pages/mine/help/index.vue
  66. 420 0
      qs_zhaoshang/pages/mine/index.vue
  67. 127 0
      qs_zhaoshang/pages/mine/info/edit.vue
  68. 64 0
      qs_zhaoshang/pages/mine/info/index.vue
  69. 119 0
      qs_zhaoshang/pages/mine/pwd/index.vue
  70. 78 0
      qs_zhaoshang/pages/mine/setting/index.vue
  71. 449 0
      qs_zhaoshang/pages/seep.vue
  72. 157 0
      qs_zhaoshang/pages/work/addcluelist.vue
  73. 1279 0
      qs_zhaoshang/pages/work/addclues.vue
  74. 651 0
      qs_zhaoshang/pages/work/addcontract.vue
  75. 715 0
      qs_zhaoshang/pages/work/addstart.vue
  76. 491 0
      qs_zhaoshang/pages/work/addtproduction.vue
  77. 221 0
      qs_zhaoshang/pages/work/allitems.vue
  78. 920 0
      qs_zhaoshang/pages/work/cluedetails.vue
  79. 376 0
      qs_zhaoshang/pages/work/count/addkscount.vue
  80. 380 0
      qs_zhaoshang/pages/work/count/addzscount.vue
  81. 220 0
      qs_zhaoshang/pages/work/count/cluelist.vue
  82. 230 0
      qs_zhaoshang/pages/work/count/count.vue
  83. 173 0
      qs_zhaoshang/pages/work/idea.vue
  84. 269 0
      qs_zhaoshang/pages/work/ideadetail.vue
  85. 183 0
      qs_zhaoshang/pages/work/index.vue
  86. 175 0
      qs_zhaoshang/pages/work/lditem.vue
  87. 194 0
      qs_zhaoshang/pages/work/ldwritten.vue
  88. 96 0
      qs_zhaoshang/pages/work/message.vue
  89. 126 0
      qs_zhaoshang/pages/work/projectprogress.vue
  90. 250 0
      qs_zhaoshang/pages/work/shprogress.vue
  91. 193 0
      qs_zhaoshang/pages/work/skitem.vue
  92. 1202 0
      qs_zhaoshang/pages/work/skproject/addsk.vue
  93. 225 0
      qs_zhaoshang/pages/work/skproject/dzjelist.vue
  94. 562 0
      qs_zhaoshang/pages/work/skproject/skdetail.vue
  95. 155 0
      qs_zhaoshang/pages/work/tslist.vue
  96. 166 0
      qs_zhaoshang/pages/work/wtitem.vue
  97. 341 0
      qs_zhaoshang/pages/work/xminquiry.vue
  98. 653 0
      qs_zhaoshang/pages/work/yinpages/addcontract.vue
  99. 708 0
      qs_zhaoshang/pages/work/yinpages/addstart.vue
  100. 487 0
      qs_zhaoshang/pages/work/yinpages/addtproduction.vue

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+unpackage/
+/api/api.js
+/manifest.json
+/mp-weixin
+/unpackage
+
+.DS_Store
+node_modules/

+ 25 - 0
qs_zhaoshang/.gitignore

@@ -0,0 +1,25 @@
+######################################################################
+# Build Tools
+
+/unpackage/*
+/node_modules/*
+
+######################################################################
+# Development Tools
+
+/.idea/*
+/.vscode/*
+/.hbuilderx/*
+
+
+yarn.lock
+
+
+unpackage/
+
+
+/mp-weixin
+/unpackage
+
+.DS_Store
+node_modules/

+ 12 - 0
qs_zhaoshang/1.txt

@@ -0,0 +1,12 @@
+包名:zs.business.app
+
+
+证书别名:__uni__dad6f71
+证书私钥密码:dtym1i2h
+
+
+极光appkey:275af46e0d888270da3cfd1d
+
+
+发改委:重点项目建设
+招商:招商引资

BIN
qs_zhaoshang/7008a54323611568c0ea1be7904e2045.keystore


+ 207 - 0
qs_zhaoshang/App.vue

@@ -0,0 +1,207 @@
+<script>
+  import config from './config'
+  import store from '@/store'
+  import { getToken } from '@/utils/auth'
+// const jpushModule = uni.requireNativePlugin('JG-JPush')
+  import {updateUserProfile,findVersion} from "@/api/system/user.js"
+  const baseUrl = config.baseUrl
+  export default {
+	  data(){
+	  		  return{
+	  			platform:'Android'  
+	  		  }
+	  },
+    onLaunch: function() {
+		// this.platform=uni.getSystemInfoSync().platform;
+		// console.log(this.platform,1)
+		this.initApp()
+		// #ifdef APP
+		var url=baseUrl;
+		if(url.indexOf('https://qszs.qs163.cn')!=-1){
+			this.getJGtuifn()
+			this.onlineWgt(); //版本更新
+		}else{
+		}
+		// #endif
+		
+	  // console.log(jpushModule)
+    },
+    methods: {
+		//热更新
+		// 在线跟新
+		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('用户点击取消');
+								}
+							}
+						});
+					}
+				}
+			}).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("更新失败,请稍后再试");
+						});
+					}
+				}
+			});
+			downloadTask.onProgressUpdate((res) => { //下载文件的进度
+				that.totalBytesWritten = res.totalBytesWritten; //当前下载大小
+				that.progress = res.progress; //当前下载比例
+				that.totalBytesExpectedToWrite = res.totalBytesExpectedToWrite; //
+			});
+		},
+		// 极光推送
+		getJGtuifn(){ 
+			//#ifdef APP-PLUS
+				var jpushModule = uni.requireNativePlugin("JG-JPush");
+				jpushModule.setLoggerEnable(true);
+				// 初始化函数
+				jpushModule.initJPushService();
+				jpushModule.addConnectEventListener(result=>{
+					let connectEnable = result.connectEnable
+					// console.log("jpush连接", connectEnable)
+				})
+				jpushModule.getRegistrationID(result => {
+					// console.log("注册ID.....",result)
+					this.registerID = result.registerID;
+					if(getToken()){
+						var params={
+							jgId:this.registerID,
+						}
+						updateUserProfile(params).then(res=>{
+							if(rtes.code==200){
+								console.log(res,9)
+							}
+						})
+					}	
+				})
+				jpushModule.isPushStopped(result=>{
+					let code = result.code
+					console.log('连接状态回调',result)
+				});
+				// 设置别名
+				jpushModule.setAlias({
+					'alias' : 'coder',
+					'sequence': 1
+				})
+				jpushModule.addNotificationListener(result=>{
+					let notificationEventType = result.notificationEventType
+					let messageID = result.messageID
+					let title = result.title
+					let content = result.content
+					let extras = result.extras
+					console.log('通知事件回调',result)
+					// 推送一个本地通知
+					jpushModule.addLocalNotification({
+						messageID,
+						title,
+						content,
+						extras
+					})
+				})
+				jpushModule.addNotificationListener(result => {
+				console.log(result)
+				if (result.notificationEventType == "notificationOpened") {
+				  //点击窗口通知栏推送的消息 跳转指定页面
+					uni.reLaunch({
+						url:'/pages/login'
+					})
+				}
+ 
+			});
+			//#endif 
+		},
+      // 初始化应用
+      initApp() {
+        // 初始化应用配置
+        this.initConfig()
+        // 检查用户登录状态
+        //#ifdef H5
+        this.checkLogin()
+        //#endif
+      },
+      initConfig() {
+        this.globalData.config = config
+      },
+      checkLogin() {
+        if (!getToken()) {
+          this.$tab.reLaunch('/pages/login') 
+        }
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+	page{background-color: #ffffff;}
+  @import '@/static/scss/index.scss';
+  @import "@/static/style.css";
+ 
+  .uni-tabbar .uni-tabbar__label{
+  		font-size: 32rpx !important;
+  	}
+  	// tab图标
+  	.uni-tabbar .uni-tabbar__icon {
+  		width: 50rpx !important;
+          height: 50rpx !important;
+  	}
+	/* #ifdef APP */
+	/deep/ .uni-picker-container .uni-picker-header{background-color: #FA5F03;}
+	/* #endif */
+// .inform /deep/ .uni-input-input{text-align: right;font-size: 32rpx;color: #343434;}
+// .inform /deep/ .uni-easyinput__placeholder-class{text-align: right;font-size: 32rpx !important;color: #808080;}
+
+</style>

+ 21 - 0
qs_zhaoshang/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 若依
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 52 - 0
qs_zhaoshang/README.md

@@ -0,0 +1,52 @@
+<p align="center">
+	<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-43e3941654fa3054c9684bf53d1b1d356a1.png">
+</p>
+<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v1.1.0</h1>
+<h4 align="center">基于UniApp开发的轻量级移动端框架</h4>
+<p align="center">
+	<a href="https://gitee.com/y_project/RuoYi-App/stargazers"><img src="https://gitee.com/y_project/RuoYi-App/badge/star.svg?theme=dark"></a>
+	<a href="https://gitee.com/y_project/RuoYi-App"><img src="https://img.shields.io/badge/RuoYi-v1.1.0-brightgreen.svg"></a>
+	<a href="https://gitee.com/y_project/RuoYi-App/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
+</p>
+
+## 平台简介
+
+RuoYi App 移动解决方案,采用uniapp框架,一份代码多终端适配,同时支持APP、小程序、H5!实现了与[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)、[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)完美对接的移动解决方案!目前已经实现登录、我的、工作台、编辑资料、头像修改、密码修改、常见问题、关于我们等基础功能。
+
+* 配套后端代码仓库地址[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue) 或 [RuoYi-Cloud](https://github.com/yangzongzhuan/RuoYi-Cloud) 版本。
+* 应用框架基于[uniapp](https://uniapp.dcloud.net.cn/),支持小程序、H5、Android和IOS。
+* 前端组件采用[uni-ui](https://github.com/dcloudio/uni-ui),全端兼容的高性能UI框架。
+* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)&nbsp;&nbsp;
+* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)&nbsp;&nbsp;
+
+
+## 技术文档
+
+- 官网网站:[http://ruoyi.vip](http://ruoyi.vip)
+- 文档地址:[http://doc.ruoyi.vip](http://doc.ruoyi.vip)
+- H5页体验:[http://h5.ruoyi.vip](http://h5.ruoyi.vip)
+- QQ交流群: ①133713780
+- 小程序体验
+
+<img src="https://oscimg.oschina.net/oscnet/up-26c76dc90b92acdbd9ac8cd5252f07c8ad9.jpg" alt="小程序演示"/>
+ 
+
+## 演示图
+
+<table>
+    <tr>
+        <td><img src="https://oscimg.oschina.net/oscnet/up-3ea20e447ac621a161e395fb53ccc683d84.png"/></td>
+        <td><img src="https://oscimg.oschina.net/oscnet/up-a6f23cf9a371a30165e135eff6d9ae89a9d.png"/></td>
+		<td><img src="https://oscimg.oschina.net/oscnet/up-ff5f62016bf6624c1ff27eee57499dccd44.png"/></td>
+    </tr>
+	<tr>
+        <td><img src="https://oscimg.oschina.net/oscnet/up-b9a582fdb26ec69d407fabd044d2c8494df.png"/></td>
+        <td><img src="https://oscimg.oschina.net/oscnet/up-96427ee08fca29d77934cfc8d1b1a637cef.png"/></td>
+		<td><img src="https://oscimg.oschina.net/oscnet/up-5fdadc582d24cccd7727030d397b63185a3.png"/></td>
+    </tr>
+	<tr>
+        <td><img src="https://oscimg.oschina.net/oscnet/up-0a36797b6bcc50c36d40c3c782665b89efc.png"/></td>
+        <td><img src="https://oscimg.oschina.net/oscnet/up-d77995cc00687cedd00d5ac7d68a07ea276.png"/></td>
+		<td><img src="https://oscimg.oschina.net/oscnet/up-fa8f5ab20becf59b4b38c1b92a9989e7109.png"/></td>
+    </tr>
+</table>

+ 47 - 0
qs_zhaoshang/api/login.js

@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+// 登录方法
+export function login(username, password, code, uuid) {
+  const data = {
+    username,
+    password,
+    code,
+    uuid
+  }
+  return request({
+    'url': '/login',
+    headers: {
+      isToken: false
+    },
+    'method': 'post',
+    'data': data
+  })
+}
+
+// 获取用户详细信息
+export function getInfo() {
+  return request({
+    'url': '/getInfo',
+    'method': 'get'
+  })
+}
+
+// 退出方法
+export function logout() {
+  return request({
+    'url': '/logout',
+    'method': 'post'
+  })
+}
+
+// 获取验证码
+export function getCodeImg() {
+  return request({
+    'url': '/captchaImage',
+    headers: {
+      isToken: false
+    },
+    method: 'get',
+    timeout: 20000
+  })
+}

+ 74 - 0
qs_zhaoshang/api/system/user.js

@@ -0,0 +1,74 @@
+import upload from '@/utils/upload'
+import request from '@/utils/request'
+
+// 用户密码修改
+export function updateUserPwd(oldPassword,newPassword) {
+  const data = {
+	oldPassword,
+    newPassword
+  }
+  return request({
+    url: '/system/user/profile/updatePwd',
+    method: 'post',
+    params: data
+  })
+}
+// 上传图片
+export function uploadPhoto(data) {
+  return upload({
+    url: '/common/upload',
+    name: data.name,
+    filePath: data.filePath
+  })
+}
+// 查询用户个人信息
+export function getUserProfile() {
+  return request({
+    url: '/system/user/profile',
+    method: 'get'
+  })
+}
+
+// 修改用户个人信息
+export function updateUserProfile(data) {
+  return request({
+    url: '/system/user/profile',
+    method: 'put',
+    data: data
+  })
+}
+
+// 用户头像上传
+export function uploadAvatar(data) {
+  return upload({
+    url: '/system/user/profile/avatar',
+    name: data.name,
+    filePath: data.filePath
+  })
+}
+
+
+// 获取部门
+export function gettreeselect(data) {
+  return request({
+    url: '/system/dept/treeselect',
+    method: 'get',
+    data: data
+  })
+}
+//部门接口 
+export function getfgwtreeFn(data) {
+  return request({
+    url: '/system/dept/fgw/treeselect',
+    method: 'get',
+	data:data
+  })
+}
+// 下载版本更新
+export function findVersion(data) {
+  return request({
+    url: '/system/app/new',
+    method: 'get',
+    data: data
+  })
+}

+ 325 - 0
qs_zhaoshang/api/work/addclue.js

@@ -0,0 +1,325 @@
+import request from '@/utils/request'
+//企查查
+export function getqichachaSearch(data) {
+  return request({
+    url: '/projectV2/sbbzb/qichachaSearch/'+data,
+    method: 'get',
+  })
+}
+//生成项目编号接口
+export function getCommonXmbh(data) {
+  return request({
+    url: '/projectV2/common/xmbh',
+    method: 'get',
+  })
+}
+
+//新增项目投资方-企业
+export function getAddInvestor(data) {
+  return request({
+    url: '/projectV2/investor',
+    method: 'post',
+	data:data
+  })
+}
+//修改项目投资方-企业
+export function getPutInvestor(data) {
+  return request({
+    url: '/projectV2/investor/put',
+    method: 'post',
+	data:data
+  })
+}
+//删除项目投资方--企业
+export function getDelInvestor(data) {
+  return request({
+    url: '/projectV2/investor/delete/'+data,
+    method: 'get',
+  })
+}
+//查看项目投资方-企业
+export function getInvestorList(data) {
+  return request({
+    url: '/projectV2/investor/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看项目投资方详情-企业
+export function getInvestorid(data) {
+  return request({
+    url: '/projectV2/investor/'+data,
+    method: 'get',
+  })
+}
+
+//新增项目投资方-自然人
+export function getAddPersion(data) {
+  return request({
+    url: '/projectV2/persion',
+    method: 'post',
+	data:data
+  })
+}
+//修改项目投资方-自然人
+export function getPutPersion(data) {
+  return request({
+    url: '/projectV2/persion/put',
+    method: 'post',
+	data:data
+  })
+}
+//删除项目投资方-自然人
+export function getDelPersion(data) {
+  return request({
+    url: '/projectV2/persion/delete/'+data,
+    method: 'get',
+  })
+}
+//查看项目投资方-自然人
+export function getPersionList(data) {
+  return request({
+    url: '/projectV2/persion/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看项目投资方详情-自然人
+export function getPersionid(data) {
+  return request({
+    url: '/projectV2/persion/'+data,
+    method: 'get',
+  })
+}
+
+// 新增项目申报表
+export function getsbbzbAddFn(data) {
+  return request({
+    url: '/projectV2/sbbzb',
+    method: 'post',
+	data:data
+  })
+}
+// 修改项目申报表
+export function getsbbzbPutFn(data) {
+  return request({
+    url: '/projectV2/sbbzb/put',
+    method: 'post',
+	data:data
+  })
+}
+//新增项目签约
+export function getsqyxxAddFn(data) {
+  return request({
+    url: '/projectV2/qyxx',
+    method: 'post',
+	data:data
+  })
+}
+//修改项目签约
+export function getsqyxxPutFn(data) {
+  return request({
+    url: '/projectV2/qyxx/put',
+    method: 'post',
+	data:data
+  })
+}
+//新增项目开工信息
+export function getkgxxAddFn(data) {
+  return request({
+    url: '/projectV2/kgxx',
+    method: 'post',
+	data:data
+  })
+}
+//修改项目开工信息
+export function getkgxxPutFn(data) {
+  return request({
+    url: '/projectV2/kgxx/put',
+    method: 'post',
+	data:data
+  })
+}
+
+//新增项目投产信息
+export function gettcxxAddFn(data) {
+  return request({
+    url: '/projectV2/tcxx',
+    method: 'post',
+	data:data
+  })
+}
+//修改项目投产信息
+export function gettcxxPutFn(data) {
+  return request({
+    url: '/projectV2/tcxx/put',
+    method: 'post',
+	data:data
+  })
+}
+
+// 新增项目进度
+export function getrateAddFn(data) {
+  return request({
+    url: '/projectV2/rate',
+    method: 'post',
+	data:data
+  })
+}
+// 修改项目进度
+export function getratePutFn(data) {
+  return request({
+    url: '/projectV2/rate/put',
+    method: 'post',
+	data:data
+  })
+}
+// 删除项目进度
+export function getrateDelFn(data) {
+  return request({
+    url: '/projectV2/rate/delete/'+data,
+    method: 'get',
+  })
+}
+//查看项目进度列表
+export function getrateListFn(data) {
+  return request({
+    url: '/projectV2/rate/list',
+    method: 'get',
+	data:data
+  })
+}
+
+
+
+// 引荐单位
+// 查看项目签约详情_引荐单位
+export function getqyxxYjListFn(data) {
+  return request({
+    url: '/projectV2/qyxx/queryYj/'+data,
+    method: 'get',
+  })
+}
+
+// 新增项目签约(引荐单位)
+export function getqyxxaddYjFn(data) {
+  return request({
+    url: '/projectV2/qyxx/addYj',
+    method: 'Post',
+	data:data
+  })
+}
+// 修改项目签约_引荐单位
+export function getqyxxeditYjFn(data) {
+  return request({
+    url: '/projectV2/qyxx/put/editYj',
+    method: 'Post',
+	data:data
+  })
+}
+
+
+// 查看项目开工详细信息_引荐单位
+export function getkgxxYjListFn(data) {
+  return request({
+    url: '/projectV2/kgxx/queryYj/'+data,
+    method: 'get',
+  })
+}
+
+// 新增项目开工信息(引荐单位使用)
+export function getkgxxaddYjFn(data) {
+  return request({
+    url: '/projectV2/kgxx/addYj',
+    method: 'Post',
+	data:data
+  })
+}
+// 修改项目开工信息(引荐单位)
+export function getkgxxeditYjFn(data) {
+  return request({
+    url: '/projectV2/kgxx/put/editYj',
+    method: 'Post',
+	data:data
+  })
+}
+
+
+// 查看项目投产详细信息_引荐单位
+export function gettcxxYjListFn(data) {
+  return request({
+    url: '/projectV2/tcxx/queryYj/'+data,
+    method: 'get',
+  })
+}
+
+// 新增项目投产信息_引荐单位
+export function gettcxxaddYjFn(data) {
+  return request({
+    url: '/projectV2/tcxx/addYj',
+    method: 'Post',
+	data:data
+  })
+}
+// 修改项目投产信息_引荐单位
+export function gettcxxeditYjFn(data) {
+  return request({
+    url: '/projectV2/tcxx/editYj',
+    method: 'Post',
+	data:data
+  })
+}
+
+
+// 引荐单位项目进度
+
+// 新增项目进度
+export function getrateYjAddFn(data) {
+  return request({
+    url: '/projectV2/rate/addYj',
+    method: 'post',
+	data:data
+  })
+}
+// 修改项目进度
+export function getrateYjPutFn(data) {
+  return request({
+    url: '/projectV2/rate/editYj',
+    method: 'post',
+	data:data
+  })
+}
+// 删除项目进度
+export function getrateYjDelFn(data) {
+  return request({
+    url: '/projectV2/rate/deleteYj/'+data,
+    method: 'get',
+  })
+}
+//查看项目进度列表
+export function getrateYjListFn(data) {
+  return request({
+    url: '/projectV2/rate/listYj',
+    method: 'get',
+	data:data
+  })
+}
+
+//投产阶段,修改开工信息
+export function gekgxxputKg(data) {
+  return request({
+    url: '/projectV2/kgxx/putKg',
+    method: 'post',
+	data:data
+  })
+}
+//投产阶段,修改开工信息
+export function gekgxxputYjKg(data) {
+  return request({
+    url: '/projectV2/kgxx/put/editYjKg',
+    method: 'post',
+	data:data
+  })
+}
+
+

+ 96 - 0
qs_zhaoshang/api/work/addsk.js

@@ -0,0 +1,96 @@
+import request from '@/utils/request'
+
+//获取省市
+export function getarealist(data) {
+  return request({
+    url: '/projectV2/common/area/'+data,
+    method: 'get',
+  })
+}
+//查看省库信息
+export function getskxmList(data) {
+  return request({
+    url: '/projectV2/skxm/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看省库信息
+export function getskxmDetail(data) {
+  return request({
+    url: '/projectV2/skxm/'+data,
+    method: 'get',
+  })
+}
+//审核省库信息
+export function getskxmSh(data) {
+  return request({
+    url: '/projectV2/common/sksh',
+    method: 'post',
+	data:data
+  })
+}
+//新增省库信息
+export function getaddskxmFn(data) {
+  return request({
+    url: '/projectV2/skxm',
+    method: 'post',
+	data:data
+  })
+}
+//修改省库信息
+export function getputskxmFn(data) {
+  return request({
+    url: '/projectV2/skxm/put',
+    method: 'post',
+	data:data
+  })
+}
+//删除省库信息
+export function getdelskxmFn(data) {
+  return request({
+    url: '/projectV2/skxm/delete/'+data,
+    method: 'get',
+  })
+}
+
+
+//列表到资金额
+export function getdzjeList(data) {
+  return request({
+    url: '/projectV2/dzje/list',
+    method: 'get',
+	data:data
+  })
+}
+//新增到资金额
+export function getadddzjeFn(data) {
+  return request({
+    url: '/projectV2/dzje',
+    method: 'post',
+	data:data
+  })
+}
+//修改到资金额
+export function getputdzjeFn(data) {
+  return request({
+    url: '/projectV2/dzje/put',
+    method: 'post',
+	data:data
+  })
+}
+//删除到资金额
+export function getdeldzjeFn(data) {
+  return request({
+    url: '/projectV2/dzje/delete/'+data,
+    method: 'get',
+  })
+}
+//省库产业列树
+export function getskcyListFn(data) {
+  return request({
+    url: '/projectV2/skcy/list',
+    method: 'get',
+  })
+}
+

+ 282 - 0
qs_zhaoshang/api/work/clue.js

@@ -0,0 +1,282 @@
+import request from '@/utils/request'
+
+//查看项目申报表(项目列表,全部)
+export function getsbbzblist(data) {
+  return request({
+    url: '/projectV2/sbbzb/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看项目申报表详细信息
+export function getsbbzbdetail(data) {
+  return request({
+    url: '/projectV2/sbbzb/'+data,
+    method: 'get',
+  })
+}
+
+//查看签约信息
+export function getqyxxlist(data) {
+  return request({
+    url: '/projectV2/qyxx/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看项目签约详情
+export function getqyxxtail(data) {
+  return request({
+    url: '/projectV2/qyxx/'+data,
+    method: 'get',
+  })
+}
+
+//查询项目开工信息
+export function getkgxxlist(data) {
+  return request({
+    url: '/projectV2/kgxx/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看项目开工详情
+export function getkgxxdetail(data) {
+  return request({
+    url: '/projectV2/kgxx/'+data,
+    method: 'get',
+  })
+}
+
+//查看项目投产信息
+export function gettcxxlist(data) {
+  return request({
+    url: '/projectV2/tcxx/list',
+    method: 'get',
+	data:data
+  })
+}
+//查看项目投产详情
+export function gettcxxdetail(data) {
+  return request({
+    url: '/projectV2/tcxx/'+data,
+    method: 'get',
+  })
+}
+
+//线索指派接口
+export function getCommonXszp(data) {
+  return request({
+    url: '/projectV2/common/xszp',
+    method: 'post',
+	data:data
+  })
+}
+//线索暂存/终止
+export function getCommonXszc(data) {
+  return request({
+    url: '/projectV2/common/xszc',
+    method: 'post',
+	data:data
+  })
+}
+//项目审核/驳回
+export function getCommonXssh(data) {
+  return request({
+    url: '/projectV2/common/xssh',
+    method: 'post',
+	data:data
+  })
+}
+
+//新增项目审核信息
+export function getshyjFn(data) {
+  return request({
+    url: '/projectV2/shyj',
+    method: 'post',
+	data:data
+  })
+}
+//查看项目审核信息(进度)问题项目
+export function getshyjList(data) {
+  return request({
+    url: '/projectV2/shyj/list',
+    method: 'get',
+	data:data
+  })
+}
+//问题项目
+export function getshyjwtList(data) {
+  return request({
+    url: '/projectV2/common/wt',
+    method: 'post',
+	data:data
+  })
+}
+//查询项目督办
+export function getdbdList(data) {
+  return request({
+    url: '/projectV2/dbd/list',
+    method: 'get',
+	data:data
+  })
+}
+//项目督办详情
+export function getdbddetail(data) {
+  return request({
+    url: '/projectV2/dbd/'+data,
+    method: 'get',
+  })
+}
+//项目督办修改
+export function getdbdPut(data) {
+  return request({
+    url: '/projectV2/dbd/put',
+    method: 'post',
+	data:data
+  })
+}
+//项目督办删除
+export function getdbdDet(data) {
+  return request({
+    url: '/projectV2/dbd/delete/'+data,
+    method: 'get',
+  })
+}
+
+
+
+//领导批示
+export function getldpsFn(data) {
+  return request({
+    url: '/projectV2/ldps',
+    method: 'post',
+	data:data
+  })
+}
+//修改领导批示
+export function getldpsputFn(data) {
+  return request({
+    url: '/projectV2/ldps/put',
+    method: 'post',
+	data:data
+  })
+}
+//
+//删除领导批示
+export function getldpsdelFn(data) {
+  return request({
+    url: '/projectV2/ldps/delete',
+    method: 'get',
+	data:data
+  })
+}
+//领导批示列表
+export function getldpslistFn(data) {
+  return request({
+    url: '/projectV2/sbbzb/ldps/list',
+    method: 'get',
+	data:data
+  })
+}
+
+// 项目领导批示列表
+export function getldwrlistFn(data) {
+  return request({
+    url: '/projectV2/ldps/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//查看领导批示暂存
+export function getldzcFn(data) {
+  return request({
+    url: '/projectV2/ldps/zc',
+    method: 'get',
+	data:data
+  })
+}
+
+// 查看历史指派信息
+export function getdeptList(data) {
+  return request({
+    url: '/projectV2/dept/list',
+    method: 'get',
+	data:data
+  })
+}
+
+
+//承接地项目审核/驳回
+export function getcommonXsshCjd(data) {
+  return request({
+    url: '/projectV2/common/xsshCjd',
+    method: 'POST',
+	data:data
+  })
+}
+//要素部门项目审核/驳回
+export function getcommonXsshYsbm(data) {
+  return request({
+    url: '/projectV2/common/xsshYsbm',
+    method: 'POST',
+	data:data
+  })
+}
+
+//新增项目进展情况
+export function getjzqkFn(data) {
+  return request({
+    url: '/projectV2/jzqk',
+    method: 'POST',
+	data:data
+  })
+}
+//新增项目进展情况
+export function getjzqklist(data) {
+  return request({
+    url: '/projectV2/jzqk/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//查看项目申报表-引荐单位
+export function getsbbzblistYz(data) {
+  return request({
+    url: '/projectV2/sbbzb/listYz',
+    method: 'get',
+	data:data
+  })
+}
+
+//15天弹窗列表接口(15天未填写签约信息的记录信息)
+export function gettslist(data) {
+  return request({
+    url: '/projectV2/ts/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//项目撤回接口
+export function getrateXschFn(data) {
+  return request({
+    url: '/projectV2/common/xsch',
+    method: 'post',
+	data:data
+  })
+}
+//专班跟进
+export function gesbbzbmeetFn(data) {
+  return request({
+    url: '/projectV2/sbbzb/meet',
+    method: 'post',
+	data:data
+  })
+}
+
+
+
+

+ 125 - 0
qs_zhaoshang/api/work/count.js

@@ -0,0 +1,125 @@
+import request from '@/utils/request'
+
+// 招商情况月统计
+export function getstatMonthFn(data) {
+  return request({
+    url: '/projectV2/common/statistics/month',
+    method: 'get',
+	data:data
+  })
+}
+// 对接客商列表
+export function getdjkslistFn(data) {
+  return request({
+    url: '/projectV2/djks/list',
+    method: 'get',
+	data:data
+  })
+}
+// 对接客商新增
+export function getdjksaddFn(data) {
+  return request({
+    url: '/projectV2/djks',
+    method: 'post',
+	data:data
+  })
+}
+// 对接客商修改
+export function getdjksputFn(data) {
+  return request({
+    url: '/projectV2/djks/put',
+    method: 'post',
+	data:data
+  })
+}
+// 对接客商详情
+export function getdjksdetailFn(data) {
+  return request({
+    url: '/projectV2/djks/'+data,
+    method: 'get',
+	data:data
+  })
+}
+// 对接客商删除
+export function getdjksdelFn(data) {
+  return request({
+    url: '/projectV2/djks/delete/'+data,
+    method: 'get',
+	data:data
+  })
+}
+
+// 外出招商列表
+export function getwczslistFn(data) {
+  return request({
+    url: '/projectV2/wczs/list',
+    method: 'get',
+	data:data
+  })
+}
+// 外出招商新增
+export function getwczsaddFn(data) {
+  return request({
+    url: '/projectV2/wczs',
+    method: 'post',
+	data:data
+  })
+}
+// 外出招商修改
+export function getwczsputFn(data) {
+  return request({
+    url: '/projectV2/wczs/put',
+    method: 'post',
+	data:data
+  })
+}
+// 外出招商详情
+export function getwczsdetailFn(data) {
+  return request({
+    url: '/projectV2/wczs/'+data,
+    method: 'get',
+	data:data
+  })
+}
+// 外出招商删除
+export function getwczsdelFn(data) {
+  return request({
+    url: '/projectV2/wczs/delete/'+data,
+    method: 'get',
+	data:data
+  })
+}
+
+
+
+// // 统计输入列表
+// export function getqktjListFn(data) {
+//   return request({
+//     url: '/system/qktj/list',
+//     method: 'get',
+// 	data:data
+//   })
+// }
+// // 统计列表详情
+// export function getqktjDetailtFn(data) {
+//   return request({
+//     url: '/system/qktj/'+data,
+//     method: 'get',
+//   })
+// }
+// //统计新增
+// export function getqktjAddFn(data) {
+//   return request({
+//     url: '/system/qktj',
+//     method: 'post',
+// 	data:data
+//   })
+// }
+// // 统计修改
+// export function getqktjputFn(data) {
+//   return request({
+//     url: '/system/qktj/put',
+//     method: 'post',
+// 	data:data
+//   })
+// }

+ 55 - 0
qs_zhaoshang/api/work/index.js

@@ -0,0 +1,55 @@
+import request from '@/utils/request'
+
+// 查询轮播图列表
+export function getBannerlist(data) {
+  return request({
+    url: '/system/rotograph/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//消息通知未读消息条数
+export function getNoticenumber(data) {
+  return request({
+    url: '/system/notice/number',
+    method: 'get',
+	data:data,
+  })
+}
+//查看消息通知列表
+export function getNoticelist(data) {
+  return request({
+    url: '/system/notice/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//
+export function getdbdnumber(data) {
+  return request({
+    url: '/projectV2/dbd/number',
+    method: 'get',
+	data:data
+  })
+}
+//首页统计
+export function getCommonCensus(data) {
+  return request({
+    url: '/projectV2/common/census',
+    method: 'post',
+	data:data,
+	type:true
+  })
+}
+
+// 字典值yzdqId
+export function getDictionaryFn(data) {
+  return request({
+    url: '/system/dict/data/type/'+data,
+    method: 'get',
+	type:true
+  })
+}
+

+ 89 - 0
qs_zhaoshang/api/zdwork/addclue.js

@@ -0,0 +1,89 @@
+import request from '@/utils/request'
+
+
+//新增项目申报表fgw:xmsb:add
+export function getxmsbAddFn(data) {
+  return request({
+    url: '/fgw/xmsb',
+    method: 'post',
+	data:data
+  })
+}
+//修改项目申报表fgw:xmsb:edit
+export function getxmsbPutFn(data) {
+  return request({
+    url: '/fgw/xmsb/put',
+    method: 'post',
+	data:data
+  })
+}
+//删除
+export function getxmsbdelFn(data) {
+  return request({
+    url: '/fgw/xmsb/delete/'+data,
+    method: 'get',
+  })
+}
+
+//项目申报表详情fgw:xmsb:query
+export function getxmsbDetail(data) {
+  return request({
+    url: '/fgw/xmsb/'+data,
+    method: 'get',
+  })
+}
+
+
+//新增节点安排fgw:jdap:add
+export function getaddzdapdFn(data) {
+  return request({
+    url: '/fgw/jdap',
+    method: 'post',
+	data:data,
+  })
+}
+// 修改节点安排fgw:jdap:edit
+export function getputzdapdFn(data) {
+  return request({
+    url: '/fgw/jdap/put',
+    method: 'post',
+	data:data
+  })
+}
+// 删除节点安排fgw:jdap:remove
+export function getdelzdapdFn(data) {
+  return request({
+    url: '/fgw/jdap/delete/'+data,
+    method: 'get',
+  })
+}
+// 查看节点安排fgw:jdap:list
+export function getlistzdapdFn(data) {
+  return request({
+    url: '/fgw/jdap/list',
+    method: 'get',
+	data:data
+  })
+}
+// 查看节点安排详情fgw:jdap:query
+export function getdetailzdapdFn(data) {
+  return request({
+    url: '/fgw/jdap/'+data,
+    method: 'get',
+  })
+}
+// 节点安排审核fgw:jdap:jdsh
+export function getshzdapdFn(data) {
+  return request({
+    url: '/fgw/jdap/jdsh',
+    method: 'get',
+	data:data
+  })
+}
+// 节点安排催报fgw:jdap:jdcb
+export function getcbzdlapdFn(data) {
+  return request({
+    url: '/fgw/jdap/cb/'+data,
+    method: 'get',
+  })
+}

+ 189 - 0
qs_zhaoshang/api/zdwork/clue.js

@@ -0,0 +1,189 @@
+import request from '@/utils/request'
+//项目申报表列表fgw:xmsb:list
+export function getxmsbListFn(data) {
+  return request({
+    url: '/fgw/xmsb/list',
+    method: 'get',
+	data:data
+  })
+}
+// 项目统计
+export function getxmsbListnumFn(data) {
+  return request({
+    url: '/fgw/xmsb/num',
+    method: 'get',
+	data:data
+  })
+}
+// 新增项目审核意见fgw:common:xmsh
+export function getaddzdshyjFn(data) {
+  return request({
+    url: '/fgw/common/xmsh',
+    method: 'post',
+	data:data
+  })
+}
+
+// 前期工作手续审核fgw:common:sxsh
+export function getshsxshFn(data) {
+  return request({
+    url: '/fgw/common/sxsh',
+    method: 'post',
+	data:data
+  })
+}
+// 建设阶段审核接口fgw:common:jssh
+export function getshjsshFn(data) {
+  return request({
+    url: '/fgw/common/jssh',
+    method: 'post',
+	data:data
+  })
+}
+// 竣工阶段审核fgw:common:jgsh
+export function getshjgshFn(data) {
+  return request({
+    url: '/fgw/common/jgsh',
+    method: 'post',
+	data:data
+  })
+}
+// 竣工阶段申请fgw:common:jgsq
+export function getsqjgsqFn(data) {
+  return request({
+    url: '/fgw/common/jgsq',
+    method: 'post',
+	data:data
+  })
+}
+
+
+// 查看项目审核意见fgw:shyj:list
+export function getlistzdshyjFn(data) {
+  return request({
+    url: '/fgw/shyj/list',
+    method: 'get',
+	data:data
+  })
+}
+
+// 新增项目进展情况fgw:jzqk:add
+export function getaddzdjzqkFn(data) {
+  return request({
+    url: '/fgw/jzqk',
+    method: 'post',
+	data:data
+  })
+}
+// 修改项目进展情况fgw:jzqk:edit
+export function getputzdjzqkFn(data) {
+  return request({
+    url: '/fgw/jzqk/put',
+    method: 'post',
+	data:data
+  })
+}
+// 删除项目进展情况fgw:jzqk:remove
+export function getdelzdjzqkFn(data) {
+  return request({
+    url: '/fgw/jzqk/delete/'+data,
+    method: 'get',
+  })
+}
+// 查看项目进展情况fgw:jzqk:list
+export function getlistzdjzqkFn(data) {
+  return request({
+    url: '/fgw/jzqk/list',
+    method: 'get',
+	data:data
+  })
+}
+// 查看项目进展详情fgw:jzqk:query
+export function getdetailzdjzqkFn(data) {
+  return request({
+    url: '/fgw/jzqk/'+data,
+    method: 'get',
+  })
+}
+// 进展情况审核fgw:common:jzqksh
+export function getshzdjzqkFn(data) {
+  return request({
+    url: '/fgw/common/jzqksh',
+    method: 'post',
+	data:data
+  })
+}
+// 批示
+// 新增领导批示fgw:ldps:add
+export function getaddzdldpsFn(data) {
+  return request({
+    url: '/fgw/ldps',
+    method: 'post',
+	data:data
+  })
+}
+// 修改领导批示fgw:ldps:edit
+export function getputzdldpsFn(data) {
+  return request({
+    url: '/fgw/ldps/put',
+    method: 'post',
+	data:data
+  })
+}
+// 删除领导批示fgw:ldps:remove
+export function getdelzdldpsFn(data) {
+  return request({
+    url: '/fgw/ldps/delete',
+    method: 'get',
+	data:data
+  })
+}
+// 查看领导批示列表fgw:ldps:list
+export function getlistzdldpsFn(data) {
+  return request({
+    url: '/fgw/ldps/list',
+    method: 'get',
+	data:data
+  })
+}
+// 查询领导批示的暂存信息fgw:ldps:queryZc
+export function getzczdldpsFn(data) {
+  return request({
+    url: '/fgw/ldps/zc',
+    method: 'get',
+	data:data
+  })
+}
+//查看领导批示项目列表fgw:xmsb:ldps:list
+export function getxmlistzdldpsFn(data) {
+  return request({
+    url: '/fgw/xmsb/ldps/list',
+    method: 'get',
+	data:data
+  })
+}
+
+// 查看项目预警列表
+export function getxmyjistFn(data) {
+  return request({
+    url: '/fgw/xmsb/xmyj/list',
+    method: 'get',
+	data:data
+  })
+}
+// 查看超期项目列表
+export function getcqxmistFn(data) {
+  return request({
+    url: '/fgw/xmsb/cqxm/list',
+    method: 'get',
+	data:data
+  })
+}
+// 项目详情附件催报fgw:xmxq:fjcb
+export function getxmfjcbFn(data) {
+  return request({
+    url: '/fgw/jdap/fj/cb',
+    method: 'get',
+	data:data
+  })
+}

+ 100 - 0
qs_zhaoshang/api/zdwork/index.js

@@ -0,0 +1,100 @@
+import request from '@/utils/request'
+
+// 查询轮播图列表
+export function getBannerlist(data) {
+  return request({
+    url: '/system/rotograph/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//消息通知未读消息条数
+export function getNoticenumber(data) {
+  return request({
+    url: '/system/notice/number',
+    method: 'get',
+	data:data,
+  })
+}
+//查看消息通知列表
+export function getNoticelist(data) {
+  return request({
+    url: '/system/notice/list',
+    method: 'get',
+	data:data
+  })
+}
+
+//
+export function getdbdnumber(data) {
+  return request({
+    url: '/projectV2/dbd/number',
+    method: 'get',
+	data:data
+  })
+}
+//首页统计
+export function getCommonCensus(data) {
+  return request({
+    url: '/fgw/common/census',
+    method: 'post',
+	data:data,
+	type:true
+  })
+}
+//节点统计
+export function getCommonsbAndJdNum(data) {
+  return request({
+    url: '/fgw/common/sbAndJdNum',
+    method: 'post',
+	data:data,
+	type:true
+  })
+}
+// 统计项目整体概况
+export function getCommonxmztgk(data) {
+  return request({
+    url: '/fgw/common/xmztgk',
+    method: 'post',
+	data:data,
+	type:true
+  })
+}
+
+// 责任单位超期fgw:common:zrdwCqNum
+export function getzrdwCqNumFn(data) {
+  return request({
+    url: '/fgw/common/zrdwCqNum',
+    method: 'post',
+	data:data,
+	type:true
+  })
+}
+// 本月汇报进度fgw:common:hbjd
+export function getCommonhbjd(data) {
+  return request({
+    url: '/fgw/common/hbjd',
+    method: 'post',
+	data:data,
+	type:true
+  })
+}
+// 首页_催报fgw:sytj:sycb
+export function getjdapsycb(data) {
+  return request({
+    url: '/fgw/jdap/sycb',
+    method: 'post',
+	data:data,
+  })
+}
+
+// 字典值yzdqId
+export function getDictionaryFn(data) {
+  return request({
+    url: '/system/dict/data/type/'+data,
+    method: 'get',
+	type:true
+  })
+}
+

+ 286 - 0
qs_zhaoshang/components/addclue/first.vue

@@ -0,0 +1,286 @@
+<template>
+	<view>
+		<uni-forms class='inform'  ref="form" :rules="rules" :value="datainfo">
+			<view class="info_tit">基本信息</view>
+			<uni-forms-item name="sbdw" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>上报单位</view>
+			  	<input  placeholder="请输入上报单位" v-model="datainfo.sbdw"   class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="tbrq" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>填表日期</view>
+			  	<picker mode="date" :value="datainfo.tbrq" class="infolist_a" @change='bindDateChange'>
+					<view :class="datainfo.tbrq?'':'f16 co80'">{{datainfo.tbrq||"请选择填表日期"}}</view>
+			  	</picker>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="zszxfzr" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目负责人</view>
+			  	<input  placeholder="请输入项目负责人姓名" v-model="datainfo.zszxfzr"   class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<view class="info_tit">投资方信息</view>
+			<uni-forms-item name="ziranren" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+				 <view class="flexc infolist_add" @click="getAdd">
+					 <image :src="addimg"></image>
+					 <view>新增企业/自然人</view>
+				 </view>
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>添加企业/自然人</view>
+				<view class="flex1 txr flexc">
+					<text class="uni-calendar__header-text" v-if="datainfo.sbdw">{{datainfo.sbdw}}</text>
+					<text class="f16 co80" v-else>请先选择添加企业/自然人</text>
+					<image :src="delimg" class="delimg"></image>
+				</view>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="tzrxm" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投资人姓名</view>
+			  	<input  placeholder="请输入投资人姓名" v-model="datainfo.tzrxm"  class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="tzrzw" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12">投资人职务</view>
+			  	<input  placeholder="请输入投资人职务" v-model="datainfo.tzrzw"  class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="tzrdh" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12">联系方式</view>
+			  	<input  placeholder="请输入联系方式" v-model="datainfo.tzrdh"  class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="gtzzrsfzhm" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12">身份证号</view>
+			  	<input  placeholder="请输入个体投资人身份证号" v-model="datainfo.gtzzrsfzhm"  class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="qytzrxyzdm" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12">信用证代码</view>
+			  	<input  placeholder="请输入企业投资人信用证代码" v-model="datainfo.qytzrxyzdm"   class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			
+		</uni-forms>
+		<view class="infobtn flexcc cf f16 f500" @click="getNext">下一步</view>
+		<!-- 弹框 -->
+		<view class="bgbox" @click="getClose" v-if="addflag"></view>
+		<view class="fixedbox" v-if="addflag">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">添加信息</view>
+			<view  class="boxs">
+				<view class="mb30">
+					<view class="flexc">
+						<view class="flexcc boxcen" :class="shenflag?'act':''" @click="shenflag=true">
+							<image :src="gcheckimg" v-if="shenflag"></image>
+							<image :src="checknimg" v-else></image>
+							<view :class="shenflag?'co28':''">添加企业</view>
+						</view>
+						<view class="flexcc boxcen" :class="shenflag?'':'act'" @click="shenflag=false">
+							<image :src="checknimg" v-if="shenflag"></image>
+							<image :src="gcheckimg" v-else></image>
+							<view :class="shenflag?'':'co28'">添加自然人</view>
+						</view>
+					</view>
+				</view>
+				<!-- 企业 -->
+				<uni-forms ref="qiform" :rules="qirules" :value="qiinfo" v-if="shenflag">
+					<uni-forms-item name="companyName" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业名称</view>
+					  	<input  placeholder="请输入企业名称" v-model="qiinfo.companyName"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="companyAddress" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业所在地</view>
+					  	<input  placeholder="请输入企业所在地" v-model="qiinfo.companyAddress"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="companyLegal" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>法人代表姓名</view>
+					  	<input  placeholder="请输入法人代表姓名" v-model="qiinfo.companyLegal" class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="companyCode" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>统一社会信用代码</view>
+					  	<input  placeholder="请输入统一社会信用代码" v-model="qiinfo.companyCode" class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="phone" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>联系方式</view>
+					  	<input  placeholder="请输入联系方式" v-model="qiinfo.phone"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					
+				</uni-forms>
+				<!-- 自然人 -->
+				<uni-forms ref="ziform" :rules="zirules" :value="ziinfo" v-else>
+					<uni-forms-item name="idcode" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12">身份证号码</view>
+					  	<input  placeholder="请输入身份证号码" v-model="ziinfo.idcode"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="name" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>姓名</view>
+					  	<input  placeholder="请输入姓名" v-model="ziinfo.name"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="address" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>自然人所在地</view>
+					  	<input  placeholder="请输入自然人所在地" v-model="ziinfo.address"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="phone" style='margin-bottom: 0;'>
+					 <view class="flexc infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>联系方式</view>
+					  	<input  placeholder="请输入联系方式" v-model="ziinfo.phone"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					
+				</uni-forms>
+			</view>
+			<view class="fixedbtn" @click="getyjSubmit">确认</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				datainfo:{
+					sbdw:'',
+					tbrq:'',
+					zszxfzr:'',
+					tzrxm:'',
+					tzrzw:'',
+					tzrdh:'',
+					gtzzrsfzhm:'',
+					qytzrxyzdm:'',
+				},
+				qiinfo:{
+					companyName:'',
+					companyAddress:'',
+					companyLegal:'',
+					companyCode:'',
+					phone:'',
+				},
+				ziinfo:{
+					name:'',
+					address:'',
+					idcode:'',
+					phone:'',
+				},
+				addflag:false,
+				shenflag:true,
+				addimg:require("@/static/images/mine/add.png"),
+				delimg:require("@/static/images/mine/del.png"),
+				checknimg:require("@/static/images/mine/jnicon.png"),
+				gcheckimg:require("@/static/images/mine/jicon.png"),
+				closeimg:require('@/static/images/close.png'),
+				rules: {
+				  sbdw: {rules: [{required: true,errorMessage: '请输入上报单位'}]},
+				  tbrq: {rules: [{required: true,errorMessage: '请选择填表日期',}]},
+				  zszxfzr: {rules: [{required: true,errorMessage: '请输入项目负责人姓名' } ]},
+				  tzrxm: {rules: [{required: true,errorMessage: '请输入投资人姓名'} ]},
+				},
+				qirules:{
+					companyName: {rules: [{required: true,errorMessage: '请输入企业名称'}]},
+					companyAddress: {rules: [{required: true,errorMessage: '请输入企业所在地'}]},
+					companyLegal: {rules: [{required: true,errorMessage: '请输入法人代表姓名'}]},
+					companyCode: {rules: [{required: true,errorMessage: '请输入统一社会信用代码'}]},
+					phone: {rules: [{required: true,errorMessage: '请输入联系方式'}]},
+				},
+				zirules:{
+					name: {rules: [{required: true,errorMessage: '请输入姓名'}]},
+					address: {rules: [{required: true,errorMessage: '请输入自然人所在地'}]},
+					phone: {rules: [{required: true,errorMessage: '请输入联系方式'}]},
+				}
+			}
+		},
+		mounted() {
+			//  {
+			//   pattern:  /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/,
+			//   message: '身份证格式错误',
+			//   trigger: 'blur'
+			// }
+			
+		},
+		methods:{
+			bindDateChange(e) {
+				
+				this.datainfo.tbrq = e.detail.value
+			},
+			getClose(){
+				this.addflag=false
+			},
+			getAdd(){
+				this.addflag=true;
+			},
+			getNext(){
+				
+				this.$emit("getNext")
+				// this.$refs.form.validate().then(res => {
+				// })
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	.delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+
+// // 弹窗
+.fixedbox{position: fixed;left:24rpx;right: 24rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-60%);z-index: 20;padding: 48rpx 36rpx 68rpx;max-height: calc(100vh - 200rpx);overflow: auto;box-sizing: border-box;
+.infolist{padding:24rpx 0 24rpx 0;}
+.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;z-index: 22;}
+.chebox{position: absolute;right: 36rpx;top:54rpx;display: flex;align-items: center;
+	image{width: 30rpx;height: 32rpx;margin-right: 12rpx;}
+	view{font-size: 32rpx;font-weight: 500;color: #F13800;;}
+}
+.top{position: relative;text-align: center;font-size: 32rpx;font-weight: bold;color: #343434;}
+.boxs{padding: 60rpx 0;
+	.box{display: flex;align-items: center;min-height:100rpx;}
+	.boxcen{flex:1;
+		&.act{
+			view{color: #FF6400;}
+		}
+		image{width: 32rpx;height: 32rpx;margin-right: 20rpx;}
+		view{font-size: 32rpx;font-weight: 500;
+color: #666666;}
+	}
+	
+
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+</style>

+ 198 - 0
qs_zhaoshang/components/addclue/second.vue

@@ -0,0 +1,198 @@
+<template>
+	<view>
+		<uni-forms class='inform'  ref="form" :rules="rules" :value="datainfo">
+			<view class="info_tit">项目信息</view>
+			<uni-forms-item name="xmbh" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12">项目编号</view>
+			  	<input  placeholder="请输入项目编号" v-model="datainfo.xmbh"   class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="xmxsmc" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目线索名称</view>
+			  	<input  placeholder="请输入项目线索名称" v-model="datainfo.xmxsmc"    class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="sfwlhxxxm" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>是否为领航信息项目</view>
+				<picker  range-key='label' :value="lhindex" :range="lhlist" class="infolist_a" @change='bindDateChangea'>
+					<view :class="datainfo.sfwlhxxxm?'':'f16 co80'">{{datainfo.sfwlhxxxm||"请选择是否为领航信息"}}</view>
+				</picker>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="yzssName" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>引资省市</view>
+			  	<input  placeholder="请输入引资省市" v-model="datainfo.yzssName"    class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="ntze" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟投资额 (亿元)</view>
+			  	<input  placeholder="请输入拟投资额" v-model="datainfo.ntze"  class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="cylxName" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>产业类型</view>
+				<picker  range-key='label' :value="cyindex" :range="cylist" class="infolist_a" @change='bindDateChangeb'>
+					<view :class="datainfo.cylxName?'':'f16 co80'">{{datainfo.cylxName||"请选择产业类型"}}</view>
+				</picker>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="xmlb" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目类别</view>
+				<!-- 多选 -->
+				<view :class="datainfo.xmlb?'infolist_a':'flex1 txr f16 co80'" @click="getMoreFn(0)">{{datainfo.xmlb||"请选择项目类别"}}</view>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="nlhd" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟落户地</view>
+				<picker  range-key='label' :value="cyindex" :range="cylist" class="infolist_a" @change='bindDateChangec'>
+					<view :class="datainfo.nlhd?'':'f16 co80'">{{datainfo.nlhd||"请选择拟落户地"}}</view>
+				</picker>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="xmjj" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目简介</view>
+			  	<input  placeholder="请输入项目简介" v-model="datainfo.xmjj"   class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="qybj" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业背景</view>
+				<view :class="datainfo.qybj?'infolist_a':'flex1 txr f16 co80'" @click="getMoreFn(0)">{{datainfo.qybj||"请选择企业背景"}}</view>
+			  </view>
+			</uni-forms-item>
+		</uni-forms>
+		<view class="infobtn flexcc cf f16 f500" @click="getNext">下一步</view>
+		<!-- 弹框 -->
+		<view class="bgbox" @click="getClose" v-if="tanfalg"></view>
+		<view class="fixedbox"  v-if="tanfalg">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">企业背景</view>
+			<view class="boxs">
+				<uni-data-checkbox :map="map" multiple v-model="qybgvalue" :localdata="qybglist" ></uni-data-checkbox>
+			</view>
+			<view class="fixedbtn" @click="roleSure">确认</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				datainfo:{
+					xmbh:'',
+					xmxsmc:'',
+					sfwlhxxxm:'',
+					yzssName:'',
+					ntze:'',
+					cylxId:'',
+					cylxName:'',
+					xmlb:'',
+					nlhd:'',
+					xmjj:'',
+					qybj:'',
+				},
+				tanfalg:false,
+				addimg:require("@/static/images/mine/add.png"),
+				delimg:require("@/static/images/mine/del.png"),
+				checknimg:require("@/static/images/mine/jnicon.png"),
+				gcheckimg:require("@/static/images/mine/jicon.png"),
+				closeimg:require('@/static/images/close.png'),
+				rules: {
+				  xmxsmc: {rules: [{required: true,errorMessage: '请输入项目线索名称'}]},
+				  sfwlhxxxm: {rules: [{required: true,errorMessage: '请选择是否为领航信息',}]},
+				  yzssName: {rules: [{required: true,errorMessage: '请输入引资省市' } ]},
+				  ntze: {rules: [{required: true,errorMessage: '请输入拟投资额'} ]},
+				  cylxName: {rules: [{required: true,errorMessage: '请选择产业类型'} ]},
+				  xmlb: {rules: [{required: true,errorMessage: '请选择项目类别'} ]},
+				  nlhd: {rules: [{required: true,errorMessage: '请选择拟落户地'} ]},
+				  xmjj: {rules: [{required: true,errorMessage: '请输入项目简介'} ]},
+				  qybj: {rules: [{required: true,errorMessage: '请选择企业背景'} ]},
+				  
+				},
+				lhindex:0,
+				lhlist:[{label:'是',id:'Y'},{label:'否',id:'N'},],//领航
+				cyindex:0,
+				cylist:[{label:'是',id:'Y'},{label:'否',id:'N'}],
+				map:{text:'label',value:'id'},
+				qybglist:[{label:'500强企业',id:1},{label:'上市部门',id:2},{label:'行业100强',id:3},{label:'头部企业',id:4}]
+				
+			}
+		},
+		mounted() {
+			
+		},
+		methods:{
+			// 领航
+			bindDateChangea(e) {
+				var val=e.detail.value;
+				this.datainfo.sfwlhxxxm=this.lhlist[val].label
+			},
+			// 产业类型
+			bindDateChangeb(e) {
+				var val=e.detail.value;
+				this.datainfo.sfwlhxxxm=this.lhlist[val].label
+			},
+			// 多选
+			getMoreFn(idx){
+				this.tanfalg=true
+			},
+			getClose(){
+				this.tanfalg=false
+			},
+			getAdd(){
+				this.tanfalg=true;
+			},
+			getNext(){
+				this.$emit("getNext")
+				// this.$refs.form.validate().then(res => {
+				// })
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	.delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+// 弹窗
+
+// .fixedbox  /deep/ .uni-data-checklist .checklist-group .checklist-box{padding: 44rpx 0;border-bottom: 2rpx solid  #E5E5E5;margin: 0;
+//   &:last-of-type{border-bottom: none;}}
+.fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box{margin-right: 30rpx;padding: 4rpx 0;}
+.fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-text{color: #343434;font-size: 30rpx;}
+// .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner{margin-right: 40rpx;}
+.fixedbox    /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: #FF440B; background-color: #FF440B;}
+.fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text{color: #343434;}
+ 
+
+.fixedbox{position: fixed;left:24rpx;right: 24rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-60%);z-index: 20;padding: 48rpx 36rpx 68rpx;max-height: calc(100vh - 200rpx);overflow: auto;box-sizing: border-box;
+.infolist{padding:24rpx 0 24rpx 0;}
+.top{position: relative;text-align: center;font-size: 32rpx;font-weight: bold;color: #343434;}
+.boxs{padding: 60rpx 0;
+	.box{display: flex;align-items: center;min-height:100rpx;}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+
+</style>

+ 152 - 0
qs_zhaoshang/components/addclue/third.vue

@@ -0,0 +1,152 @@
+<template>
+	<view>
+		<uni-forms class='inform'  ref="thirdform" :rules="thirdrules" :value="datainfo">
+			<view class="info_tit">首谈信息</view>
+			<uni-forms-item name="name" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈人姓名</view>
+			  	<input  placeholder="请输入首谈人姓名" v-model="datainfo.name"  class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="zw" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈人职务</view>
+			  	<input  placeholder="请输入首谈人职务" v-model="datainfo.zw"   class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="phone" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈人联系方式</view>
+			  	<input  placeholder="请输入首谈人联系方式" v-model="datainfo.phone"    class="f16  c34 flex1 txr"/>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="strq" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈日期</view>
+			  	<picker mode="date" :value="datainfo.strq" class="infolist_a" @change='bindDateChange'>
+					<view :class="datainfo.strq?'':'f16 co80'">{{datainfo.strq||"请选择首谈日期"}}</view>
+			  	</picker>
+			  </view>
+			</uni-forms-item>
+			
+			<view class="border"></view>
+			<uni-forms-item name="dqjz" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>当前进展</view>
+				<picker  range-key='label' :value="cyindex" :range="cylist" class="infolist_a" @change='bindDateChangeb'>
+					<view :class="datainfo.dqjz?'':'f16 co80'">{{datainfo.dqjz||"请输入当前进展"}}</view>
+				</picker>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="fjName" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12">附件</view>
+				<view class="infolist_a co28">上传附件</view>
+			  </view>
+			</uni-forms-item>
+			<view class=" cldelistbf" >
+				<view class="flext f15 c6">
+					<view class="imgl"><image :src="wimg" ></image></view>
+					<view>附件名称fjName</view>
+				</view>
+				<view class="flexc f15 co28 flex0" @click="getDown(ite.path,ite.fjName)">
+					<image :src="downimg" class="imgr"></image>预览
+				</view>
+			</view>
+			<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+		</uni-forms>
+		<view class="infobtn flexcc cf f16 f500" @click="getNext">提交</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				datainfo:{
+					name:'',
+					zw:'',
+					phone:'',
+					strq:'',
+					dqjz:'',
+				},
+				tanfalg:false,
+				addimg:require("@/static/images/mine/add.png"),
+				delimg:require("@/static/images/mine/del.png"),
+				checknimg:require("@/static/images/mine/jnicon.png"),
+				gcheckimg:require("@/static/images/mine/jicon.png"),
+				closeimg:require('@/static/images/close.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				thirdrules: {
+				  name: {rules: [{required: true,errorMessage: '请输入首谈人姓名'}]},
+				  zw: {rules: [{required: true,errorMessage: '请输入首谈人职务',}]},
+				  phone: {rules: [{required: true,errorMessage: '请输入首谈人联系方式' } ]},
+				  strq: {rules: [{required: true,errorMessage: '请选择首谈日期'} ]},
+				  dqjz: {rules: [{required: true,errorMessage: '请输入当前进展'} ]}, 
+				},
+				lhindex:0,
+				lhlist:[{label:'是',id:'Y'},{label:'否',id:'N'},],//领航
+				cyindex:0,
+				cylist:[{label:'是',id:'Y'},{label:'否',id:'N'}],
+				map:{text:'label',value:'id'},
+				qybglist:[{label:'500强企业',id:1},{label:'上市部门',id:2},{label:'行业100强',id:3},{label:'头部企业',id:4}]
+				
+			}
+		},
+		mounted() {
+			
+		},
+		methods:{
+			// 领航
+			bindDateChangea(e) {
+				var val=e.detail.value;
+				this.datainfo.sfwlhxxxm=this.lhlist[val].label
+			},
+			// 产业类型
+			bindDateChangeb(e) {
+				var val=e.detail.value;
+				this.datainfo.sfwlhxxxm=this.lhlist[val].label
+			},
+			bindDateChangec(e) {
+				// var val=e.detail.value;
+				// this.datainfo.sfwlhxxxm=this.lhlist[val].label
+			},
+			bindDateChanged(e) {
+				// var val=e.detail.value;
+				// this.datainfo.sfwlhxxxm=this.lhlist[val].label
+			},
+			// 多选
+			getMoreFn(idx){
+				this.tanfalg=true
+			},
+			getClose(){
+				this.tanfalg=false
+			},
+			getAdd(){
+				this.tanfalg=true;
+			},
+			getNext(){
+				this.$refs.form.validate().then(res => {
+					
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	.delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+
+
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+
+</style>

+ 124 - 0
qs_zhaoshang/components/ba-tree-picker/README.md

@@ -0,0 +1,124 @@
+## 树形层级选择器
+### 简介
+为统一样式而生,树形层级选择器,picker弹窗形式的,样式和比例参照uniapp的picker和uni-data-picker组件
+* 支持单选、多选、父级选择,当然也支持单层选择
+* 支持Object对象属性自定义映射
+* 支持显示全部选中、部分选中、未选中三种状态
+* 支持快速自定义简单样式(分割线、按钮、标题、对齐等),深入样式可复写css
+
+### 使用方法
+在 `script` 中引入组件
+``` javascript
+	import baTreePicker from "@/components/ba-tree-picker/ba-tree-picker.vue"
+	export default {
+		components: {
+			baTreePicker
+		}
+```
+在 `template` 中使用组件
+``` javascript
+	<ba-tree-picker ref="treePicker" :multiple='false' @select-change="selectChange" title="选择城市"
+		:localdata="listData" valueKey="value" textKey="label" childrenKey="children" />
+```
+在 `script` 中定义打开方法,和选择监听
+``` javascript
+		methods: {
+			// 显示选择器
+			showPicker() {
+				this.$refs.treePicker._show();
+			},
+			//监听选择(ids为数组)
+			selectChange(ids, names) {
+				console.log(ids, names)
+			}
+		}
+```
+在 `template` 中调用打开
+``` javascript
+	<view @click="showPicker">调用选择器</view>
+```
+
+### 属性
+|属性名|类型|默认值|说明|
+|:-|:-:|:--:|-:|
+|localdata|Array|[]|源数据,目前支持tree结构,后续会考虑支持扁平化结构|
+|valueKey|String|id|指定 Object 中 key 的值作为节点数据id|
+|textKey|String|name|指定 Object 中 key 的值作为节点显示内容|
+|childrenKey|String|children|指定 Object 中 key 的值作为节点子集|
+|multiple|Boolean|false|是否多选,默认单选|
+|selectParent|Boolean|true|是否可以选父级,默认可以|
+|title|String| |标题|
+|titleColor|String||标题颜色|
+|confirmColor|String|#0055ff|确定按钮颜色|
+|cancelColor|String|#757575|取消按钮颜色|
+|switchColor|String|#666|节点切换图标颜色|
+|border|Boolean|false|是否有分割线,默认无|
+
+
+
+###  数据格式
+
+注意:必须有id、name(id可通过valueKey来配置为其它键值,如value)字段,且唯一
+
+``` json
+[
+    {
+        id: 1,
+        name: '公司1',
+        children: [{
+            id: 11,
+            name: '研发部',
+            children: [{
+                id: 111,
+                name: '张三',
+                
+            },{
+                id: 112,
+                name: '李四',
+                
+            }]
+        },{
+            id: 12,
+            name: '综合部',
+            
+        } ]
+    },
+    {
+        id: 2,
+        name: '公司2',
+        children: [{
+            id: 21,
+            name: '研发部',
+            
+        },{
+            id: 22,
+            name: '综合部',
+            
+        },{
+            id: 23,
+            name: '财务部',
+            
+        }, ]
+    },
+    {
+        id: 3,
+        name: '公司3'
+    },
+    {
+        id: 4,
+        name: '公司4',
+        children: [{
+            id: 41,
+            name: '研发部',
+            
+        }]
+    }
+]
+```
+</details>
+
+### 方法
+|方法名|参数|默认值|说明|
+|:-|:-:|:--:|-:|
+|_show()| | |显示选择器|
+|_hide()| | |隐藏选择器|

+ 650 - 0
qs_zhaoshang/components/ba-tree-picker/ba-tree-picker.vue

@@ -0,0 +1,650 @@
+<!-- 树形层级选择器-->
+<!-- 1、支持单选、多选 -->
+<template>
+	<view>
+		<!-- <view class="tree-cover" :class="{'show':showDialog}" @tap="_cancel"></view> -->
+		<!-- <view class="tree-dialog" :class="{'show':showDialog}"> -->
+			<!-- <view class="tree-bar">
+				<view class="tree-bar-cancel" :style="{'color':cancelColor}" hover-class="hover-c" @tap="_cancel">取消
+				</view>
+				<view class="tree-bar-title" :style="{'color':titleColor}">{{title}}</view>
+				<view class="tree-bar-confirm" :style="{'color':confirmColor}" hover-class="hover-c" @tap="_confirm">
+					{{multiple?'确定':''}}
+				</view>
+			</view> -->
+			<view class="tree-view">
+				<scroll-view class="tree-list" :scroll-y="true">
+					<block v-for="(item, index) in treeList" :key="index">
+						<view class="tree-item" :style="[{
+							paddingLeft: item.level*30 + 'rpx'
+						}]" :class="{
+							itemBorder: border === true,
+							show: item.isShow
+						}">
+							<view class="item-label">
+								<view class="item-icon flexcc" @tap.stop="_onItemSwitch(item, index)">
+									<view v-if="!item.isLastLevel&&item.isShowChild" class="switch-on"
+										:style="{'border-left-color':switchColor}">
+									</view>
+									<view v-else-if="!item.isLastLevel&&!item.isShowChild" class="switch-off"
+										:style="{'border-top-color':switchColor}">
+									</view>
+									<view v-else class="item-last-dot" :style="{'border-top-color':switchColor}">
+									</view>
+								</view>
+								<view class="flexc uni-inline-item" @tap.stop="_onItemSelect(item, index)">
+									
+									<view class="item-check" v-if="selectParent?true:item.isLastLevel">
+										<view class="item-check-yes" v-if="item.checkStatus==1"
+											:class="{'radio':!multiple}" :style="{'border-color':confirmColor}">
+											<view class="item-check-yes-part"
+												:style="{'background-color':confirmColor}">
+											</view>
+										</view>
+										<view class="item-check-yes" v-else-if="item.checkStatus==2"
+											:class="{'radio':!multiple}" :style="{'border-color':confirmColor}">
+											<view class="item-check-yes-all" :style="{'background-color':confirmColor}">
+											</view>
+										</view>
+										<view class="item-check-no" v-else :class="{'radio':!multiple}"
+											:style="{'border-color':confirmColor}"></view>
+									</view>
+									<view class="item-name"> {{item.name+(item.childCount?"("+item.childCount+")":'')}}</view>
+								</view>
+							</view>
+
+						</view>
+					</block>
+				</scroll-view>
+			</view>
+		<!-- </view> -->
+	</view>
+</template>
+
+<script>
+	export default {
+		emits: ['select-change'],
+		name: "ba-tree-picker",
+		props: {
+			valueKey: {
+				type: String,
+				default: 'id'
+			},
+			textKey: {
+				type: String,
+				default: 'name'
+			},
+			childrenKey: {
+				type: String,
+				default: 'children'
+			},
+			localdata: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			localTreeList: { //在已经格式化好的数据
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			selectedData: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			title: {
+				type: String,
+				default: ''
+			},
+			multiple: { // 是否可以多选
+				type: Boolean,
+				default: true
+			},
+			selectParent: { //是否可以选父级
+				type: Boolean,
+				default: true
+			},
+			confirmColor: { // 确定按钮颜色
+				type: String,
+				default: '' // #FE5706
+			},
+			cancelColor: { // 取消按钮颜色
+				type: String,
+				default: '' // #757575
+			},
+			titleColor: { // 标题颜色
+				type: String,
+				default: '' //
+			},
+			switchColor: { // 节点切换图标颜色
+				type: String,
+				default: '' // #666
+			},
+			border: { // 是否有分割线
+				type: Boolean,
+				default: false
+			},
+		},
+		data() {
+			return {
+				showDialog: true,
+				treeList: []
+			}
+		},
+		computed: {},
+		methods: {
+			_show() {
+				this.showDialog = true
+			},
+			_hide() {
+				this.showDialog = false
+			},
+			_cancel() {
+				// this._hide()
+				// this.$emit("cancel", '');
+			},
+			_confirm() { //多选
+				let selectedList = []; //如果子集全部选中,只返回父级 id
+				let selectedNames;
+				let currentLevel = -1;
+				this.treeList.forEach((item, index) => {
+					// console.log(item,1)
+					if (currentLevel >= 0 && item.level > currentLevel) {
+
+					} else {
+						if (item.checkStatus === 2) {
+							// 判断有无子元素
+							currentLevel = item.level;
+							if(item.children&&item.children.length){
+								var children=item.children;
+								
+								children.forEach(ite=>{
+									var obj={
+										deptId:ite.id,
+										deptName:ite.label
+									}
+									selectedList.push(obj);
+								})
+							}else{
+								var obj={
+									deptId:item.id,
+									deptName:item.name
+								}
+								selectedList.push(obj);
+							}
+							
+							// selectedNames = selectedNames ? selectedNames + ' / ' + item.name : item.name;
+						} else {
+							currentLevel = -1;
+						}
+					}
+				})
+				// this._hide()
+				// this.$emit("select-change", selectedList, selectedNames);
+				this.$emit("select-change", selectedList);
+			},
+			//格式化原数据(原数据为tree结构)
+			_formatTreeData(list = [], level = 0, parentItem, isShowChild = true) {
+				let nextIndex = 0;
+				let parentId = -1;
+				let initCheckStatus = 0;
+				if (parentItem) {
+					nextIndex = this.treeList.findIndex(item => item.id === parentItem.id) + 1;
+					parentId = parentItem.id;
+					if (!this.multiple) { //单选
+						initCheckStatus = 0;
+					} else
+						initCheckStatus = parentItem.checkStatus == 2 ? 2 : 0;
+				}
+				list.forEach(item => {
+					let isLastLevel = true;
+					if (item && item[this.childrenKey]) {
+						let children = item[this.childrenKey];
+						if (Array.isArray(children) && children.length > 0) {
+							isLastLevel = false;
+						}
+					}
+					let itemT = {
+						id: item[this.valueKey],
+						name: item[this.textKey],
+						level,
+						isLastLevel,
+						isShow: isShowChild,
+						isShowChild: false,
+						checkStatus: initCheckStatus,
+						orCheckStatus: 0,
+						parentId,
+						children: item[this.childrenKey],
+						childCount: item[this.childrenKey] ? item[this.childrenKey].length : 0,
+						childCheckCount: 0,
+						childCheckPCount: 0
+					};
+					if (this.selectedData.indexOf(itemT.id) >= 0) {
+						itemT.checkStatus = 2;
+						itemT.orCheckStatus = 2;
+						itemT.childCheckCount = itemT.children ? itemT.children.length : 0;
+						this._onItemParentSelect(itemT, nextIndex);
+					}
+
+					this.treeList.splice(nextIndex, 0, itemT);
+					nextIndex++;
+				})
+				//console.log(this.treeList);
+			},
+			// 节点打开、关闭切换
+			_onItemSwitch(item, index) {
+				// console.log(item)
+				//console.log('_itemSwitch')
+				if (item.isLastLevel === true) {
+					return;
+				}
+				item.isShowChild = !item.isShowChild;
+				if (item.children) {
+					this._formatTreeData(item.children, item.level + 1, item);
+					item.children = undefined;
+				} else {
+					this._onItemChildSwitch(item, index);
+				}
+			},
+			_onItemChildSwitch(item, index) {
+				//console.log('_onItemChildSwitch')
+				const firstChildIndex = index + 1;
+				if (firstChildIndex > 0)
+					for (var i = firstChildIndex; i < this.treeList.length; i++) {
+						let itemChild = this.treeList[i];
+						if (itemChild.level > item.level) {
+							if (item.isShowChild) {
+								if (itemChild.parentId === item.id) {
+									itemChild.isShow = item.isShowChild;
+									if (!itemChild.isShow) {
+										itemChild.isShowChild = false;
+									}
+								}
+							} else {
+								itemChild.isShow = item.isShowChild;
+								itemChild.isShowChild = false;
+							}
+						} else {
+							return;
+						}
+					}
+			},
+			// 节点选中、取消选中
+			_onItemSelect(item, index) {
+				//console.log('_onItemSelect')
+				//console.log(item)
+				if (!this.multiple) { //单选
+					item.checkStatus = item.checkStatus == 0 ? 2 : 0;
+
+					this.treeList.forEach((v, i) => {
+						if (i != index) {
+							this.treeList[i].checkStatus = 0
+						} else {
+							this.treeList[i].checkStatus = 2
+						}
+					})
+
+					let selectedList = [];
+					let selectedNames;
+					selectedList.push(item.id);
+					selectedNames = item.name;
+					// this._hide()
+					this.$emit("select-change", selectedList, selectedNames);
+					return
+				}
+
+				let oldCheckStatus = item.checkStatus;
+				switch (oldCheckStatus) {
+					case 0:
+						item.checkStatus = 2;
+						item.childCheckCount = item.childCount;
+						item.childCheckPCount = 0;
+						break;
+					case 1:
+					case 2:
+						item.checkStatus = 0;
+						item.childCheckCount = 0;
+						item.childCheckPCount = 0;
+						break;
+					default:
+						break;
+				}
+				//子节点 全部选中
+				this._onItemChildSelect(item, index);
+				//父节点 选中状态变化
+				this._onItemParentSelect(item, index, oldCheckStatus);
+				// 选择返回
+				this._confirm()
+				// this.$emit("select-change", selectedList, selectedNames);
+			},
+			_onItemChildSelect(item, index) {
+				//console.log('_onItemChildSelect')
+				let allChildCount = 0;
+				if (item.childCount && item.childCount > 0) {
+					index++;
+					while (index < this.treeList.length && this.treeList[index].level > item.level) {
+						let itemChild = this.treeList[index];
+						itemChild.checkStatus = item.checkStatus;
+						if (itemChild.checkStatus == 2) {
+							itemChild.childCheckCount = itemChild.childCount;
+							itemChild.childCheckPCount = 0;
+						} else if (itemChild.checkStatus == 0) {
+							itemChild.childCheckCount = 0;
+							itemChild.childCheckPCount = 0;
+						}
+						// console.log('>>>>index:', index, 'item:', itemChild.name, '  status:', itemChild
+						// 	.checkStatus)
+						index++;
+					}
+				}
+			},
+			_onItemParentSelect(item, index, oldCheckStatus) {
+				//console.log('_onItemParentSelect')
+				//console.log(item)
+				const parentIndex = this.treeList.findIndex(itemP => itemP.id == item.parentId);
+				//console.log('parentIndex:' + parentIndex)
+				if (parentIndex >= 0) {
+					let itemParent = this.treeList[parentIndex];
+					let count = itemParent.childCheckCount;
+					let oldCheckStatusParent = itemParent.checkStatus;
+
+					if (oldCheckStatus == 1) {
+						itemParent.childCheckPCount -= 1;
+					} else if (oldCheckStatus == 2) {
+						itemParent.childCheckCount -= 1;
+					}
+					if (item.checkStatus == 1) {
+						itemParent.childCheckPCount += 1;
+					} else if (item.checkStatus == 2) {
+						itemParent.childCheckCount += 1;
+					}
+
+					if (itemParent.childCheckCount <= 0 && itemParent.childCheckPCount <= 0) {
+						itemParent.childCheckCount = 0;
+						itemParent.childCheckPCount = 0;
+						itemParent.checkStatus = 0;
+					} else if (itemParent.childCheckCount >= itemParent.childCount) {
+						itemParent.childCheckCount = itemParent.childCount;
+						itemParent.childCheckPCount = 0;
+						itemParent.checkStatus = 2;
+					} else {
+						itemParent.checkStatus = 1;
+					}
+					//console.log('itemParent:', itemParent)
+					this._onItemParentSelect(itemParent, parentIndex, oldCheckStatusParent);
+				}
+			},
+			// 重置数据
+			_reTreeList() {
+				this.treeList.forEach((v, i) => {
+					this.treeList[i].checkStatus = v.orCheckStatus
+				})
+			},
+			_initTree() {
+				this.treeList = [];
+				this._formatTreeData(this.localdata);
+			}
+		},
+		watch: {
+			localdata() {
+				this._initTree();
+			},
+			localTreeList() {
+				this.treeList = this.localTreeList;
+			}
+		},
+		mounted() {
+			this._initTree();
+		}
+	}
+</script>
+
+<style scoped>
+	.tree-cover {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		z-index: 100;
+		background-color: rgba(0, 0, 0, .4);
+		opacity: 0;
+		transition: all 0.3s ease;
+		visibility: hidden;
+	}
+
+	.tree-cover.show {
+		visibility: visible;
+		opacity: 1;
+	}
+
+	.tree-dialog {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		background-color: #fff;
+		border-top-left-radius: 10px;
+		border-top-right-radius: 10px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		z-index: 100002;
+		top: 20%;
+		transition: all 0.3s ease;
+		transform: translateY(100%);
+	}
+
+	.tree-dialog.show {
+		transform: translateY(0);
+	}
+
+	.tree-bar {
+		/* background-color: #fff; */
+		height: 90rpx;
+		padding-left: 25rpx;
+		padding-right: 25rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		box-sizing: border-box;
+		border-bottom-width: 1rpx !important;
+		border-bottom-style: solid;
+		border-bottom-color: #f5f5f5;
+		font-size: 32rpx;
+		color: #757575;
+		line-height: 1;
+	}
+
+	.tree-bar-confirm {
+		color: #FE5706;
+		padding: 15rpx;
+	}
+
+	.tree-bar-title {}
+
+	.tree-bar-cancel {
+		color: #757575;
+		padding: 15rpx;
+	}
+
+	.tree-view {
+		flex: 1;
+		padding: 20rpx;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		overflow: hidden;
+		height: 100%;
+	}
+
+	.tree-list {
+		flex: 1;
+		height: 100%;
+		overflow: hidden;
+	}
+
+	.tree-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		line-height: 1;
+		height: 0;
+		opacity: 0;
+		transition: 0.2s;
+		overflow: hidden;
+	}
+
+	.tree-item.show {
+		height: 90rpx;
+		opacity: 1;
+	}
+
+	.tree-item.showchild:before {
+		transform: rotate(90deg);
+	}
+
+	.tree-item.last:before {
+		opacity: 0;
+	}
+
+	.switch-on {
+		width: 0;
+		height: 0;
+		border-left: 16rpx solid transparent;
+		border-right: 16rpx solid transparent;
+		border-top: 20rpx solid #666;
+	}
+
+	.switch-off {
+		width: 0;
+		height: 0;
+		border-bottom: 16rpx solid transparent;
+		border-top: 16rpx solid transparent;
+		border-left: 20rpx solid #666;
+	}
+
+	.item-last-dot {
+		position: absolute;
+		width: 12rpx;
+		height: 12rpx;
+		border-radius: 100%;
+		background: #666;
+	}
+
+	.item-icon {
+		width: 26rpx;
+		height: 30rpx;
+		margin-right: 8rpx;
+		padding-right: 20rpx;
+		padding-left: 20rpx;
+	}
+
+	.item-label {
+		flex: 1;
+		display: flex;
+		align-items: center;
+		height: 100%;
+		line-height: 1.2;
+	}
+
+	.item-name {
+		flex: 1;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		/* width: 450rpx; */
+		font-size: 34rpx;
+		font-weight: bold;
+		line-height: 1;
+	}
+
+	.item-check {
+		width: 40px;
+		height: 40px;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.item-check-yes,
+	.item-check-no {
+		width: 32rpx;
+		height: 32rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		border-top-width: 1rpx;
+		border-left-width: 1rpx;
+		border-bottom-width: 1rpx;
+		border-right-width: 1rpx;
+		border-style: solid;
+		border-color: #FE5706;
+		border-radius: 8rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		box-sizing: border-box;
+		 /* background-color: #FE5706; */
+	}
+	.item-check-yes{
+		border: none;
+		background-color: #FE5706;
+	}
+
+	.item-check-yes-part {
+		width: 24rpx;
+		height: 6rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		background-color: #ffffff;
+	}
+
+	.item-check-yes-all {
+		margin-bottom: 5px;
+		border: 2px solid #ffffff;
+		border-left: 0;
+		border-top: 0;
+		height: 12px;
+		width: 6px;
+		transform-origin: center;
+		/* #ifndef APP-NVUE */
+		transition: all 0.3s;
+		/* #endif */
+		transform: rotate(45deg);
+		/* border: none;
+		background-color: #FE5706; */
+	}
+
+	.item-check .radio {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.item-check .radio .item-check-yes-b {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.hover-c {
+		opacity: 0.6;
+	}
+
+	.itemBorder {
+		border-bottom: 1px solid #e5e5e5;
+	}
+</style>

+ 658 - 0
qs_zhaoshang/components/ba-tree-picker/ba-tree-pickerfixed.vue

@@ -0,0 +1,658 @@
+<!-- 树形层级选择器-->
+<!-- 1、支持单选、多选 -->
+<template>
+	<view>
+		<view class="tree-cover" :class="{'show':showDialog}" @tap="_cancel"></view>
+		<view class="tree-dialog" :class="{'show':showDialog}">
+			<view class="tree-bar">
+				<view class="tree-bar-cancel" :style="{'color':cancelColor}" hover-class="hover-c" @tap="_cancel">取消
+				</view>
+				<view class="tree-bar-title" :style="{'color':titleColor}">{{title}}</view>
+				<view class="tree-bar-confirm" :style="{'color':confirmColor}" hover-class="hover-c" @tap="_confirm">
+					{{multiple?'确定':''}}
+				</view>
+			</view>
+			<view class="tree-view">
+				<scroll-view class="tree-list" :scroll-y="true">
+					<block v-for="(item, index) in treeList" :key="index">
+						<view class="tree-item" :style="[{
+							paddingLeft: item.level*30 + 'rpx'
+						}]" :class="{
+							itemBorder: border === true,
+							show: item.isShow
+						}">
+							<view class="item-label">
+								<view class="item-icon flexcc" @tap.stop="_onItemSwitch(item, index)">
+									<view v-if="!item.isLastLevel&&item.isShowChild" class="switch-on"
+										:style="{'border-left-color':switchColor}">
+									</view>
+									<view v-else-if="!item.isLastLevel&&!item.isShowChild" class="switch-off"
+										:style="{'border-top-color':switchColor}">
+									</view>
+									<view v-else class="item-last-dot" :style="{'border-top-color':switchColor}">
+									</view>
+								</view>
+								<view class="flexc uni-inline-item" @tap.stop="_onItemSelect(item, index)">
+									
+									<view class="item-check" v-if="selectParent?true:item.isLastLevel">
+										<view class="item-check-yes" v-if="item.checkStatus==1"
+											:class="{'radio':!multiple}" :style="{'border-color':confirmColor}">
+											<view class="item-check-yes-part"
+												:style="{'background-color':confirmColor}">
+											</view>
+										</view>
+										<view class="item-check-yes" v-else-if="item.checkStatus==2"
+											:class="{'radio':!multiple}" :style="{'border-color':confirmColor}">
+											<view class="item-check-yes-all" :style="{'background-color':confirmColor}">
+											</view>
+										</view>
+										<view class="item-check-no" v-else :class="{'radio':!multiple}"
+											:style="{'border-color':confirmColor}"></view>
+									</view>
+									<view class="item-name"> {{item.name+(item.childCount?"("+item.childCount+")":'')}}</view>
+								</view>
+							</view>
+
+						</view>
+					</block>
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		emits: ['select-change'],
+		name: "ba-tree-picker",
+		props: {
+			valueKey: {
+				type: String,
+				default: 'id'
+			},
+			textKey: {
+				type: String,
+				default: 'name'
+			},
+			childrenKey: {
+				type: String,
+				default: 'children'
+			},
+			localdata: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			localTreeList: { //在已经格式化好的数据
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			selectedData: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			title: {
+				type: String,
+				default: ''
+			},
+			deptType:{
+				type: String,
+				default: ''
+			},
+			multiple: { // 是否可以多选
+				type: Boolean,
+				default: true
+			},
+			selectParent: { //是否可以选父级
+				type: Boolean,
+				default: true
+			},
+			confirmColor: { // 确定按钮颜色
+				type: String,
+				default: '' // #FE5706
+			},
+			cancelColor: { // 取消按钮颜色
+				type: String,
+				default: '' // #757575
+			},
+			titleColor: { // 标题颜色
+				type: String,
+				default: '' //
+			},
+			switchColor: { // 节点切换图标颜色
+				type: String,
+				default: '' // #666
+			},
+			border: { // 是否有分割线
+				type: Boolean,
+				default: false
+			},
+		},
+		data() {
+			return {
+				showDialog: false,
+				treeList: []
+			}
+		},
+		computed: {},
+		methods: {
+			_show() {
+				this.showDialog = true
+			},
+			_hide() {
+				this.showDialog = false
+			},
+			_cancel() {
+				this._hide()
+				this.$emit("cancel", '');
+			},
+			_confirm() { //多选
+				var that=this;
+				let selectedList = []; //如果子集全部选中,只返回父级 id
+				let selectedNames;
+				let currentLevel = -1;
+				this.treeList.forEach((item, index) => {
+					// console.log(item,1)
+					if (currentLevel >= 0 && item.level > currentLevel) {
+
+					} else {
+						
+						if (item.checkStatus === 2) {
+							// 判断有无子元素
+							currentLevel = item.level;
+							if(item.children&&item.children.length){
+								var children=item.children;
+								
+								children.forEach(ite=>{
+									var obj={
+										deptId:ite.id,
+										deptName:ite.label,
+										deptType:that.deptType
+									}
+									selectedList.push(obj);
+								})
+							}else{
+								var obj={
+									deptId:item.id,
+									deptName:item.name,
+									deptType:that.deptType
+								}
+								selectedList.push(obj);
+							}
+							
+							// selectedNames = selectedNames ? selectedNames + ' / ' + item.name : item.name;
+						} else {
+							currentLevel = -1;
+						}
+					}
+				})
+				this._hide()
+				// this.$emit("select-change", selectedList, selectedNames);
+				this.$emit("select-change", selectedList);
+			},
+			//格式化原数据(原数据为tree结构)
+			_formatTreeData(list = [], level = 0, parentItem, isShowChild = true) {
+				let nextIndex = 0;
+				let parentId = -1;
+				let initCheckStatus = 0;
+				if (parentItem) {
+					nextIndex = this.treeList.findIndex(item => item.id === parentItem.id) + 1;
+					parentId = parentItem.id;
+					if (!this.multiple) { //单选
+						initCheckStatus = 0;
+					} else
+						initCheckStatus = parentItem.checkStatus == 2 ? 2 : 0;
+				}
+				list.forEach(item => {
+					let isLastLevel = true;
+					if (item && item[this.childrenKey]) {
+						let children = item[this.childrenKey];
+						if (Array.isArray(children) && children.length > 0) {
+							isLastLevel = false;
+						}
+					}
+					let itemT = {
+						id: item[this.valueKey],
+						name: item[this.textKey],
+						level,
+						isLastLevel,
+						isShow: isShowChild,
+						isShowChild: false,
+						checkStatus: initCheckStatus,
+						orCheckStatus: 0,
+						parentId,
+						children: item[this.childrenKey],
+						childCount: item[this.childrenKey] ? item[this.childrenKey].length : 0,
+						childCheckCount: 0,
+						childCheckPCount: 0
+					};
+					if (this.selectedData.indexOf(itemT.id) >= 0) {
+						itemT.checkStatus = 2;
+						itemT.orCheckStatus = 2;
+						itemT.childCheckCount = itemT.children ? itemT.children.length : 0;
+						this._onItemParentSelect(itemT, nextIndex);
+					}
+
+					this.treeList.splice(nextIndex, 0, itemT);
+					nextIndex++;
+				})
+				//console.log(this.treeList);
+			},
+			// 节点打开、关闭切换
+			_onItemSwitch(item, index) {
+				// console.log(item)
+				//console.log('_itemSwitch')
+				if (item.isLastLevel === true) {
+					return;
+				}
+				item.isShowChild = !item.isShowChild;
+				if (item.children) {
+					this._formatTreeData(item.children, item.level + 1, item);
+					item.children = undefined;
+				} else {
+					this._onItemChildSwitch(item, index);
+				}
+			},
+			_onItemChildSwitch(item, index) {
+				//console.log('_onItemChildSwitch')
+				const firstChildIndex = index + 1;
+				if (firstChildIndex > 0)
+					for (var i = firstChildIndex; i < this.treeList.length; i++) {
+						let itemChild = this.treeList[i];
+						if (itemChild.level > item.level) {
+							if (item.isShowChild) {
+								if (itemChild.parentId === item.id) {
+									itemChild.isShow = item.isShowChild;
+									if (!itemChild.isShow) {
+										itemChild.isShowChild = false;
+									}
+								}
+							} else {
+								itemChild.isShow = item.isShowChild;
+								itemChild.isShowChild = false;
+							}
+						} else {
+							return;
+						}
+					}
+			},
+			// 节点选中、取消选中
+			_onItemSelect(item, index) {
+				//console.log('_onItemSelect')
+				//console.log(item)
+				if (!this.multiple) { //单选
+					item.checkStatus = item.checkStatus == 0 ? 2 : 0;
+
+					this.treeList.forEach((v, i) => {
+						if (i != index) {
+							this.treeList[i].checkStatus = 0
+						} else {
+							this.treeList[i].checkStatus = 2
+						}
+					})
+
+					let selectedList = [];
+					let selectedNames;
+					selectedList.push(item.id);
+					selectedNames = item.name;
+					// this._hide()
+					this.$emit("select-change", selectedList, selectedNames);
+					return
+				}
+
+				let oldCheckStatus = item.checkStatus;
+				switch (oldCheckStatus) {
+					case 0:
+						item.checkStatus = 2;
+						item.childCheckCount = item.childCount;
+						item.childCheckPCount = 0;
+						break;
+					case 1:
+					case 2:
+						item.checkStatus = 0;
+						item.childCheckCount = 0;
+						item.childCheckPCount = 0;
+						break;
+					default:
+						break;
+				}
+				//子节点 全部选中
+				this._onItemChildSelect(item, index);
+				//父节点 选中状态变化
+				this._onItemParentSelect(item, index, oldCheckStatus);
+				// 选择返回
+				// this._confirm()
+				// this.$emit("select-change", selectedList, selectedNames);
+			},
+			_onItemChildSelect(item, index) {
+				//console.log('_onItemChildSelect')
+				let allChildCount = 0;
+				if (item.childCount && item.childCount > 0) {
+					index++;
+					while (index < this.treeList.length && this.treeList[index].level > item.level) {
+						let itemChild = this.treeList[index];
+						itemChild.checkStatus = item.checkStatus;
+						if (itemChild.checkStatus == 2) {
+							itemChild.childCheckCount = itemChild.childCount;
+							itemChild.childCheckPCount = 0;
+						} else if (itemChild.checkStatus == 0) {
+							itemChild.childCheckCount = 0;
+							itemChild.childCheckPCount = 0;
+						}
+						// console.log('>>>>index:', index, 'item:', itemChild.name, '  status:', itemChild
+						// 	.checkStatus)
+						index++;
+					}
+				}
+			},
+			_onItemParentSelect(item, index, oldCheckStatus) {
+				//console.log('_onItemParentSelect')
+				//console.log(item)
+				const parentIndex = this.treeList.findIndex(itemP => itemP.id == item.parentId);
+				//console.log('parentIndex:' + parentIndex)
+				if (parentIndex >= 0) {
+					let itemParent = this.treeList[parentIndex];
+					let count = itemParent.childCheckCount;
+					let oldCheckStatusParent = itemParent.checkStatus;
+
+					if (oldCheckStatus == 1) {
+						itemParent.childCheckPCount -= 1;
+					} else if (oldCheckStatus == 2) {
+						itemParent.childCheckCount -= 1;
+					}
+					if (item.checkStatus == 1) {
+						itemParent.childCheckPCount += 1;
+					} else if (item.checkStatus == 2) {
+						itemParent.childCheckCount += 1;
+					}
+
+					if (itemParent.childCheckCount <= 0 && itemParent.childCheckPCount <= 0) {
+						itemParent.childCheckCount = 0;
+						itemParent.childCheckPCount = 0;
+						itemParent.checkStatus = 0;
+					} else if (itemParent.childCheckCount >= itemParent.childCount) {
+						itemParent.childCheckCount = itemParent.childCount;
+						itemParent.childCheckPCount = 0;
+						itemParent.checkStatus = 2;
+					} else {
+						itemParent.checkStatus = 1;
+					}
+					//console.log('itemParent:', itemParent)
+					this._onItemParentSelect(itemParent, parentIndex, oldCheckStatusParent);
+				}
+			},
+			// 重置数据
+			_reTreeList() {
+				this.treeList.forEach((v, i) => {
+					this.treeList[i].checkStatus = v.orCheckStatus
+				})
+			},
+			_initTree() {
+				this.treeList = [];
+				this._formatTreeData(this.localdata);
+			}
+		},
+		watch: {
+			localdata() {
+				this._initTree();
+			},
+			localTreeList() {
+				this.treeList = this.localTreeList;
+			}
+		},
+		mounted() {
+			this._initTree();
+		}
+	}
+</script>
+
+<style scoped>
+	.tree-cover {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		z-index: 100;
+		background-color: rgba(0, 0, 0, .4);
+		opacity: 0;
+		transition: all 0.3s ease;
+		visibility: hidden;
+	}
+
+	.tree-cover.show {
+		visibility: visible;
+		opacity: 1;
+	}
+
+	.tree-dialog {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		background-color: #fff;
+		border-top-left-radius: 10px;
+		border-top-right-radius: 10px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		z-index: 100002;
+		top: 20%;
+		transition: all 0.3s ease;
+		transform: translateY(100%);
+	}
+
+	.tree-dialog.show {
+		transform: translateY(0);
+	}
+
+	.tree-bar {
+		/* background-color: #fff; */
+		height: 90rpx;
+		padding-left: 25rpx;
+		padding-right: 25rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		box-sizing: border-box;
+		border-bottom-width: 1rpx !important;
+		border-bottom-style: solid;
+		border-bottom-color: #f5f5f5;
+		font-size: 32rpx;
+		color: #757575;
+		line-height: 1;
+	}
+
+	.tree-bar-confirm {
+		color: #FE5706;
+		padding: 15rpx;
+	}
+
+	.tree-bar-title {}
+
+	.tree-bar-cancel {
+		color: #757575;
+		padding: 15rpx;
+	}
+
+	.tree-view {
+		flex: 1;
+		padding: 20rpx;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		overflow: hidden;
+		height: 100%;
+	}
+
+	.tree-list {
+		flex: 1;
+		height: 100%;
+		overflow: hidden;
+	}
+
+	.tree-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		line-height: 1;
+		height: 0;
+		opacity: 0;
+		transition: 0.2s;
+		overflow: hidden;
+	}
+
+	.tree-item.show {
+		height: 90rpx;
+		opacity: 1;
+	}
+
+	.tree-item.showchild:before {
+		transform: rotate(90deg);
+	}
+
+	.tree-item.last:before {
+		opacity: 0;
+	}
+
+	.switch-on {
+		width: 0;
+		height: 0;
+		border-left: 16rpx solid transparent;
+		border-right: 16rpx solid transparent;
+		border-top: 20rpx solid #666;
+	}
+
+	.switch-off {
+		width: 0;
+		height: 0;
+		border-bottom: 16rpx solid transparent;
+		border-top: 16rpx solid transparent;
+		border-left: 20rpx solid #666;
+	}
+
+	.item-last-dot {
+		position: absolute;
+		width: 12rpx;
+		height: 12rpx;
+		border-radius: 100%;
+		background: #666;
+	}
+
+	.item-icon {
+		width: 26rpx;
+		height: 30rpx;
+		margin-right: 8rpx;
+		padding-right: 20rpx;
+		padding-left: 20rpx;
+	}
+
+	.item-label {
+		flex: 1;
+		display: flex;
+		align-items: center;
+		height: 100%;
+		line-height: 1.2;
+	}
+
+	.item-name {
+		flex: 1;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		/* width: 450rpx; */
+		font-size: 34rpx;
+		font-weight: bold;
+		line-height: 1;
+	}
+
+	.item-check {
+		width: 40px;
+		height: 40px;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.item-check-yes,
+	.item-check-no {
+		width: 32rpx;
+		height: 32rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		border-top-width: 1rpx;
+		border-left-width: 1rpx;
+		border-bottom-width: 1rpx;
+		border-right-width: 1rpx;
+		border-style: solid;
+		border-color: #FE5706;
+		border-radius: 8rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		box-sizing: border-box;
+		 /* background-color: #FE5706; */
+	}
+	.item-check-yes{
+		border: none;
+		background-color: #FE5706;
+	}
+
+	.item-check-yes-part {
+		width: 24rpx;
+		height: 6rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		background-color: #ffffff;
+	}
+
+	.item-check-yes-all {
+		margin-bottom: 5px;
+		border: 2px solid #ffffff;
+		border-left: 0;
+		border-top: 0;
+		height: 12px;
+		width: 6px;
+		transform-origin: center;
+		/* #ifndef APP-NVUE */
+		transition: all 0.3s;
+		/* #endif */
+		transform: rotate(45deg);
+		/* border: none;
+		background-color: #FE5706; */
+	}
+
+	.item-check .radio {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.item-check .radio .item-check-yes-b {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.hover-c {
+		opacity: 0.6;
+	}
+
+	.itemBorder {
+		border-bottom: 1px solid #e5e5e5;
+	}
+</style>

+ 406 - 0
qs_zhaoshang/components/ba-tree-picker/danpicker.vue

@@ -0,0 +1,406 @@
+<!-- 树形层级选择器-->
+<!-- 1、支持单选、多选 -->
+<template>
+	<view class="xmmain">
+		<view class="tree-cover" :class="{'show':showDialog}" @tap="_cancel"></view>
+		<view class="tree-dialog" :class="{'show':showDialog}">
+			<view class="tree-bar">
+				<view class="tree-bar-cancel" :style="{'color':cancelColor}" hover-class="hover-c" @tap="_cancel">取消
+				</view>
+				<view class="tree-bar-title" :style="{'color':titleColor}">{{title}}</view>
+				<view class="tree-bar-confirm" :style="{'color':confirmColor}" hover-class="hover-c" @tap="_confirm">
+					{{multiple?'确定':''}}
+				</view>
+			</view>
+			<view class="tree-view">
+				<scroll-view class="tree-list" :scroll-y="true">
+					<uni-data-checkbox selectedTextColor='#343434'  :map="map" :multiple="multiple" v-model="bgvalue" :localdata="localdata" @change="checkboxChangeadr"></uni-data-checkbox>
+				</scroll-view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		emits: ['select-change'],
+		name: "ba-tree-picker",
+		props: {
+			map:{
+				type: Object,
+				default: {},
+			},
+			mvalue:{
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			valueKey: {
+				type: String,
+				default: 'id'
+			},
+			textKey: {
+				type: String,
+				default: 'name'
+			},
+			childrenKey: {
+				type: String,
+				default: 'children'
+			},
+			localdata: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			localTreeList: { //在已经格式化好的数据
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			selectedData: {
+				type: Array,
+				default: function() {
+					return []
+				}
+			},
+			title: {
+				type: String,
+				default: ''
+			},
+			deptType:{
+				type: String,
+				default: ''
+			},
+			multiple: { // 是否可以多选
+				type: Boolean,
+				default: true
+			},
+			selectParent: { //是否可以选父级
+				type: Boolean,
+				default: true
+			},
+			confirmColor: { // 确定按钮颜色
+				type: String,
+				default: '' // #FE5706
+			},
+			cancelColor: { // 取消按钮颜色
+				type: String,
+				default: '' // #757575
+			},
+			titleColor: { // 标题颜色
+				type: String,
+				default: '' //
+			},
+			switchColor: { // 节点切换图标颜色
+				type: String,
+				default: '' // #666
+			},
+			border: { // 是否有分割线
+				type: Boolean,
+				default: false
+			},
+		},
+		data() {
+			return {
+				showDialog: false,
+				treeList: [],
+				checkArr:[],
+				bgvalue:[1,2]
+			}
+		},
+		computed: {},
+		methods: {
+			checkboxChangeadr(e){
+				this.checkArr=e.detail.data;
+			},
+			_show() {
+				this.showDialog = true
+			},
+			_hide() {
+				this.showDialog = false
+			},
+			_cancel() {
+				this._hide()
+				this.$emit("cancel", '');
+			},
+			_confirm() { //多选
+				
+				this._hide()
+				if(this.checkArr.length>0){
+					this.$emit("select-change", this.checkArr);
+				}
+				// this.$emit("select-change", selectedList, selectedNames);	
+			},
+		},
+		watch: {
+			mvalue(data){
+				console.log(data,1)
+				this.bgvalue=data
+			}
+		},
+		mounted() {
+			this.bgvalue=this.mvalue;
+			// this._initTree();
+		}
+	}
+</script>
+
+<style scoped>
+.xmmain /deep/ .uni-data-checklist	.checklist-group{display: block;}
+.xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box{padding: 28rpx 0;margin: 0;}
+ 
+ .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-text{color: #343434;font-size: 34rpx;font-weight: bold;}
+.xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner{margin-right: 32rpx;}
+.xmmain  /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: #FF440B; background-color: #FF440B;}
+ .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text{color: #343434;}
+.xmbtn{height: 100rpx;display: flex;align-items: center;justify-content: center;
+ &.btn1{width: 200rpx;}
+ &.btn2{background-color: $uni-color-fa;}
+}
+	.tree-cover {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		z-index: 100;
+		background-color: rgba(0, 0, 0, .4);
+		opacity: 0;
+		transition: all 0.3s ease;
+		visibility: hidden;
+	}
+
+	.tree-cover.show {
+		visibility: visible;
+		opacity: 1;
+	}
+
+	.tree-dialog {
+		position: fixed;
+		top: 0rpx;
+		right: 0rpx;
+		bottom: 0rpx;
+		left: 0rpx;
+		background-color: #fff;
+		border-top-left-radius: 10px;
+		border-top-right-radius: 10px;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		z-index: 100002;
+		top: 20%;
+		transition: all 0.3s ease;
+		transform: translateY(100%);
+	}
+
+	.tree-dialog.show {
+		transform: translateY(0);
+	}
+
+	.tree-bar {
+		/* background-color: #fff; */
+		height: 90rpx;
+		padding-left: 25rpx;
+		padding-right: 25rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		box-sizing: border-box;
+		border-bottom-width: 1rpx !important;
+		border-bottom-style: solid;
+		border-bottom-color: #f5f5f5;
+		font-size: 32rpx;
+		color: #757575;
+		line-height: 1;
+	}
+
+	.tree-bar-confirm {
+		color: #FE5706;
+		padding: 15rpx;
+	}
+
+	.tree-bar-title {}
+
+	.tree-bar-cancel {
+		color: #757575;
+		padding: 15rpx;
+	}
+
+	.tree-view {
+		flex: 1;
+		padding: 20rpx 36rpx;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		overflow: hidden;
+		height: 100%;
+	}
+
+	.tree-list {
+		flex: 1;
+		height: 100%;
+		overflow: hidden;
+	}
+
+	.tree-item {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		line-height: 1;
+		height: 0;
+		opacity: 0;
+		transition: 0.2s;
+		overflow: hidden;
+	}
+
+	.tree-item.show {
+		height: 90rpx;
+		opacity: 1;
+	}
+
+	.tree-item.showchild:before {
+		transform: rotate(90deg);
+	}
+
+	.tree-item.last:before {
+		opacity: 0;
+	}
+
+	.switch-on {
+		width: 0;
+		height: 0;
+		border-left: 16rpx solid transparent;
+		border-right: 16rpx solid transparent;
+		border-top: 20rpx solid #666;
+	}
+
+	.switch-off {
+		width: 0;
+		height: 0;
+		border-bottom: 16rpx solid transparent;
+		border-top: 16rpx solid transparent;
+		border-left: 20rpx solid #666;
+	}
+
+	.item-last-dot {
+		position: absolute;
+		width: 12rpx;
+		height: 12rpx;
+		border-radius: 100%;
+		background: #666;
+	}
+
+	.item-icon {
+		width: 26rpx;
+		height: 30rpx;
+		margin-right: 8rpx;
+		padding-right: 20rpx;
+		padding-left: 20rpx;
+	}
+
+	.item-label {
+		flex: 1;
+		display: flex;
+		align-items: center;
+		height: 100%;
+		line-height: 1.2;
+	}
+
+	.item-name {
+		flex: 1;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		/* width: 450rpx; */
+		font-size: 34rpx;
+		font-weight: bold;
+		line-height: 1;
+	}
+
+	.item-check {
+		width: 40px;
+		height: 40px;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.item-check-yes,
+	.item-check-no {
+		width: 32rpx;
+		height: 32rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		border-top-width: 1rpx;
+		border-left-width: 1rpx;
+		border-bottom-width: 1rpx;
+		border-right-width: 1rpx;
+		border-style: solid;
+		border-color: #FE5706;
+		border-radius: 8rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		box-sizing: border-box;
+		 /* background-color: #FE5706; */
+	}
+	.item-check-yes{
+		border: none;
+		background-color: #FE5706;
+	}
+
+	.item-check-yes-part {
+		width: 24rpx;
+		height: 6rpx;
+		border-top-left-radius: 20%;
+		border-top-right-radius: 20%;
+		border-bottom-right-radius: 20%;
+		border-bottom-left-radius: 20%;
+		background-color: #ffffff;
+	}
+
+	.item-check-yes-all {
+		margin-bottom: 5px;
+		border: 2px solid #ffffff;
+		border-left: 0;
+		border-top: 0;
+		height: 12px;
+		width: 6px;
+		transform-origin: center;
+		/* #ifndef APP-NVUE */
+		transition: all 0.3s;
+		/* #endif */
+		transform: rotate(45deg);
+		/* border: none;
+		background-color: #FE5706; */
+	}
+
+	.item-check .radio {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.item-check .radio .item-check-yes-b {
+		border-top-left-radius: 50%;
+		border-top-right-radius: 50%;
+		border-bottom-right-radius: 50%;
+		border-bottom-left-radius: 50%;
+	}
+
+	.hover-c {
+		opacity: 0.6;
+	}
+
+	.itemBorder {
+		border-bottom: 1px solid #e5e5e5;
+	}
+</style>

+ 568 - 0
qs_zhaoshang/components/ba-tree-picker/selectMorePicker.vue

@@ -0,0 +1,568 @@
+<template name="aui-picker">
+	<view class="aui-picker" v-if="SHOW" :class="{
+		'aui-picker-in': FADE==1,
+		'aui-picker-out': FADE==0}"
+	>
+		
+		<view class="aui-picker-main">
+			<view class="aui-mask" @click.stop="close"></view>
+	        <view class="aui-picker-header">
+				<view @click.stop="close" class="aui-picker-close" >取消</view>
+	            <view class="aui-picker-title" v-if="title">{{title}}</view>
+	            <!-- <view class="aui-picker-close iconfont iconclose" ></view> -->
+				<!-- <view class="aui-picker-sure" @click.stop="getSure" v-if="titflag">确定</view> -->
+				<view class="aui-picker-sure" @click.stop="getSure" >确定</view>
+	        </view>
+	        <view class="aui-picker-nav">
+				<view class="aui-picker-navitem"
+					v-if="nav.length>0"
+					v-for="(item, index) in nav" 
+					:key="index" 
+					:data-index="index" 
+					:class="[index==navCurrentIndex ? 'active' : '', 'aui-picker-navitem-'+index]" 
+		
+					@click.stop="_changeNav($event)"
+				>{{item.name}}</view>	
+							<!-- :style="{margin: nav.length>2 ? '0 10px 0 0' : '0 30px 0 0'}" -->
+				<view class="aui-picker-navitem"									
+					:key="nav.length" 
+					:data-index="nav.length"
+					:class="[nav.length==navCurrentIndex ? 'active' : '', 'aui-picker-navitem-'+nav.length]" 
+					
+					@click.stop="_changeNav($event)"
+				>请选择</view>
+				<!-- :style="{margin: nav.length>2 ? '0 10px 0 0' : '0 30px 0 0'}" -->
+				<view class="aui-picker-navborder" :style="{left: navBorderLeft+'px'}"></view>
+			</view>
+	        <view class="aui-picker-content">
+	            <view class="aui-picker-lists">
+					<view class="aui-picker-list"
+						v-for="(list, index) in queryItems.length + 1"
+						:key="index" 
+						:data-index="index" 
+						:class="[index==navCurrentIndex ? 'active' : '']"
+					>
+						<view class="aui-picker-list-warp" v-if="index == 0">
+							<view class="aui-picker-item" 
+								v-for="(item, key) in items" 
+								v-if="item.pid=='0'"
+								:key="key"
+								:data-pindex="index"
+								:data-index="key"
+								:data-areaid="item.areaId" 
+								:data-pid="item.pid"
+								:data-name="item.name"
+								:class="{'active': result.length>index && result[index].areaid==item.areaId}"
+								:style="{'background': touchConfig.index==key && touchConfig.pindex==index ? touchConfig.style.background : ''}"
+								@click.stop="_chooseItem($event)"
+								@touchstart="_btnTouchStart($event)"
+								@touchmove="_btnTouchEnd($event)"
+								@touchend="_btnTouchEnd($event)"
+							>{{item.name}}</view>
+						</view>
+						<view class="aui-picker-list-warp" v-else>
+							<view class="aui-picker-item" 
+								v-for="(item, key) in queryItems[index-1]"
+								:key="key"
+								:data-pindex="index"
+								:data-index="key"
+								:data-areaid="item.areaId"
+								:data-pid="item.pid"
+								:data-name="item.name"
+								:class="{'active': result.length>index && result[index].areaid==item.areaId}"
+								:style="{'background': touchConfig.index==key && touchConfig.pindex==index ? touchConfig.style.background : ''}"
+								@click.stop="_chooseItem($event)"
+								@touchstart="_btnTouchStart($event)"
+								@touchmove="_btnTouchEnd($event)"
+								@touchend="_btnTouchEnd($event)"
+							>{{item.name}}</view>
+						</view>
+					</view>
+				</view>
+	        </view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {getarealist} from "@/api/work/addsk.js"
+	export default {
+		name: 'aui-picker',
+		props: {
+			title: { //标题
+				type: String,
+				default: ''
+			},
+			titflag:{
+				type: Boolean,
+				default: false,
+			},
+			layer: { //控制几级联动,默认无限级(跟随数据有无下级)
+				type: Number,
+				default: null
+			},
+			data: { //数据 如:[{id: '', name: '', children: [{id: '', name: ''}]}]
+				type: Array,
+				default (){
+					return [
+						// [{id: '', name: '', children: [{id: '', name: ''}]}]
+					]
+				}
+			}
+		},
+		data(){
+			return {
+				SHOW: false,
+				FADE: -1,
+				nav: [],
+				items: [],
+				queryItems: [],
+				navCurrentIndex: 0,
+				navBorderLeft: 25,
+				result: [],
+				touchConfig: {
+					index: -1,
+					pindex: -1,
+					style: {
+						color: '#197DE0',
+						background: '#EFEFEF'
+					} 
+				},
+				loadflag:false
+			}
+		},
+		created(){
+			const _this = this;
+		},
+		watch:{
+			data(){
+				
+				const _this = this;
+				const data = _this.data;
+				_this.items = _this._flatten(data, '0')
+	    }  
+	  },
+		mounted(){
+			
+		},
+		methods:{
+			// 打开
+			open(e){
+				const _this = this;	
+					_this.loadflag=false;
+					if(e==1){
+						_this.reset(); //打开时重置picker
+					}
+	
+				return new Promise(function(resolve, reject){
+					_this.SHOW = true;
+					_this.FADE = 1;
+					resolve();
+				});
+			},
+			// 关闭
+			close(){
+				const _this = this;
+				return new Promise(function(resolve, reject){
+					_this.FADE = 0;
+					const _hidetimer = setTimeout(()=>{
+						_this.SHOW = false;
+						_this.FADE = -1;
+						clearTimeout(_hidetimer);
+						resolve();						
+					},100)	
+				});
+			},
+			//重置
+			reset(){
+				const _this = this;
+				_this.queryItems = [];
+				_this.nav = [];
+				_this.navBorderLeft = 25;
+				_this.navCurrentIndex = 0;
+				_this.result = [];
+			},
+			//导航栏切换
+			_changeNav(e){
+				const _this = this;
+				const index = Number(e.currentTarget.dataset.index);
+				_this.navCurrentIndex = index;
+				const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-"+index);
+				_el.boundingClientRect(data => {
+					_this.navBorderLeft = data.left + 15;
+				}).exec();
+			},
+			//数据选择
+			_chooseItem(e){
+				// 加载的时候禁止点击
+				if(this.loadflag){
+					return
+				}
+				this.loadflag=true;
+				const _this = this;
+				const areaid = e.currentTarget.dataset.areaid;
+				const name = e.currentTarget.dataset.name;
+				const pid = e.currentTarget.dataset.pid;
+				const _arr = [];
+				// 获取新数据
+				_this.result[_this.navCurrentIndex] = {areaid: areaid, name: name, pid: pid};
+				// 只选择两级
+				if(_this.navCurrentIndex==1){
+					this.loadflag=false;
+					_this.close().then(()=>{
+						_this.$emit("callback", {status: 0, data: _this.result});
+					});
+					return
+				}
+				getarealist(areaid).then(res=>{
+					this.loadflag=false;
+					if(res.data.length>0){
+						if(_this.navCurrentIndex == _this.queryItems.length)
+						{ //选择数据
+							_this.queryItems.push(res.data);
+							_this.nav.push({name: name});
+						}
+						else
+						{ //重新选择数据
+							_this.queryItems.splice(_this.navCurrentIndex+1);
+							_this.nav.splice(_this.navCurrentIndex+1);
+							_this.queryItems.splice(_this.navCurrentIndex, 1, res.data);
+							_this.nav.splice(_this.navCurrentIndex, 1, {name: name});
+							//清空后面的选择
+							_this.result.splice(Number(_this.navCurrentIndex+1))
+						}
+						_this.navCurrentIndex = _this.navCurrentIndex + 1;
+						const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-"+_this.navCurrentIndex);
+						setTimeout(()=>{
+							_el.boundingClientRect(data => {
+								_this.navBorderLeft = data.left + 15;
+							}).exec();
+						},100)
+					}else{
+						//无下级数据
+						_this.close().then(()=>{
+							_this.$emit("callback", {status: 0, data: _this.result});
+						});
+					}
+				})
+				// _this.result[_this.navCurrentIndex] = {areaId: areaId, name: name, pid: pid};
+				// if(
+				// 	(!_this._isDefine(_this.layer) && _this._isDefine(_this._deepQuery(_this.data, areaId).children)) 
+				// 	|| 
+				// 	(_this.navCurrentIndex < (Number(_this.layer) - 1) && _this._isDefine(_this._deepQuery(_this.data, areaId).children))
+				// )
+				// { //有下级数据
+				// 	_this._deepQuery(_this.data, areaId).children.forEach(function(item, index){
+				// 		_arr.push({areaId: item.areaId, name: item.name, pid: id});
+				// 	});
+				// 	if(_this.navCurrentIndex == _this.queryItems.length)
+				// 	{ //选择数据
+				// 		_this.queryItems.push(_arr);
+				// 		_this.nav.push({name: name});
+				// 	}
+				// 	else
+				// 	{ //重新选择数据
+				// 		_this.queryItems.splice(_this.navCurrentIndex+1, 1);
+				// 		_this.nav.splice(_this.navCurrentIndex+1, 1);
+				// 		_this.queryItems.splice(_this.navCurrentIndex, 1, _arr);
+				// 		_this.nav.splice(_this.navCurrentIndex, 1, {name: name});
+				// 	}
+				// 	_this.navCurrentIndex = _this.navCurrentIndex + 1;
+				// 	const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-"+_this.navCurrentIndex);
+				// 	setTimeout(()=>{
+				// 		_el.boundingClientRect(data => {
+				// 			_this.navBorderLeft = data.left + 20;
+				// 		}).exec();
+				// 	},100)
+				// }
+				// else
+				// { //无下级数据
+				// 	_this.close().then(()=>{
+				// 		_this.$emit("callback", {status: 0, data: _this.result});
+				// 	});
+				// }
+			},	
+			getSure(){
+				this.close().then(()=>{
+					this.$emit("callback", {status: 0, data: this.result});
+				});
+			},
+			//递归遍历——将树形结构数据转化为数组格式
+			_flatten(tree, pid) {
+				return tree.reduce((arr, {areaId, name, children = []}) =>
+				arr.concat([{areaId, name, pid}], this._flatten(children, areaId)), [])
+			},
+			//根据id查询对应的数据(如查询id=10100对应的对象)
+			_deepQuery(tree, areaId) {
+			    let isGet = false;
+			    let retNode = null;
+			    function deepSearch(tree, areaId){
+			        for(let i = 0; i < tree.length; i++) {
+			            if(tree[i].children && tree[i].children.length > 0) {
+			                deepSearch(tree[i].children, areaId);
+			            }
+			            if(areaId === tree[i].areaId || isGet) {
+			                isGet||(retNode = tree[i]);
+			                isGet = true;
+			                break;
+			            }
+			        }
+			    }
+			    deepSearch(tree, areaId);
+			    return retNode;
+			},
+			/***判断字符串是否为空
+			   @param {string} str 变量
+			   @example: aui.isDefine("变量");
+			*/
+			_isDefine(str){
+				if (str==null || str=="" || str=="undefined" || str==undefined || str=="null" || str=="(null)" || str=='NULL' || typeof (str)=='undefined'){
+					return false;
+				}else{
+					str = str + "";
+					str = str.replace(/\s/g, "");
+					if (str == ""){return false;}
+					return true;
+				}
+			},
+			_btnTouchStart(e){
+				const _this = this,
+					index = Number(e.currentTarget.dataset.index),
+					pindex = Number(e.currentTarget.dataset.pindex);
+				_this.touchConfig.index = index;
+				_this.touchConfig.pindex = pindex;
+			},
+			_btnTouchEnd(e){
+				const _this = this,
+					index = Number(e.currentTarget.dataset.index),
+					pindex = Number(e.currentTarget.dataset.pindex);
+				_this.touchConfig.index = -1;
+				_this.touchConfig.pindex = -1;
+			},	
+		}
+	}
+</script>
+
+<style scoped>
+	/* ====================
+		多级联动弹窗
+	 =====================*/
+	.aui-picker{
+		width: 100vw;
+		height: 100vh;
+		/* opacity: 0;		 */
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 1200;
+		background: rgba(0,0,0,0.5);
+		/* display: none; */
+	}
+	.aui-picker.aui-picker-in{
+		-moz-animation: aui-fade-in .1s ease-out forwards;
+		-ms-animation: aui-fade-in .1s ease-out forwards;
+		-webkit-animation: aui-fade-in .1s ease-out forwards;
+		animation: aui-fade-in .1s ease-out forwards;
+	}
+	.aui-picker.aui-picker-out{
+		-moz-animation: aui-fade-out .1s ease-out forwards;
+		-ms-animation: aui-fade-out .1s ease-out forwards;
+		-webkit-animation: aui-fade-out .1s ease-out forwards;
+		animation: aui-fade-out .1s ease-out forwards;
+	}
+	.aui-picker-main{
+		width: 100vw;
+		height: 50vh;
+		background: #FFF;
+		border-radius: 15px 15px 0 0;
+		position: absolute;
+		left: 0px;
+		/* bottom: -50vh;		 */
+		bottom: 0vh;		
+		z-index: 999;
+	}
+	.aui-picker.aui-picker-in .aui-picker-main{
+		-moz-animation: aui-slide-up-screen .2s ease-out forwards;
+		-ms-animation: aui-slide-up-screen .2s ease-out forwards;
+		-webkit-animation: aui-slide-up-screen .2s ease-out forwards;
+		animation: aui-slide-up-screen .2s ease-out forwards;
+	}
+	.aui-picker.aui-picker-out .aui-picker-main{
+		-moz-animation: aui-slide-down-screen .2s ease-out forwards;
+		-ms-animation: aui-slide-down-screen .2s ease-out forwards;
+		-webkit-animation: aui-slide-down-screen .2s ease-out forwards;
+		animation: aui-slide-down-screen .2s ease-out forwards;
+	}
+	.aui-picker-header{
+		width: 100%;
+		height: 50px;
+		position: relative;
+		z-index: 999;
+		background: #F2F2F2;
+		border-radius: 15px 15px 0 0;
+		display: flex;
+		align-items: center;
+	}
+	.aui-picker-header::after{
+		content: '';
+		width: 100%;
+		height: 1px;
+		background: rgba(100,100,100,.3);
+		-moz-transform: scaleY(.3);
+		-ms-transform: scaleY(.3);
+		-webkit-transform: scaleY(.3);
+		transform: scaleY(.3);
+		position: absolute;
+		left: 0;
+		bottom: 0;
+		z-index: 999;
+	}
+	.aui-picker-title{
+		line-height: 20px;
+		text-align: center;
+		font-size: 17px;
+		color: #333;
+		padding: 15px;
+		box-sizing: border-box;
+		flex: 1;
+		text-align: center;
+		/* position: absolute;
+		left: 50px;
+		right: 50px;
+		top: 0; */
+	}
+	.aui-picker-close{
+		font-size: 15px;
+		color: #333333;
+		flex: 0 0 auto;
+		height: 50px;
+		width: 60px;
+		text-align: center;
+		line-height: 50px;
+	}
+	.aui-picker-sure{
+		flex: 0 0 auto;
+		font-size: 15px;
+		color: #197DE0;
+		height: 50px;
+		width: 60px;
+		text-align: center;
+		line-height: 50px;
+	}
+	/* .aui-picker-close.iconfont{
+		width: 50px;
+		height: 50px;
+		line-height: 50px;
+		text-align: center;
+		font-size: 20px;
+		color: #aaa;
+		border-radius: 0 10px 0 0;
+		position: absolute;
+		right: 0;
+		top: 0;
+	} */
+	.aui-picker-content{
+		width: 100%;
+		height: -webkit-calc(100% - 100px);
+		height: calc(100% - 100px);
+	}
+	.aui-picker-nav{
+		width: 100%;
+		height: 50px;
+		text-align: left;
+		padding: 0 20rpx;
+		margin: 0 0 1px 0;
+		justify-content: flex-start;
+		white-space: nowrap;
+		box-sizing: border-box;
+		position: relative;
+		display: flex;
+		align-items: center;
+	}
+	.aui-picker-nav::after{
+		content: '';
+		width: 100%;
+		height: 1px;
+		background: rgba(100,100,100,.3);
+		-moz-transform: scaleY(.3);
+		-ms-transform: scaleY(.3);
+		-webkit-transform: scaleY(.3);
+		transform: scaleY(.3);
+		position: absolute;
+		left: 0;
+		bottom: 0;
+		z-index: 999;
+	}
+	.aui-picker-navitem{
+		flex: 1;
+		max-width:70px ;
+		/* width: 80px; */
+		line-height: 50px;
+		font-size: 16px;
+		
+		text-align: center;
+		display: inline-block;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+	.aui-picker-navitem.active{
+		color: #197DE0;
+	}
+	.aui-picker-navborder{
+		width: 40px;
+		height: 3px;
+		background: #197DE0;
+		border-radius: 5px;
+		transition: left .15s;
+		position: absolute;
+		left: 25px;
+		bottom: 0;
+	}
+	.aui-picker-lists{
+		width: 100%;
+		height: 100%;
+		justify-content: space-around;
+		white-space: nowrap;
+	}
+	.aui-picker-list{
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+		overflow-y: scroll;
+		display: none;
+		vertical-align: top;
+	}
+	.aui-picker-list.active{
+		display: inline-block;
+	}
+	.aui-picker-list-warp{
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		padding: 15px 0;
+		display: inline-block;
+	}
+	.aui-picker-item{
+		width: 100%;
+		height: 50px;
+		line-height: 50px;
+		padding: 0 15px;
+		box-sizing: border-box;
+		font-size: 15px;
+		color: #333;
+		position: relative;
+	}
+	.aui-picker-item.active{
+		color: #197DE0;
+	}
+	.aui-picker-item.active::after{
+		content: '✔';
+		font-size: 15px;
+		color: #197DE0;
+		position: absolute;
+		top: 0px;
+		right: 10px;
+	}
+
+</style>

+ 570 - 0
qs_zhaoshang/components/ba-tree-picker/selectnoreMorePicker.vue

@@ -0,0 +1,570 @@
+<template name="aui-picker">
+	<view class="aui-picker" v-if="SHOW" :class="{
+		'aui-picker-in': FADE==1,
+		'aui-picker-out': FADE==0}">
+
+		<view class="aui-picker-main">
+			<view class="aui-mask" @click.stop="close"></view>
+			<view class="aui-picker-header">
+				<view @click.stop="close" class="aui-picker-close">取消</view>
+				<view class="aui-picker-title" v-if="title">{{title}}</view>
+				<!-- <view class="aui-picker-close iconfont iconclose" ></view> -->
+				<!-- <view class="aui-picker-sure" @click.stop="getSure" v-if="titflag">确定</view> -->
+				<view class="aui-picker-sure" @click.stop="getSure">确定</view>
+			</view>
+			<view class="aui-picker-nav">
+				<view class="aui-picker-navitem" v-if="nav.length>0" v-for="(item, index) in nav" :key="index"
+					:data-index="index" :class="[index==navCurrentIndex ? 'active' : '', 'aui-picker-navitem-'+index]"
+					@click.stop="_changeNav($event)">{{item.deptName}}</view>
+				<!-- :style="{margin: nav.length>2 ? '0 10px 0 0' : '0 30px 0 0'}" -->
+				<view class="aui-picker-navitem" :key="nav.length" :data-index="nav.length"
+					:class="[nav.length==navCurrentIndex ? 'active' : '', 'aui-picker-navitem-'+nav.length]"
+					@click.stop="_changeNav($event)">请选择</view>
+				<!-- :style="{margin: nav.length>2 ? '0 10px 0 0' : '0 30px 0 0'}" -->
+				<view class="aui-picker-navborder" :style="{left: navBorderLeft+'px'}"></view>
+			</view>
+			<view class="aui-picker-content">
+				<view class="aui-picker-lists">
+					<view class="aui-picker-list" v-for="(list, index) in queryItems.length + 1" :key="index"
+						:data-index="index" :class="[index==navCurrentIndex ? 'active' : '']">
+						<view class="aui-picker-list-warp" v-if="index == 0">
+							<view class="aui-picker-item" v-for="(item, key) in items" :key="key" :data-pindex="index"
+								:data-index="key" :data-skcyId="item.skcyId" :data-deptName="item.deptName"
+								:class="{'active': result.length>index && result[index].skcyId==item.skcyId}"
+								:style="{'background': touchConfig.index==key && touchConfig.pindex==index ? touchConfig.style.background : ''}"
+								@click.stop="_chooseItem($event)" @touchstart="_btnTouchStart($event)"
+								@touchmove="_btnTouchEnd($event)" @touchend="_btnTouchEnd($event)">{{item.deptName}}</view>
+						</view>
+						<view class="aui-picker-list-warp" v-else>
+							<view class="aui-picker-item" v-for="(item, key) in queryItems[index-1]" :key="key"
+								:data-pindex="index" :data-index="key" :data-skcyId="item.skcyId" :data-deptName="item.deptName"
+								:class="{'active': result.length>index && result[index].skcyId==item.skcyId}"
+								:style="{'background': touchConfig.index==key && touchConfig.pindex==index ? touchConfig.style.background : ''}"
+								@click.stop="_chooseItem($event)" @touchstart="_btnTouchStart($event)"
+								@touchmove="_btnTouchEnd($event)" @touchend="_btnTouchEnd($event)">{{item.deptName}}</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		label: 'aui-picker',
+		props: {
+			title: { //标题
+				type: String,
+				default: ''
+			},
+			titflag: {
+				type: Boolean,
+				default: false,
+			},
+			layer: { //控制几级联动,默认无限级(跟随数据有无下级)
+				type: Number,
+				default: null
+			},
+			data: { //数据 如:[{id: '', label: '', children: [{id: '', label: ''}]}]
+				type: Array,
+				default () {
+					return [
+						// [{skcyId: '', deptName: '', children: [{skcyId: '', deptName: ''}]}]
+					]
+				}
+			}
+		},
+		data() {
+			return {
+				SHOW: false,
+				FADE: -1,
+				nav: [],
+				items: [],
+				queryItems: [],
+				navCurrentIndex: 0,
+				navBorderLeft: 25,
+				result: [],
+				touchConfig: {
+					index: -1,
+					pindex: -1,
+					style: {
+						color: '#197DE0',
+						background: '#EFEFEF'
+					}
+				},
+				loadflag: false
+			}
+		},
+		created() {
+			const _this = this;
+		},
+		watch: {
+			data() {
+
+				const _this = this;
+				const data = _this.data;
+				// _this.items = _this._flatten(data, '0')
+				_this.items = data
+			}
+		},
+		mounted() {
+
+		},
+		methods: {
+			// 打开
+			open(e) {
+				const _this = this;
+				if (e == 1) {
+					_this.reset(); //打开时重置picker
+				}
+
+				return new Promise(function(resolve, reject) {
+					_this.SHOW = true;
+					_this.FADE = 1;
+					resolve();
+				});
+			},
+			// 关闭
+			close() {
+				const _this = this;
+				return new Promise(function(resolve, reject) {
+					_this.FADE = 0;
+					const _hidetimer = setTimeout(() => {
+						_this.SHOW = false;
+						_this.FADE = -1;
+						clearTimeout(_hidetimer);
+						resolve();
+					}, 100)
+				});
+			},
+			//重置
+			reset() {
+				const _this = this;
+				_this.queryItems = [];
+				_this.nav = [];
+				_this.navBorderLeft = 25;
+				_this.navCurrentIndex = 0;
+				_this.result = [];
+			},
+			//导航栏切换
+			_changeNav(e) {
+				const _this = this;
+				const index = Number(e.currentTarget.dataset.index);
+				_this.navCurrentIndex = index;
+				const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-" + index);
+				_el.boundingClientRect(data => {
+					_this.navBorderLeft = data.left + 15;
+				}).exec();
+			},
+			//数据选择
+			_chooseItem(e) {
+				// 加载的时候禁止点击
+				// if (this.loadflag) {
+				// 	return
+				// }
+				// this.loadflag = true;
+				const _this = this;
+				const skcyId = e.currentTarget.dataset.skcyid;
+				const deptName = e.currentTarget.dataset.deptname;
+				// const deptId = e.currentTarget.dataset.deptId;
+				const _arr = [];
+				// 获取新数据
+				// _this.result[_this.navCurrentIndex] = {id: id, label: label, deptId: deptId};
+				// _this.$http.post('boman-system/chinaArea/treeSelect',{deptId: id}).then(res=>{
+				// 	this.loadflag=false;
+				// 	if(res.data.length>0){
+				// 		if(_this.navCurrentIndex == _this.queryItems.length)
+				// 		{ //选择数据
+				// 			_this.queryItems.push(res.data);
+				// 			_this.nav.push({label: label});
+				// 		}
+				// 		else
+				// 		{ //重新选择数据
+				// 			_this.queryItems.splice(_this.navCurrentIndex+1);
+				// 			_this.nav.splice(_this.navCurrentIndex+1);
+				// 			_this.queryItems.splice(_this.navCurrentIndex, 1, res.data);
+				// 			_this.nav.splice(_this.navCurrentIndex, 1, {label: label});
+				// 			//清空后面的选择
+				// 			_this.result.splice(Number(_this.navCurrentIndex+1))
+				// 		}
+				// 		_this.navCurrentIndex = _this.navCurrentIndex + 1;
+				// 		const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-"+_this.navCurrentIndex);
+				// 		setTimeout(()=>{
+				// 			_el.boundingClientRect(data => {
+				// 				_this.navBorderLeft = data.left + 15;
+				// 			}).exec();
+				// 		},100)
+				// 	}else{
+				// 		//无下级数据
+				// 		_this.close().then(()=>{
+				// 			_this.$emit("callback", {status: 0, data: _this.result});
+				// 		});
+				// 	}
+				// })
+				
+				_this.result.splice(Number(_this.navCurrentIndex+1))
+				_this.result[_this.navCurrentIndex] = {
+					skcyId: skcyId,
+					deptName: deptName,
+				};
+				// console.log(skcyId)
+				// console.log(_this._deepQuery(_this.data, skcyId),7)
+				if (
+					(!_this._isDefine(_this.layer) && _this._isDefine(_this._deepQuery(_this.data, skcyId).children)) ||
+					(_this.navCurrentIndex < (Number(_this.layer) - 1) && _this._isDefine(_this._deepQuery(_this.data, skcyId).children))
+				) { //有下级数据
+					_this._deepQuery(_this.data, skcyId).children.forEach(function(item, index) {
+						_arr.push({
+							skcyId: item.skcyId,
+							deptName: item.deptName,
+						});
+					});
+					if (_this.navCurrentIndex == _this.queryItems.length) { //选择数据
+						_this.queryItems.push(_arr);
+						_this.nav.push({
+							deptName: deptName
+						});
+					} else { //重新选择数据
+						_this.queryItems.splice(_this.navCurrentIndex + 1, 1);
+						_this.nav.splice(_this.navCurrentIndex + 1, 1);
+						_this.queryItems.splice(_this.navCurrentIndex, 1, _arr);
+						_this.nav.splice(_this.navCurrentIndex, 1, {
+							deptName: deptName
+						});
+					}
+					_this.navCurrentIndex = _this.navCurrentIndex + 1;
+					const _el = uni.createSelectorQuery().in(this).select(".aui-picker-navitem-" + _this.navCurrentIndex);
+					setTimeout(() => {
+						_el.boundingClientRect(data => {
+							_this.navBorderLeft = data.left + 20;
+						}).exec();
+					}, 100)
+				} else { //无下级数据
+					_this.close().then(() => {
+						_this.$emit("callback", {
+							status: 0,
+							data: _this.result
+						});
+					});
+				}
+			},
+			getSure() {
+				this.close().then(() => {
+					this.$emit("callback", {
+						status: 0,
+						data: this.result
+					});
+				});
+			},
+			//递归遍历——将树形结构数据转化为数组格式
+			_flatten(tree, deptId) {
+				return tree.reduce((arr, {
+						skcyId,
+						deptName,
+						children = []
+					}) =>
+					arr.concat([{
+						skcyId,
+						deptName,
+					}], this._flatten(skcyId)), [])
+			},
+			//根据id查询对应的数据(如查询id=10100对应的对象)
+			_deepQuery(tree, skcyId) {
+				let isGet = false;
+				let retNode = null;
+				function deepSearch(tree, skcyId) {
+					for (let i = 0; i < tree.length; i++) {
+						if (tree[i].children && tree[i].children.length > 0) {
+							deepSearch(tree[i].children, skcyId);
+						}
+						if (skcyId == tree[i].skcyId || isGet) {
+							isGet || (retNode = tree[i]);
+							isGet = true;
+							break;
+						}
+					}
+				}
+				deepSearch(tree, skcyId);
+				return retNode;
+			},
+			/***判断字符串是否为空
+			   @param {string} str 变量
+			   @example: aui.isDefine("变量");
+			*/
+			_isDefine(str) {
+				if (str == null || str == "" || str == "undefined" || str == undefined || str == "null" || str ==
+					"(null)" || str == 'NULL' || typeof(str) == 'undefined') {
+					return false;
+				} else {
+					str = str + "";
+					str = str.replace(/\s/g, "");
+					if (str == "") {
+						return false;
+					}
+					return true;
+				}
+			},
+			_btnTouchStart(e) {
+				const _this = this,
+					index = Number(e.currentTarget.dataset.index),
+					pindex = Number(e.currentTarget.dataset.pindex);
+				_this.touchConfig.index = index;
+				_this.touchConfig.pindex = pindex;
+			},
+			_btnTouchEnd(e) {
+				const _this = this,
+					index = Number(e.currentTarget.dataset.index),
+					pindex = Number(e.currentTarget.dataset.pindex);
+				_this.touchConfig.index = -1;
+				_this.touchConfig.pindex = -1;
+			},
+		}
+	}
+</script>
+
+<style scoped>
+	/* ====================
+		多级联动弹窗
+	 =====================*/
+	.aui-picker {
+		width: 100vw;
+		height: 100vh;
+		/* opacity: 0;		 */
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 1200;
+		background: rgba(0, 0, 0, 0.5);
+		/* display: none; */
+	}
+
+	.aui-picker.aui-picker-in {
+		-moz-animation: aui-fade-in .1s ease-out forwards;
+		-ms-animation: aui-fade-in .1s ease-out forwards;
+		-webkit-animation: aui-fade-in .1s ease-out forwards;
+		animation: aui-fade-in .1s ease-out forwards;
+	}
+
+	.aui-picker.aui-picker-out {
+		-moz-animation: aui-fade-out .1s ease-out forwards;
+		-ms-animation: aui-fade-out .1s ease-out forwards;
+		-webkit-animation: aui-fade-out .1s ease-out forwards;
+		animation: aui-fade-out .1s ease-out forwards;
+	}
+
+	.aui-picker-main {
+		width: 100vw;
+		height: 50vh;
+		background: #FFF;
+		border-radius: 15px 15px 0 0;
+		position: absolute;
+		left: 0px;
+		/* bottom: -50vh;		 */
+		bottom: 0vh;
+		z-index: 999;
+	}
+
+	.aui-picker.aui-picker-in .aui-picker-main {
+		-moz-animation: aui-slide-up-screen .2s ease-out forwards;
+		-ms-animation: aui-slide-up-screen .2s ease-out forwards;
+		-webkit-animation: aui-slide-up-screen .2s ease-out forwards;
+		animation: aui-slide-up-screen .2s ease-out forwards;
+	}
+
+	.aui-picker.aui-picker-out .aui-picker-main {
+		-moz-animation: aui-slide-down-screen .2s ease-out forwards;
+		-ms-animation: aui-slide-down-screen .2s ease-out forwards;
+		-webkit-animation: aui-slide-down-screen .2s ease-out forwards;
+		animation: aui-slide-down-screen .2s ease-out forwards;
+	}
+
+	.aui-picker-header {
+		width: 100%;
+		height: 50px;
+		position: relative;
+		z-index: 999;
+		background: #F2F2F2;
+		border-radius: 15px 15px 0 0;
+		display: flex;
+		align-items: center;
+	}
+
+	.aui-picker-header::after {
+		content: '';
+		width: 100%;
+		height: 1px;
+		background: rgba(100, 100, 100, .3);
+		-moz-transform: scaleY(.3);
+		-ms-transform: scaleY(.3);
+		-webkit-transform: scaleY(.3);
+		transform: scaleY(.3);
+		position: absolute;
+		left: 0;
+		bottom: 0;
+		z-index: 999;
+	}
+
+	.aui-picker-title {
+		line-height: 20px;
+		text-align: center;
+		font-size: 17px;
+		color: #333;
+		padding: 15px;
+		box-sizing: border-box;
+		flex: 1;
+		text-align: center;
+		/* position: absolute;
+		left: 50px;
+		right: 50px;
+		top: 0; */
+	}
+
+	.aui-picker-close {
+		font-size: 15px;
+		color: #333333;
+		flex: 0 0 auto;
+		height: 50px;
+		width: 60px;
+		text-align: center;
+		line-height: 50px;
+	}
+
+	.aui-picker-sure {
+		flex: 0 0 auto;
+		font-size: 15px;
+		color: #197DE0;
+		height: 50px;
+		width: 60px;
+		text-align: center;
+		line-height: 50px;
+	}
+
+	/* .aui-picker-close.iconfont{
+		width: 50px;
+		height: 50px;
+		line-height: 50px;
+		text-align: center;
+		font-size: 20px;
+		color: #aaa;
+		border-radius: 0 10px 0 0;
+		position: absolute;
+		right: 0;
+		top: 0;
+	} */
+	.aui-picker-content {
+		width: 100%;
+		height: -webkit-calc(100% - 100px);
+		height: calc(100% - 100px);
+	}
+
+	.aui-picker-nav {
+		width: 100%;
+		height: 50px;
+		text-align: left;
+		padding: 0 20rpx;
+		margin: 0 0 1px 0;
+		justify-content: flex-start;
+		white-space: nowrap;
+		box-sizing: border-box;
+		position: relative;
+		display: flex;
+		align-items: center;
+	}
+
+	.aui-picker-nav::after {
+		content: '';
+		width: 100%;
+		height: 1px;
+		background: rgba(100, 100, 100, .3);
+		-moz-transform: scaleY(.3);
+		-ms-transform: scaleY(.3);
+		-webkit-transform: scaleY(.3);
+		transform: scaleY(.3);
+		position: absolute;
+		left: 0;
+		bottom: 0;
+		z-index: 999;
+	}
+
+	.aui-picker-navitem {
+		flex: 1;
+		max-width: 70px;
+		/* width: 80px; */
+		line-height: 50px;
+		font-size: 16px;
+
+		text-align: center;
+		display: inline-block;
+		overflow: hidden;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+	}
+
+	.aui-picker-navitem.active {
+		color: #197DE0;
+	}
+
+	.aui-picker-navborder {
+		width: 40px;
+		height: 3px;
+		background: #197DE0;
+		border-radius: 5px;
+		transition: left .15s;
+		position: absolute;
+		left: 25px;
+		bottom: 0;
+	}
+
+	.aui-picker-lists {
+		width: 100%;
+		height: 100%;
+		justify-content: space-around;
+		white-space: nowrap;
+	}
+
+	.aui-picker-list {
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+		overflow-y: scroll;
+		display: none;
+		vertical-align: top;
+	}
+
+	.aui-picker-list.active {
+		display: inline-block;
+	}
+
+	.aui-picker-list-warp {
+		width: 100%;
+		height: auto;
+		box-sizing: border-box;
+		padding: 15px 0;
+		display: inline-block;
+	}
+
+	.aui-picker-item {
+		width: 100%;
+		height: 50px;
+		line-height: 50px;
+		padding: 0 15px;
+		box-sizing: border-box;
+		font-size: 15px;
+		color: #333;
+		position: relative;
+	}
+
+	.aui-picker-item.active {
+		color: #197DE0;
+	}
+
+	.aui-picker-item.active::after {
+		content: '✔';
+		font-size: 15px;
+		color: #197DE0;
+		position: absolute;
+		top: 0px;
+		right: 10px;
+	}
+</style>

+ 344 - 0
qs_zhaoshang/components/clue/clue.vue

@@ -0,0 +1,344 @@
+<template>
+	<view>
+		<!-- 项目信息 -->
+		<uni-collapse  ref="collapse" v-model="value" @change="changeone" >
+			<!--  -->
+			<uni-collapse-item title="项目信息" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">项目信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+							<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+					<!-- 展示的内容 -->
+					<view class="content pdt10" v-if="!value[0]||value[0]!=0">
+						<view class="contenta">
+							<view class="tit">项目编号</view>
+							<view class="txt">{{datainfo.xmbh||""}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">项目线索名称</view>
+							<view class="txt">{{datainfo.xmxsmc||""}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">拟投资额 (亿元)</view>
+							<view class="txt">{{datainfo.ntze||""}}</view>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">项目编号</view>
+						<view class="txt">{{datainfo.xmbh||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目线索名称</view>
+						<view class="txt">{{datainfo.xmxsmc||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">是否为领航信息项目</view>
+						<view class="txt">{{(datainfo.sfwlhxxxm=='Y'||datainfo.sfwlhxxxm=='S') ? '是':'否'}}</view>
+					</view>
+					<!-- <view class="contenta">
+						<view class="tit">引资地区</view>
+						<view class="txt">{{getYzAdr(datainfo.yzdqId)||""}}</view>
+					</view> -->
+					<view class="contenta">
+						<view class="tit">引资省市</view>
+						<view class="txt">{{datainfo.yzssName||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">拟投资额 (亿元)</view>
+						<view class="txt">{{datainfo.ntze||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">产业类型</view>
+						<view class="txt">{{datainfo.cylxName||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目类别</view>
+						<view class="txt">{{datainfo.xmlb||""}}</view>
+					</view>
+					<!-- <view class="contenta">
+						<view class="tit">投资类别</view>
+						<view class="txt">{{datainfo.tzlb||""}}</view>
+					</view> -->
+					<view class="contenta">
+						<view class="tit">拟落户地</view>
+						<view class="txt">{{datainfo.nlhd||""}}</view>
+					</view>
+					<!-- <view class="contenta">
+						<view class="tit">投资主体</view>
+						<view class="txt">{{datainfo.tzzt||""}}</view>
+					</view> -->
+					<view class="contenta">
+						<view class="tit">个体投资人身份证号码</view>
+						<view class="txt">{{datainfo.gtzzrsfzhm||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">企业投资人信用证代码</view>
+						<view class="txt">{{datainfo.qytzrxyzdm||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">企业背景</view>
+						<view class="txt">{{datainfo.qybj||""}}</view>
+					</view>
+					<!-- <view class="contenta">
+						<view class="tit">投资方简介</view>
+						<view class="txt">{{datainfo.tzfjj||""}}</view>
+					</view> -->
+					<!-- <view class="contenta">
+						<view class="tit">上年度销售额(万元)</view>
+						<view class="txt">{{datainfo.sndxse||""}}</view>
+					</view> -->
+					<!-- <view class="contenta">
+						<view class="tit">上年度纳税额(万元)</view>
+						<view class="txt">{{datainfo.sndnse||""}}</view>
+					</view> -->
+					<view class="contenta">
+						<view class="tit">投资人姓名、职务、联系方式</view>
+						<view class="txt">{{datainfo.tzrxm||""}}<block v-if="datainfo.tzrzw">、</block>{{datainfo.tzrzw||""}}<block v-if="datainfo.tzrdh">、</block>{{datainfo.tzrdh||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目简介</view>
+						<view class="txt">{{datainfo.xmjj||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目进展</view>
+						<view class="txt">{{datainfo.xmjzqk||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">存在问题</view>
+						<view class="txt">{{datainfo.czwt||""}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+			<!-- 企业,自然人信息 -->
+			<!-- 首谈信息 -->
+			<uni-collapse-item title="企业/自然人" class='cldelista' :show-arrow='false' :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">企业/自然人</view>
+						<view  class="flex1 cldelistz" :class="value[0]==1||value[1]==1?'act':''">
+							<view class="cofe f15">{{value[0]==1||value[1]==1?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<!-- 企业 -->
+					<view class="f16 c64 fw mb10" v-if="qiaddlist.length">企业</view>
+					
+					<view v-for="(ite,idx) in qiaddlist" :key="'info-'+idx">
+						
+						<view class="contenta flexcj">
+							<view class="tit flex0 flexcj mb10 mr10">企业名称</view>
+							<view class="txt">{{ite.companyName}}</view>
+						</view>
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">企业所在地</view>
+							<view class="txt">{{ite.companyAddress}}</view>
+						</view>
+						<view class="contenta flexcj ">
+							<view class="tit flex0 mr10">法人代表姓名</view>
+							<view class="txt">{{ite.companyLegal}}</view>
+						</view>
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">统一社会信用代码</view>
+							<view class="txt">{{ite.companyCode}}</view>
+						</view>
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">联系方式</view>
+							<view class="txt">{{ite.phone}}</view>
+						</view>
+					</view>
+					<!-- 自然人 -->
+					<view class="border" v-if="qiaddlist.length&&ziaddlist.length"></view>
+					<view class="f16 c64 fw mb10 pdt10" v-if="ziaddlist.length">自然人</view>
+					<view v-for="(ite,idx) in ziaddlist" :key="idx">
+						
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">姓名</view>
+							<view class="txt">{{ite.name}}</view>
+						</view>
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">所在地</view>
+							<view class="txt">{{ite.address}}</view>
+						</view>
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">身份证号码</view>
+							<view class="txt">{{ite.idcode}}</view>
+						</view>
+						<view class="contenta flexcj">
+							<view class="tit flex0 mr10">联系方式</view>
+							<view class="txt">{{ite.phone}}</view>
+						</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+			
+			<uni-collapse-item title="首谈信息" class='cldelista' :show-arrow='false' :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">首谈信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==2||value[1]==2||value[2]==2?'act':''">
+							<view class="cofe f15">{{value[0]==2||value[1]==2||value[2]==2?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">首谈人姓名、职务、联系方式</view>
+						<view class="txt">{{datainfo.name||""}}<block v-if="datainfo.zw">、</block>{{datainfo.zw||""}}<block v-if="datainfo.phone">、</block>{{datainfo.phone||""}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">首谈日期</view>
+						<view class="txt">{{datainfo.strq||""}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<!-- 备注 -->
+		<block v-if="datainfo.zsyzFjList">
+			<view class='cldelista cldelistb' >
+				<!-- <view class="contenta" v-if="datainfo.remark">
+					<view class="tit">备注</view>
+					<view class="txt">{{datainfo.remark}}</view>
+				</view> -->
+				<view class="contenta " v-if="datainfo.zsyzFjList">
+					<view class="tit">附件</view>
+					<view class="txt flexcj cldelistbf mb10" v-for="(ite,idx) in datainfo.zsyzFjList" :key='idx'>
+						<view class="flext f16 c6">
+							<view class="imgl">
+								<image :src="wimg" ></image>
+							</view>
+							
+							<view>{{ite.fjName}}</view>
+							</view>
+						<view class="flexc f16 co28 flex0" @click="getDown(ite.path)">
+							<image :src="downimg" class="imgr"></image>
+							预览</view>
+					</view>
+				</view>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	import { selectDictLabel } from '@/utils/common.js';
+	
+	export default{
+		props:{
+			qiaddlist:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			ziaddlist:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			datainfo:{
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			yzadr:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			cytype:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			projectlist:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			backgroundlist:{
+				type: Array,
+				default () {
+					return []
+				}
+			}
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+			}
+		},
+		filters: {
+			kaType(data, list) {
+				return selectDictLabel(list, data);
+			}
+		},
+		methods:{
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			changeone(e){
+			},
+			changetwo(e){
+			},
+			getYzAdr(data){
+				return selectDictLabel(this.yzadr, data);
+			},
+			getCytype(data){
+				return selectDictLabel(this.cytype, data);
+			},
+			getProject(data){
+				return selectDictLabel(this.projectlist, data);
+			},
+			getBackground(data){
+				return selectDictLabel(this.backgroundlist, data);
+			}
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.cldelista{
+	border-bottom: 2rpx solid #E5E5E5;
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-bottom: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+</style>

+ 246 - 0
qs_zhaoshang/components/clue/signup.vue

@@ -0,0 +1,246 @@
+<template>
+	<view>
+		<!-- 项目信息 -->
+		<uni-collapse  ref="collapse" v-model="value" @change="changeone" >
+			<!--  -->
+			<uni-collapse-item title="项目信息" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">签约信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+							<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+					<!-- 展示的内容 -->
+					<view class="content pdt10" v-if="!value[0]||value[0]!=0">
+						<view class="contenta">
+							<view class="tit">项目名称</view>
+							<view class="txt">{{datainfo.xmmc}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">签约日期</view>
+							<view class="txt">{{datainfo.qyrq}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">协议投资额(万元)</view>
+							<view class="txt">{{datainfo.xytze}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">项目所在地</view>
+							<view class="txt">{{datainfo.xmszd}}</view>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">项目名称</view>
+						<view class="txt">{{datainfo.xmmc}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">对方签约人(含单位、职务、姓名)</view>
+						<view class="txt">{{datainfo.dfqyr}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">我方签约人(含单位、职务、姓名)</view>
+						<view class="txt">{{datainfo.wfqyr}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">填报日期</view>
+						<view class="txt">{{datainfo.tbrq}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">签约日期</view>
+						<view class="txt">{{datainfo.qyrq}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">协议投资额(万元)</view>
+						<view class="txt">{{datainfo.xytze}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">市外资金(万元)</view>
+						<view class="txt">{{datainfo.swzj}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">固定资产投资额(万元)</view>
+						<view class="txt">{{datainfo.gdzctze}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">签约跟进人姓名、职务、联系方式</view>
+						<view class="txt">{{datainfo.xmgjrxm}}
+						<block v-if="datainfo.xmgjrzw">、</block>{{datainfo.xmgjrzw}}
+						<block v-if="datainfo.xmgjrsjh">、</block>{{datainfo.xmgjrsjh}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目所在地(园区或乡镇)</view>
+						<view class="txt">{{datainfo.xmszd}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">所属行业</view>
+						<view class="txt">{{datainfo.sshy}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">投资方式</view>
+						<view class="txt">{{datainfo.tzfs}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">建设方式</view>
+						<view class="txt">{{datainfo.jsfs}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">是否宜商</view>
+						<view class="txt">{{datainfo.sfys=='Y'?'是':'否'}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">建设内容</view>
+						<view class="txt">{{datainfo.jsnr}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">租赁厂房(平方米)</view>
+						<view class="txt">{{datainfo.zlcf}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">供地面积(亩)</view>
+						<view class="txt">{{datainfo.gdmj}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">立项日期</view>
+						<view class="txt">{{datainfo.lxrq}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">拟开工日期</view>
+						<view class="txt">{{datainfo.nkgrq}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">存在问题</view>
+						<view class="txt">{{datainfo.czwt}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+			<!-- 企业信息 -->
+			<uni-collapse-item title="企业信息" class='cldelista' :show-arrow='false' :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">企业信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==1||value[1]==1?'act':''">
+							<view class="cofe f15">{{value[0]==1||value[1]==1?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">注册企业名称</view>
+						<view class="txt">{{datainfo.zcqymc}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">注册日期</view>
+						<view class="txt">{{datainfo.zcrq}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">注册资本(万元)</view>
+						<view class="txt">{{datainfo.zczb}}</view>
+					</view>
+					
+					<view class="contenta">
+						<view class="tit">法人代表</view>
+						<view class="txt">{{datainfo.frdb}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">联系方式</view>
+						<view class="txt">{{datainfo.lxfs}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">经营范围</view>
+						<view class="txt">{{datainfo.jyfw}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<!-- 备注 -->
+		<block v-if="datainfo.zsyzFjList">
+			<view class='cldelista cldelistb' >
+				<!-- <view class="contenta" v-if="datainfo.remark">
+					<view class="tit">备注</view>
+					<view class="txt">{{datainfo.remark}}</view>
+				</view> -->
+				<view class="contenta " v-if="datainfo.zsyzFjList">
+					<view class="tit">附件</view>
+					<view class="txt flexcj cldelistbf mb10" v-for="ite,idx in datainfo.zsyzFjList" :key='idx'>
+						<view class="flext f16 c6">
+							<view class="imgl">
+								<image :src="wimg" ></image>
+							</view>
+							
+							<view>{{ite.fjName}}</view>
+							</view>
+						<view class="flexc f16 co28 flex0" @click="getDown(ite.path)">
+							<image :src="downimg" class="imgr"></image>
+							预览</view>
+					</view>
+				</view>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			datainfo:{
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+			}
+		},
+		methods:{
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			changeone(e){
+				// console.log(e,9)
+			},
+			changetwo(e){
+				// console.log(e,9)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.cldelista{
+	border-bottom: 2rpx solid #E5E5E5;
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-bottom: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+</style>

+ 214 - 0
qs_zhaoshang/components/clue/startwork.vue

@@ -0,0 +1,214 @@
+<template>
+	<view>
+		<!-- 开工信息 -->
+		<uni-collapse  ref="collapse" v-model="value" @change="changeone" >
+			<!--  -->
+			<uni-collapse-item title="开工信息" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">开工信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+							<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+					<!-- 展示的内容 项目名称、开工时间-->
+					<view class="content pdt10" v-if="!value[0]||value[0]!=0">
+						<view class="contenta">
+							<view class="tit">项目名称</view>
+							<view class="txt">{{datainfo.xmmc}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">开工日期</view>
+							<view class="txt">{{datainfo.kgrq}}</view>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">项目名称</view>
+						<view class="txt">{{datainfo.xmmc}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">开工日期</view>
+						<view class="txt">{{datainfo.kgrq}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">拟竣工日期</view>
+						<view class="txt">{{datainfo.njgrq}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">试生产日期</view>
+						<view class="txt">{{datainfo.sscrq}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">拟投产日期</view>
+						<view class="txt">{{datainfo.ntcsj}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit" style="margin-bottom: 0;">入统日期</view>
+						<view class="txt">{{datainfo.rtsj}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit" style="margin-bottom: 0;">拟入统日期</view>
+						<view class="txt">{{datainfo.nrtsj}}</view>
+					</view>
+					
+				</view>
+			</uni-collapse-item>
+			<!-- 进度照片-->
+			<uni-collapse-item title="进度照片" v-if="ratelist.length" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">进度照片</view>
+						<view  class="flex1 cldelistz" :class="value[0]==1||value[1]==1?'act':''">
+							<view class="cofe f15">{{value[0]==1||value[1]==1?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content" v-for="(ite,idx) in ratelist" :key="'info-'+idx">
+					<view class="contenta flexcj">
+						<view class="tit">进度</view>
+						<view class="txt">{{ite.rateType}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">描述</view>
+						<view class="txt">{{ite.jdDescribe}}</view>
+					</view>
+					<view class="contenta" >
+						<view class="tit flex0">照片</view>
+
+						<view class="photobox">
+							<image class='photo' :src="baseUrl+pite" v-for="(pite,pidx) in ite.photo" @click="getPreview(ite.photo,pidx)" :key="'info1-'+pidx"></image>
+						</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<!-- 备注 -->
+		<view class='cldelista cldelistb' >
+			<view class="contenta flexcj" style="padding: 0;">
+				<view class="tit" style="margin-bottom: 0;">存在问题</view>
+				<view class="txt">{{datainfo.czwt||""}}</view>
+			</view>
+		</view>
+		<block v-if="datainfo.zsyzFjList">
+			<view class='cldelista cldelistb' >
+				<!-- <view class="contenta" v-if="datainfo.remark">
+					<view class="tit">备注</view>
+					<view class="txt">{{datainfo.remark}}</view>
+				</view> -->
+				<view class="contenta " v-if="datainfo.zsyzFjList">
+					<view class="tit">附件</view>
+					<view class="txt flexcj cldelistbf mb10" v-for="ite,idx in datainfo.zsyzFjList" :key='idx'>
+						<view class="flext f16 c6">
+							<view class="imgl">
+								<image :src="wimg" ></image>
+							</view>
+							
+							<view>{{ite.fjName}}</view>
+							</view>
+						<view class="flexc f16 co28 flex0" @click="getDown(ite.path)">
+							<image :src="downimg" class="imgr"></image>
+							预览</view>
+					</view>
+				</view>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	import config from '@/config.js';
+	const baseUrl = config.baseUrl;
+	export default{
+		props:{
+			datainfo:{
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			ratelist:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			xmxsmc:''
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+				baseUrl:''
+			}
+		},
+		mounted() {
+			this.baseUrl=baseUrl;
+		},
+		methods:{
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			changeone(e){
+				// console.log(e,9)
+			},
+			changetwo(e){
+				// console.log(e,9)
+			},
+			// 查看照片
+			getPreview(iurl,idx) {
+				var newArr=[];
+				iurl.forEach(ite=>{
+					var ds=this.baseUrl+ite
+					newArr.push(ds)
+				})
+				uni.previewImage({
+					urls: newArr,
+					current:idx,
+					success: function(data) {
+						
+					},
+					fail: function(err) {
+						console.log(err.errMsg);
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.cldelista{
+	border-bottom: 2rpx solid #E5E5E5;
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-bottom: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+.photobox{flex: 1;display: flex;align-items: center;flex-wrap: wrap;}
+.photo{width: 200rpx;height: 200rpx;margin: 10rpx;}
+</style>

+ 251 - 0
qs_zhaoshang/components/clue/tputinto.vue

@@ -0,0 +1,251 @@
+<template>
+	<view>
+		<!-- 投产信息 -->
+		<uni-collapse  ref="collapse" v-model="value" @change="changeone" >
+			<!--  -->
+			<uni-collapse-item title="投产信息" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">投产信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+							<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+					<!-- 展示的内容 项目名称、投产日期-->
+					<view class="content pdt10" v-if="!value[0]||value[0]!=0">
+						<view class="contenta">
+							<view class="tit">项目名称</view>
+							<view class="txt">{{datainfo.xmmc}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">投产日期</view>
+							<view class="txt">{{datainfo.tcrq}}</view>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">项目名称</view>
+						<view class="txt">{{datainfo.xmmc}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">投产日期</view>
+						<view class="txt">{{datainfo.tcrq}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">入规日期</view>
+						<view class="txt">{{datainfo.rgsj}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">拟入规日期</view>
+						<view class="txt">{{datainfo.nrgsj}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">实际到资额(万元)</view>
+						<view class="txt">{{datainfo.sjdze}}</view>
+					</view>
+					
+					
+				</view>
+			</uni-collapse-item>
+			<uni-collapse-item title="到资明细" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">到资明细</view>
+						<view  class="flex1 cldelistz" :class="value[0]==1||value[1]==1?'act':''">
+							<view class="cofe f15">{{value[0]==1||value[1]==1?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">用地面积(亩)</view>
+						<view class="txt">{{datainfo.ydmj}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">土地出让(万元)</view>
+						<view class="txt">{{datainfo.tdcr}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">新建厂房(平方米)</view>
+						<view class="txt">{{datainfo.xjcf}}</view>
+					</view>
+					<view class="contenta flexcj mb10">
+						<view class="tit" style="margin-bottom: 0;">厂房投入(万元)</view>
+						<view class="txt">{{datainfo.cftr}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit" style="margin-bottom: 0;">设备清单(万元)</view>
+						<view class="txt">{{datainfo.sbqd}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit" style="margin-bottom: 0;">设备发票(万元)</view>
+						<view class="txt">{{datainfo.sbfp}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit" style="margin-bottom: 0;">设备合同(万元)</view>
+						<view class="txt">{{datainfo.sbht}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit" style="margin-bottom: 0;">付款凭证(万元)</view>
+						<view class="txt">{{datainfo.fkpz}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<!--  租赁厂房 -->
+		<view class="contentt cldelista">
+			<view class="contenta flexcj mb10">
+				<view class="tit" style="margin-bottom: 0;">租赁厂房(平方米)</view>
+				<view class="txt">{{datainfo.zlcf}}</view>
+			</view>
+			<view class="contenta flexcj mb10">
+				<view class="tit" style="margin-bottom: 0;">厂房投入(万元)</view>
+				<view class="txt">{{datainfo.zlcftr}}</view>
+			</view>
+			<view class="contenta flexcj mb10">
+				<view class="tit" style="margin-bottom: 0;">设备清单(万元)</view>
+				<view class="txt">{{datainfo.zlsbqd}}</view>
+			</view>
+			<view class="contenta flexcj mb10">
+				<view class="tit" style="margin-bottom: 0;">设备发票(万元)</view>
+				<view class="txt">{{datainfo.zlsbfp}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit" style="margin-bottom: 0;">设备合同(万元)</view>
+				<view class="txt">{{datainfo.zlsbht}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit" style="margin-bottom: 0;">付款凭证(万元)</view>
+				<view class="txt">{{datainfo.zlfkpz}}</view>
+			</view>
+		</view>
+		<!-- 税收 -->
+		<view class="contentt cldelista">
+			<view class="contenta flexcj mb10" style="padding: 0;">
+				<view class="tit" style="margin-bottom: 0;">实缴税收(万元)</view>
+				<view class="txt">{{datainfo.sjss}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit" style="margin-bottom: 0;">连续<text class="f16 f500 c6 mlr8">{{datainfo.lxy}}</text>个月 缴纳社保<text  class="f16 f500 c6 mlr8">{{datainfo.jnsb}}</text>人</view>
+			</view>
+		</view>
+		<!-- 装备投入 -->
+		<view class="contentt cldelista">
+			<view class="contenta flexcj" style="padding: 0;">
+				<view class="tit" style="margin-bottom: 0;">装备投入(万元)</view>
+				<view class="txt">{{datainfo.zbtr}}</view>
+			</view>
+		</view>
+		<!-- 会计年度 -->
+		<view class="contentt cldelista">
+			<view class="contenta flexcj " style="padding: 0;">
+				<view class="tit" style="margin-bottom: 0;">会计年度实缴税收(万元)</view>
+				<view class="txt">{{datainfo.ndsjss}}</view>
+			</view>
+		</view>
+		<!-- 其他 -->
+		<view class="contentt cldelista">
+			<view class="contenta flexcj" style="padding: 0;">
+				<view class="tit" style="margin-bottom: 0;">其他</view>
+				<view class="txt">{{datainfo.qt}}</view>
+			</view>
+		</view>
+		<view class="contentt cldelista">
+			<view class="contenta flexcj" style="padding: 0;">
+				<view class="tit" style="margin-bottom: 0;">存在问题</view>
+				<view class="txt">{{datainfo.czwt}}</view>
+			</view>
+		</view>
+		<!-- 备注 -->
+		<block v-if="datainfo.zsyzFjList">
+			<view class='cldelista cldelistb' >
+				<!-- <view class="contenta" v-if="datainfo.remark">
+					<view class="tit">备注</view>
+					<view class="txt">{{datainfo.remark}}</view>
+				</view> -->
+				<view class="contenta " v-if="datainfo.zsyzFjList">
+					<view class="tit">附件</view>
+					<view class="txt flexcj cldelistbf mb10" v-for="ite,idx in datainfo.zsyzFjList" :key='idx'>
+						<view class="flext f16 c6">
+							<view class="imgl">
+								<image :src="wimg" ></image>
+							</view>
+							
+							<view>{{ite.fjName}}</view>
+							</view>
+						<view class="flexc f16 co28 flex0" @click="getDown(ite.path)">
+							<image :src="downimg" class="imgr"></image>
+							预览</view>
+					</view>
+				</view>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			datainfo:{
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			xmxsmc:""
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+			}
+		},
+		methods:{
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			changeone(e){
+				// console.log(e,9)
+			},
+			changetwo(e){
+				// console.log(e,9)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.cldelista{
+	border-bottom: 2rpx solid #E5E5E5;
+	&.cldelistb{padding: 48rpx 28rpx;}
+	
+}
+.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-bottom: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+</style>

+ 69 - 0
qs_zhaoshang/components/footer/footer.vue

@@ -0,0 +1,69 @@
+<template>
+	<view>
+		
+	
+	<view style="height: 100rpx;"></view>
+    <view class="com_footer">
+        <view class="in_item" v-for="(item,k) in footlist" :key="k" @click="gotopage(item)">
+			<image class="in_img" v-if="active == item.module" :src="item.icon_checked" mode="scaleToFill"></image>
+			<image class="in_img" v-else :src="item.icon_nochecked" mode="scaleToFill"></image>
+			<view class="in_txt" v-if="active == item.module" :style="'color: #'+color_checked">{{item.title}}</view>
+			<view class="in_txt" v-else :style="'color: #'+color_nochecked">{{item.title}}</view>
+        </view>
+    </view>
+	</view>
+</template>
+
+<script>
+	// import api from '../../api/api.js'
+	// import plugins from '../../commen/js/plugin.js'
+    export default {
+		props:[
+			'footlist',
+			'footerindex',
+			'color_checked',
+			'color_nochecked',
+			'isHomeIndex'
+		],
+        data () {
+            return{
+				active :'',
+            }
+        },
+		mounted() {
+			var that = this;
+			this.active = this.footerindex;
+		},
+        methods:{
+            // 跳转底部导航页面
+			gotopage(e){
+				var that = this;
+				let link = e.link, module = e.module, def = e.default, title = e.title;
+				if(module == 'home'){
+					this.$tab.reLaunch('/pages/index')
+				}else if(module == 'mine'){
+					this.$tab.reLaunch('/pages/mine/index')
+				}else if(module == 'center'){
+					this.$tab.reLaunch('/pages/center')
+				}else if(module == 'zdhome'){
+					this.$tab.reLaunch('/pages/indexs')
+				}else if(module == 'zdcount'){
+					this.$tab.reLaunch('/pages/zdpages/count/index')
+				}else if(module == 'zdmine'){
+					this.$tab.reLaunch('/pages/zdpages/work/mine')
+				}
+			},
+			
+        }
+    }
+</script>
+
+
+
+<style type="text/css">
+    .com_footer{ display: flex;position: fixed;box-sizing: border-box;z-index: 99;width: 100%;height: 100rpx;bottom: 0;left: 0;background-color: #fff;overflow: hidden;box-shadow: 0px 0px 16rpx 0px rgba(87,87,87,0.41);}
+	.com_footer .in_item{ display: block;flex: 1;padding: 12rpx 0 0 0;overflow: hidden; }
+	.com_footer .in_img{ display: block;width: 44rpx;height: 44rpx;margin: 0 auto; }
+	.com_footer .in_txt{ font-size: 26rpx;color: #999;text-align: center; font-weight: bold;}
+	.com_footer .in_txt_on{ color: #20AD20; }
+</style>

+ 39 - 0
qs_zhaoshang/components/nodata/nodata.vue

@@ -0,0 +1,39 @@
+<template>
+	<view class="nodata" :style="'padding-top:'+padtop+'rpx'">
+		<image :src="noiconpimg"></image>
+		<view>{{notxt}}</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			notxt:{
+				type: String,
+				default () {
+					return '暂无数据'
+				}
+			},
+			padtop:{
+				type: Number,
+				default () {
+					return 200
+				}
+			}
+		},
+		data(){
+			return{
+				noiconpimg:require("@/static/images/noiconp.png"),
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+// 无数据
+.nodata{
+	display: flex;flex-direction: column;align-items: center;box-sizing: border-box;
+	image{width: 456rpx;height: 178rpx;margin-bottom: 28rpx;}
+	view{font-size: 30rpx;color: #AAAAAA;font-weight: bold;}
+}	
+</style>

+ 1056 - 0
qs_zhaoshang/components/popup/popup.vue

@@ -0,0 +1,1056 @@
+<template>
+	<view>
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="type"></view>
+		<!-- 弹窗 -->
+		<view class="fixedbox" v-if="type==1">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">
+			暂缓/销号
+			</view>
+			<view class="boxs">
+				<view class="box">
+					<view class="flexcc boxcen" :class="zanflag?'act':''" @click="zanflag=true">
+						<image :src="checkimg" v-if="zanflag"></image>
+						<image :src="checknimg" v-else></image>
+						<view>暂缓</view>
+					</view>
+					<view class="flexcc boxcen" :class="zanflag?'':'act'" @click="zanflag=false">
+						<image :src="checknimg" v-if="zanflag"></image>
+						<image :src="checkimg" v-else></image>
+						<view>销号</view>
+					</view>
+				</view>
+			</view>
+			<view class="fixedbtn" @click="getSubmit">提交</view>
+		</view>
+			
+		<!-- 审核意见 -->
+		<view class="fixedbox" v-if="type==2">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">审核意见</view>
+			<view  class="boxs">
+				<view class="mb30">
+					<view class="f16 fw mb10">是否通过</view>
+					<view class="flexc">
+						<view class="flexc boxcen" :class="shenflag?'act':''" @click="shenflag=true">
+							<image :src="gcheckimg" v-if="shenflag"></image>
+							<image :src="checknimg" v-else></image>
+							<view :class="shenflag?'co28':''">通过</view>
+						</view>
+						<view class="flexc boxcen" :class="shenflag?'':'act'" @click="shenflag=false">
+							<image :src="checknimg" v-if="shenflag"></image>
+							<image :src="gcheckimg" v-else></image>
+							<view :class="shenflag?'':'co28'">不通过</view>
+						</view>
+					</view>
+				</view>
+				<view class="flexcj mb16">
+					<view class="f16 fw">反馈意见</view>
+					<view class="flexc speech" @click="getSeep">
+						<image :src="speechimgs"></image>
+						<view>语音输入</view>
+					</view>
+				</view>
+				<textarea @blur="getBlur" style="height: 256rpx;" v-model="psnr" placeholder="选择不通过必须填写反馈意见,限1000 字内…" maxlength="1000" class="textar"></textarea>
+			</view>
+			<view class="fixedbtn" @click="getyjSubmit">提交</view>
+		</view>
+		<!-- 批示弹窗 -->
+		<view class="fixedbox" v-if="type==3">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">批示</view>
+			<view class="chebox" v-if="status=='update'&&checkPermi(['system:ldps:delete'])" @click="getDelFn">
+				<image :src="cheimg"></image>
+				<view>撤回</view>
+			</view>
+			<view class="boxs">
+				<view class="flexcj mb16">
+					<view class="f16 fw">批示详情</view>
+					<view class="flexc speech" @click="getSeep">
+						<image :src="speechimgs"></image>
+						<view>语音输入</view>
+					</view>
+				</view>
+				<textarea  @blur="getBlur" v-model="psnr" placeholder="批示详情,限1000 字内…" maxlength="1000" class="textar"></textarea>
+			</view>
+			<!-- 判断权限 -->
+			<block v-if="(status=='update'&&checkPermi(['system:ldps:update']))||(status=='add'&&checkPermi(['system:ldps:add']))">
+				<view class="fixedbtn btn1" @click='getLinSubmit(0)'>暂存</view>
+				<view class="fixedbtn" @click="getLinSubmit(1)">提交</view>
+			</block>			
+			
+		</view>
+		<!-- 项目进展弹窗 -->
+		<view class="fixedbox inform" v-if="type==4">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">对接模块</view>
+			<view class="boxs">
+				<view class="flexcj mb16">
+					<view class="f16 fw">对接情况</view>
+					<view class="flexc speech" @click="getSeep">
+						<image :src="speechimgs"></image>
+						<view>语音输入</view>
+					</view>
+				</view>
+				<textarea @blur="getBlur"  v-model="psnr" placeholder="对接情况,限1000 字内…" maxlength="1000" class="textar mb30"></textarea>
+				<view class="flexc infolist mb6">
+				 	<view class="f16 fw c34 flex0 pr">附件</view>
+					<view class="infolist_a co28">
+						<!-- 上传附件 -->
+						<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=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+			</view>
+			<view class="fixedbtn" @click="getXmSubmit">提交</view>
+		</view>
+		<!-- 专班跟进 -->
+		<view class="fixedbox" v-if="type==5">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">专班跟进</view>
+			<view  class="boxs">
+				<view class="mb30">
+					<view class="f16 fw mb10">是否专班跟进</view>
+					<view class="flexc">
+						<view class="flexc boxcen" :class="zbflag?'act':''" @click="zbflag=true">
+							<image :src="gcheckimg" v-if="zbflag"></image>
+							<image :src="checknimg" v-else></image>
+							<view :class="zbflag?'co28':''">是</view>
+						</view>
+						<view class="flexc boxcen" :class="zbflag?'':'act'" @click="zbflag=false">
+							<image :src="checknimg" v-if="zbflag"></image>
+							<image :src="gcheckimg" v-else></image>
+							<view :class="zbflag?'':'co28'">否</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="fixedbtn" @click="getzbSubmit">提交</view>
+		</view>
+		<!-- 重点项目进展 -->
+		<view class="fixedbox inform" v-if="type==6">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">上报进度</view>
+			<view class="boxs">
+				<view class="flexcj mb16">
+					<view class="f16 fw">项目进展情况</view>
+					<view class="flexc speech" @click="getSeep">
+						<image :src="speechimgs"></image>
+						<view>语音输入</view>
+					</view>
+				</view>
+				<textarea @blur="getBlur" style="height: 200rpx;" v-model="psnr" placeholder="项目进展情况,限1000 字内…" maxlength="1000" class="textar mb30"></textarea>
+				<view class="flexcj mb16">
+					<view class="f16 fw">施工力量</view>
+					<view class="flexc speech" @click="getSeep('sgll')">
+						<image :src="speechimgs"></image>
+						<view>语音输入</view>
+					</view>
+				</view>
+				<textarea @blur="getBlur" style="height: 200rpx;"  v-model="sgll" placeholder="请输入施工力量(包含人、材、机)…" maxlength="1000" class="textar mb30"></textarea>
+				<view class="flexc infolist mb6">
+				 	<view class="f16 fw c34 flex0 pr">附件</view>
+					<view class="infolist_a co28">
+						<!-- 上传附件 -->
+						<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=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+			</view>
+			<view class="fixedbtn" @click="getXmSubmitzd">提交</view>
+		</view>
+		<!-- 重点领导批示 -->
+		<view class="fixedbox" v-if="type==7">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">批示</view>
+			<view class="chebox" v-if="status=='update'&&checkPermi(['fgw:ldps:remove'])" @click="getDelFn">
+				<image :src="cheimg"></image>
+				<view>撤回</view>
+			</view>
+			<view class="boxs">
+				<view class="flexcj mb16">
+					<view class="f16 fw">批示详情</view>
+					<view class="flexc speech" @click="getSeep">
+						<image :src="speechimgs"></image>
+						<view>语音输入</view>
+					</view>
+				</view>
+				<textarea  @blur="getBlur" v-model="psnr" placeholder="批示详情,限1000 字内…" maxlength="1000" class="textar"></textarea>
+			</view>
+			<!-- 判断权限 -->
+			<block v-if="(status=='update'&&checkPermi(['fgw:ldps:edit']))||(status=='add'&&checkPermi(['fgw:ldps:add']))">
+				<view class="fixedbtn btn1" @click='getLinSubmit(0)'>暂存</view>
+				<view class="fixedbtn" @click="getLinSubmit(1)">提交</view>
+			</block>			
+			
+		</view>
+		<!-- 重点项目 一键催报 -->
+		<!-- 语音识别 -->
+		<view class="bgbox bgvoice"  v-if="voiceflag"  @click="getClosevoice"></view>
+		<view class="voice" v-if="voiceflag">
+			<image :src="closeimg" class="choseimg" @click="getClosevoice"></image>
+			<view v-if="isShow">
+				<view v-if="sendLock" class="tip">
+					<view class="txt">试试这样说</view>
+					<view class="txt-bt">科技项目</view>
+				</view>
+				<view v-else>
+					<!-- @click="resultClick" -->
+					
+					<view class="res-txt" >
+						<!-- 实时翻译 -->
+						<text :style="{
+							color: (resultText == '正在识别中2...' || resultText == '未检测到语音,请重试') ? 
+							'#919098' : 
+							'#2979ff'}">
+							{{resultText}}
+						</text>
+						<!-- <image v-if="resultText != '正在识别中.1..' && resultText != '未检测到语音,请重试'"
+							src="/static/img/xiaoshou.png" mode="widthFix"></image> -->
+					</view>
+				</view>
+			</view>
+		 
+			<view v-else class="tip">
+				<view v-if="!sendLock" class="tipbox">{{voicetext}}</view>
+				<view v-html="text" class="txt" style="color: #8e8d9a;"></view>
+				
+				<view v-if="!sendLock" class="prompt-loader">
+					<view class="em" :style="randomRgb()" v-for="(item,index) in 30" :key="index"></view>
+				</view>
+				<view v-else class="prompt-loader"></view>
+			</view>
+		 
+			<view class="btn" @longpress="handleRecordStart" @touchmove="handleTouchMove" @touchend="handleRecordStop">
+				<view class="btn-cont">
+					长按开始语音搜索
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	const recorderManager = uni.getRecorderManager();
+	//播放录音
+	const innerAudioContext = uni.createInnerAudioContext();
+	innerAudioContext.autoplay = true;
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	import { getToken } from '@/utils/auth'
+	export default{
+		props:{
+			type: {
+				type: Number,
+				default () {
+					return 0
+				}
+			},
+			status:{
+				type: String,
+				default () {
+					return 'add'
+				}
+			},
+			iteminfo:{},
+			xmjzinfo:{},
+		},
+		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,ppt,txt,pdf,zip,rar,word',
+				// 文件上传大小限制
+				size: 100,
+				// 文件数量限制 默认10
+				count: 5,
+				// 文件回显列表
+				files: new Map(),
+				// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+				wxFiles: [],
+				// 是否打印日志
+				debug: false,
+				filelist:[],
+				delimg:require("@/static/images/mine/del.png"),
+				
+				checkimg:require("@/static/images/mine/oicon.png"),
+				checknimg:require("@/static/images/mine/jnicon.png"),
+				gcheckimg:require("@/static/images/mine/jicon.png"),
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				speechimgs:require('@/static/images/index/speechs.png'),
+				cheimg:require('@/static/images/index/cheicon.png'),
+				
+				closeimg:require('@/static/images/close.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				zanflag:true,
+				shenflag:true,
+				shyj:'',//审核意见
+				psnr:'',//领导批示
+				jzqk:'',//项目进展
+				sgll:'',//施工力量
+				
+				voiceflag:false,
+				voiceToken: '',
+				timer: null,
+				text: '',
+				resultText: '正在识别中...',
+				startPoint: {},
+				sendLock: true,
+				isShow: true,
+				adioFileData: '',
+				adioSize: '',
+				resContent: '',
+				luyinStatus: true,
+				voicetext:'',
+				options: {}, // 语音转文字的设置
+				partialResult:'',//临时语音
+				zbflag:true,
+				cursor:0,
+				seeptype:'',//重点项目进展
+			}
+		},
+		watch:{
+			iteminfo(val){
+				var that=this;
+				that.psnr='';
+				// console.log(val,0)
+				if(val.zcpsnr){
+					that.psnr=val.zcpsnr;
+				}else if(val.psnr){
+					that.psnr=val.psnr;
+				}
+				// console.log(that.psnr,8855)
+				// if(val.psnr){
+					
+				// }else if(val.zcpsnr){
+					
+				// }
+			},
+			xmjzinfo(val){
+				var that=this;
+				if(that.type==6){
+					that.psnr=val.jzqk||'';
+					that.sgll=val.sgll||'';
+					that.filelist=[];
+					if(val.fjList&&val.fjList.length){
+						that.filelist=JSON.parse(JSON.stringify(val.fjList))
+					}
+				}
+			},
+			sendLock(newVal, oldVal) {
+				var that=this;
+				recorderManager.onStop(res => {
+					if (newVal) return //上锁不发送
+					//解锁发送网络请求
+					setTimeout(function(res){
+						if(!that.voicetext&&!that.partialResult){
+							that.resultText='未检测到语音,请重试'
+						}else{
+							that.resultText=that.voicetext||that.partialResult;
+							var cursor=that.cursor;
+							if(cursor==0){
+								if(that.seeptype=='sgll'){
+									that.sgll=that.sgll+that.resultText;
+								}else{
+									that.psnr=that.psnr+that.resultText;
+								}
+								
+							}else{
+								if(that.seeptype=='sgll'){
+									that.sgll=that.sgll.slice(0,cursor)+that.resultText+that.sgll.slice(cursor);
+								}else{
+									that.psnr=that.psnr.slice(0,cursor)+that.resultText+that.psnr.slice(cursor);
+								}
+								
+							}
+							
+							
+							that.voiceflag=false;
+						}
+						that.sendLock=true;
+						
+					},1000)
+					// console.log(res.tempFilePath, '获取录音文件')
+				});
+			},
+		},
+		onShow() {
+			
+		},
+		mounted() {
+			var that=this;
+					// #ifdef APP-PLUS
+					// 监听语音识别事件
+					plus.speech.addEventListener('recognizing', this.onRecognizing, false);
+					// #endif	
+							  
+					recorderManager.onStop(function(res) {
+						//录音后的回调函数
+						if(!this.sendLock){
+							console.log(that.voicetext,that.partialResult)
+						}
+						console.log('recorder stop' + JSON.stringify(res));
+					});  
+							  
+		},
+		methods:{
+			checkPermi, checkRole,
+			getBlur(e){
+				this.cursor=e.detail.cursor;
+			},
+			// 语音转文字
+			getClosevoice(){
+				this.voiceflag=false
+			},
+			onRecognizing(e){
+				this.partialResult=e.partialResult;
+			},
+			// 录音转文字
+			handleVoice() {
+				// console.log('语音输入')
+				let _this = this;
+				// _this.psnr = '';
+				this.options.engine = 'baidu'
+				// this.options.timeout = 60 * 1000; //超时时间
+				this.options.continue = true;//语音识别是否采用持续模式
+				this.options.punctuation = true; // 是否需要标点符号 
+				this.options.userInterface = false; // 是否显示语音界面
+				plus.speech.startRecognize(this.options, (s) => {
+					_this.voicetext+=s;
+					console.log(s,9)
+					// plus.speech.stopRecognize(); // 关
+				});
+			},
+			//长按录音方法
+			handleRecordStart(e) {
+				this.voicetext='';
+				this.partialResult='';
+				this.startPoint = e.touches[0]; //记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。
+				recorderManager.start({duration: 60000}); //开始录音
+				this.handleVoice()
+				this.text = `<text style="color:#333">上划取消搜索</text>`;
+				this.sendLock = false; //长按时不上锁。
+				this.isShow = false;
+				this.resultText = '正在识别中...';
+				// 按钮
+				// console.log(67)
+			},
+			//结束录音 (手指松开)时触发
+			handleRecordStop(e) {
+				var that=this;
+				this.isShow = true;
+				setTimeout(function(){
+					plus.speech.stopRecognize();
+					recorderManager.stop(); //结束录音
+				},1300)
+				
+			},
+			//上划取消搜索
+			handleTouchMove(e) {
+				let moveLenght = e.touches[e.touches.length - 1].clientY - this.startPoint.clientY;
+				if (Math.abs(moveLenght) > 50) {
+					this.text = `松开手指,<text style="color:#333">取消搜索</text>`;
+					this.sendLock = true; //触发了上滑取消搜索,上锁
+					this.isShow = false;
+				} else {
+					this.text = `<text style="color:#333">上划取消搜索</text>`;
+					this.sendLock = false; //上划距离不足,可以搜索,不上锁
+					this.isShow = false;
+				}
+			},
+			//获取录音结果子传父
+			resultClick() {
+				if (this.resultText == '正在识别中...' || this.resultText == '未检测到语音,请重试') return;
+				
+				this.$emit('voiceResult', this.resultText)
+			},
+			//弹窗关闭之后的操作,点击遮罩层或关闭按钮
+			// afterHide() {
+			// 	this.sendLock = true;
+			// 	this.$emit('closePopup');
+			// 	clearInterval(this.timer);
+			// 	this.resultText = '正在识别中...';
+			// },
+			randomRgb() {
+				let R = Math.floor(Math.random() * 130 + 110);
+				let G = Math.floor(Math.random() * 130 + 110);
+				let B = Math.floor(Math.random() * 130 + 110);
+				return {
+					background: `rgb(${R},${G},${B}, 1)`
+				};
+			},
+			// 语音转文字
+			getSeep(e){
+				this.seeptype=e||'';
+				this.voicetext='';
+				this.partialResult='';
+				this.voiceflag=true;		
+			},
+			ontStart() {
+				// recorderManager.start();
+						console.log('startRecognize');
+			
+					},
+			onEnd() {
+				// recorderManager.stop();
+						console.log('endRecognize');
+			
+					},
+			getClose(){
+				this.$emit("getClose")
+			},
+			// 专班
+			getzbSubmit(){
+				var that=this;
+				var zanstr='N'
+				if(that.zbflag){
+					zanstr='Y'
+				}else{
+					zanstr='N'
+				}
+				uni.showModal({
+					title: '确认信息',
+					content: "确认是否专班跟进",
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							that.$emit("getzbSubmit",zanstr)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			// 暂缓提交
+			getSubmit(){
+				var str='';
+				var that=this;
+				if(this.zanflag){
+					str='暂缓'
+				}else{
+					str='销号'
+				}
+				uni.showModal({
+					title: '确认'+str,
+					content: "是否确认"+str+"该条线索",
+					cancelText: '取消'+str,
+					confirmText: '确认'+str,
+					success: function(res) {
+						if (res.confirm) {
+							that.$emit("getzanFn",that.zanflag)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+				
+			},
+			// 意见
+			getyjSubmit(){
+				var data={};
+				var that=this;
+				var str=""
+				if(!this.shenflag){
+					data.shjg='3';
+					str='不通过'
+					if(!this.psnr){
+						this.$toast('请输入反馈意见')
+						return
+					}else{
+						data.shyj=this.psnr
+					}
+				}else{
+					str='通过'
+					data.shjg='2',
+					data.shyj=this.psnr
+				}
+				// 确认框
+				uni.showModal({
+					title: '确认审核',
+					content: "是否确认"+str+'审核',
+					cancelText: '取消',
+					confirmText: '确认',
+					success: function(res) {
+						if (res.confirm) {
+							that.$emit("getyjSubmit",data)
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+				
+			},
+			// 领导批示
+			getLinSubmit(e){
+				if(!this.psnr){
+					this.$toast('请输入批示详情')
+				}else{
+					var newObj={
+						type:e,
+						psnr:this.psnr
+					}
+					this.$emit("getLinSubmit",newObj)
+				}
+			},
+			//撤销批示
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认撤回',
+					content: "是否撤回该条批示",
+					cancelText: '取消撤回',
+					confirmText: '确认撤回',
+					success: function(res) {
+						if (res.confirm) {
+							that.$emit("getldDelFn")
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+				
+			},
+			// 项目进展
+			getXmSubmit(){
+				var that=this;
+				if(!this.psnr){
+					this.$toast('请输入对接情况')
+				}else{
+					var obj={
+						jzqk:this.psnr
+					}
+					obj.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+					
+					uni.showModal({
+						title: '确认添加',
+						content: "是否添加对接情况",
+						cancelText: '取消',
+						confirmText: '确认',
+						success: function(res) {
+							if (res.confirm) {
+								that.$emit("getXmSubmitFn",obj)
+							} else if (res.cancel) {
+								// console.log('用户点击取消');
+							}
+						}
+					});
+				}
+			},
+			//重点项目进展
+			getXmSubmitzd(){
+				var that=this;
+				if(!this.psnr){
+					this.$toast('请输入项目进展情况')
+				}else{
+					var obj={
+						jzqk:this.psnr,
+						sgll:this.sgll
+					}
+					obj.fjList=JSON.parse(JSON.stringify(this.filelist))
+					
+					uni.showModal({
+						title: '确认添加',
+						content: "是否确认添加上报进度",
+						cancelText: '取消',
+						confirmText: '确认',
+						success: function(res) {
+							if (res.confirm) {
+								that.$emit("getXmSubmitFn",obj)
+							} else if (res.cancel) {
+								// console.log('用户点击取消');
+							}
+						}
+					});
+				}
+			},
+			// 某文件上传结束回调(成功失败都回调)
+			onuploadEnd(item) {
+				var newobj={}
+				var responseText=JSON.parse(item.responseText)
+				newobj.fjName=responseText.originalFilename;
+				newobj.path=responseText.fileName;
+				if(this.type==6){
+					newobj.xmId=this.xmjzinfo.xmId;
+					newobj.xmmc=this.xmjzinfo.xmmc;
+					newobj.type=18;
+				}
+				this.filelist.push(newobj)
+			},
+			getDelFj(idx){
+				this.filelist.splice(idx,1)
+			},
+			getDown(e){
+				var url=baseUrl+e;
+				uni.showLoading({
+					title: '加载中'
+				});
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+						uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {
+						uni.hideLoading()
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+// 弹窗
+.fixedbox{position: fixed;left: 66rpx;right: 66rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-50%);z-index: 20;padding: 48rpx 56rpx 68rpx;max-height: calc(100vh - 300rpx);overflow: auto;box-sizing: border-box;
+.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;z-index: 22;}
+.chebox{position: absolute;right: 36rpx;top:54rpx;display: flex;align-items: center;
+	image{width: 30rpx;height: 32rpx;margin-right: 12rpx;}
+	view{font-size: 32rpx;font-weight: 500;color: #F13800;;}
+}
+.top{position: relative;text-align: center;font-size: 34rpx;font-weight: bold;color: #343434;}
+.boxs{padding: 60rpx 0;
+	.box{display: flex;align-items: center;min-height:100rpx;}
+	.boxcen{flex:1;
+		&.act{
+			view{color: #FF6400;}
+		}
+		image{width: 32rpx;height: 32rpx;margin-right: 20rpx;}
+		view{font-size: 32rpx;font-weight: 500;
+color: #666666;}
+	}
+	
+	// 语音
+	.speech{
+		image{width: 26rpx;height: 34rpx;margin-right: 10rpx;}
+		view{font-size: 32rpx;font-weight: 500;color: #20ABCE;}
+	}
+	.textar{width: 100%;border: 2rpx solid #FF6400;border-radius: 10rpx;padding: 26rpx 30rpx;font-size: 30rpx;color: #343434;height: 376rpx;}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+.delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+
+// 附件
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+
+
+.bgvoice{z-index: 1900;}
+.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;}
+.voice {
+		min-height: 500rpx;
+		padding: 100rpx 60rpx 0 60rpx;
+		position: relative;
+		background-color: #fff;
+		position: fixed;
+		left:0;right:0;bottom:0;z-index: 2000;
+		padding-bottom: 180rpx;
+		.res-txt {
+			text-align: center;
+			margin-top: 40rpx;
+			font-size: 36rpx;
+			color: #919098;
+ 
+			image {
+				display: block;
+				margin: auto;
+				margin-top: 10rpx;
+				width: 60rpx;
+				animation: bounce-down 2.6s linear infinite;
+			}
+		}
+ 
+		.tip {
+			margin-top: 15rpx;
+			text-align: center;
+ 
+			.txt {
+				font-size: 36rpx;
+				color: #151823;
+			}
+ 
+			.txt-bt {
+				margin-top: 20rpx;
+				color: #919098;
+			}
+		}
+ 
+		.btn {
+			width: 50%;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			color: #fff;
+			border-radius: 50rpx;
+			background: #3484fd;
+			position: absolute;
+			bottom: 80rpx;
+			left: 50%;
+			transform: translateX(-50%);
+ 
+			.btn-cont {
+				display: flex;
+				align-items: center;
+			}
+		}
+	}
+ 
+	@-webkit-keyframes bounce-down {
+		25% {
+			-webkit-transform: translateY(-10px);
+		}
+ 
+		50%,
+		100% {
+			-webkit-transform: translateY(0);
+		}
+ 
+		75% {
+			-webkit-transform: translateY(13px);
+		}
+	}
+	.content{background-color: #f5f5f5;position: fixed;left: 0;right: 0;bottom: 0;z-index: 10000;height: 500rpx;}
+	/* 语音动画 */
+	.prompt-loader {
+		width: 100%;
+		height: 35px;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		margin: 30rpx auto;
+	}
+ 
+	.prompt-loader .em {
+		height: 15%;
+		width: 2px;
+		float: left;
+		display: block;
+		background: #333333;
+	}
+ 
+	.prompt-loader .em:last-child {
+		margin-right: 0px;
+	}
+ 
+	.prompt-loader .em:nth-child(1) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(2) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(3) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(4) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(5) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(6) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(7) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(8) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(9) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(10) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(11) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(12) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(13) {
+		animation: load 1.3s 1s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(14) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(15) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(16) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(17) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(18) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(19) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(20) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(21) {
+		animation: load 1.3s 0.5s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(22) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(23) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(24) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(25) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(26) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(27) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(28) {
+		animation: load 1.3s 0.1s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(29) {
+		animation: load 1.3s 0.3s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(30) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	@keyframes load {
+		0% {
+			height: 15%;
+		}
+ 
+		50% {
+			height: 100%;
+		}
+ 
+		100% {
+			height: 15%;
+		}
+	}
+
+</style>

+ 153 - 0
qs_zhaoshang/components/popup/skdwzjpop.vue

@@ -0,0 +1,153 @@
+<template>
+	<view>
+		<!-- 资金到位弹窗 -->
+		<!-- 弹框 -->
+		<view class="bgbox" @click="getClose" v-if="addzjdwflag"></view>
+		<!--  -->
+		<view class="fixedbox" v-if="addzjdwflag">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">到位资金</view>
+			<!-- &&(ite.isSh==2&&idx==0||idx!=0) -->
+			<view class="chebox" v-if="status=='update'&&checkPermi(['projectV2:dzje:remove'])&&(isSh==2)" @click="getDelFn">
+				<image :src="delimg"></image>
+				<view>删除</view>
+			</view>
+			<view class="boxs">
+				<!-- 资金情况 -->
+				<uni-forms ref="zjdwform" :rules="zjdwrules" :modelValue="dwzjinfo" >
+					 <uni-forms-item name="dwmc" style='margin-bottom: 0;'>
+					  <view class="infolist">
+					   	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>单位名称</view>
+					   	<input  placeholder="请输入单位名称"  v-model="dwzjinfo.dwmc"   class="f16  c34 flex1 txr"/>
+					   </view>
+					 </uni-forms-item>
+					 <uni-forms-item name="zzje" style='margin-bottom: 0;'>
+					  <view class="infolist">
+					   	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>注资金额(万元)</view>
+					   	<input  placeholder="请输入注资金额" type="number" v-model="dwzjinfo.zzje"  class="f16  c34 flex1 txr"/>
+					   </view>
+					 </uni-forms-item>
+					 <uni-forms-item name="dwrq" style='margin-bottom: 0;'>
+					  <view class="infolist">
+					   	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>到位日期</view>
+					   	<picker mode="date" :value="dwzjinfo.dwrq"  class="infolist_a" @change='bindtimeDateChangec'>
+					 		<view :class="dwzjinfo.dwrq?'':'f16 co80'">{{dwzjinfo.dwrq||"请选择到位日期"}}</view>
+					   	</picker>
+					   </view>
+					 </uni-forms-item>
+				</uni-forms>
+			</view>
+			<view class="fixedbtn" v-if="status=='update'&&checkPermi(['projectV2:dzje:edit'])||status=='add'&&checkPermi(['projectV2:dzje:add'])" @click="proSure">确认</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		props:{
+			iteminfo:{},
+			addzjdwflag:false,
+			status:{
+				type: String,
+				default () {
+					return 'add'
+				}
+			},
+			isSh:{
+				type: String,
+				default () {
+					return '1'
+				}
+			}
+		},
+		data(){
+			return{
+				zjdwrules: {
+				  dwmc: {rules: [{required: true,errorMessage: '请输入单位名称'}]},
+				  zzje: {rules: [{required: true,errorMessage: '请输入注资金额'}]},
+				  dwrq: {rules: [{required: true,errorMessage: '请选择到位日期'} ]},
+				},
+				dwzjinfo:{
+					"dwmc":'',//单位名称
+					"zzje":'',//注资金额
+					"dwrq":'',//到位日期
+				},
+				closeimg:require('@/static/images/close.png'),
+				delimg:require("@/static/images/mine/del.png"),
+			}
+		},
+		watch:{
+			iteminfo(val){
+				this.dwzjinfo=JSON.parse(JSON.stringify(val))
+			}
+		},
+		mounted() {
+		},
+		methods:{
+			checkPermi, checkRole,
+			// 到位日期(多个)
+			bindtimeDateChangec(e){
+				this.dwzjinfo.dwrq = e.detail.value;
+				// console.log(this.dwzjinfo.dwrq,1)
+			},
+			getClose(){
+				this.$emit('getClose')
+			},
+			proSure(){
+				var that=this;
+				this.$refs.zjdwform.validate().then(res => {
+					var params=JSON.parse(JSON.stringify(this.dwzjinfo))
+					that.$emit("proSure",params)
+				})
+			},
+			getDelFn(){
+				var that=this;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该条信息",
+					cancelText: '取消删除',
+					confirmText: '确认删除',
+					success: function(res) {
+						if (res.confirm) {
+							that.$emit("getldDelFn")
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+				
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	// // 弹窗
+	.fixedbox{position: fixed;left:56rpx;right: 56rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-60%);z-index: 20;padding: 48rpx 36rpx 68rpx;max-height: calc(100vh - 200rpx);overflow: auto;box-sizing: border-box;
+	
+	.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;z-index: 22;}
+	
+	.top{position: relative;text-align: center;font-size: 32rpx;font-weight: bold;color: #343434;}
+	.boxs{padding: 60rpx 0;
+		.box{display: flex;align-items: center;min-height:100rpx;}
+	}
+	}
+	.inform{padding-top: 30rpx;}
+	.infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;display: flex;align-items: center;
+		.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}	
+	}
+	.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+	
+	
+	.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+	border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+		&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+	 .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+	 .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+	 .chebox{position: absolute;right: 36rpx;top:54rpx;display: flex;align-items: center;
+	 	image{width: 30rpx;height: 32rpx;margin-right: 12rpx;}
+	 	view{font-size: 32rpx;font-weight: 500;color: #F13800;;}
+	 }
+</style>

+ 353 - 0
qs_zhaoshang/components/projectlist/list.vue

@@ -0,0 +1,353 @@
+<template>
+	<view>
+		<view v-if="datalist.length">
+			<!-- 省库项目 -->
+			<block v-if="type=='shengku'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex01">{{ite.xmmc}}</view>
+						<view class="flex0 ml8">
+							<view class="car_dai btn3" v-if="ite.isHs=='Y'">徽商</view>
+						</view>
+					</view>
+					<!-- <view class="c6 f15 f500 mb4 over">投资单位
+					</view> -->
+					<view class="c6 f15 f500 mb4">项目所在地:{{ite.szdqName}}</view>
+					<view class="c6 f15 f500 mb4">总投资额: {{ite.ztze}}万元</view>
+					<view class="c6 f15 f500 mb4">省外资金:{{ite.swzj}}万元</view>
+					<!-- <view class="c6 f15 f500 mb4">入库日期:{{ite.rkTime}}</view> -->
+					<view class="c6 f15 f500 flexc">审核状态意见:
+						<text v-if="ite.isSh==1" class="c6">待审核</text>
+						<text v-if="ite.isSh==2" class="co26">已通过</text>
+						<text v-if="ite.isSh==3" class="cof1">未通过</text>
+						<block v-if="!ite.shJy">
+							<view class='flex1'></view>
+							<!-- v-if="checkPermi(['projectV2:shyj:list'])" -->
+							<view class="co1f flex0 txr" v-if="checkPermi(['projectV2:dzje:list'])"  @click.stop="getlookdzje(ite)">到位资金情况</view>
+						</block>
+					</view>
+					<view class="c6 f15 f500 flexc" v-if="ite.shJy">反馈意见:
+						<text class="c6">{{ite.shJy}}</text>
+						<view class='flex1'></view>
+						<block >
+							<view class="co1f flex0 txr" v-if="checkPermi(['projectV2:dzje:list'])"  @click.stop="getlookdzje(ite)">到位资金情况</view>
+						</block>
+					</view>
+				</view>
+			</block>
+			<!-- 省库项目到位资金 -->
+			<block v-else-if="type=='skdwzj'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx'>
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.dwrq}}</view>
+						<!-- <view class="ldzctit flex-wrap" v-if="!ite.psnr">暂存</view> -->
+						<!-- <view class="flex1"></view> -->
+						<!-- 操作按钮 &&ite.isSh!=2-->
+						<view class="flex0 titp" v-if="checkPermi(['projectV2:dzje:edit','projectV2:dzje:remove'])" @click.stop="getDetail(ite)">
+							<image :src="xpsimg"></image>
+							<view>操作</view>
+						</view>
+					</view>
+					<view class="c6 f15 f500 mb4">单位名称:{{ite.dwmc}}</view>
+					<view class="c6 f15 f500 mb4" >注资金额:{{ite.zzje}}(万元)</view>
+					<!-- <view class="c6 f15 f500 mb4" v-else>暂存详情:{{ite.zcpsnr}}</view> -->
+				</view>
+			</block>
+			<!-- 问题项目 -->
+			<!-- <block v-else-if="type=='wenti'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.xmmc}}</view>
+					</view>
+					<view class="c6 f15 f500 mb4">项目阶段:{{ite.xmjd}}</view>
+					<view class="c6 f15 f500 mb4">审核人:{{ite.shrxm}}</view>
+					<view class="c6 f15 f500 flexc">审核状态意见:
+
+						<text v-if="ite.shjg==2" class="co26">{{ite.xmjd}}已通过</text>
+						<text v-else-if="ite.shjg==3" class="cof1">{{ite.xmjd}}未通过</text>
+						<text v-else-if="ite.shjg==1" class="c6">{{ite.xmjd}}待审核</text>
+
+						<view class="flex1"></view>
+						<block v-if="checkPermi(['projectV2:shyj:list'])">
+							<view class="co1f flex0 txr"   @click.stop="getShprogress(ite.xmId)">查看审核进度</view>
+						</block>
+						
+					</view>
+				</view>
+			</block> -->
+			<!-- 督办 -->
+			<block v-else-if="type=='duban'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">	
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.xmmc}}</view>
+						<view class="flex0 ml8">
+							<view class="car_dai btn2" v-if="ite.dbType==1">代办</view>
+							<view class="car_dai btn1" v-if="ite.dbType==2">代办</view>
+						</view>
+					</view>
+					<view class="c6 f15 f500 mb4">督办部门名称:{{ite.deptName}}</view>
+					<view class="c6 f15 f500 mb4">督办事项:{{ite.dbsx}}</view>
+					<view class="c6 f15 f500 mb4">督办日期:{{ite.dbTime}}</view>
+					<view class="c6 f15 f500 flexc">是否回复:
+					<!-- isHf 拿最后一条审核状态 -->
+					<!-- (是否回复 N:未回复,2:已回复)-->
+					<text v-if="ite.isHf=='Y'" class="co26">已回复</text>
+					<!-- <text v-else-if="ite.isHf==2" class="cof1">未通过</text> -->
+					<text v-if="ite.isHf=='N'" class="c6">待回复</text>
+			
+						<view class="flex1"></view>
+						<!-- 领导批示 -->
+						<!-- <view class="co1f flex0 txr" v-if="type=='leader'" @click.stop="getShprogress(ite.id)">查看批示</view> -->
+						<view class="co1f flex0 txr" v-if="checkPermi(['projectV2:dbd:list'])"  @click.stop="getDetail(ite)">回复</view>
+						<view class="cofr flex0 txr ml10" v-if="checkPermi(['projectV2:dbd:remove'])"  @click.stop="getDel(ite.id)">删除</view>
+					</view>
+				</view>
+			</block>
+			<!-- 提示项目 tslist-->
+			<block v-else-if="type=='tslist'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx'>
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.xmxsmc}}</view>
+						<view class="co1f flex0 txr" v-if="checkPermi(['projectV2:shyj:list'])"  @click.stop="getXmjzFn(ite)">添加项目进展</view>
+					</view>
+					<view class="c6 f15 f500 mb4">项目编号:{{ite.xmbh}}</view>
+					<view class="c6 f15 f500 mb4">项目名称:{{ite.xmmc}}</view>
+					<view class="c6 f15 f500 mb4 flex"><text class="flex0">内容:</text>
+						<view class="flex1">{{ite.details}}</view>
+					</view>
+
+
+				</view>
+			</block>
+			<!-- 统计 -->
+			<block v-else-if="type=='tongjizs'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx'>
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.outsideTime}}</view>
+					</view>
+					<view class="c6 f15 f500 mb4">上报单位:{{ite.deptName}}</view>
+					<view class="c6 f15 f500 mb4">外出天数:{{ite.numberOutings}}天</view>
+					<view class="c6 f15 f500 mb4 over" v-if="ite.details">情况说明:{{ite.details}}</view>
+					<view class="c6 f15 f500 mb4 flexc over">
+						<view class="flex01 over">
+							外出人员:{{ite.outgoer}}
+						</view>
+						<view class="flex1"></view>
+						<!--  -->	
+						<view class="co1f flex0 txr" v-if="checkPermi(['system:wczs:query'])"   @click.stop="getDetail(ite)">查看详情</view>
+					</view>
+				</view>
+			</block>
+			<block v-else-if="type=='tongjiks'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx'>
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.outsideTime}}</view>
+					</view>
+					<view class="c6 f15 f500 mb4 flexc over">
+						<view class="flex01 over">
+							上报单位:{{ite.deptName}}
+						</view>
+						<block v-if="!ite.details">
+							<view class="flex1"></view>
+							<view class="co1f flex0 txr" v-if="checkPermi(['system:djks:query'])"  @click.stop="getDetail(ite)">查看详情</view>
+						</block>
+						
+					</view>
+					
+					<view class="c6 f15 f500 mb4 over flexc" v-if="ite.details">
+						<view class="flex01 over">
+							情况说明:{{ite.details}}
+						</view>
+						<!-- <text class="c6"></text> -->
+						<view class="flex1"></view>
+						<view class="co1f flex0 txr" v-if="checkPermi(['system:djks:query'])"  @click.stop="getDetail(ite)">查看详情</view>
+						</view>
+					<!-- <view class="c6 f15 f500 mb4 flexc over">对接人员:{{ite.outgoer}}
+						<view class="flex1"></view>
+						<view class="co1f flex0 txr" v-if="checkPermi(['system:djks:query'])"  @click.stop="getDetail(ite)">查看详情</view>
+					</view> -->
+				</view>
+			</block>
+			<!-- 领导批示列表 -->
+			<block v-else-if="type=='ldwritten'">
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx'>
+					<!-- 暂存详情 -->
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">{{ite.xgsj||ite.cjsj}}</view>
+						<!-- <view class="ldzctit flex-wrap" v-if="!ite.psnr">暂存</view> -->
+						<!-- <view class="flex1"></view> -->
+						<!-- 操作按钮 -->
+						<view class="flex0 titp" @click.stop="getDetail(ite)" v-if="checkPermi(['system:ldps:update'])||checkPermi(['system:ldps:add'])">
+							<image :src="xpsimg"></image>
+							<view>修改批示</view>
+						</view>
+					</view>
+					<view class="c6 f15 f500 mb4">批示领导:{{ite.psr}}</view>
+					<view class="c6 f15 f500 mb4" >批示详情:{{ite.psnr}}</view>
+					<!-- <view class="c6 f15 f500 mb4" v-else>暂存详情:{{ite.zcpsnr}}</view> -->
+				</view>
+			</block>
+			<!-- 线索主表 -->
+			<block v-else>
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">
+					<image :src="ldtit" class="ldimg" v-if="ite.psnr"></image>
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex1">
+						<!-- {{ite.xmxsmc}} -->
+						<block v-if="ite.progress==1||ite.progress==2">{{ite.xmxsmc}}</block>
+						<block v-if="ite.progress==3||ite.progress==4||ite.progress==5">{{ite.zsyzQyxx.xmmc}}</block>
+						</view>
+						<!-- 问题项目 -->
+						
+					</view>
+					<!-- <block v-if="ite.progress==1">项目首谈</block>
+					<block v-if="ite.progress==2">项目承接</block>
+					<block v-if="ite.progress==3">项目签约</block>
+					<block v-if="ite.progress==4">项目开工</block>
+					<block v-if="ite.progress==5">项目投产</block> -->
+					<view class="c6 f15 f500 mb4">
+						<!-- 落户地:{{ite.nlhd}} -->
+						<block v-if="ite.progress==1||ite.progress==2">拟落户地:{{ite.nlhd}}</block>
+						<block v-if="ite.progress==3||ite.progress==4||ite.progress==5">落户地:{{ite.zsyzQyxx.xmszd}}</block>
+					</view>
+					<view class="c6 f15 f500 mb4">
+						<!-- 投资额:{{ite.ntze}}亿元 -->
+						<block v-if="ite.progress==1||ite.progress==2">拟投资额:{{ite.ntze}}亿元</block>
+						<block v-if="ite.progress==3||ite.progress==4||ite.progress==5">投资额:{{ite.zsyzQyxx.xytze}}万元</block>
+					</view>
+					<view class="c6 f15 f500 mb4 flexc" v-if="ite.psnr">领导批示:
+						<view class="over flex1">{{ite.psnr}}</view>
+					
+						<view class="cofe flex0" v-if="checkPermi(['system:ldps:list'])&&type!='leader'"  @click.stop="getldwrittenFn(ite)">查看领导批示</view>
+					</view>
+					<!-- 项目进展 -->
+					<!-- <view class="c6 f15 f500 mb4 flexc">
+						项目进展:<view class="flex1 over">{{ite.xmjz}}</view>
+					</view> -->
+					<view class="c6 f15 f500  flexc">审核状态意见:
+					<!-- shjg 拿最后一条审核状态 -->
+					<!-- <text :class="{co26:ite.shjg==1,cof1:ite.shjg==2}" v-if="ite.progress=='1'||ite.progress=='2'||ite.progress=='3'||ite.progress=='4'||ite.progress=='5'">线索</text>
+					<text :class="{co26:ite.shjg==1,cof1:ite.shjg==2}" v-else-if="ite.progress=='7'||ite.progress=='6'">签约</text>
+					<text :class="{co26:ite.shjg==1,cof1:ite.shjg==2}" v-else-if="ite.progress=='9'||ite.progress=='8'">开工</text>
+					<text :class="{co26:ite.shjg==1,cof1:ite.shjg==2}" v-else>投产</text> -->
+					
+					<text :class="{co26:ite.xmStatus==2,cof1:ite.xmStatus==3}">
+						<block v-if="ite.progress==1">项目首谈</block>
+						<block v-if="ite.progress==2">项目承接</block>
+						<block v-if="ite.progress==3">项目签约</block>
+						<block v-if="ite.progress==4">项目开工</block>
+						<block v-if="ite.progress==5">项目投产</block>
+					</text>
+						<text v-if="ite.xmStatus==2" class="co26">已通过</text>
+						<text v-else-if="ite.xmStatus==3" class="cof1">未通过</text>
+						<text v-else-if="ite.xmStatus==1" class="c6">待审核</text>
+
+
+						<view class="flex1"></view>
+						<!-- 领导批示 -->
+						<view v-if="checkPermi(['system:ldps:list'])&&type=='leader'" class="co1f flex0 txr" @click.stop="getldwrittenFn(ite)">查看批示</view>
+						<view v-if="checkPermi(['projectV2:shyj:list'])&&type!='leader'" class="co1f flex0 txr"   @click.stop="getShprogress(ite.id)">查看审核进度</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 noData from "@/components/nodata/nodata.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		props:{
+			datalist: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			wtdt:{
+				type: String,
+				default () {
+					return ''
+				}
+			},
+			type:{
+				type: String,
+				default () {
+					return ''
+				}
+			},
+			
+		},
+		components:{noData},
+		data(){
+			return{
+				ldtit:require('@/static/images/index/ldtit.png'),
+				xpsimg:require("@/static/images/mine/xpicon.png"),
+			}
+		},
+		mounted() {
+			
+			
+		},
+		methods:{
+			checkPermi,checkRole,
+			getDetail(e){
+				this.$emit('getDetail',e)
+			},
+			getDel(e){
+				this.$emit('getDel',e)
+			},
+			getShprogress(e){
+				this.$tab.navigateTo('/pages/work/shprogress?id='+e)
+			},
+			getLookPro(e){
+				this.$tab.navigateTo('/pages/work/projectprogress?id='+e)
+			},
+			getlookdzje(e){
+				var newobj={
+					id:e.id,
+					isSh:e.isSh,
+					xmmc:e.xmmc
+				}
+				this.$tab.navigateTo('/pages/work/skproject/dzjelist?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			getXmjzFn(e){
+				this.$emit('getXmjzFn',e)
+			},
+			// 领导批示
+			getldwrittenFn(e){
+				var newobj={
+					xmId:e.id,
+					xmbh:e.xmbh,
+				}
+				this.$tab.navigateTo('/pages/work/ldwritten?data='+encodeURIComponent(JSON.stringify(newobj)))
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+//列表
+ .carlist{padding: 44rpx 28rpx;border-bottom: 2rpx solid #E5E5E5;position: relative;}
+ .car_dai{font-size: 26rpx;font-weight: 500;
+color: #FFFFFF;padding: 0 10rpx;border-radius: 6rpx;height: 36rpx;line-height: 36rpx;
+	&.btn1{background-color: #FF440B;}
+	&.btn2{background-color:#FEBD0F;}
+	&.btn3{background-color:#28C529;}
+
+}
+.ldimg{width: 94rpx;height: 96rpx;position: absolute;right: 0;top: 0;}
+.titp{display: flex;align-items: center;height: 48rpx;min-width: 120rpx;justify-content: center;
+	image{width: 32rpx;height: 32rpx;}
+	view{font-size: 30rpx;color: #1FB9F7 ;margin-left: 12rpx;}
+	}
+.ldzctit{width: 70rpx;min-height: 30rpx;background: #50D751;border-radius: 6rpx;font-size: 24rpx;color: #FFFFFF;margin-left: 22rpx;display: flex;align-items: center;justify-content: center;padding: 2rpx;box-sizing: border-box;}
+</style>

+ 177 - 0
qs_zhaoshang/components/projectlist/zdlist.vue

@@ -0,0 +1,177 @@
+<template>
+	<view>
+		<view v-if="datalist.length">
+				<!-- 主表 -->
+				<!-- 领导批示列表 -->
+				<block v-if="type=='ldwritten'">
+					<view class="carlist" v-for="(ite,idx) in datalist" :key='idx'>
+						<!-- 暂存详情 -->
+						<view class="flexc mb10">
+							<view class="f16 fw c34  over flex1">{{ite.xgsj||ite.cjsj}}</view>
+							<!-- <view class="ldzctit flex-wrap" v-if="!ite.psnr">暂存</view> -->
+							<!-- <view class="flex1"></view> -->
+							<!-- 操作按钮 -->
+							<view class="flex0 titp" @click.stop="getDetail(ite)" v-if="checkPermi(['fgw:ldps:add'])||checkPermi(['fgw:ldps:edit'])">
+								<image :src="xpsimg"></image>
+								<view>修改批示</view>
+							</view>
+						</view>
+						<view class="c6 f15 f500 mb4">批示领导:{{ite.psr}}</view>
+						<view class="c6 f15 f500 mb4" >批示详情:{{ite.psnr}}</view>
+						<!-- <view class="c6 f15 f500 mb4" v-else>暂存详情:{{ite.zcpsnr}}</view> -->
+					</view>
+				</block>
+				<block v-else>
+					<!-- 主表 -->
+				<view class="carlist" v-for="(ite,idx) in datalist" :key='idx' @click="getDetail(ite)">
+					<image :src="ldtit" class="ldimg" v-if="ite.psnr"></image>
+					<view class="flexc mb10">
+						<view class="f16 fw c34  over flex01">{{ite.xmmc}}</view>
+						<!-- 问题项目 -->
+						<view class="flex0 ml8">
+							<view class="car_dai btn3" v-if="ite.isWt=='Y'">问题项目</view>
+						</view>
+					</view>
+					<view class="c6 f15 f500 mb4 flex">项目单位:<text class="flex1">{{ite.xmdw}}</text></view>
+					<view class="c6 f15 f500 mb4 flex">牵头责任单位:<text class="flex1">{{ite.qtzrdw}}</text></view>
+					
+					<view class="c6 f15 f500 mb4 flexc" v-if="ite.psnr">领导批示:
+						<view class="over flex1">{{ite.psnr}}</view>
+					
+						<!-- <view class="cofe flex0" v-if="checkPermi(['fgw:ldps:list'])&&type!='leader'"  @click.stop="getldwrittenFn(ite)">查看领导批示</view> -->
+					</view>
+				
+					<view class="c6 f15 f500 mb4 flexc">审核状态意见:
+							<text :class="{co26:ite.status==2,zcofa:ite.status==3}">
+								<block v-if="ite.progress==1">基本信息</block>
+								<block v-if="ite.progress==2">前期工作手续</block>	
+							</text>
+							<text v-if="ite.status==2" class="co26">已通过</text>
+							<text v-else-if="ite.status==3" class="cof1">未通过</text>
+							<text v-else-if="ite.status==1" class="c6">待审核</text>
+							<view class="flex1"></view>
+							
+							<!-- 领导批示 -->
+							<view v-if="checkPermi(['fgw:ldps:list'])&&type=='leader'" class="co1f flex0 txr" @click.stop="getldwrittenFn(ite)">查看批示</view>
+							<view class="cofe flex0 txr" v-if="checkPermi(['fgw:jzqk:list'])&&type!='leader'&&type!='cqxm'&&ite.type==2" @click.stop="getjdDetail(ite)">查看进度汇报</view>
+							<!-- 节点安排 -->
+							<view class="cofe flex0 txr" v-if="checkPermi(['fgw:dbd:list'])&&type=='cqxm'" @click.stop="getdbjdDetail(ite)">查看节点安排</view>
+					</view>
+					<!-- 节点安排 -->
+					<!-- <view class="c6 f15 f500  flexc">节点安排:开工
+						<view class="zdlbtn btn1">黄牌预警</view>
+						<view class="zdlbtn btn2">红牌预警</view>
+						<view class="zdlbtn btn3">未超期</view>
+					
+						<view class="flex1"></view>
+						<view class="cofe flex0 txr" @click.stop="getjdDetail(ite)">查看进度汇报</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 noData from "@/components/nodata/nodata.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		props:{
+			datalist: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			wtdt:{
+				type: String,
+				default () {
+					return ''
+				}
+			},
+			type:{
+				type: String,
+				default () {
+					return ''
+				}
+			}
+		},
+		components:{noData},
+		data(){
+			return{
+				ldtit:require('@/static/images/new/psicon.png'),
+				xpsimg:require("@/static/images/mine/xpicon.png"),
+			}
+		},
+		mounted() {
+			
+			
+		},
+		methods:{
+			checkPermi,checkRole,
+			getDetail(e){
+				this.$emit('getDetail',e)
+			},
+			getjdDetail(e){
+				// 进度汇报
+				var newobj={
+					id:e.id,
+					tabidx:3
+				}
+				this.$emit('getjdDetail',newobj)
+			},
+			getdbjdDetail(e){
+				var newobj={
+					id:e.id,
+					tabidx:2
+				}
+				this.$emit('getjdDetail',newobj)
+			},
+			getShprogress(e){
+				this.$tab.navigateTo('/pages/work/shprogress?id='+e)
+			},
+			getLookPro(e){
+				this.$tab.navigateTo('/pages/work/projectprogress?id='+e)
+			},
+			getXmjzFn(e){
+				this.$emit('getXmjzFn',e)
+			},
+			// 领导批示
+			getldwrittenFn(e){
+				var newobj={
+					xmId:e.id,
+					xmbh:e.xmbh,
+				}
+				this.$tab.navigateTo('/pages/zdpages/work/ldwritten?data='+encodeURIComponent(JSON.stringify(newobj)))
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+//列表
+ .carlist{padding: 44rpx 28rpx;border-bottom: 2rpx solid #E5E5E5;position: relative;}
+ .car_dai{font-size: 26rpx;font-weight: 500;
+color: #FFFFFF;padding: 0 10rpx;border-radius: 6rpx;height: 36rpx;line-height: 36rpx;
+	&.btn1{background-color: #FF440B;}
+	&.btn3{background-color:#FEBD0F;}
+
+}
+.ldimg{width: 136rpx;height: 136rpx;position: absolute;right: 0;top: 0;}
+.titp{display: flex;align-items: center;height: 48rpx;min-width: 120rpx;justify-content: center;
+	image{width: 32rpx;height: 32rpx;}
+	view{font-size: 30rpx;color: #1FB9F7 ;margin-left: 12rpx;}
+	}
+.ldzctit{width: 70rpx;min-height: 30rpx;background: #50D751;border-radius: 6rpx;font-size: 24rpx;color: #FFFFFF;margin-left: 22rpx;display: flex;align-items: center;justify-content: center;padding: 2rpx;box-sizing: border-box;}
+
+.zdlbtn{
+	padding: 0 12rpx;height: 36rpx;border-radius: 6rpx;color: #FFFFFF;min-width: 108rpx;box-sizing: border-box;font-size: 24rpx;font-weight: 500;margin-left: 24rpx;line-height: 36rpx;text-align: center;
+	&.btn1{background: #FEBD0F;}
+	&.btn2{background: #FA2300;}
+	&.btn3{background: #09B329 ;}
+}
+</style>

+ 50 - 0
qs_zhaoshang/components/steps/step.vue

@@ -0,0 +1,50 @@
+<template>
+	<view class="steps">
+		<!-- <no-data :notxt='notxt' :padtop="padtop"></no-data> -->
+		<view class="lssteplist">
+			<view class="stepcir"></view>
+			<view class="flex1">
+				<view class="mb20">
+					<view class="f16 c34 fw mb10 lh22">历史预审时间</view>
+					<view class="f14 c6">2023-02-17</view>
+				</view>
+				<view>
+					<view class="f16 c34 fw mb10">历史预审记录</view>
+					<view class="f14 c6">司法局;财政局;生态环境分局;资规 局;发改委;</view>
+				</view>
+			</view>
+		</view>
+		<view class="lssteplist">
+			<view class="stepcir"></view>
+			<view class="flex1">
+				<view class="mb20">
+					<view class="f16 c34 fw mb10 lh22">历史预审时间</view>
+					<view class="f14 c6">2023-02-17</view>
+				</view>
+				<view>
+					<view class="f16 c34 fw mb10">历史预审记录</view>
+					<view class="f14 c6">司法局;财政局;生态环境分局;资规 局;发改委;</view>
+				</view>
+			</view>
+		</view>
+		<view class="lssteplist">
+			<view class="stepcir"></view>
+			<view class="flex1">
+				<view class="mb20">
+					<view class="f16 c34 fw mb10 lh22">历史预审时间</view>
+					<view class="f14 c6">2023-02-17</view>
+				</view>
+				<view>
+					<view class="f16 c34 fw mb10">历史预审记录</view>
+					<view class="f14 c6">司法局;财政局;生态环境分局;资规 局;发改委;</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>

+ 53 - 0
qs_zhaoshang/components/timedata/hfduban.vue

@@ -0,0 +1,53 @@
+<template>
+	<view class="alldata flexcj">
+		<!-- :start="startDate" :end="endDate" -->
+		<view class="flexc">
+			<picker  range-key='label' :value="hfindex" :range="hflist"  @change="bindDateChange" >
+			<view class="alldatain" :style="isHf?'':'color:#808080;'">{{isHf|| '请选择是否回复'}}</view></picker>
+			<image :src="upimg"></image>
+		</view>
+		<!-- <view @click="getReset" class="rbox">重置回复</view> -->
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+		},
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				isHf:'',
+				hfindex:[0],
+				hflist:[{label:'是',id:'Y'},{label:'否',id:'N'},],//回复
+			}
+		},
+		mounted() {
+			if(this.timedate){
+				this.date=this.timedate;
+			}
+		},
+		methods:{
+			bindDateChange(e){
+				var val=e.detail.value
+				this.isHf=this.hflist[val].label;
+				var id=this.hflist[val].id
+				this.$emit("bindDateChange",id)
+			},
+			getReset(){
+				this.isHf='';
+				this.hfindex=[0];
+				this.$emit("bindDateChange",'')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+ // 选择年份
+ .alldata{padding: 20rpx;height: 80rpx;box-sizing: border-box;
+	image{width: 22rpx;height: 16rpx;margin-left: 14rpx;}
+	.alldatain{min-width: 124rpx;font-weight: 500;font-size: 30rpx;color:#FE5706 ;}
+ }	
+ .rbox{padding: 0 12rpx;color: #ff0000;}
+</style>

+ 68 - 0
qs_zhaoshang/components/timedata/timeyear.vue

@@ -0,0 +1,68 @@
+<template>
+	<view class="alldata flexc">
+		<!-- :start="startDate" :end="endDate" -->
+		<picker mode="date" class="flexc" :value="date"  @change="bindDateChange" :fields="fields">
+		<view class="alldatain f15 cofe f500" :style="'text-align:'+textAlign">{{date||timetxt}}</view>
+		
+		</picker>
+		<image :src="upimg"></image>
+	</view>
+</template>
+
+<script>
+	export default{
+		props:{
+			textAlign:{
+				type: String,
+				default () {
+					return 'left'
+				}
+			},
+			fields:{
+				type: String,
+				default () {
+					return 'year'
+				}
+			},
+			timetxt:{
+				type: String,
+				default () {
+					return '选择年份'
+				}
+			},
+			timedate:{
+				type: String,
+				default () {
+					return ''
+				}
+			}
+			
+		},
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				date:''
+			}
+		},
+		mounted() {
+			if(this.timedate){
+				this.date=this.timedate;
+			}
+		},
+		methods:{
+			bindDateChange(e){
+				var val=e.detail.value
+				this.date=e.detail.value;
+				this.$emit("bindDateChange",val)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+ // 选择年份
+ .alldata{padding: 20rpx;height: 80rpx;box-sizing: border-box;
+	image{width: 22rpx;height: 16rpx;margin-left: 14rpx;}
+	.alldatain{min-width: 124rpx;}
+ }	
+</style>

+ 78 - 0
qs_zhaoshang/components/toptab/banner.vue

@@ -0,0 +1,78 @@
+<template>
+	<view class="hometop">
+		<swiper class="swiper" circular :indicator-active-color="activecolor" :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
+			:duration="duration">
+			<block v-for="(ite,idx) in bannerlist" :key='idx'>
+				<swiper-item v-if="type=='zhong'&&ite.type==2">
+					<image  :src="baseUrl+ite.path" class="swiperimg"></image>
+				</swiper-item>
+				<swiper-item v-if="type=='zhao'&&ite.type==1">
+					<image  :src="baseUrl+ite.path" class="swiperimg"></image>
+				</swiper-item>
+			</block>
+		</swiper>
+	</view>
+</template>
+
+<script>
+	import config from '@/config.js';
+	const baseUrl = config.baseUrl;
+	export default{
+		props:{
+			bannerlist:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			type:{
+				type: String,
+				default () {
+					return 'zhao'
+				}
+			},
+			currentdate:{
+				type: String,
+				default () {
+					return ''
+				}
+			}
+		},
+		data(){
+			return{
+				bannerimg:require("@/static/images/banner.png"),
+				background: ['color1', 'color2', 'color3'],
+				activecolor:'#ffffff',
+				indicatorDots: true,
+				autoplay: true,
+				interval: 2000,
+				duration: 500,
+				baseUrl:''
+			}
+		},
+		mounted() {
+			this.baseUrl=baseUrl
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+
+	.swiper{height: 412rpx;position: relative;
+		.swiperimg{width: 100%;height: 100%;}
+	}
+	.swiper /deep/ .uni-swiper-wrapper .uni-swiper-dot{
+		width:12rpx;height:12rpx;border-radius: 50%;background: rgba(0, 0, 0, 0.5);
+		}
+	.swiper /deep/ .uni-swiper-wrapper .uni-swiper-dot-active{
+		width: 20rpx;height: 12rpx;border-radius: 6rpx;background-color: #ffffff;
+	}
+	// wx
+	.swiper /deep/ .wx-swiper-wrapper .wx-swiper-dot{
+		width:12rpx;height:12rpx;border-radius: 50%;background: rgba(0, 0, 0, 0.5);
+		}
+	.swiper /deep/ .wx-swiper-wrapper .wx-swiper-dot-active{
+		width: 20rpx;height: 12rpx;border-radius: 6rpx;background-color: #ffffff;
+	}
+	.bannerfot{position: absolute;left: 0;right: 0;height: 70rpx;background-color: rgba(0, 0, 0, 0.5);padding: 0 32rpx;bottom: 0;display: flex;align-items: center;justify-content: space-between;}
+</style>

+ 556 - 0
qs_zhaoshang/components/toptab/search.vue

@@ -0,0 +1,556 @@
+<template>
+	<view class="search">
+		<uni-nav-bar fixed="true"  :leftWidth="leftwith+'rpx'" :rightWidth="rightwith+'rpx'"  statusBar='true'   @clickRight='clickRight' @clickLeft='clickLeft'>
+			<block slot="left" v-if="leftwith>0">
+				<view class="cont_topl">
+						<image :src='checkimg'></image>
+					</view>
+			</block>
+			<view class="listtopa flexc">
+				
+				<image :src="speechimg"  @click="getSeep" ></image>
+				<input  placeholder="请输入项目名称进行搜索" v-model="xmmc" class="flex1 f15 c34"/>
+				<view class="btn f15 cf flexcc" @click="getSearch">搜索</view>
+			</view>
+			<block slot="right" v-if="rightwith>0">
+				<view class="min_top" >
+					<image :src="noticimg"></image>
+					<view v-if="noticenum">
+						<block v-if="noticenum>99">99+</block>
+						<block v-else>{{noticenum}}</block>
+					</view>
+				</view>
+			</block>
+		</uni-nav-bar>
+		<view class="bgbox"  v-if="voiceflag"  @click="getClose"></view>
+		<view class="voice" v-if="voiceflag">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view v-if="isShow">
+				<view v-if="sendLock" class="tip">
+					<view class="txt">试试这样说</view>
+					<view class="txt-bt">科技项目</view>
+				</view>
+				<view v-else>
+					<!--  @click="resultClick" -->
+					<view class="res-txt">
+						<text :style="{
+							color: (resultText == '正在识别中2...' || resultText == '未检测到语音,请重试') ? 
+							'#919098' : 
+							'#2979ff'}">
+							{{resultText}}
+						</text>
+					<!-- 	<image v-if="resultText != '正在识别中.1..' && resultText != '未检测到语音,请重试'"
+							src="/static/img/xiaoshou.png" mode="widthFix"></image> -->
+					</view>
+				</view>
+			</view>
+		 
+			<view v-else class="tip">
+				<view v-if="!sendLock" class="tipbox">{{voicetext}}</view>
+				<view v-html="text" class="txt" style="color: #8e8d9a;"></view>
+		 
+				<view v-if="!sendLock" class="prompt-loader">
+					<view class="em" :style="randomRgb()" v-for="(item,index) in 30" :key="index"></view>
+				</view>
+				<view v-else class="prompt-loader"></view>
+			</view>
+		 
+			<view class="btn" @longpress="handleRecordStart" @touchmove="handleTouchMove" @touchend="handleRecordStop">
+				<view class="btn-cont">
+					长按开始语音搜索
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { uploadPhoto } from '@/api/system/user.js';
+	const recorderManager = uni.getRecorderManager();
+	//播放录音
+	const innerAudioContext = uni.createInnerAudioContext();
+	innerAudioContext.autoplay = true;
+	export default{
+		props:{
+			leftwith:{
+				type: String,
+				default () {
+					return '0'
+				}
+			},
+			rightwith:{
+				type: String,
+				default () {
+					return '0'
+				}
+			},
+			noticenum:{
+				type: Number,
+				default () {
+					return 0
+				}
+			}
+		},
+		data(){
+			return{
+				checkimg:require('@/static/images/index/check.png'),
+				speechimg:require('@/static/images/index/speech.png'),
+				noticimg:require("@/static/images/index/notice.png") ,
+				closeimg:require('@/static/images/close.png'),
+				title: '未开始',
+				text: '',
+				result: '',
+				valueWidth: '0px',
+				voicePath:'',
+				xmmc:'',
+				
+				voiceflag:false,
+				voiceToken: '',
+				timer: null,
+				text: '',
+				resultText: '正在识别中...',
+				startPoint: {},
+				sendLock: true,
+				isShow: true,
+				adioFileData: '',
+				adioSize: '',
+				resContent: '',
+				luyinStatus: true,
+				voicetext:'',
+				options: {}, // 语音转文字的设置
+				partialResult:'',//临时语音
+			}
+		},
+		watch: {
+			sendLock(newVal, oldVal) {
+				var that=this;
+				recorderManager.onStop(res => {
+					if (newVal) return //上锁不发送
+					//解锁发送网络请求
+					setTimeout(function(res){
+						// console.log(that.voicetext,that.partialResult,888)
+						if(!that.voicetext&&!that.partialResult){
+							that.resultText='未检测到语音,请重试'
+							that.sendLock=true;
+						}else{
+							that.resultText=that.voicetext||that.partialResult;
+							// console.log(that.resultText,85)
+							that.xmmc=that.xmmc+that.resultText;
+							// var tempFilePath=res.tempFilePath||"";
+							// that.uploadFileFn(tempFilePath)
+							setTimeout(function(){
+								// 获取录音文件
+								that.$emit('getSearch',that.resultText)
+								that.voiceflag=false;
+								that.sendLock=true;
+							},1200)
+						}
+					},1000)
+					// var tempFilePath=res.tempFilePath||"";
+					// that.uploadFileFn(tempFilePath)
+					// console.log(res.tempFilePath, '获取录音文件')
+				});
+			},
+		},
+		 mounted() {
+			 var that=this;
+			
+				// #ifdef APP-PLUS
+			 		// 监听语音识别事件
+			 		plus.speech.addEventListener('recognizing', this.onRecognizing, false);
+				// #endif	
+				  
+				recorderManager.onStop(function(res) {
+					//录音后的回调函数
+					if(!this.sendLock){
+						// console.log(that.voicetext,that.partialResult)
+					}
+					// console.log('recorder stop' + JSON.stringify(res));
+				});  
+				  
+			 },
+		methods:{
+			getClose(){
+				this.voiceflag=false;
+				this.sendLock=true;
+			},
+			onRecognizing(e){
+				// console.log(e,8) 
+				this.partialResult=e.partialResult;
+			},
+			// 上传文件
+			uploadFileFn(res){
+				console.log(res)
+				let data = { name: 'file', filePath: res };
+				uploadPhoto(data).then(response => {
+					console.log(response,5)
+					
+				});
+			},
+			// 录音转文字
+			handleVoice() {
+				// console.log('语音输入')
+				let _this = this;
+				this.options.engine = 'baidu'
+				// this.options.timeout = 60 * 1000; //超时时间
+				this.options.continue = true;//语音识别是否采用持续模式
+				this.options.punctuation = false; // 是否需要标点符号 
+				this.options.userInterface = false; // 是否显示语音界面
+				plus.speech.startRecognize(this.options, (s) => {
+					_this.voicetext+=s;
+					// console.log(s,88)
+					// plus.speech.stopRecognize(); // 关
+				});
+			},
+			//长按录音方法
+			handleRecordStart(e) {
+				this.voicetext='';
+				this.partialResult='';
+				this.startPoint = e.touches[0]; //记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。
+				recorderManager.start({duration: 60000}); //开始录音
+				this.handleVoice()
+				this.text = `<text style="color:#333">上划取消搜索</text>`;
+				this.sendLock = false; //长按时不上锁。
+				this.isShow = false;
+				this.resultText = '正在识别中...';
+				// 按钮
+				console.log(67)
+			},
+			//结束录音 (手指松开)时触发
+			handleRecordStop(e) {
+				var that=this;
+				this.isShow = true;
+				setTimeout(function(){
+					plus.speech.stopRecognize();
+					recorderManager.stop(); //结束录音
+				},1200)
+				
+			},
+			//上划取消搜索
+			handleTouchMove(e) {
+				let moveLenght = e.touches[e.touches.length - 1].clientY - this.startPoint.clientY;
+				if (Math.abs(moveLenght) > 50) {
+					this.text = `松开手指,<text style="color:#333">取消搜索</text>`;
+					this.sendLock = true; //触发了上滑取消搜索,上锁
+					this.isShow = false;
+				} else {
+					this.text = `<text style="color:#333">上划取消搜索</text>`;
+					this.sendLock = false; //上划距离不足,可以搜索,不上锁
+					this.isShow = false;
+				}
+			},
+			//获取录音结果子传父
+			resultClick() {
+				if (this.resultText == '正在识别中...' || this.resultText == '未检测到语音,请重试') return;
+				// this.$emit('getSearch',this.resultText)
+				// this.voiceflag=false;
+				// this.sendLock=true;
+				// this.$emit('voiceResult', this.resultText)
+			},
+			//弹窗关闭之后的操作,点击遮罩层或关闭按钮
+			// afterHide() {
+			// 	this.sendLock = true;
+			// 	this.$emit('closePopup');
+			// 	clearInterval(this.timer);
+			// 	this.resultText = '正在识别中...';
+			// },
+			randomRgb() {
+				let R = Math.floor(Math.random() * 130 + 110);
+				let G = Math.floor(Math.random() * 130 + 110);
+				let B = Math.floor(Math.random() * 130 + 110);
+				return {
+					background: `rgb(${R},${G},${B}, 1)`
+				};
+			},
+			// 语音转文字
+			getSeep(){
+				this.voicetext='';
+				this.partialResult='';
+				this.voiceflag=true;		
+			},
+			onEnd() {
+				// console.log(88)
+				// recorderManager.stop();
+				// let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
+				//   let curRoute = routes[routes.length - 1].route //获取当前页面路由
+				//   if(curRoute=='pages/work/shprogress'){
+					  
+				//   }else{
+				// 	  if(this.xmmc){
+				// 	  	console.log('endRecognize1');
+				// 	  	// this.getSearch()
+				// 	  }
+				//   }
+					
+				},
+			clickRight(){
+				this.$emit('clickRight')
+			},
+			clickLeft(){
+				this.$emit('clickLeft')
+			},
+			getSearch(){
+				// console.log(this.xmmc,99)
+				this.$emit('getSearch',this.xmmc)
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.search /deep/ .uni-navbar__header{align-items: center;}
+.search /deep/ .uni-navbar__header-btns{overflow: inherit;}
+.search /deep/ .uni-navbar__header-container {padding: 0;}
+
+// 切换
+.cont_topl {
+	width: 60rpx;height: 60rpx;display: flex;align-items: center;justify-content: center;
+	image{width: 42rpx;height: 34rpx;}
+}
+// 搜索
+.listtopa{border: 6rpx solid #FD5001;border-radius: 32rpx;height:64rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;flex:1;
+ input{}
+ image{width: 20rpx;height: 30rpx;margin-right: 16rpx;}
+ .btn{background: #FA5F03;border-radius: 32rpx;width: 120rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ 
+// 消息
+.min_top{position: relative;width: 44rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 32rpx;
+	image{width: 38rpx;height: 40rpx;}
+	view{position: absolute;background: #FF5858;box-shadow: 0px 2rpx 6rpx 0px rgba(198,78,0,0.49);border-radius: 10rpx;color: #ffffff;font-size: 18rpx;right: -50%;top: -12rpx;border-radius: 50%;min-width: 40rpx;height: 40rpx;text-align: center;padding: 0 4rpx;box-sizing: border-box;line-height: 40rpx;}
+}
+
+
+.bgbox{z-index: 1900;}
+.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;}
+.voice {
+		min-height: 500rpx;
+		padding: 100rpx 60rpx 0 60rpx;
+		position: relative;
+		background-color: #fff;
+		position: fixed;
+		left:0;right:0;bottom:0;z-index: 2000;
+		padding-bottom: 180rpx;
+		.res-txt {
+			text-align: center;
+			margin-top: 40rpx;
+			font-size: 36rpx;
+			color: #919098;
+ 
+			image {
+				display: block;
+				margin: auto;
+				margin-top: 10rpx;
+				width: 60rpx;
+				animation: bounce-down 2.6s linear infinite;
+			}
+		}
+ 
+		.tip {
+			margin-top: 15rpx;
+			text-align: center;
+ 
+			.txt {
+				font-size: 36rpx;
+				color: #151823;
+			}
+ 
+			.txt-bt {
+				margin-top: 20rpx;
+				color: #919098;
+			}
+		}
+ 
+		.btn {
+			width: 50%;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			color: #fff;
+			border-radius: 50rpx;
+			background: #3484fd;
+			position: absolute;
+			bottom: 80rpx;
+			left: 50%;
+			transform: translateX(-50%);
+ 
+			.btn-cont {
+				display: flex;
+				align-items: center;
+			}
+		}
+	}
+ 
+	@-webkit-keyframes bounce-down {
+		25% {
+			-webkit-transform: translateY(-10px);
+		}
+ 
+		50%,
+		100% {
+			-webkit-transform: translateY(0);
+		}
+ 
+		75% {
+			-webkit-transform: translateY(13px);
+		}
+	}
+	.content{background-color: #f5f5f5;position: fixed;left: 0;right: 0;bottom: 0;z-index: 10000;height: 500rpx;}
+	/* 语音动画 */
+	.prompt-loader {
+		width: 100%;
+		height: 35px;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		margin: 30rpx auto;
+	}
+ 
+	.prompt-loader .em {
+		height: 15%;
+		width: 2px;
+		float: left;
+		display: block;
+		background: #333333;
+	}
+ 
+	.prompt-loader .em:last-child {
+		margin-right: 0px;
+	}
+ 
+	.prompt-loader .em:nth-child(1) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(2) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(3) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(4) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(5) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(6) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(7) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(8) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(9) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(10) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(11) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(12) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(13) {
+		animation: load 1.3s 1s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(14) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(15) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(16) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(17) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(18) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(19) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(20) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(21) {
+		animation: load 1.3s 0.5s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(22) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(23) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(24) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(25) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(26) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(27) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(28) {
+		animation: load 1.3s 0.1s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(29) {
+		animation: load 1.3s 0.3s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(30) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	@keyframes load {
+		0% {
+			height: 15%;
+		}
+ 
+		50% {
+			height: 100%;
+		}
+ 
+		100% {
+			height: 15%;
+		}
+	}
+</style>

+ 492 - 0
qs_zhaoshang/components/toptab/searchone.vue

@@ -0,0 +1,492 @@
+<template>
+	<view>
+		<view class="pdl14">
+			<view class="listtopa flexc">
+				<image :src="speechimg" @click="getSeep"></image>
+				<input  :placeholder="'请输入'+placeholder+'名称进行搜索'" v-model="xmmc" class="flex1 f16 c34"/>
+				<view class="btn f16 cf flexcc" @click="getSearch">搜索</view>
+			</view>
+			
+		</view>
+		<view class="bgbox"  v-if="voiceflag"  @click="getClose"></view>
+		<view class="voice" v-if="voiceflag">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view v-if="isShow">
+				<view v-if="sendLock" class="tip">
+					<view class="txt">试试这样说</view>
+					<view class="txt-bt">科技{{placeholder}}</view>
+				</view>
+				<view v-else>
+					<!-- @click="resultClick" -->
+					<view class="res-txt" >
+						<text :style="{
+							color: (resultText == '正在识别中2...' || resultText == '未检测到语音,请重试') ? 
+							'#919098' : 
+							'#2979ff'}">
+							{{resultText}}
+						</text>
+						<!-- <image v-if="resultText != '正在识别中.1..' && resultText != '未检测到语音,请重试'"
+							src="/static/img/xiaoshou.png" mode="widthFix"></image> -->
+					</view>
+				</view>
+			</view>
+		 
+			<view v-else class="tip">
+				<view v-if="!sendLock" class="tipbox">{{voicetext}}</view>
+				<view v-html="text" class="txt" style="color: #8e8d9a;"></view>
+				<view v-if="!sendLock" class="prompt-loader">
+					<view class="em" :style="randomRgb()" v-for="(item,index) in 30" :key="index"></view>
+				</view>
+				<view v-else class="prompt-loader"></view>
+			</view>
+		 
+			<view class="btn" @longpress="handleRecordStart" @touchmove="handleTouchMove" @touchend="handleRecordStop">
+				<view class="btn-cont">
+					长按开始语音搜索
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	const recorderManager = uni.getRecorderManager();
+	//播放录音
+	const innerAudioContext = uni.createInnerAudioContext();
+	innerAudioContext.autoplay = true;
+	export default{
+		props:{
+			name:{
+				type: String,
+				default () {
+					return ''
+				}
+			},
+			placeholder:{
+				type: String,
+				default () {
+					return '项目'
+				}
+			}
+		},
+		watch:{
+			sendLock(newVal, oldVal) {
+				var that=this;
+				recorderManager.onStop(res => {
+					if (newVal) return //上锁不发送
+					//解锁发送网络请求
+					setTimeout(function(res){
+						if(!that.voicetext&&!that.partialResult){
+							that.resultText='未检测到语音,请重试'
+							that.sendLock=true;
+						}else{
+							that.resultText=that.voicetext||that.partialResult;
+							// console.log(that.resultText,85)
+							that.xmmc=that.xmmc+that.resultText;
+							setTimeout(function(){
+								that.$emit('getSearch',that.resultText)
+								that.voiceflag=false;
+								that.sendLock=true;
+							},1200)
+						}
+						
+					},1000)
+					// console.log(res.tempFilePath, '获取录音文件')
+				});
+			},
+		},
+		data(){
+			return {
+				speechimg:require('@/static/images/index/speech.png'),
+				xmmc:'',
+				
+				closeimg:require('@/static/images/close.png'),
+				voiceflag:false,
+				voiceToken: '',
+				timer: null,
+				text: '',
+				resultText: '正在识别中...',
+				startPoint: {},
+				sendLock: true,
+				isShow: true,
+				adioFileData: '',
+				adioSize: '',
+				resContent: '',
+				luyinStatus: true,
+				voicetext:'',
+				options: {}, // 语音转文字的设置
+				partialResult:'',//临时语音
+			}
+		},
+		mounted() {
+			if(!this.xmmc){
+				this.xmmc=this.name
+			}
+			var that=this;
+			// #ifdef APP-PLUS
+					// 监听语音识别事件
+					plus.speech.addEventListener('start', this.ontStart, false);
+					plus.speech.addEventListener('volumeChange', this.onVolumeChange, false);
+					plus.speech.addEventListener('recognizing', this.onRecognizing, false);
+					plus.speech.addEventListener('recognition', this.onRecognition, false);
+					plus.speech.addEventListener('end', this.onEnd, false);
+			// #endif
+			
+			recorderManager.onStop(function(res) {
+				//录音后的回调函数
+				// console.log('recorder stop' + JSON.stringify(res));
+				// console.log(res.tempFilePath);
+				that.voicePath = res.tempFilePath;
+				// self.voicePath = 
+			});
+		},
+		onUnload() {
+		},
+		unmounted() {
+		},
+		methods:{
+			getClose(){
+				this.voiceflag=false;
+				this.sendLock=true;
+			},
+			onRecognizing(e){
+				this.partialResult=this.partialResult+e.partialResult;
+			},
+			// 录音转文字
+			handleVoice() {
+				// console.log('语音输入')
+				let _this = this;
+				this.options.engine = 'baidu'
+				// this.options.timeout = 60 * 1000; //超时时间
+				this.options.continue = true;//语音识别是否采用持续模式
+				this.options.punctuation = false; // 是否需要标点符号 
+				this.options.userInterface = false; // 是否显示语音界面
+				plus.speech.startRecognize(this.options, (s) => {
+					_this.voicetext+=s;
+					// plus.speech.stopRecognize(); // 关
+				});
+			},
+			//长按录音方法
+			handleRecordStart(e) {
+				this.voicetext='';
+				this.partialResult='';
+				this.startPoint = e.touches[0]; //记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。
+				recorderManager.start({duration: 60000}); //开始录音
+				this.handleVoice()
+				this.text = `<text style="color:#333">上划取消搜索</text>`;
+				this.sendLock = false; //长按时不上锁。
+				this.isShow = false;
+				this.resultText = '正在识别中...';
+				// 按钮
+			},
+			//结束录音 (手指松开)时触发
+			handleRecordStop(e) {
+				var that=this;
+				this.isShow = true;
+				setTimeout(function(){
+					plus.speech.stopRecognize();
+					recorderManager.stop(); //结束录音
+				},1200)
+				
+			},
+			//上划取消搜索
+			handleTouchMove(e) {
+				let moveLenght = e.touches[e.touches.length - 1].clientY - this.startPoint.clientY;
+				if (Math.abs(moveLenght) > 50) {
+					this.text = `松开手指,<text style="color:#333">取消搜索</text>`;
+					this.sendLock = true; //触发了上滑取消搜索,上锁
+					this.isShow = false;
+				} else {
+					this.text = `<text style="color:#333">上划取消搜索</text>`;
+					this.sendLock = false; //上划距离不足,可以搜索,不上锁
+					this.isShow = false;
+				}
+			},
+			//获取录音结果子传父
+			resultClick() {
+				if (this.resultText == '正在识别中...' || this.resultText == '未检测到语音,请重试') return;
+				this.$emit('getSearch',this.resultText)
+				this.voiceflag=false;
+				this.sendLock=true;
+				// this.$emit('voiceResult', this.resultText)
+			},
+			//弹窗关闭之后的操作,点击遮罩层或关闭按钮
+			// afterHide() {
+			// 	this.sendLock = true;
+			// 	this.$emit('closePopup');
+			// 	clearInterval(this.timer);
+			// 	this.resultText = '正在识别中...';
+			// },
+			randomRgb() {
+				let R = Math.floor(Math.random() * 130 + 110);
+				let G = Math.floor(Math.random() * 130 + 110);
+				let B = Math.floor(Math.random() * 130 + 110);
+				return {
+					background: `rgb(${R},${G},${B}, 1)`
+				};
+			},
+			// 语音转文字
+			getSeep(){
+				this.voicetext='';
+				this.partialResult='';
+				this.voiceflag=true;		
+			},
+			onEnd() {
+				// let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
+				//   let curRoute = routes[routes.length - 1].route //获取当前页面路由
+				//   if(curRoute=='pages/work/shprogress'){
+					  
+				//   }else{
+				// 	  if(this.xmmc){
+				// 	  	this.getSearch()
+				// 	  }
+				//   }
+			},
+			getSearch(){
+				// console.log(this.xmmc,99)
+				this.$emit('getSearch',this.xmmc)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	// 搜索
+.listtopa{border: 6rpx solid #FD5001;border-radius: 32rpx;height:64rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 20rpx;height: 30rpx;margin-right: 16rpx;}
+ .btn{background: #FA5F03;border-radius: 32rpx;width: 120rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ 
+ .bgbox{z-index: 1900;}
+ .choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;}
+ .voice {
+		min-height: 500rpx;
+ 		padding: 100rpx 60rpx 0 60rpx;
+ 		position: relative;
+ 		background-color: #fff;
+ 		position: fixed;
+ 		left:0;right:0;bottom:0;z-index: 2000;
+		padding-bottom: 180rpx;
+ 		.res-txt {
+ 			text-align: center;
+ 			margin-top: 40rpx;
+ 			font-size: 36rpx;
+ 			color: #919098;
+  
+ 			image {
+ 				display: block;
+ 				margin: auto;
+ 				margin-top: 10rpx;
+ 				width: 60rpx;
+ 				animation: bounce-down 2.6s linear infinite;
+ 			}
+ 		}
+  
+ 		.tip {
+ 			margin-top: 15rpx;
+ 			text-align: center;
+  
+ 			.txt {
+ 				font-size: 36rpx;
+ 				color: #151823;
+ 			}
+  
+ 			.txt-bt {
+ 				margin-top: 20rpx;
+ 				color: #919098;
+ 			}
+ 		}
+  
+ 		.btn {
+ 			width: 50%;
+ 			height: 80rpx;
+ 			display: flex;
+ 			align-items: center;
+ 			justify-content: center;
+ 			color: #fff;
+ 			border-radius: 50rpx;
+ 			background: #3484fd;
+ 			position: absolute;
+			bottom: 80rpx;
+ 			left: 50%;
+ 			transform: translateX(-50%);
+  
+ 			.btn-cont {
+ 				display: flex;
+ 				align-items: center;
+ 			}
+ 		}
+ 	}
+  
+ 	@-webkit-keyframes bounce-down {
+ 		25% {
+ 			-webkit-transform: translateY(-10px);
+ 		}
+  
+ 		50%,
+ 		100% {
+ 			-webkit-transform: translateY(0);
+ 		}
+  
+ 		75% {
+ 			-webkit-transform: translateY(13px);
+ 		}
+ 	}
+ 	.content{background-color: #f5f5f5;position: fixed;left: 0;right: 0;bottom: 0;z-index: 10000;height: 500rpx;}
+ 	/* 语音动画 */
+ 	.prompt-loader {
+ 		width: 100%;
+ 		height: 35px;
+ 		display: flex;
+ 		align-items: center;
+ 		justify-content: space-between;
+ 		margin: 30rpx auto;
+ 	}
+  
+ 	.prompt-loader .em {
+ 		height: 15%;
+ 		width: 2px;
+ 		float: left;
+ 		display: block;
+ 		background: #333333;
+ 	}
+  
+ 	.prompt-loader .em:last-child {
+ 		margin-right: 0px;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(1) {
+ 		animation: load 1.3s 0.4s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(2) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(3) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(4) {
+ 		animation: load 1.3s 0.8s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(5) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(6) {
+ 		animation: load 1.3s 0.4s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(7) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(8) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(9) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(10) {
+ 		animation: load 1.3s 0.4s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(11) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(12) {
+ 		animation: load 1.3s 0.8s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(13) {
+ 		animation: load 1.3s 1s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(14) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(15) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(16) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(17) {
+ 		animation: load 1.3s 0.8s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(18) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(19) {
+ 		animation: load 1.3s 0.4s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(20) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(21) {
+ 		animation: load 1.3s 0.5s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(22) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(23) {
+ 		animation: load 1.3s 0.4s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(24) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(25) {
+ 		animation: load 1.3s 0.8s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(26) {
+ 		animation: load 1.3s 0.2s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(27) {
+ 		animation: load 1.3s 0.4s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(28) {
+ 		animation: load 1.3s 0.1s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(29) {
+ 		animation: load 1.3s 0.3s infinite linear;
+ 	}
+  
+ 	.prompt-loader .em:nth-child(30) {
+ 		animation: load 1.3s 0.6s infinite linear;
+ 	}
+  
+ 	@keyframes load {
+ 		0% {
+ 			height: 15%;
+ 		}
+  
+ 		50% {
+ 			height: 100%;
+ 		}
+  
+ 		100% {
+ 			height: 15%;
+ 		}
+ 	}
+</style>

+ 76 - 0
qs_zhaoshang/components/toptab/tab.vue

@@ -0,0 +1,76 @@
+<template>
+	<view class="listtopb flexc" >
+		<block v-for="(ite,idx) in tablist" :key='idx'>
+			<block v-if='ite.limt'>
+				<view class="tit" :style="'height:'+height+'rpx'" :class="tabidx==ite.val?'act':''" @click="getTab(ite.val)" v-if="checkPermi([ite.limt])">
+					<view class="f16 fw mb6 tits" >{{ite.tit}}</view>
+					<view class="f500 f14 txt" v-if="ite.txt||ite.txt==0">{{ite.txt}}</view>
+				</view>
+			</block>
+			<block v-else>
+				<view class="tit" :style="'height:'+height+'rpx'" :class="tabidx==ite.val?'act':''" @click="getTab(ite.val)" >
+					<view class="f16 fw mb6 tits" >{{ite.tit}}</view>
+					<view class="f500 f14 txt" v-if="ite.txt||ite.txt==0">{{ite.txt}}</view>
+				</view>
+			</block>
+			
+		</block>
+		
+	</view>
+</template>
+
+<script>
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		props:{
+			tablist:{
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			height:{
+				type: Number,
+				default () {
+					return 90
+				}
+			},
+			tabidx:{
+				type: Number,
+				default () {
+					return 0
+				}
+			}
+		},
+		data(){
+			return{
+				// tabidxs:0,
+			}
+		},
+		mounted() {
+			// this.tabidxs=this.tabidx
+		},
+		methods:{
+			checkPermi, checkRole,
+			getTab(idx){
+				// this.tabidxs=idx;
+				this.$emit('getCheck',idx)
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.listtopb{
+		 .tit{flex: 1;display: flex;flex-direction: column;justify-content: center;position: relative;
+			view{text-align: center;}
+			.tits{color: #666666;}
+			.txt{color: #aaaaaa;}
+		 &.act{
+			 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+			.tits{color: #343434;}
+			.txt{color: #FE5706;} 
+			}
+		 }
+	}
+</style>

+ 167 - 0
qs_zhaoshang/components/uni-section/uni-section.vue

@@ -0,0 +1,167 @@
+<template>
+	<view class="uni-section">
+		<view class="uni-section-header" @click="onClick">
+				<view class="uni-section-header__decoration" v-if="type" :class="type" />
+        <slot v-else name="decoration"></slot>
+
+        <view class="uni-section-header__content">
+          <text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title" :class="{'distraction':!subTitle}">{{ title }}</text>
+          <text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}" class="uni-section-header__content-sub">{{ subTitle }}</text>
+        </view>
+
+        <view class="uni-section-header__slot-right">
+          <slot name="right"></slot>
+        </view>
+		</view>
+
+		<view class="uni-section-content" :style="{padding: _padding}">
+			<slot />
+		</view>
+	</view>
+</template>
+
+<script>
+
+	/**
+	 * Section 标题栏
+	 * @description 标题栏
+	 * @property {String} type = [line|circle|square] 标题装饰类型
+	 * 	@value line 竖线
+	 * 	@value circle 圆形
+	 * 	@value square 正方形
+	 * @property {String} title 主标题
+	 * @property {String} titleFontSize 主标题字体大小
+	 * @property {String} titleColor 主标题字体颜色
+	 * @property {String} subTitle 副标题
+	 * @property {String} subTitleFontSize 副标题字体大小
+	 * @property {String} subTitleColor 副标题字体颜色
+	 * @property {String} padding 默认插槽 padding
+	 */
+
+	export default {
+		name: 'UniSection',
+    emits:['click'],
+		props: {
+			type: {
+				type: String,
+				default: ''
+			},
+			title: {
+				type: String,
+				required: true,
+				default: ''
+			},
+      titleFontSize: {
+        type: String,
+        default: '14px'
+      },
+			titleColor:{
+				type: String,
+				default: '#333'
+			},
+			subTitle: {
+				type: String,
+				default: ''
+			},
+      subTitleFontSize: {
+        type: String,
+        default: '12px'
+      },
+      subTitleColor: {
+        type: String,
+        default: '#999'
+      },
+			padding: {
+				type: [Boolean, String],
+				default: false
+			}
+		},
+    computed:{
+      _padding(){
+        if(typeof this.padding === 'string'){
+          return this.padding
+        }
+
+        return this.padding?'10px':''
+      }
+    },
+		watch: {
+			title(newVal) {
+				if (uni.report && newVal !== '') {
+					uni.report('title', newVal)
+				}
+			}
+		},
+    methods: {
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+<style lang="scss" >
+	$uni-primary: #2979ff !default;
+
+	.uni-section {
+		background-color: #fff;
+    .uni-section-header {
+      position: relative;
+      /* #ifndef APP-NVUE */
+      display: flex;
+      /* #endif */
+      flex-direction: row;
+      align-items: center;
+      padding: 12px 10px;
+      font-weight: normal;
+
+      &__decoration{
+        margin-right: 6px;
+        background-color: $uni-primary;
+        &.line {
+          width: 4px;
+          height: 12px;
+          border-radius: 10px;
+        }
+
+        &.circle {
+          width: 8px;
+          height: 8px;
+          border-top-right-radius: 50px;
+          border-top-left-radius: 50px;
+          border-bottom-left-radius: 50px;
+          border-bottom-right-radius: 50px;
+        }
+
+        &.square {
+          width: 8px;
+          height: 8px;
+        }
+      }
+
+      &__content {
+        /* #ifndef APP-NVUE */
+        display: flex;
+        /* #endif */
+        flex-direction: column;
+        flex: 1;
+        color: #333;
+
+        .distraction {
+          flex-direction: row;
+          align-items: center;
+        }
+        &-sub {
+          margin-top: 2px;
+        }
+      }
+
+      &__slot-right{
+        font-size: 14px;
+      }
+    }
+
+    .uni-section-content{
+      font-size: 14px;
+    }
+	}
+</style>

+ 102 - 0
qs_zhaoshang/components/upload/upload.vue

@@ -0,0 +1,102 @@
+<template>
+	<!-- 上传附件 -->
+	<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>
+</template>
+
+<script>
+	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,ppt,txt,pdf,zip,rar,word',
+				// 文件上传大小限制
+				size: 100,
+				// 文件数量限制 默认10
+				count: 5,
+				// 文件回显列表
+				files: new Map(),
+				// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+				wxFiles: [],
+				// 是否打印日志
+				debug: false,
+				
+				// 演示用
+				tabIndex: 0,
+				// filelist:[{originalFilename:'ceisi.docx',fileName:'/profile/upload/2023/03/05/ceisi_20230305125835A007.docx'}], 
+				filelist:[{fjName:'ceisi.docx',path:'/profile/upload/2023/03/05/ceisi_20230305125835A007.docx'}], 
+			}
+		},
+		methods:{
+			onuploadEnd(item) {
+				var newobj={}
+				var responseText=JSON.parse(item.responseText)
+				newobj.fjName=responseText.originalFilename;
+				newobj.path=responseText.fileName;
+				this.filelist.push(newobj)
+			},
+			getDelFj(idx){
+				this.filelist.splice(idx,1)
+			},
+			getDown(e){
+				uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+						uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+		}
+	}
+</script>
+
+<style>
+</style>

+ 277 - 0
qs_zhaoshang/components/zdclue/point.vue

@@ -0,0 +1,277 @@
+<template>
+	<view class="point_box" :style="jdflag?'padding-top:100rpx':''">
+		<!-- 项目信息 -->
+		<uni-collapse  ref="collapse" v-model="value" >
+			<!-- :show-arrow='false' -->
+			<uni-collapse-item title="节点安排"  class='cldelista'   :border="false" title-border="none" v-for="(ite,idx) in datainfo" :key="idx">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">{{ite.year}}年{{ite.month}}月</view>
+						<view class="zdlbtn finbtn0" v-if="ite.sfwc=='0'">无状态</view>
+						<view class="zdlbtn finbtn3" v-if="ite.sfwc=='1'">未处理</view>
+						<view class="zdlbtn finbtn2" v-if="ite.sfwc=='2'">未完成</view>
+						<view class="zdlbtn finbtn1" v-if="ite.sfwc=='3'">已完成</view>
+					</view>
+				</template>
+				<view class="content">
+					<!-- 操作按钮 -->
+					
+					<view class="contenta flexcj">
+						<view class="tit">责任单位</view>
+						<view class="txt">{{checkstring(ite.fgwJdapZrDwList)}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">协同单位</view>
+						<view class="txt">{{checkstring(ite.fgwJdapXtDwList)}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">具体内容</view>
+						<view class="txt">{{ite.jdannr}}</view>
+					</view>
+					<view class="contenta " v-if="ite.fgwJdapFjList&&ite.fgwJdapFjList.length">
+						<view class="tit mb8">附件</view>
+						<view class="txt flexcj cldelistbf mb10" v-for="(fite,fidx) in ite.fgwJdapFjList" :key="'fj'+fidx">
+							<view class="flext f16 c6">
+								<view class="imgl">
+									<image :src="wimg" ></image>
+								</view>
+								
+								<view class="lh22">{{fite.fjName}}</view>
+								</view>
+							<view class="flexc f16 co28 flex0" @click="getDown(fite.path)">
+								<image :src="downimg" class="imgr"></image>
+								预览</view>
+						</view>
+					</view>
+					<!-- <view class="contenta flexcj">
+						<view class="tit">督办等级</view>
+						<view class="txt">{{ite.dbdj}}</view>
+					</view> -->
+					<view class="contenta flexcj">
+						<view class="tit">要求完成时间</view>
+						<view class="txt">{{ite.jdsj}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">审核结果</view>
+						<view class="txt">
+							<text v-if="ite.shjg==0" class="c6">待审核</text>
+							<text v-if="ite.shjg==1" class="co26">已通过</text>
+							<text v-if="ite.shjg==2" class="cof1">未通过</text>
+						</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">审核意见</view>
+						<view class="txt">
+							{{ite.shyj}}
+						</view>
+					</view>
+					<view class="contenta flexcj" v-if="ite.sfwc=='3'">
+						<view class="tit">完成时间</view>
+						<view class="txt">{{ite.updateTime}}</view>
+					</view>
+					<!-- <view class="contenta flexcj" v-if="ite.sfwc=='2'">
+						<view class="tit">已超期天数</view>
+						<view class="txt flexc">{{ite.cqts}}天
+							<view class="zdlbtn"  :class="{
+								btn1:ite.type==1,
+								btn2:ite.type==2,
+								btn3:ite.type==0,
+							}">{{getfgwch(ite.type)}}</view>
+						</view>
+					</view> -->
+					
+					<view class="rate_top" v-if="jdflag">
+						<!-- 上报人汇报进度 未完成-->
+						<view class="rate_topl" v-if="checkPermi(['fgw:jzqk:add'])" @click="getHuiFn(ite)">
+							<image :src="hbimg" class="limg"></image>
+							<text class="co28 fw">汇报进度</text>
+						</view>
+						<!-- 管理员 未完成-->
+						<view class="rate_topl" v-if="checkPermi(['fgw:jdap:jdcb'])&&ite.sfwc!='3'&&ite.shjg==1" @click="getCbFn(ite.id)">
+							<image :src="cbimg" class="limg"></image>
+							<text class="cofe fw">一键催报</text>
+						</view>
+						<view class="rate_topr"  @click="getoperateFn(ite)">
+							<image :src="czimg" class="limg"></image>操作
+						</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		
+		<view class="bgbox" @click="getClose" v-if="moreflag"></view>
+		<view class="more_fixed" v-if="moreflag">
+			<view class="more_fixedt">
+				<view v-if="checkPermi(['fgw:jzqk:list'])" @click="getjzqklistFn" >查看汇报进度</view>
+				<view v-if="checkPermi(['fgw:jdap:jdsh'])" @click="getjdShFn" >审核</view>
+				<!-- <view v-if="checkPermi(['fgw:jdap:query','fgw:jdap:edit'])&&(roles=='common_fgw'&&shjg!=1)" @click="getPutFn">修改</view>
+				<view v-if="checkPermi(['fgw:jdap:remove'])&&(roles=='common_fgw'&&shjg!=1)" @click="getDelFn">删除</view> -->
+				<!-- 普通用户 -->
+				<view v-if="checkPermi(['fgw:jdap:editf'])&&shjg!=1" @click="getPutFn">修改</view>
+				<view v-if="checkPermi(['fgw:jdap:removef'])&&shjg!=1" @click="getDelFn">删除</view>
+				<!-- 管理员 -->
+				<view v-if="checkPermi(['fgw:jdap:edit'])" @click="getPutFn">修改</view>
+				<view v-if="checkPermi(['fgw:jdap:remove'])" @click="getDelFn">删除</view>
+<!-- () -->
+			</view>
+			<view class="more_fixedb" @click="getClose">取消</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { selectDictValue } from '@/utils/common.js';
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		props:{
+			datainfo:{},
+			fgwchlist:{},
+			jdflag:{
+				type:Boolean,
+				default () {
+					return true
+				}
+			}
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				hbimg:require("@/static/images/new/index/hbpoint.png"),
+				cbimg:require("@/static/images/new/index/cbpoint.png"),
+				czimg:require("@/static/images/new/index/czpoint.png"),
+				value:[],
+				valuetwo:[],
+				fgwchlistes:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+				moreflag:false,
+				checkid:'',
+				checkite:'',//选择的数据
+				roles:this.$store.state.user.roles[0],
+				shjg:'',//审核结果
+			}
+		},
+		mounted() {
+			this.fgwchlistes=this.fgwchlist;
+		},
+		methods:{
+			checkPermi, checkRole,
+			getClose(){
+				this.moreflag=false;
+			},
+			getoperateFn(ite){
+				this.checkid=ite.id;
+				this.shjg=ite.shjg;
+				this.checkite=ite;
+				this.moreflag=true;
+			},
+			getjdShFn(){
+				this.moreflag=false;
+				this.$emit('getjdShFn',this.checkid)
+			},
+			//催报
+			getCbFn(id){
+				var that=this;
+				this.moreflag=false;
+				 uni.showModal({
+				 	title: '确认催报',
+				 	content: "是否确认催报",
+				 	cancelText: '取消',
+				 	confirmText: '确认',
+				 	success: function(res) {
+				 		if (res.confirm) {
+				 			that.$emit('getCbFn',id)
+				 		} else if (res.cancel) {
+				 		}
+				 	}
+				 }); 
+			},
+			//汇报
+			getHuiFn(ite){
+				this.$emit('getHuiFn',ite)
+			},
+			// 查看汇报进度
+			getjzqklistFn(){
+				this.moreflag=false;
+				this.$emit('getjzqklistFn',this.checkite)
+			},
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			getPutFn(){
+				this.moreflag=false;
+				this.$emit('getPutFn',this.checkid)
+			},
+			getfgwch(data){
+				return selectDictValue(this.fgwchlistes, data);
+			},
+			checkstring(e){
+				var newArr=[];
+				e.forEach((ite,idx)=>{
+					newArr[idx]=ite.deptName
+				})
+				return newArr.join(',')
+			},
+			getDelFn(e){
+				var that=this;
+				this.moreflag=false;
+				 uni.showModal({
+				 	title: '确认删除',
+				 	content: "是否确认删除",
+				 	cancelText: '取消',
+				 	confirmText: '确认',
+				 	success: function(res) {
+				 		if (res.confirm) {
+				 			that.$emit('getDelFn',that.checkid)
+							
+				 		} else if (res.cancel) {
+				 		}
+				 	}
+				 }); 
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+// .point_box{padding-top: 100rpx;}
+.cldelista{
+	border-bottom: 2rpx solid #E5E5E5;
+	&:last-of-type{border-bottom: none;}
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;flex: 0 0 auto;margin-right: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;
+		.tit{margin-bottom: 0;}
+	}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+// 操作按钮
+.rate_top{display: flex;align-items: center;justify-content: space-between;margin-bottom: 10rpx;
+	.rate_topl{height: 70rpx;display: flex;align-items: center;font-size: 32rpx;font-weight: 500;color: #20ACCF;
+	.limg{width: 32rpx;height: 32rpx;margin-right: 20rpx;}
+	}
+	.rate_topr{height: 70rpx;display: flex;align-items: center;font-size: 32rpx;font-weight: 500;color: #1FB9F7;flex:0 0 auto;
+	.limg{width: 32rpx;height: 32rpx;margin-right: 20rpx;}
+	}
+}
+
+</style>

+ 206 - 0
qs_zhaoshang/components/zdclue/rate.vue

@@ -0,0 +1,206 @@
+<template>
+	<view class="rate_box"> 
+		<view class='cldelista'>
+			<uni-collapse  ref="collapse" v-model="value" >
+				<!-- :show-arrow='false' -->
+				<uni-collapse-item title="节点安排"  class='cldelista'   :border="false" title-border="none" v-for="(ite,idx) in datainfo" :key="idx">
+					<template v-slot:title>
+						<view class="flexc contentt">
+							<view class="flex0 f16 fw cofe">{{ite.hbTime}}</view>
+							<view class="zdlbtn finbtn2" v-if="ite.isSh=='1'">未审核</view>
+							<view class="zdlbtn finbtn1" v-if="ite.isSh=='2'">已通过</view>
+							<view class="zdlbtn finbtn3" v-if="ite.isSh=='3'">未通过</view>
+							<!-- <view class="zdlbtn finbtn1" v-if="ite.sfwc=='3'">已完成</view> -->
+						</view>
+					</template>
+				<view class="content" >
+					<!-- 操作按钮 -->
+					<view class="rate_top">
+						<!-- 需要判断角色 -->
+						<view class="rate_topl" v-if="checkPermi(['fgw:jzqk:edit'])" @click="getPutFn(ite)">
+							<image :src="putimg" class="limg"></image>修改
+						</view>
+						<view class="rate_topr" v-if="checkPermi(['fgw:jzqk:remove'])" @click="getDelFn(ite)">
+							<image :src="delimg" class="rimg"></image>删除
+						</view>
+						<view class="rate_topr co28" v-if="checkPermi(['fgw:common:jzqksh'])" @click="getShFn(ite.id)">
+							<image :src="shimg" class="rimg"></image>审核
+						</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">汇报时间</view>
+						<view class="txt">{{ite.hbTime}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">是否完成节点</view>
+						<view class="txt">{{ite.isJd=='Y'?'是':'否'}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">是否建设</view>
+						<view class="txt">{{ite.isJs=='Y'?'是':'否'}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">是否纳统</view>
+						<view class="txt">{{ite.isNt=='Y'?'是':'否'}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">是否竣工</view>
+						<view class="txt">{{ite.isJg=='Y'?'是':'否'}}</view>
+					</view>
+					<view class="contenta flexcj" v-if="ite.isNt=='Y'">
+						<view class="tit">纳统金额(万元)</view>
+						<view class="txt">{{ite.nttz}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">项目进展情况</view>
+						<view class="txt">{{ite.jzqk}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit">施工力量</view>
+						<view class="txt">{{ite.sgll}}</view>
+					</view>
+					<view class="contenta ">
+						<view class="tit mb10">附件</view>
+						<view class="txt flexcj cldelistbf mb10" v-for="(fjite,fjidx) in ite.fjList" :key="'fj-'+fjidx">
+							<view class="flext f16 c6">
+								<view class="imgl">
+									<image :src="wimg" ></image>
+								</view>
+								
+								<view>{{fjite.fjName}}</view>
+								</view>
+							<view class="flexc f16 co28 flex0" @click="getDown(fjite.path)">
+								<image :src="downimg" class="imgr"></image>
+								预览</view>
+						</view>
+					</view>
+				</view>
+				</uni-collapse-item>
+			</uni-collapse>
+			<!-- zsyzFjList -->
+		</view>
+		<!-- <view class='cldelista cldelistb'>
+			<view class="contenta">
+				<view class="tit">备注</view>
+				<view class="txt">项目备注信息项目备注信息项目备注信息项,目备 注信息项目备注信息项目备注信息项目备注信息, 项目备注信息项目备注信息。</view>
+			</view>
+		</view> -->
+	</view>
+</template>
+
+<script>
+	import { selectDictLabel } from '@/utils/common.js';
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		props:{
+			datainfo:{
+				// type: Object,
+				// default () {
+				// 	return {}
+				// }
+			},
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				putimg:require("@/static/images/new/index/updico.png"),
+				delimg:require("@/static/images/new/index/del.png"),
+				shimg:require("@/static/images/new/index/hbpoint.png"),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+				
+			}
+		},
+		filters: {
+			kaType(data, list) {
+				return selectDictLabel(list, data);
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			getYzAdr(data){
+				return selectDictLabel(this.yzadr, data);
+			},
+			getCytype(data){
+				return selectDictLabel(this.cytype, data);
+			},
+			getProject(data){
+				return selectDictLabel(this.projectlist, data);
+			},
+			getBackground(data){
+				return selectDictLabel(this.backgroundlist, data);
+			},
+			getPutFn(e){
+				this.$emit('getPutFn',e)
+			},
+			getShFn(id){
+				this.$emit('getShFn',id)
+			},
+			getDelFn(e){
+				var that=this;
+				 uni.showModal({
+				 	title: '确认删除',
+				 	content: "是否确认删除",
+				 	cancelText: '取消',
+				 	confirmText: '确认',
+				 	success: function(res) {
+				 		if (res.confirm) {
+				 			that.$emit('getDelFn',e)
+							
+				 		} else if (res.cancel) {
+				 		}
+				 	}
+				 }); 
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.rate_box{padding-top: 100rpx;}
+.cldelista{
+	
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 10rpx 28rpx;border-bottom: 2rpx solid #E5E5E5;
+	&:last-of-type{border-bottom: none;}
+	}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;flex: 0 0 auto;margin-right: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;
+		.tit{margin-bottom: 0;}
+	}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+// 操作按钮
+.rate_top{display: flex;align-items: center;justify-content: space-between;margin-bottom: 10rpx;
+	.rate_topl{height: 70rpx;display: flex;align-items: center;font-size: 32rpx;font-weight: 500;color: #20ACCF;
+	.limg{width: 26rpx;height: 34rpx;margin-right: 20rpx;}
+	}
+	.rate_topr{height: 70rpx;display: flex;align-items: center;font-size: 32rpx;font-weight: 500;color: #FA2300;
+	.rimg{width: 32rpx;height: 32rpx;margin-right: 20rpx;}
+	}
+}
+
+</style>

+ 182 - 0
qs_zhaoshang/components/zdclue/stage.vue

@@ -0,0 +1,182 @@
+<template>
+	<view>
+		<view class='cldelista cldelistb'>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">项目名称</view>
+				<view class="txt">{{datainfo.xmmc}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">地区</view>
+				<view class="txt">{{datainfo.dq}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">建设单位</view>
+				<view class="txt">{{datainfo.jsdw}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">项目标签</view>
+				<view class="txt">{{datainfo.xmbq}}</view>
+			</view>
+		</view>
+		<!-- 项目信息 -->
+		<uni-collapse  ref="collapse" v-model="value" >
+			<!--  -->
+			<uni-collapse-item title="项目信息" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">前期工作手续</view>
+						<view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+							<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta" v-for="(lite,lidx) in fjtitlist" :key="'fjtit-'+lidx">
+						<view class="titbox">
+							<view class="tit">{{lite.tit}}</view>
+						</view>
+						<block v-if="datainfo.fjList&&datainfo.fjList.length">
+							<block v-for="(ite,idx) in datainfo.fjList" :key="'f-'+idx" >
+								<view class="txt flexcj cldelistbf" v-if="ite.type==lite.type">
+									<!-- 审核状态 -->
+									<view class="flext f16 c6">
+										<view class="imgl"><image :src="wimg" ></image></view>
+										<view class="wordb">{{ite.fjName}}</view>
+									</view>
+									<view class="f14 ml10 c6 mr10 lh22" v-if="ite.createTime">{{ite.createTime}}</view>
+										<text v-if="ite.isSh==1" class="c6 flex0">待审核</text>
+										<text v-if="ite.isSh==2" class="co26 flex0">已通过</text>
+										<text v-if="ite.isSh==3" class="cof1 flex0">未通过</text>
+									<view class="clder" @click="getDown(ite.path)"><image :src="downimg" class="imgr"></image>预览</view>
+								</view>
+							</block>
+						</block>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<view class='cldelista cldelistb'>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">计划开工时间</view>
+				<view class="txt">{{datainfo.jhkgsj}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">实际开工时间</view>
+				<view class="txt">{{datainfo.kgsj}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">计划竣工时间</view>
+				<view class="txt">{{datainfo.njgsj}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">实际竣工时间</view>
+				<view class="txt">{{datainfo.jgsj}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">纳统时间</view>
+				<view class="txt">{{datainfo.ntsj}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">项目最近投资(万元)</view>
+				<view class="txt">{{datainfo.nttz}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">项目累计投资(万元)</view>
+				<view class="txt">{{datainfo.ntxmtc}}</view>
+			</view>
+		</view>
+		<view class='cldelista cldelistb'>
+			<view class="contenta">
+				<view class="tit">备注</view>
+				<view class="txt">{{datainfo.remark}}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { selectDictLabel } from '@/utils/common.js';
+	
+	export default{
+		props:{
+			datainfo:{
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+				fjtitlist:[{tit:'节能审查',type:'1'},{tit:'用地预审与选址意见书',type:'2'},{tit:'核准/备案',type:'3'},{tit:'建议书批复',type:'4'},{tit:'可研批复',type:'5'},{tit:'初步设计批复',type:'6'},{tit:'环境影响评价',type:'7'},{tit:'生态红线不可避让论证',type:'8'},{tit:'建设用地规划许可证',type:'9'},{tit:'建设工程规划许可证',type:'10'},{tit:'农用地转用和土地征收批复',type:'11'},{tit:'划拨决定书',type:'12'},{tit:'土地出让合同',type:'13'},{tit:'不动产权证',type:'14'},{tit:'工程招投标',type:'15'},{tit:'施工许可证',type:'16'},{tit:'竣工资料',type:'17'},]
+			}
+		},
+		filters: {
+			kaType(data, list) {
+				return selectDictLabel(list, data);
+			}
+		},
+		mounted() {
+			// console.log(this.datainfo)
+		},
+		methods:{
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			getYzAdr(data){
+				return selectDictLabel(this.yzadr, data);
+			},
+			getCytype(data){
+				return selectDictLabel(this.cytype, data);
+			},
+			getProject(data){
+				return selectDictLabel(this.projectlist, data);
+			},
+			getBackground(data){
+				return selectDictLabel(this.backgroundlist, data);
+			}
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.cldelista{
+	border-top: 2rpx solid #E5E5E5;
+	&:last-of-type{border-bottom: none;}
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 18rpx 0;
+		.titbox{display: flex;align-items: center;margin-bottom: 20rpx;}
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;
+		.tit{margin-bottom: 0;}
+	}
+	.cldelistbf {
+		margin-bottom: 24rpx;
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;margin-right: 0;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+		.flext{flex: 1;margin-right: 16rpx;}
+		.clder{display: flex;align-items: center;font-size: 32rpx;color: #28C529;flex: 0 0 auto;margin-left: 20rpx;}
+	}
+}
+</style>

+ 201 - 0
qs_zhaoshang/components/zdclue/tbasic.vue

@@ -0,0 +1,201 @@
+<template>
+	<view>
+		<!-- 项目信息 -->
+		<uni-collapse  ref="collapse" v-model="value" >
+			<!--  -->
+			<uni-collapse-item title="项目信息" :show-arrow='false' class='cldelista'   :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">项目信息</view>
+						<view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+							<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+					<!-- 展示的内容 -->
+					<view class="content pdt10" v-if="!value[0]||value[0]!=0">
+						<view class="contenta">
+							<view class="tit">项目名称</view>
+							<view class="txt">{{datainfo.xmmc}}</view>
+						</view>
+						<view class="contenta">
+							<view class="tit">项目单位</view>
+							<view class="txt">{{datainfo.xmdw}}</view>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta">
+						<view class="tit">项目名称</view>
+						<view class="txt">{{datainfo.xmmc}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目单位</view>
+						<view class="txt">{{datainfo.xmdw}}</view>
+					</view>
+					<view class="border"></view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">牵头责任单位</view>
+						<view class="txt">{{datainfo.qtzrdw}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">牵头市领导</view>
+						<view class="txt">{{datainfo.qtsld}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10" style="max-width: 220rpx;">主要建设规模和内容</view>
+						<view class="txt">{{datainfo.gmnr}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">计划开工时间</view>
+						<view class="txt">{{datainfo.jhkgsj}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">项目总投资(万元)</view>
+						<view class="txt">{{datainfo.xmztz}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+			
+			<uni-collapse-item title="资金来源" class='cldelista' :show-arrow='false' :border="false" title-border="none">
+				<template v-slot:title>
+					<view class="flexc contentt">
+						<view class="flex0 f16 fw cofe">资金来源</view>
+						<view  class="flex1 cldelistz" :class="value[0]==1||value[1]==1?'act':''">
+							<view class="cofe f15">{{value[0]==1||value[1]==1?'信息折叠':'信息展开'}}</view>
+							<image :src="upimg" ></image>
+						</view>
+					</view>
+				</template>
+				<view class="content">
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">合计(万元)</view>
+						<view class="txt">{{datainfo.hj}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">上级补助资金(万元)</view>
+						<view class="txt">{{datainfo.sjbz}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">市政财本资金(万元)</view>
+						<view class="txt">{{datainfo.sczbj}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">专项债(万元)</view>
+						<view class="txt">{{datainfo.zxz}}</view>
+					</view>
+					<!-- <view class="contenta flexcj">
+						<view class="tit flex0  mr10">PPP(万元)</view>
+						<view class="txt">{{datainfo.ppp}}</view>
+					</view> -->
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">融资(万元)</view>
+						<view class="txt">{{datainfo.rz}}</view>
+					</view>
+					<view class="contenta flexcj">
+						<view class="tit flex0  mr10">企业自筹(万元)</view>
+						<view class="txt">{{datainfo.qyzc}}</view>
+					</view>
+				</view>
+			</uni-collapse-item>
+		</uni-collapse>
+		<view class='cldelista cldelistb'>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">年度计划完成投资(万元)</view>
+				<view class="txt">{{datainfo.ndjh}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">上级补助资金渠道</view>
+				<view class="txt">{{datainfo.sjbzzjqd}}</view>
+			</view>
+			<view class="contenta flexcj">
+				<view class="tit flex0  mr10">融资渠道</view>
+				<view class="txt">{{datainfo.rzqd}}</view>
+			</view>
+		</view>
+		<view class='cldelista cldelistb'>
+			<view class="contenta">
+				<view class="tit">备注</view>
+				<view class="txt">{{datainfo.remark}}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { selectDictLabel } from '@/utils/common.js';
+	
+	export default{
+		props:{
+			datainfo:{
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+		},
+		data(){
+			return{
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+			}
+		},
+		filters: {
+			kaType(data, list) {
+				return selectDictLabel(list, data);
+			}
+		},
+		methods:{
+			getDown(url){
+				this.$emit('getDown',url)
+			},
+			getYzAdr(data){
+				return selectDictLabel(this.yzadr, data);
+			},
+			getCytype(data){
+				return selectDictLabel(this.cytype, data);
+			},
+			getProject(data){
+				return selectDictLabel(this.projectlist, data);
+			},
+			getBackground(data){
+				return selectDictLabel(this.backgroundlist, data);
+			}
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.cldelista{
+	border-top: 2rpx solid #E5E5E5;
+	// &:last-of-type{border-bottom: none;}
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+			&.act{
+				image{transform: rotate(-180deg);}
+			}
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-bottom: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;
+		.tit{margin-bottom: 0;}
+	}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+</style>

+ 29 - 0
qs_zhaoshang/config.js

@@ -0,0 +1,29 @@
+// 应用全局配置
+module.exports = {
+  // baseUrl: 'https://vue.ruoyi.vip/prod-api',
+  // baseUrl: 'http://192.168.101.245:8010',
+  // baseUrl: 'http://192.168.101.168:8010',
+  baseUrl: 'https://qszs.qs163.cn/prod-api',
+  confirmflag:false,//是否有弹窗
+  // 应用信息
+  appInfo: {
+    // 应用名称
+    name: "ruoyi-app",
+    // 应用版本
+    version: "1.1.0",
+    // 应用logo
+    logo: "/static/logo.png",
+    // 官方网站
+    site_url: "http://ruoyi.vip",
+    // 政策协议
+    agreements: [{
+        title: "隐私政策",
+        url: "https://ruoyi.vip/protocol.html"
+      },
+      {
+        title: "用户服务协议",
+        url: "https://ruoyi.vip/protocol.html"
+      }
+    ]
+  }
+}

+ 20 - 0
qs_zhaoshang/main.js

@@ -0,0 +1,20 @@
+import Vue from 'vue'
+import App from './App'
+import store from './store' // store
+import plugins from './plugins' // plugins
+import './permission' // permission
+Vue.use(plugins)
+
+
+import {toast} from "@/utils/common.js"
+
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+Vue.prototype.$toast=toast;
+App.mpType = 'app'
+
+const app = new Vue({
+  ...App
+})
+
+app.$mount()

+ 267 - 0
qs_zhaoshang/manifest.json

@@ -0,0 +1,267 @@
+{
+    "name" : "招商引资",
+    "appid" : "__UNI__DAD6F71",
+    "description" : "",
+    "versionName" : "1.2.0",
+    "versionCode" : 120,
+    "transformPx" : false,
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueCompiler" : "uni-app",
+        "compatible" : {
+            "ignoreVersion" : true //true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持
+        },
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "modules" : {
+            "Speech" : {},
+            "Camera" : {},
+            "OAuth" : {}
+        },
+        "distribute" : {
+            "android" : {
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SYNC_SETTINGS\"/>"
+                ]
+            },
+            "ios" : {
+                "dSYMs" : false
+            },
+            "icons" : {
+                "android" : {
+                    "xhdpi" : "static/zslogo.png"
+                }
+            },
+            "sdkConfigs" : {
+                "speech" : {
+                    "baidu" : {
+                        "appid" : "30799445",
+                        "apikey" : "MuVtMTc6EHaLbrr38WEhqjml",
+                        "secretkey" : "rPGCiA3L41VwuTCBHkwkmcOt0IPTsi8z"
+                    }
+                },
+                "ad" : {},
+                "oauth" : {}
+            }
+        },
+        "nativePlugins" : {
+            "JG-JCore" : {
+                "JPUSH_APPKEY_ANDROID" : "275af46e0d888270da3cfd1d",
+                "JPUSH_APPKEY_IOS" : "275af46e0d888270da3cfd1d",
+                "JPUSH_CHANNEL_ANDROID" : "275af46e0d888270da3cfd1d",
+                "JPUSH_CHANNEL_IOS" : "275af46e0d888270da3cfd1d",
+                "__plugin_info__" : {
+                    "name" : "极光JCore官方SDK",
+                    "description" : "极光JCore官方SDK HBuilder插件版本",
+                    "platforms" : "Android,iOS",
+                    "url" : "https://ext.dcloud.net.cn/plugin?id=4028",
+                    "android_package_name" : "zs.business.app",
+                    "ios_bundle_id" : "",
+                    "isCloud" : true,
+                    "bought" : 1,
+                    "pid" : "4028",
+                    "parameters" : {
+                        "JPUSH_APPKEY_ANDROID" : {
+                            "des" : "[Android]极光portal配置应用信息时分配的AppKey",
+                            "key" : "275af46e0d888270da3cfd1d",
+                            "value" : ""
+                        },
+                        "JPUSH_APPKEY_IOS" : {
+                            "des" : "[iOS]极光portal配置应用信息时分配的AppKey",
+                            "key" : "JCore:APP_KEY",
+                            "value" : ""
+                        },
+                        "JPUSH_CHANNEL_ANDROID" : {
+                            "des" : "[Android]用于统计分发渠道,不需要可填默认值developer-default",
+                            "key" : "JPUSH_CHANNEL",
+                            "value" : ""
+                        },
+                        "JPUSH_CHANNEL_IOS" : {
+                            "des" : "[iOS]用于统计分发渠道,不需要可填默认值developer-default",
+                            "key" : "JCore:CHANNEL",
+                            "value" : ""
+                        }
+                    }
+                }
+            },
+            "JG-JPush" : {
+                "JPUSH_NIO_APPID" : "",
+                "JPUSH_ADVERTISINGID_IOS" : "",
+                "JPUSH_DEFAULTINITJPUSH_IOS" : "",
+                "JPUSH_GOOGLE_API_KEY" : "",
+                "JPUSH_GOOGLE_APP_ID" : "",
+                "JPUSH_GOOGLE_PROJECT_ID" : "",
+                "JPUSH_GOOGLE_PROJECT_NUMBER" : "",
+                "JPUSH_GOOGLE_STORAGE_BUCKET" : "",
+                "JPUSH_HONOR_APPID" : "",
+                "JPUSH_HUAWEI_APPID" : "",
+                "JPUSH_ISPRODUCTION_IOS" : "",
+                "JPUSH_MEIZU_APPID" : "",
+                "JPUSH_MEIZU_APPKEY" : "",
+                "JPUSH_OPPO_APPID" : "",
+                "JPUSH_OPPO_APPKEY" : "",
+                "JPUSH_OPPO_APPSECRET" : "",
+                "JPUSH_VIVO_APPID" : "",
+                "JPUSH_VIVO_APPKEY" : "",
+                "JPUSH_XIAOMI_APPID" : "",
+                "JPUSH_XIAOMI_APPKEY" : "",
+                "__plugin_info__" : {
+                    "name" : "极光JPush官方SDK",
+                    "description" : "极光JPush官方SDK HBuilder插件版本",
+                    "platforms" : "Android,iOS",
+                    "url" : "https://ext.dcloud.net.cn/plugin?id=4035",
+                    "android_package_name" : "zs.business.app",
+                    "ios_bundle_id" : "",
+                    "isCloud" : true,
+                    "bought" : 1,
+                    "pid" : "4035",
+                    "parameters" : {
+                        "JPUSH_ADVERTISINGID_IOS" : {
+                            "des" : "[iOS]广告标识符(IDFA)如果不需要使用IDFA,可不填",
+                            "key" : "JPush:ADVERTISINGID",
+                            "value" : ""
+                        },
+                        "JPUSH_DEFAULTINITJPUSH_IOS" : {
+                            "des" : "[iOS]是否默认初始化,是填true,不是填false或者不填",
+                            "key" : "JPush:DEFAULTINITJPUSH",
+                            "value" : ""
+                        },
+                        "JPUSH_GOOGLE_API_KEY" : {
+                            "des" : "厂商google api_key,示例:asxa1232",
+                            "key" : "google_api_key",
+                            "value" : ""
+                        },
+                        "JPUSH_GOOGLE_APP_ID" : {
+                            "des" : "厂商google mobilesdk_app_id,示例:12346578",
+                            "key" : "google_app_id",
+                            "value" : ""
+                        },
+                        "JPUSH_GOOGLE_PROJECT_ID" : {
+                            "des" : "厂商google project_id ,示例:12346578",
+                            "key" : "project_id",
+                            "value" : ""
+                        },
+                        "JPUSH_GOOGLE_PROJECT_NUMBER" : {
+                            "des" : "厂商google project_number,示例:12346578",
+                            "key" : "gcm_defaultSenderId",
+                            "value" : ""
+                        },
+                        "JPUSH_GOOGLE_STORAGE_BUCKET" : {
+                            "des" : "厂商google storage_bucket,示例:12346578",
+                            "key" : "google_storage_bucket",
+                            "value" : ""
+                        },
+                        "JPUSH_HONOR_APPID" : {
+                            "des" : "厂商HONOR-appId,示例:12346578",
+                            "key" : "com.hihonor.push.app_id",
+                            "value" : ""
+                        },
+                        "JPUSH_HUAWEI_APPID" : {
+                            "des" : "厂商HUAWEI-appId,示例:appid=12346578",
+                            "key" : "com.huawei.hms.client.appid",
+                            "value" : ""
+                        },
+                        "JPUSH_ISPRODUCTION_IOS" : {
+                            "des" : "[iOS]是否是生产环境,是填true,不是填false或者不填",
+                            "key" : "JPush:ISPRODUCTION",
+                            "value" : ""
+                        },
+                        "JPUSH_MEIZU_APPID" : {
+                            "des" : "厂商MEIZU-appId,示例:MZ-12345678",
+                            "key" : "MEIZU_APPID",
+                            "value" : ""
+                        },
+                        "JPUSH_MEIZU_APPKEY" : {
+                            "des" : "厂商MEIZU-appKey,示例:MZ-12345678",
+                            "key" : "MEIZU_APPKEY",
+                            "value" : ""
+                        },
+                        "JPUSH_OPPO_APPID" : {
+                            "des" : "厂商OPPO-appId,示例:OP-12345678",
+                            "key" : "OPPO_APPID",
+                            "value" : ""
+                        },
+                        "JPUSH_OPPO_APPKEY" : {
+                            "des" : "厂商OPPO-appkey,示例:OP-12345678",
+                            "key" : "OPPO_APPKEY",
+                            "value" : ""
+                        },
+                        "JPUSH_OPPO_APPSECRET" : {
+                            "des" : "厂商OPPO-appSecret,示例:OP-12345678",
+                            "key" : "OPPO_APPSECRET",
+                            "value" : ""
+                        },
+                        "JPUSH_VIVO_APPID" : {
+                            "des" : "厂商VIVO-appId,示例:12345678",
+                            "key" : "com.vivo.push.app_id",
+                            "value" : ""
+                        },
+                        "JPUSH_VIVO_APPKEY" : {
+                            "des" : "厂商VIVO-appkey,示例:12345678",
+                            "key" : "com.vivo.push.api_key",
+                            "value" : ""
+                        },
+                        "JPUSH_XIAOMI_APPID" : {
+                            "des" : "厂商XIAOMI-appId,示例:MI-12345678",
+                            "key" : "XIAOMI_APPID",
+                            "value" : ""
+                        },
+                        "JPUSH_XIAOMI_APPKEY" : {
+                            "des" : "厂商XIAOMI-appKey,示例:MI-12345678",
+                            "key" : "XIAOMI_APPKEY",
+                            "value" : ""
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "quickapp" : {},
+    "mp-weixin" : {
+        "appid" : "wx694b1ba10320b8bc",
+        "setting" : {
+            "urlCheck" : false,
+            "es6" : false,
+            "minified" : true,
+            "postcss" : true
+        },
+        "optimization" : {
+            "subPackages" : true
+        },
+        "usingComponents" : true
+    },
+    "vueVersion" : "2",
+    "h5" : {
+        "template" : "static/index.html",
+        "devServer" : {
+            "port" : 9090,
+            "https" : false
+        },
+        "title" : "RuoYi-App",
+        "router" : {
+            "mode" : "history",
+            "base" : ""
+        }
+    }
+}

+ 19 - 0
qs_zhaoshang/package.json

@@ -0,0 +1,19 @@
+{
+    "id": "ba-tree-picker",
+    "displayName": "ba-tree-picker树形层级选择器(支持单选、多选、父级选择、映射)",
+    "version": "1.2",
+    "description": "树形层级选择器,支持单选、多选、父级选择 、Object对象属性自定义映射、自定义样式等,采用弹窗形式,样式和比例参照uniapp官方的picker和uni-data-picker组件",
+    "keywords": [
+        "选择器",
+        "树形",
+        "层级",
+        "多选",
+        "ba-tree-picker"
+    ],
+    "dcloudext": {
+        "category": [
+            "前端组件",
+            "通用组件"
+        ]
+    }
+}

+ 561 - 0
qs_zhaoshang/pages.json

@@ -0,0 +1,561 @@
+{
+  "pages": [
+	{
+	  "path": "pages/login",
+	  "style": {
+	    "navigationBarTitleText": "登录",
+		  "navigationStyle": "custom"
+	  }
+	},
+	{
+	  "path": "pages/indexs",
+	  "style": {
+	    "navigationBarTitleText": "招商",
+	    "navigationStyle": "custom"
+	  }
+	}, 
+	
+	{
+	  "path": "pages/zdpages/work/zfitems",
+	  "style": {
+	    "navigationBarTitleText": "政府项目",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/xmyjitems",
+	  "style": {
+	    "navigationBarTitleText": "项目预警",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/cqitems",
+	  "style": {
+	    "navigationBarTitleText": "超期项目",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/zdcluedetails",
+	  "style": {
+	    "navigationBarTitleText": "项目详情",
+		"navigationStyle": "custom",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/addreport",
+	  "style": {
+	    "navigationBarTitleText": "新增申报",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/addstage",
+	  "style": {
+	    "navigationBarTitleText": "新增前期工作手续",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/addpoint",
+	  "style": {
+	    "navigationBarTitleText": "添加节点安排",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/addpointfn",
+	  "style": {
+	    "navigationBarTitleText": "非本年节点安排",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/addratelist",
+	  "style": {
+	    "navigationBarTitleText": "汇报进度",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/addrate",
+	  "style": {
+	    "navigationBarTitleText": "汇报进度",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/count/index",
+	  "style": {
+	    "navigationBarTitleText": "统计分析",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/count/qsfinish",
+	  "style": {
+	    "navigationBarTitleText": "全市投资完成情况",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/count/xmproject",
+	  "style": {
+	    "navigationBarTitleText": "项目产业进展",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/count/timeprogress",
+	  "style": {
+	    "navigationBarTitleText": "本月汇报进度",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/shprogress",
+	  "style": {
+	    "navigationBarTitleText": "审核进度",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/ldwritten",
+	  "style": {
+	    "navigationBarTitleText": "领导批示",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/wtitems",
+	  "style": {
+	    "navigationBarTitleText": "问题项目",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/lditems",
+	  "style": {
+	    "navigationBarTitleText": "领导批示",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	{
+	  "path": "pages/zdpages/work/mine",
+	  "style": {
+	    "navigationBarTitleText": "我的",
+		"navigationStyle": "custom",
+	    "h5": {
+	    	"titleNView": false
+	    }
+	  }
+	},
+	
+	
+	
+	
+	
+	 
+	 // {
+	 //   "path": "pages/1",
+	 //   "style": {
+	 //     "navigationBarTitleText": "测试语音"
+	 //   }
+	 // },
+	 // {
+	 //   "path": "pages/seep",
+	 //   "style": {
+	 //     "navigationBarTitleText": "测试语音"
+	 //   }
+	 // },
+	 // {
+	 //   "path": "pages/work/addcluelist",
+	 //   "style": {
+	 //     "navigationBarTitleText": "上报线索",
+	 // 	  "h5": {
+	 // 	  	"titleNView": false
+	 // 	  }
+	 //   }
+	 // }, 
+	 {
+	   "path": "pages/work/addstart",
+	   "style": {
+	     "navigationBarTitleText": "上报开工信息",
+	 	  "h5": {
+	 	  	"titleNView": false
+	 	  }
+	   }
+	 },
+	 {
+	   "path": "pages/center",
+	   "style": {
+	     "navigationBarTitleText": "引荐项目",
+	 	"h5": {
+	 		"titleNView": false
+	 	}
+	   }
+	 },
+	 {
+	   "path": "pages/work/tslist",
+	   "style": {
+	     "navigationBarTitleText": "项目进展",
+	 	  "h5": {
+	 	  	"titleNView": false
+	 	  }
+	   }
+	 },
+	  {
+	    "path": "pages/index",
+	    "style": {
+	      "navigationBarTitleText": "招商",
+	      "navigationStyle": "custom"
+	    }
+	  },
+
+	  
+
+ {
+   "path": "pages/work/addcontract",
+   "style": {
+     "navigationBarTitleText": "上报签约信息",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ },
+ 
+ {
+   "path": "pages/work/addtproduction",
+   "style": {
+     "navigationBarTitleText": "上报投产信息",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ },
+ {
+   "path": "pages/work/addclues",
+   "style": {
+     "navigationBarTitleText": "上报线索",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ 
+ },
+ {
+   "path": "pages/work/count/addkscount",
+   "style": {
+     "navigationBarTitleText": "对接客商",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ 
+ },
+ {
+   "path": "pages/work/count/addzscount",
+   "style": {
+     "navigationBarTitleText": "外出招商",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ 
+ },
+ {
+   "path": "pages/work/count/cluelist",
+   "style": {
+     "navigationBarTitleText": "上报记录",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ 
+ },
+ {
+   "path": "pages/work/count/count",
+   "style": {
+     "navigationBarTitleText": "潜山市招商情况月统计表",
+	 "navigationStyle": "custom",
+ 	  "h5": {
+ 	  	"titleNView": false
+ 	  }
+   }
+ 
+ },
+  {
+    "path": "pages/agreement",
+    "style": {
+      "navigationBarTitleText": "用户协议及隐私条款",
+  	  "h5": {
+  	  	"titleNView": false
+  	  }
+    }
+  
+  },
+  {
+    "path": "pages/work/index",
+    "style": {
+      "navigationBarTitleText": "工作台"
+    }
+  }, {
+    "path": "pages/mine/index",
+    "style": {
+      "navigationBarTitleText": "我的",
+	  "navigationStyle": "custom"
+    }
+}, {
+    "path": "pages/work/skitem",
+    "style": {
+      "navigationBarTitleText": "省库项目",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/skproject/skdetail",
+    "style": {
+      "navigationBarTitleText": "省库详情",
+	  "navigationStyle": "custom",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/skproject/addsk",
+    "style": {
+      "navigationBarTitleText": "新增省库项目",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/skproject/dzjelist",
+    "style": {
+      "navigationBarTitleText": "到位资金情况",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/wtitem",
+    "style": {
+      "navigationBarTitleText": "问题项目",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/zditem",
+    "style": {
+      "navigationBarTitleText": "重大项目",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/lditem",
+    "style": {
+      "navigationBarTitleText": "领导批示",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/ldwritten",
+    "style": {
+      "navigationBarTitleText": "批示列表",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+ }, {
+    "path": "pages/work/xminquiry",
+    "style": {
+      "navigationBarTitleText": "项目预审",
+	  "navigationStyle": "custom",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+ }, {
+    "path": "pages/work/projectprogress",
+    "style": {
+      "navigationBarTitleText": "项目进展",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/cluedetails",
+    "style": {
+      "navigationBarTitleText": "线索详情",
+	  "navigationStyle": "custom",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/yinpages/cluedetails",
+    "style": {
+      "navigationBarTitleText": "线索详情",
+	  "navigationStyle": "custom",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/yinpages/addcontract",
+    "style": {
+      "navigationBarTitleText": "上报签约",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/yinpages/addstart",
+    "style": {
+      "navigationBarTitleText": "上报开工",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/yinpages/addtproduction",
+    "style": {
+      "navigationBarTitleText": "上报投产",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/allitems",
+    "style": {
+      "navigationBarTitleText": "全部项目",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/message",
+    "style": {
+      "navigationBarTitleText": "消息通知",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+}, {
+    "path": "pages/work/idea",
+    "style": {
+      "navigationBarTitleText": "项目督办",
+	  "h5": {
+	  	"titleNView": false
+	  }
+    }
+	}, {
+	    "path": "pages/work/ideadetail",
+	    "style": {
+	      "navigationBarTitleText": "督办修改",
+		  "h5": {
+		  	"titleNView": false
+		  }
+	    }
+	}, {
+	    "path": "pages/work/shprogress",
+	    "style": {
+	      "navigationBarTitleText": "审核进度",
+		  "h5": {
+		  	"titleNView": false
+		  }
+	    }
+  }, {
+    "path": "pages/mine/avatar/index",
+    "style": {
+      "navigationBarTitleText": "修改头像"
+    }
+  }, {
+    "path": "pages/mine/info/index",
+    "style": {
+      "navigationBarTitleText": "账号信息"
+    }
+  }, {
+    "path": "pages/mine/info/edit",
+    "style": {
+      "navigationBarTitleText": "编辑资料"
+    }
+  }, {
+    "path": "pages/mine/pwd/index",
+    "style": {
+      "navigationBarTitleText": "修改密码"
+    }
+  }, {
+    "path": "pages/mine/setting/index",
+    "style": {
+      "navigationBarTitleText": "应用设置"
+    }
+  }, {
+    "path": "pages/mine/help/index",
+    "style": {
+      "navigationBarTitleText": "常见问题"
+    }
+  }, {
+    "path": "pages/mine/about/index",
+    "style": {
+      "navigationBarTitleText": "关于我们"
+    }
+  }, {
+    "path": "pages/common/webview/index",
+    "style": {
+      "navigationBarTitleText": "浏览网页"
+    }
+  }, {
+    "path": "pages/common/textview/index",
+    "style": {
+      "navigationBarTitleText": "浏览文本"
+    }
+  }],
+  "globalStyle": {
+    "navigationBarTextStyle": "black",
+    "navigationBarTitleText": "RuoYi",
+    "navigationBarBackgroundColor": "#FFFFFF"
+  }
+}

+ 61 - 0
qs_zhaoshang/pages/1.vue

@@ -0,0 +1,61 @@
+<template>
+	<view>
+		<button @tap="startRecord">开始录音</button>
+		<button @tap="endRecord">停止录音</button>
+		<button @tap="playVoice">播放录音</button>
+		<button @tap="startRecognize">开始识别</button>
+	</view>
+</template>
+<script>
+	const recorderManager = uni.getRecorderManager();
+	const innerAudioContext = uni.createInnerAudioContext();
+	innerAudioContext.autoplay = true;
+	var _this;
+	
+	export default {
+		data(){
+			return {
+				voicePath : ''
+			}
+		},
+		onLoad() {
+			_this = this;
+			recorderManager.onStop(function(res) {
+				console.log(res)
+				_this.voicePath = res.tempFilePath
+				// 使用uni.uploadFile上传到服务器上,此时是mp3格式
+			});
+		},
+		methods: {
+			startRecord() {
+				console.log('开始录音');
+				recorderManager.start({
+					sampleRate: 16000 // 必须设置是后台设置的参数,不然百度语音识别不了
+				});
+			},
+			endRecord() {
+				console.log('录音结束');
+				_this = this;
+				recorderManager.stop();
+			},
+			playVoice() {
+				console.log('播放录音');
+				if (this.voicePath) {
+					innerAudioContext.src = this.voicePath;
+					innerAudioContext.play();
+				}
+			},
+			startRecognize() {
+				var options = {};
+				options.engine = 'baidu';
+				console.log("开始语音识别:");
+				plus.speech.startRecognize(options, function(s){
+					console.log("识别结果:"+s)
+					plus.speech.stopRecognize();
+				}, function(e){
+					console.log("语音识别失败:"+e.message);
+				});
+			}
+		}
+	}
+</script>

+ 80 - 0
qs_zhaoshang/pages/agreement.vue

@@ -0,0 +1,80 @@
+<template>
+	<view class="agreen">
+		 <view class="tit">用户协议及隐私条款</view>
+		 <view class="txt tn2">尊敬的用户,欢迎使用中新云有限公司提供的服务。在使用前请您阅读如下服务协议,使用本应用即表示您同意接受本协议,本协议产生法律效力,特别涉及免除或者限制中新云有限公司责任的条款,请仔细阅读。如有任何问题,可向中新云有限公司咨询。</view>
+		 <view class="tits">1. 服务条款的确认和接受</view>
+		 <view class="txt tn2">通过访问或使用本应用,表示用户同意接受本协议的所有条件和条款</view>
+		 <view class="tits">2. 服务条款的变更和修改</view>
+		 <view class="txt tn2">中新云有限公司有权在必要时修改服务条款,服务条款一旦发生变更,将会在重要页面上提示修改内容。如果不同意所改动的内容,用户可以放弃获得的本应用信息服务。如果用户继续享用本应用的信息服务,则视为接受服务条款的变更。本应用保留随时修改或中断服务而不需要通知用户的权利。本应用行使修改或中断服务的权利,不需对用户或第三方负责。</view>
+		 <view class="tits">3.用户行为</view>
+		 <view class="txt tn2">中新云有限公司有权对用户使用中新云智APP的情况进行审查和监督,如用户在使用中新云智APP时违反任何以下规定,中新云有限公司或其授权的人有权要求用户改正或直接采取一切必要的措施以减轻用户不当行为造成的影响。</view>
+		 <view class="tits">3.1 用户账号、密码和安全</view>
+		 <view class="txt tn2">用户一旦注册成功,便成为中新云有限公司的合法用户,将得到一个密码和帐号。同时,此账号密码可登录中新云有限公司中新云智APP程序。因此用户应采取合理措施维护其密码和帐号的安全。用户对利用该密码和帐号所进行的一切活动负全部责任;由该等活动所导致的任何损失或损害由用户承担,中新云有限公司不承担任何责任。 用户的密码和帐号遭到未授权的使用或发生其他任何安全问题,用户可以立即通知中新云有限公司,中新云有限公司有权予以关闭并注销其内容。</view>
+		 <view class="tits">3.2 账号注册时的禁止行为</view>
+		 <view class="txt">(1)冒充任何人或机构,或以虚伪不实的方式谎称或使人误认为与任何人或任何机构有关的名称;</view>
+		 <view class="txt">(2)请勿注册不文明、不健康名字,或包含歧视、侮辱、猥亵类词语的名字;</view>
+		 <view class="txt">(3)请勿注册易产生歧义、引起他人误解的名字;</view>
+		 <view class="tits">3.3 用户在本应用上不得发布下列违法信息和照片:</view>
+		 <view class="txt">(1)反对宪法所确定的基本原则的;</view>
+		 <view class="txt">(2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;</view>
+		 <view class="txt">(3)损害国家荣誉和利益的;</view>
+		 <view class="txt">(4)煽动民族仇恨、民族歧视,破坏民族团结的;</view>
+		 <view class="txt">(5)破坏国家宗教政策,宣扬邪教和封建迷信的;</view>
+		 <view class="txt">(6)散布谣言,扰乱社会秩序,破坏社会稳定的;</view>
+		 <view class="txt">(7)散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;</view>
+		 <view class="txt">(8)侮辱或者诽谤他人,侵害他人合法权益的;</view>
+		 <view class="txt">(9)含有法律、行政法规禁止的其他内容的;</view>
+		 <view class="txt">(10)禁止骚扰、毁谤、威胁、仿冒网站其他用户;</view>
+		 <view class="txt">(11)严禁煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;</view>
+		 <view class="txt">(12)严禁发布可能会妨害第三方权益的文件或者信息,例如(包括但不限于):病毒代码、黑客程序、软件破解注册信息。</view>
+		 <view class="txt">(13)禁止上传他人作品。其中包括你从互联网上下载、截图或收集的他人的作品;</view>
+		 <view class="txt">(14)禁止上传广告、横幅、标志等网络图片;</view>
+		 <view class="tits">3.4 账号盗用</view>
+		 <view class="txt tn2">盗取他人用户账号或利用网络通讯骚扰他人,均属于非法行为。用户不得采用测试、欺骗等任何非法手段,盗取其他用户的账号和对他人进行骚扰。</view>
+		 
+		  <view class="tit">隐私条款</view>
+		 <view class="tits">1.用户信息公开情况说明</view>
+		 <view class="txt tn2">尊重用户个人隐私是中新云有限公司的一项基本政策。所以,中新云有限公司不会在未经合法用户授权时公开、编辑或透露其注册资料及保存在本应用中的非公开内容,除非有下列情况:</view>
+		 <view class="txt">(1)有关法律规定或中新云有限公司合法服务程序规定;</view>
+		 <view class="txt">(2)在紧急情况下,为维护用户及公众的权益;</view>
+		 <view class="txt">(3)为维护中新云有限公司的商标权、专利权及其他任何合法权益;</view>
+		 <view class="txt">(4)其他需要公开、编辑或透露个人信息的情况;</view>
+		 <view class="txt tn2">在以下(包括但不限于)几种情况下,中新云有限公司有权使用用户的个人信息:</view>
+		 <view class="txt">(1)在进行促销或抽奖时,中新云有限公司可能会与赞助商共享用户的个人信息,在这些情况下中新云有限公司会在发送用户信息之前进行提示,并且用户可以通过不参与来终止传送过程;</view>
+		 <view class="txt">(2)中新云有限公司可以将用户信息与第三方数据匹配;</view>
+		 <view class="txt">(3)中新云有限公司会通过透露合计用户统计数据,向未来的合作伙伴、广告商及其他第三方以及为了其他合法目的而描述中新云有限公司的服务;</view>
+
+		 <view class="tits">2.隐私权政策适用范围</view>
+		 <view class="txt">(1)用户在登录本应用服务器时留下的个人身份信息;</view>
+		 <view class="txt">(2)用户通过本应用服务器与其他用户或非用户之间传送的各种资讯;</view>
+		 <view class="txt">(3)本应用与商业伙伴共享的其他用户或非用户的各种信息;</view>
+		 <view class="tits">3.资讯公开与共享</view>
+		 <view class="txt tn2">中新云有限公司不会将用户的个人信息和资讯故意透露、出租或出售给任何第三方。但以下情况除外:</view>
+		 <view class="txt">(1)用户本人同意与第三方共享信息和资讯;</view>
+		 <view class="txt">(2)只有透露用户的个人信息和资讯,才能提供用户所要求的某种产品和服务;</view>
+		 <view class="txt">(3)应代表本应用提供产品或服务的主体的要求提供(除非我们另行通知,否则该等主体无权将相关用户个人信息和资讯用于提供产品和服务之外的其他用途):根据法律法规或行政命令的要求提供;因外部审计需要而提供;用户违反了本应用服务条款或任何其他产品及服务的使用规定;经本站评估,用户的帐户存在风险,需要加以保护。</view>
+		 <view class="tits">4.账户删除申请</view>
+		 <view class="txt tn2">用户有权在任何时候编辑用户在中新云有限公司的帐户信息和资讯,用户也可以填写相关申请表格,要求删除个人帐户,但是用户无条件同意在你的帐户删除后,该帐户内及与该帐户相关的信息和资讯仍然保留在本网站档案记录中,除上述第三条规定的情况外,中新云有限公司将为用户保密。</view>
+		 
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+.agreen{padding: 40rpx 32rpx;box-sizing: border-box;background-color: #ffffff;}
+	.tit{font-size: 40rpx;color: #333333;font-weight: bold;text-align: center;margin-bottom: 36rpx;}
+	.tits{font-size: 32rpx;color: #333333;font-weight: 500;line-height: 68rpx;}
+	.txt{font-size: 30rpx;color: #343434;text-indent: 2em;margin-bottom: 20rpx;
+	&.tn2{text-indent: 0;}
+	}
+	
+</style>

+ 192 - 0
qs_zhaoshang/pages/center.vue

@@ -0,0 +1,192 @@
+<template>
+	<view class="allpage">
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch' :name="name"></tab-searchone>
+			<time-year @bindDateChange="bindDateChange" ></time-year>
+		</view>
+		<view class="zhanline"></view>
+		<view class="alllist">
+			
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt='wtdt' @getDetail='goDetail'></project-list>
+			
+		</view>
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="titflag"></view>
+		<!-- 弹窗 -->
+		<view class="fixedbox" v-if="titflag">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top">温馨提示</view>
+			<view class="boxs">
+				<view class="c34 f16 fw">引荐单位可在此模块查看/操作项目信息及项目进展情况。</view>
+			</view>
+			<view class="fixedbtn" @click="getClose">我知道了</view>
+		</view>
+		<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getsbbzblistYz} from '@/api/work/clue.js'
+	import footers from '@/components/footer/footer.vue'
+	export default{
+		data(){
+			return{
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				itemslist:[],
+				wtdt:'',
+				tabidx:0,
+				date:'',
+				list:[],
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				census:'',
+				deptId:this.$store.state.user.deptId,
+				closeimg:require('@/static/images/close.png'),
+				titflag:true,
+				footlist:[
+					{module:'home',title:'首页',icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
+					{module:'center',title:'引荐项目',icon_checked:require('@/static/images/tabbar/cen_.png'),icon_nochecked:require('@/static/images/tabbar/cen.png')},
+					{module:'mine',title:'我的',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
+					],
+				 footerindex:'center',
+				 showfooter: 0,
+				 isfootflag:true,
+				 color_checked :'343434',
+				 color_nochecked :'666666',
+			}
+		},
+		components:{
+			projectList,tabSearchone,timeYear,footers
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad(e) {
+			if(e.xmmc){
+				this.name=e.xmmc;
+			}
+			let date = new Date();
+			let y = date.getFullYear();
+			this.beginTime=y+'0101';
+			this.endTime=y+'1231';
+			this.getDataFn();
+			uni.$on('refreshdatalist',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			getClose(){
+				this.titflag=false
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmxsmc:this.name,
+					deptId:this.$store.state.user.deptId
+				}
+				params['params[beginTime]']=this.beginTime
+				params['params[endTime]']=this.endTime
+				getsbbzblistYz(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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			},
+			bindDateChange(e){
+				this.year=e;
+				this.beginTime=e+'0101';
+				this.endTime=e+'1231';
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				this.$tab.navigateTo('/pages/work/yinpages/cluedetails?id='+e.id)
+				 // this.$tab.navigateTo('/pages/work/cluedetails?id='+e+"&tabidx="+this.tabidx)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding:190rpx 0 0rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+ .alllist{padding-top:10rpx ;}
+  // 操作按钮
+  .cluebtn{
+  	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;
+  	&.btn1{background-color: #1FB9F7;flex: 1;}
+  	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+.fixedbox{
+	height: 480rpx;box-sizing: border-box;
+	.boxs{padding: 90rpx 0 70rpx;}
+	.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+	border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+		&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+  
+
+</style>

+ 43 - 0
qs_zhaoshang/pages/common/textview/index.vue

@@ -0,0 +1,43 @@
+<template>
+  <view>
+    <uni-card class="view-title" :title="title">
+      <text class="uni-body view-content">{{ content }}</text>
+    </uni-card>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        title: '',
+        content: ''
+      }
+    },
+    onLoad(options) {
+      this.title = options.title
+      this.content = options.content
+      uni.setNavigationBarTitle({
+        title: options.title
+      })
+    }
+  }
+</script>
+
+<style scoped>
+  page {
+    background-color: #ffffff;
+  }
+
+  .view-title {
+    font-weight: bold;
+  }
+
+  .view-content {
+    font-size: 26rpx;
+    padding: 12px 5px 0;
+    color: #333;
+    line-height: 24px;
+    font-weight: normal;
+  }
+</style>

+ 34 - 0
qs_zhaoshang/pages/common/webview/index.vue

@@ -0,0 +1,34 @@
+<template>
+  <view v-if="params.url">
+    <web-view :webview-styles="webviewStyles" :src="`${params.url}`"></web-view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        params: {},
+        webviewStyles: {
+          progress: {
+            color: "#FF3333"
+          }
+        }
+      }
+    },
+    props: {
+      src: {
+        type: [String],
+        default: null
+      }
+    },
+    onLoad(event) {
+      this.params = event
+      if (event.title) {
+        uni.setNavigationBarTitle({
+          title: event.title
+        })
+      }
+    }
+  }
+</script>

+ 431 - 0
qs_zhaoshang/pages/index.vue

@@ -0,0 +1,431 @@
+<template>
+  <view class="content">
+	  <!-- 搜索 -->
+	  <tab-search :leftwith="checkPermi(['system:check:app'])?'80':'0'" :rightwith="checkPermi(['system:notice:list'])?'90':'0'" @clickLeft='clickLeft' @clickRight='clickRight' :noticenum="noticenum" @getSearch='getSearch'></tab-search>
+
+	 <!-- banner -->
+	 <block v-if="bannerlist.length">
+		  <banner :bannerlist="bannerlist"></banner>
+	 </block>
+	
+
+	<!-- <view class="home_tz" @click="getMessage" v-if="noticenum">
+		 <image :src="tzimg"></image>
+		 <view class="c34 f15 f500 over flex1">当前收到{{noticenum}}条消息,点击查看详情…</view>
+		 <view class="f15 c6 ml4 flex0">02-21</view>
+	 </view> -->
+	 <view class="home_tz" @click="getDuFn" v-if="checkPermi(['projectV2:dbd:list'])">
+	 	 <image :src="tzimg"></image>
+	 	 <view class="c34 f15 f500 over flex1">当前收到{{dunoticenum}}条督办事项,点击查看详情…</view>
+	 	 <view class="f15 c6 ml4 flex0">{{currentdate}}</view>
+	  </view>
+	 <!-- 模块 -->
+	 <view>
+		 <view class="flexc allpage_zd">
+		 	<!-- <view class="allpage_zdl">共计<text>{{total||0}}</text>个</view> -->
+		 	<time-year @bindDateChange="bindDateChange" fields='year' textAlign='right' timetxt='选择年份'></time-year>
+			<view class="allpage_zdl">按年份统计,默认本年度</view>
+		 </view>
+		<view class="homelist">
+			<view class="list" @click="handleToAll(1)" v-if="checkPermi(['projectV2:sbbzb:list'])">
+				<image :src="homeaimg"></image>
+				<view class="tit">项目线索</view>
+				<view class="txt co1">{{census.st}}</view>
+				
+			</view>
+			<view class="list" @click="handleToAll(2)" v-if="checkPermi(['projectV2:sbbzb:list'])">
+				<image :src="homebimg"></image>
+				<view class="tit">项目签约</view>
+				<view class="txt co2">{{census.qy}}</view>
+			</view>
+			<view class="list" @click="handleToAll(3)" v-if="checkPermi(['projectV2:sbbzb:list'])">
+				<image :src="homecimg"></image>
+				<view class="tit">项目开工</view>
+				<view class="txt co3">{{census.kg}}</view>
+			</view>
+			<view class="list" @click="handleToAll(4)" v-if="checkPermi(['projectV2:sbbzb:list'])">
+				<image :src="homedimg"></image>
+				<view class="tit">项目投产</view>
+				<view class="txt co4">{{census.tc}}</view>
+			</view>
+			<view class="list" @click="handleTosk" v-if="checkPermi(['projectV2:skxm:list'])">
+				<image :src="homeeimg"></image>
+				<view class="tit">省库项目</view>
+				<view class="txt co2">{{census.sk}}</view>
+			</view>
+			<view class="list" @click="handleTowt" v-if="checkPermi(['projectV2:shyj:list'])">
+				<image :src="homefimg"></image>
+				<view class="tit">问题项目</view>
+				<view class="txt co3">{{census.wt}}</view>
+				<!-- <view class="list_not">2</view> -->
+			</view>
+			<view class="list" @click="handleTold" v-if="checkPermi(['projectV2:sbbzb:ldps:list'])">
+				<image :src="homegimg"></image>
+				<view class="tit">领导批示</view>
+				<view class="txt co4">{{census.ps}}</view>
+				<!-- <view class="list_not">99+</view> -->
+			</view>
+			<!--  -->
+			<view class="list" @click="handleToAll(0)" v-if="checkPermi(['projectV2:sbbzb:list'])">
+				<image :src="homehimg"></image>
+				<view class="tit">全部项目</view>
+				<view class="txt co1">{{census.all}}</view>
+			</view>
+		</view> 
+	 </view>
+	 <!-- 统计表 -->
+	<view class="cont_box " @click="getContFn" v-if="checkPermi(['system:qktj:show'])">
+		 <image :src="centimg" class="climg"></image>
+		 <view class="flex1 f16 c64 fw">潜山市招商情况月统计</view>
+		 <image :src="rimg" class="crimg"></image>
+	 </view>
+	<!-- 重大项目 -->
+	<view>
+		<view class="home_more" v-if="checkPermi(['projectV2:sbbzb:list'])">
+			<view class="flexc pdlr14 pdtb8" @click="handleTozd">
+				<view class="tit">重大项目</view>
+				<view class='flexc home_morer'>查看更多
+					<image :src="mrimg"></image>
+				</view>
+			</view>
+			<project-list :datalist="list" @getDetail='goDetail'></project-list>
+			<view class="shax" v-if="list.length" @click="handleTozd">查看更多</view>
+		</view>
+		<!-- 列表 -->
+	</view>
+	<!-- <voice v-if='voiceflag' @closePopup='closePopup' @voiceResult='voiceResult'></voice> -->
+	<!-- <block v-if="showfooter == 1"> -->
+		<!-- <footers v-if="isfootflag"   :footerindex="footerindex" :isHomeIndex="true"></footers> -->
+		<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
+	<!-- </block> -->
+	<!-- 弹窗 -->
+	<!-- 弹窗 -->
+	<view class="bgbox" v-if="tsflag"></view>
+	<!-- 弹窗 -->
+	<view class="fixedbox" v-if="tsflag">
+		<!-- <image :src="closeimg" class="choseimg" @click="getClose"></image> -->
+		<view class="top">温馨提示</view>
+		<view class="boxs">
+			<view class="c34 f16 fw">您有15天未填写签约信息的记录信息,请填写</view>
+		</view>
+		<view class="fixedbtn" @click="getKnow">去查看</view>
+	</view>
+  </view>
+</template>
+
+<script>
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import tabSearch from "@/components/toptab/search.vue"
+	import banner from "@/components/toptab/banner.vue"
+	import projectList from "@/components/projectlist/list.vue"
+	import {getBannerlist,getNoticenumber,getCommonCensus,getdbdnumber} from "@/api/work/index.js"
+	import { getsbbzblist,gettslist} from '@/api/work/clue.js'
+	import footers from '@/components/footer/footer.vue'
+
+	// import voice from "@/pages/seep.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  export default {
+	  data(){
+		  return{
+			  tzimg:require('@/static/images/index/tzicon.png'),
+			  homeaimg:require('@/static/images/index/homea.png'),
+			  homebimg:require('@/static/images/index/homeb.png'),
+			  homecimg:require('@/static/images/index/homec.png'),
+			  homedimg:require('@/static/images/index/homed.png'),
+			  homeeimg:require('@/static/images/index/homee.png'),
+			  homefimg:require('@/static/images/index/homef.png'),
+			  homegimg:require('@/static/images/index/homeg.png'),
+			  homehimg:require('@/static/images/index/homeh.png'),
+			  mrimg:require("@/static/images/index/mrore.png") ,
+			  closeimg:require('@/static/images/close.png'),
+			  rimg:require('@/static/images/mine/rimg.png'),
+			  centimg:require("@/static/images/index/centicon.png"),
+			  list:[],
+			  bannerlist:[],
+			  noticenum:0,
+			  census:{},//统计
+			 footlist:[
+			 	{module:'home',title:'首页',icon_checked:require('@/static/images/tabbar/home_.png'),icon_nochecked:require('@/static/images/tabbar/home.png')},
+				{module:'center',title:'引荐项目',icon_checked:require('@/static/images/tabbar/cen_.png'),icon_nochecked:require('@/static/images/tabbar/cen.png')},
+			 	{module:'mine',title:'我的',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
+			 	],
+			  footerindex:'home',
+			  showfooter: 0,
+			  isfootflag:true,
+			  color_checked :'343434',
+			  color_nochecked :'666666',
+			  dunoticenum:0,
+			  voiceflag:false,
+			  deptId:'',
+			  tsflag:false,
+			  currentdate:'',
+		  }
+	  },
+	  components:{tabSearch,banner,projectList,footers,timeYear},
+	  onUnload(){
+	  	uni.$off('refreshdatalist')
+	  },
+	  onLoad() {
+		  this.deptId=this.$store.state.user.deptId;
+		  // 判断有无切换权限
+		  
+		  this.currentdate = this.getNowFormatDate();
+		this.init()
+		uni.$on('refreshdatalist',(e) => {
+			this.list=[];
+			if(checkPermi(['projectV2:sbbzb:list'])){
+				this.getsbbzblist()
+			}
+			if(e&&e=='ldps'){
+				
+			}else if(e&&e=='duban'){
+				this.getdbdnumber();
+			}else{
+				this.getCommonCensus();
+				this.getdbdnumber();
+			}
+		})
+	  },
+	  onShow() {
+	  	this.gettslist()
+	  },
+	  methods:{
+		  checkPermi, checkRole,
+		  getNowFormatDate(){
+		  	let date = new Date();
+		  	let y = date.getFullYear();
+		  	let m = date.getMonth() + 1;
+		  	m = m < 10 ? "0" + m : m;
+		  	let d = date.getDate();
+		  	d = d < 10 ? "0" + d : d;
+			this.time=y;
+		  	const timeday = m + "-" + d;
+		  	return timeday;
+		  },
+		  bindDateChange(e){
+		  	this.time=e;
+		  	// var timestr=e.split('-');
+		  	// this.year=timestr[0];
+		  	// this.month=timestr[1];
+		  	// this.reachflag=true;
+		  	// this.pageNum=1;
+		  	// this.list=[];
+		  	this.getCommonCensus();
+			if(checkPermi(['projectV2:sbbzb:list'])){
+				this.list=[];
+				this.getsbbzblist()
+			}
+		  },
+		  gettslist(){
+		  	gettslist().then(res=>{
+		  		if(res.code==200){
+		  			if(res.rows&&res.rows.length){
+						this.tsflag=true;
+		  			}else{
+						this.tsflag=false;
+					}								
+		  		}else{
+		  			this.$toast(res.msg)
+		  		}
+		  	})
+		  },
+		  getKnow(){
+			  this.$tab.navigateTo('/pages/work/tslist')
+		  },
+		  init(){
+			  
+			this.getNoticenumber()
+		  	this.getBanList()
+			this.getCommonCensus()
+			if(checkPermi(['projectV2:sbbzb:list'])){
+				this.getsbbzblist()
+			}
+			
+			this.getdbdnumber()
+		  },
+		  //左侧点击
+		  clickLeft(){
+			  if(checkPermi(['system:check:app'])){
+			  	this.$tab.reLaunch('/pages/indexs')
+			  }
+			  // this.voiceflag=true;
+			  // this.$refs.voice.show()
+		  	 
+		  },
+		  //右侧点击
+		  clickRight(e){
+			 if(checkPermi(['system:notice:list'])){
+			 	this.$tab.navigateTo('/pages/work/message')
+			 } 
+		  	
+		  },
+		  getMessage(){
+		  	if(checkPermi(['system:notice:list'])){
+		  		this.$tab.navigateTo('/pages/work/message')
+		  	} 
+		  },
+		  getContFn(){
+			 this.$tab.navigateTo('/pages/work/count/count') 
+		  },
+		  closePopup(){
+			  
+		  },
+		  voiceResult(){
+			   this.voiceflag=false;
+			  this.$refs.voice.hide();
+			  this.$refs.voice.afterHide()
+			  let params={
+				  ...this.searchTabObj,
+				  voice:true,
+				  data:data
+			  }
+		  },
+		  getdbdnumber(){
+			  var params={
+				  deptId:this.deptId,
+				  isHf: 'N',
+			  }
+			  getdbdnumber(params).then(res=>{
+			  	if(res.code==200){
+					this.dunoticenum=res.data
+			  	}else{
+			  		this.$toast(res.msg)
+			  	}
+			  })
+		  },
+		  getNoticenumber(){
+			  var params={
+			  	deptId:this.deptId
+			  }
+			  getNoticenumber(params).then(res=>{
+			  	if(res.code==200){
+			  		this.noticenum=Number(res.data)
+			  	}else{
+			  		this.$toast(res.msg)
+			  	}
+			  })
+		  },
+		  getBanList(){
+			  var params={
+			  	deptId:this.deptId
+			  }
+		  	getBannerlist(params).then(res=>{
+				if(res.code==200){
+					this.bannerlist=res.rows
+				}else{
+					this.$toast(res.msg)
+				}
+		  	})
+		  },
+		  getCommonCensus(){
+			  var objs={
+				  params:{
+					  year:this.time
+				  }
+			  }
+			  getCommonCensus(objs).then(res=>{
+			  	if(res.code==200){
+			  		this.census=res.data
+			  	}else{
+			  		this.$toast(res.msg)
+			  	}
+			  })
+		  },
+		  //重大项目
+		  getsbbzblist(){
+			  var params={
+			  	pageSize:5,
+			  	pageNum: 1,
+				sfwlhxxxm:'Y',
+				deptId:this.deptId,
+			  }
+			  params['params[beginTime]']=this.time+'0101';
+			  params['params[endTime]']=this.time+'1231';
+			 getsbbzblist(params).then(res=>{
+			 	if(res.code==200){
+			 		this.list = res.rows;
+			 	}else{
+			 		this.$toast(res.msg)
+			 	}
+			 }) 
+		  },
+		 
+		  
+		  // 督办
+		  getDuFn(){
+		  	this.$tab.navigateTo('/pages/work/idea')
+		  },
+		  getSearch(data){
+			   this.$tab.navigateTo('/pages/work/allitems?idx=0&xmmc='+data)
+		  },
+		  handleToAll(idx){
+			this.$tab.navigateTo('/pages/work/allitems?idx='+idx+'&time='+this.time)
+		  },
+		  handleTosk(){
+			  this.$tab.navigateTo('/pages/work/skitem?time='+this.time)
+		  },
+		  handleTowt(){
+		  	this.$tab.navigateTo('/pages/work/wtitem?time='+this.time)
+		  },
+		  handleTold(){
+		  	 this.$tab.navigateTo('/pages/work/lditem?time='+this.time)
+		  },
+		  handleTozd(){
+		  	 this.$tab.navigateTo('/pages/work/zditem?time='+this.time)
+		  },
+		  goDetail(e){
+			  this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
+		  }
+	  },
+  }
+</script>
+
+<style lang="scss" scoped>
+.content{min-height: 100vh;background-color: #ffffff;}
+.home_tz{display: flex;align-items: center;padding: 0 28rpx;height: 80rpx;background: #FFE9D5;
+	image{width: 66rpx;height: 30rpx;margin-right: 24rpx;flex: 0 0 auto;}
+}
+
+.homelist{display: flex;flex-wrap: wrap;padding: 40rpx 20rpx;
+	.list{width: 25%;display: flex;flex-direction: column;align-items: center;padding: 20rpx 0;position: relative;
+	.list_not{    position: absolute; background: #F63030;color: #ffffff;font-size: 18rpx;left: 50%;top: 24rpx;border-radius: 50%;min-width: 40rpx;height: 40rpx;text-align: center;padding: 0 4rpx;box-sizing: border-box;line-height: 40rpx;margin-left: 30rpx;}
+	image{width: 108rpx;height: 108rpx;margin-bottom: 20rpx;}
+	.tit{font-size: 30rpx;font-weight: bold;
+color: #444444;margin-bottom: 12rpx;}
+	.txt{font-size: 30rpx;font-weight: bold;
+	&.co1{color: #F84E57;}
+	&.co2{color: #26C240;}
+	&.co3{color: #F74E32;}
+	&.co4{color: #3C9BCD;}
+	}
+	}
+}
+.home_more{padding-top: 20rpx;
+	.tit{font-size: 32rpx;font-weight: bold;color: #343434;position: relative;padding-left: 22rpx;flex: 0 0 auto;
+	&::before{content: '';width: 8rpx;height: 40rpx;position: absolute;left: 0;top: 50%;margin-top: -20rpx;background-color: #FC7300;}
+	}
+	.home_morer{flex: 1;display: flex;align-items: center;justify-content: flex-end;
+		view{font-size: 30rpx;color: #AAAAAA;font-weight: 500;}
+		image{width: 24rpx;height: 24rpx;margin-left: 14rpx;}
+	}
+}
+
+.fixedbox{
+	height: 480rpx;box-sizing: border-box;z-index: 3000;
+	.boxs{padding: 90rpx 0 70rpx;}
+	.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+	border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+		&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+.bgbox{z-index:2000;}
+.cont_box{width: 706rpx;height: 100rpx;background: #EDF5FF;border-radius: 10rpx;margin: 0 auto 80rpx;padding: 0 40rpx;box-sizing: border-box;display: flex;align-items: center;
+	.climg{width: 68rpx;height: 60rpx;margin-right: 28rpx;flex: 0 0 auto;}
+	.crimg{width: 16rpx;height: 26rpx;flex: 0 0 auto;}
+}
+ .allpage_zd{background-color:#F2F2F2;padding: 0 28rpx;justify-content: space-between;
+	.allpage_zdl{font-size: 24rpx;font-weight: 500;color: #666666;
+	text{font-weight: bold;color: #FE5706;margin: 0 8rpx;}
+	}
+}
+</style>

+ 552 - 0
qs_zhaoshang/pages/indexs.vue

@@ -0,0 +1,552 @@
+<template>
+  <view class="content">
+	 <view class="ceheigh">
+		<!-- 搜索 @getSearch='getSearch' @clickRight='clickRight'-->
+		  <tab-search :leftwith="checkPermi(['system:check:app'])?'80':'0'" :rightwith="checkPermi(['system:notice:list'])?'90':'0'" @clickLeft='clickLeft' @clickRight='clickRight' :noticenum="noticenum" @getSearch='getSearch'></tab-search>
+	
+		 <!-- banner -->
+		 <block v-if="bannerlist.length">
+			  <banner :bannerlist="bannerlist" :currentdate="currentdate" type="zhong"></banner>
+		 </block>
+		
+		<!-- @click="getMessage" -->
+		<view class="home_tz"  v-if="noticenum">
+			 <image :src="tzimg"></image>
+			 <view class="c34 f15 f500 over flex1">您有1条预警项目未读,请前往查看详情…</view>
+			 <view class="f15 c6 ml4 flex0">{{currentdate}}</view>
+		 </view>
+		 <!-- 模块 -->
+		<view class="homelist">
+			<!--  -->
+			<view class="list" v-if="checkPermi(['fgw:xmsb:list'])" @click="handleTozf(0)" >
+				<image :src="homeaimg"></image>
+				<view class="tit">政府项目</view>
+				<view class="txt co4">{{census.zfxm||0}}</view>
+				
+			</view>
+			
+			<view class="list" @click="handleToZsFn" v-if="checkPermi(['projectV2:sbbzb:list'])">
+				<image :src="homebimg"></image>
+				<view class="tit">招商项目</view>
+				<view class="txt co2">{{census.zsxm||0}}</view>
+			</view>
+			<view class="list" @click="handleToWtFn" v-if="checkPermi(['fgw:xmsb:list'])">
+				<image :src="homecimg"></image>
+				<view class="tit">问题项目</view>
+				<view class="txt co3">{{census.wtxm||0}}</view>
+			</view>
+			<view class="list" v-if="checkPermi(['fgw:xmsb:list'])" @click="handleTozf(1)" >
+				<image :src="homeeimg"></image>
+				<view class="tit">申报库</view>
+				<view class="txt co3">{{census.sbxm||0}}</view>
+			</view>
+			<view class="list" v-if="checkPermi(['fgw:xmsb:list'])" @click="handleTozf(2)" >
+				<image :src="homefimg"></image>
+				<view class="tit">项目库</view>
+				<view class="txt co3">{{census.xmk||0}}</view>
+			</view>
+			<view class="list" @click="handleTold" v-if="checkPermi(['fgw:xmsb:ldps:list'])">
+				<image :src="homegimg"></image>
+				<view class="tit">领导批示</view>
+				<view class="txt co3">{{census.psxm||0}}</view>
+			</view>
+			<view class="list" v-if="checkPermi(['fgw:xmsb:xmyj:list'])" @click="handleToxmyj">
+				<image :src="homedimg"></image>
+				<view class="tit">项目预警</view>
+				<view class="txt co1">{{census.yjxm||0}}</view>
+			</view>
+			<!-- 超期项目 -->
+			<view class="list" v-if="checkPermi(['fgw:xmsb:cqxm:list'])" @click="handleTocqxm">
+				<image :src="homehimg"></image>
+				<view class="tit">超期项目</view>
+				<view class="txt co1">{{census.cqxm||0}}</view>
+			</view>
+		</view> 
+		<!-- <view class="home_sta flexc">
+			<view>已报市局待审(<text>1</text>)</view>
+			<view>涉林地项目(0)</view>
+			<view>已批复(<text>1</text>)</view>
+			<view class="bga">更多
+				<image :src="morerimg"></image>
+			</view>
+		</view> -->
+		<view class="zhanline"></view>
+		<view class="home_nums" v-if="checkPermi(['fgw:common:sbAndJdNum'])">
+			<view class="home_num">
+				<view class="list">
+					<view class="num co4">{{jdcensus.xmzs}}</view>
+					<view class="tit">项目总数</view>
+				</view>
+				<view class="list">
+					<view class="num co2">{{jdcensus.zcxm}}</view>
+					<view class="tit">正常项目</view>
+				</view>
+				<view class="list">
+					<view class="num co1">{{jdcensus.cqjdxm}}</view>
+					<view class="tit">有超期节点项目</view>
+				</view>
+				<view class="list">
+					<view class="num co3">{{jdcensus.yzzhxm}}</view>
+					<view class="tit">有严重滞后节点项目</view>
+				</view>
+				<view class="list">
+					<view class="num co2">{{jdcensus.jdzs}}</view>
+					<view class="tit">节点安排总数</view>
+				</view>
+				<view class="list">
+					<view class="num co4">{{jdcensus.zcjd}}</view>
+					<view class="tit">正常节点</view>
+				</view>
+				<view class="list">
+					<view class="num co1">{{jdcensus.cqjd}}</view>
+					<view class="tit">超期节点</view>
+				</view>
+				<view class="list">
+					<view class="num co3">{{jdcensus.yzzhjd}}</view>
+					<view class="tit">严重滞后节点</view>
+				</view>
+			</view>
+			<!-- <view class="home_tit">*严重滞后指超期后承诺时间内仍未完成</view> -->
+		</view>
+		<view class="zhanline"></view>
+	 </view>
+	<!-- 超期节点公示 -->
+	<view v-if="checkPermi(['fgw:common:zrdwCqNum'])">
+		<!-- home_morefixed -->
+		<view class="home_more" :class="moreflag?'home_morefixed':''">
+			<view class="flexc pdlr14 pdtb8" @click="handleTozd">
+				<view class="tit">超期节点公示</view>
+			</view>
+			<view class="tablebox">
+				<table border='0' class='table'>
+					<thead class='thead'> 
+						<tr class="tr_one">  
+							<th style="width: 230rpx;">责任单位</th>
+							<th style="width: 160rpx;">节点安排总数</th>
+							<!-- <th style="width: 120rpx;">今年到期</th> -->
+							<th style="width: 150rpx;">超期节点</th>
+							<th style="width: 160rpx;">严重滞后节点</th>
+							<!-- <th style="width: 80rpx;">累计扣分</th> -->
+						</tr>
+					</thead>
+					
+					<tbody class="tbody" v-if="list.length>0">
+						<tr v-for="(item,index) in list" :key="index">
+							<td style="width: 230rpx;" >{{item.name}}</td>
+							<td style="width: 160rpx;" class='co2'>{{item.jdzs}}</td>
+							<!-- <td style="width: 120rpx;" class='co2'>{{item.a}}10</td> -->
+							<td style="width: 150rpx;" class='co1'>{{item.cqjd}}</td>
+							<td style="width: 160rpx;" class='co1'>{{item.yazhjd}}</td>
+							<!-- <td style="width: 80rpx;" class='co1'>{{item.a}}10</td> -->
+						</tr>
+						<!-- <div class="shax" v-if="list.length>0">
+							{{wtdt}}
+						</div>
+						<div class="shax" v-else><span>暂无数据</span></div> -->
+						<!-- 查看更多 -->
+						<view class="listmore" v-if="list.length>3&&!moreflag" @click="getMore">
+							查看更多
+							<image :src="moredimg"></image>
+						</view>
+						
+					</tbody>
+					<div class="shax" v-else><span>暂无数据</span></div>	
+				</table>
+			</view>
+		</view>
+	</view>
+	<!-- 弹窗 -->
+	<view class="bgbox" @click="getClose" v-if="titflag"></view>
+	<!-- 弹窗 -->
+	<view class="fixedbox" v-if="titflag">
+		<image :src="closeimg" class="choseimg" @click="getClose"></image>
+		<view class="top">温馨提示</view>
+		<view class="boxs">
+			<view class="c34 f16 fw">您好!您上报的<text class="coff6">“高速出入口片区环境 品质提升规划改造”</text>项目,本周还未进 行进度汇报,请尽快前去汇报!</view>
+		</view>
+		<view class="fixedbtn" @click="getClose">我知道了</view>
+	</view>
+	<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="true"></footers>
+  </view>
+</template>
+
+<script>
+	import tabSearch from "@/components/toptab/search.vue"
+	import banner from "@/components/toptab/banner.vue"
+	import projectList from "@/components/projectlist/list.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import {getBannerlist,getNoticenumber,getCommonCensus,getCommonsbAndJdNum,getzrdwCqNumFn} from "@/api/zdwork/index.js"
+	import { getsbbzblist} from '@/api/work/clue.js'
+	import footers from '@/components/footer/footer.vue'
+  export default {
+	  data(){
+		  return{
+			  closeimg:require('@/static/images/close.png'),
+			  titflag:false,
+			  tzimg:require('@/static/images/index/tzicon.png'),
+			  homeaimg:require('@/static/images/new/index/homea.png'),
+			  homebimg:require('@/static/images/new/index/homeb.png'),
+			  homecimg:require('@/static/images/new/index/homec.png'),
+			  homedimg:require('@/static/images/new/index/homed.png'),
+			  morerimg:require('@/static/images/new/index/morer.png'),
+			  moredimg:require('@/static/images/new/index/mored.png'),
+			  
+			  homeeimg:require('@/static/images/new/index/homee.png'),
+			  homefimg:require('@/static/images/new/index/homef.png'),
+			  homegimg:require('@/static/images/new/index/homeg.png'),
+			  homehimg:require('@/static/images/new/index/homeh.png'),
+			  mrimg:require("@/static/images/index/mrore.png") ,
+			  list:[],
+			  wtdt:'',
+			  bannerlist:[],
+			  noticenum:0,
+			  census:{},//统计
+			  jdcensus:{},//节点统计
+			  footlist:[
+			  	{module:'zdhome',title:'首页',icon_checked:require('@/static/images/new/tabbar/home_.png'),icon_nochecked:require('@/static/images/new/tabbar/home.png')},
+				{module:'zdcount',title:'统计分析',icon_checked:require('@/static/images/new/tabbar/tong_.png'),icon_nochecked:require('@/static/images/new/tabbar/tong.png')},
+			  	{module:'zdmine',title:'我的',icon_checked:require('@/static/images/new/tabbar/mine_.png'),icon_nochecked:require('@/static/images/new/tabbar/mine.png')},
+			  	],
+			   footerindex:'zdhome',
+			   showfooter: 0,
+			   isfootflag:true,
+			   color_checked :'FA5F03',
+			   color_nochecked :'666666',
+			   topzhiflag:true,
+			   currentdate:'',
+			   moreflag:false,
+			   zanthreelist:[],
+			   zrdwcqlist:[],
+		  }
+	  },
+	  components:{tabSearch,banner,projectList,footers},
+	  onUnload(){
+	  	uni.$off('refreshdatacensuszd')
+	  },
+	  onLoad() {
+		this.init()
+		 this.currentdate = this.getNowFormatDate();
+		// 拿取数据后
+		var that=this;
+		// uni.$on('refreshdatacensuszd',(e) => {
+		// 	if(e&&e=='ldps'){
+				
+		// 	}else{
+		// 		this.getCommonCensus();
+		// 	}
+		// })
+		// that.$nextTick(function(){
+		// 	setTimeout(function(){
+		// 		that.ceheiFn();
+		// 	})
+		// },500)
+	  },
+	  onPageScroll(e) {
+		 //  console.log(e,1)
+			// let that = this;
+			// if(e.scrollTop >= that.dingtop + 10){
+			// 	that.topzhiflag = true;
+			// 	that.topflag = true;
+			// 	that.scrollju = e.scrollTop - (that.dingtop + 10);
+			// }else{
+			// 	that.topzhiflag = false;
+			// 	that.topflag = false;
+			// 	// if(that.from_type == 'all' && that.module_from == 'shop'){
+			// 	// 	that.ceshiFn();
+			// 	// }else if(that.from_type == 'waimai' && that.module_from == 'shop'){
+			// 	// 	that.ceshitwoFn();
+			// 	// }else if(that.module_from == 'product'){
+			// 	// 	that.ceshithreeFn();
+			// 	// }
+			// }
+	  },
+	  methods:{
+		  checkPermi, checkRole,
+		  getNowFormatDate(){
+		  	let date = new Date();
+		  	let y = date.getFullYear();
+		  	let m = date.getMonth() + 1;
+		  	m = m < 10 ? "0" + m : m;
+		  	let d = date.getDate();
+		  	d = d < 10 ? "0" + d : d;
+		  	const timeday = m + "-" + d;
+		  	return timeday;
+		  },
+		  getMore(){
+			  this.moreflag=true;
+			  this.list=this.zrdwcqlist;
+		  },
+		  // 新的
+		  getClose(){
+			  this.titflag=false;
+		  },
+		  // 政府项目
+		  handleTozf(e){
+			  this.$tab.navigateTo('/pages/zdpages/work/zfitems?idx='+e)
+		  },
+		  // 招商项目
+		  handleToZsFn(){
+		  	 this.$tab.navigateTo('/pages/work/allitems?idx=0')
+		  },
+		  //问题项目
+		  handleToWtFn(){
+			this.$tab.navigateTo('/pages/zdpages/work/wtitems')
+		  },
+		  getSearch(data){
+		  	this.$tab.navigateTo('/pages/zdpages/work/zfitems?xmmc='+data)
+		  },
+		  handleTold(){
+		  		  this.$tab.navigateTo('/pages/zdpages/work/lditems')
+		  },
+		  // 项目预警
+		  handleToxmyj(){
+			  this.$tab.navigateTo('/pages/zdpages/work/xmyjitems') 
+		  },
+		  // 超期项目
+		  handleTocqxm(){
+			 this.$tab.navigateTo('/pages/zdpages/work/cqitems')  
+		  },
+		  ceheiFn(){
+		  	var that = this;
+		  	let cehei = uni.createSelectorQuery().in(this);
+		  	cehei.select(".ceheigh").boundingClientRect(function(res){
+		  		that.dingtop = res.height;
+		  	}).exec();
+		  },
+		  
+		  
+		  init(){
+			// if(checkPermi(['system:notice:number'])){
+			// 	this.getNoticenumber()
+			// }
+		  	this.getBanList()
+			this.getCommonCensus()
+			this.getCommonsbAndJdNum()
+			this.getzrdwCqNumFn()
+			// this.getsbbzblist()
+		  },
+		  getzrdwCqNumFn(){
+			  if(checkPermi(['fgw:common:zrdwCqNum'])){
+			  	getzrdwCqNumFn().then(res=>{
+			  		if(res.code==200){
+			  			this.zrdwcqlist=res.data;
+						this.zanthreelist=res.data.slice(0,3);
+						this.list=this.zanthreelist;
+						if(this.moreflag){
+							this.list=res.data;
+						}else{
+							this.list=this.zanthreelist;
+						}
+			  		}else{
+			  			this.$toast(res.msg)
+			  		}
+			  	})
+			  }
+		  },
+		  getNoticenumber(){
+			  getNoticenumber().then(res=>{
+			  	if(res.code==200){
+			  		this.noticenum=Number(res.data)
+			  	}else{
+			  		this.$toast(res.msg)
+			  	}
+			  })
+		  },
+		  getCommonsbAndJdNum(){
+			if(checkPermi(['fgw:common:sbAndJdNum'])){
+				getCommonsbAndJdNum().then(res=>{
+					if(res.code==200){
+						this.jdcensus=res.data
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			}
+		  },
+		  getBanList(){
+		  	getBannerlist().then(res=>{
+				if(res.code==200){
+					this.bannerlist=res.rows
+				}else{
+					this.$toast(res.msg)
+				}
+		  	})
+		  },
+		  getCommonCensus(){
+			  if(checkPermi(['fgw:common:census'])){
+				  getCommonCensus().then(res=>{
+				  	if(res.code==200){
+				  		this.census=res.data
+				  	}else{
+				  		this.$toast(res.msg)
+				  	}
+				  })
+			  }
+			 
+		  },
+		  //重大项目
+		  getsbbzblist(){
+			  var params={
+			  	pageSize:5,
+			  	pageNum: 1,
+				sfwlhxxxm:'Y'
+			  }
+			 getsbbzblist(params).then(res=>{
+			 	if(res.code==200){
+			 		this.list = res.rows;
+			 	}else{
+			 		this.$toast(res.msg)
+			 	}
+			 }) 
+		  },
+		  //左侧点击
+		  clickLeft(){
+			  if(checkPermi(['system:check:app'])){
+			  	this.$tab.reLaunch('/pages/index')
+			  }
+		  	
+		  },
+		  //右侧点击
+		  clickRight(e){
+			  if(checkPermi(['system:notice:list'])){
+			  	this.$tab.navigateTo('/pages/work/message')
+			  } 
+		  },
+		  getMessage(){
+			  if(checkPermi(['system:notice:list'])){
+			  	this.$tab.navigateTo('/pages/work/message')
+			  } 
+			  // this.$tab.navigateTo('/pages/work/idea')
+		  },
+		  
+		  handleToAll(idx){
+			this.$tab.navigateTo('/pages/work/allitems?idx='+idx)
+		  },
+		  handleTosk(){
+			  this.$tab.navigateTo('/pages/work/skitem')
+		  },
+		  handleTowt(){
+		  	this.$tab.navigateTo('/pages/work/wtitem')
+		  },
+		  handleTozd(){
+		  	 // this.$tab.navigateTo('/pages/work/zditem')
+		  },
+		  goDetail(e){
+			  this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
+		  }
+	  },
+  }
+</script>
+
+<style lang="scss" scoped>
+.content{min-height: 100vh;background-color: #ffffff;}
+.home_tz{display: flex;align-items: center;padding: 0 28rpx;height: 80rpx;background: #FFE9D5;
+	image{width: 66rpx;height: 30rpx;margin-right: 24rpx;flex: 0 0 auto;}
+}
+// border-bottom: 2rpx solid #DBDBDB;
+.homelist{display: flex;flex-wrap: wrap;padding: 40rpx 20rpx;
+	.list{width: 25%;display: flex;flex-direction: column;align-items: center;position: relative;padding: 20rpx 0;
+	.list_not{    position: absolute; background: #F63030;color: #ffffff;font-size: 18rpx;left: 50%;top: 24rpx;border-radius: 50%;min-width: 40rpx;height: 40rpx;text-align: center;padding: 0 4rpx;box-sizing: border-box;line-height: 40rpx;margin-left: 30rpx;}
+	image{width: 80rpx;height: 80rpx;margin-bottom: 20rpx;}
+	.tit{font-size: 30rpx;font-weight: bold;
+color: #444444;margin-bottom: 16rpx;}
+	.txt{font-size: 30rpx;font-weight: bold;height: 40rpx;background: #F8F6FF;
+border-radius:20rpx;min-width: 100rpx;text-align: center;line-height: 40rpx;
+	&.co1{color: #F84E57;}
+	&.co2{color: #26C240;}
+	&.co3{color: #F74E32;}
+	&.co4{color: #3C9BCD;}
+	}
+	}
+}
+
+// 待审状态
+.home_sta{padding: 36rpx 24rpx;justify-content: space-between;
+	view{min-height: 50rpx;background: #EBEBEB;border-radius: 26rpx;text-align: center;padding: 0 16rpx;height: 50rpx;line-height: 50rpx;box-sizing: border-box;font-size: 24rpx;font-weight: 500;color: #666666;display: flex;align-items: center;
+	text{color: #F63030;}
+	&.bga{background: #FFE9D5;color: #FC7300;}
+	}
+	image{width: 30rpx;height: 22rpx;margin-left: 8rpx;}
+}
+//统计
+.home_nums{
+	padding: 28rpx 24rpx;
+	.home_num{display: flex;align-items: center;flex-wrap: wrap;justify-content: space-between;
+		.list{width: 158rpx;height: 176rpx;background: #F3F5FF;border-radius: 10rpx;display: flex;flex-direction: column;align-items: center;justify-content: space-around;padding: 8rpx 12rpx;box-sizing: border-box;margin-bottom: 24rpx;
+			.num{font-size: 38rpx;font-weight: bold;
+				&.co1{color: #F84E57;}
+				&.co2{color: #26C240;}
+				&.co3{color: #F74E32;}
+				&.co4{color: #3C9BCD;}
+			}
+			.tit{font-size: 28rpx; color: #343434;font-weight: bold;text-align: center;}
+		}
+	}
+	.home_tit{font-size: 28rpx;font-weight: bold;color: #FC3018;text-align: right;padding-top: 6rpx;}
+}
+
+
+
+
+.home_more{padding-top: 20rpx;
+	.tit{font-size: 32rpx;font-weight: bold;color: #343434;position: relative;flex: 0 0 auto;
+	&::before{content: '';width: 58rpx;height: 8rpx;position: absolute;left: 0;bottom: -22rpx;background-color: #FC7300;}
+	}
+	.home_morer{flex: 1;display: flex;align-items: center;justify-content: flex-end;
+		view{font-size: 30rpx;color: #AAAAAA;font-weight: 500;}
+		image{width: 24rpx;height: 24rpx;margin-left: 14rpx;}
+	}
+}
+//列表
+.chao_top{min-height: 90rpx;background: #F3F5FF;border-radius: 10rpx;display: flex;align-items: center;margin-top: 70rpx;
+	view{font-size: 28rpx;font-weight: bold;color: #343434;padding: 8rpx 10rpx;box-sizing: border-box;flex: 1 0 auto;text-align: center;}
+}
+.wid90{width:180rpx;}
+.wid60{width:120rpx;}
+.wid40{width:80rpx;}
+
+// .chao_list{border-bottom: 2rpx solid #DEDEDE;display: flex;align-items: center;
+// 	view{font-size: 28rpx;color: #343434;padding: 30rpx 10rpx;box-sizing: border-box;flex: 1 0 auto;text-align: center;
+// 	&.co1{color: #F84E57;}
+// 	&.co2{color: #26C240;}
+// 	&.co3{color: #F74E32;}
+// 	&.co4{color: #3C9BCD;}
+// 	}
+// }
+
+	// 更多
+.listmore{display: flex;align-items: center;justify-content: center;font-size: 30rpx;color: #aaaaaa;font-weight: 500;padding: 40rpx 24rpx;
+	image{width: 24rpx;height: 24rpx;margin-left: 12rpx;}
+}
+
+.fixedbox{box-sizing: border-box;padding:42rpx 46rpx 60rpx;
+	.choseimg{top: 50rpx;}
+	.boxs{padding: 60rpx 0 70rpx;}
+	.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+	border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+		&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+
+// 表格
+.tablebox{padding:70rpx 24rpx 0;flex: 1;display: flex;flex-direction: column;overflow: hidden;box-sizing: border-box;
+	 th{padding:10rpx 8rpx;box-sizing: border-box;font-size: 28rpx;color: #343434;font-weight: bold;text-align: center;
+		.num{font-size: 24rpx;margin-top: 8rpx;
+		&.co1{color: #FE3155;}
+		&.co2{color:#1686F6;}
+		}
+	 }
+	}
+	.table{border-spacing: 0;width: 700rpx;display: flex;flex-direction: column;overflow: hidden;margin: 0 auto;}
+	.thead{width: 100%;background-color: #F3F5FF;flex: 0 0 auto;border-radius: 10rpx;
+	
+	}
+	.tbody {flex: 1;overflow: auto;}
+	.tbody td{height: 120rpx;box-sizing: border-box;padding: 24rpx 14rpx;font-weight: 500;color: #343434;font-size: 28rpx;border-bottom: 2rpx solid #CDCDCD;text-align: center;word-break: break-all;
+		&.co1{color: #FE3155;}
+		&.co2{color:#26C240;}
+	
+	}
+// 滚动 固定
+.home_morefixed{height: calc(100vh - 100rpx);display: flex;flex-direction: column;}
+</style>

+ 393 - 0
qs_zhaoshang/pages/login.vue

@@ -0,0 +1,393 @@
+<template>
+  <view class="normal-login-container" v-if="loginflag">
+	  <image :src="bgimg" class="loginbg"></image>
+	  <view  class="loginbox">
+		  <view class="login_top">
+			  <view class="title">登录</view>
+			  <view class="txt">
+				  <!-- <text>招商引资管理系统</text>
+				  / -->
+				  <text>潜山市政府投资重点项目管理系统</text>
+				</view>
+		  </view>
+		<view class="login-form-content">
+			<view class="input-item">
+				<view class="login_tit">账号名称</view>
+				<view class="login_box">
+					 <input  v-model="loginForm.username" class="input" type="text" placeholder="请输入账号名称" maxlength="30" />
+				</view>
+			</view>
+				<view class="input-item" >
+					<view class="login_tit">登录密码</view>
+					 <view class="login_box">
+						 <input v-if="checkeye" v-model="loginForm.password" type="text"  class="input" placeholder="请输入密码" maxlength="20" />
+						 <input v-else v-model="loginForm.password" type="password"  class="input" placeholder="请输入密码" maxlength="20" />
+						 <view class="input_ye" v-if="loginForm.password" @click="checkeye=!checkeye">
+						 	<image :src="yeimgs" v-if="checkeye"></image>
+						 	<image :src="yeimg" v-else></image>
+						 </view>
+					 </view>
+				</view>
+				<view class="input-item flex align-center" style="width: 60%;margin: 0px;margin-bottom: 24rpx;" v-if="captchaEnabled">
+				  <input v-model="loginForm.code" type="number" class="input" placeholder="请输入验证码" maxlength="4" />
+				  <view class="login-code"> 
+				    <image :src="codeUrl" @click="getCode" class="login-code-img"></image>
+				  </view  >
+				</view>
+				<view class="flexc login_jz " :class="jzflag?'act':''"  @click="jzflag=!jzflag">
+					<image :src="jzimg" v-if="jzflag"></image>
+					<image :src="jnzimg" v-else></image>
+					<view>保存账号及密码</view></view>
+		  <view class="action-btn">
+		    <button @click="handleLogin"  class="login-btn cu-btn block  lg  "  :class="loginForm.username&&loginForm.password?'btn2':'btn'">登录</button>
+		  </view>
+		</view>
+		<view class="xieyi text-center" >
+			<image :src="readimg" class="image"  v-if="readflag"  @click="readflag=!readflag"></image>
+			<image :src="readimgs" class="image" v-else @click="readflag=!readflag"></image>
+		  <text class="text-grey1">我已阅读并同意</text>
+		  <text @click="handleUserAgrement" class="xieyifa">《用户协议》</text>
+		  <text @click="handlePrivacy" class="xieyifa">《隐私协议》</text>
+		</view>
+		
+	</view>
+  </view>
+</template>
+
+<script>
+const jpushModule = uni.requireNativePlugin('JG-JPush')
+  import { getCodeImg,getCode,sendSmsOnly } from '@/api/login'
+  import {getSMS} from '@/utils/common.js'
+import { getToken } from '@/utils/auth'
+ import {updateUserProfile} from "@/api/system/user.js"
+  export default {
+    data() {
+      return {
+		//极光推送
+		connectStatus: '未连接',
+		registrationID: '未获得',
+		bgimg:require("@/static/images/mine/loginbg.jpg"),
+		yeimg:require("@/static/images/mine/nyea.png"),
+		yeimgs:require("@/static/images/mine/yea.png"),
+		readimg:require("@/static/images/mine/check.png"),
+		readimgs:require("@/static/images/mine/ncheck.png"),
+		jzimg:require('@/static/images/mine/jicon.png'),
+		jnzimg:require('@/static/images/mine/jnicon.png'),
+		readflag:false,
+		pwdtype:'password',
+        codeUrl: "",
+        captchaEnabled: true,
+		checkeye:false,
+        globalConfig: getApp().globalData.config,
+		type:'',//1 账号密码  2短信
+		typeflag:1,
+		time:'',
+		timefalg:'',
+		loginflag:false,
+        loginForm: {
+          username: "",
+          code: "",
+		  password:'',
+        },
+		jzflag:false
+      }
+    },
+    created() {
+		// 账号密码登录需要
+      this.getCode()
+    },
+	onLoad() {
+		// userType:00   系统用户
+			
+		if (getToken()) {
+			var userType=this.$store.state.user.userType;
+			var newArr=userType.split(',')
+			var num=0,b=0;
+			for(var i=0;i<newArr.length;i++){
+				if(newArr[i]=='发改委'){
+					num=1
+					break;
+				}
+				if(newArr[i]=='招商'){
+					b=1
+					break;
+				}
+			}
+			if(num==1){
+				if(b==1){
+					this.$tab.reLaunch('/pages/index')
+				}else{
+					this.$tab.reLaunch('/pages/indexs')
+				}
+			}else{
+				this.$tab.reLaunch('/pages/index')
+			}
+		  // uni.switchTab({
+		  // 	url:'/pages/index'
+		  // })
+		} else {
+		  this.loginflag=true;
+		  if(uni.getStorageSync('account')){
+		  	var newObj=JSON.parse(JSON.stringify(uni.getStorageSync('account')))
+		  	this.loginForm.username=newObj.username;
+		  	this.loginForm.password=newObj.password;
+		  	this.jzflag=true;
+			this.readflag=true;
+			// 自动登录
+			// this.handleLogin()
+		  }
+		  
+		}
+		
+	},
+	onUnload() {
+		
+	},
+    methods: {
+		//点击登录按钮
+		login() {
+		  //登录成功后
+		     //设置别名
+			// jpushModule.setAlias({
+			// 		'alias': this.phone,
+			// 		'sequence': 1
+			// 		})
+		},
+		connect() {
+			this.getRegistrationID()
+			// uni.$on('connectStatusChange', (connectStatus) => {
+			// 	console.log('进入连接')
+			// 	var connectStr = ''
+			// 	if (connectStatus == true) {
+			// 		connectStr = '已连接'
+			// 		this.getRegistrationID()
+			// 	} else {
+			// 		connectStr = '未连接'
+			// 	}
+			// 	console.log('监听到了连接状态变化 --- ', connectStr)
+			// 	this.connectStatus = connectStr
+			// })
+		},
+		//获取推送ID
+		getRegistrationID() {
+			jpushModule.getRegistrationID(result => {
+				let registerID = result.registerID
+				// console.log(result,7)
+				var params={
+					jgId:registerID,
+				}
+				updateUserProfile(params).then(res=>{
+					if(rtes.code==200){
+						console.log(res,9)
+					}
+				})
+			})
+		},
+      // 隐私协议
+      handlePrivacy() {
+      this.$tab.navigateTo('/pages/agreement')
+      },
+      // 用户协议
+      handleUserAgrement() {
+         this.$tab.navigateTo('/pages/agreement')
+      },
+      // 获取图形验证码
+      getCode() {
+        getCodeImg().then(res => {
+          this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled
+          if (this.captchaEnabled) {
+            this.codeUrl = 'data:image/gif;base64,' + res.img
+            this.loginForm.uuid = res.uuid
+          }
+        })
+      },
+
+
+      // 登录方法
+      async handleLogin() {
+		  var that=this;
+		  setTimeout(function(){
+			if(!that.loginForm.username||!that.loginForm.password){
+					return
+			}
+			if(that.readflag){
+						  // 判断是否记住密码
+						  if(that.jzflag){
+							  var newObj={
+								  username:that.loginForm.username,
+								  password:that.loginForm.password,
+								  captchaEnabled:that.captchaEnabled,
+							  }
+							  
+							 uni.setStorageSync('account', JSON.parse(JSON.stringify(newObj)))
+						  }else{
+							  uni.removeStorageSync('account')
+						  }
+				that.$toast("登录中,请耐心等待...")
+				that.pwdLogin()
+			}else{
+				that.$toast("请同意用户协议")
+			}
+		},200)
+      },
+      // 密码登录
+      async pwdLogin() {
+		  var that=this;
+        this.$store.dispatch('Login', this.loginForm).then((res) => {
+          this.$modal.closeLoading()
+		  this.$toast('登录成功')
+		  setTimeout(function(){
+			  // #ifdef APP-PLUS
+			   // that.getRegistrationID();
+			  // #endif
+			 
+			  that.loginSuccess()
+		  },1500)
+          
+        }).catch((error) => {
+         setTimeout(function(){
+			 if (that.captchaEnabled) {
+			   that.getCode()
+			 }
+		 },1000)
+        })
+      },
+      // 登录成功后,处理函数
+      loginSuccess(result) {
+        // 设置用户信息
+		var that=this;
+        this.$store.dispatch('GetInfo').then(res => {
+			var userType=res.user.userType;
+			var newArr=userType.split(',')
+			var num=0,b=0;
+			for(var i=0;i<newArr.length;i++){
+				if(newArr[i]=='发改委'){
+					num=1
+					break;
+				}
+				if(newArr[i]=='招商'){
+					b=1
+					break;
+				}
+			}
+			if(num==1){
+				if(b==1){
+					this.$tab.reLaunch('/pages/index')
+				}else{
+					this.$tab.reLaunch('/pages/indexs')
+				}
+			}else{
+				this.$tab.reLaunch('/pages/index')
+			}
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #ffffff;
+	width: 100%;height: 100vh;
+  }
+.loginbg{width: 100%;height:100vh;display: block;}
+.loginbox{padding: 0rpx 64rpx 52rpx;width: 100%;box-sizing: border-box;overflow: auto;top: -100rpx;position: fixed;left: 0;right: 0;top: 0;bottom: 0;padding-top: 200rpx;}
+
+  .normal-login-container {
+    width: 100%;
+	height: 100vh;
+	position: relative;
+    .logo-content {
+      width: 100%;
+      font-size: 44rpx;
+      text-align: center;
+      image {
+        border-radius: 4px;
+      }
+
+      .title {font-size: 52rpx;color: #343434;;font-weight: bold;}
+    }
+
+    .login-form-content {
+      margin: 0 auto;
+      margin-top: 80rpx;
+      width: 100%;
+		
+      .input-item {
+        // margin-bottom:48rpx;
+        border-bottom: 2rpx solid #CDCDCD;
+		padding: 40rpx 0 0rpx;
+        .icon {
+          font-size: 40rpx;
+          margin-left: 10px;
+          color: #999;
+        }
+		.login_tit{
+			font-size: 34rpx;
+			font-weight: bold;
+			color: #343434;margin-bottom: 20rpx;
+		}
+		.login_box{display: flex;align-items: center;}
+        .input {
+          width: 100%;
+          font-size: 32rpx;
+		  height: 80rpx;
+		  line-height: 80rpx;
+        }
+
+      }
+
+      .login-btn {
+        margin-top: 52rpx;
+		width: 100%;
+		height: 80rpx;
+		border-radius: 6rpx;
+		margin-bottom: 28rpx;
+		&.btn{background: #9a9c9e;color: #ffffff;}
+		&.btn1{border: 2rpx solid  #1678FF;color: #1678FF;background-color: #ffffff;margin-top: 0;}
+		&.btn2{background: $uni-color-fa;color: #ffffff;}
+      }
+	  .login-code {
+	    height: 38px;
+	    float: right;
+	  
+	    .login-code-img {
+	      height: 38px;
+	      position: absolute;
+	      margin-left: 10px;
+	      width: 200rpx;
+	    }
+	  }
+    }
+  }
+
+.login_jz{display: flex;align-items: center;justify-content: flex-end;margin-top: 32rpx;
+	image{width: 32rpx;height: 32rpx;margin-right: 12rpx;}
+	view{color: #666666;}
+	&.act{
+		view{color: #28C529;}
+	}
+}
+.xieyi {
+        color: #333;
+        margin-top: 26px;
+		font-size: 26rpx;
+		display: flex;align-items: center;justify-content: center;
+		.xieyifa{ color: $uni-color-fa;}
+      }
+.image{width: 32rpx;height: 32rpx;margin-right: 14rpx;}
+.input_ye image{width: 36rpx;height: 20rpx;}
+.codess{font-size: 34rpx;color: #1678FF;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_top{
+	.title{font-size: 52rpx;color: #343434;;font-weight: bold;position: relative;
+	&::after{content: '';width: 42rpx;height: 4rpx;background: $uni-color-fa;position: absolute;bottom: -23rpx;left: 0;}
+	}
+	.txt{font-size: 32rpx;font-weight: 500;color: #666666;margin-top: 50rpx;
+		text{display: inline-block;padding: 0 10rpx}
+	}
+}
+</style>

+ 75 - 0
qs_zhaoshang/pages/mine/about/index.vue

@@ -0,0 +1,75 @@
+<template>
+  <view class="about-container">
+    <view class="header-section text-center">
+      <image style="width: 150rpx;height: 150rpx;" src="/static/logo200.png" mode="widthFix">
+      </image>
+      <uni-title type="h2" title="若依移动端"></uni-title>
+    </view>
+
+    <view class="content-section">
+      <view class="menu-list">
+        <view class="list-cell list-cell-arrow">
+          <view class="menu-item-box">
+            <view>版本信息</view>
+            <view class="text-right">v{{version}}</view>
+          </view>
+        </view>
+        <view class="list-cell list-cell-arrow">
+          <view class="menu-item-box">
+            <view>官方邮箱</view>
+            <view class="text-right">ruoyi@xx.com</view>
+          </view>
+        </view>
+        <view class="list-cell list-cell-arrow">
+          <view class="menu-item-box">
+            <view>服务热线</view>
+            <view class="text-right">400-999-9999</view>
+          </view>
+        </view>
+        <view class="list-cell list-cell-arrow">
+          <view class="menu-item-box">
+            <view>公司网站</view>
+            <view class="text-right">
+              <uni-link :href="url" :text="url" showUnderLine="false"></uni-link>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+
+    <view class="copyright">
+      <view>Copyright &copy; 2022 ruoyi.vip All Rights Reserved.</view>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        url: getApp().globalData.config.appInfo.site_url,
+        version: getApp().globalData.config.appInfo.version
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #f8f8f8;
+  }
+
+  .copyright {
+    margin-top: 50rpx;
+    text-align: center;
+    line-height: 60rpx;
+    color: #999;
+  }
+
+  .header-section {
+    display: flex;
+    padding: 30rpx 0 0;
+    flex-direction: column;
+    align-items: center;
+  }
+</style>

+ 631 - 0
qs_zhaoshang/pages/mine/avatar/index.vue

@@ -0,0 +1,631 @@
+<template>
+	<view class="container">
+		<view class="page-body uni-content-info">
+			<view class='cropper-content'>
+				<view v-if="isShowImg" class="uni-corpper" :style="'width:'+cropperInitW+'px;height:'+cropperInitH+'px;background:#000'">
+					<view class="uni-corpper-content" :style="'width:'+cropperW+'px;height:'+cropperH+'px;left:'+cropperL+'px;top:'+cropperT+'px'">
+						<image :src="imageSrc" :style="'width:'+cropperW+'px;height:'+cropperH+'px'"></image>
+						<view class="uni-corpper-crop-box" @touchstart.stop="contentStartMove" @touchmove.stop="contentMoveing" @touchend.stop="contentTouchEnd"
+						    :style="'left:'+cutL+'px;top:'+cutT+'px;right:'+cutR+'px;bottom:'+cutB+'px'">
+							<view class="uni-cropper-view-box">
+								<view class="uni-cropper-dashed-h"></view>
+								<view class="uni-cropper-dashed-v"></view>
+								<view class="uni-cropper-line-t" data-drag="top" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-line-r" data-drag="right" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-line-b" data-drag="bottom" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-line-l" data-drag="left" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-point point-t" data-drag="top" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-point point-tr" data-drag="topTight"></view>
+								<view class="uni-cropper-point point-r" data-drag="right" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-point point-rb" data-drag="rightBottom" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-point point-b" data-drag="bottom" @touchstart.stop="dragStart" @touchmove.stop="dragMove" @touchend.stop="dragEnd"></view>
+								<view class="uni-cropper-point point-bl" data-drag="bottomLeft"></view>
+								<view class="uni-cropper-point point-l" data-drag="left" @touchstart.stop="dragStart" @touchmove.stop="dragMove"></view>
+								<view class="uni-cropper-point point-lt" data-drag="leftTop"></view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class='cropper-config'>
+				<button type="primary reverse" @click="getImage" style='margin-top: 30rpx;'> 选择头像 </button>
+				<button type="warn" @click="getImageInfo" style='margin-top: 30rpx;'> 提交 </button>
+			</view>
+			<canvas canvas-id="myCanvas" :style="'position:absolute;border: 1px solid red; width:'+imageW+'px;height:'+imageH+'px;top:-9999px;left:-9999px;'"></canvas>
+		</view>
+	</view>
+</template>
+
+<script>
+  import config from '@/config'
+  import store from "@/store"
+  import { uploadAvatar } from "@/api/system/user"
+  
+  const baseUrl = config.baseUrl
+	let sysInfo = uni.getSystemInfoSync()
+	let SCREEN_WIDTH = sysInfo.screenWidth
+	let PAGE_X, // 手按下的x位置
+		PAGE_Y, // 手按下y的位置 
+		PR = sysInfo.pixelRatio, // dpi
+		T_PAGE_X, // 手移动的时候x的位置
+		T_PAGE_Y, // 手移动的时候Y的位置
+		CUT_L, // 初始化拖拽元素的left值
+		CUT_T, // 初始化拖拽元素的top值
+		CUT_R, // 初始化拖拽元素的
+		CUT_B, // 初始化拖拽元素的
+		CUT_W, // 初始化拖拽元素的宽度
+		CUT_H, //  初始化拖拽元素的高度
+		IMG_RATIO, // 图片比例
+		IMG_REAL_W, // 图片实际的宽度
+		IMG_REAL_H, // 图片实际的高度
+		DRAFG_MOVE_RATIO = 1, //移动时候的比例,
+		INIT_DRAG_POSITION = 100, // 初始化屏幕宽度和裁剪区域的宽度之差,用于设置初始化裁剪的宽度
+		DRAW_IMAGE_W = sysInfo.screenWidth // 设置生成的图片宽度
+
+	export default {
+		/**
+		 * 页面的初始数据
+		 */
+		data() {
+			return {
+				imageSrc: store.getters.avatar,
+				isShowImg: false,
+				// 初始化的宽高
+				cropperInitW: SCREEN_WIDTH,
+				cropperInitH: SCREEN_WIDTH,
+				// 动态的宽高
+				cropperW: SCREEN_WIDTH,
+				cropperH: SCREEN_WIDTH,
+				// 动态的left top值
+				cropperL: 0,
+				cropperT: 0,
+
+				transL: 0,
+				transT: 0,
+
+				// 图片缩放值
+				scaleP: 0,
+				imageW: 0,
+				imageH: 0,
+
+				// 裁剪框 宽高
+				cutL: 0,
+				cutT: 0,
+				cutB: SCREEN_WIDTH,
+				cutR: '100%',
+				qualityWidth: DRAW_IMAGE_W,
+				innerAspectRadio: DRAFG_MOVE_RATIO
+			}
+		},
+		/**
+		 * 生命周期函数--监听页面初次渲染完成
+		 */
+		onReady: function () {
+			this.loadImage()
+		},
+		methods: {
+			setData: function (obj) {
+				let that = this
+				Object.keys(obj).forEach(function (key) {
+					that.$set(that.$data, key, obj[key])
+				})
+			},
+			getImage: function () {
+				var _this = this
+				uni.chooseImage({
+					success: function (res) {
+						_this.setData({
+							imageSrc: res.tempFilePaths[0],
+						})
+						_this.loadImage()
+					},
+				})
+			},
+			loadImage: function () {
+				var _this = this
+
+				uni.getImageInfo({
+					src: _this.imageSrc,
+					success: function success(res) {
+						IMG_RATIO = 1 / 1
+						if (IMG_RATIO >= 1) {
+							IMG_REAL_W = SCREEN_WIDTH
+							IMG_REAL_H = SCREEN_WIDTH / IMG_RATIO
+						} else {
+							IMG_REAL_W = SCREEN_WIDTH * IMG_RATIO
+							IMG_REAL_H = SCREEN_WIDTH
+						}
+						let minRange = IMG_REAL_W > IMG_REAL_H ? IMG_REAL_W : IMG_REAL_H
+						INIT_DRAG_POSITION = minRange > INIT_DRAG_POSITION ? INIT_DRAG_POSITION : minRange
+						// 根据图片的宽高显示不同的效果   保证图片可以正常显示
+						if (IMG_RATIO >= 1) {
+							let cutT = Math.ceil((SCREEN_WIDTH / IMG_RATIO - (SCREEN_WIDTH / IMG_RATIO - INIT_DRAG_POSITION)) / 2)
+							let cutB = cutT
+							let cutL = Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH + INIT_DRAG_POSITION) / 2)
+							let cutR = cutL
+							_this.setData({
+								cropperW: SCREEN_WIDTH,
+								cropperH: SCREEN_WIDTH / IMG_RATIO,
+								// 初始化left right
+								cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2),
+								cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH / IMG_RATIO) / 2),
+								cutL: cutL,
+								cutT: cutT,
+								cutR: cutR,
+								cutB: cutB,
+								// 图片缩放值
+								imageW: IMG_REAL_W,
+								imageH: IMG_REAL_H,
+								scaleP: IMG_REAL_W / SCREEN_WIDTH,
+								qualityWidth: DRAW_IMAGE_W,
+								innerAspectRadio: IMG_RATIO
+							})
+						} else {
+							let cutL = Math.ceil((SCREEN_WIDTH * IMG_RATIO - (SCREEN_WIDTH * IMG_RATIO)) / 2)
+							let cutR = cutL
+							let cutT = Math.ceil((SCREEN_WIDTH - INIT_DRAG_POSITION) / 2)
+							let cutB = cutT
+							_this.setData({
+								cropperW: SCREEN_WIDTH * IMG_RATIO,
+								cropperH: SCREEN_WIDTH,
+								// 初始化left right
+								cropperL: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH * IMG_RATIO) / 2),
+								cropperT: Math.ceil((SCREEN_WIDTH - SCREEN_WIDTH) / 2),
+
+								cutL: cutL,
+								cutT: cutT,
+								cutR: cutR,
+								cutB: cutB,
+								// 图片缩放值
+								imageW: IMG_REAL_W,
+								imageH: IMG_REAL_H,
+								scaleP: IMG_REAL_W / SCREEN_WIDTH,
+								qualityWidth: DRAW_IMAGE_W,
+								innerAspectRadio: IMG_RATIO
+							})
+						}
+						_this.setData({
+							isShowImg: true
+						})
+						uni.hideLoading()
+					}
+				})
+			},
+			// 拖动时候触发的touchStart事件
+			contentStartMove(e) {
+				PAGE_X = e.touches[0].pageX
+				PAGE_Y = e.touches[0].pageY
+			},
+
+			// 拖动时候触发的touchMove事件
+			contentMoveing(e) {
+				var _this = this
+				var dragLengthX = (PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+				var dragLengthY = (PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+				// 左移
+				if (dragLengthX > 0) {
+					if (this.cutL - dragLengthX < 0) dragLengthX = this.cutL
+				} else {
+					if (this.cutR + dragLengthX < 0) dragLengthX = -this.cutR
+				}
+
+				if (dragLengthY > 0) {
+					if (this.cutT - dragLengthY < 0) dragLengthY = this.cutT
+				} else {
+					if (this.cutB + dragLengthY < 0) dragLengthY = -this.cutB
+				}
+				this.setData({
+					cutL: this.cutL - dragLengthX,
+					cutT: this.cutT - dragLengthY,
+					cutR: this.cutR + dragLengthX,
+					cutB: this.cutB + dragLengthY
+				})
+
+				PAGE_X = e.touches[0].pageX
+				PAGE_Y = e.touches[0].pageY
+			},
+
+			contentTouchEnd() {
+
+			},
+
+			// 获取图片
+			getImageInfo() {
+				var _this = this
+				uni.showLoading({
+					title: '图片生成中...',
+				})
+				// 将图片写入画布
+				const ctx = uni.createCanvasContext('myCanvas')
+				ctx.drawImage(_this.imageSrc, 0, 0, IMG_REAL_W, IMG_REAL_H)
+				ctx.draw(true, () => {
+					// 获取画布要裁剪的位置和宽度   均为百分比 * 画布中图片的宽度    保证了在微信小程序中裁剪的图片模糊  位置不对的问题 canvasT = (_this.cutT / _this.cropperH) * (_this.imageH / pixelRatio)
+					var canvasW = ((_this.cropperW - _this.cutL - _this.cutR) / _this.cropperW) * IMG_REAL_W
+					var canvasH = ((_this.cropperH - _this.cutT - _this.cutB) / _this.cropperH) * IMG_REAL_H
+					var canvasL = (_this.cutL / _this.cropperW) * IMG_REAL_W
+					var canvasT = (_this.cutT / _this.cropperH) * IMG_REAL_H
+					uni.canvasToTempFilePath({
+						x: canvasL,
+						y: canvasT,
+						width: canvasW,
+						height: canvasH,
+						destWidth: canvasW,
+						destHeight: canvasH,
+						quality: 0.5,
+						canvasId: 'myCanvas',
+						success: function (res) {
+							uni.hideLoading()
+							let data = {name: 'avatarfile', filePath: res.tempFilePath}
+							uploadAvatar(data).then(response => {
+								store.commit('SET_AVATAR', baseUrl + response.imgUrl)
+								uni.showToast({ title: "修改成功", icon: 'success' })
+								uni.navigateBack()
+							})
+						}
+					})
+				})
+			},
+			// 设置大小的时候触发的touchStart事件
+			dragStart(e) {
+				T_PAGE_X = e.touches[0].pageX
+				T_PAGE_Y = e.touches[0].pageY
+				CUT_L = this.cutL
+				CUT_R = this.cutR
+				CUT_B = this.cutB
+				CUT_T = this.cutT
+			},
+
+			// 设置大小的时候触发的touchMove事件
+			dragMove(e) {
+				var _this = this
+				var dragType = e.target.dataset.drag
+				switch (dragType) {
+					case 'right':
+						var dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+						if (CUT_R + dragLength < 0) dragLength = -CUT_R
+						this.setData({
+							cutR: CUT_R + dragLength
+						})
+						break
+					case 'left':
+						var dragLength = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+						if (CUT_L - dragLength < 0) dragLength = CUT_L
+						if ((CUT_L - dragLength) > (this.cropperW - this.cutR)) dragLength = CUT_L - (this.cropperW - this.cutR)
+						this.setData({
+							cutL: CUT_L - dragLength
+						})
+						break
+					case 'top':
+						var dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+						if (CUT_T - dragLength < 0) dragLength = CUT_T
+						if ((CUT_T - dragLength) > (this.cropperH - this.cutB)) dragLength = CUT_T - (this.cropperH - this.cutB)
+						this.setData({
+							cutT: CUT_T - dragLength
+						})
+						break
+					case 'bottom':
+						var dragLength = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+						if (CUT_B + dragLength < 0) dragLength = -CUT_B
+						this.setData({
+							cutB: CUT_B + dragLength
+						})
+						break
+					case 'rightBottom':
+						var dragLengthX = (T_PAGE_X - e.touches[0].pageX) * DRAFG_MOVE_RATIO
+						var dragLengthY = (T_PAGE_Y - e.touches[0].pageY) * DRAFG_MOVE_RATIO
+
+						if (CUT_B + dragLengthY < 0) dragLengthY = -CUT_B
+						if (CUT_R + dragLengthX < 0) dragLengthX = -CUT_R
+						let cutB = CUT_B + dragLengthY
+						let cutR = CUT_R + dragLengthX
+
+						this.setData({
+							cutB: cutB,
+							cutR: cutR
+						})
+						break
+					default:
+						break
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+	/* pages/uni-cropper/index.wxss */
+
+	.uni-content-info {
+		/* position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		display: block;
+		align-items: center;
+		flex-direction: column; */
+	}
+
+	.cropper-config {
+		padding: 20rpx 40rpx;
+	}
+
+	.cropper-content {
+		min-height: 750rpx;
+		width: 100%;
+	}
+
+	.uni-corpper {
+		position: relative;
+		overflow: hidden;
+		-webkit-user-select: none;
+		-moz-user-select: none;
+		-ms-user-select: none;
+		user-select: none;
+		-webkit-tap-highlight-color: transparent;
+		-webkit-touch-callout: none;
+		box-sizing: border-box;
+	}
+
+	.uni-corpper-content {
+		position: relative;
+	}
+
+	.uni-corpper-content image {
+		display: block;
+		width: 100%;
+		min-width: 0 !important;
+		max-width: none !important;
+		height: 100%;
+		min-height: 0 !important;
+		max-height: none !important;
+		image-orientation: 0deg !important;
+		margin: 0 auto;
+	}
+	/* 移动图片效果 */
+
+	.uni-cropper-drag-box {
+		position: absolute;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		cursor: move;
+		background: rgba(0, 0, 0, 0.6);
+		z-index: 1;
+	}
+	/* 内部的信息 */
+
+	.uni-corpper-crop-box {
+		position: absolute;
+		background: rgba(255, 255, 255, 0.3);
+		z-index: 2;
+	}
+
+	.uni-corpper-crop-box .uni-cropper-view-box {
+		position: relative;
+		display: block;
+		width: 100%;
+		height: 100%;
+		overflow: visible;
+		outline: 1rpx solid #69f;
+		outline-color: rgba(102, 153, 255, .75)
+	}
+	/* 横向虚线 */
+
+	.uni-cropper-dashed-h {
+		position: absolute;
+		top: 33.33333333%;
+		left: 0;
+		width: 100%;
+		height: 33.33333333%;
+		border-top: 1rpx dashed rgba(255, 255, 255, 0.5);
+		border-bottom: 1rpx dashed rgba(255, 255, 255, 0.5);
+	}
+	/* 纵向虚线 */
+
+	.uni-cropper-dashed-v {
+		position: absolute;
+		left: 33.33333333%;
+		top: 0;
+		width: 33.33333333%;
+		height: 100%;
+		border-left: 1rpx dashed rgba(255, 255, 255, 0.5);
+		border-right: 1rpx dashed rgba(255, 255, 255, 0.5);
+	}
+	/* 四个方向的线  为了之后的拖动事件*/
+
+	.uni-cropper-line-t {
+		position: absolute;
+		display: block;
+		width: 100%;
+		background-color: #69f;
+		top: 0;
+		left: 0;
+		height: 1rpx;
+		opacity: 0.1;
+		cursor: n-resize;
+	}
+
+	.uni-cropper-line-t::before {
+		content: '';
+		position: absolute;
+		top: 50%;
+		right: 0rpx;
+		width: 100%;
+		-webkit-transform: translate3d(0, -50%, 0);
+		transform: translate3d(0, -50%, 0);
+		bottom: 0;
+		height: 41rpx;
+		background: transparent;
+		z-index: 11;
+	}
+
+	.uni-cropper-line-r {
+		position: absolute;
+		display: block;
+		background-color: #69f;
+		top: 0;
+		right: 0rpx;
+		width: 1rpx;
+		opacity: 0.1;
+		height: 100%;
+		cursor: e-resize;
+	}
+
+	.uni-cropper-line-r::before {
+		content: '';
+		position: absolute;
+		top: 0;
+		left: 50%;
+		width: 41rpx;
+		-webkit-transform: translate3d(-50%, 0, 0);
+		transform: translate3d(-50%, 0, 0);
+		bottom: 0;
+		height: 100%;
+		background: transparent;
+		z-index: 11;
+	}
+
+	.uni-cropper-line-b {
+		position: absolute;
+		display: block;
+		width: 100%;
+		background-color: #69f;
+		bottom: 0;
+		left: 0;
+		height: 1rpx;
+		opacity: 0.1;
+		cursor: s-resize;
+	}
+
+	.uni-cropper-line-b::before {
+		content: '';
+		position: absolute;
+		top: 50%;
+		right: 0rpx;
+		width: 100%;
+		-webkit-transform: translate3d(0, -50%, 0);
+		transform: translate3d(0, -50%, 0);
+		bottom: 0;
+		height: 41rpx;
+		background: transparent;
+		z-index: 11;
+	}
+
+	.uni-cropper-line-l {
+		position: absolute;
+		display: block;
+		background-color: #69f;
+		top: 0;
+		left: 0;
+		width: 1rpx;
+		opacity: 0.1;
+		height: 100%;
+		cursor: w-resize;
+	}
+
+	.uni-cropper-line-l::before {
+		content: '';
+		position: absolute;
+		top: 0;
+		left: 50%;
+		width: 41rpx;
+		-webkit-transform: translate3d(-50%, 0, 0);
+		transform: translate3d(-50%, 0, 0);
+		bottom: 0;
+		height: 100%;
+		background: transparent;
+		z-index: 11;
+	}
+
+	.uni-cropper-point {
+		width: 5rpx;
+		height: 5rpx;
+		background-color: #69f;
+		opacity: .75;
+		position: absolute;
+		z-index: 3;
+	}
+
+	.point-t {
+		top: -3rpx;
+		left: 50%;
+		margin-left: -3rpx;
+		cursor: n-resize;
+	}
+
+	.point-tr {
+		top: -3rpx;
+		left: 100%;
+		margin-left: -3rpx;
+		cursor: n-resize;
+	}
+
+	.point-r {
+		top: 50%;
+		left: 100%;
+		margin-left: -3rpx;
+		margin-top: -3rpx;
+		cursor: n-resize;
+	}
+
+	.point-rb {
+		left: 100%;
+		top: 100%;
+		-webkit-transform: translate3d(-50%, -50%, 0);
+		transform: translate3d(-50%, -50%, 0);
+		cursor: n-resize;
+		width: 36rpx;
+		height: 36rpx;
+		background-color: #69f;
+		position: absolute;
+		z-index: 1112;
+		opacity: 1;
+	}
+
+	.point-b {
+		left: 50%;
+		top: 100%;
+		margin-left: -3rpx;
+		margin-top: -3rpx;
+		cursor: n-resize;
+	}
+
+	.point-bl {
+		left: 0%;
+		top: 100%;
+		margin-left: -3rpx;
+		margin-top: -3rpx;
+		cursor: n-resize;
+	}
+
+	.point-l {
+		left: 0%;
+		top: 50%;
+		margin-left: -3rpx;
+		margin-top: -3rpx;
+		cursor: n-resize;
+	}
+
+	.point-lt {
+		left: 0%;
+		top: 0%;
+		margin-left: -3rpx;
+		margin-top: -3rpx;
+		cursor: n-resize;
+	}
+	/* 裁剪框预览内容 */
+
+	.uni-cropper-viewer {
+		position: relative;
+		width: 100%;
+		height: 100%;
+		overflow: hidden;
+	}
+
+	.uni-cropper-viewer image {
+		position: absolute;
+		z-index: 2;
+	}
+</style>

+ 112 - 0
qs_zhaoshang/pages/mine/help/index.vue

@@ -0,0 +1,112 @@
+<template>
+  <view class="help-container">
+    <view v-for="(item, findex) in list" :key="findex" :title="item.title" class="list-title">
+      <view class="text-title">
+        <view :class="item.icon"></view>{{ item.title }}
+      </view>
+      <view class="childList">
+        <view v-for="(child, zindex) in item.childList" :key="zindex" class="question" hover-class="hover"
+          @click="handleText(child)">
+          <view class="text-item">{{ child.title }}</view>
+          <view class="line" v-if="zindex !== item.childList.length - 1"></view>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        list: [{
+            icon: 'iconfont icon-github',
+            title: '若依问题',
+            childList: [{
+              title: '若依开源吗?',
+              content: '开源'
+            }, {
+              title: '若依可以商用吗?',
+              content: '可以'
+            }, {
+              title: '若依官网地址多少?',
+              content: 'http://ruoyi.vip'
+            }, {
+              title: '若依文档地址多少?',
+              content: 'http://doc.ruoyi.vip'
+            }]
+          },
+          {
+            icon: 'iconfont icon-help',
+            title: '其他问题',
+            childList: [{
+              title: '如何退出登录?',
+              content: '请点击[我的] - [应用设置] - [退出登录]即可退出登录',
+            }, {
+              title: '如何修改用户头像?',
+              content: '请点击[我的] - [选择头像] - [点击提交]即可更换用户头像',
+            }, {
+              title: '如何修改登录密码?',
+              content: '请点击[我的] - [应用设置] - [修改密码]即可修改登录密码',
+            }]
+          }
+        ]
+      }
+    },
+    methods: {
+      handleText(item) {
+        this.$tab.navigateTo(`/pages/common/textview/index?title=${item.title}&content=${item.content}`)
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  page {
+    background-color: #f8f8f8;
+  }
+
+  .help-container {
+    margin-bottom: 100rpx;
+    padding: 30rpx;
+  }
+
+  .list-title {
+    margin-bottom: 30rpx;
+  }
+
+  .childList {
+    background: #ffffff;
+    box-shadow: 0px 0px 10rpx rgba(193, 193, 193, 0.2);
+    border-radius: 16rpx;
+    margin-top: 10rpx;
+  }
+
+  .line {
+    width: 100%;
+    height: 1rpx;
+    background-color: #F5F5F5;
+  }
+
+  .text-title {
+    color: #303133;
+    font-size: 32rpx;
+    font-weight: bold;
+    margin-left: 10rpx;
+
+    .iconfont {
+      font-size: 16px;
+      margin-right: 10rpx;
+    }
+  }
+
+  .text-item {
+    font-size: 28rpx;
+    padding: 24rpx;
+  }
+
+  .question {
+    color: #606266;
+    font-size: 28rpx;
+  }
+</style>

+ 420 - 0
qs_zhaoshang/pages/mine/index.vue

@@ -0,0 +1,420 @@
+<template>
+  <view class="mine-container">
+	<view class="flex1">
+	  <uni-nav-bar background-color='transparent' statusBar='true' :border='border'>
+		  <block slot="right" v-if="checkPermi(['system:notice:list'])"> 
+			<view class="min_top" @click="getMessage">
+				<image :src="noticimg"></image>
+				<view v-if="noticenum">
+					<block v-if="noticenum>99">99+</block>
+					<block v-else>{{noticenum}}</block>
+				</view>
+			</view>
+		  </block>
+		 
+	  </uni-nav-bar>
+    <!--顶部个人信息栏-->
+	<view class="min-topa" @click="handleToInfo">
+		<view class="min-topat fw f22 cof mb12">{{name}}</view>
+		<view class="f15 cof5">查看账号信息/退出登录</view>
+	</view>
+	
+	<view >
+		<view class="flexc mine_list" @click="handleToAdd" v-if="checkPermi(['projectV2:sbbzb:add'])">
+		  <image :src="nlistimgf" class="limg"></image>
+		  <view class="f17 c34 flex1">上报线索</view>
+		  <image :src="rimg" class="rimg"></image>
+		</view>
+		<!-- @click="handleTojin" -->
+		<!-- <view class="flexc mine_list"  >
+		  <image :src="nlistimgg" class="limg"></image>
+		  <view class="f17 c34 flex1">项目归属统计</view>
+		  <image :src="rimg" class="rimg"></image>
+		</view> -->
+	  <view class="flexc mine_list" @click="handleToAll" v-if="checkPermi(['projectV2:sbbzb:list'])">
+	    <image :src="nlistimga" class="limg"></image>
+	    <view class="f17 c34 flex1">全部项目</view>
+	    <image :src="rimg" class="rimg"></image>
+	  </view>
+	  <view class="flexc mine_list" @click="handleTosk" v-if="checkPermi(['projectV2:skxm:list'])">
+	    <image :src="nlistimgb" class="limg"></image>
+	    <view class="f17 c34 flex1">省库申报</view>
+	    <image :src="rimg" class="rimg"></image>
+	  </view>
+	  <view class="flexc mine_list" @click="handleTowt" v-if="checkPermi(['projectV2:shyj:list'])">
+	   <image :src="nlistimgc" class="limg"></image>
+	   <view class="f17 c34 flex1">问题项目</view>
+	    <image :src="rimg" class="rimg"></image>
+	  </view>
+	  <view class="flexc mine_list" @click="handleTold" v-if="checkPermi(['projectV2:sbbzb:ldps:list'])">
+	   <image :src="nlistimgd" class="limg"></image>
+	   <view class="f17 c34 flex1">领导批示</view>
+	    <image :src="rimg" class="rimg"></image>
+	  </view>
+	  <view class="flexc mine_list" @click="handleToPwd">
+	    <image :src="nlistimge" class="limg"></image>
+	    <view class="f17 c34 flex1">修改密码</view>
+	    <image :src="rimg" class="rimg"></image>
+	  </view>
+	  <!-- #ifdef APP -->
+	  <view class="flexc mine_list" @click="onlineWgt">
+	    <image :src="nlistimgh" class="limg"></image>
+	    <view class="f17 c34 flex1">版本更新</view>
+	    <view  class="f15 c34 mlr8">{{wgtcode}}</view>
+	    <image :src="rimg" class="rimg"></image>
+	  </view>
+	  <!-- #endif -->
+	
+	  
+	</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">
+	<footers v-if="isfootflag" :footlist="footlist" :footerindex="footerindex" :color_checked="color_checked" :color_nochecked="color_nochecked" :isHomeIndex="false"></footers>	
+	</view>
+	
+  </view>
+</template>
+
+<script>
+  import storage from '@/utils/storage'
+  import footers from '@/components/footer/footer.vue'
+  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 {
+		 noticimg:require("@/static/images/mine/notice.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'),
+		 nlistimga:require('@/static/images/mine/nminea.png'),
+		 nlistimgb:require('@/static/images/mine/nmineb.png'),
+		 nlistimgc:require('@/static/images/mine/nminec.png'),
+		 nlistimgd:require('@/static/images/mine/nmined.png'),
+		 nlistimge:require('@/static/images/mine/nminee.png'),
+		 nlistimgf:require('@/static/images/mine/nminef.png'),
+		 nlistimgg:require('@/static/images/mine/nmineg.png'),
+		 nlistimgh:require('@/static/images/mine/nmineh.png'),
+		rimg:require("@/static/images/mine/rimg.png"),
+		border:false,
+		  
+        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:'center',title:'引荐项目',icon_checked:require('@/static/images/tabbar/cen_.png'),icon_nochecked:require('@/static/images/tabbar/cen.png')},
+			{module:'mine',title:'我的',icon_checked:require('@/static/images/tabbar/mine_.png'),icon_nochecked:require('@/static/images/tabbar/mine.png')},
+			],
+		 footerindex:'mine',
+		 showfooter: 0,
+		 isfootflag:true,
+		 color_checked :'343434',
+		 color_nochecked :'666666',
+		 noticenum:0,
+		 deptId:this.$store.state.user.deptId,
+		 wgtcode:this.$store.state.user.wgtcode,
+		 platform:'Android'  
+      }
+    },
+	components:{footers},
+    computed: {
+      avatar() {
+        return this.$store.state.user.avatar
+      },
+      windowHeight() {
+        return uni.getSystemInfoSync().windowHeight - 50
+      }
+    },
+	onLoad() {
+		if(checkPermi(['system:notice:number'])){
+			this.getNoticenumber()
+		}
+	},
+    methods: {
+		checkPermi, checkRole,
+	getNoticenumber(){
+		var params={
+			deptId:this.deptId
+		}
+		getNoticenumber(params).then(res=>{
+			if(res.code==200){
+				this.noticenum=Number(res.data)
+			}else{
+				this.$toast(res.msg)
+			}
+		})
+	},
+	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('该版本已是最新版')
+				}
+			}
+		}).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("更新失败,请稍后再试");
+					});
+				}
+			}
+		});
+		downloadTask.onProgressUpdate((res) => { //下载文件的进度
+			that.totalBytesWritten = res.totalBytesWritten; //当前下载大小
+			that.progress = res.progress; //当前下载比例
+			that.totalBytesExpectedToWrite = res.totalBytesExpectedToWrite; //
+		});
+	},
+	// 项目进展
+		handleToAdd(){
+			this.$tab.navigateTo('/pages/work/addclues')
+			// this.$tab.navigateTo('/pages/work/addcluelist') 
+		},
+		// 账号信息
+      handleToInfo() {
+        this.$tab.navigateTo('/pages/mine/info/index')
+      },
+	  // 修改密码
+	  handleToPwd(){
+		this.$tab.navigateTo('/pages/mine/pwd/index')  
+	  },
+	  //消息
+	  getMessage(){
+		  if(checkPermi(['system:notice:list'])){
+		  	this.$tab.navigateTo('/pages/work/message')
+		  } 
+	  },
+	  //审核进度pages/work/shprogres
+	  //全部项目
+	  handleToAll(){
+	  	this.$tab.navigateTo('/pages/work/allitems?idx=0') 
+	  },
+	  // 省库申报
+	  handleTosk(){
+	  			  this.$tab.navigateTo('/pages/work/skitem')
+	  },
+	  handleTowt(){
+	  	this.$tab.navigateTo('/pages/work/wtitem')
+	  },
+	  handleTold(){
+	  	 this.$tab.navigateTo('/pages/work/lditem')
+	  },
+	  
+	  
+      // handleToSetting() {
+      //   this.$tab.navigateTo('/pages/mine/setting/index')
+      // },
+      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')
+          })
+        })
+      },
+      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: #FFFFFF;
+  }
+.min_top{position: relative;width: 44rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 32rpx;
+	image{width: 38rpx;height: 40rpx;}
+	view{position: absolute;background: #ffffff;box-shadow: 0px 2rpx 6rpx 0px rgba(198,78,0,0.49);border-radius: 10rpx;color: #FF0000;font-size: 18rpx;right: -50%;top: -12rpx;border-radius: 50%;min-width: 40rpx;height: 40rpx;text-align: center;padding: 0 4rpx;box-sizing: border-box;line-height: 40rpx;}
+}
+.min-topa{padding: 64rpx 48rpx 108rpx;}
+.min-topat{font-weight: bold;color: #FFFFFF;}
+.mine_list{padding: 30rpx 48rpx;}
+.limg{width: 56rpx;height: 56rpx;margin-right: 30rpx;flex: 0 0 auto;}
+.rimg{width: 14rpx;height: 28rpx;flex: 0 0 auto;}
+
+.ztit{font-size: 24rpx;color:#c6c6c9;text-align: center;flex:0 0 auto;margin-bottom: 28rpx;margin-top: 40rpx;}
+
+
+
+
+
+  .mine-container {
+    width: 100%;
+    height: 100vh;
+	display: flex;flex-direction: column;
+	background: url('~@/static/images/mine/minebg.png') top center no-repeat;background-size: 100% 360rpx;
+
+    .header-section {
+      padding: 15px 15px 45px 15px;
+      background-color: #3c96f3;
+      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>

+ 127 - 0
qs_zhaoshang/pages/mine/info/edit.vue

@@ -0,0 +1,127 @@
+<template>
+  <view class="container">
+    <view class="example">
+      <uni-forms ref="form" :model="user" labelWidth="80px">
+        <uni-forms-item label="用户昵称" name="nickName">
+          <uni-easyinput v-model="user.nickName" placeholder="请输入昵称" />
+        </uni-forms-item>
+        <uni-forms-item label="手机号码" name="phonenumber">
+          <uni-easyinput v-model="user.phonenumber" placeholder="请输入手机号码" />
+        </uni-forms-item>
+        <uni-forms-item label="邮箱" name="email">
+          <uni-easyinput v-model="user.email" placeholder="请输入邮箱" />
+        </uni-forms-item>
+        <uni-forms-item label="性别" name="sex" required>
+          <uni-data-checkbox v-model="user.sex" :localdata="sexs" />
+        </uni-forms-item>
+      </uni-forms>
+      <button type="primary" @click="submit">提交</button>
+    </view>
+  </view>
+</template>
+
+<script>
+  import { getUserProfile } from "@/api/system/user"
+  import { updateUserProfile } from "@/api/system/user"
+
+  export default {
+    data() {
+      return {
+        user: {
+          nickName: "",
+          phonenumber: "",
+          email: "",
+          sex: ""
+        },
+        sexs: [{
+          text: '男',
+          value: "0"
+        }, {
+          text: '女',
+          value: "1"
+        }],
+        rules: {
+          nickName: {
+            rules: [{
+              required: true,
+              errorMessage: '用户昵称不能为空'
+            }]
+          },
+          phonenumber: {
+            rules: [{
+              required: true,
+              errorMessage: '手机号码不能为空'
+            }, {
+              pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+              errorMessage: '请输入正确的手机号码'
+            }]
+          },
+          email: {
+            rules: [{
+              required: true,
+              errorMessage: '邮箱地址不能为空'
+            }, {
+              format: 'email',
+              errorMessage: '请输入正确的邮箱地址'
+            }]
+          }
+        }
+      }
+    },
+    onLoad() {
+      this.getUser()
+    },
+    onReady() {
+      this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+      getUser() {
+        getUserProfile().then(response => {
+          this.user = response.data
+        })
+      },
+      submit(ref) {
+        this.$refs.form.validate().then(res => {
+          updateUserProfile(this.user).then(response => {
+            this.$toast("修改成功")
+          })
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #ffffff;
+  }
+
+  .example {
+    padding: 15px;
+    background-color: #fff;
+  }
+
+  .segmented-control {
+    margin-bottom: 15px;
+  }
+
+  .button-group {
+    margin-top: 15px;
+    display: flex;
+    justify-content: space-around;
+  }
+
+  .form-item {
+    display: flex;
+    align-items: center;
+    flex: 1;
+  }
+
+  .button {
+    display: flex;
+    align-items: center;
+    height: 35px;
+    line-height: 35px;
+    margin-left: 10px;
+  }
+</style>

+ 64 - 0
qs_zhaoshang/pages/mine/info/index.vue

@@ -0,0 +1,64 @@
+<template>
+  <view class="info">
+	  <view class='zhanline'></view>
+	<view class="pl12">
+		<view class="flexc infolist">
+			<view class="f16 fw c34 flex0">账号名称</view>
+			<view class="f16  c34 flex1 txr">{{user.userName}}</view>
+		</view>
+		<view class="flexc infolist">
+			<view class="f16 fw c34 flex0">用户类型</view>
+			<view class="f16  c34 flex1 txr">{{roleGroup}}</view>
+		</view>
+		<!-- <view class="flexc infolist">
+			<view class="f16 fw c34 flex0">联系方式</view>
+			<view class="f16  c34 flex1 txr">180****5668</view>
+		</view> -->
+		<view class="infobtn flexcc cf f16 mt60 f500" @click="handleLogout">退出登录</view>
+	</view>
+
+  </view>
+</template>
+
+<script>
+  import { getUserProfile } from "@/api/system/user"
+
+  export default {
+    data() {
+      return {
+        user: {},
+        roleGroup: "",
+        postGroup: "",
+	
+		
+      }
+    },
+    onLoad() {
+      this.getUser()
+    },
+    methods: {
+      getUser() {
+        getUserProfile().then(response => {
+          this.user = response.data
+          this.roleGroup = response.roleGroup
+          this.postGroup = response.postGroup
+        })
+      },
+	  handleLogout() {
+	    this.$modal.confirm('确定注销并退出系统吗?').then(() => {
+	      this.$store.dispatch('LogOut').then(() => {
+	        this.$tab.reLaunch('/pages/index')
+	      })
+	    })
+	  }
+    }
+  }
+</script>
+
+<style lang="scss">
+  page {
+    background-color: #ffffff;
+  }
+  .infolist{border-bottom: 2rpx solid #E5E5E5;padding: 40rpx 0;padding-right: 24rpx;}
+   .infobtn{width: 700rpx;height: 88rpx;background: #FA5F03;border-radius:10rpx;line-height: 88rpx;}
+</style>

+ 119 - 0
qs_zhaoshang/pages/mine/pwd/index.vue

@@ -0,0 +1,119 @@
+<template>
+<view class="info">
+  	  <view class='zhanline'></view>
+  	<uni-forms class="pl12" ref="form" :value="user">
+		<uni-forms-item name="oldPassword" style='margin-bottom: 0;'>
+		  <view class="flexc infolist">
+		  	<view class="f16 fw c34 flex0">旧密码</view>
+		  	<input  placeholder="请输入旧密码" v-if="oldcheckeye" type="text" v-model="user.oldPassword" class="f16  c34 flex1 txr"/>
+		  	<input  placeholder="请输入旧密码" v-else type="password" v-model="user.oldPassword" class="f16  c34 flex1 txr"/>
+		  	<view class="input_ye ml8" v-if="user.oldPassword" @click="oldcheckeye=!oldcheckeye">
+		  		<image :src="yeimgs" v-if="oldcheckeye"></image>
+		  		<image :src="yeimg" v-else></image>
+		  	</view>
+		  </view>
+		</uni-forms-item>
+		<uni-forms-item name="newPassword" style='margin-bottom: 0;'>
+		  <view class="flexc infolist">
+		  	<view class="f16 fw c34 flex0">新密码</view>
+		  	<input  placeholder="请输入新密码" v-if="newcheckeye" type="text" v-model="user.newPassword" class="f16  c34 flex1 txr"/>
+		  	<input  placeholder="请输入新密码" v-else type="password" v-model="user.newPassword" class="f16  c34 flex1 txr"/>
+		  	<view class="input_ye ml8" v-if="user.newPassword" @click="newcheckeye=!newcheckeye">
+		  		<image :src="yeimgs" v-if="newcheckeye"></image>
+		  		<image :src="yeimg" v-else></image>
+		  	</view>
+		  </view>
+		</uni-forms-item>
+  		<uni-forms-item name="confirmPassword" style='margin-bottom: 0;'>
+  		  <view class="flexc infolist">
+  		  	<view class="f16 fw c34 flex0">再次确认新密码</view>
+  		  	<input  placeholder="请再次输入新密码" v-if="concheckeye" type="text" v-model="user.confirmPassword" class="f16  c34 flex1 txr"/>
+  		  	<input  placeholder="请再次输入新密码" v-else type="password" v-model="user.confirmPassword" class="f16  c34 flex1 txr"/>
+  		  	<view class="input_ye ml8" v-if="user.confirmPassword" @click="concheckeye=!concheckeye">
+  		  		<image :src="yeimgs" v-if="concheckeye"></image>
+  		  		<image :src="yeimg" v-else></image>
+  		  	</view>
+  		  </view>
+  		</uni-forms-item>
+		<view class="infobtn flexcc cf f16 mt60 f500" @click="submit">确认修改</view>
+  	</uni-forms>
+  
+  </view>
+</template>
+
+<script>
+  import { updateUserPwd } from "@/api/system/user"
+
+  export default {
+    data() {
+      return {
+		yeimg:require("@/static/images/mine/nyea.png"),
+		yeimgs:require("@/static/images/mine/yea.png"),
+		newcheckeye:false,
+		concheckeye:false,
+		oldcheckeye:false,
+        user: {
+          oldPassword: undefined,
+          newPassword: undefined,
+          confirmPassword: undefined
+        },
+        rules: {
+          oldPassword: {
+            rules: [{
+              required: true,
+              errorMessage: '旧密码不能为空'
+            }]
+          },
+          newPassword: {
+            rules: [{
+                required: true,
+                errorMessage: '新密码不能为空',
+              },
+              {
+                minLength: 6,
+                maxLength: 20,
+                errorMessage: '长度在 6 到 20 个字符'
+              }
+            ]
+          },
+          confirmPassword: {
+            rules: [{
+                required: true,
+                errorMessage: '确认密码不能为空'
+              }, {
+                validateFunction: (rule, value, data) => data.newPassword === value,
+                errorMessage: '两次输入的密码不一致'
+              }
+            ]
+          }
+        }
+      }
+    },
+    onReady() {
+      this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+      submit() {
+		  var that=this;
+        this.$refs.form.validate().then(res => {
+			// this.user.oldPassword, 
+          updateUserPwd(this.user.oldPassword,this.user.newPassword).then(response => {
+            this.$toast("修改成功")
+			setTimeout(function(){
+				that.$tab.reLaunch('/pages/mine/index')
+			},1500)
+          })
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+ page {
+    background-color: #ffffff;
+  }
+  .infolist{border-bottom: 2rpx solid #E5E5E5;padding: 40rpx 0;padding-right: 24rpx;}
+  .infobtn{width: 700rpx;height: 88rpx;background: #FA5F03;border-radius:10rpx;line-height: 88rpx;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+</style>

+ 78 - 0
qs_zhaoshang/pages/mine/setting/index.vue

@@ -0,0 +1,78 @@
+<template>
+  <view class="setting-container" :style="{height: `${windowHeight}px`}">
+    <view class="menu-list">
+      <view class="list-cell list-cell-arrow" @click="handleToPwd">
+        <view class="menu-item-box">
+          <view class="iconfont icon-password menu-icon"></view>
+          <view>修改密码</view>
+        </view>
+      </view>
+      <view class="list-cell list-cell-arrow" @click="handleToUpgrade">
+        <view class="menu-item-box">
+          <view class="iconfont icon-refresh menu-icon"></view>
+          <view>检查更新</view>
+        </view>
+      </view>
+      <view class="list-cell list-cell-arrow" @click="handleCleanTmp">
+        <view class="menu-item-box">
+          <view class="iconfont icon-clean menu-icon"></view>
+          <view>清理缓存</view>
+        </view>
+      </view>
+    </view>
+    <view class="cu-list menu">
+      <view class="cu-item item-box">
+        <view class="content text-center" @click="handleLogout">
+          <text class="text-black">退出登录</text>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        windowHeight: uni.getSystemInfoSync().windowHeight
+      }
+    },
+    methods: {
+      handleToPwd() {
+        this.$tab.navigateTo('/pages/mine/pwd/index')
+      },
+      handleToUpgrade() {
+        this.$toast('模块建设中~')
+      },
+      handleCleanTmp() {
+        this.$toast('模块建设中~')
+      },
+      handleLogout() {
+        this.$modal.confirm('确定注销并退出系统吗?').then(() => {
+          this.$store.dispatch('LogOut').then(() => {
+            this.$tab.reLaunch('/pages/index')
+          })
+        })
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .page {
+    background-color: #f8f8f8;
+  }
+
+  .item-box {
+    background-color: #FFFFFF;
+    margin: 30rpx;
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+    align-items: center;
+    padding: 10rpx;
+    border-radius: 8rpx;
+    color: #303133;
+    font-size: 32rpx;
+  }
+</style>

+ 449 - 0
qs_zhaoshang/pages/seep.vue

@@ -0,0 +1,449 @@
+<template>
+	<view class="content">
+		<view class="bgbox"></view>
+		<view class="voice">
+			<view v-if="isShow">
+				<view v-if="sendLock" class="tip">
+					<view class="txt">试试这样说</view>
+					<view class="txt-bt">马大云银行、马大云、马大云发展有限公司</view>
+				</view>
+				<view v-else>
+					<view class="res-txt" @click="resultClick">
+						<text :style="{
+							color: (resultText == '正在识别中2...' || resultText == '未检测到语音,请重试') ? 
+							'#919098' : 
+							'#2979ff'}">
+							{{resultText}}
+						</text>
+						<image v-if="resultText != '正在识别中.1..' && resultText != '未检测到语音,请重试'"
+							src="/static/img/xiaoshou.png" mode="widthFix"></image>
+					</view>
+				</view>
+			</view>
+		 
+			<view v-else class="tip">
+				<view v-html="text" class="txt" style="color: #8e8d9a;"></view>
+		 
+				<view v-if="!sendLock" class="prompt-loader">
+					<view class="em" :style="randomRgb()" v-for="(item,index) in 30" :key="index"></view>
+				</view>
+				<view v-else class="prompt-loader"></view>
+			</view>
+		 
+			<view class="btn" @longpress="handleRecordStart" @touchmove="handleTouchMove"
+				@touchend="handleRecordStop">
+				<view class="btn-cont">
+					长按开始语音搜索
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+ 
+<script>
+	export default {
+		components: {
+			// popup
+		},
+		data() {
+			return {
+				recorderManager: uni.getRecorderManager(),
+				voiceToken: '',
+				timer: null,
+				text: '',
+				resultText: '正在识别中...',
+				startPoint: {},
+				sendLock: true,
+				isShow: true,
+				adioFileData: '',
+				adioSize: '',
+				resContent: '',
+				luyinStatus: true,
+				voicetext:'',
+				options: {}, // 语音转文字的设置
+			}
+		},
+		watch: {
+			sendLock(newVal, oldVal) {
+				console.log(newVal)
+				var that=this;
+				this.recorderManager.onStop(res => {
+					if (newVal) return //上锁不发送
+
+					//解锁发送网络请求
+					console.log(that.resultText,7)
+					setTimeout(function(res){
+						if(!that.voicetext){
+							that.resultText='未检测到语音,请重试'
+						}else{
+							that.resultText=that.voicetext
+						}
+						console.log(that.resultText,9)
+					},1200)
+					// this.uploadAudio(res.tempFilePath)
+					
+					console.log(res.tempFilePath, '获取录音文件')
+					// that.Audio2dataURL(res.tempFilePath)
+				});
+			},
+		},
+		mounted() {
+			console.log(1)
+			
+		},
+		methods: {
+			// 录音转文字
+			handleVoice() {
+				console.log('语音输入')
+				let _this = this;
+				this.options.engine = 'baidu'
+				this.options.punctuation = false; // 是否需要标点符号 
+				this.options.timeout = 10 * 1000; //超时时间
+				this.options.userInterface = false; // 是否显示语音界面
+				plus.speech.startRecognize(this.options, (s) => {
+					_this.voicetext = s
+					_this.zwz = true
+					plus.speech.stopRecognize(); // 关闭
+				});
+			},
+			//长按录音方法
+			handleRecordStart(e) {
+				this.startPoint = e.touches[0]; //记录长按时开始点信息,后面用于计算上划取消时手指滑动的距离。
+				this.recorderManager.start(); //开始录音
+				this.handleVoice()
+				this.text = `<text style="color:#333">上划取消搜索</text>`;
+				this.sendLock = false; //长按时不上锁。
+				this.isShow = false;
+				this.resultText = '正在识别中...';
+				// 按钮
+				console.log(67)
+			},
+			//结束录音 (手指松开)时触发
+			handleRecordStop(e) {
+				console.log(56)
+				this.isShow = true;
+				console.log(this.resultText,777)
+				this.recorderManager.stop(); //结束录音
+			},
+			//上划取消搜索
+			handleTouchMove(e) {
+				console.log(555)
+				let moveLenght = e.touches[e.touches.length - 1].clientY - this.startPoint.clientY;
+				if (Math.abs(moveLenght) > 50) {
+					this.text = `松开手指,<text style="color:#333">取消搜索</text>`;
+					this.sendLock = true; //触发了上滑取消搜索,上锁
+					this.isShow = false;
+				} else {
+					this.text = `<text style="color:#333">上划取消搜索</text>`;
+					this.sendLock = false; //上划距离不足,可以搜索,不上锁
+					this.isShow = false;
+				}
+			},
+ 
+			//上传录音文件
+			uploadAudio(tempFilePath) {
+	// 			uni.uploadFile({
+	// 				url: `${env.test.baseURL}/asr/v2/simpleRequest/`,
+	// 				filePath: tempFilePath,
+	// 				name: 'file',
+	// 				formData: { //接口上传参数
+	// 					api_key: '3yo',
+	// 					api_secret: 'zT2jXm7wCYth',
+	// 				},
+	// 				header: {
+	// 					'content-type': 'multipart/form-data',
+	// 					'Authorization': 'Basic cYmVyX3NlY3JldA',
+	// 					'Blade-Auth': uni.getStorageSync('Blade-Auth')
+	// 				},
+	// 				success: (res) => {
+	// 					if (res.statusCode != 200) {
+	// 						this.resultText = "未检测到语音,请重试";
+	// 						return;
+	// 					}
+ 
+	// 					let index = res.data.indexOf('{')
+	// 					let id = JSON.parse(res.data.substr(index)).job_id
+	// 					let params = {
+	// 						job_id: id,
+	// 						token: this.voiceToken,
+	// 					}
+	// 					this.getResult(params)
+	// 					console.log(params, 'params')
+	// 					console.log(res, 'resss')
+	// 				},
+	// 				fail: (err) => {
+	// 					this.resultText = "未检测到语音,请重试";
+	// 					console.log('---上传失败---' + JSON.stringify(err))
+	// 				}
+	// 			})
+			},
+			// 录音之后的结果
+			//获取录音结果
+			//获取录音结果子传父
+			resultClick() {
+				console.log(78)
+				if (this.resultText == '正在识别中...' || this.resultText == '未检测到语音,请重试') return;
+				this.$emit('voiceResult', this.resultText)
+			},
+ 
+			//录音token
+			
+			show() {
+				this.$refs.popup.show() // 显示
+				this.voiceTokenMethod()
+			},
+			hide() {
+				this.$refs.popup.hide() // 隐藏
+			},
+			//弹窗关闭之后的操作,点击遮罩层或关闭按钮
+			afterHide() {
+				console.log(77)
+				this.sendLock = true;
+				this.$emit('closePopup');
+				clearInterval(this.timer);
+				this.resultText = '正在识别中...';
+			},
+			randomRgb() {
+				let R = Math.floor(Math.random() * 130 + 110);
+				let G = Math.floor(Math.random() * 130 + 110);
+				let B = Math.floor(Math.random() * 130 + 110);
+				return {
+					background: `rgb(${R},${G},${B}, 1)`
+				};
+			},
+		}
+	}
+</script>
+ 
+<style lang="scss" scoped>
+	.voice {
+		height: 500rpx;
+		padding: 100rpx 60rpx 0 60rpx;
+		position: relative;
+		background-color: #fff;
+		position: fixed;
+		left:0;right:0;bottom:0;z-index: 20;
+		.res-txt {
+			text-align: center;
+			margin-top: 40rpx;
+			font-size: 36rpx;
+			color: #919098;
+ 
+			image {
+				display: block;
+				margin: auto;
+				margin-top: 10rpx;
+				width: 60rpx;
+				animation: bounce-down 2.6s linear infinite;
+			}
+		}
+ 
+		.tip {
+			margin-top: 15rpx;
+			text-align: center;
+ 
+			.txt {
+				font-size: 36rpx;
+				color: #151823;
+			}
+ 
+			.txt-bt {
+				margin-top: 20rpx;
+				color: #919098;
+			}
+		}
+ 
+		.btn {
+			width: 50%;
+			height: 80rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			color: #fff;
+			border-radius: 50rpx;
+			background: #3484fd;
+			position: absolute;
+			bottom: 50px;
+			left: 50%;
+			transform: translateX(-50%);
+ 
+			.btn-cont {
+				display: flex;
+				align-items: center;
+			}
+		}
+	}
+ 
+	@-webkit-keyframes bounce-down {
+		25% {
+			-webkit-transform: translateY(-10px);
+		}
+ 
+		50%,
+		100% {
+			-webkit-transform: translateY(0);
+		}
+ 
+		75% {
+			-webkit-transform: translateY(13px);
+		}
+	}
+</style>
+<style scoped>
+	.content{background-color: #f5f5f5;position: fixed;left: 0;right: 0;bottom: 0;z-index: 10000;height: 500rpx;}
+	/* 语音动画 */
+	.prompt-loader {
+		width: 100%;
+		height: 35px;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		margin: 30rpx auto;
+	}
+ 
+	.prompt-loader .em {
+		height: 15%;
+		width: 2px;
+		float: left;
+		display: block;
+		background: #333333;
+	}
+ 
+	.prompt-loader .em:last-child {
+		margin-right: 0px;
+	}
+ 
+	.prompt-loader .em:nth-child(1) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(2) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(3) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(4) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(5) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(6) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(7) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(8) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(9) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(10) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(11) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(12) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(13) {
+		animation: load 1.3s 1s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(14) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(15) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(16) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(17) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(18) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(19) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(20) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(21) {
+		animation: load 1.3s 0.5s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(22) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(23) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(24) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(25) {
+		animation: load 1.3s 0.8s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(26) {
+		animation: load 1.3s 0.2s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(27) {
+		animation: load 1.3s 0.4s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(28) {
+		animation: load 1.3s 0.1s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(29) {
+		animation: load 1.3s 0.3s infinite linear;
+	}
+ 
+	.prompt-loader .em:nth-child(30) {
+		animation: load 1.3s 0.6s infinite linear;
+	}
+ 
+	@keyframes load {
+		0% {
+			height: 15%;
+		}
+ 
+		50% {
+			height: 100%;
+		}
+ 
+		100% {
+			height: 15%;
+		}
+	}
+</style>

+ 157 - 0
qs_zhaoshang/pages/work/addcluelist.vue

@@ -0,0 +1,157 @@
+<template>
+	<view class="allpage">
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch' :name="name"></tab-searchone>
+		</view>
+		<view class="zhanline"></view>
+		<view class="alllist">
+			<time-year @bindDateChange="bindDateChange" ></time-year>
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt='wtdt' @getDetail='goDetail'></project-list>
+			
+		</view>
+		<view @click="getAddClueFn" class="cluebtn btn2">上报线索</view>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getsbbzblist} from '@/api/work/clue.js'
+	export default{
+		data(){
+			return{
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				itemslist:[],
+				wtdt:'',
+				tabidx:0,
+				date:'',
+				list:[],
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				census:'',
+				deptId:this.$store.state.user.deptId,
+			}
+		},
+		components:{
+			projectList,tabSearchone,timeYear
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad(e) {
+			if(e.xmmc){
+				this.name=e.xmmc;
+			}
+			let date = new Date();
+			let y = date.getFullYear();
+			this.beginTime=y+'0101';
+			this.endTime=y+'1231';
+			this.getDataFn();
+			uni.$on('refreshdatalist',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			getAddClueFn(){
+				this.$tab.navigateTo('/pages/work/addclues')
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmxsmc:this.name,
+					deptId:this.$store.state.user.deptId
+				}
+				params['params[beginTime]']=this.beginTime
+				params['params[endTime]']=this.endTime
+				getsbbzblist(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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			},
+			bindDateChange(e){
+				this.year=e;
+				this.beginTime=e+'0101';
+				this.endTime=e+'1231';
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
+				 // this.$tab.navigateTo('/pages/work/cluedetails?id='+e+"&tabidx="+this.tabidx)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding:110rpx 0 100rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+ .alllist{padding-top:10rpx ;}
+  // 操作按钮
+  .cluebtn{
+  	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;
+  	&.btn1{background-color: #1FB9F7;flex: 1;}
+  	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+</style>

+ 1279 - 0
qs_zhaoshang/pages/work/addclues.vue

@@ -0,0 +1,1279 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <!-- 第一页 -->
+		<view v-show="type==1" >
+			<uni-forms class='inform'  ref="firstform" :rules="firstrules" :modelValue="datainfo">
+				<view class="info_tit">基本信息</view>
+				<uni-forms-item name="sbdw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>上报单位</view>
+				  	<input  placeholder="请输入上报单位" v-model="datainfo.sbdw"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tbrq" style='margin-bottom: 0;' >
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>填表日期</view>
+					<view class="infolist_a">{{datainfo.tbrq}}</view>
+				  	<!-- <picker mode="date" :value="datainfo.tbrq" :end="currentdate" class="infolist_a" @change='bindDateChange'>
+						<view :class="datainfo.tbrq?'':'f16 co80'">{{datainfo.tbrq||"请选择填表日期"}}</view>
+				  	</picker> -->
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zszxfzr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目负责人</view>
+				  	<input  placeholder="请输入项目负责人姓名" v-model="datainfo.zszxfzr"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="info_tit">投资方信息</view>
+				<uni-forms-item name="" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+					 <view class="flexc infolist_add" @click="getAdd">
+						 <image :src="addimg"></image>
+						 <view>新增企业/自然人</view>
+					 </view>
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>添加企业/自然人</view>
+					<view class="flex1 txr ">
+						<text class="uni-calendar__header-text" v-if="qiziflag"></text>
+						<text class="f16 co80" v-else>请先选择添加企业/自然人</text>
+						<!-- <image :src="delimg" class="delimg"></image> -->
+					</view>
+				  </view>
+				</uni-forms-item>
+				<!-- 企业自然人展示 -->
+				<view class="qibox" v-if="qiziflag">
+					<block v-if="qiaddlist.length">
+						<view class="flexc infolist qi" v-for="(ite,idx) in qiaddlist" :key="'infb-'+idx" @click="getDetailQi(ite)">
+						 	<view class="f15 fw c34 flex0 pr pl12 ">企业</view>
+							<view class="flex1 txr flexc over ml8">
+								<text class="flex1 f15 c34 over">{{ite.companyName}}/{{ite.companyAddress}}/{{ite.companyLegal}}/{{ite.companyCode}}/{{ite.phone}}</text>
+								<view class="delimg flex0" @click.stop="getDelQi(ite.id,idx)">
+									<image :src="delimg"></image>
+								</view>
+								
+							</view>
+						 </view>
+					</block>
+					 <block v-if="ziaddlist.length">
+						 <view class="flexc infolist qi" v-for="(ite,idx) in ziaddlist" :key="'infa-'+idx" @click="getDetailZi(ite)">
+						  	<view class="f15 fw c34 flex0 pr pl12 ">自然人</view>
+						 	<view class="flex1 txr flexc over ml8">
+						 		<text class="flex1 f15 c34 over">{{ite.name}}/{{ite.address}}/{{ite.phone}}</text>
+						 		<view class="delimg flex0" @click.stop="getDelZi(ite.id,idx)">
+						 			<image :src="delimg"></image>
+						 		</view>
+						 	</view>
+						  </view>
+					 </block>
+					 
+				</view>
+				<uni-forms-item name="tzrxm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投资人姓名</view>
+				  	<input  placeholder="请输入投资人姓名" v-model="datainfo.tzrxm"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tzrzw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">投资人职务</view>
+				  	<input  placeholder="请输入投资人职务" v-model="datainfo.tzrzw"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tzrdh" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">联系方式</view>
+				  	<input  placeholder="请输入联系方式" v-model="datainfo.tzrdh"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="gtzzrsfzhm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">身份证号</view>
+				  	<input  placeholder="请输入个体投资人身份证号" v-model="datainfo.gtzzrsfzhm"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<!-- <uni-forms-item name="qytzrxyzdm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">信用证代码</view>
+				  	<input  placeholder="请输入企业投资人信用证代码" v-model="datainfo.qytzrxyzdm"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item> -->
+				
+			</uni-forms>
+			<view class="infobtn flexcc cf f16 f500" @click="getNext(1)">下一步</view>
+			<!-- 弹框 -->
+			<view class="bgbox" @click="getClose" v-if="addflag"></view>
+			<view class="fixedbox" v-if="addflag">
+				<image :src="closeimg" class="choseimg" @click="getClose"></image>
+				<view class="top">添加信息</view>
+				<view  class="boxs">
+					<view class="mb30">
+						<view class="flexc">
+							<view class="flexcc boxcen" :class="shenflag?'act':''" @click="shenflag=true">
+								<image :src="gcheckimg" v-if="shenflag"></image>
+								<image :src="checknimg" v-else></image>
+								<view :class="shenflag?'co28':''">添加企业</view>
+							</view>
+							<view class="flexcc boxcen" :class="shenflag?'':'act'" @click="shenflag=false">
+								<image :src="checknimg" v-if="shenflag"></image>
+								<image :src="gcheckimg" v-else></image>
+								<view :class="shenflag?'':'co28'">添加自然人</view>
+							</view>
+						</view>
+					</view>
+					<!-- 企业 -->
+					<uni-forms ref="qiform" :rules="qirules" :modelValue="qiinfo" v-show='shenflag'>
+						<uni-forms-item name="companyName" style='margin-bottom: 0;'>
+						 <view class="flexc infolist pr">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业名称</view>
+						  	<input @input="getInput" @blur="getBlur"  placeholder="请输入企业名称" v-model="qiinfo.companyName"  class="f16  c34 flex1 txr"/>
+						  </view>
+						  <!-- 企业联想 -->
+						  <view class="addrSearch_list" v-if="qilianflag">
+						  	<view class="triangle"></view>
+							<!-- 加载 -->
+							<uni-load-more v-if="loading" :status="status" :content-text="contentText" />
+							<!-- 有数据 -->
+						  	<view class="addrSearch_item" v-if="qilist.length" v-for="(ite, idx) in qilist" :key="'indo-'+idx" @click="handleAddrClick(ite)">
+						  		<view class="wrap_text" >{{ite.Name}}</view>
+						  	</view>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="companyAddress" style='margin-bottom: 0;'>	
+						
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业所在地</view>
+						  	<input  placeholder="请输入企业所在地" v-model="qiinfo.companyAddress"  class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="companyLegal" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>法人代表姓名</view>
+						  	<input  placeholder="请输入法人代表姓名" v-model="qiinfo.companyLegal" class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="companyCode" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>统一社会信用代码</view>
+						  	<input  placeholder="请输入统一社会信用代码" v-model="qiinfo.companyCode" class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="phone" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>联系方式</view>
+						  	<input  placeholder="请输入联系方式" v-model="qiinfo.phone"  class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						
+					</uni-forms>
+					<!-- 自然人 -->
+					<uni-forms ref="ziform" :rules="zirules" :modelValue="ziinfo" v-show="!shenflag">
+						<uni-forms-item name="idcode" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12">身份证号码</view>
+						  	<input  placeholder="请输入身份证号码" v-model="ziinfo.idcode"  class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="name" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>姓名</view>
+						  	<input  placeholder="请输入姓名" v-model="ziinfo.name"  class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="address" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>自然人所在地</view>
+						  	<input  placeholder="请输入自然人所在地" v-model="ziinfo.address"  class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="phone" style='margin-bottom: 0;'>
+						 <view class="flexc infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>联系方式</view>
+						  	<input  placeholder="请输入联系方式" v-model="ziinfo.phone"  class="f16  c34 flex1 txr"/>
+						  </view>
+						</uni-forms-item>
+						
+					</uni-forms>
+				</view>
+				<view class="fixedbtn" @click="getqySubmit">确认</view>
+			</view>
+		</view>
+		<!-- 第二页 -->
+		<view v-show="type==2">
+			<uni-forms class='inform'  ref="twoform" :rules="tworules" :modelValue="datainfo">
+				<view class="info_tit">项目信息</view>
+				<uni-forms-item name="xmbh" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">项目编号</view>
+				  	<input  placeholder="请输入项目编号" disabled="true" v-model="datainfo.xmbh"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmxsmc" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目线索名称</view>
+				  	<input  placeholder="请输入项目线索名称" v-model="datainfo.xmxsmc"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sfwlhxxxm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>是否为领航信息项目</view>
+					<picker  range-key='label' :value="lhindex" :range="lhlist" class="infolist_a" @change='bindDateChangea'>
+						<view :class="sfwlhxxxm?'':'f16 co80'">{{sfwlhxxxm||"请选择是否为领航信息"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="yzssName" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>引资省市</view>
+				  	<input  placeholder="请输入引资省市" v-model="datainfo.yzssName"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="ntze" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟投资额 (亿元)</view>
+				  	<input  placeholder="请输入拟投资额" type="number" v-model="datainfo.ntze"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="cylxName" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>产业类型</view>
+					<picker  range-key='dictLabel' :value="indusindex" :range="industrytype" class="infolist_a" @change='bindDateChangeb'>
+						<view :class="datainfo.cylxName?'':'f16 co80'">{{datainfo.cylxName||"请选择产业类型"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmlb" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目类别</view>
+					<!-- 多选 -->
+					<view :class="prolaber?'infolist_a':'flex1 txr f16 co80'" @click="getMoreFn(1)">{{prolaber||"请选择项目类别"}}</view>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nlhd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟落户地</view>
+					<picker  range-key='dictLabel' :value="nlhdindex" :range="location" class="infolist_a" @change='bindDateChangec'>
+						<view :class="datainfo.nlhd?'':'f16 co80'">{{datainfo.nlhd||"请选择拟落户地"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="qybj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业背景</view>
+					<view :class="qybglaber?'infolist_a':'flex1 txr f16 co80'" @click="getMoreFn(2)">{{qybglaber||"请选择企业背景"}}</view>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmjj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目简介</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.xmjj"  placeholder="( 含投资额、固定资产投资额、投资强度、投资方式、预期效益、用地规模、各类建筑面积、入驻需求、需哪些要素部门予以保障)" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmjzqk" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目进展</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.xmjzqk"  placeholder="请输入项目进展情况" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+			</uni-forms>
+			<view class="infobtn flexcc cf f16 f500" @click="getNext(2)">下一步</view>
+			<!-- 弹框 -->
+			<view class="bgbox" @click="getClose" v-if="moretype>0"></view>
+			<!--  -->
+			<view class="fixedbox"  v-if="moretype==1">
+				<image :src="closeimg" class="choseimg" @click="getClose"></image>
+				<view class="top">项目类别</view>
+				<view class="boxs">
+					<uni-data-checkbox :map="map" multiple @change="checkboxChangea" v-model="provalue" :localdata="projectlist" ></uni-data-checkbox>
+				</view>
+				<view class="fixedbtn" @click="proSure">确认</view>
+			</view>
+			<view class="fixedbox"  v-if="moretype==2">
+				<image :src="closeimg" class="choseimg" @click="getClose"></image>
+				<view class="top">企业背景</view>
+				<view class="boxs">
+					<uni-data-checkbox :map="map" multiple @change="checkboxChangeb" v-model="qybgvalue" :localdata="backgroundlist" ></uni-data-checkbox>
+				</view>
+				<view class="fixedbtn" @click="qySure">确认</view>
+			</view>
+			
+		</view>	
+		<!-- 第三页 -->
+		<view v-show="type==3">
+			<uni-forms class='inform'  ref="thirdform" :rules="thirdrules" :modelValue="datainfo">
+				<view class="info_tit">首谈信息</view>
+				<uni-forms-item name="name" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈人姓名</view>
+				  	<input  placeholder="请输入首谈人姓名" v-model="datainfo.name"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈人职务</view>
+				  	<input  placeholder="请输入首谈人职务" v-model="datainfo.zw"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="phone" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈人联系方式</view>
+				  	<input  placeholder="请输入首谈人联系方式" v-model="datainfo.phone"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="strq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>首谈日期</view>
+				  	<picker mode="date" :value="datainfo.strq" :end="currentdate" class="infolist_a" @change='bindDateChanged'>
+						<view :class="datainfo.strq?'':'f16 co80'">{{datainfo.strq||"请选择首谈日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				
+				<view class="border"></view>
+				<!-- <uni-forms-item name="xmjz" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">当前进展</view>
+					<view @click="getAddProject" class="f16  co80 flex1 txr">添加项目进展</view>
+				  </view>
+				</uni-forms-item> -->
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+					<view class="infolist_a co28">
+						<!-- 上传附件 -->
+						<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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infolist_b" style="margin-top: 20rpx;">含项目建议书(项目分析报告或投资计划书)、洽谈现场照片等资料</view>
+			</uni-forms>
+			<view class="infobtn flexcc cf f16 f500" v-if="checkPermi(['projectV2:sbbzb:add','projectV2:sbbzb:edit'])" @click="getNext(3)">提交</view>
+			<!-- <third-clue @getNext='getNext' :datainfo='datainfo'></third-clue> -->
+		</view>
+		<!-- 弹窗 -->
+		<pop-up :type="poptype" @getClose='getClose'   @getXmSubmitFn='getXmSubmitFn'></pop-up>
+  </view>
+  <!-- <uni-easyinput type="textarea" v-model="value" placeholder="请输入内容"></uni-easyinput> -->
+</template>
+
+<script>
+	import firstClue from "@/components/addclue/first.vue"
+	import secondClue from "@/components/addclue/second.vue"
+	import thirdClue from "@/components/addclue/third.vue"
+	import popUp from "@/components/popup/popup.vue"
+	import {getqichachaSearch,getCommonXmbh,getAddPersion,getPutPersion,getDelPersion,getPersionList,getPersionid,getAddInvestor,getPutInvestor,getDelInvestor,getInvestorList,getInvestorid,getsbbzbAddFn,getsbbzbPutFn} from "@/api/work/addclue.js"
+	import {getsbbzbdetail} from "@/api/work/clue.js"
+  import { getDictionaryFn} from '@/api/work/index.js'
+  import {selectDictLabel} from "@/utils/common.js"
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  export default {
+	  components:{
+		  firstClue,secondClue,thirdClue,popUp
+	  },
+    data() {
+      return {
+		   dzvalue: [1,2],
+		   range: [{"dictValue": 1,"dictLabel": "篮球"    },{"dictValue": 2,"dictLabel": "足球"},{"dictValue": 3,"dictLabel": "游泳"}],
+		  //附件
+		  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,ppt,txt,pdf,zip,rar,word',
+        // 文件上传大小限制
+        size: 100,
+        // 文件数量限制 默认10
+        count: 5,
+        // 文件回显列表
+        files: new Map(),
+        // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+        wxFiles: [],
+        // 是否打印日志
+        debug: false,
+        filelist:[], 
+		
+			
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		poptype:0,//弹窗类型 1暂存/消耗 2审核意见 3批示
+		pagetype:'add',
+		status: 'loading',
+		loading:false,
+		contentText:{contentrefresh: '加载中',},
+		
+		datainfo:{
+			"sbdw":"",//潜山
+		    "tbrq":"",//填表日期
+		    "zszxfzr":"",//项目负责人
+		    "xmbh":"",//项目编号
+		    "xmxsmc":"",//项目线索名称
+		    "sfwlhxxxm":"",//是否为领航信息项目
+		    "yzdqId":"",//引资地区(字典)
+		    "yzdqName":"",//引资地区名称
+		    "ntze":"",//拟投资额(亿元)
+		    "cylxId":"",//产业类型id(字典)
+		    "cylxName":"",//潜山
+		    "xmlb":"",//项目类别
+		    "tzlb":"",//投资类别
+		    "nlhd":"",//拟落户地
+		    "czpt":"",//承载平台
+		    "tzzt":"",//投资主体
+		    "xmjz":"",//项目进展
+		    "xmjzqk":"",//项目进展情况
+		    "gtzzrsfzhm":"",//个体投资人身份证号码
+		    "qybj":"",//企业背景
+		    "tzfjj":"",//投资方简介
+		    "sndxse":"",//上年度销售额(万元)
+		    "sndnse":"",//上年度纳税额(万元)
+		    "tzrxm":"",//投资人姓名
+		    "tzrzw":"",//投资人职务
+		    "tzrdh":"",//投资人电话
+		    "xmjj":"",//项目简介
+		    "czwt":"",//存在问题
+		    "name":"",//首谈人
+		    "strq":"",//首谈日期
+		    "phone":"",//首谈人手机号
+		    "zw":"",//首谈人职务
+			zsyzFjList:[],
+		},
+		addimg:require("@/static/images/mine/add.png"),
+		delimg:require("@/static/images/mine/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		addflag:false,
+		shenflag:true,
+		qiziflag:false,//是否有企业或者自然人
+		qilist:[],//企业联想
+		qilianflag:false,
+		qiaddlist:[],
+		ziaddlist:[],
+		qiinfo:{
+			companyName:'',
+			companyAddress:'',
+			companyLegal:'',
+			companyCode:'',
+			phone:'',
+		},
+		ziinfo:{
+			name:'',
+			address:'',
+			idcode:'',
+			phone:'',
+		},
+		firstrules: {
+		  sbdw: {rules: [{required: true,errorMessage: '请输入上报单位'}]},
+		  tbrq: {rules: [{required: true,errorMessage: '请选择填表日期'}]},
+		  zszxfzr: {rules: [{required: true,errorMessage: '请输入项目负责人姓名' } ]},
+		  tzrxm: {rules: [{required: true,errorMessage: '请输入投资人姓名'} ]},
+		},
+		qirules:{
+			companyName: {rules: [{required: true,errorMessage: '请输入企业名称'}]},
+			companyAddress: {rules: [{required: true,errorMessage: '请输入企业所在地'}]},
+			companyLegal: {rules: [{required: true,errorMessage: '请输入法人代表姓名'}]},
+			companyCode: {rules: [{required: true,errorMessage: '请输入统一社会信用代码'}]},
+			phone: {rules: [{required: true,errorMessage: '请输入联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'}]},
+		},
+		zirules:{
+			name: {rules: [{required: true,errorMessage: '请输入姓名'}]},
+			address: {rules: [{required: true,errorMessage: '请输入自然人所在地'}]},
+			phone: {rules: [{required: true,errorMessage: '请输入联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'}]},
+		},
+		// 第二步骤
+		tworules: {
+		  xmxsmc: {rules: [{required: true,errorMessage: '请输入项目线索名称'}]},
+		  sfwlhxxxm: {rules: [{required: true,errorMessage: '请选择是否为领航信息'}]},
+		  
+		  ntze: {rules: [{required: true,errorMessage: '请输入拟投资额'} ]},
+		  cylxName: {rules: [{required: true,errorMessage: '请选择产业类型'} ]},
+		  xmlb: {rules: [{required: true,errorMessage: '请选择项目类别'} ]},
+		  nlhd: {rules: [{required: true,errorMessage: '请选择拟落户地'} ]},
+		  xmjj: {rules: [{required: true,errorMessage: '请输入项目简介'} ]},
+		  xmjzqk: {rules: [{required: true,errorMessage: '请输入项目进展情况'} ]},
+		  qybj: {rules: [{required: true,errorMessage: '请选择企业背景'} ]},
+		  yzssName: {rules: [{required: true,errorMessage: '请输入引资省市'}]},
+		},
+		thirdrules: {
+		  name: {rules: [{required: true,errorMessage: '请输入首谈人姓名'}]},
+		  zw: {rules: [{required: true,errorMessage: '请输入首谈人职务'}]},
+		  phone: {rules: [{required: true,errorMessage: '请输入首谈人联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'} ]},
+		  strq: {rules: [{required: true,errorMessage: '请选择首谈日期'} ]},
+		  xmlb: {rules: [{required: true,errorMessage: '请输入项目进展'} ]}, 
+		  zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		},
+		lhlist:[{label:'是',id:'S'},{label:'否',id:'N'},],//领航
+		cyindex:0,
+		indusindex:0,
+		nlhdindex:0,//拟落户地
+		prolaber:'',//项目类型
+		qybglaber:"",//企业背景
+		lhindex:0,
+		moretype:0,
+		qybgvalue:[],
+		provalue:[],
+		map:{text:'dictLabel',value:'dictValue'},
+		location:[],//拟落户地
+		industrytype:[],//产业类别
+		projectlist:[],//项目类别
+		backgroundlist:[],//企业背景
+		projectchose:[],//选择的项目类型
+		qybgchose:[],
+		timeoutId:'',
+		currentdate:'',//当前日期
+		sfwlhxxxm:'',
+		firstform:{},
+		twoform:{},
+		thirdform:{},
+		qiform:{},
+		ziform:{},
+	}
+    },
+	onLoad(e) {
+		var that=this;
+		this.currentdate = this.getNowFormatDate();
+		var newObj={}
+		if(e.data){
+			 newObj=JSON.parse(decodeURIComponent(e.data))
+		}
+		this.pagetype=newObj.pagetype||'add';
+		this.getinvestmentarea()
+		if(this.pagetype=='update'){
+			this.datainfo.xmId=newObj.xmId;
+			this.datainfo.xmbh=newObj.xmbh;
+			this.datainfo.xmmc=newObj.xmmc;
+			this.init()
+			that.getDataFn()
+			// setTimeout(function(){
+				
+			// },1200)
+			// this.getDataFn()
+		}else{
+			// 自动生成编号
+			this.getCommonXmbh()
+			this.datainfo.tbrq=this.getNowFormatDatesfm();
+			// this.datainfo.tbrq=this.currentdate
+			this.datainfo.strq=this.currentdate
+			// 获取详情 修改
+			
+		}
+		
+		// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+		
+	},
+	onHide() {
+		// #ifdef APP-PLUS
+		uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+		// #endif
+	    
+	},
+    methods: {
+		checkPermi, checkRole,
+		// 项目进展
+		getAddProject(){
+			this.poptype=Number(4)
+		},
+		getXmSubmitFn(data){
+			var that=this;
+			var params=JSON.parse(JSON.stringify(data))
+			params.xmId=this.datainfo.xmId;
+			// params.xmmc=this.datainfo.xmmc; 
+			params.xmbh=this.datainfo.xmbh;
+			getjzqkFn(params).then(res=>{
+				if(res.code==200){
+					that.$toast('添加项目进展成功')
+					setTimeout(function(){
+						that.poptype=0;
+					},1500)									
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		// 线索详情
+		getDataFn(){
+			getsbbzbdetail(this.datainfo.xmId).then(res=>{
+				var that=this;
+				if(res.code==200){
+					this.datainfo=res.data;
+					// 领航
+					this.sfwlhxxxm=this.datainfo.sfwlhxxxm=='Y'||this.datainfo.sfwlhxxxm=='S'?'是':'否';
+					this.lhindex=this.datainfo.sfwlhxxxm=='Y'||this.datainfo.sfwlhxxxm=='S'?0:1;
+					// 项目类型
+					this.projectchose=this.datainfo.xmlb.split(',')
+					this.prolaber=this.projectchose.join('/');
+					// 字典值返回
+					var proArr=[]
+					this.projectchose.forEach(ite=>{
+						var pronum = Number(selectDictLabel(that.projectlist,ite))
+						proArr.push(pronum)
+					})
+					this.provalue=proArr
+
+					// 企业背景
+					this.qybgchose=this.datainfo.qybj.split(',')
+					this.qybglaber=this.qybgchose.join('/');
+					var backgrounArr=[];
+					this.qybgchose.forEach(ite=>{
+						var pronum = Number(selectDictLabel(that.backgroundlist,ite))
+						backgrounArr.push(pronum)
+					})
+					this.qybgvalue=backgrounArr
+					
+					// 产业类别
+					for(var i=0;i<that.industrytype.length;i++){
+						if(that.industrytype[i].dictLabel==this.datainfo.cylxName){
+							this.indusindex=Number(i)
+							break;
+						}
+					}
+					// 拟落户地
+					for(var i=0;i<that.location.length;i++){
+						if(that.location[i].dictLabel==this.datainfo.nlhd){
+							this.nlhdindex=Number(i)
+							break;
+						}
+					}
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+					// sfwlhxxxm
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getNowFormatDate(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			// let h = date.getHours();
+			// h = h < 10 ? "0" + h : h;
+			// let ms = date.getMinutes();
+			// ms = ms < 10 ? "0" + ms : ms;
+			// let s = date.getSeconds();
+			// s = s < 10 ? "0" + s : s;
+			// const time = y + "-" + m + "-" + d + " " + h + ":" + ms + ":" + s;
+			const timeday = y + "-" + m + "-" + d;
+			return timeday;
+		},
+		getNowFormatDatesfm(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			let h = date.getHours();
+			h = h < 10 ? "0" + h : h;
+			let ms = date.getMinutes();
+			ms = ms < 10 ? "0" + ms : ms;
+			let s = date.getSeconds();
+			s = s < 10 ? "0" + s : s;
+			const time = y + "-" + m + "-" + d + " " + h + ":" + ms + ":" + s;
+			// const timeday = y + "-" + m + "-" + d;
+			return time;
+		},
+		init(){
+			this.getInvestorList()//企业列表
+			this.getPersionList()//自然人列表
+		},
+		// 字典值
+		getinvestmentarea(){
+			// 拟落户地
+			getDictionaryFn('proposed_location').then(res=>{
+				if(res.code==200){
+					this.location = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			// 产业类型
+			getDictionaryFn('industry_type').then(res=>{
+				if(res.code==200){
+					this.industrytype = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			//项目类别
+			getDictionaryFn('project_category').then(res=>{
+				if(res.code==200){
+					this.projectlist = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			//企业背景
+			getDictionaryFn('enterprise_background').then(res=>{
+				if(res.code==200){
+					this.backgroundlist = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+		},
+		getNext(idx){
+			var that=this;
+			if(idx==1){
+				// 第一页
+				this.$refs.firstform.validate().then(res => {
+					if(this.qiaddlist.length||this.ziaddlist.length){
+						
+						if(this.datainfo.tzrdh){
+							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.datainfo.tzrdh)) {
+								that.$toast("请输入正确的联系方式")
+								return
+							}else{
+								that.type=2
+							}
+						}else{
+		
+							that.type=2
+						}	
+					}else{
+						this.$toast('请添加企业、自然人')
+					}	
+				})
+			}else if(idx==2){
+				this.$refs.twoform.validate().then(res => {
+					this.type=3
+				})
+			}else{
+				this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+				this.$refs.thirdform.validate().then(res => {
+					var params=this.datainfo;
+					if(this.pagetype=='add'){
+						getsbbzbAddFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast('上报线索成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}else{
+						getsbbzbPutFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast('修改线索成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}
+					
+				})
+			}
+		},
+		// 第二步骤
+		// 领航
+		bindDateChangea(e) {
+			var val=e.detail.value;
+			this.sfwlhxxxm=this.lhlist[val].label;
+			this.datainfo.sfwlhxxxm=this.lhlist[val].id
+		},
+		// 产业类型
+		bindDateChangeb(e) {
+			var val=e.detail.value;
+			this.datainfo.cylxName=this.industrytype[val].dictLabel;
+			this.datainfo.cylxId=this.industrytype[val].dictValue
+		},
+		// 拟落户地location
+		bindDateChangec(e) {
+			var val=e.detail.value;
+			this.datainfo.nlhd=this.location[val].dictLabel
+		},
+		bindDateChange(e) {
+			this.datainfo.tbrq = e.detail.value
+		},
+		// 首谈日期
+		bindDateChanged(e){
+			this.datainfo.strq = e.detail.value
+		},
+		checkboxChangea(e){
+			var newArr=e.detail.data;
+			var newArrs=[]
+			newArr.forEach((ite,idx)=>{
+				newArrs[idx]=ite.dictLabel
+			})
+			this.projectchose=newArrs
+		},
+		checkboxChangeb(e){
+			var newArr=e.detail.data;
+			var newArrs=[]
+			newArr.forEach((ite,idx)=>{
+				newArrs[idx]=ite.dictLabel
+			})
+			this.qybgchose=newArrs
+		},
+		// 多选
+		getMoreFn(idx){
+			this.moretype=idx;
+		},
+		proSure(){
+			this.prolaber=this.projectchose.join('/');
+			this.datainfo.xmlb=this.projectchose.join(',')
+			this.moretype=0;
+		},
+		// projectlist:[],//项目类别
+		// backgroundlist:[],//企业背景
+		// prolaber:'',//项目类型
+		// qybglaber:"",//企业背景
+		qySure(){
+			this.qybglaber=this.qybgchose.join('/');
+			this.datainfo.qybj=this.qybgchose.join(',')
+			this.moretype=0;
+		},
+		getClose(){
+			this.addflag=false;
+			this.moretype=0;
+			this.poptype=0;
+		},
+		getAdd(){
+			this.addflag=true;
+			this.shenflag=true;
+			this.qiinfo={
+				companyName:'',
+				companyAddress:'',
+				companyLegal:'',
+				companyCode:'',
+				phone:'',
+			}
+			this.ziinfo={
+				name:'',
+				address:'',
+				idcode:'',
+				phone:'',
+			}
+		},
+		getInvestorList(){
+			var params={
+				xmbh:this.datainfo.xmbh
+			}
+			getInvestorList(params).then(res=>{
+				if(res.code==200){
+					this.qiaddlist=res.rows||[]
+					if(res.rows.length){
+						this.qiziflag=true
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getPersionList(){
+			var params={
+				xmbh:this.datainfo.xmbh
+			}
+			getPersionList(params).then(res=>{
+				if(res.code==200){
+					this.ziaddlist=res.rows||[];
+					if(res.rows.length){
+						this.qiziflag=true
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		
+		getDelQi(id,idx){ //删除企业
+			var that=this;
+			uni.showModal({
+				title: '确认删除',
+				content: "是否确认删除",
+				cancelText: '取消',
+				confirmText: '确认',
+				success: function(res) {
+					if (res.confirm) {
+						// var params={
+						// 	id:id
+						// }
+						getDelInvestor(id).then(res=>{
+							if(res.code==200){
+								that.$toast('删除成功')
+								that.qiaddlist.splice(idx,1)
+							}else{
+								that.$toast(res.msg)
+							}
+						})
+						
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		getDelZi(id,idx){//删除自然人
+			var that=this;
+			uni.showModal({
+				title: '确认删除',
+				content: "是否确认删除",
+				cancelText: '取消',
+				confirmText: '确认',
+				success: function(res) {
+					if (res.confirm) {
+						// var params={
+						// 	id:id
+						// }
+						getDelPersion(id).then(res=>{
+							if(res.code==200){
+								that.$toast('删除成功')
+								that.ziaddlist.splice(idx,1)
+							}else{
+								that.$toast(res.msg)
+							}
+						})
+						
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		// 企业详情
+		getDetailQi(ite){
+			
+			this.ziinfo={
+				name:'',
+				address:'',
+				idcode:'',
+				phone:'',
+			},
+			this.qiinfo=ite;
+			this.addflag=true;
+			this.shenflag=true;
+		},
+		// 自然人详情
+		getDetailZi(ite){
+			this.qiinfo={
+				companyName:'',
+				companyAddress:'',
+				companyLegal:'',
+				companyCode:'',
+				phone:'',
+			},
+			this.ziinfo=ite;
+			this.addflag=true;
+			this.shenflag=false;
+		},
+		getInput(e){
+			this.loading=true;
+			this.qilianflag=true;
+			var val=e.detail.value;
+			var that=this;
+			if(val){
+				getqichachaSearch(val).then(res=>{
+					if(res.code==200){
+						this.qilist=res.data||[];
+						this.loading=false;
+						if(!this.qilist.length){
+							this.qilianflag=false;
+						}
+					}
+				})
+			}
+		},
+		handleAddrClick(ite){
+			clearTimeout(this.timeoutId);
+			this.qiinfo.companyName=ite.Name;
+			this.qiinfo.companyAddress=ite.Address;
+			this.qiinfo.companyLegal=ite.OperName;
+			this.qiinfo.companyCode=ite.CreditCode;
+			this.qilianflag=false;
+		
+			// this.getBlur()
+		},
+		getBlur(){
+			this.timeoutId = setTimeout(() => {
+			    // 关闭可编辑状态
+			    this.qilianflag = false;
+			},100);
+			// this.qilist=[];
+			// this.qilianflag=false
+			
+			
+		},
+		getqySubmit(){
+			var that=this;
+			if(this.shenflag){
+				//企业
+				this.$refs.qiform.validate().then(res => {
+					var params=this.qiinfo;
+					params.xmbh=this.datainfo.xmbh;
+					params.xmId=this.datainfo.xmId||'';
+					if(params.id){
+						// 修改
+						getPutInvestor(params).then(res=>{
+							if(res.code==200){
+								this.$toast('修改成功');
+								setTimeout(function(){
+									that.addflag=false;
+									// 获取列表
+									that.getInvestorList()
+								},1500)
+								
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}else{
+						// 新增
+						getAddInvestor(params).then(res=>{
+							if(res.code==200){
+								this.$toast('添加成功');
+								setTimeout(function(){
+									that.addflag=false;
+									that.qiziflag=true;
+									// 获取列表
+									that.getInvestorList()
+								},1500)
+								
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}
+				})
+			}else{
+				//自然人
+				this.$refs.ziform.validate().then(res => {
+					var params=this.ziinfo;
+					params.xmbh=this.datainfo.xmbh;
+					params.xmId=this.datainfo.xmId||'';
+					
+					if(params.id){
+						// 修改
+						getPutPersion(params).then(res=>{
+							if(res.code==200){
+								this.$toast('修改成功');
+								setTimeout(function(){
+									that.addflag=false;
+									// 获取列表
+									that.getPersionList()
+								},1500)
+								
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}else{
+						// 新增
+						getAddPersion(params).then(res=>{
+							if(res.code==200){
+								this.$toast('添加成功');
+								setTimeout(function(){
+									that.addflag=false;
+									that.qiziflag=true;
+									// 获取列表
+									that.getPersionList()
+								},1500)
+								
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}
+					
+				})
+			}
+		},
+		getCommonXmbh(){
+			getCommonXmbh().then(res=>{
+				if(res.code==200){
+					this.datainfo.xmbh=res.data;
+				}
+			})
+		},
+		// 某文件上传结束回调(成功失败都回调)
+		onuploadEnd(item) {
+			var newobj={}
+			var responseText=JSON.parse(item.responseText)
+			newobj.fjName=responseText.originalFilename;
+			newobj.path=responseText.fileName;
+			this.filelist.push(newobj)
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+		},
+		getDelFj(idx){
+			this.filelist.splice(idx,1)
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+		},
+		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) {
+					     }
+					   });
+				},
+				fail(res) {uni.hideLoading()}
+			})
+		},
+		
+    }
+  }
+</script>
+
+<style lang="scss">
+ page {
+    background-color: #ffffff;
+  }
+//   .info{padding-top: 30rpx;
+// 	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+//   }
+//   .infolist{padding: 30rpx 24rpx;}
+//   .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;}
+//   .input_ye image{width: 34rpx;height: 18rpx;}
+// .info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+
+
+
+.inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+
+// // 弹窗
+.fixedbox{position: fixed;left:24rpx;right: 24rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-60%);z-index: 20;padding: 48rpx 36rpx 68rpx;max-height: calc(100vh - 200rpx);overflow: auto;box-sizing: border-box;
+.infolist{padding:24rpx 0 24rpx 0;}
+.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;z-index: 22;}
+.chebox{position: absolute;right: 36rpx;top:54rpx;display: flex;align-items: center;
+	image{width: 30rpx;height: 32rpx;margin-right: 12rpx;}
+	view{font-size: 32rpx;font-weight: 500;color: #F13800;;}
+}
+.top{position: relative;text-align: center;font-size: 32rpx;font-weight: bold;color: #343434;}
+.boxs{padding: 60rpx 0;
+	.box{display: flex;align-items: center;min-height:100rpx;}
+	.boxcen{flex:1;
+		&.act{
+			view{color: #FF6400;}
+		}
+		image{width: 32rpx;height: 32rpx;margin-right: 20rpx;}
+		view{font-size: 32rpx;font-weight: 500;
+color: #666666;}
+	}
+	
+
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ 
+ 
+ .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box{margin: 10rpx 0;padding: 4rpx 0;width: 50%;box-sizing: border-box;}
+ .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-text{color: #343434;font-size: 30rpx;}
+ // .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner{margin-right: 40rpx;}
+ .fixedbox    /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: #FF440B; background-color: #FF440B;}
+ .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text{color: #343434;}
+  .inform .pl12{margin-right: 10rpx;}
+  .fixedbox .pl12{margin-right: 10rpx;}
+  
+  .inform /deep/ .uni-easyinput__content-textarea{min-height: 200rpx;}
+</style>

+ 651 - 0
qs_zhaoshang/pages/work/addcontract.vue

@@ -0,0 +1,651 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform '  ref="form" :rules="rules" :value="datainfo" v-show="type==1">
+	  			<view class="info_tit">签约信息</view>
+	  			<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目名称</view>
+	  			  	<input  placeholder="请输入项目名称" v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+	  			  </view> 
+	  			</uni-forms-item>
+				<view class="tice">填写新注册企业名称+已办项目</view>
+	  			<uni-forms-item name="dfqyr" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>对方签约人</view>
+	  			  	<input  placeholder="请输入对方签约人信息" v-model="datainfo.dfqyr"   class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				<view class="tice">填写信息包含单位名称、职务及姓名,用“;”隔开</view>
+	  			<uni-forms-item name="wfqyr" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>我方签约人</view>
+	  			  	<input  placeholder="请输入我方签约人信息" v-model="datainfo.wfqyr"    class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				 <view class="tice">填写信息包含单位名称、职务及姓名,用“;”隔开</view>
+	  			<uni-forms-item name="qyrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>签约日期</view>
+	  			  	<picker mode="date" :value="datainfo.qyrq" :end="currentdate" class="infolist_a" @change='bindDateChangetimea'>
+	  					<view :class="datainfo.qyrq?'':'f16 co80'">{{datainfo.qyrq||"请选择签约日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+				 <view class="tice">实际合同签订日期</view>
+	  			<uni-forms-item name="tbrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>填报日期</view>
+	  			  	<picker mode="date" :value="datainfo.tbrq" :end="currentdate" class="infolist_a" @change='bindDateChangetimeb'>
+	  					<view :class="datainfo.tbrq?'':'f16 co80'">{{datainfo.tbrq||"请选择填报日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			
+	  			<uni-forms-item name="xytzely" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>协议投资类型</view>
+	  				<picker  range-key='dictLabel' :value="incaindex" :range="investmentca" class="infolist_a" @change='bindDateChangedanb'>
+	  					<view :class="datainfo.xytzely?'':'f16 co80'">{{datainfo.xytzely||"请选择协议投资类型"}}</view>
+	  				</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			<uni-forms-item name="xytze" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>协议投资额(万元)</view>
+	  			  	<input  placeholder="请输入协议投资额" type="number" v-model="datainfo.xytze"    class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				<uni-forms-item name="swzj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">市外资金(万元)</view>
+				  	<input  placeholder="请输入市外资金" type="number" v-model="datainfo.swzj"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="gdzctze" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>固定资产投资额(万元)</view>
+				  	<input  placeholder="请输入固定资产投资额" type="number" v-model="datainfo.gdzctze"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmgjrxm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目跟进人</view>
+				  	<input  placeholder="请输入项目跟进人" v-model="datainfo.xmgjrxm"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmgjrzw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目跟进人职务</view>
+				  	<input  placeholder="请输入项目跟进人职务" v-model="datainfo.xmgjrzw"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmgjrsjh" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目跟进人联系方式</view>
+				  	<input  placeholder="请输入项目跟进人联系方式" v-model="datainfo.xmgjrsjh"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmszd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目所在地</view>
+				  	<input  placeholder="请输入项目所在地" v-model="datainfo.xmszd"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="tice">园区或乡镇</view>
+				<uni-forms-item name="sshy" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>所属行业</view>
+					<picker  range-key='dictLabel' :value="industryindex" :range="industry" class="infolist_a" @change='bindDateChangedana'>
+						<view :class="datainfo.sshy?'':'f16 co80'">{{datainfo.sshy||"请选择所属行业"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tzfs" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投资方式</view>
+					<picker  range-key='dictLabel' :value="inmoindex" :range="investmentmode" class="infolist_a" @change='bindDateChangedanc'>
+						<view :class="datainfo.tzfs?'':'f16 co80'">{{datainfo.tzfs||"请选择投资方式"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jsfs" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>建设方式</view>
+					<picker  range-key='dictLabel' :value="constindex" :range="construction" class="infolist_a" @change='bindDateChangedand'>
+						<view :class="datainfo.jsfs?'':'f16 co80'">{{datainfo.jsfs||"请选择建设方式"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sfys" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>是否宜商</view>
+					<picker  range-key='dictLabel' :value="cyindex" :range="cylist" class="infolist_a" @change='bindDateChangeb'>
+						<view :class="sfys?'':'f16 co80'">{{sfys||"请选择是/否"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jsnr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>建设内容</view>
+				  	<input  placeholder="请输入建设内容" v-model="datainfo.jsnr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlcf" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">租赁厂房(平方米)</view>
+				  	<input  placeholder="请输入租赁厂房面积" type="number" v-model="datainfo.zlcf"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="gdmj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">供地面积(亩)</view>
+				  	<input  placeholder="请输入供地面积" type="number" v-model="datainfo.gdmj"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="lxrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>立项日期</view>
+				  	<picker mode="date" :value="datainfo.lxrq" class="infolist_a" @change='bindDateChangetimec'>
+						<view :class="datainfo.lxrq?'':'f16 co80'">{{datainfo.lxrq||"请选择立项日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nkgrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟开工日期</view>
+				  	<picker mode="date" :value="datainfo.nkgrq" class="infolist_a" @change='bindDateChangetimed'>
+						<view :class="datainfo.nkgrq?'':'f16 co80'">{{datainfo.nkgrq||"请选择拟开工日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+	  			<view class="infobtn flexcc cf f16 f500" @click="getNext">下一步</view>
+	  		</uni-forms>
+			<!-- 下一步 -->
+			<uni-forms class='inform' ref="twoform" :rules="tworules" :value="datainfo" v-show="type==2">
+				<view class="info_tit">企业信息</view>
+				<uni-forms-item name="zcqymc" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>在潜注册公司名称</view>
+				  	<input  placeholder="请输入在潜注册公司名称" v-model="datainfo.zcqymc"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zcrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>注册日期</view>
+				  	<picker mode="date" :value="datainfo.zcrq" :end="currentdate" class="infolist_a" @change='bindDateChangetimee'>
+						<view :class="datainfo.zcrq?'':'f16 co80'">{{datainfo.zcrq||"请选择注册日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zczb" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>注册资本(万元)</view>
+				  	<input  placeholder="请输入注册资本" type="number" v-model="datainfo.zczb"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="frdb" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>法人代表</view>
+				  	<input  placeholder="请输入法人代表" v-model="datainfo.frdb"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="lxfs" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>联系方式</view>
+				  	<input  placeholder="请输入联系方式" v-model="datainfo.lxfs"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jyfw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>经营范围</view>
+				  	<input  placeholder="请输入经营范围" v-model="datainfo.jyfw"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<!-- <uni-forms-item name="remark" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">备注</view>
+				  	<input  placeholder="请输入备注信息" v-model="datainfo.remark"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item> -->
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+					<view class="flexc infolist">
+						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+						<view class="infolist_a co28">
+							<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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infobtn flexcc cf f16 f500" v-if="checkPermi(['projectV2:qyxx:add','projectV2:qyxx:edit'])" @click="getSubmit">提交</view>
+			</uni-forms>
+  </view>
+</template>
+
+<script>
+import { getDictionaryFn} from '@/api/work/index.js'
+import {selectDictLabel} from "@/utils/common.js"
+import {getsqyxxAddFn,getsqyxxPutFn} from "@/api/work/addclue.js"
+import {getqyxxtail} from "@/api/work/clue.js"
+import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+ 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,ppt,txt,pdf,zip,rar,word',
+		  // 文件上传大小限制
+		  size: 100,
+		  // 文件数量限制 默认10
+		  count: 5,
+		  // 文件回显列表
+		  files: new Map(),
+		  // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		  wxFiles: [],
+		  // 是否打印日志
+		  debug: false,
+		  filelist:[], 
+		  
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		datainfo:{
+			"xmId":"",//项目ID
+			    "xmbh":"",//项目编号
+			    "xmmc":"",//项目名称
+			    "dfqyr":"",//对方签约人
+			    "wfqyr":"",//我方签约人
+			    "tbrq":"",//通报日期
+			    "qyrq":"",//签约日期
+			    "xytzely":"",//协议投资额来源
+			    "xytze":"",//协议投资额
+			    "swzj":"",//市外资金
+			    "gdzctze":"",//固定资产投资额(万元)
+			    "xmgjrxm":"",//项目跟进人姓名
+			    "xmgjrzw":"",//项目跟进人职务
+			    "xmgjrsjh":"",//项目跟进人手机号
+			    "xmszd":"",//项目所在地
+			    "sshy":"",//所属行业 字典
+			    "tzfs":"",//投资方式(1:独资,2:合资,3:合作,4:收购,5:参股,6:兼并,7:其他)
+			    "jsfs":"",//建设方式(1:新建,2:改建,3:扩建,4:租赁)
+			    "sfys":"",//是否宜商(1:是,2:否)
+			    "jsnr":"",//建设内容
+			    "zlcf":"",//租赁厂房(平方米)
+			    "gdmj":"",//供地面积(亩)
+			    "zcqymc":"",//注册企业名称
+			    "zcrq":"",//注册日期
+			    "zczb":"",//注册资本(万元)
+			    "frdb":"",//法人代表
+			    "lxfs":"",//联系方式
+			    "jyfw":"",//经营范围
+			    "lxrq":"",//立项日期
+			    "nkgrq":"",//拟开工日期
+				'czwt':'',//存在问题
+			    "path":"",//文件地址
+				zsyzFjList:[],//附件地址
+		},
+		tanfalg:false,
+		addimg:require("@/static/images/mine/add.png"),
+		delimg:require("@/static/images/mine/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		rules: {
+		  xmmc: {rules: [{required: true,errorMessage: '请输入项目名称'}]},
+		  dfqyr: {rules: [{required: true,errorMessage: '请输入对方签约人信息',}]},
+		  wfqyr: {rules: [{required: true,errorMessage: '请输入我方签约人信息' } ]},
+		  qyrq: {rules: [{required: true,errorMessage: '请选择签约日期'} ]},
+		  tbrq: {rules: [{required: true,errorMessage: '请选择填报日期'} ]},
+		  xytzely: {rules: [{required: true,errorMessage: '请选择协议投资类型'} ]},
+		  xytze: {rules: [{required: true,errorMessage: '请输入协议投资额'} ]},
+		  gdzctze: {rules: [{required: true,errorMessage: '请输入固定资产投资额'} ]},
+		  xmgjrxm: {rules: [{required: true,errorMessage: '请输入项目跟进人姓名'} ]},
+		  xmgjrzw: {rules: [{required: true,errorMessage: '请输入项目跟进人职务'} ]},
+		  xmgjrsjh: {rules: [{required: true,errorMessage: '请输入项目跟进人联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'} ]},
+		  xmszd: {rules: [{required: true,errorMessage: '请输入项目所在地'} ]},
+		  sshy: {rules: [{required: true,errorMessage: '请选择所属行业'} ]},
+		  tzfs: {rules: [{required: true,errorMessage: '请选择投资方式'} ]},
+		  jsfs: {rules: [{required: true,errorMessage: '请选择建设方式'} ]},
+		  sfys: {rules: [{required: true,errorMessage: '请选择是/否'} ]},
+		  jsnr: {rules: [{required: true,errorMessage: '请输入建设内容'} ]},
+		  lxrq: {rules: [{required: true,errorMessage: '请选择立项日期'} ]},
+		  nkgrq: {rules: [{required: true,errorMessage: '请选择拟开工日期'} ]},
+		},
+		tworules:{
+			zcqymc: {rules: [{required: true,errorMessage: '请输入在潜注册公司名称'} ]},
+			zcrq: {rules: [{required: true,errorMessage: '请选择注册日期'} ]},
+			zczb: {rules: [{required: true,errorMessage: '请输入注册资本'} ]},
+			frdb: {rules: [{required: true,errorMessage: '请输入法人代表'} ]},
+			lxfs: {rules: [{required: true,errorMessage: '请输入联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'}]},
+			jyfw: {rules: [{required: true,errorMessage: '请输入经营范围'} ]},
+			zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		},
+		lhindex:0,
+		cyindex:0,
+		cylist:[{dictLabel:'是',dictValue:'Y'},{dictLabel:'否',dictValue:'N'}],//宜商
+		// map:{text:'dictLabel',value:'dictValue'},
+		currentdate:'',//当天日期
+		industry:[],//所属行业bindDateChangedana
+		industryindex:0,
+		investmentca:[],//投资类别bindDateChangedanb
+		incaindex:0,
+		investmentmode:[],//投资方式bindDateChangedanc
+		inmoindex:0,
+		construction:[],//建设方式bindDateChangedand
+		constindex:0,
+		pagetype:'add',
+		sfys:'',//是否宜商
+	}
+    },
+	onLoad(e) {
+		this.currentdate = this.getNowFormatDate();
+		var newObj=JSON.parse(decodeURIComponent(e.data))
+		this.pagetype=newObj.pagetype||'add';
+		this.getinvestmentarea();
+		this.datainfo.xmId=newObj.xmId;
+		this.datainfo.xmbh=newObj.xmbh;
+		this.datainfo.xmmc=newObj.xmmc;
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			this.getDataFn()
+		}else{
+			this.datainfo.qyrq=this.currentdate;
+			this.datainfo.tbrq=this.currentdate;
+			this.datainfo.zcrq=this.currentdate;	
+			this.datainfo.lxrq=this.currentdate;	
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		// 项目详情
+		getDataFn(){
+			var that=this;
+			getqyxxtail(this.datainfo.xmId).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					this.sfys=res.data.sfys=='Y'?'是':'否';
+					this.cyindex=res.data.sfys=='Y'?0:1;	
+					
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+					// 协议投资类型
+					for(var i=0;i<that.investmentca.length;i++){
+						if(that.investmentca[i].dictLabel==this.datainfo.xytzely){
+							this.incaindex=Number(i)
+							break;
+						}
+					}
+					//所属行业
+					for(var i=0;i<that.industry.length;i++){
+						if(that.industry[i].dictLabel==this.datainfo.sshy){
+							this.industryindex=Number(i)
+							break;
+						}
+					}
+					//投资方式
+					for(var i=0;i<that.investmentmode.length;i++){
+						if(that.investmentmode[i].dictLabel==this.datainfo.tzfs){
+							this.inmoindex=Number(i)
+							break;
+						}
+					}
+					//建设方式
+					for(var i=0;i<that.construction.length;i++){
+						if(that.construction[i].dictLabel==this.datainfo.jsfs){
+							this.constindex=Number(i)
+							break;
+						}
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		// 字典值
+		getinvestmentarea(){
+			// 所属行业
+			getDictionaryFn('industry').then(res=>{
+				if(res.code==200){
+					this.industry=res.data
+				}
+			})
+			// 投资类别
+			getDictionaryFn('investment_category').then(res=>{
+				if(res.code==200){
+					this.investmentca=res.data
+				}
+			})
+			//投资方式
+			getDictionaryFn('investment_mode').then(res=>{
+				if(res.code==200){
+					this.investmentmode=res.data
+				}
+			})
+			//建设方式
+			getDictionaryFn('construction_method').then(res=>{
+				if(res.code==200){
+					this.construction=res.data
+				}
+			})
+		},
+		getNowFormatDate(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			const timeday = y + "-" + m + "-" + d;
+			return timeday;
+		},
+		
+		bindDateChangetimea(e){//签约日期
+			this.datainfo.qyrq=e.detail.value
+		},
+		bindDateChangetimeb(e){//填报日期
+			this.datainfo.tbrq=e.detail.value
+		},
+		bindDateChangetimec(e){//立项日期
+			this.datainfo.lxrq=e.detail.value
+		},
+		bindDateChangetimed(e){//拟开工日期
+			this.datainfo.nkgrq=e.detail.value
+		},
+		bindDateChangetimee(e){//注册日期
+			this.datainfo.zcrq=e.detail.value
+		},
+		bindDateChangeb(e){
+			var val=e.detail.value;
+			this.sfys=this.cylist[val].dictLabel;
+			this.datainfo.sfys=this.cylist[val].dictValue
+		},
+		bindDateChangedana(e){
+			var val=e.detail.value;
+			this.datainfo.sshy=this.industry[val].dictLabel
+		},
+		bindDateChangedanb(e){
+			var val=e.detail.value;
+			this.datainfo.xytzely=this.investmentca[val].dictLabel
+		},
+		bindDateChangedanc(e){
+			var val=e.detail.value;
+			this.datainfo.tzfs=this.investmentmode[val].dictLabel
+		},
+		bindDateChangedand(e){
+			var val=e.detail.value;
+			this.datainfo.jsfs=this.construction[val].dictLabel
+		},
+		getNext(){
+			this.$refs.form.validate().then(res => {
+				if(!this.datainfo.zlcf&&!this.datainfo.gdmj){
+					this.$toast('请输入租赁厂房或供地面积')	
+					return
+				}else{
+					this.type=2;
+				}
+				
+			})
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.twoform.validate().then(res => {
+				var params=this.datainfo;
+				if(this.pagetype=='add'){
+					getsqyxxAddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报签约成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					getsqyxxPutFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改签约成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}
+				// params.zsyzFjList=this.filelist
+				
+			})
+      },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+		this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDelFj(idx){
+	  	this.filelist.splice(idx,1)
+		this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  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) {
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+
+
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+.inform .pl12{margin-right: 10rpx;}
+.fixedbox .pl12{margin-right: 10rpx;}
+</style>

+ 715 - 0
qs_zhaoshang/pages/work/addstart.vue

@@ -0,0 +1,715 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform' :class="disabled?'disabledbox':''" ref="form" :rules="rules" :value="datainfo" >
+	  			<view class="info_tit">开工信息</view>
+	  			<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12">项目名称</view>
+	  			  	<input :disabled='disabled' placeholder="请输入项目名称" v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+	  			  </view> 
+	  			</uni-forms-item>
+	  			<uni-forms-item name="kgrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>开工日期</view>
+	  			  	<picker :disabled='disabled' mode="date" :value="datainfo.kgrq" class="infolist_a" @change='bindDateChangea'>
+	  					<view :class="datainfo.kgrq?'':'f16 co80'">{{datainfo.kgrq||"请选择开工日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			<uni-forms-item name="njgrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟竣工日期</view>
+	  			  	<picker :disabled='disabled' mode="date" :value="datainfo.njgrq" class="infolist_a" @change='bindDateChangeb'>
+	  					<view :class="datainfo.njgrq?'':'f16 co80'">{{datainfo.njgrq||"请选择拟竣工日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+				<uni-forms-item name="sscrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>试生产日期</view>
+				  	<picker :disabled='disabled' mode="date" :value="datainfo.sscrq" class="infolist_a" @change='bindDateChangec'>
+						<view :class="datainfo.sscrq?'':'f16 co80'">{{datainfo.sscrq||"请选择试生产日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="ntcsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟投产日期</view>
+				  	<picker :disabled='disabled' mode="date" :value="datainfo.ntcsj" class="infolist_a" @change='bindDateChanged'>
+						<view :class="datainfo.ntcsj?'':'f16 co80'">{{datainfo.ntcsj||"请选择拟投产日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="rtsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="background-color: #ffffff;">
+				  	<view class="f16 fw c34 flex0 pr pl12">入统日期</view>
+				  	<picker mode="date" :value="datainfo.rtsj" class="infolist_a" @change='bindDateChangee'>
+						<view :class="datainfo.rtsj?'':'f16 co80'">{{datainfo.rtsj||"请选择入统日期"}}</view>
+				  	</picker>
+					<view class="delpicker" v-if="datainfo.rtsj">
+						<image :src="closedimg" class="closed" @click="datainfo.rtsj=''"></image>
+					</view>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nrtsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="background-color: #ffffff;">
+				  	<view class="f16 fw c34 flex0 pr pl12">拟入统日期</view>
+				  	<picker mode="date" :value="datainfo.nrtsj" class="infolist_a" @change='bindDateChangef'>
+						<view :class="datainfo.nrtsj?'':'f16 co80'">{{datainfo.nrtsj||"请选择拟入统日期"}}</view>
+				  	</picker>
+					<view class="delpicker" v-if="datainfo.nrtsj">
+						<image :src="closedimg" class="closed" @click="datainfo.nrtsj=''"></image>
+					</view>
+					
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<view class="info_tit">进度照片</view>
+				<uni-forms-item name="ziranren" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="background-color: #ffffff;">
+					 <view class="flexc infolist_add" @click="getAddPhoto" v-if="checkPermi(['projectV2:rate:add'])">
+						 <image :src="addimg"></image>
+						 <view>新增进度照片</view>
+					 </view>
+				  	<view class="f16 fw c34 flex0 pr pl12">添加进度照片</view>
+					<view class="flex1 txr flexc over ml8">
+						<text class="flex1 f15 c34 over" v-if="datainfo.sbdw">{{datainfo.sbdw}}</text>
+						<text class="f16 flex1 co80" v-else>请先选择添加进度照片</text>
+						<!-- <view class="delimg flex0" >
+							<image :src="delimg"></image>
+						</view> -->
+						<!-- <image :src="delimg" class="delimg"></image> -->
+					</view>
+				  </view>
+				</uni-forms-item>
+				<!-- 进度照片展示 -->
+				<view class="qibox" >
+					<view class="flexc infolist qi" v-for="(ite,idx) in ratelist" :key="'info-'+idx" @click="getDetailPhoto(ite)">
+					 	<view class="f15 fw c34 flex0 pr pl12 ">{{ite.rateType}}</view>
+						<view class="flex1 txr flexc over ml8">
+							<text class="flex1 f15 c34 over">{{ite.jdDescribe}}/</text>
+							<view class="flexc" style="justify-content: flex-end;">
+								<view v-for="(pit,pid) in ite.photo" :key="'info1-'+pid" class="pholist">
+									<image :src="baseUrl+pit"></image>
+								</view>
+							</view>
+							
+							<view class="delimg flex0" @click.stop="getDelRate(ite.id,idx)" v-if="checkPermi(['projectV2:rate:remove'])">
+								<image :src="delimg"></image>
+							</view>
+							
+						</view>
+					 </view>
+				</view>
+				<view class="border"></view>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+					<view class="flexc infolist">
+						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+						<view class="infolist_a co28" v-if="disabled">选择附件</view>
+						<view class="infolist_a co28" v-else><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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infolist_b" style="margin-top: 20rpx;"><text>*</text>土地证复印件/房屋租赁合同复印件、开工照片、项目开工申报表</view>
+	  			<!-- 修改 -->
+	  			<view v-if="checkPermi(['projectV2:kgxx:edit','projectV2:kgxx:add'])&&((progress==3&&xmStatus==2)||(progress==4&&xmStatus!=2))" class="infobtn flexcc cf f16 f500" @click="getSubmit">提交</view>
+				<!-- 返回修改 -->
+				<view v-if="checkPermi(['projectV2:kgxx:editKg'])&&(progress==4&&xmStatus==2||(progress==5&&xmStatus!=2))" class="infobtn flexcc cf f16 f500" @click="getSubmit">提交</view>
+	  		</uni-forms>
+	  	<!-- 弹框 -->
+	  	<view class="bgbox" @click="getClose" v-if="addflag"></view>
+	  	<view class="fixedbox" v-if="addflag">
+	  		<image :src="closeimg" class="choseimg" @click="getClose"></image>
+	  		<view class="top">添加进度照片</view>
+	  		<view  class="boxs" style="padding: 60rpx 0;">
+	  			<!-- 进度照片 -->
+	  			<uni-forms ref="phoform" :rules="phorules" :value="phoinfo">
+	  				<!-- <uni-forms-item name="companyName" style='margin-bottom: 0;'>
+	  				 <view class="flexc infolist">
+	  				  	<view class="f16 fw c34 flex0 pr pl12">时间</view>
+	  				  	<picker mode="date" :value="phoinfo.nrtsj" class="infolist_a" @change='bindDateChangeg'>
+	  				  		<view :class="phoinfo.nrtsj?'':'f16 co80'">{{phoinfo.nrtsj||"请选择拟入统日期"}}</view>
+	  				  	</picker>
+	  				  </view>
+	  				</uni-forms-item> -->
+	  				<uni-forms-item name="rateType" style='margin-bottom: 0;'>
+	  				 <view class="flexc infolist">
+	  				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>进度</view>
+	  				  	<input  placeholder="请输入进度" v-model="phoinfo.rateType"  class="f16  c34 flex1 txr"/>
+	  				  </view>
+	  				</uni-forms-item>
+	  				<uni-forms-item name="jdDescribe" style='margin-bottom: 0;'>
+	  				 <view class="flexc infolist">
+	  				  	<view class="f16 fw c34 flex0 pr pl12">描述</view>
+	  				  	<input  placeholder="请输入描述详情" v-model="phoinfo.jdDescribe" class="f16  c34 flex1 txr"/>
+	  				  </view>
+	  				</uni-forms-item>
+	  				<uni-forms-item name="photo" style='margin-bottom: 0;'>
+	  					<view class="flexc infolist">
+	  						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>照片</view>
+	  					</view>
+	  				</uni-forms-item>
+					
+					<view class="photoimg">
+						<view class="photos" v-for="(item,index) in file" :key='index'>
+							<view class="photolist" @click="getPreview(file,index)">
+								<image :src="baseUrl+item" class="listimg"></image>
+								<image :src="delimgs" class="del" @click.stop="delimgFn(index)" v-if="checkPermi(['projectV2:rate:add','projectV2:rate:edit'])"></image>
+							</view>
+						</view>
+						<view class="photos" v-if="file.length<9&&checkPermi(['projectV2:rate:add','projectV2:rate:edit'])">
+							<view class="photolist" @click.stop="getphotoFn">
+								<image :src="addimgs" class="addimg"></image>
+							</view>
+						</view>
+						
+					</view>
+	  				<!-- <view class=" cldelistbf" >
+	  					<view class="flext f15 c6">
+	  						<view class="imgl"><image :src="wimg" ></image></view>
+	  						<view>照片名称fjName</view>
+	  					</view>
+	  					<view class="flexc f15 co28 flex0">
+	  						<image :src="downimg" class="imgr"></image>预览
+	  					</view>
+	  				</view> -->
+	  				
+	  			</uni-forms>
+
+	  		</view>
+	  		<view class="fixedbtn mt20" @click="getyjSubmit" v-if="checkPermi(['projectV2:rate:add','projectV2:rate:edit'])">确认</view>
+	  	</view>
+  </view>
+</template>
+
+<script>
+import {uploadmore} from '@/utils/common.js'
+import {uploadPhoto} from '@/api/system/user.js'
+import {getkgxxAddFn,getkgxxPutFn,getrateAddFn,getratePutFn,getrateDelFn,getrateListFn,gekgxxputKg} from "@/api/work/addclue.js"
+import {getkgxxdetail} from "@/api/work/clue.js"
+import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  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,ppt,txt,pdf,zip,rar,word',
+		  // 文件上传大小限制
+		  size: 100,
+		  // 文件数量限制 默认10
+		  count: 5,
+		  // 文件回显列表
+		  files: new Map(),
+		  // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		  wxFiles: [],
+		  // 是否打印日志
+		  debug: false,
+		  filelist:[], 
+		  
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		baseUrl:'',
+		datainfo:{
+			"xmId":"",//项目ID
+			"xmbh":"",//项目编号
+			"xmmc":"",//项目名称
+			"kgrq":"",//开工日期
+			"njgrq":"",//拟竣工日期
+			"sscrq":"",//试生产日期
+			"ntcsj":"",//拟投产时间
+			"rtsj":"",//入统时间
+			"nrtsj":"",//拟入统时间
+			"kggjrsjh":"",//开工跟进人手机号
+			'czwt':'',//存在问题
+			zsyzFjList:[],//附件地址
+		},
+		phoinfo:{
+			photo:'',
+			jdDescribe:'',
+			rateType:'',
+		},
+		tanfalg:false,
+		addflag:false,
+		imageValue:[],
+		closedimg:require("@/static/images/del.png"),
+		addimg:require("@/static/images/mine/add.png"),
+		addimgs:require('@/static/images/index/add.png'),
+		delimg:require("@/static/images/mine/del.png"),
+		delimgs:require("@/static/images/index/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		bgimg:require("@/static/images/banner.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		rules: {
+		  kgrq: {rules: [{required: true,errorMessage: '请选择开工日期'}]},
+		  njgrq: {rules: [{required: true,errorMessage: '请选择拟竣工日期',}]},
+		  sscrq: {rules: [{required: true,errorMessage: '请选择试生产日期' } ]},
+		  ntcsj: {rules: [{required: true,errorMessage: '请选择拟投产日期'} ]},
+		  zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		 
+		},
+		phorules:{
+			rateType: {rules: [{required: true,errorMessage: '请输入进度'}]},
+			photo: {rules: [{required: true,errorMessage: '请上传图片'}]},
+			
+		},
+
+		map:{text:'label',value:'id'},
+		
+		file:[],
+		images:[],
+		pagetype:'add',
+		ratelist:[],
+		disabled:false,
+		xmmc:'',
+		progress:'',
+		xmStatus:'',
+	}
+    },
+	onLoad(e) {
+		this.baseUrl=baseUrl;
+		var newObj=JSON.parse(decodeURIComponent(e.data))
+		this.pagetype=newObj.pagetype||'add';
+		this.datainfo.xmId=newObj.xmId;
+		this.datainfo.xmbh=newObj.xmbh;
+		this.progress=newObj.progress||'';
+		this.xmStatus=newObj.xmStatus||'';
+		this.xmmc=newObj.xmmc;
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			if(newObj.dis){
+				this.disabled=true;
+			}else{
+				this.disabled=false;
+			}
+			this.init();
+			this.getDataFn()
+		}else{
+			this.datainfo.xmmc=newObj.xmmc;
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		// 开工详情
+		getDataFn(){
+			getkgxxdetail(this.datainfo.xmId).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					this.datainfo.xmmc=this.xmmc;
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		// 查看照片
+		getPreview(iurl,idx) {
+			var newArr=[];
+			iurl.forEach(ite=>{
+				var ds=this.baseUrl+ite
+				newArr.push(ds)
+			})
+			uni.previewImage({
+				urls: newArr,
+				current:idx,
+				success: function(data) {
+					
+				},
+				fail: function(err) {
+					console.log(err.errMsg);
+				}
+			});
+		},
+		init(){
+			this.getRateList()//项目进度
+		},
+		bindDateChangea(e){//开工日期
+			this.datainfo.kgrq=e.detail.value
+		},
+		bindDateChangeb(e){//拟竣工日期
+			this.datainfo.njgrq=e.detail.value
+		},
+		bindDateChangec(e){//试生产日期
+			this.datainfo.sscrq=e.detail.value
+		},
+		bindDateChanged(e){//拟投产日期
+			this.datainfo.ntcsj=e.detail.value
+		},
+		bindDateChangee(e){//入统日期
+			this.datainfo.rtsj=e.detail.value
+		},
+		bindDateChangef(e){//拟入统日期
+			this.datainfo.nrtsj=e.detail.value
+		},
+
+		getAddPhoto(){
+			this.phoinfo={
+				photo:'',
+				jdDescribe:'',
+				rateType:'',
+			};
+			this.file=[];
+			this.addflag=true;	
+		},
+		getDetailPhoto(ite){
+			var newStr=JSON.parse(JSON.stringify(ite))
+			this.phoinfo=newStr;
+			this.file=newStr.photo;
+			var newStr=newStr.photo.join(',');
+			this.phoinfo.photo=newStr;
+			this.addflag=true;
+		},
+		getDelRate(id,idx){ //删除进度
+			var that=this;
+			uni.showModal({
+				title: '确认删除',
+				content: "是否确认删除",
+				cancelText: '取消',
+				confirmText: '确认',
+				success: function(res) {
+					if (res.confirm) {
+						// var params={
+						// 	id:id
+						// }
+						getrateDelFn(id).then(res=>{
+							if(res.code==200){
+								that.$toast('删除成功')
+				
+								that.ratelist.splice(idx,1)
+							}else{
+								that.$toast(res.msg)
+							}
+						})	
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		// 项目列表
+		getRateList(){
+			var params={
+				xmbh:this.datainfo.xmbh,
+				xmId:this.datainfo.xmId
+			}
+			getrateListFn(params).then(res=>{
+				if(res.code==200){
+					// 
+					var newArr=res.rows||[];
+					if(newArr.length){
+						newArr.forEach(ite=>{
+							ite.photo=ite.photo.split(',')
+						})
+					}
+					this.ratelist=newArr
+					// if(res.rows.length){
+					// 	this.qiziflag=true
+					// }
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getyjSubmit(){
+			// 项目进度
+			var that=this;
+			this.$refs.phoform.validate().then(res => {
+				var params=this.phoinfo;
+				params.xmbh=this.datainfo.xmbh;
+				params.xmId=this.datainfo.xmId;
+				if(params.id){
+					// 修改
+					getratePutFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改成功');
+							setTimeout(function(){
+								that.addflag=false;
+								// 获取列表
+								that.getRateList()
+							},1500)
+							
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					// 新增
+					getrateAddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('添加成功');
+							setTimeout(function(){
+								that.addflag=false;
+								// 获取列表
+								that.getRateList()
+							},1500)
+							
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}
+				
+			})
+		},
+		delimgFn(e){
+			var that = this;
+			that.file.splice(e,1);
+			this.phoinfo.photo=that.file.join(',')
+		},
+		getphotoFn(){
+			let that = this;
+			let file = that.file;
+			if(file.length < 9){
+				uni.chooseImage({
+					count: 9 - parseInt(file.length),
+					success:function(res){
+						let img= res.tempFilePaths;
+						if(img.length + file.length > 9){
+							uni.showToast({
+								title: '最多上传9张图片',
+								icon: 'none',
+								duration: 2000
+							})
+						}else{
+
+							let imglen = res.tempFilePaths.length;
+							var fuwufile = [];
+							uploadmore('/common/upload',img,0,0,0,imglen,fuwufile,function(rs){
+								that.file = that.file.concat(rs);
+								that.phoinfo.photo=that.file.join(',')
+								// console.log(that.phoinfo.photo,85)
+							})	
+						}
+					}
+				});
+			}
+		},
+		getClose(){
+			this.addflag=false;
+		},
+		getAddFn(){
+			this.addflag=true;
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.form.validate().then(res => {
+				var params=this.datainfo;
+				// params.zsyzFjList=this.filelist
+				if(!params.rtsj&&!params.nrtsj){
+					this.$toast('请选择入统时间或者拟入统时间');
+					return
+				}
+				if(this.pagetype=='add'){
+					getkgxxAddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报开工信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}else{
+					if(this.disabled){
+						var obj={
+							id:params.id,
+							rtsj:params.rtsj,
+							nrtsj:params.nrtsj,
+							xmId:params.xmId
+						}
+						gekgxxputKg(obj).then(res=>{
+							if(res.code==200){
+								this.$toast('修改开工信息成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}else{
+						getkgxxPutFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast('修改开工信息成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}
+					
+				}
+				
+			})
+      },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+	  		this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDelFj(idx){
+		  var that=this;
+		  if(!this.disabled){
+			  uni.showModal({
+			  	title: '确认删除',
+			  	content: "是否确认删除",
+			  	cancelText: '取消',
+			  	confirmText: '确认',
+			  	success: function(res) {
+			  		if (res.confirm) {
+			  			that.filelist.splice(idx,1)
+			  			that.datainfo.zsyzFjList=JSON.parse(JSON.stringify(that.filelist))
+			  		} else if (res.cancel) {
+			  		}
+			  	}
+			  });
+		  }
+	  },
+	  getDown(e){
+		  uni.showLoading({
+		  	title: '加载中'
+		  });
+	  	var url=baseUrl+e;
+	  	uni.downloadFile({
+	  		url: url,//文件的下载路径
+	  		success(result) {
+				uni.hideLoading()
+	  			var filePath = result.tempFilePath;
+	  			   uni.openDocument({
+	  			     filePath: filePath,
+	  			     showMenu: true,
+	  			     success: function (res) {
+	  			       // console.log('打开文档成功');
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	// .delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+.fixedbox .infolist{padding: 30rpx 0;}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+.inform .pl12{margin-right: 10rpx;}
+.fixedbox .pl12{margin-right: 10rpx;}
+.pholist{
+	display: flex;align-items: center;max-width: 220rpx;overflow: hidden;
+	image{
+		width: 44rpx;height: 44rpx;margin-left: 10rpx;flex: 0 0 auto;
+	}
+}
+.disabledbox{
+	.infolist{background-color: #F5f5f5;}
+}
+</style>

+ 491 - 0
qs_zhaoshang/pages/work/addtproduction.vue

@@ -0,0 +1,491 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform '  ref="form" :rules="rules" :value="datainfo" v-show="type==1">
+	  			<view class="info_tit">投产信息</view>
+	  			<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12">项目名称</view>
+	  			  	<input  placeholder="请输入项目名称"  v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+	  			  </view> 
+	  			</uni-forms-item>
+	  			<uni-forms-item name="tcrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投产日期</view>
+	  			  	<picker mode="date" :value="datainfo.tcrq" class="infolist_a" @change='bindDateChangea'>
+	  					<view :class="datainfo.tcrq?'':'f16 co80'">{{datainfo.tcrq||"请选择投产日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			
+	  			<uni-forms-item name="sjdze" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>实际到资金额(万元)</view>
+	  				<input  placeholder="请输入协议投资额" type="number" v-model="datainfo.sjdze"    class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				
+				<view class="info_tit">入规信息</view>
+				<uni-forms-item name="rgsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">入规日期</view>
+				  	<picker mode="date" :value="datainfo.rgsj" class="infolist_a" @change='bindDateChangeb'>
+						<view :class="datainfo.rgsj?'':'f16 co80'">{{datainfo.rgsj||"请选择入规日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nrgsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">拟入规日期</view>
+				  	<picker mode="date" :value="datainfo.nrgsj" class="infolist_a" @change='bindDateChangec'>
+						<view :class="datainfo.nrgsj?'':'f16 co80'">{{datainfo.nrgsj||"请选择拟入规日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+	  			<view class="infobtn flexcc cf f16 f500" @click="getNext">下一步</view>
+	  		</uni-forms>
+			<!-- 下一步 -->
+			<uni-forms class='inform' ref="twoform" :rules="tworules" :value="datainfo" v-show="type==2">
+				<view class="info_tit">到资明细</view>
+				<uni-forms-item name="ydmj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">用地面积(亩)</view>
+				  	<input  placeholder="请输入用地面积" type="number" v-model="datainfo.ydmj"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tdcr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">土地出让(万元)</view>
+				  	<input  placeholder="请输入土地出让" type="number" v-model="datainfo.tdcr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xjcf" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">新建厂房(平方米)</view>
+				  	<input  placeholder="请输入新建厂房" type="number" v-model="datainfo.xjcf"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="cftr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">厂房投入(万元)</view>
+				  	<input  placeholder="请输入厂房投入" type="number" v-model="datainfo.cftr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sbqd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备清单(万元)</view>
+				  	<input  placeholder="请输入设备清单" type="number" v-model="datainfo.sbqd"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sbfp" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备发票(万元)</view>
+				  	<input  placeholder="请输入设备发票" type="number" v-model="datainfo.sbfp"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sbht" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备合同(万元)</view>
+				  	<input  placeholder="请输入设备合同" type="number" v-model="datainfo.sbht"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="fkpz" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">付款凭证(万元)</view>
+				  	<input  placeholder="请输入付款凭证" type="number" v-model="datainfo.fkpz"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="zlcf" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">租赁厂房(平方米)</view>
+				  	<input  placeholder="请输入租赁厂房" type="number" v-model="datainfo.zlcf"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				
+				<uni-forms-item name="zlcftr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">厂房投入(万元)</view>
+				  	<input  placeholder="请输入厂房投入" type="number" v-model="datainfo.zlcftr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlsbqd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备清单(万元)</view>
+				  	<input  placeholder="请输入设备清单" type="number" v-model="datainfo.zlsbqd"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlsbfp" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备发票(万元)</view>
+				  	<input  placeholder="请输入设备发票" type="number" v-model="datainfo.zlsbfp"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlsbht" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备合同(万元)</view>
+				  	<input  placeholder="请输入设备合同" type="number" v-model="datainfo.zlsbht"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlfkpz" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">付款凭证(万元)</view>
+				  	<input  placeholder="请输入付款凭证" type="number" v-model="datainfo.zlfkpz"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="sjss" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">实缴税收(万元)</view>
+				  	<input  placeholder="请输入实缴税收" type="number" v-model="datainfo.sjss"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">连续</view>
+				  	<input  placeholder="请输入数字" type="number" v-model="datainfo.lxy"    class="f16  c34 flex1 " style="text-align: center;"/>
+					<view class="f16 fw c34 flex0 pr pl12">个月缴纳社保</view>
+					<input  placeholder="请输入数字" type="number" v-model="datainfo.jnsb"    class="f16  c34 flex1" style="text-align: center;"/>
+					<view class="f16 fw c34 flex0 pr pl12">人</view>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="zbtr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">装备投入(万元)</view>
+				  	<input  placeholder="请输入装备投入" type="number" v-model="datainfo.zbtr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="ndsjss" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">会计年度实缴税收(万元)</view>
+				  	<input  placeholder="请输入会计年度实缴税收" type="number" v-model="datainfo.ndsjss"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="qt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">其他</view>
+				  	<input  placeholder="请输入其他信息" v-model="datainfo.qt"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				
+				<view class="border"></view>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+					<view class="flexc infolist">
+						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+						<view class="infolist_a co28">
+							<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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infolist_b" style="margin-top: 20rpx;"><text>*</text>项目生产、经营照片</view>
+				<view class="infobtn flexcc cf f16 f500" v-if="checkPermi(['projectV2:tcxx:add','projectV2:tcxx:edit'])" @click="getSubmit">提交</view>
+			</uni-forms>
+	  		
+  </view>
+</template>
+
+<script>
+	import {gettcxxAddFn,gettcxxPutFn} from "@/api/work/addclue.js"
+	import {gettcxxdetail} from "@/api/work/clue.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+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,ppt,txt,pdf,zip,rar,word',
+		// 文件上传大小限制
+		size: 100,
+		// 文件数量限制 默认10
+		count: 5,
+		// 文件回显列表
+		files: new Map(),
+		// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		wxFiles: [],
+		// 是否打印日志
+		debug: false,
+		filelist:[], 
+		
+		
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,	
+		datainfo:{
+			"xmId":"",//项目ID
+		    "xmbh":"",//项目编号
+		    "xmmc":"",//项目名称
+		    "tcrq":"",//投产日期
+		    "rgsj":"",//入规(限)时间
+		    "nrgsj":"",//拟入规(限)时间
+		    "tcgjrsjh":"",//投产跟进人手机号
+		    "sjdze":"",//实际到资额(万元)
+			
+		    "ydmj":"",//用地面积(亩)
+		    "tdcr":"",//土地出让(万元)
+		    "xjcf":"",//新建厂房(平方米)
+		    "cftr":"",//厂房投入(万元)
+		    "sbqd":"",//设备清单(万元)
+		    "sbfp":"",//设备发票(万元)
+		    "sbht":"",//设备合同(万元)
+		    "fkpz":"",//付款凭证(万元)
+			
+		    "zlcf":"",//租赁厂房(平方米)
+		    "zlcftr":"",//租赁厂房投入(万元)
+		    "zlsbqd":"",//租赁设备清单(万元)
+		    "zlsbfp":"",//租赁设备发票(万元)
+		    "zlsbht":"",//租赁设备合同(万元)
+		    "zlfkpz":"",//租赁付款凭证(万元)
+		    "sjss":"",//实缴税收(万元)
+		    "lxy":"",//连续几个月
+		    "jnsb":"",//缴纳社保人数
+		    "zbtr":"",//装备投入(万元)
+		    "ndsjss":"",//会计年度实缴税收(万元)
+		    "qt":"",//其他
+			'czwt':'',//存在问题
+			zsyzFjList:[],//附件地址
+		},
+		tanfalg:false,
+		addimg:require("@/static/images/mine/add.png"),
+		delimg:require("@/static/images/mine/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		rules: {
+		  tcrq: {rules: [{required: true,errorMessage: '请选择投产日期'}]},
+		  sjdze: {rules: [{required: true,errorMessage: '请输入实际到资金额',}]},
+		 
+		},
+		tworules:{
+			zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		},
+		lhindex:0,
+		lhlist:[{label:'是',id:'Y'},{label:'否',id:'N'},],//领航
+		cyindex:0,
+		cylist:[{label:'是',id:'Y'},{label:'否',id:'N'}],
+		map:{text:'label',value:'id'},
+		qybglist:[{label:'500强企业',id:1},{label:'上市部门',id:2},{label:'行业100强',id:3},{label:'头部企业',id:4}],
+		pagetype:'add',
+		xmmc:'',
+		}
+    },
+	onLoad(e) {
+		var newObj=JSON.parse(decodeURIComponent(e.data))
+		this.pagetype=newObj.pagetype||'add';
+		this.datainfo.xmId=newObj.xmId;
+		this.datainfo.xmbh=newObj.xmbh;
+		this.xmmc=newObj.xmmc;
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			this.getDataFn()
+		}else{
+			this.datainfo.xmmc=newObj.xmmc;
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		// 投产详情
+		getDataFn(){
+			gettcxxdetail(this.datainfo.xmId).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					this.datainfo.xmbh=this.xmmc;
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getNext(){
+			this.$refs.form.validate().then(res => {
+				if(!this.datainfo.rgsj&&!this.datainfo.nrgsj){
+					this.$toast('请选择入规日期或者拟入规日期');
+					return
+				}
+				this.type=2;
+			})
+		},
+		bindDateChangea(e){
+			this.datainfo.tcrq=e.detail.value
+		},
+		bindDateChangeb(e){
+			this.datainfo.rgsj=e.detail.value
+		},
+		bindDateChangec(e){
+			this.datainfo.nrgsj=e.detail.value
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.twoform.validate().then(res => {
+				var params=this.datainfo;
+				// params.zsyzFjList=this.filelist
+				// 判断到资明细有没有填写
+				if(!params.ydmj&&!params.tdcr&&!params.xjcf&&!params.cftr&&!params.sbqd&&!params.sbfp&&!params.sbht&&!params.fkpz&&!params.zlcf&&!params.zlcftr&&!params.zlsbqd&&!params.zlsbfp&&!params.zlsbht&&!params.zlfkpz&&!params.sjss&&!params.lxy&&!params.jnsb&&!params.zbtr&&!params.ndsjss&&!params.qt){
+					this.$toast('请输入到资明细')	
+					return
+				}
+				if(this.pagetype=='add'){
+					gettcxxAddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报投产信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}else{
+					gettcxxPutFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改投产信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}
+				
+			})
+      },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+	  	this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDelFj(idx){
+	  	this.filelist.splice(idx,1)
+	  	this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDown(e){
+		  uni.showLoading({
+		  	title: '加载中'
+		  });
+	  	var url=baseUrl+e;
+	  	uni.downloadFile({
+	  		url: url,//文件的下载路径
+	  		success(result) {
+				uni.hideLoading()
+	  			var filePath = result.tempFilePath;
+	  			   uni.openDocument({
+	  			     filePath: filePath,
+	  			     showMenu: true,
+	  			     success: function (res) {
+	  			       console.log('打开文档成功');
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	// .delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+
+
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .inform .pl12{margin-right: 10rpx;}
+ .fixedbox .pl12{margin-right: 10rpx;}
+</style>
+	

+ 221 - 0
qs_zhaoshang/pages/work/allitems.vue

@@ -0,0 +1,221 @@
+<template>
+	<view class="allpage">
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch' :name="name"></tab-searchone>
+			<tab-list :tablist='tablist' :tabidx="tabidx" @getCheck="goCheck" :height='130'></tab-list>
+			<time-year @bindDateChange="bindDateChange" :timedate="time"></time-year>
+		</view>
+		<view class="zhanline"></view>
+		<view class="alllist">
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt='wtdt' @getDetail='goDetail'></project-list>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabList from "@/components/toptab/tab.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getsbbzblist,getqyxxlist,getkgxxlist,gettcxxlist } from '@/api/work/clue.js'
+	import {getCommonCensus} from "@/api/work/index.js"
+	export default{
+		data(){
+			return{
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				itemslist:[],
+				wtdt:'',
+				tabidx:0,
+				date:'',
+				list:[],
+				tablist:[{tit:'全部',val:0,txt:0,limt:'projectV2:sbbzb:list'},{tit:'线索',val:1,txt:0,limt:'projectV2:sbbzb:list'},{tit:'签约',val:2,txt:0,limt:'projectV2:sbbzb:list'},{tit:'开工',val:3,txt:0,limt:'projectV2:sbbzb:list'},{tit:'投产',val:4,txt:0,limt:'projectV2:sbbzb:list'},],
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				census:'',
+				deptId:this.$store.state.user.deptId,
+				time:""
+			}
+		},
+		components:{
+			projectList,tabList,tabSearchone,timeYear
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad(e) {
+			this.tabidx=Number(e.idx);
+			if(e.xmmc){
+				this.name=e.xmmc;
+			}
+			var y='';
+			if(e.time){
+				y=e.time
+			}else{
+				let date = new Date();
+				y = date.getFullYear();
+			}
+			this.beginTime=y+'0101';
+			this.endTime=y+'1231';
+			this.time=y;
+			this.getDataFn();
+			this.getCommonCensus();
+			uni.$on('refreshdatalist',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+				if(e&&e=='ldps'){
+					
+				}else{
+					this.getCommonCensus();
+				}
+				
+			})
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			getCommonCensus(){
+				var params={
+					deptId:this.deptId,
+					xmxsmc:this.name,
+					params:{
+						'beginTime':this.beginTime,
+						'endTime':this.endTime
+					}
+				}
+				// params['params[beginTime]']=this.beginTime
+				// params['params[endTime]']=this.endTime
+				getCommonCensus(params).then(res=>{
+					if(res.code==200){
+						this.census=res.data;
+						var newArr=this.tablist;
+						newArr.forEach(ite=>{
+							if(ite.val==0){
+								ite.txt=res.data.all||0
+							}else if(ite.val==1){
+								ite.txt=res.data.st||0
+							}else if(ite.val==2){
+								ite.txt=res.data.qy||0
+							}else if(ite.val==3){
+								ite.txt=res.data.kg||0
+							}else if(ite.val==4){
+								ite.txt=res.data.tc||0
+							}
+						})
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmxsmc:this.name,
+					deptId:this.$store.state.user.deptId
+				}
+				params['params[beginTime]']=this.beginTime
+				params['params[endTime]']=this.endTime
+				if(this.tabidx==0){
+					
+				}else if(this.tabidx==1){//线索
+					params.progress='1,2'
+				}else if(this.tabidx==2){//签约
+					params.progress='3'
+				}else if(this.tabidx==3){//开工
+					params.progress='4'
+				}else if(this.tabidx==4){//投产
+					params.progress='5'
+				}
+				//1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产
+				getsbbzblist(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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+				this.getCommonCensus();
+			},
+			bindDateChange(e){
+				this.year=e;
+				this.beginTime=e+'0101';
+				this.endTime=e+'1231';
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+				this.getCommonCensus();
+			},
+			goCheck(data){
+				this.tabidx=data;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+				// this.getCommonCensus();
+			},
+			goDetail(e){
+				this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
+				 // this.$tab.navigateTo('/pages/work/cluedetails?id='+e+"&tabidx="+this.tabidx)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding-top:320rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+ .alllist{padding-top:10rpx ;}
+</style>

+ 920 - 0
qs_zhaoshang/pages/work/cluedetails.vue

@@ -0,0 +1,920 @@
+<template>
+	<view class="clued navbar">
+		<!-- 顶部 -->
+		<view class="pfixed">
+		<uni-nav-bar  left-icon="left" fixed="true" :border='border'   statusBar='true'  title="线索详情" rightWidth='180rpx' @clickRight="clickRight" @clickLeft='getBack'>
+			<block slot="right">
+				<view class="min_top" >
+					<image :src="moreimg"></image>
+				</view>
+			</block>
+		</uni-nav-bar>
+			<tab-list :tablist='tablist' :tabidx='tabidx' :height='90' @getCheck="goCheck"></tab-list>
+			<!-- 市值单位审核通过只能看到自己的 -->
+			<!-- <block >
+				<view class="clued_tong btn flexcc" v-if="datacominfo.shjg==1">审核已通过</view>
+				<view class="clued_tong btn1 flexcc" v-if="datacominfo.shjg==2">审核已拒绝</view>
+			</block>
+			<block >
+				<view class="clued_tong btn flexcc" v-if="datacominfo.shjg==1">审核已通过</view>
+				<view class="clued_tong btn1 flexcc" v-if="datacominfo.shjg==2">审核已拒绝</view>
+			</block>
+			<block >
+				<view class="clued_tong btn flexcc" v-if="datacominfo.shjg==1">审核已通过</view>
+				<view class="clued_tong btn1 flexcc" v-if="datacominfo.shjg==2">审核已拒绝</view>
+			</block> -->
+			<!--  progress    1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产-->
+			<!-- 市直立单位 承接地-->
+		</view>
+		<!-- 站位的 -->
+		<uni-nav-bar  left-icon="left" :border='border'   statusBar='true' />
+		<view style="height: 90rpx;"></view>
+		<view class="zhanline"></view>
+		
+		
+		<!-- 线索详情 -->
+		<view class="cldetail" v-if="(datainfoa&&tabidx==0)||(datainfob&&tabidx==1)||(datainfoc&&tabidx==2)||(datainfod&&tabidx==3)">
+			
+			<uni-steps :options="list1" :active="active" active-icon="smallcircle-filled" active-color='#FD8218' />
+			
+			<view class="cldelist">
+				<view class="flexc pdtb10">
+					<view class="flex0 f16 fw c34">上报单位</view>
+					<view class="flex1 f16 c6 txr">{{datacominfo.sbdw}}</view>
+				</view>
+				<view class="flexc pdtb10">
+					<view class="flex0 f16 fw c34">填表日期</view>
+					<view class="flex1 f16 c6 txr">{{datacominfo.tbrq}}</view>
+				</view>
+				<view class="flexc pdtb10">
+					<view class="flex0 f16 fw c34">项目负责人</view>
+					<view class="flex1 f16 c6 txr">{{datacominfo.zszxfzr}}</view>
+				</view>
+			</view>
+			
+			<view >
+				<!-- 线索 -->
+				<block v-if="tabidx==0"><clue :datainfo='datainfoa' :yzadr='yzadr' :cytype="cytype" :projectlist="projectlist" :backgroundlist="backgroundlist" @getDown="getDown" :qiaddlist="qiaddlist" :ziaddlist="ziaddlist"></clue></block>
+				
+				<!-- 签约 -->
+				<block v-if="tabidx==1"><sign-up :datainfo='datainfob' @getDown="getDown"></sign-up></block>
+				
+				<!-- 开工 -->
+				<block v-if="tabidx==2"><start-work :datainfo='datainfoc' :ratelist="ratelist"  @getDown="getDown"></start-work></block>
+				
+				<!-- 投产 -->
+				<block v-if="tabidx==3"><put-into :datainfo='datainfod'  @getDown="getDown"></put-into></block>
+				
+				
+				<!-- 按钮 -->
+				<view class="pfixedb flexc" >
+					<!-- <view class="cluebtn btn2" @click="getOperate(2)">审核</view> -->
+					<!-- 领导批示 -->
+					<view v-if="checkPermi(['system:ldps:add'])" class="cluebtn btn2"  @click="getLdFn">批示</view>
+					<!-- 招商中心 -->
+					<block v-if="addinfotype=='-1'">
+						
+							<!-- <view class="cluebtn btn2" v-if="(roles=='cjd'||roles=='szbm')&&progress==2&&xmStatus==1" @click="getOperate(2)">审核</view> -->
+							
+							<!-- <view class="cluebtn btn2" v-if="roles=='szbm'&&progress==1&&xmStatus==1" @click="getOperate(2)">审核</view> -->
+						
+
+						<!-- <block v-if="roles=='manage'||roles=='admin'"> -->
+							
+							<block v-if="checkPermi(['projectV2:common:xszc'])">
+								<!-- 线索和签约之间 -->
+								<view v-if="progress==1||progress==2" class="cluebtn btn1" @click="getOperate(1)">暂缓/销号</view>
+							</block>
+							<block v-if="checkPermi(['projectV2:common:xssh'])">
+								<!-- 中心线索审核 -->
+								<!-- 项目状态 1:待审核 2:已通过 3:被退回 -->
+								<view class="cluebtn btn2" v-if="xmStatus==1&&progress!=2" @click="getOperate(2)">审核</view>
+							</block>
+							<block v-if="checkPermi(['projectV2:common:xszp'])">
+								<!-- 线索审核过后 ||(progress==1&&xmStatus==3)-->
+								<view class="cluebtn btn2" v-if="(progress==1&&xmStatus==2)"  @click="getYuShenFn">项目分派</view>
+							</block>
+						<!-- </block>
+						
+						<block v-else> -->
+							<!-- 要素部门 &&roles=='ysbm'-->
+							<view   class="cluebtn btn2" v-if="checkPermi(['projectV2:common:xsshYsbm'])&&progress==2&&userroles=='ysbm'" @click="getOperate(2,'ysbm')">审核</view>
+							<!-- 承接地 &&roles=='cjd'-->
+							<!-- 市值部门  招商引进单位 和承接地功能一样-->
+							<view class="cluebtn btn2" v-if="checkPermi(['projectV2:common:xsshCjd'])&&progress==2&&userroles=='cjd'" @click="getOperate(2,'cjd')">审核</view>
+						<!-- </block> -->
+					</block>
+					<!-- 1 3 4 6 8 10 -->
+					<!--  progress   项目进度 1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产 -->
+					<!--  xmStatus   1:待审核 2:已通过 3:被退回 -->
+					<!-- 市直立单位 承接地-->
+<!-- 					<view class="cluebtn btn2"   @click="getYuShenFn">项目分派</view> -->
+				</view>
+			</view>
+		</view>
+		<view v-else>
+			<!-- 无数据 -->
+			<no-data ></no-data>
+			
+			<!-- 上报签约信息 -->
+			<view class="pfixedb flexc" >
+				<!-- 领导批示 -->
+				<view v-if="checkPermi(['system:ldps:add'])" class="cluebtn btn2"  @click="getLdFn">批示</view>
+				<view class="cluebtn btn2" @click="getAddQianFn" v-if="progress==2&&checkPermi(['projectV2:qyxx:add'])">上报签约信息</view>
+				<view class="cluebtn btn2" @click="getAddKaiFn" v-if="progress==3&&checkPermi(['projectV2:kgxx:add'])">上报开工信息</view>
+				<view class="cluebtn btn2" @click="getAddTouFn" v-if="progress==4&&checkPermi(['projectV2:tcxx:add'])">上报投产信息</view>
+			</view>
+		</view>
+		
+		
+		<!-- 弹窗 -->
+		<pop-up :type="type" @getClose='getClose' :iteminfo="iteminfo" @getzanFn='getzanFn' @getyjSubmit='getyjSubmit' @getXmSubmitFn='getXmSubmitFn' @getzbSubmit="getzbSubmit" @getLinSubmit='getLinSubmit'></pop-up>
+		
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="moreflag"></view>
+		<view class="more_fixed" v-if="moreflag">
+			<view class="more_fixedt">
+				<!-- 撤回 &&progress!=2-->
+				<view v-if="checkPermi(['projectV2:common:xsch'])&&xmStatus==2"  @click="getXsch">撤回</view>
+				<view v-if="checkPermi(['projectV2:sbbzb:edit'])&&progress==1&&addinfotype=='-1'&&xmStatus!=2" @click="getUpdate">修改信息</view>
+				<view v-if="checkPermi(['projectV2:qyxx:edit'])&&progress==3&&addinfotype=='-1'&&xmStatus!=2" @click="getUpdate">修改信息</view>
+				<view v-if="checkPermi(['projectV2:kgxx:edit'])&&progress==4&&addinfotype=='-1'&&xmStatus!=2" @click="getUpdate">修改信息</view>
+				<view v-if="checkPermi(['projectV2:tcxx:edit'])&&progress==5&&addinfotype=='-1'&&xmStatus!=2" @click="getUpdate">修改信息</view>
+				<!-- <view v-if="checkPermi(['projectV2:sbbzb:edit'])&&addinfotype=='-1'&&(xmStatus!=2||(progress==4&&xmStatus==2))" @click="getUpdate">修改信息</view> -->
+				<!-- checkPermi(['projectV2:kgxx:editKg']) -->
+				<view v-if="((progress==5&&xmStatus!=2)||(progress==4&&xmStatus==2))" @click="getUpdatekg">修改开工信息</view>
+				<!-- <view>撤回信息</view> -->
+				<!-- 专班跟进 -->
+				<view @click="getFollowup" v-if="checkPermi(['projectV2:sbbzb:meet'])">专班跟进</view>
+				<view v-if="checkPermi(['projectV2:shyj:list'])" @click="getshprogress">审核进度</view>
+				<view v-if="checkPermi(['projectV2:jzqk:add'])" @click="getAddProject">添加对接模块</view>
+				<view v-if="checkPermi(['projectV2:jzqk:list'])" @click="getProject">查看对接模块</view>
+				<view v-if="checkPermi(['system:ldps:list'])" @click="getLdwrlistFn">查看领导批示</view>
+				<!-- 查看批示 -->
+			</view>
+			<view class="more_fixedb" @click="getClose">取消</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import tabList from "@/components/toptab/tab.vue"
+	import { getToken } from '@/utils/auth' 
+	import popUp from "@/components/popup/popup.vue"
+	import clue from "@/components/clue/clue.vue"  //线索
+	import signUp from "@/components/clue/signup.vue"  //签约
+	import startWork from "@/components/clue/startwork.vue"  //开工
+	import putInto from "@/components/clue/tputinto.vue"  //投产
+	import { getsbbzbdetail,getqyxxtail,getkgxxdetail,gettcxxdetail,getCommonXszc,getshyjFn,getCommonXssh,getcommonXsshCjd,getcommonXsshYsbm,getjzqkFn,getrateXschFn ,gesbbzbmeetFn,getldpsFn,getldpsputFn,getldpsdelFn,getldzcFn} from '@/api/work/clue.js'
+	import { getDictionaryFn} from '@/api/work/index.js'
+	import {getPersionList,getInvestorList,getrateListFn} from "@/api/work/addclue.js"
+	import config from '@/config.js';
+	const baseUrl = config.baseUrl;
+	import {clickPeople } from "@/utils/common.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import noData from "@/components/nodata/nodata.vue"
+	export default{
+		data(){
+			return{
+				border:false,
+				tabidx:0,
+				id:'',
+				tablist:[{tit:'线索',val:0,limt:'projectV2:sbbzb:query'},{tit:'签约',val:1,limt:'projectV2:qyxx:query'},{tit:'开工',val:2,limt:'projectV2:kgxx:query'},{tit:'投产',val:3,limt:'projectV2:tcxx:query'},],
+				active: 0,
+				list1: [{title: '线索'}, {title: '签约'}, {title: '开工'}, {title: '投产'}],
+				
+				showArrow:false,
+				type:0,//弹窗类型 1暂存/消耗 2审核意见 3批示
+				upimg:require('@/static/images/index/up.png'),
+				
+				moreimg:require("@/static/images/index/more.png"),
+				datacominfo:{},
+				cytype:[],
+				yzadr:[],
+				projectlist:[],
+				backgroundlist:[],
+				fotbtnflag:true,
+				moreflag:false,
+				userroles:this.$store.state.user.roles[0],
+				roles:'',
+				progress:'',//项目进度 1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产
+				xmStatus:'',//1:待审核 2:已通过 3:被退回
+				deptId:this.$store.state.user.deptId,
+				addinfotype:-1,
+				datainfoa:'',
+				datainfob:'',
+				datainfoc:'',
+				datainfod:'',
+				qiaddlist:[],
+				ziaddlist:[],
+				ratelist:[],
+				iteminfo:{},
+				status:'add'
+			}
+		},
+		components:{
+			tabList,popUp,clue,signUp,startWork,putInto,noData
+		},
+		onUnload(){
+			uni.$off('refreshdata')
+		},
+		onLoad(e) {
+			uni.$on('refreshdata',(e) => {
+				this.addinfotype=-1;
+				this.datainfoa='';
+				this.datainfob='';
+				this.datainfoc='';
+				this.datainfod='';
+				this.getDataFn();
+				uni.$emit('refreshdatalist');
+			})
+			this.id=e.id;
+			this.addinfotype=-1;
+			// 项目进度 1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产
+			//2,2  上报线索
+			//3,2 上报开工
+			//4,2 上报项目投产
+			if(checkPermi(['projectV2:sbbzb:query'])){
+				this.getDataFn()
+			}
+			// this.getDataFnes()
+			// 线索
+			this.getinvestmentarea()
+			this.getldzcFn()
+		},
+		methods:{
+			checkPermi, checkRole,
+			init(){
+				this.getInvestorList()//企业列表
+				this.getPersionList()//自然人列表
+			},
+			getLdFn(){
+				this.type=3
+			},
+			getldzcFn(){
+				if(checkPermi(['system:ldps:queryZc'])){
+					var params={
+						xmId:this.id
+					}
+					getldzcFn(params).then(res=>{
+						if(res.code==200){
+							this.iteminfo=res.data||{}
+							if(res.data){
+								this.status='update'
+							}else{
+								this.status='add'
+							}
+						}
+					})
+				}
+				
+			},
+			getLdwrlistFn(){
+				this.moreflag=false
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+				}
+				this.$tab.navigateTo('/pages/work/ldwritten?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			getLinSubmit(data){
+				var that=this;
+				
+				var params={};
+				var str=''
+				if(data.type==0){//暂存
+					params.zcpsnr=data.psnr;
+					params.type=1;
+					str='批示暂存成功'
+				}else{
+					params.psnr=data.psnr;
+					params.type=2;
+					str='批示提交成功'
+				}
+				params.xmId=this.datacominfo.xmId;
+				params.xmbh=this.datacominfo.xmbh;
+				params.xmmc=this.datacominfo.xmmc;
+				// 新增
+				// console.log(this.status,85)
+				if(this.status=='add'){
+					getldpsFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast(str)
+							setTimeout(function(){
+								if(data.type!=0){
+									uni.$emit('refreshdatalist','ldps');;
+								}
+								that.getldzcFn()
+								that.type=0;
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})	 
+				}else{
+					params.id=this.iteminfo.id
+					getldpsputFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast(str)
+							setTimeout(function(){
+								if(data.type!=0){
+									uni.$emit('refreshdatalist','ldps');;
+								}
+								that.getldzcFn()
+								that.type=0;
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})	
+				}
+				
+			},
+			getFollowup(){
+				this.moreflag=false;
+				this.type=5
+			},
+			getzbSubmit(e){
+				var params={
+					id:this.datacominfo.xmId,
+					isMeet:e
+				}
+				gesbbzbmeetFn(params).then(res=>{
+					if(res.code==200){
+						this.type=0;
+						this.$toast(res.msg)									
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			// 项目列表
+			getRateList(){
+				var params={
+					xmbh:this.datacominfo.xmbh
+				}
+				getrateListFn(params).then(res=>{
+					if(res.code==200){
+						// 
+						var newArr=res.rows||[];
+						if(newArr.length){
+							newArr.forEach(ite=>{
+								ite.photo=ite.photo.split(',')
+							})
+						}
+						this.ratelist=newArr
+						// if(res.rows.length){
+						// 	this.qiziflag=true
+						// }
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getInvestorList(){
+				var params={
+					xmbh:this.datacominfo.xmbh
+				}
+				getInvestorList(params).then(res=>{
+					if(res.code==200){
+						this.qiaddlist=res.rows||[]
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getPersionList(){
+				var params={
+					xmbh:this.datacominfo.xmbh
+				}
+				getPersionList(params).then(res=>{
+					if(res.code==200){
+						this.ziaddlist=res.rows||[];
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getUpdatekg(){
+				this.moreflag=false
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+					pagetype:'update',
+					dis:true,
+					progress:this.progress,
+					xmStatus:this.xmStatus
+				}
+				// progress:'',//项目进度 1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产
+				// xmStatus:'',//1:待审核 2:已通过 3:被退回
+				// 修改开工信息
+				this.$tab.navigateTo('/pages/work/addstart?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			// 修改信息
+			getUpdate(){
+				var progress=this.progress;
+				this.moreflag=false;
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+					progress:this.progress,
+					xmStatus:this.xmStatus,
+					pagetype:'update'
+				}
+				if(progress==1||progress==2){
+					this.$tab.navigateTo('/pages/work/addclues?data='+encodeURIComponent(JSON.stringify(newobj)))
+				}else if(progress==3){
+					this.$tab.navigateTo('/pages/work/addcontract?data='+encodeURIComponent(JSON.stringify(newobj)))
+				}else if(progress==4){
+					this.$tab.navigateTo('/pages/work/addstart?data='+encodeURIComponent(JSON.stringify(newobj)))
+				}else if(progress==5){
+					this.$tab.navigateTo('/pages/work/addtproduction?data='+encodeURIComponent(JSON.stringify(newobj)))
+				}
+			},
+			getAddQianFn(){
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+					pagetype:'add'
+				}
+				this.$tab.navigateTo('/pages/work/addcontract?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			getAddKaiFn(){
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+					progress:this.progress,
+					xmStatus:this.xmStatus,
+					pagetype:'add'
+				}
+				this.$tab.navigateTo('/pages/work/addstart?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			getAddTouFn(){
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+					pagetype:'add'
+				}
+				this.$tab.navigateTo('/pages/work/addtproduction?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			getTabchange(){
+				var progress=this.progress;
+				var xmStatus=this.xmStatus;
+				if(xmStatus==2){
+					if(progress==2){//上报签约
+						this.active=1;
+						this.tabidx=1;
+					}else if(progress==3){//上报开工
+						this.active=2;
+						this.tabidx=2;
+					}else if(progress==4){//上报投产
+						this.active=3;
+						this.tabidx=3;
+					}else if(progress==5){
+						this.active=4;
+						this.tabidx=0;
+					}
+				}else{
+					if(progress==1||progress==2){
+						this.active=0;
+					}else if(progress==3){
+						this.active=1;
+					}else if(progress==4){
+						this.active=2;
+					}else if(progress==5){
+						this.active=3;
+					}
+					this.tabidx=this.active;
+				}
+				if(this.tabidx>this.active){
+				}else{
+					this.getDataFnes()
+				}
+				
+			},
+			getDown(e){
+				var url=baseUrl+e;
+				// 提示
+				uni.showLoading({
+					title: '加载中'
+				});
+				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()
+					}
+				})
+			},
+			// 字典值
+			getinvestmentarea(){
+				// 引资地区
+				getDictionaryFn('investment_area').then(res=>{
+					if(res.code==200){
+						this.yzadr=res.data
+					}
+				})
+				// 产业类型
+				// getDictionaryFn('industry_type').then(res=>{
+				// 	if(res.code==200){
+				// 		this.cytype=res.data
+				// 	}
+				// })
+				//项目类别
+				// getDictionaryFn('project_category').then(res=>{
+				// 	if(res.code==200){
+				// 		this.projectlist=res.data
+				// 	}
+				// })
+				//企业背景
+				getDictionaryFn('enterprise_background').then(res=>{
+					if(res.code==200){
+						this.backgroundlist=res.data
+					}
+				})
+			},
+			getXsch(){
+				var that=this;
+					uni.showModal({
+						title: '确认撤回',
+						content: '确认撤回项目状态',
+						cancelText: '取消',
+						confirmText: '确认',
+						success: function(res) {
+							if (res.confirm) {
+								var params={
+									id:that.datacominfo.xmId,
+									progress:that.progress,
+									xmStatus:that.xmStatus
+								}
+								getrateXschFn(params).then(res=>{
+									if(res.code==200){
+										that.$toast('撤回成功')
+										uni.$emit('refreshdatalist');
+										setTimeout(function(){
+											uni.navigateBack({
+												delta:1
+											})	
+										},1500)									
+									}else{
+										that.$toast(res.msg)
+									}
+								})
+							} else if (res.cancel) {
+							}
+						}
+					});
+			},
+			// 暂缓
+			getOperate(e,d){
+				this.type=Number(e);
+				if(d){
+					this.roles=d
+				}else{
+					this.roles=''
+				}
+				// console.log(this.roles)
+			},
+			getAddProject(){
+				this.moreflag=false;
+				this.type=Number(4)
+			},
+			getProject(){
+				this.moreflag=false;
+				this.$tab.navigateTo('/pages/work/projectprogress?id='+this.datacominfo.xmId+'&xmbh='+this.datacominfo.xmbh)
+			},
+			// 项目进展
+			getXmSubmitFn(data){
+				var that=this;
+				var params=JSON.parse(JSON.stringify(data))
+				params.xmId=this.datacominfo.xmId;
+				params.xmmc=this.datacominfo.xmmc; 
+				params.xmbh=this.datacominfo.xmbh;
+				getjzqkFn(params).then(res=>{
+					if(res.code==200){
+						that.$toast('添加对接模块成功')
+						setTimeout(function(){
+							that.type=0;
+						},1500)									
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getzanFn(e){
+				var str='';
+				var that=this;
+				var params={
+					id:this.id
+				}
+				if(e){
+					params.type=2;
+					str='暂缓成功'
+				}else{
+					params.isDel='Y'
+					str='销号成功'
+				}
+				getCommonXszc(params).then(res=>{
+					if(res.code==200){
+						that.$toast(str)
+						uni.$emit('refreshdatalist');
+						setTimeout(function(){
+							uni.navigateBack({
+								delta:1
+							})	
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+				// console.log(params)
+			},
+			getyjSubmit(data){
+				// 承接地 xmjd:4
+				// 分发要素部门 xmjd:3
+				//招商中心签约审核 6
+				//招商中心开工审核 8
+				//招商中心投产审核 10
+				//项目进度 1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产
+				 var params=JSON.parse(JSON.stringify(data))
+				 params.deptId=this.$store.state.user.deptId;
+				 params.shrxm=this.$store.state.user.name;
+				 var that=this;
+				 params.xmId=this.datacominfo.xmId;
+				 params.xmmc=this.datacominfo.xmmc; 
+				 params.xmbh=this.datacominfo.xmbh;
+				 params.xmjd=this.progress;
+				var roles=this.roles;
+				// console.log(roles,1)
+				// console.log(params,77)
+				// return
+				if(roles=='cjd'){
+					getcommonXsshCjd(params).then(res=>{
+						if(res.code==200){
+							that.$toast("审核提交成功")
+							setTimeout(function(){
+								uni.$emit('refreshdatalist');
+								that.type=0;
+								uni.navigateBack({
+									delta:1
+								})
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else if(roles=='ysbm'){
+					getcommonXsshYsbm(params).then(res=>{
+						if(res.code==200){
+							that.$toast("审核提交成功")
+							setTimeout(function(){
+								uni.$emit('refreshdatalist');
+								that.type=0;
+								uni.navigateBack({
+									delta:1
+								})
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					getCommonXssh(params).then(res=>{
+						if(res.code==200){
+							that.$toast("审核提交成功")
+							setTimeout(function(){
+								uni.$emit('refreshdatalist');
+								that.type=0;
+								if(that.progress==1&&params.shjg==2){
+									that.addinfotype=-1;
+									that.datainfoa='';
+									that.datainfob='';
+									that.datainfoc='';
+									that.datainfod='';
+									that.getDataFn();
+									var newobj={
+										xmId:that.datacominfo.xmId,
+										xmmc:that.datacominfo.xmmc,
+										xmbh:that.datacominfo.xmbh,
+									}
+									that.$tab.navigateTo('/pages/work/xminquiry?data='+JSON.stringify(newobj))
+								}else{
+									uni.navigateBack({
+										delta:1
+									})
+								}
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}
+			},
+			//审核
+			getYuShenFn(){
+				var newobj={
+					xmId:this.datacominfo.xmId,
+					xmmc:this.datacominfo.xmmc,
+					xmbh:this.datacominfo.xmbh,
+				}
+				this.$tab.navigateTo('/pages/work/xminquiry?data='+encodeURIComponent(JSON.stringify((newobj))))
+			},
+			getClose(){
+				this.type=0;
+				this.moreflag=false;
+			},
+			radioChange(){
+				
+			},
+			getToken(){
+				// console.log(this.getToken())
+			},
+			clickRight(){
+				this.moreflag=true
+				// if(checkPermi(['projectV2:shyj:list'])){
+				// 	this.$tab.navigateTo('/pages/work/shprogress?id='+this.id)
+				// }else{
+				// 	return
+				// }
+				
+			},
+			getshprogress(){
+				this.moreflag=false;
+				if(checkPermi(['projectV2:shyj:list'])){
+					this.$tab.navigateTo('/pages/work/shprogress?id='+this.id)
+				}else{
+					return
+				}
+			},
+			goCheck(data){
+				// 未进行的不能点击
+				// this.tabidx=data;
+				// return
+				// console.log(data)
+				if(data>this.active){
+				}else{
+					this.tabidx=data;
+					this.getDataFnes()
+				}
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			// 拿到当前线进程
+			getDataFn(){
+				var that=this;
+
+				getsbbzbdetail(this.id).then(res=>{
+					if(res.code==200){
+						var newobj={
+							xmId:res.data.id,
+							xmmc:res.data.xmxsmc,
+							xmbh:res.data.xmbh,
+							sbdw:res.data.sbdw,
+							tbrq:res.data.tbrq,
+							zszxfzr:res.data.zszxfzr,
+							shjg:res.data.shjg,
+						}
+						this.datacominfo=JSON.parse(JSON.stringify(newobj));
+						this.progress=res.data.progress;
+						this.xmStatus=res.data.xmStatus;
+						// 看是在哪个阶段
+						this.getTabchange()
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getDataFnes(){
+				// console.log(this.addinfotype,8)
+				//1:项目首谈 2:项目承接 3:项目签约 4:项目开工 5:项目投产
+				var addinfotype=this.addinfotype;
+				// console.log(addinfotype,this.datainfob,8)
+				if(this.tabidx==1){//签约
+					if(checkPermi(['projectV2:qyxx:query'])&&!this.datainfob&&addinfotype!=1){
+						getqyxxtail(this.id).then(res=>{
+							if(res.code==200){
+								this.datainfob=res.data||'';
+								if(!this.datainfob&&addinfotype==-1){
+									this.addinfotype=1;
+								}
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}
+				}else if(this.tabidx==2){//开工
+					if(checkPermi(['projectV2:kgxx:query'])&&!this.datainfoc&&addinfotype!=2){
+						getkgxxdetail(this.id).then(res=>{
+							if(res.code==200){
+								this.datainfoc=res.data||'';
+								if(!this.datainfoc&&addinfotype==-1){
+									this.addinfotype=2;
+								}
+							}else{
+								this.$toast(res.msg)
+							}
+							this.getRateList()//进度图片
+						})
+					}
+					
+				}else if(this.tabidx==3){//投产
+					if(checkPermi(['projectV2:tcxx:query'])&&!this.datainfod&&addinfotype!=3){
+						gettcxxdetail(this.id).then(res=>{
+							if(res.code==200){
+								this.datainfod=res.data||'';
+								if(!this.datainfod&&addinfotype==-1){
+									this.addinfotype=3;
+								}
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}
+					
+				}else{//全部 线索
+					if(checkPermi(['projectV2:sbbzb:query'])&&!this.datainfoa&&addinfotype!=0){
+						getsbbzbdetail(this.id).then(res=>{
+							if(res.code==200){
+								this.datainfoa=res.data||'';
+								if(!this.datainfoa&&addinfotype==-1){
+									this.addinfotype=0;
+								}
+								// 获取企业,自然人
+								this.init()
+							}else{
+								this.$toast(res.msg)
+							}
+						})
+					}
+					
+				}
+				
+			}
+			
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.clued{min-height: 100vh;background-color: #fff;box-sizing: border-box;padding-bottom: 100rpx;}
+
+
+.cldetail{padding-top: 70rpx;}
+.cldelist{padding: 48rpx 28rpx 36rpx;border-bottom: 2rpx solid #E5E5E5;}
+
+.cldelista{
+	border-bottom: 2rpx solid #E5E5E5;
+	.contentt{padding:48rpx 28rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+		}
+	}
+	.content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-bottom: 20rpx;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{padding: 48rpx 28rpx;}
+}
+
+// 操作按钮
+.cluebtn{
+	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;
+	&.btn1{background-color: #1FB9F7;flex: 1;}
+	&.btn2{background-color:#FF6400;flex: 1;}
+}
+
+
+// 审核通过
+.clued_tong{width: 100%;height: 70rpx;font-size: 32rpx;font-weight: 500;
+&.btn{background: #C0FFC0;color: #28C529;}
+&.btn1{background: #ffcaac;color: #ff440b;}
+}
+
+// 消息
+.min_top{position: relative;width: 44rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 32rpx;
+	image{width: 44rpx;height: 34rpx;}
+	
+}
+
+
+</style>

+ 376 - 0
qs_zhaoshang/pages/work/count/addkscount.vue

@@ -0,0 +1,376 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform'  ref="form" :rules="rules" :value="datainfo" >
+	  		<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  		 <view class="flexc infolist">
+	  		  	<view class="f16 fw c34 flex0 pr pl12">单位名称</view>
+	  		  	<input  placeholder="请输入单位名称" disabled="true" v-model="datainfo.deptName"  class="f16  c34 flex1 txr"/>
+	  		  </view> 
+	  		</uni-forms-item>
+	  		<uni-forms-item name="outsideTime" style='margin-bottom: 0;'>
+	  		 <view class="flexc infolist">
+	  		  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>对接日期</view>
+				<!-- fields="month" -->
+				<picker mode="date" :value="datainfo.outsideTime"  :end="currentdate" class="infolist_a" @change='bindDateChangea'>
+					<view :class="datainfo.outsideTime?'':'f16 co80'">{{datainfo.outsideTime||"请选择对接日期"}}</view>
+				</picker>
+				</view>
+	  		</uni-forms-item>
+	  		<!-- <view class="info_tit">招商外出次数/天数</view> -->
+	  		<!-- <uni-forms-item name="numberOutings" style='margin-bottom: 0;'>
+	  		 <view class="flexc infolist">
+	  		  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>对接天数</view>
+	  		  	<input  placeholder="请输入对接天数" type="number" v-model="datainfo.numberOutings"  class="f16  c34 flex1 txr"/>
+	  		  </view> 
+	  		</uni-forms-item> -->
+			<!-- <uni-forms-item name="outgoer" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>对接人员</view>
+			  	<input  placeholder="请输入对接人员"  v-model="datainfo.outgoer"  class="f16  c34 flex1 txr"/>
+			  </view> 
+			</uni-forms-item> -->
+			<view class="border"></view>
+			<uni-forms-item name="details" style='margin-bottom: 0;'>
+			 <view class="flexc infolist" style="align-items: flex-start;">
+			  	<view class="f16 fw c34 flex0 pr pl12">情况说明</view>
+				<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.details"  placeholder="请输入具体对接客商情况" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+				<view class="flexc infolist">
+					<view class="f16 fw c34 flex0 pr pl12">附件</view>
+					<view class="infolist_a co28" ><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>
+			</uni-forms-item>
+			<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+				<view class="flext f15 c6" @click="getDown(ite.path)">
+					<view class="imgl"><image :src="wimg" ></image></view>
+					<view>{{ite.fjName}}</view>
+				</view>
+				<!-- 删除 -->
+				<view class="delimg flex0" @click.stop="getDelFj(idx)">
+					<image :src="delimg"></image>
+				</view>
+			</view>
+			<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+			<!-- 修改  -->
+			<view class="pfixedb flexc">
+				<view v-if="checkPermi(['system:djks:edit'])&&pagetype=='update'"  class="infobtn flexcc cf f16 f500 btn2" @click="getSubmit">提交</view>
+				<view v-if="checkPermi(['system:djks:add'])&&pagetype=='add'"  class="infobtn flexcc cf f16 f500 btn2" @click="getSubmit">提交</view>
+				<!-- 删除 -->
+				<view v-if="checkPermi(['system:djks:remove'])&&pagetype=='update'"  class="infobtn flexcc cf f16 f500 btn1" @click="getDelFn">删除</view>
+				<!-- 新增  -->
+			</view>
+			
+	  	</uni-forms>
+
+  </view>
+</template>
+
+<script>
+import {getdjksaddFn,getdjksputFn,getdjksdetailFn,getdjksdelFn} from "@/api/work/count.js"
+import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  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,ppt,txt,pdf,zip,rar,word',
+		  // 文件上传大小限制
+		  size: 100,
+		  // 文件数量限制 默认10
+		  count: 5,
+		  // 文件回显列表
+		  files: new Map(),
+		  // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		  wxFiles: [],
+		  // 是否打印日志
+		  debug: false,
+		  filelist:[], 
+		  
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		baseUrl:'',
+		datainfo:{
+			"deptName":"",//单位名称
+			"year":"",//年
+			"month":"",//月
+			"outsideTime":'',//时间
+			// "outgoer":"",//对接人员
+			"details":'',//情况说明
+			zsyzFjList:[],//附件地址
+		},
+		rules: {
+			outsideTime: {rules: [{required: true,errorMessage: '请选择对接时间'}]},
+			// outgoer: {rules: [{required: true,errorMessage: '请输入对接人员',}]},
+		},
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		delimg:require("@/static/images/mine/del.png"),
+		pagetype:'add',
+		strfrom:'tong',
+		currentdate:'',
+	}
+    },
+	onLoad(e) {
+		this.baseUrl=baseUrl;
+		this.pagetype=e.pagetype||'add';
+		this.strfrom=e.strfrom||'tong';
+		this.currentdate=this.getNowFormatDate();
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			this.id=e.id
+			this.getDataFn()
+		}else{
+			this.datainfo.outsideTime=this.getNowFormatDate();
+			
+			this.datainfo.deptName=this.$store.state.user.deptName;
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		getNowFormatDate(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			const timeday = y + "-" + m+ "-" + d;
+			this.datainfo.year=y;
+			this.datainfo.month=m;
+			return timeday;
+		},
+		// 详情
+		getDataFn(){
+			getdjksdetailFn(this.id).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+
+		bindDateChangea(e){//上报日期
+			this.datainfo.outsideTime=e.detail.value;
+			var value=e.detail.value;
+			var timestr=value.split('-');
+			this.datainfo.year=timestr[0];
+			this.datainfo.month=timestr[1];
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.form.validate().then(res => {
+				var params=this.datainfo;
+				// params.zsyzFjList=this.filelist
+				if(this.pagetype=='add'){
+					getdjksaddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报信息成功')	
+							setTimeout(function() {
+								if(that.strfrom=='tong'){
+									uni.$emit('refreshdatatong');
+									if(checkPermi(['system:qktj:list'])){
+										that.$tab.redirectTo('/pages/work/count/cluelist') 
+									}else{
+										uni.navigateBack({delta: 1});
+									}	
+								}else{
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								}
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}else{
+					getdjksputFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})	
+				}
+				
+			})
+      },
+	  getDelFn(){
+		var that=this;
+		 uni.showModal({
+		 	title: '确认删除',
+		 	content: "是否确认删除",
+		 	cancelText: '取消',
+		 	confirmText: '确认',
+		 	success: function(res) {
+		 		if (res.confirm) {
+		 			getdjksdelFn(that.id).then(res=>{
+						if(res.code==200){
+							that.$toast('删除信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							that.$toast(res.msg)
+						}
+					})
+					
+		 		} else if (res.cancel) {
+		 		}
+		 	}
+		 }); 
+	  },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+	  		this.datainfo.zsyzFjList=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.zsyzFjList=JSON.parse(JSON.stringify(that.filelist))
+		  		} else if (res.cancel) {
+		  		}
+		  	}
+		  });
+	  },
+	  getDown(e){
+		  uni.showLoading({
+		  	title: '加载中'
+		  });
+	  	var url=baseUrl+e;
+	  	uni.downloadFile({
+	  		url: url,//文件的下载路径
+	  		success(result) {
+				uni.hideLoading()
+	  			var filePath = result.tempFilePath;
+	  			   uni.openDocument({
+	  			     filePath: filePath,
+	  			     showMenu: true,
+	  			     success: function (res) {
+	  			       // console.log('打开文档成功');
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	// .delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;
+	&.btn1{background-color: #1FB9F7;flex: 1;}
+	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 50rpx 26rpx 20rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+.fixedbox .infolist{padding: 30rpx 0;}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+.inform .pl12{margin-right: 10rpx;}
+.fixedbox .pl12{margin-right: 10rpx;}
+.pholist{
+	display: flex;align-items: center;max-width: 220rpx;overflow: hidden;
+	image{
+		width: 44rpx;height: 44rpx;margin-left: 10rpx;flex: 0 0 auto;
+	}
+}
+.disabledbox{
+	.infolist{background-color: #F5f5f5;}
+}
+</style>

+ 380 - 0
qs_zhaoshang/pages/work/count/addzscount.vue

@@ -0,0 +1,380 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform'  ref="form" :rules="rules" :value="datainfo" >
+	  		<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  		 <view class="flexc infolist">
+	  		  	<view class="f16 fw c34 flex0 pr pl12">单位名称</view>
+	  		  	<input  placeholder="请输入单位名称" disabled="true" v-model="datainfo.deptName"  class="f16  c34 flex1 txr"/>
+	  		  </view> 
+	  		</uni-forms-item>
+	  		<uni-forms-item name="" style='margin-bottom: 0;'>
+	  		 <view class="flexc infolist">
+	  		  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>外出日期</view>
+				<!-- fields="month" -->
+				<picker mode="date" :value="datainfo.outsideTime"  :end="currentdate" class="infolist_a" @change='bindDateChangea'>
+					<view :class="datainfo.outsideTime?'':'f16 co80'">{{datainfo.outsideTime||"请选择外出日期"}}</view>
+				</picker>
+				</view>
+	  		</uni-forms-item>
+	  		<!-- <view class="info_tit">招商外出次数/天数</view> -->
+	  		<uni-forms-item name="numberOutings" style='margin-bottom: 0;'>
+	  		 <view class="flexc infolist">
+	  		  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>外出天数</view>
+	  		  	<input  placeholder="请输入外出天数" type="number" v-model="datainfo.numberOutings"  class="f16  c34 flex1 txr"/>
+	  		  </view> 
+	  		</uni-forms-item>
+			<uni-forms-item name="outgoer" style='margin-bottom: 0;'>
+			 <view class="flexc infolist">
+			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>外出人员</view>
+			  	<input  placeholder="请输入外出人员"  v-model="datainfo.outgoer"  class="f16  c34 flex1 txr"/>
+			  </view> 
+			</uni-forms-item>
+			<view class="border"></view>
+			<uni-forms-item name="details" style='margin-bottom: 0;'>
+			 <view class="flexc infolist" style="align-items: flex-start;">
+			  	<view class="f16 fw c34 flex0 pr pl12">情况说明</view>
+				<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.details"  placeholder="请输入具体外出情况" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+			  </view>
+			</uni-forms-item>
+			<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+				<view class="flexc infolist">
+					<view class="f16 fw c34 flex0 pr pl12">附件</view>
+					<view class="infolist_a co28" ><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>
+			</uni-forms-item>
+			<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+				<view class="flext f15 c6" @click="getDown(ite.path)">
+					<view class="imgl"><image :src="wimg" ></image></view>
+					<view>{{ite.fjName}}</view>
+				</view>
+				<!-- 删除 -->
+				<view class="delimg flex0" @click.stop="getDelFj(idx)">
+					<image :src="delimg"></image>
+				</view>
+			</view>
+			<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+			<view class="pfixedb flexc">
+				<!-- 修改  -->
+				<view v-if="checkPermi(['system:wczs:edit'])&&pagetype=='update'"  class="infobtn flexcc cf f16 f500 btn2" @click="getSubmit">提交</view>
+				<!-- 新增  -->
+				<view v-if="checkPermi(['system:wczs:add'])&&pagetype=='add'"  class="infobtn flexcc cf f16 f500 btn2" @click="getSubmit">提交</view>
+				
+				<view v-if="checkPermi(['system:wczs:remove'])&&pagetype=='update'"  class="infobtn flexcc cf f16 f500 btn1" @click="getDelFn">删除</view>
+			</view>
+			
+			
+	  	</uni-forms>
+
+  </view>
+</template>
+
+<script>
+import { getwczsaddFn,getwczsputFn,getwczsdetailFn,getwczsdelFn} from '@/api/work/count.js'
+import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  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,ppt,txt,pdf,zip,rar,word',
+		  // 文件上传大小限制
+		  size: 100,
+		  // 文件数量限制 默认10
+		  count: 5,
+		  // 文件回显列表
+		  files: new Map(),
+		  // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		  wxFiles: [],
+		  // 是否打印日志
+		  debug: false,
+		  filelist:[], 
+		  
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		baseUrl:'',
+		datainfo:{
+			"deptName":"",//单位名称
+			"year":"",//年
+			"month":"",//月
+			"outsideTime":"",//外出时间
+			"numberOutings":"",//外出天数
+			"outgoer":"",//外出人员
+			"details":'',//情况说明
+			zsyzFjList:[],//附件地址
+		},
+		rules: {
+		  outsideTime: {rules: [{required: true,errorMessage: '请选择外时间'}]},
+		  numberOutings: {rules: [{required: true,errorMessage: '请输入外出天数'},{pattern:/^[1-9]\d*$/,errorMessage: '请输入整数(天)'}]},
+		  outgoer: {rules: [{required: true,errorMessage: '请输入外出人员',}]},
+		  // zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		},
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		delimg:require("@/static/images/mine/del.png"),
+		pagetype:'add',
+		strfrom:'tong',
+		currentdate:'',
+	}
+    },
+	onLoad(e) {
+		this.baseUrl=baseUrl;
+		this.pagetype=e.pagetype||'add';
+		this.strfrom=e.strfrom||'tong';
+		this.currentdate=this.getNowFormatDate();
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			this.id=e.id
+			this.getDataFn()
+		}else{
+			this.datainfo.outsideTime=this.getNowFormatDate();
+			
+			this.datainfo.deptName=this.$store.state.user.deptName;
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		getNowFormatDate(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			const timeday = y + "-" + m+ "-" + d;
+			this.datainfo.year=y;
+			this.datainfo.month=m;
+			return timeday;
+		},
+		// 详情
+		getDataFn(){
+			getwczsdetailFn(this.id).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+
+		bindDateChangea(e){//上报日期
+			this.time=e.detail.value;
+			var value=e.detail.value;
+			var timestr=value.split('-');
+			this.datainfo.year=timestr[0];
+			this.datainfo.month=timestr[1];
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.form.validate().then(res => {
+				var params=this.datainfo;
+				// params.zsyzFjList=this.filelist
+				if(this.pagetype=='add'){
+					getwczsaddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报信息成功')	
+							setTimeout(function() {
+								if(that.strfrom=='tong'){
+									uni.$emit('refreshdatatong');
+									if(checkPermi(['system:qktj:list'])){
+										that.$tab.redirectTo('/pages/work/count/cluelist') 
+									}else{
+										uni.navigateBack({delta: 1});
+									}	
+								}else{
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								}
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}else{
+					getwczsputFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})	
+				}
+				
+			})
+      },
+	  getDelFn(){
+		var that=this;
+		 uni.showModal({
+		 	title: '确认删除',
+		 	content: "是否确认删除",
+		 	cancelText: '取消',
+		 	confirmText: '确认',
+		 	success: function(res) {
+		 		if (res.confirm) {
+		 			getwczsdelFn(that.id).then(res=>{
+						if(res.code==200){
+							that.$toast('删除信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							that.$toast(res.msg)
+						}
+					})
+					
+		 		} else if (res.cancel) {
+		 		}
+		 	}
+		 }); 
+	  },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+	  	this.datainfo.zsyzFjList=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.zsyzFjList=JSON.parse(JSON.stringify(that.filelist))
+		  		} else if (res.cancel) {
+		  		}
+		  	}
+		  });
+	  },
+	  getDown(e){
+		  uni.showLoading({
+		  	title: '加载中'
+		  });
+	  	var url=baseUrl+e;
+	  	uni.downloadFile({
+	  		url: url,//文件的下载路径
+	  		success(result) {
+				uni.hideLoading()
+	  			var filePath = result.tempFilePath;
+	  			   uni.openDocument({
+	  			     filePath: filePath,
+	  			     showMenu: true,
+	  			     success: function (res) {
+	  			       // console.log('打开文档成功');
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	// .delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;
+	&.btn1{background-color: #1FB9F7;flex: 1;}
+	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 50rpx 26rpx 20rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+.fixedbox .infolist{padding: 30rpx 0;}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+.inform .pl12{margin-right: 10rpx;}
+.fixedbox .pl12{margin-right: 10rpx;}
+.pholist{
+	display: flex;align-items: center;max-width: 220rpx;overflow: hidden;
+	image{
+		width: 44rpx;height: 44rpx;margin-left: 10rpx;flex: 0 0 auto;
+	}
+}
+.disabledbox{
+	.infolist{background-color: #F5f5f5;}
+}
+</style>

+ 220 - 0
qs_zhaoshang/pages/work/count/cluelist.vue

@@ -0,0 +1,220 @@
+<template>
+	<view class="allpage">
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch' placeholder='单位'></tab-searchone>
+			<tab-list :tablist='tablist' :tabidx="tabidx" @getCheck="goCheck" ></tab-list>
+			<view class="flexc allpage_zd">
+				<time-year :fields="fields" @bindDateChange="bindDateChange" textAlign='right' timetxt='选择日期'></time-year>
+			</view>
+			
+			
+		</view>
+		<view class="alllist">
+			<!-- l列表 -->
+			<project-list :datalist="list" v-if="tabidx==0" :wtdt="wtdt" type='tongjizs' @getDetail='goDetail'></project-list>
+			<project-list :datalist="list" v-if="tabidx==1" :wtdt="wtdt" type='tongjiks' @getDetail='goDetail'></project-list>
+		</view>
+		<!-- <block v-if="checkPermi(['system:qktj:add'])">
+			<view style="height: 100rpx;"></view>
+			<view class="count_btn" @click="getAddCount" >
+				<image :src="addimg"></image>新增</view>
+		</block> -->
+		
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabList from "@/components/toptab/tab.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getdjkslistFn,getwczslistFn} from '@/api/work/count.js'
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				addimg:require("@/static/images/index/addt.png"),
+				tabidx:0,
+				// projectV2:sbbzb:list
+				// 
+				tablist:[{tit:'外出招商',val:0,limt:'system:wczs:list'},{tit:'对接客商',val:1,limt:'system:djks:list'}],
+				list:[],
+				fields:'month',
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				wtdt:'',
+				time:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				wtdt:'',
+				deptId:this.$store.state.user.deptId,
+				strfrom:'',
+				
+			}
+		},
+		components:{
+			projectList,tabList,tabSearchone,timeYear
+		},
+		onUnload(){
+			uni.$off('refreshdata')
+		},
+		onLoad(e) {
+			uni.$on('refreshdata',(e) => {
+				// // 修改统计列表数据
+				uni.$emit('refreshdatatong')
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+			this.strfrom=e.strfrom||'';
+			this.getDataFn()
+		},
+		//
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			getAddCount(){
+				// this.$tab.navigateTo('/pages/work/count/addcount?strfrom=list') 
+			},
+			bindDateChange(e){
+				this.time=e;
+				var timestr=e.split('-');
+				this.year=timestr[0];
+				this.month=timestr[1];
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goCheck(data){
+				this.tabidx=data;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				if(this.tabidx==0){
+					this.$tab.navigateTo('/pages/work/count/addzscount?id='+e.id+'&strfrom=list&pagetype=update')
+				}else{
+					this.$tab.navigateTo('/pages/work/count/addkscount?id='+e.id+'&strfrom=list&pagetype=update')
+				}
+				
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					year:this.year,
+					month:this.month,
+					deptName:this.name
+				}
+				
+				if(this.tabidx==0){//外出招商
+					getwczslistFn(params).then(res=>{
+						if(res.code==200){
+							if (res.rows.length < this.pageSize) {
+								this.reachflag = false
+								this.wtdt = '到底了~';
+							} else {
+								var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum -	1)
+								if (num < res.total) {
+									this.reachflag = true
+									this.wtdt = '上拉加载更多'
+								} else {
+									this.reachflag = false
+									this.wtdt = '到底了~';
+								}
+							}
+							if (this.pageNum == 1) {
+								this.list = res.rows;
+							} else {
+								this.list = this.list.concat(res.rows)
+							}
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else {//对接客商
+					getdjkslistFn(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)
+						}
+					})
+				}
+				
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding-top:280rpx;box-sizing: border-box;}
+.listtop{box-shadow: none !important;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+
+ .alllist{padding-top:10rpx ;}
+ //统计
+  .allpage_zd{background-color:#F2F2F2;padding: 0 28rpx;justify-content: space-between;
+ 	.allpage_zdl{font-size: 30rpx;font-weight: 500;
+ color: #666666;
+ 	text{font-weight: bold;color: #FE5706;margin: 0 8rpx;}
+ }
+ }
+ .count_btn{position: fixed;left: 0;right: 0;bottom: 0;z-index: 4;width: 100%;height: 100rpx;font-size: 32rpx;color: #ffffff;font-weight: 500;
+ background: #FE5706;display: flex;align-items: center;justify-content: center;
+ image{width: 34rpx;height: 34rpx;margin-right: 16rpx;}
+ 
+ }
+</style>

+ 230 - 0
qs_zhaoshang/pages/work/count/count.vue

@@ -0,0 +1,230 @@
+<template>
+	<view class="count">
+		<!-- 自定义头部 -->
+		<view class="pfixed">
+			<uni-nav-bar  left-icon="left" fixed="true" :border='border'   statusBar='true' :rightText="checkPermi(['system:wczs:list','system:djks:list'])?'上报记录':''" title="潜山市招商情况月统计表" rightWidth='180rpx' @clickRight="clickRight" @clickLeft='getBack'/>
+		</view>
+		<!-- 站位的 -->
+		<uni-nav-bar  left-icon="left" :border='border'   statusBar='true' />
+		<!-- 搜索 -->
+		<view class="zhanline"></view>
+		<view class="flexc allpage_zd">
+			<!-- <view class="allpage_zdl">共计<text>{{total||0}}</text>个</view> -->
+			<time-year @bindDateChange="bindDateChange" fields='month' textAlign='right' timetxt='选择日期'></time-year>
+		</view>
+		<!-- 表格 -->
+		<view class="tablebox">
+			<table border='0' class='table'>
+				<thead class='thead'>
+					<tr class="tr_one">  
+						<th style="width: 140rpx;" rowspan='2'>汇报单位</th>
+						<th style="width: 200rpx;" colspan='2' class='borbot'>招商外出次数/天数</th>
+						<th style="width: 190rpx;" colspan='2' class='borbot'>对接客商次数</th>
+						<th style="width: 220rpx;" colspan='2' class='borbot borbotn'>提供有效招商线索数</th>
+					</tr>
+					<tr class="tr_one">
+						<th style="width: 100rpx;" class='borbotn'>当月外出数</th>
+						<th style="width: 100rpx;">本年累计数</th>
+						<th style="width: 95rpx;" class='borbotn'>当月对接数</th>
+						<th style="width: 95rpx;">本年累计数</th>
+						<th style="width: 110rpx;" class='borbotn'>当月线索数</th>
+						<th style="width: 110rpx;" class='borbotn'>本年累计数</th>
+					</tr>
+				</thead>
+				
+				<tbody class="tbody">
+					<tr v-for="(item,index) in list" :key="index">
+						<td style="width: 140rpx;" >{{item.name}}</td>
+						<td style="width: 100rpx;">{{item.zswcMonth}}</td>
+						<td style="width: 100rpx;" >{{item.zswcYear}}</td>
+						<td style="width: 95rpx;" >{{item.sjksMonth}}</td>
+						<td style="width: 95rpx;" >{{item.sjksYear}}</td>
+						<td style="width: 110rpx;" >{{item.yxxsMonth}}</td>
+						<td style="width: 110rpx;" >{{item.yxxsYear}}</td>
+					</tr>
+					<div class="shax" v-if="list.length>0">
+						{{wtdt}}
+					</div>
+					<div class="shax" v-else><span>暂无数据</span></div>
+				</tbody>
+					
+			</table>
+		</view>
+		<view class="count_btn" @click="getAddCount" v-if="checkPermi(['system:wczs:add','system:djks:add'])">
+			<image :src="addimg"></image>
+			新增
+		</view>
+		<!--新增选择 -->
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="moreflag"></view>
+		<view class="more_fixed" v-if="moreflag">
+			<view class="more_fixedt">
+				<!--  -->
+				<view v-if="checkPermi(['system:wczs:add'])" @click="getzsaddFn">外出招商</view>
+				<view v-if="checkPermi(['system:djks:add'])" @click="getksaddFn">对接客商</view>
+			</view>
+			<view class="more_fixedb" @click="getClose">取消</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import {getstatMonthFn} from "@/api/work/count.js"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	export default{
+		components:{
+			timeYear,tabSearchone
+		},
+		data(){
+			return{
+				addimg:require("@/static/images/index/addt.png"),
+				border:false,
+				time:'',
+				year:'',
+				month:'',
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				wtdt:'',
+				list:[],
+				total:0,
+				moreflag:false,
+			}
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		onUnload(){
+			uni.$off('refreshdata')
+			uni.$off('refreshdatatong')
+		},
+		onLoad() {
+			uni.$on('refreshdatatong',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+			this.time = this.getNowFormatDate();
+			this.getDataFn()
+		},
+		methods:{
+			 checkPermi, checkRole,
+			bindDateChange(e){
+				this.time=e;
+				var timestr=e.split('-');
+				this.year=timestr[0];
+				this.month=timestr[1];
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			},
+			getNowFormatDate(){
+				let date = new Date();
+				let y = date.getFullYear();
+				let m = date.getMonth() + 1;
+				m = m < 10 ? "0" + m : m;
+				let d = date.getDate();
+				d = d < 10 ? "0" + d : d;
+				const timeday = y + "-" + m;
+				this.year=y;
+				this.month=m;
+				return timeday;
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					year:this.year,
+					month:this.month,
+				}
+				getstatMonthFn(params).then(res=>{
+					if(res.code==200){
+						this.total=res.total;
+						if (res.data.length < this.pageSize) {
+							this.reachflag = false
+							this.wtdt = '到底了~';
+						} else {
+							var num = parseInt(res.data.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.data;
+						} else {
+							this.list = this.list.concat(res.data)
+						}									
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getzsaddFn(){
+				this.moreflag=false;
+				this.$tab.navigateTo('/pages/work/count/addzscount') 
+			},
+			getksaddFn(){
+				this.moreflag=false;
+				this.$tab.navigateTo('/pages/work/count/addkscount') 
+			},
+			getClose(){
+				this.moreflag=false;
+			},
+			getAddCount(){
+				this.moreflag=true
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			clickRight(){
+				if(checkPermi(['system:wczs:list','system:djks:list'])){
+					this.$tab.navigateTo("/pages/work/count/cluelist?strfrom=tong")
+				}else{
+					return
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.count{display: flex;flex-direction: column;height: 100vh;overflow: hidden;}
+.count /deep/ 	.uni-nav-bar-right-text{font-size: 34rpx; color: #26C240 !important;font-weight: 500;padding-right: 14rpx;}
+ //统计
+ .allpage_zd{background-color:#ffffff;padding: 0 28rpx;justify-content: space-between;flex: 0 0 auto;
+	.allpage_zdl{font-size: 30rpx;font-weight: 500;
+color: #666666;
+	text{font-weight: bold;color: #FE5706;margin: 0 8rpx;}
+	}
+ }
+ // 表格
+ .borbot{border-bottom: 2rpx solid #CDCDCD;}
+ .borbotn{border-right: none !important;}
+ .tablebox{padding:10rpx 0 0;flex: 1;display: flex;flex-direction: column;overflow: hidden;
+  th{padding: 8rpx;box-sizing: border-box;font-size: 26rpx;color: #343434;font-weight: bold;text-align: center;}
+ }
+ .table{border-spacing: 0;width: 100%;display: flex;flex-direction: column;overflow: hidden;}
+ .thead{width: 100%;background-color: #F1F1F1;flex: 0 0 auto;border-radius: 10rpx;
+  th{border-right: 2rpx solid #CDCDCD;}
+ }
+ .tbody {flex: 1;overflow: auto;padding-bottom: 120rpx;}
+ .tbody td{height: 120rpx;box-sizing: border-box;padding: 24rpx 14rpx;font-weight: 500;color: #343434;font-size: 28rpx;border-bottom: 2rpx solid #CDCDCD;text-align: center;word-break: break-all;}
+.count_btn{position: fixed;left: 0;right: 0;bottom: 0;z-index: 4;width: 100%;height: 100rpx;font-size: 32rpx;color: #ffffff;font-weight: 500;
+background: #FE5706;display: flex;align-items: center;justify-content: center;
+image{width: 34rpx;height: 34rpx;margin-right: 16rpx;}
+
+}
+</style>

+ 173 - 0
qs_zhaoshang/pages/work/idea.vue

@@ -0,0 +1,173 @@
+<template>
+	<view class="allpage">
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch'></tab-searchone>
+			<hf-duban @bindDateChange="bindDateChange"></hf-duban>
+			<!-- <tab-list :tablist='tablist' :tabidx="tabidx" @getCheck="goCheck" :height='130'></tab-list> -->
+		</view>
+		<view class="zhanline"></view>
+		<view class="alllist">
+			
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt="wtdt" type="duban" @getDetail='goDetail' @getDel="getDel"></project-list>
+		</view>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabList from "@/components/toptab/tab.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import hfDuban from "@/components/timedata/hfduban.vue"
+	import { getdbdList,getdbdDet} from '@/api/work/clue.js'
+	export default{
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				tabidx:0,
+				year:'',
+				list:[],
+				// tablist:[{tit:'全部',val:0,txt:300},{tit:'超期审核',val:1,txt:300},{tit:'严重滞后',val:2,txt:300}],
+				
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				wtdt:'',
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				wtdt:'',
+				deptId:this.$store.state.user.deptId,
+				isHf:'',
+			}
+		},
+		components:{
+			projectList,tabList,tabSearchone,hfDuban
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad() {
+			uni.$on('refreshdatalist',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			})
+			this.getDataFn()
+		},
+		// 审核意见 传2
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			bindDateChange(e){
+				this.isHf=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			getDel(e){
+				var that=this;
+				this.$modal.confirm('确定删除该条信息吗?').then(() => {
+					getdbdDet(e).then(res=>{
+						if(res.code==200){
+							this.$toast('删除成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdatalist','duban');
+								that.reachflag=true;
+								that.pageNum=1;
+								that.list=[];
+								that.getDataFn()
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}				  
+					})
+				})
+			},
+			goCheck(data){
+				this.tabidx=data;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				// this.$tab.navigateTo('/pages/work/cluedetails?id='+e.xmId)
+				this.$tab.navigateTo('/pages/work/ideadetail?id='+e.id)
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmmc:this.name,
+					deptId:this.deptId,
+					isHf:this.isHf
+				}
+				
+				getdbdList(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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding-top:190rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+
+ .alllist{padding-top:10rpx ;}
+ 
+ 
+</style>

+ 269 - 0
qs_zhaoshang/pages/work/ideadetail.vue

@@ -0,0 +1,269 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <!-- 第一页 -->
+			<uni-forms class='inform'  :class="disabled?'disabledbox':''" ref="form" :rules="rules" :modelValue="datainfo">
+				<view class="info_tit">基本信息</view>
+				<uni-forms-item name="dh"  style='margin-bottom: 0;'>
+				 <view class="flexc infolist infolistd">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>督办单号</view>
+				  	<input  placeholder="请输入督办单号" :disabled='disabled' v-model="datainfo.dh"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="deptName" style='margin-bottom: 0;'>
+				 <view class="flexc infolist infolistd">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>督办部门名称</view>
+				  	<input  placeholder="请输入督办部门名称" :disabled='disabled' v-model="datainfo.deptName"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmbh" style='margin-bottom: 0;'>
+				 <view class="flexc infolist infolistd">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目编号</view>
+				  	<input  placeholder="请输入项目编号" :disabled='disabled' v-model="datainfo.xmbh"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+				 <view class="flexc infolist infolistd">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目名称</view>
+				  	<input  placeholder="请输入项目名称" :disabled='disabled' v-model="datainfo.xmmc"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				
+				<!-- <uni-forms-item name="sfwlhxxxm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>是否为回复</view>
+					<picker  range-key='label' :value="lhindex" :range="hflist" class="infolist_a" @change='bindDateChangea'>
+						<view :class="sfwlhxxxm?'':'f16 co80'">{{sfwlhxxxm||"请选择是否回复"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item> -->
+				<uni-forms-item name="dbTime" style='margin-bottom: 0;' >
+				 <view class="flexc infolist infolistd">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>督办日期</view>
+					<view class="infolist_a">{{datainfo.dbTime}}</view>
+				  	<!-- <picker mode="date" :value="datainfo.tbrq" :end="currentdate" class="infolist_a" @change='bindDateChange'>
+						<view :class="datainfo.tbrq?'':'f16 co80'">{{datainfo.tbrq||"请选择填表日期"}}</view>
+				  	</picker> -->
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="blsx" style='margin-bottom: 0;'>
+				 <view class="flexc infolist infolistd">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>办理时限</view>
+				  	<input  placeholder="请输入办理时限" :disabled='disabled' v-model="datainfo.blsx"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="dbsx" style='margin-bottom: 0;'>
+				 <view class="flexc infolist infolistd" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>督办事项</view>
+					<textarea auto-height="true" :disabled='disabled' v-model="datainfo.dbsx" placeholder="请输入督办事项" class="text" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></textarea>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tbr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">填报人</view>
+				  	<input  placeholder="请输入填报人"  v-model="datainfo.tbr"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="phone" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">联系电话</view>
+				  	<input  placeholder="请输入联系电话" v-model="datainfo.phone"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jzqk" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>进展情况</view>
+					<textarea auto-height="true"  v-model="datainfo.jzqk" placeholder="请输入项目进展情况" class="text" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></textarea>
+					
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>存在问题</view>
+					<textarea auto-height="true"  v-model="datainfo.czwt" placeholder="请输入存在问题" class="text" placeholderStyle='text-align: right;font-size:32rpx;color:#808080;'></textarea>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jjjy" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>解决建议</view>
+					<textarea auto-height="true"  v-model="datainfo.jjjy" placeholder="请输入解决建议" class="text" placeholderStyle='text-align: right;font-size:32rpx;color:#808080;'></textarea>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="gzjh" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>下一步工作计划</view>
+					<textarea auto-height="true"  v-model="datainfo.gzjh" placeholder="请输入下一步工作计划" class="text" placeholderStyle='text-align: right;font-size:32rpx;color:#808080;'></textarea>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="remark" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">备注</view>
+					<textarea auto-height="true"  v-model="datainfo.remark" placeholder="请输入备注" class="text" placeholderStyle='text-align: right;font-size:32rpx;color:#808080;'></textarea>
+				  </view>
+				</uni-forms-item>
+				<!-- v-if="checkPermi(['',''])" -->
+				<view class="infobtn flexcc cf f16 f500"  @click="getSubmit">提交</view>
+			</uni-forms>
+		<!-- 弹窗 -->
+		<!-- <pop-up :type="poptype" @getClose='getClose'   @getXmSubmitFn='getXmSubmitFn'></pop-up> -->
+  </view>
+</template>
+
+<script>
+	
+import popUp from "@/components/popup/popup.vue"
+import {getdbddetail,getdbdPut,getdbdDet} from "@/api/work/clue.js"
+
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  export default {
+	  components:{
+		  popUp
+	  },
+    data() {
+      return {	
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		poptype:0,//弹窗类型 1暂存/消耗 2审核意见 3批示
+		pagetype:'add',
+		
+		datainfo:{
+			"dh":"",//单号
+			"xmId":"",//项目ID
+			"xmbh":"",//项目编号
+			"xmmc":"",//项目名称
+			"deptId":"",//督办部门id
+			"deptName":"",//督办部门名称
+			"isHf":"",//是否回复
+			"dbTime":"",//督办日期
+			"blsx":"",//办理时限
+			"dbsx":"",//督办事项
+			"jzqk":"",//进展情况
+			"czwt":"",//存在问题
+			"jjjy":"",//解决建议
+			"gzjh":"",//下一步工作计划
+			"tbr":"",//填报人
+			"phone":"",//联系电话
+			"tbTime":"",//填报日期
+			"progress":""
+		},
+		rules:{
+			jzqk: {rules: [{required: true,errorMessage: '请输入进展情况'}]},
+			czwt: {rules: [{required: true,errorMessage: '请输入存在问题'}]},
+			jjjy: {rules: [{required: true,errorMessage: '请输入解决建议'}]},
+			gzjh: {rules: [{required: true,errorMessage: '请输入下一步工作计划'}]},
+		},
+		disabled:'true',
+		hflist:[{label:'是',id:'S'},{label:'否',id:'N'},],//领航
+		map:{text:'dictLabel',value:'dictValue'},
+		id:''
+		}
+    },
+	onLoad(e) {
+		var that=this;
+		this.id=e.id;
+		that.getDataFn()
+		
+		// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+		
+	},
+	onHide() {
+		// #ifdef APP-PLUS
+		uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+		// #endif
+	    
+	},
+    methods: {
+		checkPermi, checkRole,
+
+		// 线索详情
+		getDataFn(){
+			console.log(this.id)
+			getdbddetail(this.id).then(res=>{
+				var that=this;
+				if(res.code==200){
+					this.datainfo=res.data;
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getSubmit(){
+			this.$refs.form.validate().then(res => {
+				if(this.datainfo.phone){
+					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.datainfo.phone)) {
+						this.$toast("请输入正确的联系方式")
+						return
+					}
+				}
+				var params=this.datainfo;
+				getdbdPut(params).then(res=>{
+					if(res.code==200){
+						this.$toast('回复成功')	
+						setTimeout(function() {
+							uni.$emit('refreshdatalist','duban');
+							uni.navigateBack({delta: 1});
+						},1500);
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			})
+		},
+		// 领航
+		bindDateChangea(e) {
+			var val=e.detail.value;
+			this.sfwlhxxxm=this.lhlist[val].label;
+			this.datainfo.sfwlhxxxm=this.lhlist[val].id
+		},
+		bindDateChange(e) {
+			this.datainfo.tbrq = e.detail.value
+		}
+    }
+  }
+</script>
+
+<style lang="scss">
+ page {
+    background-color: #ffffff;
+  }
+
+
+.inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .inform textarea{min-height: 44rpx;}
+  .inform .pl12{margin-right: 10rpx;}
+
+  
+  .inform /deep/ .uni-easyinput__content-textarea{min-height: 200rpx;}
+  .disabledbox{
+  	.infolistd{background-color: #F5f5f5;}
+  }
+</style>

+ 183 - 0
qs_zhaoshang/pages/work/index.vue

@@ -0,0 +1,183 @@
+<template>
+  <view class="work-container">
+    <!-- 轮播图 -->
+    <uni-swiper-dot class="uni-swiper-dot-box" :info="data" :current="current" field="content">
+      <swiper class="swiper-box" :current="swiperDotIndex" @change="changeSwiper">
+        <swiper-item v-for="(item, index) in data" :key="index">
+          <view class="swiper-item" @click="clickBannerItem(item)">
+            <image :src="item.image" mode="aspectFill" :draggable="false" />
+          </view>
+        </swiper-item>
+      </swiper>
+    </uni-swiper-dot>
+
+    <!-- 宫格组件 -->
+    <uni-section title="系统管理" type="line"></uni-section>
+    <view class="grid-body">
+      <uni-grid :column="4" :showBorder="false" @change="changeGrid">
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="person-filled" size="30"></uni-icons>
+            <text class="text">用户管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="staff-filled" size="30"></uni-icons>
+            <text class="text">角色管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="color" size="30"></uni-icons>
+            <text class="text">菜单管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="settings-filled" size="30"></uni-icons>
+            <text class="text">部门管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="heart-filled" size="30"></uni-icons>
+            <text class="text">岗位管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="bars" size="30"></uni-icons>
+            <text class="text">字典管理</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="gear-filled" size="30"></uni-icons>
+            <text class="text">参数设置</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="chat-filled" size="30"></uni-icons>
+            <text class="text">通知公告</text>
+          </view>
+        </uni-grid-item>
+        <uni-grid-item>
+          <view class="grid-item-box">
+            <uni-icons type="wallet-filled" size="30"></uni-icons>
+            <text class="text">日志管理</text>
+          </view>
+        </uni-grid-item>
+      </uni-grid>
+    </view>
+  </view>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        current: 0,
+        swiperDotIndex: 0,
+        data: [{
+            image: '/static/images/banner/banner01.jpg'
+          },
+          {
+            image: '/static/images/banner/banner02.jpg'
+          },
+          {
+            image: '/static/images/banner/banner03.jpg'
+          }
+        ]
+      }
+    },
+    methods: {
+      clickBannerItem(item) {
+        console.info(item)
+      },
+      changeSwiper(e) {
+        this.current = e.detail.current
+      },
+      changeGrid(e) {
+        this.$toast('模块建设中~')
+      }
+    }
+  }
+</script>
+
+<style lang="scss">
+  /* #ifndef APP-NVUE */
+  page {
+    display: flex;
+    flex-direction: column;
+    box-sizing: border-box;
+    background-color: #fff;
+    min-height: 100%;
+    height: auto;
+  }
+
+  view {
+    font-size: 14px;
+    line-height: inherit;
+  }
+
+  /* #endif */
+
+  .text {
+    text-align: center;
+    font-size: 26rpx;
+    margin-top: 10rpx;
+  }
+
+  .grid-item-box {
+    flex: 1;
+    /* #ifndef APP-NVUE */
+    display: flex;
+    /* #endif */
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    padding: 15px 0;
+  }
+
+  .uni-margin-wrap {
+    width: 690rpx;
+    width: 100%;
+    ;
+  }
+
+  .swiper {
+    height: 300rpx;
+  }
+
+  .swiper-box {
+    height: 150px;
+  }
+
+  .swiper-item {
+    /* #ifndef APP-NVUE */
+    display: flex;
+    /* #endif */
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    color: #fff;
+    height: 300rpx;
+    line-height: 300rpx;
+  }
+
+  @media screen and (min-width: 500px) {
+    .uni-swiper-dot-box {
+      width: 400px;
+      /* #ifndef APP-NVUE */
+      margin: 0 auto;
+      /* #endif */
+      margin-top: 8px;
+    }
+
+    .image {
+      width: 100%;
+    }
+  }
+</style>

+ 175 - 0
qs_zhaoshang/pages/work/lditem.vue

@@ -0,0 +1,175 @@
+<template>
+	<view class="allpage">
+		
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch'></tab-searchone>
+			<view class="flexc allpage_zd">
+				<view class="allpage_zdl">本年度共计<text>{{total||0}}</text>个</view>
+				<time-year @bindDateChange="bindDateChange" textAlign='right' :timedate="time"></time-year>
+			</view>
+		</view>
+		
+		<view class="alllist">
+			<!--  :start="startDate" :end="endDate" -->
+			
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt="wtdt" type='leader' @getDetail='goDetail'></project-list>
+		</view>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabList from "@/components/toptab/tab.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getldpslistFn} from '@/api/work/clue.js'
+	export default{
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				tabidx:0,
+				year:'',
+				list:[],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				wtdt:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				total:0,
+				deptId:this.$store.state.user.deptId,
+				time:""
+			}
+		},
+		components:{
+			projectList,tabList,tabSearchone,timeYear
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad(e) {
+			uni.$on('refreshdatalist',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+			var y='';
+			if(e.time){
+				y=e.time
+			}else{
+				let date = new Date();
+				y = date.getFullYear();
+			}
+			this.beginTime=y+'0101';
+			this.endTime=y+'1231';
+			this.time=y;
+			this.tabidx=Number(e.idx);
+			this.getDataFn()
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			bindDateChange(e){
+				this.year=e;
+				this.beginTime=e+'0101';
+				this.endTime=e+'1231';
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goCheck(data){
+				this.tabidx=data;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmxsmc:this.name,
+					deptId:this.deptId
+				}
+				params['params[beginTime]']=this.beginTime
+				params['params[endTime]']=this.endTime
+				getldpslistFn(params).then(res=>{
+					if(res.code==200){
+						this.total=res.total;
+						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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding-top:190rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+
+ .alllist{padding-top:10rpx ;}
+ 
+ //统计
+ .allpage_zd{background-color:#F2F2F2;padding: 0 28rpx;justify-content: space-between;
+	.allpage_zdl{font-size: 30rpx;font-weight: 500;
+color: #666666;
+	text{font-weight: bold;color: #FE5706;margin: 0 8rpx;}
+}
+ 
+ }
+ 
+</style>

+ 194 - 0
qs_zhaoshang/pages/work/ldwritten.vue

@@ -0,0 +1,194 @@
+<template>
+	<view class="allpage">
+		<view class="zhanline"></view>
+		<view class="alllist">
+			<!-- l列表 -->
+			<project-list type='ldwritten' :datalist="list" :wtdt='wtdt' @getDetail="getDetail"></project-list>
+			
+		</view>
+		<!-- 弹窗 -->
+		<pop-up :type="type" :status="status" @getClose='getClose' :iteminfo="iteminfo"  @getLinSubmit='getLinSubmit' @getldDelFn="getldDelFn"></pop-up>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import {getldwrlistFn,getldpsFn,getldpsputFn,getldpsdelFn} from "@/api/work/clue.js"
+	import popUp from "@/components/popup/popup.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		data(){
+			return{
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				itemslist:[],
+				wtdt:'',
+				tabidx:0,
+				date:'',
+				list:[],
+				year:'',
+				name:'',
+				census:'',
+				type:0,
+				iteminfo:{},
+				status:'add',
+				deptId:this.$store.state.user.deptId,
+				datainfo:{
+					xmId:'',
+					xmbh:'',
+					xmmc:'',
+				}
+			}
+		},
+		components:{
+			projectList,popUp
+		},
+		onUnload(){
+			
+		},
+		onLoad(e) {
+			var newobj=JSON.parse(decodeURIComponent(e.data))
+			this.datainfo=newobj;
+			this.getDataFn();
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			getClose(){
+				this.type=0;
+			},
+			getDetail(data){
+				//判断权限
+				if(checkPermi(['system:ldps:update'])||checkPermi(['system:ldps:delete'])){
+					this.iteminfo=data;
+					this.type=3;
+					this.status='update'
+				}
+			},
+			getLinSubmit(data){
+				var that=this;
+				
+				var params={};
+				var str=''
+				if(data.type==0){//暂存
+					params.zcpsnr=data.psnr;
+					params.type=1;
+					str='批示暂存成功'
+				}else{
+					params.psnr=data.psnr;
+					params.type=2;
+					str='批示提交成功'
+				}
+				params.xmId=this.datainfo.xmId;
+				params.xmbh=this.datainfo.xmbh;
+				// params.xmmc=this.datainfo.xmmc;
+				//修改
+				params.id=this.iteminfo.id
+				getldpsputFn(params).then(res=>{
+					if(res.code==200){
+						that.$toast(str)
+						setTimeout(function(){
+							if(data.type!=0){
+								uni.$emit('refreshdatalist','ldps');
+							}
+							that.pageNum=1;
+							that.reachflag=true;
+							that.list=[];
+							that.getDataFn();
+							that.type=0;
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})	
+			},
+			getldDelFn(){
+				var params={};
+				var that=this;
+				params.id=this.iteminfo.id;
+				params.xmId=this.datainfo.xmId;
+				getldpsdelFn(params).then(res=>{
+					if(res.code==200){
+						that.$toast('批示撤回成功')
+						setTimeout(function(){
+							uni.$emit('refreshdatalist','ldps');
+							that.pageNum=1;
+							that.reachflag=true;
+							that.list=[];
+							that.getDataFn()
+							that.type=0;
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmId:this.datainfo.xmId,
+					xmbh:this.datainfo.xmbh
+				}
+				getldwrlistFn(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 lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+ .alllist{padding-top:10rpx ;}
+  // 操作按钮
+  .cluebtn{
+  	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;
+  	&.btn1{background-color: #1FB9F7;flex: 1;}
+  	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+</style>

+ 96 - 0
qs_zhaoshang/pages/work/message.vue

@@ -0,0 +1,96 @@
+<template>
+	<view class="mesg">
+		<view v-if="noticelist.length">
+			<uni-card spacing='0' padding='34rpx' margin='24rpx' shadow='0px 0px 0px 0px rgba(0, 0, 0, 0.08)' v-for="(ite,idx) in noticelist" :key="idx">
+				<template v-slot:title>
+					<view class="mestop">
+						<view class="cirmes flex0" :class="noticeType==1?'co1':'co2'"></view>
+						<!-- <view class="f15 fw c34 flex1">{{noticeType==1?'系统通知':'待办通知'}}</view> -->
+						<view class="f15 fw c34 flex1">{{noticeType==1?'系统通知':'待办通知'}}</view>
+						<view class="f15 c500 fa flex0">{{ite.createTime}}</view>
+					</view>
+				</template>
+				<view class="uni-body f15">
+					<view>{{ite.noticeTitle}}</view>
+					<view>{{ite.noticeContent}} </view>
+					<view class="mt6">祝您生活愉快!</view>
+				</view>
+			</uni-card>
+			<view class="shax">{{wtdt}}</view>
+		</view>
+		<block v-else>
+			<no-data ></no-data>
+		</block>
+	</view>
+</template>
+
+<script>
+	import {getNoticelist} from "@/api/work/index.js"
+	import noData from "@/components/nodata/nodata.vue"
+	export default{
+		data(){
+			return{
+				extra:'2023-02-21 18:32',
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				noticelist:[],
+				wtdt:'',
+				deptId:this.$store.state.user.deptId,
+			}
+		},
+		components:{noData},
+		onLoad() {
+			this.getDataFn()
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum
+				}
+				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.noticelist = res.rows;
+						} else {
+							this.noticelist = this.noticelist.concat(res.rows)
+						}
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.mesg{padding: 4rpx 0 4rpx;}
+.mestop{display: flex;align-items: center;border-bottom: 2rpx solid #E5E5E5;min-height: 88rpx;padding: 0 34rpx;}
+.cirmes{
+	width: 20rpx;height: 20rpx;border-radius: 10rpx;margin-right: 20rpx;
+&.co1{background: #1FB9F7;}
+&.co2{background:#FA5F03;}
+
+}
+</style>

+ 126 - 0
qs_zhaoshang/pages/work/projectprogress.vue

@@ -0,0 +1,126 @@
+<template>
+	<view class="probox inform">
+		<view class="zhanline" ></view>
+		<view class="steps" v-if="jzqklist.length">
+			<view class="lssteplist" v-for="(ite,idx) in jzqklist" :key="idx">
+				<view class="stepcir"></view>
+				<view class="flex1">
+					<view class="mb20">
+						<view class="f16 c34 fw mb8 lh22">上报日期</view>
+						<view class="f15 c6">{{ite.createTime}}</view>
+					</view>
+					<view class="mb20">
+						<view class="f16 c34 fw mb8">对接情况</view>
+						<view class="f15 c6">{{ite.jzqk}}</view>
+					</view>
+					<view v-if="ite.zsyzFjList&&ite.zsyzFjList.length">
+						<view class="f16 c34 fw mb8">附件</view>
+						<view class=" cldelistbf flex1" v-for="(zite,zidx) in ite.zsyzFjList" :key='zidx'>
+							<view class="flext f16 c6">
+								<view class="imgl"><image :src="wimg" ></image></view>
+								<view>{{zite.fjName}}</view>
+							</view>
+							<view class="flexc f16 co28 flex0" @click="getDown(zite.path)">
+								<image :src="downimg" class="imgr"></image>预览</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<no-data v-else></no-data>
+	</view>
+</template>
+
+<script>
+	import noData from "@/components/nodata/nodata.vue"
+	import {getjzqklist} from "@/api/work/clue.js"
+	import config from '@/config'
+	const baseUrl = config.baseUrl
+	export default{
+		components:{
+			noData
+		},
+		data(){
+			return{
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				xmId:'',
+				xmbh:'',
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				deptId:this.$store.state.user.deptId,
+				jzqklist:[],
+			}
+		},
+		onLoad(e) {
+			this.xmId=e.id;
+			this.xmbh=e.xmbh;
+			this.getDataFn()
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			getDataFn(){
+				var params={
+					xmId:this.xmId,
+					xmbh:this.xmbh,
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				getjzqklist(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.jzqklist = res.rows;
+						} else {
+							this.jzqklist = this.jzqklist.concat(res.rows)
+						}									
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getDown(e){
+				uni.showLoading({
+					title: '加载中'
+				});
+				var url=baseUrl+e;
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+						uni.hideLoading()
+						var filePath = result.tempFilePath;
+						   uni.openDocument({
+						     filePath: filePath,
+						     showMenu: true,
+						     success: function (res) {
+						       console.log('打开文档成功');
+						     }
+						   });
+					},
+					fail(res) {uni.hideLoading()}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+</style>

+ 250 - 0
qs_zhaoshang/pages/work/shprogress.vue

@@ -0,0 +1,250 @@
+<template>
+	<view class="probox">
+		<view class="zhanline" v-if="shenhelist.length"></view>
+		<!-- 步骤条 -->
+		<view class="step" v-if="shenhelist.length">
+			<view class="steplist flex" v-for="(ite,idx) in shenhelist" :key="idx">
+				<view class="stepl">
+					<!-- 待审核 -->
+					<image :src="statimga" v-if="ite.shjg==1"></image>
+					<!-- 已通过 -->
+					<image :src="statimgc" v-else-if="ite.shjg==2"></image>
+					<!-- 未通过 -->
+					<image :src="statimgb" v-else></image>
+				</view>
+				<view class="stepr">
+					<view class="mb6 flexc">
+						<view class="f17 c34 f500 flex1">{{ite.shrxm}}</view>
+						<!-- 领导进来才有批示 -->
+						<!-- <block v-if="checkPermi(['system:ldps:update'])">
+							<view class="flex0 titp" @click="getPiFn('update',ite)" v-if="ite.zsyzLdpsList[0].psnr">
+								<image :src="xpsimg"></image>
+								<view>修改批示</view>
+							</view>
+						</block>
+						<block v-if="checkPermi(['system:ldps:add'])">
+							<view class="flex0 titp" @click="getPiFn('add',ite)" v-if="!ite.zsyzLdpsList[0].psnr">
+								<image :src="psimg"></image>
+								<view>批示</view>
+							</view>
+						</block> -->
+						<!-- <block v-if="roles=='leader'">
+							
+							
+						</block> -->
+						
+					</view>
+					<view class="flex mb6"><view class="flex0 f15 ca">是否通过:</view>
+						<view class="f15 c34 f500" >{{ite.xmjd}}
+							<block v-if="ite.shjg==1">待审核</block>
+							<block v-if="ite.shjg==2">已通过</block>
+							<block v-if="ite.shjg==3">未通过</block>
+						</view>
+					</view>
+					<view class="flex mb6"><view class="flex0 f15 ca">审核时间:</view>
+						<view class="f15 c34 f500" >{{ite.shsj}}</view>
+					</view>
+					<view class="flex mb6" v-if="ite.shyj"><view class="flex0 f15 ca">反馈意见:</view><view class="f15 c34 f500">{{ite.shyj}}</view></view>
+					<!-- <block v-if="ite.zsyzLdpsList.length">
+						<view class="flex mb6"  v-for="(pite,pidx) in ite.zsyzLdpsList" :key="'info-'+pidx"><view class="flex0 f15 ca">领导批示:</view><view class="f15 c34 f500" >{{pite.psnr}}</view></view>
+					</block> -->
+				</view>
+			</view>
+		</view>
+		<block v-else>
+			<no-data ></no-data>
+		</block>
+		<!-- 弹窗 -->
+		<pop-up :status="status"  :iteminfo='iteminfo'  :type="type" @getClose='getClose' @getLinSubmit="getLinSubmit" @getldDelFn="getldDelFn"></pop-up>
+	</view>
+</template>
+
+<script>
+	import popUp from "@/components/popup/popup.vue"
+	import { getshyjList,getldpsFn,getldpsputFn,getldpsdelFn} from '@/api/work/clue.js'
+	import noData from "@/components/nodata/nodata.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		data(){
+			return{
+				psimg:require("@/static/images/mine/psicon.png"),
+				xpsimg:require("@/static/images/mine/xpicon.png"),
+				statimga:require("@/static/images/mine/ywicon.png"),//审核
+				statimgb:require("@/static/images/mine/cicon.png"),//未通过
+				statimgc:require("@/static/images/mine/jicon.png"),//通过
+				type:0,
+				status:'add',
+				id:'',//线索id
+				xmId:'',//项目id,
+				roles:this.$store.state.user.roles[0],
+				shenhelist:[],
+				iteminfo:{},
+				xmbh:"",
+				xmmc:'',
+				sourceId:'',
+				deptId:this.$store.state.user.deptId,
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				
+			}
+		},
+		components:{
+			popUp,noData
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		onLoad(e) {
+			// this.id=e.id;
+			this.xmId=e.id;
+			this.getDataFn()
+		},
+		methods:{
+			checkPermi, checkRole,
+			getDataFn(){
+				var params={
+					xmId:this.xmId,
+					deptId:this.deptId,
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				getshyjList(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.shenhelist = res.rows;
+						} else {
+							this.shenhelist = this.shenhelist.concat(res.rows)
+						}
+					}else{
+						this.$toast(res.msg)
+					}
+					// if(res.code==200){
+					// 	this.shenhelist=res.rows;
+					// }else{
+					// 	this.$toast(res.msg)
+					// }
+				})
+			},
+			getClose(){
+				this.type=0;
+			},
+			getldDelFn(){
+				var params={};
+				var that=this;
+				params.id=this.iteminfo.ids;
+				getldpsdelFn(params).then(res=>{
+					if(res.code==200){
+						that.$toast('批示撤回成功')
+						setTimeout(function(){
+							that.getDataFn()
+							that.type=0;
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getLinSubmit(data){
+				var that=this;
+				
+				var params={};
+				var str=''
+				if(data.type==0){//暂存
+					params.zcpsnr=data.psnr;
+					params.type=1;
+					str='批示暂存成功'
+				}else{
+					params.psnr=data.psnr;
+					params.type=2;
+					str='批示提交成功'
+				}
+				if(this.status=='add'){
+					params.xmId=this.xmId;
+					params.sourceId=this.sourceId;
+					params.xmbh=this.xmbh;
+					params.xmmc=this.xmmc;
+					getldpsFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast(str)
+							setTimeout(function(){
+								that.getDataFn()
+								that.type=0;
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					//修改
+					params.id=this.iteminfo.ids
+					getldpsputFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast(str)
+							setTimeout(function(){
+								that.getDataFn()
+								that.type=0;
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}
+				
+			},
+			getPiFn(e,ite){
+				this.sourceId=ite.id;
+				this.xmbh=ite.xmbh;
+				this.xmmc=ite.xmmc;
+				if(ite.zsyzLdpsList.length){
+					this.iteminfo=ite.zsyzLdpsList[0]
+				}else{
+					this.iteminfo={};
+				}
+				if(this.iteminfo.ids){
+					this.status='update';
+				}else{
+					this.status='add';
+				}
+				this.type=3
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.probox{background-color: #ffffff;min-height: 100vh;}
+.step{padding: 56rpx 44rpx 40rpx 44rpx;
+	.steplist{position: relative;padding-bottom: 24rpx;
+		&::before{width: 2rpx;height: 100%;background: #E5E5E5;content: '';position: absolute;left: 18rpx;top: 18rpx;}
+		&:last-of-type::before{display: none;}
+		.stepl{ flex:0 0 auto;margin-right: 26rpx;width: 34rpx;height: 34rpx;border-radius: 50%;background-color: #ffffff;z-index: 1;
+			image{width: 36rpx;height: 36rpx;border-radius: 50%;}
+		}
+		.stepr{flex: 1;
+			.titp{display: flex;align-items: center;height: 48rpx;min-width: 120rpx;justify-content: center;
+				image{width: 32rpx;height: 32rpx;}
+				view{font-size: 30rpx;color: #1FB9F7 ;margin-left: 12rpx;}
+			}
+		}
+	}
+	
+	
+}
+</style>

+ 193 - 0
qs_zhaoshang/pages/work/skitem.vue

@@ -0,0 +1,193 @@
+<template>
+	<view class="allpage">
+		
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch'></tab-searchone>
+			<tab-list :tablist='tablist' :tabidx="tabidx" @getCheck="goCheck" :height='90'></tab-list>
+			
+			<time-year @bindDateChange="bindDateChange" :timedate="time"></time-year>
+		</view>
+		<!-- <view style="height: 90rpx;"></view> -->
+		<view class="zhanline"></view>
+		<view class="alllist">
+			<!--  :start="startDate" :end="endDate" -->
+			
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt="wtdt" type='shengku' @getDetail='goDetail'></project-list>
+		</view>
+		<!-- 新增 -->
+		<block v-if="checkPermi(['projectV2:skxm:add'])">
+			<view style="height: 100rpx;"></view>
+			<view class="zdcount_btn"  @click="getAddSkFn">新增申报</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabList from "@/components/toptab/tab.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getskxmList} from '@/api/work/addsk.js'
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	
+	export default{
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				tabidx:0,
+				year:'',
+				list:[],
+				tablist:[{tit:'全部',val:0,},{tit:'待审',val:1},{tit:'已审',val:2},{tit:'已拒',val:3}],
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				wtdt:'',
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				wtdt:'',
+				deptId:this.$store.state.user.deptId,
+				time:""
+			}
+		},
+		components:{
+			projectList,tabList,tabSearchone,timeYear
+		},
+		onUnload(){
+			uni.$off('refreshdatalistsk')
+		},
+		onLoad(e) {
+			uni.$on('refreshdatalistsk',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+			var y='';
+			if(e.time){
+				y=e.time
+			}else{
+				let date = new Date();
+				y = date.getFullYear();
+			}
+			this.beginTime=y+'0101';
+			this.endTime=y+'1231';
+			this.time=y;
+			this.getDataFn()
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			bindDateChange(e){
+				this.year=e;
+				this.beginTime=e+'0101';
+				this.endTime=e+'1231';
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goCheck(data){
+				this.tabidx=data;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				if(checkPermi(['projectV2:skxm:query'])){
+					this.$tab.navigateTo('/pages/work/skproject/skdetail?id='+e.id)
+				}
+				
+			},
+			getAddSkFn(){
+				this.$tab.navigateTo('/pages/work/skproject/addsk')
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmmc:this.name,
+					deptId:this.deptId
+				}
+				params['params[beginTime]']=this.beginTime
+				params['params[endTime]']=this.endTime
+				if(this.tabidx>0){
+					params.isSh=this.tabidx
+				}
+				// isSh
+				// if(this.tabidx==1){
+				// 	params.isSh='N'
+				// }else if(this.tabidx==2){
+				// 	params.isSh='Y'
+				// }
+				getskxmList(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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding-top:280rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+
+ .alllist{padding-top:10rpx ;}
+ .zdcount_btn{position: fixed;left: 0;right: 0;bottom: 0;z-index: 4;width: 100%;height: 100rpx;font-size: 32rpx;color: #ffffff;font-weight: 500;
+ background: #FE5706;display: flex;align-items: center;justify-content: center;
+ 
+ }
+ 
+</style>

+ 1202 - 0
qs_zhaoshang/pages/work/skproject/addsk.vue

@@ -0,0 +1,1202 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <!-- 第一页 -->
+	  <!-- <uni-data-picker  :localdata="cdycydataTree" :map="sscymap" v-model="cdycidx" popup-title="请选择班级" @change="onchange" @nodeclick="onnodeclick"></uni-data-picker> -->
+		<view v-show="type==1" >
+			<uni-forms class='inform'  ref="firstform" :rules="firstrules" :modelValue="datainfo">
+				<!-- <view class="info_tit">基本信息</view> -->
+				<uni-forms-item name="isHs" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">徽商项目</view>
+					<picker  range-key='label' :value="hsindex" :range="hslist" class="infolist_a" @change='bindDateChangea'>
+						<view :class="datainfo.isHs?'':'f16 co80'">{{datainfo.isHs=='Y'?'是':'否'}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目名称</view>
+				  	<input  placeholder="请输入项目名称" v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="yyzz" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>企业营业执照</view>
+				  	<input  placeholder="请输入企业营业执照" v-model="datainfo.yyzz" class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="pzwh" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>批准文号</view>
+				  	<input  placeholder="请输入批准文号" v-model="datainfo.pzwh" class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="szdqName" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>所在地区</view>
+					<picker  range-key='dictLabel' :value="szdqindex" :range="location" class="infolist_a" @change='bindDateChangeb'>
+						<view :class="datainfo.szdqName?'':'f16 co80'">{{datainfo.szdqName||"请选择所在地区"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sscy" style='margin-bottom: 0;'>
+				 <view class="infolist" @click="getSscyFn">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>所属产业</view>
+					<view class="f16 txr flex1 ml8" v-if='datainfo.xxcy' >
+						<view class="txr">
+							<block  v-if="datainfo.sscy">{{sscyresult||getSscyAdr(datainfo.sscy)}};</block>
+							<block  v-if="datainfo.xxcy">{{datainfo.xxcy}};</block>
+							<block  v-if="datainfo.zdcy">{{datainfo.zdcy}};</block>
+							<block  v-if="datainfo.isLt=='Y'">龙头企业;</block>
+							<block  v-if="datainfo.isFzzlfdcy=='Y'">非住宅类房地产业;</block>
+						</view>
+						
+					</view>
+					<view v-else class="f16 co80 txr flex1 over ml8">
+						请选择所属产业
+					</view>
+					
+					
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tzfs" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投资方式</view>
+					<picker  range-key='dictLabel' :value="tzfsindex" :range="tzfslist" class="infolist_a" @change='bindDateChangec'>
+						<view :class="datainfo.tzfs?'':'f16 co80'">{{datainfo.tzfs||"请选择投资方式"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="rkTime" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">项目入库时间</view>
+				  	<picker mode="date" :value="datainfo.rkTime"  class="infolist_a" @change='bindtimeDateChange'>
+						<view :class="datainfo.rkTime?'':'f16 co80'">{{datainfo.rkTime||"请选择项目入库时间"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="kgjsTime" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">开工建设日期</view>
+				  	<picker mode="date" :value="datainfo.kgjsTime"  class="infolist_a" @change='bindtimeDateChangea'>
+						<view :class="datainfo.kgjsTime?'':'f16 co80'">{{datainfo.kgjsTime||"请选择开工建设日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jswcTime" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">建成完工日期</view>
+				  	<picker mode="date" :value="datainfo.jswcTime"  class="infolist_a" @change='bindtimeDateChangeb'>
+						<view :class="datainfo.jswcTime?'':'f16 co80'">{{datainfo.jswcTime||"请选择建成完工日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="ztze" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>总投资金额(万元)</view>
+				  	<input  placeholder="请输入总投资金额" type="number" v-model="datainfo.ztze" class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="swzj" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>省外投资总额(万元)</view>
+				  	<input  placeholder="请输入省外投资总额" type="number" v-model="datainfo.swzj" class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+			</uni-forms>
+			<view class="infobtn flexcc cf f16 f500" @click="getNext(1)">下一步</view>
+			
+			<!-- 弹框 -->
+			<view class="bgbox" @click="getClose" v-if="addcyflag"></view>
+			<!--  -->
+			<view class="fixedbox" v-if="addcyflag">
+				<image :src="closeimg" class="choseimg" @click="getClose"></image>
+				<view class="top">所属产业</view>
+				<view class="boxs">
+					<!-- 所属产业 -->
+					<uni-forms ref="cyform" :rules="cyrules" :modelValue="datainfo" >
+						 <uni-forms-item name="sscy" style='margin-bottom:10rpx;'>
+						  <view class="infolist" @click="getSscytreeFn">
+							  <!--  -->
+						   	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>第一产业</view>
+							<!-- <uni-data-picker placeholder="请选择第一产业" popup-title="请选择第一产业" :localdata="cdycydataTree" v-model="sscyindex" :map="sscymap">
+							</uni-data-picker> -->
+							<!-- @change="onchange" @nodeclick="onnodeclick" @popupopened="onpopupopened" @popupclosed="onpopupclosed" -->
+							
+						 	<!-- <picker  range-key='dictLabel' :value="sscyindex" :range="xxcylist" class="infolist_a" @change='bindDateChanged'>
+						 		<view :class="datainfo.sscy?'':'f16 co80'">{{datainfo.sscy||"请选择第一产业"}}</view>
+						 	</picker> -->
+							<view class="txr flex1 over f16 ml8" v-if="sscyresult">
+								{{sscyresult||getSscyAdr(datainfo.sscy)}}
+							</view>
+							<view class="txr flex1 over ml8 f16 co80" v-else>请选择第一产业</view>
+						</view>
+						 </uni-forms-item>
+						<uni-forms-item name="xxcy" style='margin-bottom: 10rpx;'>
+						 <view class="infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12">十大新兴产业</view>
+							<picker  range-key='dictLabel' :value="xxcyindex" :range="xxcylist" class="infolist_a" @change='bindDateChangee'>
+								<view :class="datainfo.xxcy?'':'f16 co80'">{{datainfo.xxcy||"请选择十大新兴产业"}}</view>
+							</picker>
+						  </view>
+						</uni-forms-item>
+						<uni-forms-item name="zdcy" style='margin-bottom: 10rpx;'>
+						 <view class="infolist">
+						  	<view class="f16 fw c34 flex0 pr pl12">八大主导产业</view>
+							<picker  range-key='dictLabel' :value="zdcyindex" :range="zdcylist" class="infolist_a" @change='bindDateChangef'>
+								<view :class="datainfo.zdcy?'':'f16 co80'">{{datainfo.zdcy||"请选择八大主导产业"}}</view>
+							</picker>
+						  </view>
+						</uni-forms-item>
+					</uni-forms>
+					
+					<view class="flex">
+						<view class="boxcen" :class="isLt?'act':''" @click="isLt=!isLt">
+							<image :src="gcheckimg" v-if="isLt"></image>
+							<image :src="checknimg" v-else></image>
+							<view :class="isLt?'co28':''">龙头企业</view>
+						</view>
+						<view class="boxcen" :class="isFzzlfdcy?'act':''" @click="isFzzlfdcy=!isFzzlfdcy">
+							<image :src="gcheckimg" v-if="isFzzlfdcy"></image>
+							<image :src="checknimg" v-else></image>
+							<view :class="isFzzlfdcy?'co28':''">非住宅类房地产业</view>
+						</view>
+					</view>
+					<!-- <uni-data-checkbox multiple @change="checkboxChangea" v-model="cyvalue" :localdata="cymorelist" ></uni-data-checkbox> -->
+				</view>
+				<view class="fixedbtn" @click="proSure">确认</view>
+			</view>
+		</view>
+		<!-- 第二页 -->
+		<view v-show="type==2">
+			<uni-forms class='inform'  ref="swdwform"   :modelValue="datainfo">
+				<!-- <view class="info_tit">项目信息</view> -->
+				<view class="infolist_add" @click="getAddswtzdw">
+					<image :src="addimg"></image>
+					<view>添加省外投资单位</view>
+				</view>
+				<view v-for="(ite,idx) in swtzdwlist" :key="'swdw-'+idx">
+					<uni-forms-item name="" style='margin-bottom: 0;'>
+						<view class="infolist">
+						 	<view class="f16 fw cofe flex1 pr pl12">省外投资单位{{Number(idx)+1}}</view>
+							<view class="delbx" @click="getDelswtzdw(idx)" v-if="idx!=0">
+								<image :src="delimg"></image>
+							</view>
+						</view>
+					</uni-forms-item>
+					<uni-forms-item name="dwmc" style='margin-bottom: 0;' >
+					 <view class="infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>单位名称</view>
+					  	<input  placeholder="请输入单位名称"  v-model="ite.dwmc"   class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="zczj" style='margin-bottom: 0;'>
+					 <view class="infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12">注册资金(万元)</view>
+					  	<input  placeholder="请输入注册资金" type="number" v-model="ite.zczj"    class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="tzje" style='margin-bottom: 0;'>
+					 <view class="infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投资金额(万元)</view>
+					  	<input  placeholder="请输入投资金额" type="number" v-model="ite.tzje" class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="province" style='margin-bottom: 0;'>
+					 <view class="infolist" @click="getAreaFn(idx)">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>所属地区</view>
+						<view class="txr flex1 over f16 ml8" v-if="ite.province">
+							{{ite.province}}
+							<block v-if='ite.city'>/</block>
+							{{ite.city}}
+						</view>
+						<view class="txr flex1 over ml8 f16 co80" v-else>请选择所属地区</view>
+						<!-- <view class="txr flex1 over ml8 f16 co80" :class="ite.province?'':' '">{{
+							
+							
+							||"请选择所属地区"}}</view> -->
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="dwjj" style='margin-bottom: 0;'>
+					 <view class="infolist" style="align-items: flex-start;">
+					  	<view class="f16 fw c34 flex0 pr pl12">单位简介</view>
+						<uni-easyinput :inputBorder='false' type="textarea"  v-model="ite.dwjj"  placeholder="(请输入单位简介)" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+					  </view>
+					</uni-forms-item>
+				</view>
+			</uni-forms>
+			
+			<!-- 到资情况 -->
+			<uni-forms class='inform'  ref="zjdwform" :rules="zjdwrules"  :modelValue="datainfo">
+				<!-- <view class="info_tit">项目信息</view> -->
+				<!-- <view class="infolist_add" @click="getAddzjdw">
+					<image :src="addimg"></image>
+					<view>添加资金到资情况</view>
+				</view> -->
+				<view v-for="(ite,idx) in zjdwList" :key="'zjdw-'+idx">
+					<uni-forms-item name="" style='margin-bottom: 0;'>
+						<view class="infolist">
+						 	<view class="f16 fw cofe flex1 pr pl12">资金到位情况</view>
+							<!-- <view class="delbx" @click="getDelzjdw(idx)" v-if="idx!=0">
+								<image :src="delimg"></image>
+							</view> -->
+						</view>
+					</uni-forms-item>
+					<uni-forms-item name="dwmc" style='margin-bottom: 0;'>
+					 <view class="infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>单位名称</view>
+					  	<input  placeholder="请输入单位名称"  v-model="ite.dwmc"   class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="zzje" style='margin-bottom: 0;'>
+					 <view class="infolist">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>注资金额(万元)</view>
+					  	<input  placeholder="请输入注资金额" type="number" v-model="ite.zzje"  class="f16  c34 flex1 txr"/>
+					  </view>
+					</uni-forms-item>
+					<uni-forms-item name="dwrq" style='margin-bottom: 0;'>
+					 <view class="infolist" @click="getTimeFn(idx)">
+					  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>到位日期</view>
+					  	<picker mode="date" :value="ite.dwrq"  class="infolist_a" @change='bindtimeDateChangec'>
+							<view :class="ite.dwrq?'':'f16 co80'">{{ite.dwrq||"请选择到位日期"}}</view>
+					  	</picker>
+					  </view>
+					</uni-forms-item>
+				</view>
+			</uni-forms>
+			<view class="infobtn flexcc cf f16 f500" @click="getNext(2)">下一步</view>
+			
+		</view>	
+		<!-- 第三页 -->
+		<view v-show="type==3">
+			<uni-forms class='inform'  ref="thirdform" :rules="thirdrules" :modelValue="datainfo">
+				<!-- <view class="info_tit">首谈信息</view> -->
+				<uni-forms-item name="xmnr" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目内容</view>
+				  	<input  placeholder="请输入项目内容" v-model="datainfo.xmnr"  class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+				  	<input  placeholder="请输入存在问题" v-model="datainfo.czwt"   class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="remark" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">项目备注</view>
+				  	<input  placeholder="请输入项目备注" v-model="datainfo.remark"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				
+				<view class="border"></view>
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+				 <view class="infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+					<view class="infolist_a co28">
+						<!-- 上传附件 -->
+						<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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infolist_b" style="margin-top: 20rpx;">含项目建议书(项目分析报告或投资计划书)、洽谈现场照片等资料</view>
+			</uni-forms>
+			<view class="infobtn flexcc cf f16 f500" v-if="checkPermi(['projectV2:skxm:edit','projectV2:skxm:add'])" @click="getNext(3)">提交</view>
+			<!-- <third-clue @getNext='getNext' :datainfo='datainfo'></third-clue> -->
+		</view>
+		<view style="height: 100rpx;"></view>
+		
+		
+		<!-- 所属地区 -->
+		<selectMorePicker
+					ref="picker" 
+					:title="auiPicker.title"
+					:layer="auiPicker.layer"
+					:titflag='auiPicker.titflag'
+					:data="auiPicker.data"
+					@callback="pickerCallback"
+				></selectMorePicker>
+		<!-- 第一产业 -->
+		<selectnore-more-picker
+			ref="sscypicker"
+			:title="sscyauiPicker.title"
+			:layer="sscyauiPicker.layer"
+			:titflag='sscyauiPicker.titflag'
+			:data="sscyauiPicker.data"
+			@callback="sscypickerCallback"
+		></selectnore-more-picker>
+  </view>
+  <!-- <uni-easyinput type="textarea" v-model="value" placeholder="请输入内容"></uni-easyinput> -->
+</template>
+
+<script>
+	import selectMorePicker from "@/components/ba-tree-picker/selectMorePicker.vue"
+	import selectnoreMorePicker from "@/components/ba-tree-picker/selectnoreMorePicker.vue"
+	import {getarealist,getskxmDetail,getaddskxmFn,getputskxmFn,getskcyListFn} from "@/api/work/addsk.js"
+	
+  import { getDictionaryFn} from '@/api/work/index.js'
+  import {selectDictLabel} from "@/utils/common.js"
+  
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  export default {
+	  components:{
+		  selectMorePicker,selectnoreMorePicker
+	  },
+    data() {
+      return {
+		   items: [{
+		            text: "一年级",
+		            value: "1-0",
+		            children: [
+		              {
+		                text: "1.1班",
+		                value: "1-1"
+		              },
+		              {
+		                text: "1.2班",
+		                value: "1-2"
+		              }
+		            ]
+		          },
+		          {
+		            text: "二年级",
+		            value: "2-0"
+		          },
+		          {
+		            text: "三年级",
+		            value: "3-0"
+		          }],
+		  //附件
+		  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,ppt,txt,pdf,zip,rar,word',
+        // 文件上传大小限制
+        size: 100,
+        // 文件数量限制 默认10
+        count: 5,
+        // 文件回显列表
+        files: new Map(),
+        // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+        wxFiles: [],
+        // 是否打印日志
+        debug: false,
+        filelist:[], 
+		
+		
+		auiPicker: {
+			title: '选择地区',
+			layer: null,
+			titflag:true,
+			data: []
+		},
+		sscyauiPicker: {
+			title: '选择所属产业',
+			layer: null,
+			titflag:true,
+			data: []
+		},
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		poptype:0,//弹窗类型 1暂存/消耗 2审核意见 3批示
+		pagetype:'add',
+		status: 'loading',
+		loading:false,
+		contentText:{contentrefresh: '加载中',},
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		isFzzlfdcy:false,
+		isLt:false,
+		datainfo:{
+			"isHs":"N",//是否徽商项目 N:否 Y:是
+			"xmmc":"",//项目名称
+			"pzwh":"",//批准文号
+			"yyzz":"",//企业营业执照
+			"szdqId":"",//所在地区id
+			"szdqName":"",//所在地区名称
+			
+			"sscy":"",//所属产业
+			"xxcy":"",//新兴产业
+			"zdcy":"",//主导产业
+			"isLt":"",//是否龙头企业
+			"isFzzlfdcy":"",//是否非住宅类房地产业
+			
+			"tzfs":"",//投资方式
+			"rkTime":"",//项目入库时间
+			"kgjsTime":"",//开工建设日期
+			"jswcTime":"",//建设完成日期
+			"ztze":"",//总投资额(万元)
+			"swzj":"",//省外资金(万元)
+			
+			"xmnr":"",//项目内容
+			"czwt":"",//存在问题
+			"remark":"",//项目备注
+			
+			"zsyzSkSwtzdwList":'',//省外投资单位
+			
+			
+			"zsyzSkDzjeList":'',//到资金额
+			
+			
+			"zsyzFjList":"",//附件集合
+		},
+		// 十大产业
+		// cyinfo:{
+		// 	"sscy":"",//所属产业
+		// 	"xxcy":"",//新兴产业
+		// 	"zdcy":"",//主导产业
+		// 	"isLt":"",//是否龙头企业
+		// 	"isFzzlfdcy":"",//是否非住宅类房地产业
+		// },
+		addimg:require("@/static/images/mine/add.png"),
+		delimg:require("@/static/images/mine/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		firstrules: {
+		  xmmc: {rules: [{required: true,errorMessage: '请输入项目名称'}]},
+		  yyzz: {rules: [{required: true,errorMessage: '请输入企业营业执照'}]},
+		  pzwh: {rules: [{required: true,errorMessage: '请输入批准文号' } ]},
+		  szdqName: {rules: [{required: true,errorMessage: '请选择所属产业'} ]},
+		  // sscy: {rules: [{required: true,errorMessage: '请选择所在地区'} ]},
+		  tzfs: {rules: [{required: true,errorMessage: '请选择投资方式'} ]},
+		  ztze: {rules: [{required: true,errorMessage: '请输入总投资金额'}]},
+		  swzj: {rules: [{required: true,errorMessage: '请输入省外投资总额' } ]},
+		},
+		cyrules:{
+			sscy: {rules: [{required: true,errorMessage: '请选择第一产业'}]},
+		},
+		// 省外投资单位
+		swdwrules: {
+		  dwmc: {rules: [{required: true,errorMessage: '请输入单位名称'}]},
+		  tzje: {rules: [{required: true,errorMessage: '请输入投资金额'}]},
+		  province: {rules: [{required: true,errorMessage: '请选择所属地区'} ]},
+		},
+		//到资情况
+		zjdwrules: {
+		  dwmc: {rules: [{required: true,errorMessage: '请输入单位名称'}]},
+		  zzje: {rules: [{required: true,errorMessage: '请输入注资金额'}]},
+		  dwrq: {rules: [{required: true,errorMessage: '请选择到位日期'} ]},
+		},
+		thirdrules: {
+		  xmnr: {rules: [{required: true,errorMessage: '请输入项目内容'}]},
+		  zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'}]},
+		},
+		addcyflag:false,
+		cyvalue:[],
+		cymorelist: [{"value": 1,"text": "龙头企业"},{"value": 2,"text": "非住宅类房地产业"}],
+		// sfhsxm:'否',
+		hsindex:1,//徽商项目
+		szdqindex:0,//所在地区
+		tzfsindex:0,//投资方式
+		sscyindex:0,//第一产业
+		xxcyindex:0,//新兴产业
+		zdcyindex:0,//主导产业
+		hslist:[{label:'是',id:'Y'},{label:'否',id:'N'},],//徽商
+		location:[],//所在地区
+		tzfslist:[],//投资方式
+		sscylist:[],//第一产业
+		xxcylist:[],//新兴产业
+		zdcylist:[],//主导产业
+		
+		swtzdwlist:[
+			{
+				"dwmc":'',//单位名称
+				"zczj":"",//注册资金
+				"tzje":"",//投资金额
+				"province":"",//省
+				"provinceId":"",//省_id
+				"city":"",//市
+				"cityId":"",//	市id
+				"dwjj":"",//	单位简介
+			}
+		],//省外投资单位
+		areaidx:0,//省市选择第几个
+		zjidx:0,
+		zjdwList:[{
+			"dwmc":'',//单位名称
+			"zzje":'',//注资金额
+			"dwrq":'',//到位日期
+		}],//到资金额
+		
+		
+		currentdate:'',//当前日期
+		// sfwlhxxxm:'',
+		firstform:{},
+		cyform:{},//所属产业
+		swdwform:{},//省外投资单位
+		zjdwform:{},//到资情况
+		thirdform:{},
+		id:'',
+		cdycydataTree:[],//第一产业数组
+		sscyresult:'',
+		sscymap:{text:'deptName',value:'skcyId'},
+		sscyindex:'',
+		cdycidx:0,
+		
+		}
+    },
+	onLoad(e) {
+		var that=this;
+		this.currentdate = this.getNowFormatDate();
+		var newObj={}
+		if(e.data){
+			 newObj=JSON.parse(decodeURIComponent(e.data))
+		}
+		this.pagetype=newObj.pagetype||'add';
+		this.getinvestmentarea()
+		this.getskcyListFn();
+		// 获取省市
+		this.getArea()
+		if(this.pagetype=='update'){
+			// this.datainfo.xmId=newObj.xmId;
+			// this.datainfo.xmbh=newObj.xmbh;
+			// this.datainfo.xmmc=newObj.xmmc;
+			this.getDataFn(newObj.id)
+		}else{
+			this.datainfo.rkTime=this.currentdate
+		}
+		
+		// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+		
+	},
+	onHide() {
+		// #ifdef APP-PLUS
+		uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+		// #endif
+	    
+	},
+    methods: {
+		checkPermi, checkRole,
+		 onchange(e) {
+		        const value = e.detail.value
+		      },
+		      onnodeclick(node) {
+		      },
+		getArea(){
+			getarealist(0).then(res=>{
+				this.auiPicker.data = res.data
+			})
+		},
+		getAreaFn(idx){
+			var aridx=1;
+			if(idx==this.areaidx){
+				aridx=0
+			}
+			this.areaidx=idx;
+			this.$refs.picker.open(aridx).then(function() {
+			
+			});
+		},
+		//picker多级联动回调
+		pickerCallback(e) {
+			const that = this;
+			var idx=that.areaidx;
+			let result = '';
+			e.data.forEach(function(item, index) {
+				switch (index) {
+					case 0:
+						that.swtzdwlist[idx].provinceId = e.data[0].areaid;
+						that.swtzdwlist[idx].province = e.data[0].name;
+						break;
+					case 1:
+						that.swtzdwlist[idx].cityId = e.data[1].areaid;
+						that.swtzdwlist[idx].city = e.data[1].name;
+						break;
+					default:
+						break;
+				}
+			});
+			// console.log(e)
+		},
+		getAddswtzdw(){
+			var obj ={
+				"dwmc":'',//单位名称
+				"zczj":"",//注册资金
+				"tzje":"",//投资金额
+				"province":"",//省
+				"provinceId":"",//省_id
+				"city":"",//市
+				"cityId":"",//	市id
+				"dwjj":"",//	单位简介
+			}
+			this.swtzdwlist.push(obj)
+		},
+		getDelswtzdw(idx){
+			var that = this;
+			uni.showModal({
+				title: '提示',
+				content: "是否确认删除",
+				success: function(res) {
+					if (res.confirm) {
+						that.swtzdwlist.splice(idx, 1)
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		getAddzjdw(){
+			var obj = {
+			"dwmc":'',//单位名称
+			"zzje":'',//注资金额
+			"dwrq":'',//到位日期
+		}
+			this.zjdwList.push(obj)
+		},
+		getDelzjdw(idx){
+			var that = this;
+			uni.showModal({
+				title: '提示',
+				content: "是否确认删除",
+				success: function(res) {
+					if (res.confirm) {
+						that.zjdwList.splice(idx, 1)
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		getSscyAdr(value){
+			var actions = [];
+			var datas=this.cdycydataTree;
+			Object.keys(datas).some((key) => {
+				if (datas[key].skcyId == ('' + value)) {
+					actions.push(datas[key].deptName);
+					return true;
+				}
+			})
+			this.sscyresult=actions.join('');
+			return actions.join('');
+		},
+		// 省库详情
+		getDataFn(id){
+			getskxmDetail(id).then(res=>{
+				var that=this;
+				if(res.code==200){
+					this.datainfo=res.data;
+					// 徽商
+					// this.sfhsxm=this.datainfo.isHs=='Y'?'是':'否';
+					this.hsindex=this.datainfo.isHs=='Y'?0:1;
+					this.isLt=this.datainfo.isLt=='Y'?true:false;
+					this.isFzzlfdcy=this.datainfo.isFzzlfdcy=='Y'?true:false;
+					// 所在地区
+					for(var i=0;i<that.location.length;i++){
+						if(that.location[i].dictLabel==this.datainfo.szdqName){
+							this.szdqindex=Number(i)
+							break;
+						}
+					}
+					this.sscyresult=that.getSscyAdr(this.datainfo.sscy)
+					// 第一产业
+					// for(var i=0;i<that.cdycydataTree.length;i++){
+					// 	if(that.cdycydataTree[i].skcyId==this.datainfo.sscy){
+					// 		this.sscyresult=that.cdycydataTree[i].deptName
+					// 		break;
+					// 	}
+					// }
+					// 新兴产业
+					for(var i=0;i<that.xxcylist.length;i++){
+						if(that.xxcylist[i].dictLabel==this.datainfo.xxcy){
+							this.xxcyindex=Number(i)
+							break;
+						}
+					}
+					// 主导产业
+					for(var i=0;i<that.zdcylist.length;i++){
+						if(that.zdcylist[i].dictLabel==this.datainfo.zdcy){
+							this.zdcyindex=Number(i)
+							break;
+						}
+					}
+					// 投资方式
+					for(var i=0;i<that.tzfslist.length;i++){
+						if(that.tzfslist[i].dictLabel==this.datainfo.tzfs){
+							this.tzfsindex=Number(i)
+							break;
+						}
+					}
+					
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+					if(res.data.zsyzSkSwtzdwList&&res.data.zsyzSkSwtzdwList.length){
+						this.swtzdwlist=JSON.parse(JSON.stringify(res.data.zsyzSkSwtzdwList))
+					}
+					if(res.data.zsyzSkDzjeList&&res.data.zsyzSkDzjeList.length){
+						this.zjdwList=JSON.parse(JSON.stringify(res.data.zsyzSkDzjeList))
+					}
+					// sfwlhxxxm
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getNowFormatDate(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			const timeday = y + "-" + m + "-" + d;
+			return timeday;
+		},
+		init(){
+			
+		},
+		// 潜山市重点工程
+		// 招商引资 
+		getSscytreeFn(){
+			this.$refs.sscypicker.open(0).then(function() {
+			
+			});
+		},
+		getskcyListFn(){
+			getskcyListFn().then(res=>{
+				// 循环赋值
+				this.cdycydataTree=res.data;
+				// this.cdycydataTree=this.toTree2(res.data);
+				this.sscyauiPicker.data=this.toTree2(res.data)
+			})
+		},
+		sscypickerCallback(e){
+			const that = this;
+			var newArr=e.data;
+			var len=Number(newArr.length)-1
+			this.datainfo.sscy=newArr[len].skcyId;
+			this.sscyresult=newArr[len].deptName;
+		},
+		toTree2(arr){
+			// 先copy一份数据
+			let newA = JSON.parse(JSON.stringify(arr));
+			let data = newA.filter(item => {
+				item.children = newA.filter(e => {
+				    return item.skcyId === e.parentId
+				  })
+				  return !item.parentId
+				})
+								
+				return data
+		},
+		// 字典值
+		getinvestmentarea(){
+			// 所属地区
+			getDictionaryFn('location_fgw').then(res=>{
+				if(res.code==200){
+					this.location = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			// 投资方式
+			getDictionaryFn('investment_method').then(res=>{
+				if(res.code==200){
+					this.tzfslist = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			// 十大新兴产业
+			getDictionaryFn('emerging_industries').then(res=>{
+				if(res.code==200){
+					this.xxcylist = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			// 八大主导产业
+			getDictionaryFn('prime_industry').then(res=>{
+				if(res.code==200){
+					this.zdcylist = res.data.map(v => {
+						return {
+							dictLabel: v.dictLabel,
+							dictValue: Number(v.dictValue)
+						}
+					})
+				}
+			})
+			// 第一产业
+			// getskcyListFn().then(res=>{
+			// 	console.log(res,85)
+			// })
+		},
+		
+		// 数组验证
+		 validateArray(array) {
+		  let isValid = true;
+		  array.forEach((item) => {
+		    if (!item.value) {
+		      isValid = false;
+		    }
+		  });
+		  return isValid;
+		},
+		getNext(idx){
+			var that=this;
+			if(idx==1){
+				// 第一页
+				this.$refs.firstform.validate().then(res => {
+					
+					that.type=2
+				})
+			}else if(idx==2){
+				// 判断省外投资  资金到位是否有值
+				var swtzdwlist=that.swtzdwlist;
+				for(var i =0;i<swtzdwlist.length;i++){
+					var str='省外投资'+(Number(i)+1)
+					var nstr=''
+					if(!swtzdwlist[i].dwmc){
+						nstr="请输入"+str+":单位名称"
+						that.$toast(nstr)	
+						return
+					}
+					if(!swtzdwlist[i].tzje){
+						nstr="请输入"+str+":投资金额"
+						that.$toast(nstr)	
+						return
+					}
+					if(!swtzdwlist[i].province){
+						nstr="请选择"+str+":所属地区"
+						that.$toast(nstr)	
+						return
+					}	
+				}
+				var zjdwList=that.zjdwList;
+				for(var i =0;i<zjdwList.length;i++){
+					var str='资金到位'
+					var nstr='';
+					if(!zjdwList[i].dwmc){
+						nstr="请输入"+str+":单位名称"
+						that.$toast(nstr)	
+						return
+					}
+					if(!zjdwList[i].zzje){
+						nstr="请输入"+str+":注资金额"
+						that.$toast(nstr)	
+						return
+					}
+					if(!zjdwList[i].dwrq){
+						nstr="请选择"+str+":到位日期"
+						that.$toast(nstr)	
+						return
+					}	
+				}
+				that.datainfo.zsyzSkSwtzdwList=JSON.parse(JSON.stringify(swtzdwlist))
+				that.datainfo.zsyzSkDzjeList=JSON.parse(JSON.stringify(zjdwList))
+				that.type=3
+				// for(var i=0;i<swtzdwlist.length;i++)
+				// this.$refs.swdwrules.validate().then(res => {
+				// 	// this.type=3
+				// })
+				// this.$refs.twoform.validate().then(res => {
+				// 	this.type=3
+				// })
+			}else{
+				this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+				this.$refs.thirdform.validate().then(res => {
+					var params=this.datainfo;
+					if(this.pagetype=='add'){
+						getaddskxmFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast('新增省库成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdatalistsk');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}else{
+						getputskxmFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast('修改省库成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}
+					
+				})
+			}
+		},
+		// 第二步骤
+		getSscyFn(){
+			this.addcyflag=true
+		},
+		// 徽商
+		bindDateChangea(e) {
+			var val=e.detail.value;
+			this.datainfo.isHs=this.hslist[val].id;
+		},
+		// 所在地区location
+		bindDateChangeb(e) {
+			var val=e.detail.value;
+			this.datainfo.szdqName=this.location[val].dictLabel
+			this.datainfo.szdqId=this.location[val].dictValue
+		},
+		// 投资方式
+		bindDateChangec(e) {
+			var val=e.detail.value;
+			this.datainfo.tzfs=this.tzfslist[val].dictLabel;
+			// this.datainfo.tzfs=this.tzfslist[val].dictValue
+		},
+		// 第一产业
+		bindDateChanged(e) {
+			var val=e.detail.value;
+			this.datainfo.sscy=this.xxcylist[val].dictLabel;
+		},
+		// 十大新兴产业
+		bindDateChangee(e) {
+			var val=e.detail.value;
+			this.datainfo.xxcy=this.xxcylist[val].dictLabel;
+			// this.datainfo.xxcy=this.xxcylist[val].dictValue
+		},
+		// 八大主导产业
+		bindDateChangef(e) {
+			var val=e.detail.value;
+			this.datainfo.zdcy=this.zdcylist[val].dictLabel;
+			// this.datainfo.zdcy=this.zdcylist[val].dictValue
+		},
+		// 项目入库时间
+		bindtimeDateChange(e){
+			this.datainfo.rkTime = e.detail.value
+		},
+		// 开工建设日期
+		bindtimeDateChangea(e){
+			this.datainfo.kgjsTime = e.detail.value
+		},
+		// 建成完工日期
+		bindtimeDateChangeb(e){
+			this.datainfo.jswcTime = e.detail.value
+		},
+		getTimeFn(idx){
+			this.zjidx=idx;
+		},
+		// 到位日期(多个)
+		bindtimeDateChangec(e){
+			var idx=this.zjidx
+			this.zjdwList[idx].dwrq = e.detail.value
+		},
+		proSure(){
+			var that=this;
+			this.$refs.cyform.validate().then(res => {
+				if(that.isLt){
+					that.datainfo.isLt='Y'
+				}else{
+					that.datainfo.isLt='N'
+				}
+				if(that.isFzzlfdcy){
+					that.datainfo.isFzzlfdcy='Y'
+				}else{
+					that.datainfo.isFzzlfdcy='N'
+				}
+				this.addcyflag=false;
+			})
+			
+			
+		},
+		checkboxChangea(e){
+			// var newArr=e.detail.data;
+			// var newArrs=[]
+			// newArr.forEach((ite,idx)=>{
+			// 	if(ite.value==)
+			// 	newArrs[idx]=ite.dictLabel
+			// })
+			// this.projectchose=newArrs
+		},
+		getClose(){
+			this.addcyflag=false;
+		},
+		getAdddzFn(){
+			
+		},
+		// 某文件上传结束回调(成功失败都回调)
+		onuploadEnd(item) {
+			var newobj={}
+			var responseText=JSON.parse(item.responseText)
+			newobj.fjName=responseText.originalFilename;
+			newobj.path=responseText.fileName;
+			this.filelist.push(newobj)
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+		},
+		getDelFj(idx){
+			this.filelist.splice(idx,1)
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+		},
+		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) {
+					     }
+					   });
+				},
+				fail(res) {uni.hideLoading()}
+			})
+		},
+		
+    }
+  }
+</script>
+
+<style lang="scss">
+ page {
+    background-color: #ffffff;
+  }
+
+.inform{padding-top: 30rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;display: flex;align-items: center;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{font-size: 28rpx;color: #41C942;padding-right: 30rpx;display: flex;align-items: center;justify-content: flex-end;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+
+// // 弹窗
+.fixedbox{position: fixed;left:56rpx;right: 56rpx;background: #fff;border-radius: 10rpx;min-height: 468rpx;top: 50%;transform: translateY(-60%);z-index: 20;padding: 48rpx 36rpx 68rpx;max-height: calc(100vh - 200rpx);overflow: auto;box-sizing: border-box;
+.infolist{padding:24rpx 0 24rpx 0;}
+.choseimg{width: 34rpx;height: 34rpx;position: absolute;left: 36rpx;top: 54rpx;z-index: 22;}
+.chebox{position: absolute;right: 36rpx;top:54rpx;display: flex;align-items: center;
+	image{width: 30rpx;height: 32rpx;margin-right: 12rpx;}
+	view{font-size: 32rpx;font-weight: 500;color: #F13800;;}
+}
+.top{position: relative;text-align: center;font-size: 32rpx;font-weight: bold;color: #343434;}
+.boxs{padding: 60rpx 0;
+	.box{display: flex;align-items: center;min-height:100rpx;}
+	.boxcen{flex:1;display: flex;align-items: flex-start;margin-right: 
+	10rpx;
+		&.act{
+			view{color: #FF6400;}
+		}
+		image{width: 32rpx;height: 32rpx;margin-right: 20rpx;flex: 0 0 auto;margin-top: 4rpx;}
+		view{font-size: 32rpx;font-weight: 500;
+color: #666666;}
+	}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ 
+ 
+ .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box{margin: 10rpx 0;padding: 4rpx 0;width: 50%;box-sizing: border-box;}
+ .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-text{color: #343434;font-size: 30rpx;}
+ // .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner{margin-right: 40rpx;}
+ .fixedbox    /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: #FF440B; background-color: #FF440B;}
+ .fixedbox   /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text{color: #343434;}
+  .inform .pl12{margin-right: 10rpx;}
+  .fixedbox .pl12{margin-right: 10rpx;}
+  
+  .inform /deep/ .uni-easyinput__content-textarea{min-height: 200rpx;}
+  
+  
+  
+// 新的
+.delbx{width:44rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;flex:0 0 auto;
+	image{width: 30rpx;height: 30rpx;}
+
+}
+// .boxcen{flex:1;
+// 		&.act{
+// 			view{color: #FF6400;}
+// 		}
+// 		image{width: 32rpx;height: 32rpx;margin-right: 20rpx;margin-top: 4rpx;}
+// 		view{font-size: 32rpx;font-weight: 500;
+// color: #666666;}
+// 	}
+	
+</style>

+ 225 - 0
qs_zhaoshang/pages/work/skproject/dzjelist.vue

@@ -0,0 +1,225 @@
+<template>
+	<view class="allpage">
+		<view class="zhanline"></view>
+		<view class="alllist">
+			<!-- l列表 -->
+			<project-list type='skdwzj'  :datalist="list" :wtdt='wtdt' @getDetail="getDetail"></project-list>
+			
+		</view>
+		<skdwzi-pop :iteminfo="dwzjinfo" :isSh="isSh" :status="status" @getldDelFn="getldDelFn" @proSure="proSure" @getClose="getClose" :addzjdwflag='addzjdwflag'></skdwzi-pop>
+		<!-- 新增 -->
+		<block v-if="checkPermi(['projectV2:dzje:add'])&&isSh==2">
+			<view style="height: 100rpx;"></view>
+			<view class="cluebtn btn2"   @click="getAdddwzi">添加到位资金</view?>
+		</block>
+		
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import {getdzjeList,getputdzjeFn,getdeldzjeFn,getadddzjeFn} from "@/api/work/addsk.js"
+	import skdwziPop from "@/components/popup/skdwzjpop.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	export default{
+		data(){
+			return{
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				itemslist:[],
+				wtdt:'',
+				tabidx:0,
+				date:'',
+				list:[],
+				year:'',
+				name:'',
+				census:'',
+				type:0,
+				status:'update',
+				deptId:this.$store.state.user.deptId,
+				id:"",
+				dwzjinfo:{},
+				addzjdwflag:false,
+				isSh:''
+			}
+		},
+		components:{
+			projectList,skdwziPop
+		},
+		onUnload(){
+			
+		},
+		onLoad(e) {
+			if(e.data){
+				var newobj=JSON.parse(decodeURIComponent(e.data));
+				this.id=newobj.id;
+				this.isSh=newobj.isSh||'1';
+				this.xmmc=newobj.xmmc||''
+				this.getDataFn();
+			}
+			
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			checkPermi, checkRole,
+			getClose(){
+				this.type=0;
+			},
+			getDetail(data){
+				//判断权限
+				if(checkPermi(['projectV2:dzje:edit','projectV2:dzje:remove'])){
+					this.status='update'
+					this.addzjdwflag=true;
+					this.dwzjinfo=data;
+				}
+			},
+			getClose(){
+				this.addzjdwflag=false;
+				this.dwzjinfo={};
+			},
+			getAdddwzi(){
+				this.status='add'
+				this.dwzjinfo={
+					"dwmc":'',//单位名称
+					"zzje":'',//注资金额
+					"dwrq":'',//到位日期
+				};
+				this.addzjdwflag=true
+			},
+			proSure(data){
+				var that=this;
+				var params=JSON.parse(JSON.stringify(data));
+				// params.skId=this.datainfo.skId;
+				// params.xmmc=this.datainfo.xmmc;
+				// params.id=this.dwzjinfo.id
+				// 修改
+				if(this.status=='add'){
+					params.skId=this.id;
+					params.xmmc=this.xmmc;
+					getadddzjeFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast("添加到位资金成功")
+							setTimeout(function(){
+								uni.$emit('refreshdata','dwzj');
+								that.dwzjinfo={};
+								that.pageNum=1;
+								that.reachflag=true;
+								that.list=[];
+								that.getDataFn();
+								that.addzjdwflag=false;
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					getputdzjeFn(params).then(res=>{
+						if(res.code==200){
+							that.$toast("到位资金修改成功")
+							setTimeout(function(){
+								uni.$emit('refreshdata','dwzj');
+								that.pageNum=1;
+								that.reachflag=true;
+								that.list=[];
+								that.getDataFn();
+								that.addzjdwflag=false;
+							},1500)
+						}else{
+							this.$toast(res.msg)
+						}
+					})	
+				}
+				
+				// 新增
+			},
+			getldDelFn(){
+				var params={};
+				var that=this;
+				// params.id=this.dwzjinfo.id;
+				// params.skId=this.id;
+				// var s=[]
+				// s[0]=this.id
+				getdeldzjeFn(this.dwzjinfo.id).then(res=>{
+					if(res.code==200){
+						that.$toast('到位资金删除成功')
+						setTimeout(function(){
+							uni.$emit('refreshdata','dwzj');
+							that.pageNum=1;
+							that.reachflag=true;
+							that.list=[];
+							that.getDataFn()
+							that.addzjdwflag=false;
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					skId:this.id,
+				}
+				getdzjeList(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 lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+ .alllist{padding-top:10rpx ;}
+  // 操作按钮
+  .cluebtn{
+  	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;
+  	&.btn1{background-color: #1FB9F7;flex: 1;}
+  	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+</style>

+ 562 - 0
qs_zhaoshang/pages/work/skproject/skdetail.vue

@@ -0,0 +1,562 @@
+<template>
+	<view class="clued">
+		<view class="pfixed">
+			<uni-nav-bar  left-icon="left" fixed="true" :border='border'  statusBar='true'  title="省库详情" rightWidth='180rpx' @clickRight="clickRight" @clickLeft='getBack'>
+				<block slot="right">
+					<view class="min_top" v-if="checkPermi(['projectV2:dzje:list','projectV2:skxm:remove'])">
+						<image :src="moreimg"></image>
+					</view>
+				</block>
+			</uni-nav-bar>
+			<block >
+				<view class="clued_tong btn flexcc" v-if="datainfo.isSh==2">审核已通过</view>
+				<view class="clued_tong btn1 flexcc" v-if="datainfo.isSh==3">审核未通过</view>
+			</block>
+		</view>
+		<!-- 站位的 -->
+		<uni-nav-bar  left-icon="left" :border='border'   statusBar='true' />
+		<view class="zhanline"></view>
+		<!-- 线索详情 -->
+		<view >
+			<view >
+				<!-- 省库申报信息 -->
+				<view class="cldelista" style="padding-top:40rpx;">
+					<view class="contenta">
+						<view class="tit">徽商项目</view>
+						<view class="txt">{{datainfo.isHs=='Y'?'是':'否'}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目名称</view>
+						<view class="txt">{{datainfo.xmmc}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">统一社会信用代码</view>
+						<view class="txt">{{datainfo.yyzz}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">批准文号</view>
+						<view class="txt">{{datainfo.pzwh}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">所在地区</view>
+						<view class="txt">{{datainfo.szdqName}}</view>
+					</view>
+					<view class="contenta" style="align-items: center;">
+						<view class="tit flex0">所属产业</view>
+						<view class="txt">
+							<view class="txr">
+								<block  v-if="datainfo.sscy">{{getSscyAdr(datainfo.sscy)}};</block>
+								<block  v-if="datainfo.xxcy">{{datainfo.xxcy}};</block>
+								<block  v-if="datainfo.zdcy">{{datainfo.zdcy}};</block>
+								<block  v-if="datainfo.isLt=='Y'">龙头企业;</block>
+								<block  v-if="datainfo.isFzzlfdcy=='Y'">非住宅类房地产业;</block>
+							</view>
+								
+						</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">投资方式</view>
+						<view class="txt">{{datainfo.tzfs}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">项目入库日期</view>
+						<view class="txt">{{datainfo.rkTime}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">开工建设日期</view>
+						<view class="txt">{{datainfo.kgjsTime}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">建成完工日期</view>
+						<view class="txt">{{datainfo.jswcTime}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">总投资金额(万元)</view>
+						<view class="txt">{{datainfo.ztze}}</view>
+					</view>
+					<view class="contenta">
+						<view class="tit">省外投资总额(万元)</view>
+						<view class="txt">{{datainfo.swzj}}</view>
+					</view>
+				</view>
+				<uni-collapse  ref="collapse" v-model="value" @change="changeone" >
+					<view v-for="(ite,idx) in datainfo.zsyzSkSwtzdwList" :key="'swdw-'+idx">
+					<uni-collapse-item title="省外投资单位" class='cldelista'   :border="false" title-border="none">
+						<template v-slot:title>
+							<view class="flexc contentt">
+								<view class="flex0 f16 fw cofe">省外投资单位{{Number(idx)+1}}</view>
+								<!-- <view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+									<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+									<image :src="upimg" ></image>
+								</view> -->
+							</view>
+						</template>
+						<view class="content">
+							<view class="contenta">
+								<view class="tit">单位名称</view>
+								<view class="txt">{{ite.dwmc}}</view>
+							</view>
+							<view class="contenta">
+								<view class="tit">注册资金(万元)</view>
+								<view class="txt">{{ite.zczj}}</view>
+							</view>
+							<view class="contenta">
+								<view class="tit">投资金额(万元)</view>
+								<view class="txt">{{ite.tzje}}</view>
+							</view>
+							<view class="contenta">
+								<view class="tit">所属地区</view>
+								<view class="txt">{{ite.province}}
+								<block v-if="ite.city">
+									/{{ite.city}}
+								</block>
+								
+								</view>
+							</view>
+							<view class="contenta" style="align-items: center;">
+								<view class="tit">单位简介</view>
+								<view class="txt">{{ite.dwjj}}</view>
+							</view>
+						</view>
+					</uni-collapse-item>
+					</view>
+					<view v-for="(ite,idx) in datainfo.zsyzSkDzjeList" :key="'dzqk-'+idx">
+					<uni-collapse-item title="到位资金情况" class='cldelista'   :border="false" title-border="none">
+						<template v-slot:title>
+							<view class="flexc contentt">
+								<view class="flex0 f16 fw cofe">到位资金情况{{Number(idx)+1}}</view>
+								<!-- <view  class="flex1 cldelistz" :class="value[0]==0?'act':''">
+									<view class="cofe f15">{{value[0]==0?'信息折叠':'信息展开'}}</view>
+									<image :src="upimg" ></image>
+								</view> -->
+							</view>
+						</template>
+						<view class="content">
+							<view class="contenta">
+								<view class="tit">单位名称</view>
+								<view class="txt">{{ite.dwmc}}</view>
+							</view>
+							<view class="contenta">
+								<view class="tit">注册资金(万元)</view>
+								<view class="txt">{{ite.zzje}}</view>
+							</view>
+							<view class="contenta">
+								<view class="tit">投资金额(万元)</view>
+								<view class="txt">{{ite.dwrq}}</view>
+							</view>
+						</view>
+					</uni-collapse-item>
+					
+					</view>
+					<uni-collapse-item title="其他信息" class='cldelista'   :border="false" title-border="none">
+						<template v-slot:title>
+							<view class="flexc contentt">
+								<view class="flex0 f16 fw cofe">其他信息</view>
+							</view>
+						</template>
+						<view class="content">
+							<view class="contenta" style="align-items: center;">
+								<view class="tit">项目内容</view>
+								<view class="txt">{{datainfo.xmnr}}</view>
+							</view>
+							<view class="contenta" style="align-items: center;">
+								<view class="tit">存在问题</view>
+								<view class="txt">{{datainfo.czwt}}</view>
+							</view>
+							<view class="contenta" style="align-items: center;">
+								<view class="tit">项目备注</view>
+								<view class="txt">{{datainfo.remark}}</view>
+							</view>
+						</view>
+					</uni-collapse-item>
+				</uni-collapse>
+				<!-- 备注 -->
+				<view class='cldelista cldelistb'>
+					<!-- <view class="contenta">
+						<view class="tit">备注</view>
+						<view class="txt">{{datainfo.remark}}</view>
+					</view> -->
+					<view class="contenta " v-if="datainfo.zsyzFjList">
+						<view class="tit">附件</view>
+						<view class="txt flexcj cldelistbf mb10" v-for="(ite,idx) in datainfo.zsyzFjList" :key='idx'>
+							<view class="flext f16 c6">
+								<view class="imgl">
+									<image :src="wimg" ></image>
+								</view>
+								
+								<view>{{ite.fjName}}</view>
+								</view>
+							<view class="flexc f16 co28 flex0" @click="getDown(ite.path)">
+								<image :src="downimg" class="imgr"></image>
+								预览</view>
+						</view>
+					</view>
+					<!-- <view class="contenta" >
+						<view class="tit">附件</view>
+						<view class="txt flexcj cldelistbf">
+							<view class="flext f16 c6">
+								<image :src="wimg" class="imgl"></image>
+								<view>线索附件信息.docx</view>
+								</view>
+							<view class="flexc f16 co28 flex0">
+								<image :src="downimg" class="imgr"></image>
+								预览</view>
+						</view>
+					</view> -->
+				</view>
+				<!-- 按钮 -->
+				<!-- v-if="(roles=='manage'||roles=='admin')&&fotbtnflag&&datainfo.isSh==1" -->
+				<view class="pfixedb flexc" >
+					<view class="cluebtn btn1" v-if="checkPermi(['projectV2:common:sksh'])&&datainfo.isSh==1" @click="getOperate(2)">审核</view>
+					<view class="cluebtn btn2" v-if="checkPermi(['projectV2:skxm:edit'])&&datainfo.isSh!=2" @click="getUpdate">修改信息</view>
+					<!-- v-if="datainfo.isSh==2" -->
+					<view class="cluebtn btn2" v-if="checkPermi(['projectV2:dzje:add'])&&datainfo.isSh==2"  @click="getAdddwzi">添加到位资金</view?>
+				</view>
+			</view>
+		</view>
+		
+		<!-- 弹窗 -->
+		<pop-up :type="type" @getClose='getClose' @getyjSubmit='getyjSubmit'></pop-up>
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="moreflag"></view>
+		<view class="more_fixed" v-if="moreflag">
+			<view class="more_fixedt">
+
+				<!-- 专班跟进 -->
+				<!-- v-if="checkPermi(['projectV2:skxm:remove'])" -->
+				<!-- <view  @click="getshprogress">审核进度</view> -->
+				<view v-if="checkPermi(['projectV2:skxm:remove'])" @click="getDelFn">删除</view>
+				<view v-if="checkPermi(['projectV2:dzje:list'])"  @click="getlookdzje">到位资金情况</view>
+				<!-- 查看批示 -->
+			</view>
+			<view class="more_fixedb" @click="getClose">取消</view>
+		</view>
+		<skdwzi-pop :iteminfo="dwzjinfo" @proSure="proSure" @getClose="getClose" :addzjdwflag='addzjdwflag'></skdwzi-pop>
+	</view>
+</template>
+
+<script>
+	import tabList from "@/components/toptab/tab.vue"
+	import { getToken } from '@/utils/auth' 
+	import popUp from "@/components/popup/popup.vue"
+	import skdwziPop from "@/components/popup/skdwzjpop.vue"
+	import { getskxmDetail,getskxmSh,getadddzjeFn,getskcyListFn,getdelskxmFn} from '@/api/work/addsk.js'
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import config from '@/config.js';
+	const baseUrl = config.baseUrl;
+	export default{
+		data(){
+			return{
+				border:false,
+				tablist:[{tit:'线索',val:1},{tit:'签约',val:2},{tit:'开工',val:3},{tit:'投产',val:4},],
+				active: 0,
+				list1: [{title: '线索'}, {title: '签约'}, {title: '开工'}, {title: '投产'}],
+				value:[],
+				valuetwo:[],
+				content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
+				showArrow:false,
+				type:0,//弹窗类型 1暂存/消耗 2审核意见 3批示
+				upimg:require('@/static/images/index/up.png'),
+				wimg:require('@/static/images/index/wicon.png'),
+				downimg:require('@/static/images/index/down.png'),
+				id:'',
+				datainfo:{},
+				roles:this.$store.state.user.roles[0],
+				fotbtnflag:true,
+				deptId:this.$store.state.user.deptId,
+				moreimg:require("@/static/images/index/more.png"),
+				moreflag:false,
+				
+				addzjdwflag:false,
+				dwzjinfo:{
+					"dwmc":'',//单位名称
+					"zzje":'',//注资金额
+					"dwrq":'',//到位日期
+					},
+				cdycydataTree:[],
+				sscyresult:'',
+			}
+		},
+		components:{
+			tabList,popUp,skdwziPop
+		},
+		onUnload(){
+			uni.$off('refreshdata')
+		},
+		onLoad(e) {
+			this.id=e.id;
+			uni.$on('refreshdata',(e) => {
+				this.addinfotype=-1;
+				this.datainfo='';
+				this.getDataFn();
+				if(e&&e=='dwzj'){
+					
+				}else{
+					uni.$emit('refreshdatalistsk');
+				}
+				
+			})
+			this.getskcyListFn();
+			this.getDataFn()
+		},
+		methods:{
+			checkPermi, checkRole,
+			getskcyListFn(){
+				getskcyListFn().then(res=>{
+					// 循环赋值
+					this.cdycydataTree=res.data
+				})
+			},
+			getSscyAdr(value){
+				var actions = [];
+				var datas=this.cdycydataTree;
+				Object.keys(datas).some((key) => {
+					if (datas[key].skcyId == ('' + value)) {
+						actions.push(datas[key].deptName);
+						return true;
+					}
+				})
+				return actions.join('');
+			},
+			getDataFn(){
+				var that=this;
+				getskxmDetail(this.id).then(res=>{
+					if(res.code==200){
+						this.datainfo=res.data;
+						
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			// 暂缓
+			getOperate(e){
+				// 审核
+				this.type=Number(e)
+			},
+			//审核
+			getYuShenFn(){
+				this.$tab.navigateTo('/pages/work/xminquiry')
+			},
+			getshprogress(){
+				this.moreflag=false;
+				// if(checkPermi(['projectV2:shyj:list'])){
+				// 	this.$tab.navigateTo('/pages/work/shprogress?id='+this.id)
+				// }else{
+				// 	return
+				// }
+			},
+			// 资金情况
+			getlookdzje(){
+				this.moreflag=false;
+				var newobj={
+					id:this.id,
+					isSh:this.datainfo.isSh,
+					xmmc:this.datainfo.xmmc
+				}
+				this.$tab.navigateTo('/pages/work/skproject/dzjelist?data='+encodeURIComponent(JSON.stringify(newobj)))
+			},
+			getAdddwzi(){
+				this.dwzjinfo={
+					"dwmc":'',//单位名称
+					"zzje":'',//注资金额
+					"dwrq":'',//到位日期
+				};
+				this.addzjdwflag=true
+			},
+			proSure(data){
+				var that=this;
+				var params=JSON.parse(JSON.stringify(data))
+				params.skId=this.datainfo.id,
+				params.xmmc=this.datainfo.xmmc,
+				getadddzjeFn(params).then(res=>{
+					if(res.code==200){
+						that.$toast("添加到位资金成功")
+						setTimeout(function(){
+							that.addzjdwflag=false;
+							that.dwzjinfo={};
+							that.getDataFn()
+							// 分派可能有两种状态
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getClose(){
+				this.type=0;
+				this.moreflag=false;
+				this.addzjdwflag=false;
+			},
+			getDelFn(){
+				var that=this;
+				this.moreflag=false;
+				uni.showModal({
+					title: '确认删除',
+					content: "是否确认删除该条信息",
+					cancelText: '取消删除',
+					confirmText: '确认删除',
+					success: function(res) {
+						if (res.confirm) {
+							getdelskxmFn(that.id).then(res=>{
+								if(res.code==200){
+									that.$toast('删除成功');
+									setTimeout(function(){
+										uni.$emit('refreshdatalistsk');
+										uni.navigateBack({delta:1})
+									},1500)
+									
+								}else{
+									that.$toast(res.msg);
+								}
+							})
+						} else if (res.cancel) {
+							// console.log('用户点击取消');
+						}
+					}
+				});
+			},
+			getyjSubmit(data){
+				var params={};
+				var that=this;
+				// return
+				 var newObj=JSON.parse(JSON.stringify(data))
+				
+				 if(newObj.shjg==2){
+					 params.isSh='2'
+				 }else{
+					params.isSh='3'
+				 }
+				 params.shJy=newObj.shyj;
+				 params.id=this.datainfo.id;
+				getskxmSh(params).then(res=>{
+					if(res.code==200){
+						that.$toast("审核提交成功")
+						setTimeout(function(){
+							that.getDataFn()
+							that.type=0;
+							uni.$emit('refreshdatalistsk');
+							that.fotbtnflag=false;
+							// 分派可能有两种状态
+						},1500)
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			radioChange(){
+				
+			},
+			getUpdate(){
+				var obj={
+					id:this.datainfo.id,
+					pagetype:'update'
+				}
+				this.$tab.navigateTo('/pages/work/skproject/addsk?data='+encodeURIComponent(JSON.stringify(obj)))
+			},
+			clickRight(){
+				if(checkPermi(['projectV2:dzje:list','projectV2:skxm:remove'])){
+					this.moreflag=true;
+				}
+				
+				// this.$tab.navigateTo('/pages/work/shprogress')
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			changeone(e){
+				// console.log(e,9)
+			},
+			getDown(e){
+				var url=baseUrl+e;
+				// 提示
+				uni.showLoading({
+					title: '加载中'
+				});
+				uni.downloadFile({
+					url: url,//文件的下载路径
+					success(result) {
+						uni.hideLoading()
+						 var filePath = result.tempFilePath;
+						    uni.openDocument({
+						      filePath: filePath,
+						      showMenu: true,
+						      success: function (res) {
+						        console.log('打开文档成功');
+						      }
+						    });
+					},
+					fail(res) {
+						uni.hideLoading()
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+.clued{min-height: 100vh;background-color: #fff;box-sizing: border-box;padding-bottom: 100rpx;}
+.clued /deep/ 	.uni-nav-bar-right-text{font-size: 34rpx; color: #1FB9F7 !important;font-weight: 500;padding-right: 14rpx;}
+.clued /deep/ .uni-steps__row-circle{margin: 0;width: 20rpx;height: 20rpx;}
+.clued /deep/ .uni-steps__row-check{margin: 0;}
+.clued /deep/ .uni-steps__row-title{font-size: 30rpx;font-weight: 500;color: #A6A6A6;}
+
+.cldetail{padding-top: 70rpx;}
+.cldelist{padding: 48rpx 28rpx 36rpx;border-bottom: 2rpx solid #E5E5E5;}
+.cldelista{
+	padding: 20rpx 28rpx;
+	border-top: 2rpx solid #E5E5E5;
+	&:first-of-type{border-top: none;}
+	.contentt{padding:30rpx 0rpx;
+		.cldelistz{display: flex;align-items: center;justify-content: flex-end;
+			image{width: 26rpx;height: 20rpx;margin-left: 20rpx;transition: all .5s; }
+		}
+	}
+	// .content{padding: 0rpx 28rpx 40rpx 28rpx;}
+	.contenta{padding: 22rpx 0;display: flex;justify-content: space-between;margin-bottom: 20rpx;
+		.tit{font-size: 32rpx;font-weight: bold;color: #343434;margin-right: 20rpx;flex: 0 0 auto;}
+		.txt{font-size: 32rpx;color: #666666;}
+	}
+	&.cldelistb{
+		.contenta{display: block;margin-top: 0;
+			.tit{margin-bottom: 20rpx;}
+		}
+	}
+	.cldelistbf {
+		image{margin-right: 18rpx;flex: 0 0 auto;}
+		.imgl{width: 40rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 16rpx;
+			image{width: 38rpx;height: 30rpx;}
+			}
+		.imgr{width: 36rpx;height: 32rpx;}
+	}
+}
+
+// 操作按钮
+.cluebtn{
+	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;
+	&.btn1{background-color: #1FB9F7;width: 375rpx;flex: 0 0 auto;}
+	&.btn2{background-color:#FF6400;flex: 1;}
+}
+
+
+// 审核通过
+// .clued_tong{width: 100%;height: 70rpx;background: #C0FFC0;color: #28C529;font-size: 32rpx;font-weight: 500;}
+
+// 审核通过
+.clued_tong{width: 100%;height: 70rpx;font-size: 32rpx;font-weight: 500;
+&.btn{background: #C0FFC0;color: #28C529;}
+&.btn1{background: #ffcaac;color: #ff440b;}
+}
+
+// 消息
+.min_top{position: relative;width: 44rpx;height: 44rpx;display: flex;align-items: center;justify-content: center;margin-right: 32rpx;
+	image{width: 44rpx;height: 34rpx;}
+	
+}
+
+
+
+</style>

+ 155 - 0
qs_zhaoshang/pages/work/tslist.vue

@@ -0,0 +1,155 @@
+<template>
+	<view class="allpage">
+		<!-- <view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch' :name="name"></tab-searchone>
+		</view> -->
+		<view class="zhanline"></view>
+		<view class="alllist">
+			<!-- <time-year @bindDateChange="bindDateChange" ></time-year> -->
+			<!-- l列表 -->
+			<project-list type='tslist' :datalist="list" :wtdt='wtdt' @getXmjzFn="getXmjzFn"></project-list>
+			
+		</view>
+		<!-- 弹窗 -->
+		<pop-up :type="poptype" @getClose='getClose'  @getXmSubmitFn='getXmSubmitFn'></pop-up>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import {gettslist,getjzqkFn} from "@/api/work/clue.js"
+	import popUp from "@/components/popup/popup.vue"
+	export default{
+		data(){
+			return{
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				itemslist:[],
+				wtdt:'',
+				tabidx:0,
+				date:'',
+				list:[],
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				census:'',
+				deptId:this.$store.state.user.deptId,
+				poptype:0,
+				datainfo:{
+					xmId:'',
+					xmbh:'',
+					xmmc:'',
+				}
+			}
+		},
+		components:{
+			projectList,tabSearchone,timeYear,popUp
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad(e) {
+			this.getDataFn();
+		},
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			getClose(){
+				this.poptype=0;
+			},
+			getXmjzFn(data){
+				this.datainfo.xmId=data.id;
+				this.datainfo.xmbh=data.xmbh;
+				this.datainfo.xmmc=data.xmmc;
+				this.poptype=4;
+			},
+			getXmSubmitFn(data){
+				var that=this;
+				var params=JSON.parse(JSON.stringify(data))
+				params.xmId=this.datainfo.xmId;
+				params.xmmc=this.datainfo.xmmc; 
+				params.xmbh=this.datainfo.xmbh;
+				getjzqkFn(params).then(res=>{
+					if(res.code==200){
+						that.$toast('添加项目进展成功')
+						setTimeout(function(){
+							that.poptype=0;
+							that.pageNum=1;
+							that.reachflag=true;
+							that.list=[];
+							that.getDataFn()
+						},1500)									
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+				}
+				gettslist(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 lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+ .alllist{padding-top:10rpx ;}
+  // 操作按钮
+  .cluebtn{
+  	display: flex;align-items: center;justify-content: center;font-weight: bold;font-size: 32rpx;color: #ffff;height: 100rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;
+  	&.btn1{background-color: #1FB9F7;flex: 1;}
+  	&.btn2{background-color:#FF6400;flex: 1;}
+  }
+</style>

+ 166 - 0
qs_zhaoshang/pages/work/wtitem.vue

@@ -0,0 +1,166 @@
+<template>
+	<view class="allpage">
+		<view class="listtop pfixed">
+			<tab-searchone @getSearch='getSearch'></tab-searchone>
+			<time-year @bindDateChange="bindDateChange" :timedate="time"></time-year>
+			<!-- <tab-list :tablist='tablist' :tabidx="tabidx" @getCheck="goCheck" :height='130'></tab-list> -->
+		</view>
+		<view class="zhanline"></view>
+		<view class="alllist">
+			
+			<!-- l列表 -->
+			<project-list :datalist="list" :wtdt="wtdt" type='wenti' @getDetail='goDetail'></project-list>
+		</view>
+	</view>
+</template>
+
+<script>
+	import projectList from "@/components/projectlist/list.vue"
+	import tabList from "@/components/toptab/tab.vue"
+	import tabSearchone from "@/components/toptab/searchone.vue"
+	import timeYear from "@/components/timedata/timeyear.vue"
+	import { getshyjwtList} from '@/api/work/clue.js'
+	export default{
+		data(){
+			return{
+				upimg:require("@/static/images/index/up.png"),
+				tabidx:0,
+				year:'',
+				list:[],
+				// tablist:[{tit:'全部',val:0,txt:300},{tit:'超期审核',val:1,txt:300},{tit:'严重滞后',val:2,txt:300}],
+				
+				pageSize: 10,
+				pageNum: 1,
+				reachflag:true,
+				wtdt:'',
+				year:'',
+				beginTime:'',
+				endTime:'',
+				name:'',
+				wtdt:'',
+				deptId:this.$store.state.user.deptId,
+				time:""
+			}
+		},
+		components:{
+			projectList,tabList,tabSearchone,timeYear
+		},
+		onUnload(){
+			uni.$off('refreshdatalist')
+		},
+		onLoad(e) {
+			uni.$on('refreshdatalist',(e) => {
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn();
+			})
+			var y='';
+			if(e.time){
+				y=e.time
+			}else{
+				let date = new Date();
+				y = date.getFullYear();
+			}
+			this.beginTime=y+'0101';
+			this.endTime=y+'1231';
+			this.time=y;
+			this.getDataFn()
+		},
+		// 审核意见 传2
+		onReachBottom() {
+			if (this.reachflag) {
+				this.pageNum++
+				this.getDataFn()
+			}
+		},
+		methods:{
+			bindDateChange(e){
+				this.year=e;
+				this.beginTime=e+'0101';
+				this.endTime=e+'1231';
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goCheck(data){
+				this.tabidx=data;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+			goDetail(e){
+				this.$tab.navigateTo('/pages/work/cluedetails?id='+e.id)
+			},
+			getDataFn(){
+				var params={
+					pageSize:this.pageSize,
+					pageNum: this.pageNum,
+					xmxsmc:this.name,
+					shjg:2,
+					deptId:this.deptId
+				}
+				params['params[beginTime]']=this.beginTime
+				params['params[endTime]']=this.endTime
+				getshyjwtList(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)
+					}
+				})
+			},
+			getSearch(e){
+				this.name=e;
+				this.reachflag=true;
+				this.pageNum=1;
+				this.list=[];
+				this.getDataFn()
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.allpage{min-height: 100vh;background: #ffffff;padding-top:190rpx;box-sizing: border-box;}
+.listtopa{border: 6rpx solid #FD5001;border-radius: 36rpx;height:72rpx;box-sizing: border-box;padding:0 140rpx 0 32rpx ;position: relative;
+ input{}
+ image{width: 30rpx;height: 30rpx;margin-right: 24rpx;}
+ .btn{background: #FA5F03;border-radius: 36rpx;width: 140rpx;position: absolute;right: -2rpx;top: -2rpx;bottom:-2rpx;}
+ }
+ .listtopb{
+	 .tit{flex: 1;height: 130rpx;display: flex;flex-direction: column;justify-content: center;position: relative;
+	 view{text-align: center;}
+	 .tits{color: #666666;}
+	 .txt{color: #aaaaaa;}
+	 &.act{
+		 &::after{content: '';width: 100rpx;height: 6rpx;background:#FE5706 ;position: absolute;left: 50%;margin-left: -50rpx;bottom: 0;}
+		.tits{color: #343434;}
+		.txt{color: #FE5706;} 
+	 }
+	 }
+ }
+
+ .alllist{padding-top:10rpx ;}
+ 
+ 
+</style>

+ 341 - 0
qs_zhaoshang/pages/work/xminquiry.vue

@@ -0,0 +1,341 @@
+<template>
+	<view class="xmbox navbar">
+		<!-- 自定义头部 -->
+		<view class="pfixed">
+			<uni-nav-bar  left-icon="left" fixed="true" :border='border'   statusBar='true' :rightText="checkPermi(['projectV2:dept:list'])?'历史记录':''" title="项目分派" rightWidth='180rpx' @clickRight="clickRight" @clickLeft='getBack'/>
+			
+			<view class=" topfixed">
+				<view class="flexcc flex1" :class="tabidx==0?'act':''" @click="getTab(0)"><view class="tab f16 c6 flexc">要素部门</view></view>
+				<view class="flexcc flex1" :class="tabidx==1?'act':''" @click="getTab(1)"><view class="tab f16 c6 flexc">承接地</view></view>
+				<view class="flexcc flex1" :class="tabidx==2?'act':''" @click="getTab(2)"><view class="tab f16 c6 flexc">招商引荐单位</view></view>
+			</view>
+		</view>
+		<!-- 站位的 -->
+		<uni-nav-bar  left-icon="left" :border='border'   statusBar='true' />
+		<view class='zhanline'></view>
+		<!-- 要素部门 -->
+		<view class="xmmain" v-show="tabidx==0">
+			<uni-data-checkbox :wrap='true'   :map="map"   selectedTextColor='#343434' multiple v-model="cityvalue" :localdata="cityrange" @change="checkboxChangecity"></uni-data-checkbox>
+		</view>
+		<!-- 承接地 单选-->
+		<view class="xmmain" v-show="tabidx==1">
+			<uni-data-checkbox :wrap='true'  :map="map"  selectedTextColor='#343434'  v-model="adrvalue" :localdata="adrrange" @change="checkboxChangeadr" ></uni-data-checkbox>
+		</view>
+		<!-- 市直中心 -->
+		<view class="xmmain" v-show="tabidx==2">
+			<bartree-picker ref="treePicker" :multiple='true' @select-change="selectChange" title="选择招商引荐单位"
+        :localdata="localdata" valueKey="id" textKey="label" childrenKey="children"></bartree-picker>
+		</view>
+		<view class="pfixedb flexc">
+			<view class="flex0 xmbtn f17 cof4 btn1" @click="allChoose" v-if="tabidx==0">全选</view>
+			<view class="flex0 xmbtn f17 cof4 btn1" @click="getChoose" v-else>清除</view>
+			<view class="flex1 xmbtn f17 cf btn2" @click="getConfirm">确认</view>
+		</view>
+		<!-- 弹窗 -->
+		<view class="bgbox" @click="getClose" v-if="hisflag"></view>
+		<view class="fixedbox flexdc" style="padding: 48rpx 0 0;" v-if="hisflag">
+			<image :src="closeimg" class="choseimg" @click="getClose"></image>
+			<view class="top mb20">历史记录</view>
+				<!-- 步骤条 -->
+				<view class="steps" v-if="hisdeptList.length">
+					<view class="lssteplist" v-for="(ite,idx) in hisdeptList" :key='idx'>
+						<view class="stepcir"></view>
+						<view class="flex1">
+							<!-- <view class="mb20">
+								<view class="f16 c34 fw mb10 lh22">历史预审时间</view>
+								<view class="f14 c6">{{ite.deptType}}</view>
+							</view> -->
+							<view class="mb10 flexcj">
+								<view class="f16 c34 fw lh22 flex0">部门名称</view>
+								<view class="f15 c6">{{ite.deptName}}</view>
+							</view>
+							<view class="mb10 flexcj">
+								<view class="f16 c34 fw lh22 flex0">审核结果</view>
+								<view class="f15 c6 f500" v-if="ite.shjg==1">待审核</view>
+								<view class="f15 c6 f500" v-if="ite.shjg==2">已通过</view>
+								<view class="f15 c6 f500" v-if="ite.shjg==3">未通过</view>
+							</view>
+							<view v-if="ite.shyj" class="flexcj">
+								<view class="f16 c34 fw flex0">审核意见</view>
+								<view class="f15 c6">{{ite.shyj}}</view>
+							</view>
+						</view>
+					</view>
+				</view>
+				<no-data :notxt='notxt' :padtop="padtop" v-else></no-data>
+		</view>
+	</view>
+</template>
+
+<script>
+	
+	import {gettreeselect,getfgwtreeFn} from "@/api/system/user.js"
+	import { getCommonXszp,getdeptList } from '@/api/work/clue.js'
+	import noData from "@/components/nodata/nodata.vue"
+	import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+	import bartreePicker from "@/components/ba-tree-picker/ba-tree-picker.vue"
+	import config from '@/config.js';
+	const baseUrl = config.baseUrl;
+	export default{
+		components:{
+			noData,bartreePicker
+		},
+		data(){
+			return{
+				tabidx:0,
+				border:false,
+				
+				cityallChecked:false,
+				adrallChecked:false,
+				map:{text:'label',value:'id'},
+				xmId:'',
+				xmbh:'',
+				xmmc:'',
+				deptId:this.$store.state.user.deptId,
+				closeimg:require('@/static/images/close.png'),
+				notxt:'暂无历史记录',
+				padtop:40,
+				hisflag:false,
+				cityvalue: [],
+				adrvalue: '',
+				cityrange: [],
+				adrrange: [],
+				hisdeptList:[],
+				selectValue:[],//市值部门
+				citycheckArr:[],//选中的要素部门
+				adrcheckArr:'',//选中的承接地
+				localdata:[],//市值单位
+			}
+		},
+		onLoad(e) {
+			var newObj=JSON.parse(decodeURIComponent(e.data))
+			this.xmId=newObj.xmId;
+			this.xmbh=newObj.xmbh;
+			this.xmmc=newObj.xmmc;
+			// this.adrrange=this.localdata[0];
+			this.gettreeselect()
+		},
+		methods:{
+			checkPermi, checkRole,
+			getdeptList(){
+				var params={
+					xmbh:this.xmbh,
+					xmId:this.xmId,
+					isDel:'Y',
+					deptType:'1,2,3'
+				}
+				getdeptList(params).then(res=>{
+					if(res.code==200){
+						this.hisdeptList=res.rows;
+						// if(res.rows.length){
+						// 	var newArr=res.rows;
+						// 	var newArrs=[];
+						// 	newArr.forEach(ite=>{
+						// 		newArrs.push(ite.deptName)
+						// 	})
+						// 	console.log(newArrs,8)
+						// }
+
+						// console.log(this.hisdeptList,7)
+					}else{
+						this.$toast(res.msg)
+					}
+					
+				})
+			},
+			selectChange(e){
+				this.selectValue=e
+			},
+			gettreeselect(){
+				// 市值部门102  承接地103
+				//线下 218   线上211
+				var url=baseUrl;
+				var parentId=''
+				if(url.indexOf('https://qszs.qs163.cn')!=-1){
+					parentId=211
+				}else{
+					parentId=218
+				}
+				var params={
+					parentId:parentId
+				}
+				getfgwtreeFn(params).then(res=>{
+					if(res.code==200){
+						if(res.data&&res.data.length){
+							this.localdata=res.data;
+							var neArr=res.data
+							for(var i=0;i<neArr.length;i++){
+								if(neArr[i].id=='201'){
+									this.cityrange=neArr[i].children
+								}
+								if(neArr[i].id=='103'){
+									this.adrrange=neArr[i].children
+								}
+							}
+						}
+						
+						// this.list=res.rows
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			},
+			getTab(idx){
+				this.tabidx=idx
+			},
+			getBack(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+			clickRight(){
+				if(checkPermi(['projectV2:dept:list'])){
+					this.hisflag=true;
+					this.getdeptList()
+				}else{
+					return
+				}
+			},
+			getClose(){
+				this.hisflag=false
+			},
+			checkboxChangecity(e){
+				console.log(e)
+				this.citycheckArr=e.detail.data;
+				// this.checkedArr = e.detail.value;
+				// 如果选择的数组中有值,并且长度等于列表的长度,就是全选
+				if(this.cityvalue.length>0 && this.cityvalue.length==this.cityrange.length){
+					this.cityallChecked=true;
+				}else{
+					this.cityallChecked=false;
+				}
+			},
+			checkboxChangeadr(e){
+				this.adrcheckArr=e.detail.data;
+			},
+			getChoose(){
+				this.adrvalue='';
+				this.adrcheckArr='';
+			},
+			// 全选事件
+			allChoose(e){
+				if(this.cityallChecked){
+					this.cityallChecked=false;
+					this.cityvalue=[];
+					this.citycheckArr=[];
+				}else{
+					this.cityallChecked=true;
+					for(let item of this.cityrange){
+						let itemVal=Number(item.id);
+						if(!this.cityvalue.includes(itemVal)){
+							this.cityvalue.push(itemVal);
+							this.citycheckArr.push(item);
+						}
+					}	
+				}
+				// if(this.tabidx==0){
+					
+				// }else{
+				// 	if(this.adrallChecked){
+				// 		this.adrallChecked=false;
+				// 		this.adrvalue=[];
+				// 	}else{
+				// 		this.adrallChecked=true;
+				// 		for(let item of this.adrrange){
+				// 			let itemVal=Number(item.value);
+				// 			if(!this.adrvalue.includes(itemVal)){
+				// 				this.adrvalue.push(itemVal);
+				// 			}
+				// 		}	
+				// 	}
+				// }
+			},
+			getConfirm(){
+				
+				// selectValue:[],//市值部门
+				// citycheckArr:[],//选中的要素部门
+				// adrcheckArr:'',//选中的承接地
+				var ysbmList=[];
+				var cjdList=[];
+				var yjdwList=[];
+				var citycheckArr=this.citycheckArr;
+				var adrcheckArr=this.adrcheckArr||'';
+				var yjdwcheckArr=this.selectValue||[];
+				if(!adrcheckArr){
+					this.$toast('请选择分派承接地')
+					return
+				}
+				// 要素部门,
+				citycheckArr.forEach((ite,idx)=>{
+					var obj={}
+					obj.deptId=ite.id;
+					obj.deptName=ite.label;
+					obj.xmId=this.xmId;
+					obj.xmbh=this.xmbh;
+					obj.xmmc=this.xmmc;
+					ysbmList[idx]=obj
+				})
+				// 承接地
+				var cityobj={}
+				cityobj.deptId=adrcheckArr.id;
+				cityobj.deptName=adrcheckArr.label;
+				cityobj.xmId=this.xmId;
+				cityobj.xmbh=this.xmbh;
+				cityobj.xmmc=this.xmmc;
+				cjdList.push(cityobj)
+				// 引荐单位
+				yjdwcheckArr.forEach((ite,idx)=>{
+					var obj=ite;
+					obj.xmId=this.xmId;
+					obj.xmbh=this.xmbh;
+					obj.xmmc=this.xmmc;
+					yjdwList[idx]=obj;
+				})
+				var params={
+					xmId:this.xmId,
+					xmbh:this.xmbh,
+					xmmc:this.xmmc,
+					ysbmList:ysbmList,
+					cjdList:cjdList,
+					yjdwList:yjdwList
+				}
+				// console.log(params)
+				// return
+				getCommonXszp(params).then(res=>{
+					if(res.code==200){
+						this.$toast('分派成功')
+						setTimeout(function(){
+							uni.$emit('refreshdata');
+							uni.navigateBack({delta: 1});
+						},1200)
+						
+					}else{
+						this.$toast(res.msg)
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+.topfixed{display: flex;align-items: center;
+	.act .tab::after{width: 100%;height: 6rpx;background: #FE5706;content: '';position: absolute;left: 0;right: 0;bottom: 0;}
+	.act .tab{color: #333333;}
+	.tab{position: relative;height: 90rpx;}
+}	
+.xmbox{padding-top: 90rpx;background:#ffffff;padding-bottom: 120rpx;min-height: 100vh;box-sizing: border-box;}
+.zhanline{height: 24rpx;background-color: #F2F2F2;}
+.xmmain{background: #ffffff;padding-left: 48rpx;}
+.xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box{padding: 44rpx 0;border-bottom: 2rpx solid  #E5E5E5;margin: 0;
+  &:last-of-type{border-bottom: none;}}
+ 
+ .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-text{color: #343434;font-size: 34rpx;font-weight: bold;}
+.xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box .checkbox__inner{margin-right: 40rpx;}
+.xmmain  /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checkbox__inner{border-color: #FF440B; background-color: #FF440B;}
+ .xmmain /deep/ .uni-data-checklist .checklist-group .checklist-box.is--default.is-checked .checklist-text{color: #343434;}
+.xmbtn{height: 100rpx;display: flex;align-items: center;justify-content: center;
+ &.btn1{width: 200rpx;}
+ &.btn2{background-color: $uni-color-fa;}
+}
+</style>

+ 653 - 0
qs_zhaoshang/pages/work/yinpages/addcontract.vue

@@ -0,0 +1,653 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform '  ref="form" :rules="rules" :value="datainfo" v-show="type==1">
+	  			<view class="info_tit">签约信息</view>
+	  			<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目名称</view>
+	  			  	<input  placeholder="请输入项目名称" v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+	  			  </view> 
+	  			</uni-forms-item>
+				<view class="tice">填写新注册企业名称+已办项目</view>
+	  			<uni-forms-item name="dfqyr" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>对方签约人</view>
+	  			  	<input  placeholder="请输入对方签约人信息" v-model="datainfo.dfqyr"   class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				<view class="tice">填写信息包含单位名称、职务及姓名,用“;”隔开</view>
+	  			<uni-forms-item name="wfqyr" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>我方签约人</view>
+	  			  	<input  placeholder="请输入我方签约人信息" v-model="datainfo.wfqyr"    class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				 <view class="tice">填写信息包含单位名称、职务及姓名,用“;”隔开</view>
+	  			<uni-forms-item name="qyrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>签约日期</view>
+	  			  	<picker mode="date" :value="datainfo.qyrq" :end="currentdate" class="infolist_a" @change='bindDateChangetimea'>
+	  					<view :class="datainfo.qyrq?'':'f16 co80'">{{datainfo.qyrq||"请选择签约日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+				 <view class="tice">实际合同签订日期</view>
+	  			<uni-forms-item name="tbrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>填报日期</view>
+	  			  	<picker mode="date" :value="datainfo.tbrq" :end="currentdate" class="infolist_a" @change='bindDateChangetimeb'>
+	  					<view :class="datainfo.tbrq?'':'f16 co80'">{{datainfo.tbrq||"请选择填报日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			
+	  			<uni-forms-item name="xytzely" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>协议投资类型</view>
+	  				<picker  range-key='dictLabel' :value="incaindex" :range="investmentca" class="infolist_a" @change='bindDateChangedanb'>
+	  					<view :class="datainfo.xytzely?'':'f16 co80'">{{datainfo.xytzely||"请选择协议投资类型"}}</view>
+	  				</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			<uni-forms-item name="xytze" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>协议投资额(万元)</view>
+	  			  	<input  placeholder="请输入协议投资额" type="number" v-model="datainfo.xytze"    class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				<uni-forms-item name="swzj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">市外资金(万元)</view>
+				  	<input  placeholder="请输入市外资金" type="number" v-model="datainfo.swzj"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="gdzctze" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>固定资产投资额(万元)</view>
+				  	<input  placeholder="请输入固定资产投资额" type="number" v-model="datainfo.gdzctze"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmgjrxm" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目跟进人</view>
+				  	<input  placeholder="请输入项目跟进人" v-model="datainfo.xmgjrxm"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmgjrzw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目跟进人职务</view>
+				  	<input  placeholder="请输入项目跟进人职务" v-model="datainfo.xmgjrzw"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmgjrsjh" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目跟进人联系方式</view>
+				  	<input  placeholder="请输入项目跟进人联系方式" v-model="datainfo.xmgjrsjh"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xmszd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>项目所在地</view>
+				  	<input  placeholder="请输入项目所在地" v-model="datainfo.xmszd"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="tice">园区或乡镇</view>
+				<uni-forms-item name="sshy" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>所属行业</view>
+					<picker  range-key='dictLabel' :value="industryindex" :range="industry" class="infolist_a" @change='bindDateChangedana'>
+						<view :class="datainfo.sshy?'':'f16 co80'">{{datainfo.sshy||"请选择所属行业"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tzfs" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投资方式</view>
+					<picker  range-key='dictLabel' :value="inmoindex" :range="investmentmode" class="infolist_a" @change='bindDateChangedanc'>
+						<view :class="datainfo.tzfs?'':'f16 co80'">{{datainfo.tzfs||"请选择投资方式"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jsfs" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>建设方式</view>
+					<picker  range-key='dictLabel' :value="constindex" :range="construction" class="infolist_a" @change='bindDateChangedand'>
+						<view :class="datainfo.jsfs?'':'f16 co80'">{{datainfo.jsfs||"请选择建设方式"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sfys" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>是否宜商</view>
+					<picker  range-key='dictLabel' :value="cyindex" :range="cylist" class="infolist_a" @change='bindDateChangeb'>
+						<view :class="sfys?'':'f16 co80'">{{sfys||"请选择是/否"}}</view>
+					</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jsnr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>建设内容</view>
+				  	<input  placeholder="请输入建设内容" v-model="datainfo.jsnr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlcf" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">租赁厂房(平方米)</view>
+				  	<input  placeholder="请输入租赁厂房面积" type="number" v-model="datainfo.zlcf"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="gdmj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">供地面积(亩)</view>
+				  	<input  placeholder="请输入供地面积" type="number" v-model="datainfo.gdmj"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="lxrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>立项日期</view>
+				  	<picker mode="date" :value="datainfo.lxrq" class="infolist_a" @change='bindDateChangetimec'>
+						<view :class="datainfo.lxrq?'':'f16 co80'">{{datainfo.lxrq||"请选择立项日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nkgrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟开工日期</view>
+				  	<picker mode="date" :value="datainfo.nkgrq" class="infolist_a" @change='bindDateChangetimed'>
+						<view :class="datainfo.nkgrq?'':'f16 co80'">{{datainfo.nkgrq||"请选择拟开工日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+	  			<view class="infobtn flexcc cf f16 f500" @click="getNext">下一步</view>
+	  		</uni-forms>
+			<!-- 下一步 -->
+			<uni-forms class='inform' ref="twoform" :rules="tworules" :value="datainfo" v-show="type==2">
+				<view class="info_tit">企业信息</view>
+				<uni-forms-item name="zcqymc" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>在潜注册公司名称</view>
+				  	<input  placeholder="请输入在潜注册公司名称" v-model="datainfo.zcqymc"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zcrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>注册日期</view>
+				  	<picker mode="date" :value="datainfo.zcrq" :end="currentdate" class="infolist_a" @change='bindDateChangetimee'>
+						<view :class="datainfo.zcrq?'':'f16 co80'">{{datainfo.zcrq||"请选择注册日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zczb" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>注册资本(万元)</view>
+				  	<input  placeholder="请输入注册资本" type="number" v-model="datainfo.zczb"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="frdb" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>法人代表</view>
+				  	<input  placeholder="请输入法人代表" v-model="datainfo.frdb"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="lxfs" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>联系方式</view>
+				  	<input  placeholder="请输入联系方式" v-model="datainfo.lxfs"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="jyfw" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>经营范围</view>
+				  	<input  placeholder="请输入经营范围" v-model="datainfo.jyfw"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<!-- <uni-forms-item name="remark" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">备注</view>
+				  	<input  placeholder="请输入备注信息" v-model="datainfo.remark"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item> -->
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+					<view class="flexc infolist">
+						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+						<view class="infolist_a co28">
+							<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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infobtn flexcc cf f16 f500" v-if="checkPermi(['projectV2:qyxx:addYj','projectV2:qyxx:editYj'])" @click="getSubmit">提交</view>
+			</uni-forms>
+  </view>
+</template>
+
+<script>
+import { getDictionaryFn} from '@/api/work/index.js'
+import {selectDictLabel} from "@/utils/common.js"
+import {getqyxxaddYjFn,getqyxxeditYjFn,getqyxxYjListFn} from "@/api/work/addclue.js"
+import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+ 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,ppt,txt,pdf,zip,rar,word',
+		  // 文件上传大小限制
+		  size: 100,
+		  // 文件数量限制 默认10
+		  count: 5,
+		  // 文件回显列表
+		  files: new Map(),
+		  // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		  wxFiles: [],
+		  // 是否打印日志
+		  debug: false,
+		  filelist:[], 
+		  
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		datainfo:{
+			"xmId":"",//项目ID
+			    "xmbh":"",//项目编号
+			    "xmmc":"",//项目名称
+			    "dfqyr":"",//对方签约人
+			    "wfqyr":"",//我方签约人
+			    "tbrq":"",//通报日期
+			    "qyrq":"",//签约日期
+			    "xytzely":"",//协议投资额来源
+			    "xytze":"",//协议投资额
+			    "swzj":"",//市外资金
+			    "gdzctze":"",//固定资产投资额(万元)
+			    "xmgjrxm":"",//项目跟进人姓名
+			    "xmgjrzw":"",//项目跟进人职务
+			    "xmgjrsjh":"",//项目跟进人手机号
+			    "xmszd":"",//项目所在地
+			    "sshy":"",//所属行业 字典
+			    "tzfs":"",//投资方式(1:独资,2:合资,3:合作,4:收购,5:参股,6:兼并,7:其他)
+			    "jsfs":"",//建设方式(1:新建,2:改建,3:扩建,4:租赁)
+			    "sfys":"",//是否宜商(1:是,2:否)
+			    "jsnr":"",//建设内容
+			    "zlcf":"",//租赁厂房(平方米)
+			    "gdmj":"",//供地面积(亩)
+			    "zcqymc":"",//注册企业名称
+			    "zcrq":"",//注册日期
+			    "zczb":"",//注册资本(万元)
+			    "frdb":"",//法人代表
+			    "lxfs":"",//联系方式
+			    "jyfw":"",//经营范围
+			    "lxrq":"",//立项日期
+			    "nkgrq":"",//拟开工日期
+				'czwt':'',//存在问题
+			    "path":"",//文件地址
+				zsyzFjList:[],//附件地址
+		},
+		tanfalg:false,
+		addimg:require("@/static/images/mine/add.png"),
+		delimg:require("@/static/images/mine/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		rules: {
+		  xmmc: {rules: [{required: true,errorMessage: '请输入项目名称'}]},
+		  dfqyr: {rules: [{required: true,errorMessage: '请输入对方签约人信息',}]},
+		  wfqyr: {rules: [{required: true,errorMessage: '请输入我方签约人信息' } ]},
+		  qyrq: {rules: [{required: true,errorMessage: '请选择签约日期'} ]},
+		  tbrq: {rules: [{required: true,errorMessage: '请选择填报日期'} ]},
+		  xytzely: {rules: [{required: true,errorMessage: '请选择协议投资类型'} ]},
+		  xytze: {rules: [{required: true,errorMessage: '请输入协议投资额'} ]},
+		  gdzctze: {rules: [{required: true,errorMessage: '请输入固定资产投资额'} ]},
+		  xmgjrxm: {rules: [{required: true,errorMessage: '请输入项目跟进人姓名'} ]},
+		  xmgjrzw: {rules: [{required: true,errorMessage: '请输入项目跟进人职务'} ]},
+		  xmgjrsjh: {rules: [{required: true,errorMessage: '请输入项目跟进人联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'} ]},
+		  xmszd: {rules: [{required: true,errorMessage: '请输入项目所在地'} ]},
+		  sshy: {rules: [{required: true,errorMessage: '请选择所属行业'} ]},
+		  tzfs: {rules: [{required: true,errorMessage: '请选择投资方式'} ]},
+		  jsfs: {rules: [{required: true,errorMessage: '请选择建设方式'} ]},
+		  sfys: {rules: [{required: true,errorMessage: '请选择是/否'} ]},
+		  jsnr: {rules: [{required: true,errorMessage: '请输入建设内容'} ]},
+		  lxrq: {rules: [{required: true,errorMessage: '请选择立项日期'} ]},
+		  nkgrq: {rules: [{required: true,errorMessage: '请选择拟开工日期'} ]},
+		},
+		tworules:{
+			zcqymc: {rules: [{required: true,errorMessage: '请输入在潜注册公司名称'} ]},
+			zcrq: {rules: [{required: true,errorMessage: '请选择注册日期'} ]},
+			zczb: {rules: [{required: true,errorMessage: '请输入注册资本'} ]},
+			frdb: {rules: [{required: true,errorMessage: '请输入法人代表'} ]},
+			lxfs: {rules: [{required: true,errorMessage: '请输入联系方式'},{pattern:/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,errorMessage: '请输入正确的手机号码'}]},
+			jyfw: {rules: [{required: true,errorMessage: '请输入经营范围'} ]},
+			zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		},
+		lhindex:0,
+		cyindex:0,
+		cylist:[{dictLabel:'是',dictValue:'Y'},{dictLabel:'否',dictValue:'N'}],//宜商
+		// map:{text:'dictLabel',value:'dictValue'},
+		currentdate:'',//当天日期
+		industry:[],//所属行业bindDateChangedana
+		industryindex:0,
+		investmentca:[],//投资类别bindDateChangedanb
+		incaindex:0,
+		investmentmode:[],//投资方式bindDateChangedanc
+		inmoindex:0,
+		construction:[],//建设方式bindDateChangedand
+		constindex:0,
+		pagetype:'add',
+		sfys:'',//是否宜商
+	}
+    },
+	onLoad(e) {
+		this.currentdate = this.getNowFormatDate();
+		var newObj=JSON.parse(decodeURIComponent(e.data))
+		this.pagetype=newObj.pagetype||'add';
+		this.getinvestmentarea();
+		this.datainfo.xmId=newObj.xmId;
+		this.datainfo.xmbh=newObj.xmbh;
+		this.datainfo.xmmc=newObj.xmmc;
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			this.getDataFn()
+		}else{
+			this.datainfo.qyrq=this.currentdate;
+			this.datainfo.tbrq=this.currentdate;
+			this.datainfo.zcrq=this.currentdate;	
+			this.datainfo.lxrq=this.currentdate;	
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+	checkPermi, checkRole,
+		// 项目详情
+		getDataFn(){
+			var that=this;
+			getqyxxYjListFn(this.datainfo.xmId).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					this.sfys=res.data.sfys=='Y'?'是':'否';
+					this.cyindex=res.data.sfys=='Y'?0:1;	
+					
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+					// 协议投资类型
+					for(var i=0;i<that.investmentca.length;i++){
+						if(that.investmentca[i].dictLabel==this.datainfo.xytzely){
+							this.incaindex=Number(i)
+							break;
+						}
+					}
+					//所属行业
+					for(var i=0;i<that.industry.length;i++){
+						if(that.industry[i].dictLabel==this.datainfo.sshy){
+							this.industryindex=Number(i)
+							break;
+						}
+					}
+					//投资方式
+					for(var i=0;i<that.investmentmode.length;i++){
+						if(that.investmentmode[i].dictLabel==this.datainfo.tzfs){
+							this.inmoindex=Number(i)
+							break;
+						}
+					}
+					//建设方式
+					for(var i=0;i<that.construction.length;i++){
+						if(that.construction[i].dictLabel==this.datainfo.jsfs){
+							this.constindex=Number(i)
+							break;
+						}
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		// 字典值
+		getinvestmentarea(){
+			// 所属行业
+			getDictionaryFn('industry').then(res=>{
+				if(res.code==200){
+					this.industry=res.data
+				}
+			})
+			// 投资类别
+			getDictionaryFn('investment_category').then(res=>{
+				if(res.code==200){
+					this.investmentca=res.data
+				}
+			})
+			//投资方式
+			getDictionaryFn('investment_mode').then(res=>{
+				if(res.code==200){
+					this.investmentmode=res.data
+				}
+			})
+			//建设方式
+			getDictionaryFn('construction_method').then(res=>{
+				if(res.code==200){
+					this.construction=res.data
+				}
+			})
+		},
+		getNowFormatDate(){
+			let date = new Date();
+			let y = date.getFullYear();
+			let m = date.getMonth() + 1;
+			m = m < 10 ? "0" + m : m;
+			let d = date.getDate();
+			d = d < 10 ? "0" + d : d;
+			const timeday = y + "-" + m + "-" + d;
+			return timeday;
+		},
+		
+		bindDateChangetimea(e){//签约日期
+			this.datainfo.qyrq=e.detail.value
+		},
+		bindDateChangetimeb(e){//填报日期
+			this.datainfo.tbrq=e.detail.value
+		},
+		bindDateChangetimec(e){//立项日期
+			this.datainfo.lxrq=e.detail.value
+		},
+		bindDateChangetimed(e){//拟开工日期
+			this.datainfo.nkgrq=e.detail.value
+		},
+		bindDateChangetimee(e){//注册日期
+			this.datainfo.zcrq=e.detail.value
+		},
+		bindDateChangeb(e){
+			var val=e.detail.value;
+			this.sfys=this.cylist[val].dictLabel;
+			this.datainfo.sfys=this.cylist[val].dictValue
+		},
+		bindDateChangedana(e){
+			var val=e.detail.value;
+			this.datainfo.sshy=this.industry[val].dictLabel
+		},
+		bindDateChangedanb(e){
+			var val=e.detail.value;
+			this.datainfo.xytzely=this.investmentca[val].dictLabel
+		},
+		bindDateChangedanc(e){
+			var val=e.detail.value;
+			this.datainfo.tzfs=this.investmentmode[val].dictLabel
+		},
+		bindDateChangedand(e){
+			var val=e.detail.value;
+			this.datainfo.jsfs=this.construction[val].dictLabel
+		},
+		getNext(){
+			this.$refs.form.validate().then(res => {
+				if(!this.datainfo.zlcf&&!this.datainfo.gdmj){
+					this.$toast('请输入租赁厂房或供地面积')	
+					return
+				}else{
+					this.type=2;
+				}
+				
+			})
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.twoform.validate().then(res => {
+				var params=this.datainfo;
+				// console.log(this.pagetype,9)
+				// return
+				if(this.pagetype=='add'){
+					getqyxxaddYjFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报签约成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					getqyxxeditYjFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改签约成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}
+				// params.zsyzFjList=this.filelist
+				
+			})
+      },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+		this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDelFj(idx){
+	  	this.filelist.splice(idx,1)
+		this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDown(e){
+		  uni.showLoading({
+		  	title: '加载中'
+		  });
+	  	var url=baseUrl+e;
+	  	uni.downloadFile({
+	  		url: url,//文件的下载路径
+	  		success(result) {
+				uni.hideLoading()
+	  			var filePath = result.tempFilePath;
+	  			   uni.openDocument({
+	  			     filePath: filePath,
+	  			     showMenu: true,
+	  			     success: function (res) {
+	  			       // console.log('打开文档成功');
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+
+
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+.inform .pl12{margin-right: 10rpx;}
+.fixedbox .pl12{margin-right: 10rpx;}
+</style>

+ 708 - 0
qs_zhaoshang/pages/work/yinpages/addstart.vue

@@ -0,0 +1,708 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform' :class="disabled?'disabledbox':''" ref="form" :rules="rules" :value="datainfo" >
+	  			<view class="info_tit">开工信息</view>
+	  			<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12">项目名称</view>
+	  			  	<input :disabled='disabled' placeholder="请输入项目名称" v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+	  			  </view> 
+	  			</uni-forms-item>
+	  			<uni-forms-item name="kgrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>开工日期</view>
+	  			  	<picker :disabled='disabled' mode="date" :value="datainfo.kgrq" class="infolist_a" @change='bindDateChangea'>
+	  					<view :class="datainfo.kgrq?'':'f16 co80'">{{datainfo.kgrq||"请选择开工日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			<uni-forms-item name="njgrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟竣工日期</view>
+	  			  	<picker :disabled='disabled' mode="date" :value="datainfo.njgrq" class="infolist_a" @change='bindDateChangeb'>
+	  					<view :class="datainfo.njgrq?'':'f16 co80'">{{datainfo.njgrq||"请选择拟竣工日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+				<uni-forms-item name="sscrq" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>试生产日期</view>
+				  	<picker :disabled='disabled' mode="date" :value="datainfo.sscrq" class="infolist_a" @change='bindDateChangec'>
+						<view :class="datainfo.sscrq?'':'f16 co80'">{{datainfo.sscrq||"请选择试生产日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="ntcsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>拟投产日期</view>
+				  	<picker :disabled='disabled' mode="date" :value="datainfo.ntcsj" class="infolist_a" @change='bindDateChanged'>
+						<view :class="datainfo.ntcsj?'':'f16 co80'">{{datainfo.ntcsj||"请选择拟投产日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="rtsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="background-color: #ffffff;">
+				  	<view class="f16 fw c34 flex0 pr pl12">入统日期</view>
+				  	<picker mode="date" :value="datainfo.rtsj" class="infolist_a" @change='bindDateChangee'>
+						<view :class="datainfo.rtsj?'':'f16 co80'">{{datainfo.rtsj||"请选择入统日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nrtsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="background-color: #ffffff;">
+				  	<view class="f16 fw c34 flex0 pr pl12">拟入统日期</view>
+				  	<picker mode="date" :value="datainfo.nrtsj" class="infolist_a" @change='bindDateChangef'>
+						<view :class="datainfo.nrtsj?'':'f16 co80'">{{datainfo.nrtsj||"请选择拟入统日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<view class="info_tit">进度照片</view>
+				<uni-forms-item name="ziranren" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="background-color: #ffffff;">
+					 <view class="flexc infolist_add" @click="getAddPhoto" v-if="checkPermi(['projectV2:rate:addYj'])">
+						 <image :src="addimg"></image>
+						 <view>新增进度照片</view>
+					 </view>
+				  	<view class="f16 fw c34 flex0 pr pl12">添加进度照片</view>
+					<view class="flex1 txr flexc over ml8">
+						<text class="flex1 f15 c34 over" v-if="datainfo.sbdw">{{datainfo.sbdw}}</text>
+						<text class="f16 flex1 co80" v-else>请先选择添加进度照片</text>
+						<!-- <view class="delimg flex0" >
+							
+							<image :src="delimg"></image>
+						</view> -->
+						<!-- <image :src="delimg" class="delimg"></image> -->
+					</view>
+				  </view>
+				</uni-forms-item>
+				<!-- 进度照片展示 -->
+				<view class="qibox" >
+					<view class="flexc infolist qi" v-for="(ite,idx) in ratelist" :key="'info-'+idx" @click="getDetailPhoto(ite)">
+					 	<view class="f15 fw c34 flex0 pr pl12 ">{{ite.rateType}}</view>
+						<view class="flex1 txr flexc over ml8">
+							<text class="flex1 f15 c34 over">{{ite.jdDescribe}}/</text>
+							<view class="flexc" style="justify-content: flex-end;">
+								<view v-for="(pit,pid) in ite.photo" :key="'info1-'+pid" class="pholist">
+									<image :src="baseUrl+pit"></image>
+								</view>
+							</view>
+							
+							<view class="delimg flex0" @click.stop="getDelRate(ite.id,idx)" v-if="checkPermi(['projectV2:rate:removeYj'])">
+								<image :src="delimg"></image>
+							</view>
+							
+						</view>
+					 </view>
+				</view>
+				<view class="border"></view>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+					<view class="flexc infolist">
+						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+						<view class="infolist_a co28" v-if="disabled">选择附件</view>
+						<view class="infolist_a co28" v-else><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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infolist_b" style="margin-top: 20rpx;"><text>*</text>土地证复印件/房屋租赁合同复印件、开工照片、项目开工申报表</view>
+				
+				<!-- 新增 -->
+				<view v-if="checkPermi(['projectV2:kgxx:editYj','projectV2:kgxx:addYj'])&&((progress==3&&xmStatus==2)||(progress==4&&xmStatus!=2))" class="infobtn flexcc cf f16 f500" @click="getSubmit">提交</view>
+				
+				<view v-if="checkPermi(['projectV2:kgxx:editYjKg'])&&(progress==4&&xmStatus==2||(progress==5&&xmStatus!=2))" class="infobtn flexcc cf f16 f500" @click="getSubmit">提交</view>
+	  		</uni-forms>
+	  	<!-- 弹框 -->
+	  	<view class="bgbox" @click="getClose" v-if="addflag"></view>
+	  	<view class="fixedbox" v-if="addflag">
+	  		<image :src="closeimg" class="choseimg" @click="getClose"></image>
+	  		<view class="top">添加进度照片</view>
+	  		<view  class="boxs" style="padding: 60rpx 0;">
+	  			<!-- 进度照片 -->
+	  			<uni-forms ref="phoform" :rules="phorules" :value="phoinfo">
+	  				<!-- <uni-forms-item name="companyName" style='margin-bottom: 0;'>
+	  				 <view class="flexc infolist">
+	  				  	<view class="f16 fw c34 flex0 pr pl12">时间</view>
+	  				  	<picker mode="date" :value="phoinfo.nrtsj" class="infolist_a" @change='bindDateChangeg'>
+	  				  		<view :class="phoinfo.nrtsj?'':'f16 co80'">{{phoinfo.nrtsj||"请选择拟入统日期"}}</view>
+	  				  	</picker>
+	  				  </view>
+	  				</uni-forms-item> -->
+	  				<uni-forms-item name="rateType" style='margin-bottom: 0;'>
+	  				 <view class="flexc infolist">
+	  				  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>进度</view>
+	  				  	<input  placeholder="请输入进度" v-model="phoinfo.rateType"  class="f16  c34 flex1 txr"/>
+	  				  </view>
+	  				</uni-forms-item>
+	  				<uni-forms-item name="jdDescribe" style='margin-bottom: 0;'>
+	  				 <view class="flexc infolist">
+	  				  	<view class="f16 fw c34 flex0 pr pl12">描述</view>
+	  				  	<input  placeholder="请输入描述详情" v-model="phoinfo.jdDescribe" class="f16  c34 flex1 txr"/>
+	  				  </view>
+	  				</uni-forms-item>
+	  				<uni-forms-item name="photo" style='margin-bottom: 0;'>
+	  					<view class="flexc infolist">
+	  						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>照片</view>
+	  					</view>
+	  				</uni-forms-item>
+					<view class="photoimg">
+						<view class="photos" v-for="(item,index) in file" :key='index'>
+							<view class="photolist" @click="getPreview(file,index)">
+								<image :src="baseUrl+item" class="listimg"></image>
+								<image :src="delimgs" class="del" @click.stop="delimgFn(index)" v-if="checkPermi(['projectV2:rate:addYj','projectV2:rate:editYj'])"></image>
+							</view>
+						</view>
+						<view class="photos" v-if="file.length<9&&checkPermi(['projectV2:rate:addYj','projectV2:rate:editYj'])">
+							<view class="photolist" @click.stop="getphotoFn">
+								<image :src="addimgs" class="addimg"></image>
+							</view>
+						</view>
+						
+					</view>
+	  				<!-- <view class=" cldelistbf" >
+	  					<view class="flext f15 c6">
+	  						<view class="imgl"><image :src="wimg" ></image></view>
+	  						<view>照片名称fjName</view>
+	  					</view>
+	  					<view class="flexc f15 co28 flex0">
+	  						<image :src="downimg" class="imgr"></image>预览
+	  					</view>
+	  				</view> -->
+	  				
+	  			</uni-forms>
+
+	  		</view>
+	  		<view class="fixedbtn mt20" @click="getyjSubmit" v-if="checkPermi(['projectV2:rate:addYj','projectV2:rate:editYj'])">确认</view>
+	  	</view>
+  </view>
+</template>
+
+<script>
+import {uploadmore} from '@/utils/common.js'
+import {uploadPhoto} from '@/api/system/user.js'
+import {getkgxxaddYjFn,getkgxxeditYjFn,getrateYjAddFn,getrateYjPutFn,getrateYjDelFn,getrateYjListFn,getkgxxYjListFn,gekgxxputYjKg} from "@/api/work/addclue.js"
+import config from '@/config'
+  const baseUrl = config.baseUrl
+  import { getToken } from '@/utils/auth'
+  import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+  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,ppt,txt,pdf,zip,rar,word',
+		  // 文件上传大小限制
+		  size: 100,
+		  // 文件数量限制 默认10
+		  count: 5,
+		  // 文件回显列表
+		  files: new Map(),
+		  // 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		  wxFiles: [],
+		  // 是否打印日志
+		  debug: false,
+		  filelist:[], 
+		  
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,
+		baseUrl:'',
+		datainfo:{
+			"xmId":"",//项目ID
+			"xmbh":"",//项目编号
+			"xmmc":"",//项目名称
+			"kgrq":"",//开工日期
+			"njgrq":"",//拟竣工日期
+			"sscrq":"",//试生产日期
+			"ntcsj":"",//拟投产时间
+			"rtsj":"",//入统时间
+			"nrtsj":"",//拟入统时间
+			"kggjrsjh":"",//开工跟进人手机号
+			'czwt':'',//存在问题
+			zsyzFjList:[],//附件地址
+		},
+		phoinfo:{
+			photo:'',
+			jdDescribe:'',
+			rateType:'',
+		},
+		tanfalg:false,
+		addflag:false,
+		imageValue:[],
+		addimg:require("@/static/images/mine/add.png"),
+		addimgs:require('@/static/images/index/add.png'),
+		delimg:require("@/static/images/mine/del.png"),
+		delimgs:require("@/static/images/index/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		bgimg:require("@/static/images/banner.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		rules: {
+		  kgrq: {rules: [{required: true,errorMessage: '请选择开工日期'}]},
+		  njgrq: {rules: [{required: true,errorMessage: '请选择拟竣工日期',}]},
+		  sscrq: {rules: [{required: true,errorMessage: '请选择试生产日期' } ]},
+		  ntcsj: {rules: [{required: true,errorMessage: '请选择拟投产日期'} ]},
+		  zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		 
+		},
+		phorules:{
+			rateType: {rules: [{required: true,errorMessage: '请输入进度'}]},
+			photo: {rules: [{required: true,errorMessage: '请上传图片'}]},
+			
+		},
+
+		map:{text:'label',value:'id'},
+		
+		file:[],
+		images:[],
+		pagetype:'add',
+		ratelist:[],
+		disabled:false,
+		xmmc:'',
+		progress:'',
+		xmStatus:'',
+	}
+    },
+	onLoad(e) {
+		this.baseUrl=baseUrl;
+		var newObj=JSON.parse(decodeURIComponent(e.data))
+		this.pagetype=newObj.pagetype||'add';
+		this.datainfo.xmId=newObj.xmId;
+		this.datainfo.xmbh=newObj.xmbh;
+		this.progress=newObj.progress||'';
+		this.xmStatus=newObj.xmStatus||'';
+		// console.log(this.progress,this.xmStatus)
+		this.xmmc=newObj.xmmc;
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			if(newObj.dis){
+				this.disabled=true;
+			}else{
+				this.disabled=false;
+			}
+			this.init();
+			this.getDataFn()
+		}else{
+			this.datainfo.xmmc=newObj.xmmc;
+		}
+	// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		// 开工详情
+		getDataFn(){
+			getkgxxYjListFn(this.datainfo.xmId).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					this.datainfo.xmmc=this.xmmc;
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		// 查看照片
+		getPreview(iurl,idx) {
+			var newArr=[];
+			iurl.forEach(ite=>{
+				var ds=this.baseUrl+ite
+				newArr.push(ds)
+			})
+			uni.previewImage({
+				urls: newArr,
+				current:idx,
+				success: function(data) {
+					
+				},
+				fail: function(err) {
+					console.log(err.errMsg);
+				}
+			});
+		},
+		init(){
+			this.getRateList()//项目进度
+		},
+		bindDateChangea(e){//开工日期
+			this.datainfo.kgrq=e.detail.value
+		},
+		bindDateChangeb(e){//拟竣工日期
+			this.datainfo.njgrq=e.detail.value
+		},
+		bindDateChangec(e){//试生产日期
+			this.datainfo.sscrq=e.detail.value
+		},
+		bindDateChanged(e){//拟投产日期
+			this.datainfo.ntcsj=e.detail.value
+		},
+		bindDateChangee(e){//入统日期
+			this.datainfo.rtsj=e.detail.value
+		},
+		bindDateChangef(e){//拟入统日期
+			this.datainfo.nrtsj=e.detail.value
+		},
+
+		getAddPhoto(){
+			this.phoinfo={
+				photo:'',
+				jdDescribe:'',
+				rateType:'',
+			};
+			this.file=[];
+			this.addflag=true;	
+		},
+		getDetailPhoto(ite){
+			var newStr=JSON.parse(JSON.stringify(ite))
+			this.phoinfo=newStr;
+			this.file=newStr.photo;
+			var newStr=newStr.photo.join(',');
+			this.phoinfo.photo=newStr;
+			this.addflag=true;
+			
+		},
+		getDelRate(id,idx){ //删除进度
+			var that=this;
+			uni.showModal({
+				title: '确认删除',
+				content: "是否确认删除",
+				cancelText: '取消',
+				confirmText: '确认',
+				success: function(res) {
+					if (res.confirm) {
+						// var params={
+						// 	id:id
+						// }
+						getrateYjDelFn(id).then(res=>{
+							if(res.code==200){
+								that.$toast('删除成功')
+								that.ratelist.splice(idx,1)
+							}else{
+								that.$toast(res.msg)
+							}
+						})	
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		// 项目列表
+		getRateList(){
+			var params={
+				xmbh:this.datainfo.xmbh,
+				xmId:this.datainfo.xmId
+			}
+			getrateYjListFn(params).then(res=>{
+				if(res.code==200){
+					// 
+					var newArr=res.rows||[];
+					if(newArr.length){
+						newArr.forEach(ite=>{
+							ite.photo=ite.photo.split(',')
+						})
+					}
+					this.ratelist=newArr
+					// if(res.rows.length){
+					// 	this.qiziflag=true
+					// }
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getyjSubmit(){
+			// 项目进度
+			var that=this;
+			this.$refs.phoform.validate().then(res => {
+				var params=this.phoinfo;
+				params.xmbh=this.datainfo.xmbh;
+				params.xmId=this.datainfo.xmId;
+				if(params.id){
+					// 修改
+					getrateYjPutFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改成功');
+							setTimeout(function(){
+								that.addflag=false;
+								// 获取列表
+								that.getRateList()
+							},1500)
+							
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}else{
+					// 新增
+					getrateYjAddFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('添加成功');
+							setTimeout(function(){
+								that.addflag=false;
+								// 获取列表
+								that.getRateList()
+							},1500)
+							
+						}else{
+							this.$toast(res.msg)
+						}
+					})
+				}
+				
+			})
+		},
+		delimgFn(e){
+			var that = this;
+			that.file.splice(e,1);
+			this.phoinfo.photo=that.file.join(',')
+		},
+		getphotoFn(){
+			let that = this;
+			let file = that.file;
+			if(file.length < 9){
+				uni.chooseImage({
+					count: 9 - parseInt(file.length),
+					success:function(res){
+						let img= res.tempFilePaths;
+						if(img.length + file.length > 9){
+							uni.showToast({
+								title: '最多上传9张图片',
+								icon: 'none',
+								duration: 2000
+							})
+						}else{
+
+							let imglen = res.tempFilePaths.length;
+							var fuwufile = [];
+							uploadmore('/common/upload',img,0,0,0,imglen,fuwufile,function(rs){
+								that.file = that.file.concat(rs);
+								that.phoinfo.photo=that.file.join(',')
+								
+							})	
+						}
+					}
+				});
+			}
+		},
+		getClose(){
+			this.addflag=false;
+		},
+		getAddFn(){
+			this.addflag=true;
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.form.validate().then(res => {
+				var params=this.datainfo;
+				// params.zsyzFjList=this.filelist
+				if(!params.rtsj&&!params.nrtsj){
+					this.$toast('请选择入统时间或者拟入统时间');
+					return
+				}
+				if(this.pagetype=='add'){
+					getkgxxaddYjFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报开工信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}else{
+					if(this.disabled){
+						var obj={
+							id:params.id,
+							xmId:params.xmId,
+							rtsj:params.rtsj,
+							nrtsj:params.nrtsj,
+						}
+						gekgxxputYjKg(obj).then(res=>{
+							if(res.code==200){
+								this.$toast('修改开工信息成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}else{
+						getkgxxeditYjFn(params).then(res=>{
+							if(res.code==200){
+								this.$toast('修改开工信息成功')	
+								setTimeout(function() {
+									uni.$emit('refreshdata');
+									uni.navigateBack({delta: 1});
+								},1500);
+							}else{
+								this.$toast(res.msg)
+							}
+							
+						})
+					}
+					
+				}
+				
+			})
+      },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+	  		this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDelFj(idx){
+		  var that=this;
+		  if(!this.disabled){
+			  uni.showModal({
+			  	title: '确认删除',
+			  	content: "是否确认删除",
+			  	cancelText: '取消',
+			  	confirmText: '确认',
+			  	success: function(res) {
+			  		if (res.confirm) {
+			  			that.filelist.splice(idx,1)
+			  			that.datainfo.zsyzFjList=JSON.parse(JSON.stringify(that.filelist))
+			  		} else if (res.cancel) {
+			  		}
+			  	}
+			  });
+		  }
+	  },
+	  getDown(e){
+		  uni.showLoading({
+		  	title: '加载中'
+		  });
+	  	var url=baseUrl+e;
+	  	uni.downloadFile({
+	  		url: url,//文件的下载路径
+	  		success(result) {
+				uni.hideLoading()
+	  			var filePath = result.tempFilePath;
+	  			   uni.openDocument({
+	  			     filePath: filePath,
+	  			     showMenu: true,
+	  			     success: function (res) {
+	  			       // console.log('打开文档成功');
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	// .delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+.infolist_add{position: absolute;right: 0;top: -40rpx;font-size: 28rpx;color: #41C942;padding-right: 30rpx;
+	image{width: 30rpx;height: 30rpx;margin-right: 20rpx;}
+}
+.fixedbtn{width:100%;height: 80rpx;background: #FF6400;
+border-radius: 10rpx;display: flex;align-items: center;justify-content: center;font-size: 32rpx;font-weight: bold;color: #FFFFFF;
+	&.btn1{background-color: #20ACCF;margin-bottom: 36rpx;}
+	}
+.fixedbox .infolist{padding: 30rpx 0;}
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .fixedbox /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+.inform .pl12{margin-right: 10rpx;}
+.fixedbox .pl12{margin-right: 10rpx;}
+.pholist{
+	display: flex;align-items: center;max-width: 220rpx;overflow: hidden;
+	image{
+		width: 44rpx;height: 44rpx;margin-left: 10rpx;flex: 0 0 auto;
+	}
+}
+.disabledbox{
+	.infolist{background-color: #F5f5f5;}
+}
+</style>

+ 487 - 0
qs_zhaoshang/pages/work/yinpages/addtproduction.vue

@@ -0,0 +1,487 @@
+<template>
+<view  :style="'padding-bottom:' + bottom ">
+  	  <view class='zhanline'></view>
+	  <uni-forms class='inform '  ref="form" :rules="rules" :value="datainfo" v-show="type==1">
+	  			<view class="info_tit">投产信息</view>
+	  			<uni-forms-item name="xmmc" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12">项目名称</view>
+	  			  	<input  placeholder="请输入项目名称" v-model="datainfo.xmmc"  class="f16  c34 flex1 txr"/>
+	  			  </view> 
+	  			</uni-forms-item>
+	  			<uni-forms-item name="tcrq" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>投产日期</view>
+	  			  	<picker mode="date" :value="datainfo.tcrq" class="infolist_a" @change='bindDateChangea'>
+	  					<view :class="datainfo.tcrq?'':'f16 co80'">{{datainfo.tcrq||"请选择投产日期"}}</view>
+	  			  	</picker>
+	  			  </view>
+	  			</uni-forms-item>
+	  			
+	  			<uni-forms-item name="sjdze" style='margin-bottom: 0;'>
+	  			 <view class="flexc infolist">
+	  			  	<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>实际到资金额(万元)</view>
+	  				<input  placeholder="请输入协议投资额" type="number" v-model="datainfo.sjdze"    class="f16  c34 flex1 txr"/>
+	  			  </view>
+	  			</uni-forms-item>
+				
+				<view class="info_tit">入规信息</view>
+				<uni-forms-item name="rgsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">入规日期</view>
+				  	<picker mode="date" :value="datainfo.rgsj" class="infolist_a" @change='bindDateChangeb'>
+						<view :class="datainfo.rgsj?'':'f16 co80'">{{datainfo.rgsj||"请选择入规日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="nrgsj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">拟入规日期</view>
+				  	<picker mode="date" :value="datainfo.nrgsj" class="infolist_a" @change='bindDateChangec'>
+						<view :class="datainfo.nrgsj?'':'f16 co80'">{{datainfo.nrgsj||"请选择拟入规日期"}}</view>
+				  	</picker>
+				  </view>
+				</uni-forms-item>
+	  			<view class="infobtn flexcc cf f16 f500" @click="getNext">下一步</view>
+	  		</uni-forms>
+			<!-- 下一步 -->
+			<uni-forms class='inform' ref="twoform" :rules="tworules" :value="datainfo" v-show="type==2">
+				<view class="info_tit">到资明细</view>
+				<uni-forms-item name="ydmj" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">用地面积(亩)</view>
+				  	<input  placeholder="请输入用地面积" type="number" v-model="datainfo.ydmj"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="tdcr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">土地出让(万元)</view>
+				  	<input  placeholder="请输入土地出让" type="number" v-model="datainfo.tdcr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="xjcf" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">新建厂房(平方米)</view>
+				  	<input  placeholder="请输入新建厂房" type="number" v-model="datainfo.xjcf"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="cftr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">厂房投入(万元)</view>
+				  	<input  placeholder="请输入厂房投入" type="number" v-model="datainfo.cftr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sbqd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备清单(万元)</view>
+				  	<input  placeholder="请输入设备清单" type="number" v-model="datainfo.sbqd"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sbfp" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备发票(万元)</view>
+				  	<input  placeholder="请输入设备发票" type="number" v-model="datainfo.sbfp"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="sbht" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备合同(万元)</view>
+				  	<input  placeholder="请输入设备合同" type="number" v-model="datainfo.sbht"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="fkpz" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">付款凭证(万元)</view>
+				  	<input  placeholder="请输入付款凭证" type="number" v-model="datainfo.fkpz"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="zlcf" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">租赁厂房(平方米)</view>
+				  	<input  placeholder="请输入租赁厂房" type="number" v-model="datainfo.zlcf"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				
+				<uni-forms-item name="zlcftr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">厂房投入(万元)</view>
+				  	<input  placeholder="请输入厂房投入" type="number" v-model="datainfo.zlcftr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlsbqd" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备清单(万元)</view>
+				  	<input  placeholder="请输入设备清单" type="number" v-model="datainfo.zlsbqd"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlsbfp" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备发票(万元)</view>
+				  	<input  placeholder="请输入设备发票" type="number" v-model="datainfo.zlsbfp"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlsbht" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">设备合同(万元)</view>
+				  	<input  placeholder="请输入设备合同" type="number" v-model="datainfo.zlsbht"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zlfkpz" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">付款凭证(万元)</view>
+				  	<input  placeholder="请输入付款凭证" type="number" v-model="datainfo.zlfkpz"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="sjss" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">实缴税收(万元)</view>
+				  	<input  placeholder="请输入实缴税收" type="number" v-model="datainfo.sjss"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">连续</view>
+				  	<input  placeholder="请输入数字" type="number" v-model="datainfo.lxy"    class="f16  c34 flex1 " style="text-align: center;"/>
+					<view class="f16 fw c34 flex0 pr pl12">个月缴纳社保</view>
+					<input  placeholder="请输入数字" type="number" v-model="datainfo.jnsb"    class="f16  c34 flex1" style="text-align: center;"/>
+					<view class="f16 fw c34 flex0 pr pl12">人</view>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="zbtr" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">装备投入(万元)</view>
+				  	<input  placeholder="请输入装备投入" type="number" v-model="datainfo.zbtr"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="ndsjss" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">会计年度实缴税收(万元)</view>
+				  	<input  placeholder="请输入会计年度实缴税收" type="number" v-model="datainfo.ndsjss"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				<view class="border"></view>
+				<uni-forms-item name="qt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist">
+				  	<view class="f16 fw c34 flex0 pr pl12">其他</view>
+				  	<input  placeholder="请输入其他信息" v-model="datainfo.qt"    class="f16  c34 flex1 txr"/>
+				  </view>
+				</uni-forms-item>
+				
+				<view class="border"></view>
+				<uni-forms-item name="czwt" style='margin-bottom: 0;'>
+				 <view class="flexc infolist" style="align-items: flex-start;">
+				  	<view class="f16 fw c34 flex0 pr pl12">存在问题</view>
+					<uni-easyinput :inputBorder='false' type="textarea"  v-model="datainfo.czwt"  placeholder="请输入存在问题" placeholderStyle='text-align: right;font-size:32rpx;color:#808080'></uni-easyinput>
+				  </view>
+				</uni-forms-item>
+				<uni-forms-item name="zsyzFjList" style='margin-bottom: 0;'>
+					<view class="flexc infolist">
+						<view class="f16 fw c34 flex0 pr pl12"><text class="cir">*</text>附件</view>
+						<view class="infolist_a co28">
+							<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>
+				</uni-forms-item>
+				<view class=" cldelistbf"  v-for="(ite,idx) in filelist" :key='idx'>
+					<view class="flext f15 c6" @click="getDown(ite.path)">
+						<view class="imgl"><image :src="wimg" ></image></view>
+						<view>{{ite.fjName}}</view>
+					</view>
+					<!-- 删除 -->
+					<view class="delimg flex0" @click.stop="getDelFj(idx)">
+						<image :src="delimg"></image>
+					</view>
+				</view>
+				<view class="infolist_b"><text>*</text>请上传大小不超过<text>100MB</text>格式为<text>doc/xls/ppt/txt/pdf/zip/rar/word</text>的文件</view>
+				<view class="infolist_b" style="margin-top: 20rpx;"><text>*</text>项目生产、经营照片</view>
+				<view class="infobtn flexcc cf f16 f500" v-if="checkPermi(['projectV2:tcxx:addYj','projectV2:tcxx:editYj'])" @click="getSubmit">提交</view>
+			</uni-forms>
+	  		
+  </view>
+</template>
+
+<script>
+	import {gettcxxaddYjFn,gettcxxeditYjFn,gettcxxYjListFn} from "@/api/work/addclue.js"
+import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
+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,ppt,txt,pdf,zip,rar,word',
+		// 文件上传大小限制
+		size: 100,
+		// 文件数量限制 默认10
+		count: 5,
+		// 文件回显列表
+		files: new Map(),
+		// 微信小程序Map对象for循环不显示,所以转成普通数组,不要问为什么,我也不知道
+		wxFiles: [],
+		// 是否打印日志
+		debug: false,
+		filelist:[], 
+		
+		
+		selectDate: '',
+		defaultPhoneHeight: '', //屏幕默认高度
+		nowPhoneHeight: '', //屏幕现在的高度
+		bottom:0,
+		type:1,	
+		datainfo:{
+			"xmId":"",//项目ID
+		    "xmbh":"",//项目编号
+		    "xmmc":"",//项目名称
+		    "tcrq":"",//投产日期
+		    "rgsj":"",//入规(限)时间
+		    "nrgsj":"",//拟入规(限)时间
+		    "tcgjrsjh":"",//投产跟进人手机号
+		    "sjdze":"",//实际到资额(万元)
+		    "ydmj":"",//用地面积(亩)
+		    "tdcr":"",//土地出让(万元)
+		    "xjcf":"",//新建厂房(平方米)
+		    "cftr":"",//厂房投入(万元)
+		    "sbqd":"",//设备清单(万元)
+		    "sbfp":"",//设备发票(万元)
+		    "sbht":"",//设备合同(万元)
+		    "fkpz":"",//付款凭证(万元)
+		    "zlcf":"",//租赁厂房(平方米)
+		    "zlcftr":"",//租赁厂房投入(万元)
+		    "zlsbqd":"",//租赁设备清单(万元)
+		    "zlsbfp":"",//租赁设备发票(万元)
+		    "zlsbht":"",//租赁设备合同(万元)
+		    "zlfkpz":"",//租赁付款凭证(万元)
+		    "sjss":"",//实缴税收(万元)
+		    "lxy":"",//连续几个月
+		    "jnsb":"",//缴纳社保人数
+		    "zbtr":"",//装备投入(万元)
+		    "ndsjss":"",//会计年度实缴税收(万元)
+		    "qt":"",//其他
+			'czwt':'',//存在问题
+			zsyzFjList:[],//附件地址
+		},
+		tanfalg:false,
+		addimg:require("@/static/images/mine/add.png"),
+		delimg:require("@/static/images/mine/del.png"),
+		checknimg:require("@/static/images/mine/jnicon.png"),
+		gcheckimg:require("@/static/images/mine/jicon.png"),
+		closeimg:require('@/static/images/close.png'),
+		wimg:require('@/static/images/index/wicon.png'),
+		downimg:require('@/static/images/index/down.png'),
+		rules: {
+		  tcrq: {rules: [{required: true,errorMessage: '请选择投产日期'}]},
+		  sjdze: {rules: [{required: true,errorMessage: '请输入实际到资金额',}]},
+		 
+		},
+		tworules:{
+			zsyzFjList: {rules: [{required: true,errorMessage: '请上传附件'} ]},
+		},
+		lhindex:0,
+		lhlist:[{label:'是',id:'Y'},{label:'否',id:'N'},],//领航
+		cyindex:0,
+		cylist:[{label:'是',id:'Y'},{label:'否',id:'N'}],
+		map:{text:'label',value:'id'},
+		qybglist:[{label:'500强企业',id:1},{label:'上市部门',id:2},{label:'行业100强',id:3},{label:'头部企业',id:4}],
+		pagetype:'add',
+		xmmc:'',
+		}
+    },
+	onLoad(e) {
+		var newObj=JSON.parse(decodeURIComponent(e.data))
+		this.pagetype=newObj.pagetype||'add';
+		this.datainfo.xmId=newObj.xmId;
+		this.datainfo.xmbh=newObj.xmbh;
+		this.xmmc=newObj.xmmc;
+		if(this.pagetype=='update'){
+			// 获取详情 修改
+			this.getDataFn()
+		}else{
+			this.datainfo.xmmc=newObj.xmmc;
+		}
+		// #ifdef APP
+		uni.onKeyboardHeightChange(res=> { //监听键盘高度变化
+		    const res_keyboard = uni.getSystemInfoSync();
+		    let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight)
+		    // let key_height = res.height - (res_keyboard.screenHeight - res_keyboard.windowHeight + res_keyboard.safeAreaInsets.bottom)
+		     this.bottom = `${ key_height>0 ? key_height : 0}px`; 
+		})
+		// #endif
+	},
+	onHide() {
+	    // #ifdef APP-PLUS
+	    uni.offKeyboardHeightChange();  // 取消监听键盘高度变化事件,避免内存消耗
+	    // #endif
+	},
+    onReady() {
+      // this.$refs.form.setRules(this.rules)
+    },
+    methods: {
+		checkPermi, checkRole,
+		// 投产详情
+		getDataFn(){
+			gettcxxYjListFn(this.datainfo.xmId).then(res=>{
+				if(res.code==200){
+					this.datainfo=res.data;
+					this.datainfo.xmbh=this.xmmc;
+					if(res.data.zsyzFjList&&res.data.zsyzFjList.length){
+						this.filelist=JSON.parse(JSON.stringify(res.data.zsyzFjList))
+					}
+				}else{
+					this.$toast(res.msg)
+				}
+			})
+		},
+		getNext(){
+			this.$refs.form.validate().then(res => {
+				if(!this.datainfo.rgsj&&!this.datainfo.nrgsj){
+					this.$toast('请选择入规日期或者拟入规日期');
+					return
+				}
+				this.type=2;
+			})
+		},
+		bindDateChangea(e){
+			this.datainfo.tcrq=e.detail.value
+		},
+		bindDateChangeb(e){
+			this.datainfo.rgsj=e.detail.value
+		},
+		bindDateChangec(e){
+			this.datainfo.nrgsj=e.detail.value
+		},
+      getSubmit() {
+			var that=this;
+			this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist));
+			this.$refs.twoform.validate().then(res => {
+				var params=this.datainfo;
+				// params.zsyzFjList=this.filelist
+				// 判断到资明细有没有填写
+				if(!params.ydmj&&!params.tdcr&&!params.xjcf&&!params.cftr&&!params.sbqd&&!params.sbfp&&!params.sbht&&!params.fkpz&&!params.zlcf&&!params.zlcftr&&!params.zlsbqd&&!params.zlsbfp&&!params.zlsbht&&!params.zlfkpz&&!params.sjss&&!params.lxy&&!params.jnsb&&!params.zbtr&&!params.ndsjss&&!params.qt){
+					this.$toast('请输入到资明细')	
+					return
+				}
+				if(this.pagetype=='add'){
+					gettcxxaddYjFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('上报投产信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}else{
+					gettcxxeditYjFn(params).then(res=>{
+						if(res.code==200){
+							this.$toast('修改投产信息成功')	
+							setTimeout(function() {
+								uni.$emit('refreshdata');
+								uni.navigateBack({delta: 1});
+							},1500);
+						}else{
+							this.$toast(res.msg)
+						}
+						
+					})
+				}
+				
+			})
+      },
+	  onuploadEnd(item) {
+	  	var newobj={}
+	  	var responseText=JSON.parse(item.responseText)
+	  	newobj.fjName=responseText.originalFilename;
+	  	newobj.path=responseText.fileName;
+	  	this.filelist.push(newobj)
+	  	this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  getDelFj(idx){
+	  	this.filelist.splice(idx,1)
+	  	this.datainfo.zsyzFjList=JSON.parse(JSON.stringify(this.filelist))
+	  },
+	  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) {
+	  			     }
+	  			   });
+	  		},
+	  		fail(res) {uni.hideLoading()}
+	  	})
+	  },
+    }
+  }
+</script>
+
+<style lang="scss" scoped>	
+ .inform{padding-top: 30rpx; padding-bottom: 160rpx;}
+  .infolist{padding: 30rpx 32rpx 30rpx 24rpx;position: relative;
+	.cir{position: absolute;font-size: 36rpx;font-weight: bold;color: #FE5706;left: 0rpx;}
+	// .delimg{width: 30rpx;height:30rpx;margin-left: 8rpx;}
+  }
+  .delimg{width: 40rpx;height:40rpx;margin-left: 16rpx;display: flex;align-items: center;justify-content: center;
+  	image{width: 30rpx;height: 30rpx;}
+  }
+  .infobtn{width: 100%;height: 88rpx;background: #FA5F03;line-height: 88rpx;position: fixed;left: 0;right: 0;bottom: 0;z-index: 3;}
+  .input_ye image{width: 34rpx;height: 18rpx;}
+.info_tit{font-size: 32rpx;color: #FE5706;padding: 30rpx 26rpx;font-weight: bold;}
+.infolist_a{height: 44rpx;flex: 1;text-align: right;font-size: 32rpx;color: #343434;}
+
+
+ .inform /deep/ .uni-forms-item__error{margin-top: -30rpx;margin-left: 24rpx;}
+ .inform .pl12{margin-right: 10rpx;}
+ .fixedbox .pl12{margin-right: 10rpx;}
+</style>
+	

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff