Quellcode durchsuchen

梅陇正式版发布版本

xianwait vor 2 Jahren
Ursprung
Commit
5ae00f2231
42 geänderte Dateien mit 1399 neuen und 387 gelöschten Zeilen
  1. 2 2
      App.vue
  2. 18 18
      components/classify-1/classify-1.vue
  3. 1 1
      manifest.json
  4. 1 1
      pageA/club/careAndLove.vue
  5. 35 21
      pageA/club/sicknessBenefit.vue
  6. 4 1
      pageA/components/input.vue
  7. 4 11
      pageA/integral/list.vue
  8. 17 22
      pageA/integral/shopcar.vue
  9. 7 2
      pageA/login/login.vue
  10. 9 2
      pageA/login/selectOrg.vue
  11. 77 15
      pageA/msg/userMsgList.vue
  12. 2 0
      pageApp/administration/reserve.vue
  13. 3 3
      pageApp/administration/useSeal.vue
  14. 14 15
      pageApp/components/ge.vue
  15. 7 1
      pageApp/components/photo.vue
  16. 32 17
      pageApp/ge/geApproval.vue
  17. 599 0
      pageApp/ge/geContract.vue
  18. 28 2
      pageApp/ge/geDeviceRepairs.vue
  19. 0 1
      pageApp/ge/geDeviceScrap.vue
  20. 1 1
      pageApp/ge/geDimission.vue
  21. 15 16
      pageApp/ge/geEntry.vue
  22. 14 15
      pageApp/ge/geNewsApproval.vue
  23. 81 4
      pageApp/ge/gePurchase.vue
  24. 14 15
      pageApp/ge/geReserveApproval.vue
  25. 79 3
      pageApp/ge/geUseSeal.vue
  26. 37 0
      pageApp/hr/leave.vue
  27. 2 1
      pageApp/my/MyApproval.vue
  28. 2 0
      pageApp/my/myAll.vue
  29. 2 0
      pageApp/my/myCc.vue
  30. 2 0
      pageApp/my/myLaunch.vue
  31. 186 77
      pageApp/other/contract.vue
  32. 5 3
      pageApp/other/purchase.vue
  33. 3 1
      pageApp/other/repairs.vue
  34. 6 2
      pageApp/other/scrap.vue
  35. 17 58
      pages.json
  36. 25 21
      pages/app/index.vue
  37. 20 11
      pages/home/index.vue
  38. 8 6
      pages/tabbar/wpTabbar.vue
  39. 4 1
      pages/user/index.vue
  40. 1 4
      pages/user/settings/settings.vue
  41. 3 2
      pages/user/settings/swiper-page.vue
  42. 12 11
      util/request/api.js

+ 2 - 2
App.vue

@@ -38,12 +38,12 @@
 					//width:  胶囊宽度
 					// console.log(menuButtonInfo.width, menuButtonInfo.height, menuButtonInfo.top)
 					// console.log('计算胶囊右侧距离屏幕右边距离', result.screenWidth - menuButtonInfo.right)
-					let menuWidth = menuButtonInfo.width + 40 + 'px'
+					let menuWidth = menuButtonInfo.width + 60 + 'px'
 					let menuHeight = menuButtonInfo.height + 'px'
 					let menuBorderRadius = menuButtonInfo.height / 2 + 'px'
 					let menuRight = result.screenWidth - menuButtonInfo.right + 'px'
 					let menuTop = menuButtonInfo.top + 'px'
-					let contentTop = result.statusBarHeight + 44 + 'px'
+					let contentTop = result.statusBarHeight + 64 + 'px'
 					let menuInfo = {
 						statusBarHeight: statusBarHeight, //状态栏高度----用来给自定义导航条页面的顶部导航条设计padding-top使用:目的留出系统的状态栏区域
 						menuWidth: menuWidth, //右侧的胶囊宽度--用来给自定义导航条页面的左侧胶囊设置使用

+ 18 - 18
components/classify-1/classify-1.vue

@@ -45,24 +45,24 @@
 			},
 			downLoad(item) {
 
-				if (item === '../../pageApp/hr/leave') {
-					uni.requestSubscribeMessage({
-						tmplIds: ['qgp7iG6xTRm4JewW8N46nXJT-E6xorFn2hZ2V7gD8wY'],
-						success(res) {}
-					})
-				}
-				if (item === '../../pageA/salary/salary') {
-					uni.requestSubscribeMessage({
-						tmplIds: ['SSsS8EV9dfv-CC7-w_JUKYnfEuWm6FiGL_eED8hf80Q'],
-						success(res) {}
-					})
-				}
-				if (item === '../../pageApp/my/MyApproval') {
-					uni.requestSubscribeMessage({
-						tmplIds: ['Toomi1XWGMzNxOCoPX1rRNj7gLuykgszEzUstXaAp9c'],
-						success(res) {}
-					})
-				}
+				// if (item === '../../pageApp/hr/leave') {
+				// 	uni.requestSubscribeMessage({
+				// 		tmplIds: ['qgp7iG6xTRm4JewW8N46nXJT-E6xorFn2hZ2V7gD8wY'],
+				// 		success(res) {}
+				// 	})
+				// }
+				// if (item === '../../pageA/salary/salary') {
+				// 	uni.requestSubscribeMessage({
+				// 		tmplIds: ['SSsS8EV9dfv-CC7-w_JUKYnfEuWm6FiGL_eED8hf80Q'],
+				// 		success(res) {}
+				// 	})
+				// }
+				// if (item === '../../pageApp/my/MyApproval') {
+				// 	uni.requestSubscribeMessage({
+				// 		tmplIds: ['Toomi1XWGMzNxOCoPX1rRNj7gLuykgszEzUstXaAp9c'],
+				// 		success(res) {}
+				// 	})
+				// }
 
 				//this.$router.push('/pageA/integral/index')
 				uni.removeStorageSync('approval')

+ 1 - 1
manifest.json

@@ -3,7 +3,7 @@
     "appid" : "__UNI__CCEB8E1",
     "description" : "院务系统移动端-会助理APP",
     "versionName" : "1.4.2.01",
-    "versionCode" : 27,
+    "versionCode" : 28,
     "transformPx" : false,
     "app-plus" : {
         //"popGesture" : "none",

+ 1 - 1
pageA/club/careAndLove.vue

@@ -1,7 +1,7 @@
 <template>
 	<view>
 		<view style="margin: auto;">
-			<view class="page-item" v-for="(item,i) in pageList" @click="toSicknessBenefit(i)">
+			<view class="page-item" v-for="(item,i) in pageList" @click="toSicknessBenefit(i+1)">
 				{{item.text}}
 			</view>
 		</view>

+ 35 - 21
pageA/club/sicknessBenefit.vue

@@ -2,28 +2,28 @@
 	<view>
 		<hsInput label="姓名" v-model="form.userName" :disabled="true" />
 		<hsInput label="工会会员卡卡号" labelSize="8" inputSpan="16" v-model="form.clubNo" />
-		<view v-if="type === '0'">
+		<view v-if="type === '1'">
 			<hsInput label="出院小结" v-model="form.cyxj" />
 			<hsInput label="疾病名称" v-model="form.jbmc" />
-			<hsInput label="住院日期" v-model="form.date1" model="date" />
-			<hsInput label="出院日期" v-model="form.date2" model="date" />
+			<hsInput label="住院日期" v-model="form.zhuyuanDate" model="date" />
+			<hsInput label="出院日期" v-model="form.chuyuanDate" model="date" />
 			<hsPhoto label="添加出院小结照片" limit="5" v-model="form.fjtp"></hsPhoto>
 		</view>
-		<view v-if="type === '1'">
+		<view v-if="type === '2'">
 			<hsInput label="出院小结" v-model="form.cyxj" />
 			<hsInput label="疾病名称" v-model="form.jbmc" />
-			<hsInput label="住院日期" v-model="form.date1" model="date" />
-			<hsInput label="出院日期" v-model="form.date2" model="date" />
+			<hsInput label="住院日期" v-model="form.zhuyuanDate" model="date" />
+			<hsInput label="出院日期" v-model="form.chuyuanDate" model="date" />
 			<hsPhoto label="清添加”疾病病理报告” 和“出院小结” 照片" limit="5" v-model="form.fjtp"></hsPhoto>
 		</view>
-		<view v-if="type === '2'">
+		<view v-if="type === '3'">
 			<view class="desc">
 				<hsDictSelect label="申请事项" dictKey="condole_renshenshanghai_type" v-model="form.remark" />
 			</view>
 
 			<hsInput label="案情简介" v-model="form.cyxj" model="textarea" />
 			<hsInput label="伤害时间" v-model="form.shanghaiDate" model="date" />
-			<hsInput label="具体工作场所" labelSize="8" inputSpan="12" v-model="form.jtgzcs" model="textarea" />
+			<hsInput label="具体工作场所" labelSize="8" v-model="form.jtgzcs" model="textarea" />
 			<hsInput label="双方关系" v-model="form.sfgx" model="textarea" />
 			<hsPhoto label="附件" limit="5" v-model="form.fjtp"></hsPhoto>
 		</view>
@@ -59,30 +59,44 @@
 				form: {
 					nickName: '',
 					clubNo: '',
-					fjtp: ''
+					fjtp: '',
+					zhuyuanDate: '',
+					chuyuanDate: ''
 				}
 			}
 		},
 		mounted() {
 			this.type = this.$root.$mp.query.type
+			this.form.wwlx = this.$root.$mp.query.type
 			this.form.userName = uni.getStorageSync("userInfo").nickName
 		},
 		methods: {
 			submit() {
+				if (!this.form.clubNo) {
+					this.$showModal("请填写工会会员卡号")
+					return
+				}
+				
+				let that = this
 				uni.showModal({
+					title: "提醒",
 					content: " 请确保填写会员卡【" + this.form.clubNo +
-						"】内容准确无误,以免申请异常,确认无误后点击【确认】"
-				})
-				this.$httpRequest({
-					url: '/app/condoleRecord',
-					method: 'post',
-					data: this.form,
-					urlType: this.$getUrlType()
-				}).then(res => {
-					if (res.code === 200) {
-						this.$showModal("成功")
-					} else {
-						this.$showModal(res.msg)
+						"】内容准确无误,以免申请异常,确认无误后点击【确定】",
+					success(res) {
+						if (res.confirm) {
+							that.$httpRequest({
+								url: '/app/condoleRecord',
+								method: 'post',
+								data: that.form,
+								urlType: that.$getUrlType()
+							}).then(res => {
+								if (res.data.code === 200) {
+									uni.navigateBack()
+								} else {
+									that.$showModal(res.msg)
+								}
+							})
+						}
 					}
 				})
 			}

+ 4 - 1
pageA/components/input.vue

@@ -12,7 +12,7 @@
 						:disabled="disabled">
 					</uni-easyinput>
 					<uni-datetime-picker v-if="model === 'date'" type="date" :clear-icon="false" v-model="val"
-						:disabled="disabled" />
+						:disabled="disabled" @change="change" />
 					<view v-if="model === 'search'" class="pickerView pickerText">
 						<view @click="openSearch" class="pickerText" v-if="val">
 							{{val}}
@@ -107,6 +107,9 @@
 
 		},
 		methods: {
+			change: function(e) {
+				this.$emit('input', e)
+			},
 			input: function(e) {
 				this.$emit('input', this.val)
 			},

+ 4 - 11
pageA/integral/list.vue

@@ -21,7 +21,8 @@
 								<view style="padding: 0 20rpx;">
 									<picker @change="bindPickerChange" :value="index" :range="placeData"
 										range-key="placeName">
-										<view style="font-size: 40rpx;color: #848484;">
+										<view style="font-size: 40rpx;color: #848484;"
+											v-if="placeData[index].placeName">
 											<u--text :iconStyle="{color: '#757575',fontSize:'40rpx'}"
 												suffixIcon="arrow-down" :text="placeData[index].placeName"
 												color="#757575" size="16"></u--text>
@@ -295,15 +296,7 @@
 			toOKPage() {
 				this.isDisabled = true
 				let that = this
-				uni.requestSubscribeMessage({
-					tmplIds: ['kVkzFr0kqRMg_bHA9WPE8SU-udtMh452g0GRE2a03qU'],
-					success(res) {
-						that.submitOrder()
-					},
-					fail() {
-						that.submitOrder()
-					}
-				})
+				that.submitOrder()
 			},
 			async submitOrder() {
 				uni.showLoading({
@@ -334,7 +327,6 @@
 						duration: 1500,
 						icon: 'none',
 						title: "没有需要兑换的物品"
-
 					});
 					return
 				}
@@ -358,6 +350,7 @@
 					}, 1000)
 				} else {
 					uni.hideLoading()
+					this.isDisabled = false
 					uni.showToast({
 						duration: 1500,
 						title: res.msg,

+ 17 - 22
pageA/integral/shopcar.vue

@@ -171,31 +171,26 @@
 			},
 			toOKPage() {
 				let that = this
-				uni.requestSubscribeMessage({
-					tmplIds: ['-57EtxA5K6MUpKbvQwHblrKldu5j1tG6-JlYZNpIZ04'],
-					success(res) {
-						let data = uni.getStorageSync('shopData')
-						if (data && data.length > 0) {
-							for (var i = 0; i < data.length; i++) {
-								for (var j = 0; j < data.length - 1; j++) {
-									if (data[i].eventId !== data[j + 1].eventId) {
-										that.$showModal("不同活动商品不能同时下单")
-										return;
-									}
-								}
+				let data = uni.getStorageSync('shopData')
+				if (data && data.length > 0) {
+					for (var i = 0; i < data.length; i++) {
+						for (var j = 0; j < data.length - 1; j++) {
+							if (data[i].eventId !== data[j + 1].eventId) {
+								that.$showModal("不同活动商品不能同时下单")
+								return;
 							}
-							uni.navigateTo({
-								url: 'list'
-							})
-						} else {
-							uni.showToast({
-								duration: 1500,
-								title: '请选择至少一个物品',
-								icon: 'none'
-							})
 						}
 					}
-				})
+					uni.navigateTo({
+						url: 'list'
+					})
+				} else {
+					uni.showToast({
+						duration: 1500,
+						title: '请选择至少一个物品',
+						icon: 'none'
+					})
+				}
 			}
 		}
 	}

+ 7 - 2
pageA/login/login.vue

@@ -1,5 +1,8 @@
 <template>
 	<view class="login">
+		<!-- <view>
+			<web-view src="http://ts.willalp.com:3018/"></web-view>
+		</view> -->
 		<view class="contxent">
 			<!-- 头部logo -->
 			<view class="header">
@@ -38,14 +41,14 @@
 				<div style="padding: 0 15px;">
 					<u-row>
 						<u-col span="5">
-							<u-text text="技术支持:会山科技" color="#cacaca">
+							<u-text size="13" text="技术支持:会山科技" color="#cacaca">
 							</u-text>
 						</u-col>
 						<u-col span="3">
 							<div></div>
 						</u-col>
 						<u-col span="5">
-							<u-text style="position: absolute; right: 15px;bottom: 0;" text="hs@willalp.com"
+							<u-text size="13" style="position: absolute; right: 15px;bottom: 0;" text="hs@willalp.com"
 								color="#cacaca">
 							</u-text>
 						</u-col>
@@ -106,6 +109,8 @@
 						uni.reLaunch({
 							url: '../../pages/home/index'
 						})
+					} else {
+						uni.clearStorageSync()
 					}
 				} catch (e) {
 					// error

+ 9 - 2
pageA/login/selectOrg.vue

@@ -114,14 +114,21 @@
 					this.form.userName = data.userName
 					this.form.OrganizationCode = orgCode
 					uni.setStorageSync('setUserName', data.userName);
+					this.$wsConnection.close()
+					this.$wsConnection.initRequest()
 					uni.setStorageSync('token', res.token);
 					uni.setStorageSync('files', res.files);
 					uni.setStorageSync('QRcodeToken', res.loginUser.token);
 					this.$getAllDicts()
 					this.$getAllConfigData()
 					this.getAppUserInfo()
-					this.isRotate = false
+					setTimeout(() => {
+						this.isRotate = false
+					}, 1000)
 				} else {
+					setTimeout(() => {
+						this.isRotate = false
+					}, 1000)
 					uni.showModal({
 						title: '提示',
 						content: res.msg,
@@ -130,7 +137,6 @@
 				}
 			},
 			submitOrgInfo() {
-
 				if (this.isRotate) {
 					//判断是否加载中,避免重复点击请求
 					return false;
@@ -155,6 +161,7 @@
 				//写入 【webSocket】 地址
 				let ws = this.$BASE_SOCKET_URL + ':' + port
 				uni.setStorageSync("wsServerUrl", ws)
+				
 				this.subOrgLogin(this.orgInfo.organizationCode)
 			},
 

+ 77 - 15
pageA/msg/userMsgList.vue

@@ -94,20 +94,20 @@
 
 		.tab_title {
 			width: 100%;
-			height: 44px !important; //这个是固定的44px(所有小程序顶部高度都是 = 44px + 手机系统状态栏高度)
+			height: 50px !important; //这个是固定的44px(所有小程序顶部高度都是 = 44px + 手机系统状态栏高度)
 			line-height: 44px;
 			text-align: center;
 			// background-color: #d00;
-			background-color: #f8f8f8 !important;
+			background: #eeeeee;
 			position: fixed;
 			top: 0;
 			z-index: 9999;
-			color: #000;
+			color: #ffff00;
 			font-weight: 500;
 
 			.menu_btn {
 				width: 414rpx !important;
-				// background-color: #ffffff; //这个是小程序默认的标题栏背景色
+				background-color: #ffffff; //这个是小程序默认的标题栏背景色
 				overflow: hidden;
 
 			}
@@ -136,13 +136,14 @@
 				reserve_return_flow_run_key: '',
 				reserve_register_flow_run_key: '',
 				personnel_hire_approval_flow_run_key: '',
-				statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight, //状态栏的高度(可以设置为顶部导航条的padding-top)
-				menuWidth: uni.getStorageSync('menuInfo').menuWidth,
-				menuHeight: uni.getStorageSync('menuInfo').menuHeight,
-				menuBorderRadius: uni.getStorageSync('menuInfo').menuBorderRadius,
-				menuRight: uni.getStorageSync('menuInfo').menuRight,
-				menuTop: uni.getStorageSync('menuInfo').menuTop,
-				contentTop: uni.getStorageSync('menuInfo').contentTop
+				statusBarHeight: '', //状态栏的高度(可以设置为顶部导航条的padding-top)
+				menuInfo: {},
+				menuWidth: '',
+				menuHeight: '',
+				menuBorderRadius: '',
+				menuRight: '',
+				menuTop: '',
+				contentTop: '',
 
 			}
 		},
@@ -155,13 +156,69 @@
 			this.personnel_hire_approval_flow_run_key = uni.getStorageSync('personnel_hire_approval_flow_run_key')
 			this.personnel_dimission_approval_flow_run_key = uni.getStorageSync(
 				'personnel_dimission_approval_flow_run_key')
+			let that = this
+			uni.getSystemInfo({
+				success: (result) => {
+					// 获取手机系统的状态栏高度(不同手机的状态栏高度不同)  ( 不要使用uni-app官方文档的var(--status-bar-height) 官方这个是固定的20px  不对的 )
+					// console.log('当前手机的状态栏高度',result.statusBarHeight)
+					let statusBarHeight = result.statusBarHeight + 'px'
+					// 获取右侧胶囊的信息 单位px
+					const menuButtonInfo = uni.getMenuButtonBoundingClientRect()
+					//bottom: 胶囊底部距离屏幕顶部的距离
+					//height: 胶囊高度
+					//left:   胶囊左侧距离屏幕左侧的距离
+					//right:  胶囊右侧距离屏幕左侧的距离
+					//top:    胶囊顶部距离屏幕顶部的距离
+					//width:  胶囊宽度
+					// console.log(menuButtonInfo.width, menuButtonInfo.height, menuButtonInfo.top)
+					// console.log('计算胶囊右侧距离屏幕右边距离', result.screenWidth - menuButtonInfo.right)
+					let menuWidth = menuButtonInfo.width + 60 + 'px'
+					let menuHeight = menuButtonInfo.height + 'px'
+					let menuBorderRadius = menuButtonInfo.height / 2 + 'px'
+					let menuRight = result.screenWidth - menuButtonInfo.right + 'px'
+					let menuTop = menuButtonInfo.top + 'px'
+					let contentTop = result.statusBarHeight + 64 + 'px'
+					let menuInfo = {
+						statusBarHeight: statusBarHeight, //状态栏高度----用来给自定义导航条页面的顶部导航条设计padding-top使用:目的留出系统的状态栏区域
+						menuWidth: menuWidth, //右侧的胶囊宽度--用来给自定义导航条页面的左侧胶囊设置使用
+						menuHeight: menuHeight, //右侧的胶囊高度--用来给自定义导航条页面的左侧胶囊设置使用
+						menuBorderRadius: menuBorderRadius, //一半的圆角--用来给自定义导航条页面的左侧胶囊设置使用
+						menuRight: menuRight, //右侧的胶囊距离右侧屏幕距离--用来给自定义导航条页面的左侧胶囊设置使用
+						menuTop: menuTop, //右侧的胶囊顶部距离屏幕顶部的距离--用来给自定义导航条页面的左侧胶囊设置使用
+						contentTop: contentTop, //内容区距离页面最上方的高度--用来给自定义导航条页面的内容区定位距离使用
+					}
+					that.statusBarHeight = menuInfo.statusBarHeight //状态栏的高度(可以设置为顶部导航条的padding-top)
+					that.menuWidth = menuInfo.menuWidth
+					that.menuHeight = menuInfo.menuHeight
+					that.menuBorderRadius = menuInfo.menuBorderRadius
+					that.menuRight = menuInfo.menuRight
+					that.menuTop = menuInfo.menuTop
+					that.contentTop = menuInfo.contentTop
+					uni.setStorageSync('menuInfo', menuInfo)
+					that.$forceUpdate()
+				},
+				fail: (error) => {
+					console.log(error)
+				}
+			})
 		},
 		onShow() {
 			this.$refs.list.refresh()
 		},
 		methods: {
 			leftBack() {
-				uni.navigateBack()
+				let that = this
+				uni.navigateBack({
+					url: '../../pages/home/index',
+					success: function(res) {
+
+					},
+					fail: function(res) {
+						that.$goto('../../pages/home/index')
+					},
+				})
+
+				// 
 			},
 			confirm() {
 				this.$httpRequest({
@@ -259,9 +316,14 @@
 							})
 						} else if (res.data[0].examplesId === uni.getStorageSync(
 								'device_repairs_approval_flow_run_key')) {
-							uni.navigateTo({
-								url: "../../pageApp/ge/geDeviceRepairs"
-							})
+							this.$goto("../../pageApp/ge/geDeviceRepairs")
+						} else if (res.data[0].examplesId === uni.getStorageSync(
+								'device_scrap_approval_flow_run_key')) {
+							this.$goto('../../pageApp/ge/geDeviceScrap')
+						} else if (res.data[0].examplesId === uni.getStorageSync('purchase_approval_flow_run_key')) {
+							this.$goto('../../pageApp/ge/gePurchase')
+						} else if (res.data[0].examplesId === uni.getStorageSync('contract_approval_flow_run_key')) {
+							this.$goto('../../pageApp/ge/geContract')
 						}
 						uni.hideLoading({
 							mask: true

+ 2 - 0
pageApp/administration/reserve.vue

@@ -539,6 +539,8 @@
 			twoBindPickerChange: function(e) {
 				this.typeData.twoTypeIndex = e.detail.value
 				this.form.goodsName = ''
+				this.goodsData = []
+				this.getAppGoodsData(this.typeData.twoType[this.typeData.twoTypeIndex].id)
 			},
 			deptBindPickerChange: function(e) {
 				this.deptConfig.deptIndex = e.detail.value

+ 3 - 3
pageApp/administration/useSeal.vue

@@ -25,7 +25,7 @@
 					</uni-col>
 					<uni-col :span="18">
 						<view>
-							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usF"
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usFTime"
 								@maskClick="maskClick" @change="onchange()" />
 						</view>
 					</uni-col>
@@ -40,7 +40,7 @@
 					</uni-col>
 					<uni-col :span="18">
 						<view>
-							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usD"
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usDTime"
 								@maskClick="maskClick" @change="onchange()" />
 						</view>
 					</uni-col>
@@ -55,7 +55,7 @@
 					</uni-col>
 					<uni-col :span="19">
 						<view>
-							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usJ"
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usJTime"
 								@maskClick="maskClick" @change="onchange()" />
 						</view>
 					</uni-col>

+ 14 - 15
pageApp/components/ge.vue

@@ -34,20 +34,20 @@
 		<view v-if="data.pageType === 1 && zindeButtion === 1 && data.isEnd === '0'" class="bomButtonBody"
 			style="position: fixed;bottom: 0">
 			<uni-row>
-				<uni-col :span="8">
+				<uni-col :span="10">
 					<view class="desc">
 						<u-button color="rgb(55,186,189)" shape="circle" size="large"
-							@click="passTrue('同意','RESULT_TRUE','bottom')">同意
+							@click="passTrue('同意','RESULT_TRUE','bottom')">同意,下一步
 						</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(188, 188, 188)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_FALSE','bottom')">驳回</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(136, 188, 160)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_CASE_OF','bottom')">转交</u-button>
@@ -254,7 +254,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/pL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/pL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get',
 					urlType: this.$getUrlType()
 				});
@@ -311,11 +311,13 @@
 							title: "待审批"
 						})
 					}
-					if (this.historyData[this.historyData.length - 1] && !(this.historyData[this.historyData
-							.length - 1].comment === "自动结束")) {
-						this.list1.push({
-							title: "待审批"
-						})
+					if (this.historyData[this.historyData.length - 1]) {
+						if (!(this.historyData[this.historyData.length - 1].comment === "同意并结束") &&
+							!(this.historyData[this.historyData.length - 1].comment === "自动结束")) {
+							this.list1.push({
+								title: "待审批"
+							})
+						}
 					}
 					this.active = this.list1.length - 1
 					uni.hideLoading()
@@ -360,7 +362,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/currentPL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/currentPL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get',
 					urlType: this.$getUrlType()
 				});
@@ -400,9 +402,6 @@
 						icon: "OK",
 						showCancel: false,
 						success() {
-							uni.navigateTo({
-								url: "../../pages/app/index"
-							})
 							uni.navigateBack()
 						}
 					})
@@ -435,7 +434,7 @@
 
 <style lang="scss" scoped>
 	.desc {
-		padding: 10rpx 30rpx;
+		padding: 10rpx;
 	}
 
 	.u-page {

+ 7 - 1
pageApp/components/photo.vue

@@ -4,7 +4,7 @@
 			<uni-section :title="label" type="line">
 				<view class="example-body">
 					<uni-file-picker :auto-upload="false" :value="fileList" :limit="limit" :title="'最多选择'+ limit +'张图片'"
-						@select="select" @delete="deletePhoto"></uni-file-picker>
+						@select="select" @delete="deletePhoto" :readonly="readonly"></uni-file-picker>
 				</view>
 			</uni-section>
 		</view>
@@ -24,12 +24,18 @@
 				Type: String,
 				default: ''
 			},
+			readonly: false
 		},
 		data() {
 			return {
 				fileList: []
 			}
 		},
+		mounted() {
+			if (this.value) {
+				this.fileList = this.value
+			}
+		},
 		methods: {
 			// 获取上传状态
 			select(e) {

+ 32 - 17
pageApp/ge/geApproval.vue

@@ -31,6 +31,20 @@
 					</uni-col>
 				</uni-row>
 			</view>
+			<view>
+				<uni-row>
+					<uni-col :span="6">
+						<view class="desc">
+							是否中层领导
+						</view>
+					</uni-col>
+					<uni-col :span="18">
+						<view class="desc">
+							{{data.formData.is_middle_level_leader}}
+						</view>
+					</uni-col>
+				</uni-row>
+			</view>
 			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
 			<view>
 				<uni-row>
@@ -185,23 +199,23 @@
 		<view v-if="data.pageType === 1 && zindeButtion === 1 && data.isEnd === '0'" class="bomButtonBody"
 			style="position: fixed;bottom: 0">
 			<uni-row>
-				<uni-col :span="8">
+				<uni-col :span="10">
 					<view class="desc">
 						<u-button color="rgb(55,186,189)" shape="circle" size="large"
-							@click="passTrue('同意','RESULT_TRUE','bottom')">同意
+							@click="passTrue('同意','RESULT_TRUE','bottom')">同意,下一步
 						</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(188, 188, 188)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_FALSE','bottom')">驳回</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(136, 188, 160)" shape="circle" size="large"
-							@click="passTrue('转交','RESULT_CASE_OF','bottom')">转交</u-button>
+							@click="passTrue('驳回','RESULT_CASE_OF','bottom')">转交</u-button>
 					</view>
 				</uni-col>
 			</uni-row>
@@ -325,7 +339,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/revoke?taskId=' + this.data.taskId,
+					url: '/app/revoke?taskId=' + this.data.id,
 					method: 'get',
 					urlType: this.$getUrlType()
 				});
@@ -367,7 +381,8 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/currentPL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/currentPL?taskId=' + this.data.id + '&groupId=' + this.data.baseGroupId +
+						'&baseId=' + this.data.baseId,
 					method: 'get',
 					urlType: this.$getUrlType()
 				});
@@ -380,7 +395,8 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/pL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/pL?taskId=' + this.data.id + '&groupId=' + this.data.baseGroupId + '&baseId=' +
+						this.data.baseId,
 					method: 'get',
 					urlType: this.$getUrlType()
 				});
@@ -413,11 +429,13 @@
 							title: "待审批"
 						})
 					}
-					if (this.historyData[this.historyData.length - 1] && !(this.historyData[this.historyData
-							.length - 1].comment === "自动结束")) {
-						this.list1.push({
-							title: "待审批"
-						})
+					if (this.historyData[this.historyData.length - 1]) {
+						if (!(this.historyData[this.historyData.length - 1].comment === "同意并结束") &&
+							!(this.historyData[this.historyData.length - 1].comment === "自动结束")) {
+							this.list1.push({
+								title: "待审批"
+							})
+						}
 					}
 					this.active = this.list1.length - 1
 				}
@@ -522,9 +540,6 @@
 							setTimeout(() => {
 								that.isDisabled = false
 							}, 1000)
-							uni.navigateTo({
-								url: "../../pages/app/index"
-							})
 							uni.navigateBack()
 						}
 					})
@@ -564,7 +579,7 @@
 
 <style lang="scss" scoped>
 	.desc {
-		padding: 10rpx 30rpx;
+		padding: 10rpx;
 	}
 
 	.popup-content {

+ 599 - 0
pageApp/ge/geContract.vue

@@ -0,0 +1,599 @@
+<template>
+	<view class="geHeight">
+		<view style="height: 100%;">
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+			<view class="desc">
+				<uni-row>
+					<uni-col :span="5">
+						<view class="desc">
+							标题
+						</view>
+					</uni-col>
+					<uni-col :span="18">
+						<view class="desc">
+							{{data.formData.title}}
+						</view>
+					</uni-col>
+				</uni-row>
+			</view>
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+			<view class="desc">
+				<uni-row>
+					<uni-col :span="5">
+						<view class="desc">
+							文件
+						</view>
+					</uni-col>
+					<uni-col :span="18">
+						<view class="u-demo-block">
+							<text class="u-demo-block__title">点击下方文件名查看</text>
+							<view class="u-demo-block__content">
+								<view v-for="item in fileList" class="yyButton" style="border: 1rpx solid rgb(10, 185, 156);color: rgb(10, 185, 156);font-size: 22rpx; padding: 5rpx 15rpx;
+											 border-radius: 10rpx;" @click="previewFile(item.url)">
+									{{item.name?item.name : "无名称"}}
+								</view>
+							</view>
+						</view>
+					</uni-col>
+				</uni-row>
+			</view>
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+			<view class="desc">
+				<view class="desc">
+					图片
+				</view>
+				<view style="width: 100%;overflow-x: scroll;white-space: nowrap">
+					<u-upload v-if="data.pageType >= 1 && data.pageType <= 2" :fileList="imgList"
+						multiple width="120" height="120" useBeforeRead="true" disabled="true" uploadIcon="clock">
+					</u-upload>
+					<u-upload v-if="data.pageType >= 3" :fileList="data.formData.img_list" multiple width="120"
+						height="120" useBeforeRead="true" disabled="true" uploadIcon="clock">
+					</u-upload>
+				</view>
+			</view>
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+			<view class="desc">
+				<uni-row>
+					<uni-col :span="5">
+						<view class="desc">
+							申请人
+						</view>
+					</uni-col>
+					<uni-col :span="18">
+						<view class="desc">
+							{{data.formData.apply_user_name}}
+						</view>
+					</uni-col>
+				</uni-row>
+			</view>
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+			<view class="desc">
+				<view>
+					<uni-steps :options="list1" :active="active" direction="column" active-color="rgb(55,186,189)" />
+				</view>
+			</view>
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+			<view v-if="data.pageType === 1" class="desc">
+				<view class="desc" style="color: #bababa;">
+					批注:
+				</view>
+				<view class="desc">
+					<u--textarea v-model="pz" border="bottom"></u--textarea>
+				</view>
+			</view>
+			<u-gap height="10" bgColor="#f5f5f5"></u-gap>
+		</view>
+		<view v-if="data.pageType == 3" class="bomButtonBody" style="height: 10%;">
+			<uni-row v-if="list1 && list1.length === 1">
+				<uni-col>
+					<view class="desc">
+						<u-button :disabled="isDisabled" color="rgb(55,186,189)" shape="circle" size="large"
+							@click="revoke">撤销
+						</u-button>
+					</view>
+				</uni-col>
+			</uni-row>
+			<uni-row>
+				<uni-col>
+					<view class="desc">
+						<!-- <u-button :disabled="isDisabled" color="rgb(55,186,189)" shape="circle" size="large"
+							@click="againLaunch">再次发起
+						</u-button> -->
+					</view>
+				</uni-col>
+			</uni-row>
+		</view>
+		<u-gap height="110" bgColor="#f5f5f5"></u-gap>
+		<view v-if="data.pageType === 1 && zindeButtion === 1 && data.isEnd === '0'" class="bomButtonBody"
+			style="position: fixed;bottom: 0">
+			<uni-row>
+				<uni-col :span="10">
+					<view class="desc">
+						<u-button color="rgb(55,186,189)" shape="circle" size="large"
+							@click="passTrue('同意','RESULT_TRUE','bottom')">同意,下一步
+						</u-button>
+					</view>
+				</uni-col>
+				<uni-col :span="7.5">
+					<view class="desc">
+						<u-button color="rgb(188, 188, 188)" shape="circle" size="large"
+							@click="passTrue('驳回','RESULT_FALSE','bottom')">驳回</u-button>
+					</view>
+				</uni-col>
+				<uni-col :span="7.5">
+					<view class="desc">
+						<u-button color="rgb(136, 188, 160)" shape="circle" size="large"
+							@click="passTrue('驳回','RESULT_CASE_OF','bottom')">转交</u-button>
+					</view>
+				</uni-col>
+			</uni-row>
+		</view>
+		<view>
+			<!-- 普通弹窗 -->
+			<uni-popup ref="popup" background-color="#fff" @change="propChange">
+				<view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
+					<view class="desc">
+						<uni-row>
+							<uni-col :span="8">
+								<view style="font-size: 40rpx;color: rgb(145, 145, 145);">
+								</view>
+							</uni-col>
+							<uni-col :span="13">
+								<view style="font-size: 40rpx;color: rgb(98, 98, 98);">
+									{{nextTitle}}
+								</view>
+							</uni-col>
+							<uni-col :span="3">
+								<view @click="submitPass" style="font-size: 40rpx;color: rgb(55,186,189);">
+									确认
+								</view>
+							</uni-col>
+						</uni-row>
+					</view>
+					<view class="desc">
+						<uni-row>
+							<uni-col>
+								<view class="desc">
+									<uni-data-picker ref="picker" placeholder="请选择" :popup-title="selectTitle"
+										:localdata="dataTree" v-model="nextUserName" @change="nextApprovalChange">
+									</uni-data-picker>
+								</view>
+							</uni-col>
+						</uni-row>
+					</view>
+				</view>
+			</uni-popup>
+		</view>
+		<view>
+			<!-- 驳回选择弹窗 -->
+			<uni-popup ref="popup2" background-color="#fff" @change="propChange">
+				<view style="height: 800rpx;">
+					<view class="desc">
+						<view style="text-align: center;font-size: 30rpx;color: rgb(98, 98, 98);">
+							驳回至以下任意流程
+						</view>
+					</view>
+					<view style="padding: 20rpx 10rpx;">
+						<uni-list v-for="item in rejectHistoryData">
+							<uni-list-item :clickable="true" @click="rejectSubmit(item)" :title="item.comment" />
+						</uni-list>
+					</view>
+				</view>
+			</uni-popup>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				pz: '',
+				nextApproval: '',
+				nextUserName: '',
+				app_vacate_type: uni.getStorageSync('app_vacate_type'),
+				data: uni.getStorageSync("approval"),
+				form: {},
+				dataTree: [],
+				queryParams: {},
+				historyData: [],
+				nextTitle: '',
+				selectTitle: '',
+				active: 0,
+				list1: [],
+				isDisabled: false,
+				actions: [],
+				type: 'center',
+				zindeButtion: 1,
+				rejectHistoryData: [],
+				fileList:[],
+				imgList:[]
+			}
+		},
+		onLoad() {
+			uni.showLoading({
+				title: '正在加载'
+			})
+			setTimeout(() => {
+				let start = new Date().getTime()
+				this.fileList = JSON.parse(this.data.formData.file_list)
+				this.imgList = JSON.parse(this.data.formData.img_list)
+			}, 10)
+			this.getHouXuanZu()
+			this.getListHistory()
+			this.readTask()
+			if (this.data.baseName && this.data.pageType === 1) {
+				uni.setNavigationBarTitle({
+					title: this.data.baseName
+				})
+			}
+		},
+		methods: {
+			rejectSubmit(item) {
+				this.form.rejectBaseId = item.baseId
+				this.nextApproval = item.operator
+				this.submitPass()
+			},
+			nextApprovalChange(e) {
+				console.log('onchange:', e.detail.value[1]);
+				this.nextUserName = e.detail.value[1].text
+				this.nextApproval = e.detail.value[1].value
+			},
+			propChange(e) {
+				if (e.show) {
+					this.zindeButtion = 0
+				} else {
+					this.zindeButtion = 1
+				}
+			},
+			againLaunch() {
+				this.$goto('../hr/leave')
+			},
+			async revoke() {
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/revoke?taskId=' + this.data.taskId,
+					method: 'get'
+				});
+				if (res.code === 200) {
+					uni.showModal({
+						title: "撤销成功",
+						icon: "OK",
+						showCancel: false,
+						success() {
+							uni.navigateBack()
+						}
+					})
+				} else {
+					uni.showModal({
+						title: "撤销失败",
+						content: res.msg,
+						showCancel: false,
+						success() {
+							uni.navigateBack()
+						}
+					})
+				}
+			},
+			previewFile(fileUrl) {
+				uni.showLoading({
+					title: '加载中'
+				})
+				uni.downloadFile({
+					url: fileUrl, //后端返回的文件地址
+					// filePath: wx.env.USER_DATA_PATH + '/' + item.name + '.' + item.value.split('.')[item.value.split('.').length - 1],
+					success: function(res) {
+						if (res.statusCode === 200) {
+							uni.openDocument({
+								showMenu: true,
+								filePath: res.tempFilePath,
+								success: function(res) {
+									console.log(res, '打开文件成功')
+								},
+								fail: (err) => {
+									uni.showToast({
+										title: '打开文件失败请重试',
+										icon: 'none'
+									})
+								}
+							})
+						} else {
+							uni.showToast({
+								title: '打开文件失败请重试',
+								icon: 'none'
+							})
+						}
+						uni.hideLoading()
+					},
+					fail: (err) => {
+						uni.hideLoading()
+						uni.showToast({
+							title: '加载失败请重试',
+							icon: "none"
+						})
+					}
+				})
+
+			},
+			async readTask() {
+				if (this.data.msgIsRead === '0') {
+					const {
+						data: res
+					} = await this.$httpRequest({
+						url: '/app/rt?taskId=' + this.data.id,
+						method: 'get'
+					});
+					if (res.code === 200) {
+						let msgData = uni.getStorageSync("msgData")
+						if (this.pageType === 1) {
+							--msgData.m1
+						} else if (this.pageType === 3) {
+							--msgData.m4
+						} else if (this.pageType === 4) {
+							--msgData.m7
+						}
+						uni.setStorageSync("msgData", msgData)
+					}
+				}
+			},
+			async getHouXuanZu() {
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/pL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					method: 'get'
+				});
+				if (res.code === 200) {
+					this.dataTree = res.data
+				}
+				uni.hideLoading()
+			},
+			async getListHistory() {
+				let id = this.data.taskId ? this.data.taskId : this.data.id
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/ctr?taskId=' + id,
+					method: 'get',
+					data: this.queryParams
+				});
+				if (res.code === 200) {
+					uni.hideLoading()
+					this.historyData = res.data
+					this.list1
+					if (0 != this.historyData.length) {
+						for (var i = 0; i < this.historyData.length; i++) {
+							if (this.historyData[i].comment && this.historyData[i].comment === "自动结束") {
+								this.list1.push({
+									title: this.historyData[i].comment,
+									desc: this.historyData[i].createTime
+								})
+							} else {
+								this.list1.push({
+									title: this.historyData[i].operator + ' ' + this.historyData[i].comment,
+									desc: this.historyData[i].createTime
+								})
+							}
+						}
+					} else {
+						this.list1.push({
+							title: "待审批"
+						})
+					}
+					if (this.historyData[this.historyData.length - 1]) {
+						if (!(this.historyData[this.historyData.length - 1].comment === "同意并结束") &&
+							!(this.historyData[this.historyData.length - 1].comment === "自动结束")) {
+							this.list1.push({
+								title: "待审批"
+							})
+						}
+					}
+					this.active = this.list1.length - 1
+				}
+			},
+			dataForm(comment, pass) {
+				this.form = {
+					comment: this.pz ? this.pz : comment,
+					result: pass,
+					baseId: this.data.baseId,
+					taskId: this.data.id,
+					nextApproval: this.nextApproval,
+					nextUserName: this.nextUserName,
+					formData: this.data.formData
+				}
+			},
+			passTrue(comment, pass, type) {
+				this.dataForm(comment, pass)
+				if (pass === 'RESULT_TRUE' && this.data.isCandidate == "1") {
+					this.submitPass()
+					return
+				}
+				if (pass === 'RESULT_FALSE') {
+					this.getRejectListHistory()
+					return
+				}
+				if (pass === 'RESULT_CASE_OF') {
+					this.getCurrentHouXuanZu()
+					this.selectTitle = '请选择转交人'
+					this.nextTitle = '请选择转交人'
+					this.$refs.popup.open(type)
+					return
+				}
+				this.nextTitle = '下一步审批人'
+				this.type = type
+				// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
+				this.$refs.popup.open(type)
+			},
+			async getRejectListHistory() {
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				})
+				let id = this.data.taskId ? this.data.taskId : this.data.id
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/reject/ctr?taskId=' + id,
+					method: 'get',
+					data: this.queryParams
+				});
+				if (res.code === 200) {
+					if (res.data.length == 0) {
+						this.submitPass()
+						return
+					}
+					this.$refs.popup2.open('bottom')
+					this.rejectHistoryData = res.data
+					uni.hideLoading()
+				}
+			},
+			async getCurrentHouXuanZu() {
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				})
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/currentPL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					method: 'get'
+				});
+				if (res.code === 200) {
+					this.dataTree = res.data
+					uni.hideLoading()
+				}
+			},
+			async submitPass() {
+				uni.showLoading({
+					mask: true,
+					title: '正在提交'
+				})
+				if (this.form.result !== 'RESULT_FALSE' && this.data.isCandidate == "0" && 2.0 < parseFloat(this.data
+						.formData.total_time)) {
+					if (!this.nextApproval) {
+						uni.showModal({
+							content: '请选择批准人',
+							title: '提交失败',
+							showCancel: false
+						})
+						this.isDisabled = false
+						return
+					}
+				}
+				this.form.nextApproval = this.nextApproval
+				this.form.nextUserName = this.nextUserName
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/nextStep',
+					method: 'post',
+					data: this.form
+				});
+				if (res.code === 200) {
+					uni.hideLoading()
+					uni.showModal({
+						title: "提交成功",
+						icon: "OK",
+						showCancel: false,
+						success() {
+							setTimeout(() => {
+								this.isDisabled = false
+							}, 1000)
+							uni.navigateBack()
+						}
+					})
+				} else {
+					uni.showModal({
+						title: "提交失败",
+						icon: "ERROR",
+						showCancel: false,
+						content: res.msg
+					})
+				}
+				setTimeout(() => {
+					this.isDisabled = false
+				}, 1000)
+				setTimeout(() => {
+					this.isDisabled = false
+					uni.hideLoading()
+				}, 1000)
+			},
+			dateFormat(time) {
+				let date = new Date(time);
+				let year = date.getFullYear();
+				// 在日期格式中,月份是从0开始的,因此要加0,使用三元表达式在小于10的前面加0,以达到格式统一  如 09:11:05
+				let month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+				let day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+				let hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+				let minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+				let seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+				// 拼接
+				// return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
+				return year + "/" + month + "/" + day;
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.desc {
+		padding: 10rpx;
+	}
+
+	.u-page {
+		&__button-item {
+			margin: 0 15px 5px 0;
+		}
+	}
+
+	.u-demo-block__content {
+		flex-direction: row;
+		flex-wrap: wrap;
+		align-items: center;
+	}
+
+
+	.popup-content {
+		height: 800rpx;
+	}
+
+
+	.geHeight {
+		height: 100%;
+		position: relative;
+	}
+
+	.bomButtonBody {
+		border-top: 5rpx #f5f5f5 solid;
+		padding: 30rpx 0 50rpx 0;
+		width: 100%;
+		background-color: #ffffff;
+	}
+
+	.status-btn {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		height: 92rpx;
+		margin: 30rpx;
+		background-color: #007AFF;
+	}
+
+	.example-body {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		padding: 15px;
+		flex-direction: row;
+	}
+
+	.check-btn {
+		display: flex;
+		justify-content: space-between;
+		margin-bottom: 10px;
+	}
+</style>

+ 28 - 2
pageApp/ge/geDeviceRepairs.vue

@@ -3,17 +3,26 @@
 		<view>
 			<hs-show label="申请人" :data="data.formData.apply_user_name"></hs-show>
 			<hs-show label="部门" :data="data.formData.dept_id" mode="dept"></hs-show>
+			<hs-show label="提交类型" :data="data.formData.submit_type" mode="dict" dictKey="device_repairs_submit_type">
+			</hs-show>
 			<hs-show label="紧急程度" :data="data.formData.urgency_level" mode="dict"
-				dictKey="device_repairs_urgency_level"></hs-show>
+				dictKey="device_repairs_urgency_level">
+			</hs-show>
 			<hs-show label="设备位置" :data="data.formData.device_loca"></hs-show>
 			<hs-show label="报修说明" :data="data.formData.remark"></hs-show>
 			<view class="desc">
 				设备图片
 			</view>
 			<view class="desc">
-				<uni-file-picker :value="JSON.parse(data.formData.photos)"  file-mediatype="image" readonly></uni-file-picker>
+				<uni-file-picker :value="data.formData.photos" file-mediatype="image" readonly>
+				</uni-file-picker>
 			</view>
 		</view>
+		<u-gap height="10" bgColor="#f7f7f7"></u-gap>
+		<view>
+			<hs-photo label="维保人上传" limit="5" :value="JSON.parse(data.formData.maintenance_record)"
+				@input="submitMaintenanceRecord" :readonly="data.pageType === 1?false:true"></hs-photo>
+		</view>
 		<ge></ge>
 	</view>
 </template>
@@ -30,6 +39,23 @@
 			}
 		},
 		mounted() {
+			this.data.formData.photos = JSON.parse(this.data.formData.photos)
+		},
+		methods: {
+			submitMaintenanceRecord(e) {
+				let data = {
+					id: this.data.formData.id,
+					maintenanceRecord: e
+				}
+				this.$httpRequest({
+					url: '/app/submitMaintenanceRecord',
+					method: 'post',
+					data: data,
+					urlType: this.$getUrlType()
+				}).then(res => {
+
+				})
+			}
 		}
 	}
 </script>

+ 0 - 1
pageApp/ge/geDeviceScrap.vue

@@ -11,7 +11,6 @@
 
 			<hs-show label="报废原因" :data="data.formData.remark"></hs-show>
 			<hs-show label="设备位置" :data="data.formData.deposit_loca"></hs-show>
-			<hs-show label="报修状态" :data="data.formData.repairs_status"></hs-show>
 			<view class="desc">
 				设备图片
 			</view>

+ 1 - 1
pageApp/ge/geDimission.vue

@@ -85,7 +85,7 @@
 						</view>
 					</uni-col>
 					<uni-col :span="19">
-						<view class="desc">
+						<view class="desc" v-if="data.formData.remark">
 							{{data.formData.remark}}
 						</view>
 					</uni-col>

+ 15 - 16
pageApp/ge/geEntry.vue

@@ -212,23 +212,23 @@
 		<view v-if="data.pageType === 1 && zindeButtion === 1 && data.isEnd === '0'" class="bomButtonBody"
 			style="position: fixed;bottom: 0">
 			<uni-row>
-				<uni-col :span="8">
+				<uni-col :span="10">
 					<view class="desc">
 						<u-button color="rgb(55,186,189)" shape="circle" size="large"
-							@click="passTrue('同意','RESULT_TRUE','bottom')">同意
+							@click="passTrue('同意','RESULT_TRUE','bottom')">同意,下一步
 						</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(188, 188, 188)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_FALSE','bottom')">驳回</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(136, 188, 160)" shape="circle" size="large"
-							@click="passTrue('转交','RESULT_CASE_OF','bottom')">转交</u-button>
+							@click="passTrue('驳回','RESULT_CASE_OF','bottom')">转交</u-button>
 					</view>
 				</uni-col>
 			</uni-row>
@@ -438,7 +438,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/pL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/pL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get'
 				});
 				if (res.code === 200) {
@@ -492,11 +492,13 @@
 							title: "待审批"
 						})
 					}
-					if (this.historyData[this.historyData.length - 1] && !(this.historyData[this.historyData
-							.length - 1].comment === "自动结束")) {
-						this.list1.push({
-							title: "待审批"
-						})
+					if (this.historyData[this.historyData.length - 1]) {
+						if (!(this.historyData[this.historyData.length - 1].comment === "同意并结束") &&
+							!(this.historyData[this.historyData.length - 1].comment === "自动结束")) {
+							this.list1.push({
+								title: "待审批"
+							})
+						}
 					}
 					this.active = this.list1.length - 1
 					uni.hideLoading()
@@ -543,7 +545,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/currentPL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/currentPL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get'
 				});
 				if (res.code === 200) {
@@ -587,9 +589,6 @@
 							setTimeout(() => {
 								this.isDisabled = false
 							}, 1000)
-							uni.navigateTo({
-								url: "../../pages/app/index"
-							})
 							uni.navigateBack()
 						}
 					})
@@ -628,7 +627,7 @@
 
 <style lang="scss" scoped>
 	.desc {
-		padding: 10rpx 30rpx;
+		padding: 10rpx;
 	}
 
 	.u-page {

+ 14 - 15
pageApp/ge/geNewsApproval.vue

@@ -107,20 +107,20 @@
 		<view v-if="data.pageType === 1 && zindeButtion === 1 && data.isEnd === '0'" class="bomButtonBody"
 			style="position: fixed;bottom: 0">
 			<uni-row>
-				<uni-col :span="8">
+				<uni-col :span="10">
 					<view class="desc">
 						<u-button color="rgb(55,186,189)" shape="circle" size="large"
-							@click="passTrue('同意','RESULT_TRUE','bottom')">同意
+							@click="passTrue('同意','RESULT_TRUE','bottom')">同意,下一步
 						</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(188, 188, 188)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_FALSE','bottom')">驳回</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(136, 188, 160)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_CASE_OF','bottom')">转交</u-button>
@@ -341,7 +341,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/pL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/pL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get'
 				});
 				if (res.code === 200) {
@@ -381,11 +381,13 @@
 							title: "待审批"
 						})
 					}
-					if (this.historyData[this.historyData.length - 1] && !(this.historyData[this.historyData
-							.length - 1].comment === "自动结束")) {
-						this.list1.push({
-							title: "待审批"
-						})
+					if (this.historyData[this.historyData.length - 1]) {
+						if (!(this.historyData[this.historyData.length - 1].comment === "同意并结束") &&
+							!(this.historyData[this.historyData.length - 1].comment === "自动结束")) {
+							this.list1.push({
+								title: "待审批"
+							})
+						}
 					}
 					this.active = this.list1.length - 1
 				}
@@ -454,7 +456,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/currentPL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/currentPL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get'
 				});
 				if (res.code === 200) {
@@ -498,9 +500,6 @@
 							setTimeout(() => {
 								this.isDisabled = false
 							}, 1000)
-							uni.navigateTo({
-								url: "../../pages/app/index"
-							})
 							uni.navigateBack()
 						}
 					})
@@ -539,7 +538,7 @@
 
 <style lang="scss" scoped>
 	.desc {
-		padding: 10rpx 30rpx;
+		padding: 10rpx;
 	}
 
 	.u-page {

+ 81 - 4
pageApp/ge/gePurchase.vue

@@ -3,15 +3,16 @@
 		<view>
 			<hs-show label="申请人" :data="data.formData.apply_user_name"></hs-show>
 			<hs-show label="部门" :data="data.formData.dept_id" mode="dept"></hs-show>
+			<hs-show label="物品类型" :data="data.formData.purchase_type" mode="dict" dictKey="goods_property_type"></hs-show>
 			<hs-show label="申请原因" :data="data.formData.remark"></hs-show>
 			<hs-show label="用途" :data="data.formData.what_use"></hs-show>
 			<hs-show label="规格型号" :data="data.formData.goods_gg"></hs-show>
-			<hs-show label="物品类型" :data="data.formData.goods_type" mode="dict" dictKey="goods_storage_type"></hs-show>
+			<!-- <hs-show label="物品类型" :data="data.formData.goods_type" mode="dict" dictKey="goods_storage_type"></hs-show> -->
 			<hs-show label="物品名称" :data="data.formData.goods_name"></hs-show>
 			<hs-show label="需求数量" :data="data.formData.want_use_amount"></hs-show>
 			<hs-show label="预估单价" :data="data.formData.yg_unit_price"></hs-show>
 			<hs-show label="预估总价" :data="data.formData.yg_total_prices"></hs-show>
-			<hs-show label="采购状态" :data="data.formData.purchase_status"></hs-show>
+			<!-- <hs-show label="采购状态" :data="data.formData.purchase_status"></hs-show> -->
 			<view class="desc">
 				已添加照片
 			</view>
@@ -21,6 +22,21 @@
 			</view>
 		</view>
 		<ge></ge>
+		<view class="content" v-if="data.pageType === 1">
+			<!-- @touchstart="handleStart" @touchmove="handleMove" @touchend="handleEnd" -->
+			<view :style="{'transform':'translate3d('+0+'px,'+-180+'px,0)'}" class="touch">
+				<view @click="confirm1">
+					<view style="margin-left: 25rpx;">
+						<uni-row>
+							同意
+						</uni-row>
+						<uni-row>
+							结束
+						</uni-row>
+					</view>
+				</view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -35,7 +51,44 @@
 				data: uni.getStorageSync("approval")
 			}
 		},
-		mounted() {}
+		mounted() {},
+		methods: {
+			confirm1(e) {
+				let that = this;
+				uni.showModal({
+					title: "提醒",
+					content: "确定在当前节点同意并结束吗?",
+					success(res) {
+						if (res.confirm) {
+							that.$httpRequest({
+								url: '/app/useSealEnd?taskId=' + that.data.id,
+								method: 'get'
+							}).then((res) => {
+								if (res.data.code === 200) {
+									uni.showModal({
+										title: "结束成功",
+										icon: "OK",
+										showCancel: false,
+										success() {
+											uni.navigateBack()
+										}
+									})
+								} else {
+									uni.showModal({
+										title: "结束失败",
+										content: res.msg,
+										showCancel: false,
+										success() {
+											uni.navigateBack()
+										}
+									})
+								}
+							})
+						}
+					}
+				})
+			}
+		}
 	}
 </script>
 
@@ -44,4 +97,28 @@
 		padding: 10rpx 30rpx;
 		color: #818181;
 	}
-</style>
+
+	.content {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.touch {
+		position: fixed;
+		right: -5rpx;
+		bottom: 60rpx;
+		width: 105rpx;
+		height: 105rpx;
+		padding: 5rpx;
+		background-color: rgb(10, 185, 156);
+		border-top-left-radius: 50%;
+		border-bottom-left-radius: 50%;
+		color: #fff;
+		font-size: 50rpx;
+		/* 去除标签点击事件高亮效果 */
+		-webkit-tap-highlight-color: transparent;
+		/* 使用transform: translate3d 处理性能高 GUP */
+	}
+</style>

+ 14 - 15
pageApp/ge/geReserveApproval.vue

@@ -191,20 +191,20 @@
 		<view v-if="data.pageType === 1 && zindeButtion === 1 && data.isEnd === '0'" class="bomButtonBody"
 			style="position: fixed;bottom: 0">
 			<uni-row>
-				<uni-col :span="8">
+				<uni-col :span="10">
 					<view class="desc">
 						<u-button color="rgb(55,186,189)" shape="circle" size="large"
-							@click="passTrue('同意','RESULT_TRUE','bottom')">同意
+							@click="passTrue('同意','RESULT_TRUE','bottom')">同意,下一步
 						</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(188, 188, 188)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_FALSE','bottom')">驳回</u-button>
 					</view>
 				</uni-col>
-				<uni-col :span="8">
+				<uni-col :span="7.5">
 					<view class="desc">
 						<u-button color="rgb(136, 188, 160)" shape="circle" size="large"
 							@click="passTrue('驳回','RESULT_CASE_OF','bottom')">转交</u-button>
@@ -414,7 +414,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/pL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/pL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get'
 				});
 				if (res.code === 200) {
@@ -468,11 +468,13 @@
 							title: "待审批"
 						})
 					}
-					if (this.historyData[this.historyData.length - 1] && !(this.historyData[this.historyData
-							.length - 1].comment === "自动结束")) {
-						this.list1.push({
-							title: "待审批"
-						})
+					if (this.historyData[this.historyData.length - 1]) {
+						if (!(this.historyData[this.historyData.length - 1].comment === "同意并结束") &&
+							!(this.historyData[this.historyData.length - 1].comment === "自动结束")) {
+							this.list1.push({
+								title: "待审批"
+							})
+						}
 					}
 					this.active = this.list1.length - 1
 					uni.hideLoading()
@@ -519,7 +521,7 @@
 				const {
 					data: res
 				} = await this.$httpRequest({
-					url: '/app/currentPL?groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
+					url: '/app/currentPL?taskId='+ this.data.id +'&groupId=' + this.data.baseGroupId + '&baseId=' + this.data.baseId,
 					method: 'get'
 				});
 				if (res.code === 200) {
@@ -563,9 +565,6 @@
 							setTimeout(() => {
 								this.isDisabled = false
 							}, 1000)
-							uni.navigateTo({
-								url: "../../pages/app/index"
-							})
 							uni.navigateBack()
 						}
 					})
@@ -604,7 +603,7 @@
 
 <style lang="scss" scoped>
 	.desc {
-		padding: 10rpx 30rpx;
+		padding: 10rpx;
 	}
 
 	.u-page {

+ 79 - 3
pageApp/ge/geUseSeal.vue

@@ -6,9 +6,9 @@
 			<hs-show label="使用形式" :data="data.formData.us_a" mode="dict" dictKey="hzl_seal_use_type"></hs-show>
 			<hs-show label="印章类别" :data="data.formData.us_b" mode="dict" dictKey="seal_type"></hs-show>
 			<hs-show label="使用地点" :data="data.formData.us_e" mode="dict" dictKey="hzl_seal_use_address"></hs-show>
-			<hs-show label="用印开始时间" :data="data.formData.us_f"></hs-show>
-			<hs-show label="用印结束时间 " :data="data.formData.us_d"></hs-show>
-			<hs-show label="归还时间" :data="data.formData.us_j"></hs-show>
+			<hs-show label="用印开始时间" :data="data.formData.us_f_time"></hs-show>
+			<hs-show label="用印结束时间 " :data="data.formData.us_d_time"></hs-show>
+			<hs-show label="归还时间" :data="data.formData.us_j_time"></hs-show>
 			<hs-show label="文件类型" :data="data.formData.so_g" mode="dict" dictKey="hzl_file_type"></hs-show>
 			<hs-show label="文件名称" :data="data.formData.so_h"></hs-show>
 			<hs-show label="文件份数" :data="data.formData.so_i"></hs-show>
@@ -16,6 +16,21 @@
 			<hs-show label="备注" :data="data.formData.remark"></hs-show>
 		</view>
 		<ge></ge>
+		<view class="content" v-if="data.pageType === 1 && data.isEnd === '0'">
+			<!-- @touchstart="handleStart" @touchmove="handleMove" @touchend="handleEnd" -->
+			<view :style="{'transform':'translate3d('+0+'px,'+-180+'px,0)'}" class="touch">
+				<view @click="confirm1">
+					<view style="margin-left: 25rpx;">
+						<uni-row>
+							同意
+						</uni-row>
+						<uni-row>
+							结束
+						</uni-row>
+					</view>
+				</view>
+			</view>
+		</view>
 	</view>
 </template>
 
@@ -32,6 +47,43 @@
 		},
 		onLoad() {
 
+		},
+		methods: {
+			confirm1(e) {
+				let that = this;
+				uni.showModal({
+					title: "提醒",
+					content: "确定在当前节点同意并结束吗?",
+					success(res) {
+						if (res.confirm) {
+							that.$httpRequest({
+								url: '/app/useSealEnd?taskId=' + that.data.id,
+								method: 'get'
+							}).then((res) => {
+								if (res.data.code === 200) {
+									uni.showModal({
+										title: "结束成功",
+										icon: "OK",
+										showCancel: false,
+										success() {
+											uni.navigateBack()
+										}
+									})
+								} else {
+									uni.showModal({
+										title: "结束失败",
+										content: res.msg,
+										showCancel: false,
+										success() {
+											uni.navigateBack()
+										}
+									})
+								}
+							})
+						}
+					}
+				})
+			},
 		}
 	}
 </script>
@@ -41,4 +93,28 @@
 		padding: 10rpx 30rpx;
 		color: #818181;
 	}
+
+	.content {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.touch {
+		position: fixed;
+		right: -5rpx;
+		bottom: 60rpx;
+		width: 105rpx;
+		height: 105rpx;
+		padding: 5rpx;
+		background-color: rgb(10, 185, 156);
+		border-top-left-radius: 50%;
+		border-bottom-left-radius: 50%;
+		color: #fff;
+		font-size: 50rpx;
+		/* 去除标签点击事件高亮效果 */
+		-webkit-tap-highlight-color: transparent;
+		/* 使用transform: translate3d 处理性能高 GUP */
+	}
 </style>

+ 37 - 0
pageApp/hr/leave.vue

@@ -29,6 +29,31 @@
 							</view>
 						</view>
 					</view>
+					<view class="desc">
+						<uni-row>
+							<uni-col :span="8">
+								<view style="font-size: 25rpx;">
+									是否为中层领导
+								</view>
+							</uni-col>
+							<uni-col :span="16">
+								<view>
+									<uni-row>
+										<radio-group @change="radioChange2">
+											<uni-col :span="12" v-for="(item, index) in radiolist2">
+												<label :key="item.value">
+													<radio color="rgb(55,186,189)" :value="item.value"
+														:checked="index === current">
+														{{item.value}}
+													</radio>
+												</label>
+											</uni-col>
+										</radio-group>
+									</uni-row>
+								</view>
+							</uni-col>
+						</uni-row>
+					</view>
 					<view class="desc">
 						<uni-row>
 							<uni-col :span="5">
@@ -243,12 +268,20 @@
 						value: '离沪'
 					}
 				],
+				radiolist2: [{
+						value: '否'
+					},
+					{
+						value: '是'
+					}
+				],
 				imageStyles: {
 					width: 100,
 					height: 100,
 					display: 'block'
 				},
 				form: {
+					isMiddleLevelLeader: '否',
 					isLh: '不离沪'
 				},
 				showSex: false,
@@ -308,6 +341,7 @@
 			if (this.data) {
 				this.form = {
 					isLh: this.data.formData.is_lh,
+					isMiddleLevelLeader: this.data.formData.is_middle_level_leader,
 					type: this.data.formData.type,
 					title: this.data.formData.title,
 					leaveStartTime: this.data.formData.leave_start_time.slice(0, 10).replace('/', '-').replace('/',
@@ -364,6 +398,9 @@
 			radioChange: function(evt) {
 				this.form.isLh = evt.detail.value
 			},
+			radioChange2: function(evt) {
+				this.form.isMiddleLevelLeader = evt.detail.value
+			},
 			// 获取上传状态
 			select(e) {
 				console.log('选择文件:', e)

+ 2 - 1
pageApp/my/MyApproval.vue

@@ -103,7 +103,6 @@
 		},
 		methods: {
 			handleTest(item) {
-				console.log(this.isClick)
 				if (this.isClick) {
 					return
 				}
@@ -138,6 +137,8 @@
 					this.$goto('../ge/geDeviceScrap')
 				}else if (item.examplesId === uni.getStorageSync('purchase_approval_flow_run_key')) {
 					this.$goto('../ge/gePurchase')
+				}else if (item.examplesId === uni.getStorageSync('contract_approval_flow_run_key')) {
+					this.$goto('../ge/geContract')
 				}
 			},
 			async taskList(paging) {

+ 2 - 0
pageApp/my/myAll.vue

@@ -127,6 +127,8 @@
 					this.$goto('../ge/geDeviceScrap')
 				} else if (item.examplesId === uni.getStorageSync('purchase_approval_flow_run_key')) {
 					this.$goto('../ge/gePurchase')
+				} else if (item.examplesId === uni.getStorageSync('contract_approval_flow_run_key')) {
+					this.$goto('../ge/geContract')
 				}
 
 				this.list = []

+ 2 - 0
pageApp/my/myCc.vue

@@ -127,6 +127,8 @@
 					this.$goto('../ge/geDeviceScrap')
 				}else if (item.examplesId === uni.getStorageSync('purchase_approval_flow_run_key')) {
 					this.$goto('../ge/gePurchase')
+				}else if (item.examplesId === uni.getStorageSync('contract_approval_flow_run_key')) {
+					this.$goto('../ge/geContract')
 				}
 
 				this.list = []

+ 2 - 0
pageApp/my/myLaunch.vue

@@ -156,6 +156,8 @@
 					this.$goto('../ge/geDeviceScrap')
 				}else if (item.examplesId === uni.getStorageSync('purchase_approval_flow_run_key')) {
 					this.$goto('../ge/gePurchase')
+				}else if (item.examplesId === uni.getStorageSync('contract_approval_flow_run_key')) {
+					this.$goto('../ge/geContract')
 				}
 
 				this.list = []

+ 186 - 77
pageApp/other/contract.vue

@@ -1,39 +1,77 @@
 <template>
 	<view>
 		<view style="padding:5rpx 20rpx 45rpx 20rpx;">
+			<view class="desc">
+				<hs-input label="申请人" v-model="form.name" :disabled="true" />
+			</view>
+			<view class="desc">
+				<hs-dept-select label="部门" v-model="form.department" :autofill="true" />
+			</view>
+			<!-- <view class="desc">
+				<hs-dict-select label="使用形式" dictKey="hzl_seal_use_type" v-model="form.usA" />
+			</view> -->
+			<!-- <view class="desc">
+				<hs-dict-select label="印章类型" dictKey="seal_type" v-model="form.usB" />
+			</view> -->
+			<view class="desc">
+				<hs-dict-select label="使用地点" dictKey="hzl_seal_use_address" v-model="form.usE" />
+			</view>
+<!-- 			<view class="desc">
+				<uni-row>
+					<uni-col :span="6">
+						<view class="desc" style="font-size: 25rpx;">
+							用印开始时间
+						</view>
+					</uni-col>
+					<uni-col :span="18">
+						<view>
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usF"
+								@maskClick="maskClick" @change="onchange()" />
+						</view>
+					</uni-col>
+				</uni-row>
+			</view>
 			<view class="desc">
+				<uni-row>
+					<uni-col :span="6">
+						<view class="desc" style="font-size: 25rpx;">
+							用印结束时间
+						</view>
+					</uni-col>
+					<uni-col :span="18">
+						<view>
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usD"
+								@maskClick="maskClick" @change="onchange()" />
+						</view>
+					</uni-col>
+				</uni-row>
+			</view> -->
+<!-- 			<view class="desc">
 				<uni-row>
 					<uni-col :span="5">
 						<view class="desc" style="font-size: 25rpx;">
-							合同名称
+							归还时间
 						</view>
 					</uni-col>
 					<uni-col :span="19">
 						<view>
-							<uni-easyinput primaryColor="#37babd" v-model="form.totalTime">
-							</uni-easyinput>
+							<uni-datetime-picker type="date" :clear-icon="false" v-model="form.usJ"
+								@maskClick="maskClick" @change="onchange()" />
 						</view>
 					</uni-col>
 				</uni-row>
+			</view> -->
+			<view class="desc">
+				<hs-dict-select label="文件类型" dictKey="hzl_file_type" v-model="form.soG" />
 			</view>
 			<view class="desc">
-				<view class="desc" style="font-size: 25rpx;">
-					合同内容:
-				</view>
-				<view>
-					<uni-easyinput type="textarea" primaryColor="#37babd" v-model="form.totalTime">
-					</uni-easyinput>
-				</view>
+				<hs-input label="文件名称" v-model="form.soH" model="textarea" />
 			</view>
 			<view class="desc">
-				<view>
-					请上传合同文件照片
-				</view>
-				<view style="width: 100%;overflow-x: scroll;white-space: nowrap">
-					<u-upload style="margin: 0;" :fileList="fileList" @afterRead="afterRead" @delete="deletePic"
-						name="1" multiple :maxCount="6" width="120" height="120" uploadIcon="plus-circle">
-					</u-upload>
-				</view>
+				<hs-input label="文件份数" v-model="form.soI" />
+			</view>
+			<view class="desc">
+				<hs-input label="申请原因" v-model="form.conclusion" model="textarea" />
 			</view>
 		</view>
 		<u-gap height="70" bgColor="#ffffff"></u-gap>
@@ -47,6 +85,41 @@
 				</u-row>
 			</view>
 		</view>
+		<!-- 下一步选择人员弹窗 -->
+		<uni-popup ref="popup" background-color="#fff">
+			<view style="height: 800rpx;">
+				<view class="desc">
+					<uni-row>
+						<uni-col :span="10">
+							<view style="font-size: 40rpx;color: rgb(145, 145, 145);">
+							</view>
+						</uni-col>
+						<uni-col :span="11">
+							<view style="font-size: 40rpx;color: rgb(98, 98, 98);">
+								下一步
+							</view>
+						</uni-col>
+						<uni-col :span="3">
+							<view @click="submitPass" style="font-size: 40rpx;color: rgb(55,186,189);">
+								确认
+							</view>
+						</uni-col>
+					</uni-row>
+				</view>
+				<view>
+					<!--  -->
+					<uni-row>
+						<uni-col>
+							<view style="padding: 15rpx 20rpx;">
+								<uni-data-picker ref="picker" placeholder="请选择" :popup-title="selectTitle"
+									:localdata="dataTree" v-model="hxForm.candidate" @change="nextApprovalChange">
+								</uni-data-picker>
+							</view>
+						</uni-col>
+					</uni-row>
+				</view>
+			</view>
+		</uni-popup>
 	</view>
 </template>
 
@@ -55,74 +128,97 @@
 		data() {
 			return {
 				isDisabled: false,
+				selectTitle: '',
+				hxForm: {},
+				pageType: '',
+				searchGoodsName: '',
+				dataTree: [],
 				index: 0,
-				fileList: [],
-				wpTypes: ['办公用品', '固定资产', '低值易耗品', '广告印刷品', '其他']
+				sealTypes: ['公章', '合同专用章', '财务专用章', '携带外出办公', '其他'],
+				deptConfig: {
+					deptDatas: [],
+					deptIndex: uni.getStorageSync('deptData'),
+				},
+				defaultDept: '',
+				form: {}
 			}
 		},
+		onLoad() {
+			//申请人初始化
+			this.form.name = uni.getStorageSync("userInfo").nickName
+		},
 		methods: {
-			submit() {
-
-			},
-			onchange(e) {
+			async submit() {
+				this.isDisabled = true
 				setTimeout(() => {
-
-				}, 200)
-			},
-			maskClick(e) {},
-			bindPickerChange: function(e) {
-				this.index = e.detail.value
-			},
-			// 删除图片
-			deletePic(event) {
-				this.fileList.splice(event.index, 1)
-			},
-			// 新增图片
-			async afterRead(event) {
-				// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
-				let lists = [].concat(event.file)
-				let fileListLen
-				if (this.fileList) {
-					fileListLen = this.fileList.length
+					this.isDisabled = false
+				}, 1000)
+				//统一写入参数
+				this.form.applyUserId = uni.getStorageSync('setUserName')
+				this.form.applyUserName = uni.getStorageSync('userInfo').nickName
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/submitApply/useSeal',
+					method: 'post',
+					data: this.form,
+					urlType: this.$getUrlType()
+				});
+				if (res.code === 200) {
+					this.dataTree = res.data.tree
+					this.hxForm.taskId = res.data.taskId
+					this.$refs.popup.open('bottom')
+					this.selectTitle = "请选择" + this.dataTree[0].text
+					this.isDisabled = false
 				} else {
-					this.fileList = []
-					fileListLen = 0
+					this.$showModal(res.msg)
 				}
-				lists.map((item) => {
-					this.fileList.push({
-						...item,
-						status: 'uploading',
-						message: '上传中'
+				this.isDisabled = false
+			},
+			async submitPass() {
+				if (!this.hxForm.candidate) {
+					uni.showModal({
+						content: '请选择' + this.dataTree[0].text,
+						title: '提交失败',
+						showCancel: false,
 					})
-				})
-				for (let i = 0; i < lists.length; i++) {
-					const result = await this.uploadFilePromise(lists[i].url)
-					let item = this.fileList[fileListLen]
-					this.fileList.splice(fileListLen, 1, Object.assign(item, {
-						status: 'success',
-						message: '',
-						url: result
-					}))
-					fileListLen++
 				}
-				// uni.setStorageSync("listImg", this.fileList)
-				// console.log(this.fileList)
-			},
-			uploadFilePromise(url) {
-				return new Promise((resolve, reject) => {
-					let a = uni.uploadFile({
-						url: this.$BASE_URL + '/common/upload', // 仅为示例,非真实的接口地址
-						filePath: url,
-						name: 'file',
-						header: this.header,
-						success: (res) => {
-							// console.log(JSON.parse(res.data).url);
-							setTimeout(() => {
-								resolve(JSON.parse(res.data).url)
-							}, 1000)
+				const {
+					data: res
+				} = await this.$httpRequest({
+					url: '/app/task/submit/candidate?taskId=' + this.hxForm.taskId +
+						'&candidate=' + this.hxForm.candidate + '&applyUserName=' + this.hxForm.applyUserName,
+					method: 'get',
+					urlType: this.$getUrlType()
+				});
+				if (res.code === 200) {
+					uni.showModal({
+						content: '已提交给审批人员',
+						title: '提交成功',
+						showCancel: false,
+						success() {
+							uni.navigateBack()
+						}
+					})
+				} else {
+					uni.showModal({
+						content: res.msg,
+						title: '提交失败',
+						showCancel: false,
+						success() {
+							uni.navigateBack()
 						}
-					});
-				})
+					})
+				}
+			},
+			nextApprovalChange(e) {
+				// console.log('onchange:', e.detail.value[1].text);
+				this.hxForm.applyUserName = e.detail.value[1].text
+				this.hxForm.candidate = e.detail.value[1].value
+			},
+			maskClick(e) {},
+			bindPickerChange: function(e) {
+				this.index = e.detail.value
 			},
 		}
 	}
@@ -130,7 +226,20 @@
 
 <style lang="scss" scoped>
 	.desc {
-		padding: 15rpx 5rpx;
+		padding: 10rpx 5rpx;
+		color: #818181;
+		font-size: 20rpx;
+	}
+
+	.pickerView {
+		// align-items: flex-end;
+		padding: 10rpx 20rpx;
+		border: 1rpx #eeeeee solid;
+	}
+
+	.pickerText {
+		font-size: 26rpx;
+		color: #b1b1b1;
 	}
 
 	.bottim_view {

+ 5 - 3
pageApp/other/purchase.vue

@@ -3,9 +3,10 @@
 		<view>
 			<hs-input label="申请人" v-model="form.applyUserName" disabled></hs-input>
 			<hs-dept-select label="归属部门" v-model="form.deptId" :autofill="true"></hs-dept-select>
+			<hs-dict-select label="物资属性" dictKey="goods_property_type" v-model="form.purchaseType" />
 			<hs-input label="申请原因" v-model="form.remark" model="textarea"></hs-input>
 			<hs-input label="用途" v-model="form.whatUse" model="textarea"></hs-input>
-			<hs-dict-select label="物品类型" dictKey="goods_storage_type" v-model="form.goodsType" />
+			<!-- <hs-dict-select label="物品类型" dictKey="goods_storage_type" v-model="form.goodsType" /> -->
 			<hs-input label="物品名称" v-model="form.goodsName"></hs-input>
 			<hs-input label="规格型号" v-model="form.goodsGg"></hs-input>
 			<hs-input label="需求数量" v-model="form.wantUseAmount"></hs-input>
@@ -24,7 +25,8 @@
 		data() {
 			return {
 				form: {
-					applyUserName: ''
+					applyUserName: '',
+					photos: ''
 				}
 			}
 		},
@@ -55,4 +57,4 @@
 		height: 40px;
 		background-color: #ffffff;
 	}
-</style>
+</style>

+ 3 - 1
pageApp/other/repairs.vue

@@ -3,6 +3,7 @@
 		<view>
 			<hs-input label="申请人" v-model="form.applyUserName" disabled></hs-input>
 			<hs-dept-select label="归属部门" v-model="form.deptId" :autofill="true"></hs-dept-select>
+			<hs-dict-select label="提交类型" dictKey="device_repairs_submit_type" v-model="form.submitType" />
 			<hs-input label="设备位置" v-model="form.deviceLoca" model="textarea"></hs-input>
 			<hs-input label="报修说明" v-model="form.remark" model="textarea"></hs-input>
 			<hs-dict-select label="紧急程度" dictKey="device_repairs_urgency_level" v-model="form.urgencyLevel" />
@@ -18,7 +19,8 @@
 		data() {
 			return {
 				form: {
-					applyUserName: ''
+					applyUserName: '',
+					photos: ''
 				}
 			}
 		},

+ 6 - 2
pageApp/other/scrap.vue

@@ -21,7 +21,8 @@
 		data() {
 			return {
 				form: {
-					applyUserName: ''
+					applyUserName: '',
+					photos: ''
 				}
 			}
 		},
@@ -33,6 +34,9 @@
 			verify() {
 				console.log("提交", this.form)
 				this.$refs.flowSubmit.submit()
+			},
+			input(e) {
+				console.log(e)
 			}
 		}
 	}
@@ -52,4 +56,4 @@
 		height: 40px;
 		background-color: #ffffff;
 	}
-</style>
+</style>

+ 17 - 58
pages.json

@@ -147,12 +147,8 @@
 				"navigationBarTextStyle": "black",
 				"navigationBarTitleText": "更多",
 				"enablePullDownRefresh": false,
-				"navigationBarBackgroundColor": "#eeeeee",
-				"titleNView": {
-					"backgroundColor": "rgb(255, 255, 255)"
-				}
+				"navigationBarBackgroundColor": "#eeeeee"
 			}
-
 		},
 		{
 			"path": "pages/orderFood/index",
@@ -806,6 +802,17 @@
 						"navigationBarBackgroundColor": "#eeeeee",
 						"enablePullDownRefresh": false
 					}
+				}, {
+					"path": "ge/geContract",
+					"style": {
+						"backgroundColorBottom": "#f3f3f3",
+						"backgroundColorTop": "#f3f3f3",
+						"navigationBarTextStyle": "black",
+						"backgroundColor": "#f3f3f3",
+						"navigationBarTitleText": "审批",
+						"navigationBarBackgroundColor": "#eeeeee",
+						"enablePullDownRefresh": false
+					}
 				},
 				{
 					"path": "hr/leave",
@@ -1061,60 +1068,12 @@
 		"pageA/login/login": {
 			"network": "all",
 			"packages": ["__APP__"]
+		},
+		"pageA/msg/userMsgList": {
+			"network": "all",
+			"packages": ["__APP__"]
 		}
 	},
-	// 原生的导航
-	"tabBar": {
-		// 需要时HexColor,设置成red 无法识别,下方颜色设置同理
-		"selectedColor": "#555",
-		"backgroundColor": "#f3f3f3",
-		"color": "#7A7E83",
-		"borderStyle": "white",
-		"height": "70px",
-		"list": [{
-				"pagePath": "pages/home/index",
-				"iconPath": "static/img/tab-icon/home.png",
-				"selectedIconPath": "static/img/tab-icon/home-active.png",
-				"text": "首页"
-			},
-			{
-				"pagePath": "pages/orderFood/index",
-				"iconPath": "static/img/tab-icon/order-food.png",
-				"selectedIconPath": "static/img/tab-icon/order-food-active.png",
-				"text": "订餐"
-			},
-			{
-				"pagePath": "pages/integral/index",
-				"iconPath": "static/img/tab-icon/shop.png",
-				"selectedIconPath": "static/img/tab-icon/shop-active.png",
-				"text": "积分商城"
-			},
-			// {
-			// 	"pagePath": "pages/task/index",
-			// 	"iconPath": "static/img/tab-icon/task.png",
-			// 	"selectedIconPath": "static/img/tab-icon/task-fill.png",
-			// 	"text": "任务"
-			// },
-			{
-				"pagePath": "pages/app/index",
-				"iconPath": "static/img/tab-icon/app.png",
-				"selectedIconPath": "static/img/tab-icon/app-active.png",
-				"text": "应用"
-			},
-			// {
-			// 	"pagePath": "pages/msg/index",
-			// 	"iconPath": "static/img/tab-icon/tongxun.png",
-			// 	"selectedIconPath": "static/img/tab-icon/tongxun-active.png",
-			// 	"text": "通讯"
-			// },
-			{
-				"pagePath": "pages/user/index",
-				"iconPath": "static/img/tab-icon/me.png",
-				"selectedIconPath": "static/img/tab-icon/me-active.png",
-				"text": "我的"
-			}
-		]
-	},
 	"globalStyle": {
 		"app-plus": {}
 	},
@@ -1126,4 +1085,4 @@
 			"query": "" //启动参数,在页面的onLoad函数里面得到
 		}]
 	}
-}
+}

+ 25 - 21
pages/app/index.vue

@@ -147,26 +147,28 @@
 					// }
 				],
 				administrative: [{
-					text: '物资登记',
-					imgPath: '../../static/img/app/wuzidengji.png',
-					link: "../../pageApp/administration/reserve?pageType=dj"
-				}, {
-					text: '物资领用',
-					imgPath: '../../static/img/app/wupinglinyong.png',
-					link: "../../pageApp/administration/reserve?pageType=ly"
-				}, {
-					text: '物资归还',
-					imgPath: '../../static/img/app/wpgh.png',
-					link: "../../pageApp/administration/reserve?pageType=gh"
-				}, {
-					text: '用章申请',
-					imgPath: '../../static/img/app/yzsq.png',
-					link: "../../pageApp/administration/useSeal"
-				}, {
-					text: '合同管理',
-					imgPath: '../../static/img/app/htgl.png',
-					link: "../../pageApp/other/contract"
-				}],
+						text: '物资登记',
+						imgPath: '../../static/img/app/wuzidengji.png',
+						link: "../../pageApp/administration/reserve?pageType=dj"
+					}, {
+						text: '物资领用',
+						imgPath: '../../static/img/app/wupinglinyong.png',
+						link: "../../pageApp/administration/reserve?pageType=ly"
+					}, {
+						text: '物资归还',
+						imgPath: '../../static/img/app/wpgh.png',
+						link: "../../pageApp/administration/reserve?pageType=gh"
+					}, {
+						text: '用章申请',
+						imgPath: '../../static/img/app/yzsq.png',
+						link: "../../pageApp/administration/useSeal"
+					}
+					// , {
+					// 	text: '合同管理',
+					// 	imgPath: '../../static/img/app/htgl.png',
+					// 	link: "../../pageApp/other/contract"
+					// }
+				],
 				workerAssociationAppData: [{
 					text: '福利领取',
 					imgPath: '../../static/img/app/fulilingqu.png',
@@ -197,12 +199,14 @@
 			}
 		},
 		mounted() {
+			this.$wsConnection.reconnect()
 			this.type = uni.getStorageSync("tabType")
 			this.user = uni.getStorageSync("userInfo")
 			let orgInfo = uni.getStorageSync("orgInfo");
 			uni.setStorageSync('refreshStart', 1)
 			let baseUrlSocket = this.$BASE_URL_SOCKET
-			if (!uni.getStorageSync('org_dept_parent_id')) {
+
+			if (!uni.getStorageSync('deptData')) {
 				this.$httpRequest({
 					url: '/app/deptInfo?id=' + uni.getStorageSync('org_dept_parent_id'),
 					urlType: this.$getUrlType()

+ 20 - 11
pages/home/index.vue

@@ -284,21 +284,30 @@
 				}
 			},
 			async getNoice() {
-				const {
-					data: res
-				} = await this.$httpRequest({
+				this.$httpRequest({
+					url: '/app/notice?orgNo=' + this.form.orgNo + '&pageNum=1&pageSize=2',
+					method: 'get',
+					urlType: this.$getUrlType()
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.noticeList = res.data.rows
+						this.noticeList.forEach(n => {
+							n.createTime = n.createTime.slice(0, 10)
+						})
+					}
+				})
+				this.$httpRequest({
 					url: '/app/notice?orgNo=' + this.form.orgNo,
 					method: 'get',
 					urlType: this.$getUrlType()
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.noticeList = res.data.rows
+						this.noticeList.forEach(n => {
+							n.createTime = n.createTime.slice(0, 10)
+						})
+					}
 				})
-				if (res.code == 200) {
-					this.noticeList = res.data
-					this.noticeList.forEach(n => {
-						n.createTime = n.createTime.slice(0, 10)
-					})
-				} else {
-
-				}
 			},
 			takeMeal() {
 				var that = this;

+ 8 - 6
pages/tabbar/wpTabbar.vue

@@ -227,15 +227,17 @@
 				}
 				data = JSON.parse(data)
 				let appSum = data.m1 + data.m2 + data.m3 + data.m4 + data.m5 + data.m6 + data.m7
-				this.msgNums = []
-				this.msgNums.push(appSum)
-				this.msgNums.push(0)
+				// this.msgNums = []
+				let mData = []
+				mData.push(appSum)
+				mData.push(0)
 				if (this.$getUrlType() === 3) {
-					this.msgNums.push(data.m1 + data.m3 + data.m4 + data.m5 + data.m7)
+					mData.push(data.m1 + data.m3 + data.m4 + data.m5 + data.m7)
 				} else {
-					this.msgNums.push(0)
+					mData.push(0)
 				}
-				this.msgNums.push(0)
+				mData.push(0)
+				this.msgNums = mData
 			},
 			async toSwitchTab(path) {
 				this.pagePath = path

+ 4 - 1
pages/user/index.vue

@@ -400,11 +400,12 @@
 				//写入 【webSocket】 地址
 				let ws = this.$BASE_SOCKET_URL + ':' + port
 				uni.setStorageSync("wsServerUrl", ws)
-				this.$wsConnection.initRequest()
 				uni.setStorageSync("orgInfo", this.orgInfo);
 				uni.setStorageSync("isRefresh", 1);
 				this.getAppUserInfo()
 				this.isGetUserInfo()
+				this.$wsConnection.close()
+				this.$wsConnection.initRequest()
 				this.show = false;
 			},
 			cancel() {
@@ -505,6 +506,8 @@
 			},
 			//退出登录
 			outLogin() {
+				//关闭WebSocket连接
+				this.$wsConnection.close()
 				//清空所有本地缓存
 				uni.clearStorageSync()
 				uni.reLaunch({

+ 1 - 4
pages/user/settings/settings.vue

@@ -9,8 +9,7 @@
 		<view>
 		</view>
 		<swiper-page v-if="page === 0"></swiper-page>
-		<swiperNews v-if="page === 1"></swiperNews>
-		<view v-if="page === 2" style="padding: 0 50px;">
+		<view v-if="page === 1" style="padding: 0 50px;">
 			<image style="margin: 0 auto; width: 100%;" src="../../../static/img/page/empty_view.png">
 			</image>
 		</view>
@@ -29,8 +28,6 @@
 			return {
 				tabList: [{
 					name: '修改个人信息',
-				}, {
-					name: '订阅设置',
 				}, {
 					name: '其他',
 				}],

+ 3 - 2
pages/user/settings/swiper-page.vue

@@ -9,7 +9,7 @@
 				<view class="uploadImgView">
 					<u-upload :fileList="fileList" @afterRead="afterRead" name="1" :maxCount="1" width='100'
 						height='100' deletable uploadText="请上传正方形图片" :capture="['album']">
-						<image :src="this.$BASE_URL + defaultAvatarSrc" style="width:100px;height:100px;">
+						<image :src="BASE_URL + defaultAvatarSrc" style="width:100px;height:100px;">
 						</image>
 					</u-upload>
 				</view>
@@ -54,13 +54,14 @@
 					oldPassword: '',
 					newPassword: ''
 				},
+				BASE_URL: this.$BASE_URL,
 				newPassword1: '',
 				defaultAvatarSrc: ''
 			}
 		},
 		created() {
-			//console.log("create")
 			this.defaultAvatarSrc = uni.getStorageSync('userInfo').avatar
+			console.log(this.defaultAvatarSrc)
 		},
 		methods: {
 			// 删除图片

+ 12 - 11
util/request/api.js

@@ -6,8 +6,8 @@ const dev = 'dev'
 const prod = 'prod'
 const devCloud = 'dev_cloud'
 // const environment = dev
-const environment = devCloud
-// const environment = prod
+// const environment = devCloud
+const environment = prod
 // 全局请求路径,也就是后端的请求基准路径
 export let BASE_URL
 export let BASE_SOCKET_URL = 'localhost'
@@ -33,12 +33,12 @@ switch (environment) {
 		BASE_URL_BUSINESS = 'https://ts.willalp.com:3011'
 		break;
 	case 'prod':
-		BASE_URL = "https://hzl.willalp.com:3005"
-		BASE_SOCKET_URL = 'hzl.willalp.com'
-		BASE_URL_ML = 'https://hzl.willalp.com:3005'
-		BASE_URL_HSKJ = 'https://hzl.willalp.com:3012'
-		BASE_URL_MASTER = 'https://hzl.willalp.com:3010'
-		BASE_URL_BUSINESS = 'https://hzl.willalp.com:3011'
+		BASE_URL = "https://master.willalp.com:3005"
+		BASE_SOCKET_URL = 'master.willalp.com'
+		BASE_URL_ML = 'https://master.willalp.com:3005'
+		BASE_URL_HSKJ = 'https://master.willalp.com:3012' 
+		BASE_URL_MASTER = 'https://master.willalp.com:3010'
+		BASE_URL_BUSINESS = 'https://master.willalp.com:3011'
 		break;
 }
 
@@ -168,10 +168,10 @@ export const httpRequest = (options) => {
 // 获取所有已配置字典
 export const getAllDicts = () => {
 	let dictTypes = ['app_vacate_type', 'out_storage_type', 'app_msg_type', 'job_title', 'dimission_type',
-		'access_stroage_type', 'sys_user_sex', '', 'degree_dict', 'interview_type', 'hire_result',
+		'access_stroage_type', 'sys_user_sex', 'degree_dict', 'interview_type', 'hire_result',
 		"hzl_seal_use_type", "seal_type", "hzl_seal_use_address", 'hzl_file_type', 'welfare_apply_addr',
 		'device_repairs_urgency_level', 'device_scrap_status', 'goods_storage_type',
-		'condole_renshenshanghai_type'
+		'condole_renshenshanghai_type', 'device_repairs_submit_type', 'goods_property_type'
 	]
 	for (var i = 0; i < dictTypes.length; i++) {
 		getDicts(dictTypes[i]).then(res => {
@@ -191,7 +191,8 @@ export const getAllConfigData = (key) => {
 		'reserve_register_flow_run_key', 'personnel_dimission_approval_flow_run_key',
 		'interview_record_approval_flow_run_key', 'instant_notice_approval_flow_run_key',
 		'shift_official_approval_flow_run_key', 'device_repairs_approval_flow_run_key',
-		'use_seal_approval_flow_run_key', 'purchase_approval_flow_run_key', 'device_scrap_approval_flow_run_key'
+		'use_seal_approval_flow_run_key', 'purchase_approval_flow_run_key',
+		'device_scrap_approval_flow_run_key', 'contract_approval_flow_run_key'
 	]
 	for (var i = 0; i < configDatas.length; i++) {
 		getConfigData(configDatas[i]).then(res => {