gjy 1 年間 前
コミット
05e765a3b6

+ 10 - 0
App.vue

@@ -1067,4 +1067,14 @@
 	.uni-page-head-ft {
 		margin-right: 10rpx;
 	}
+	uni-checkbox .uni-checkbox-input {
+		border-radius: 80rpx !important;
+		background-color:#F5F6FA !important;
+	}
+	
+	uni-checkbox .uni-checkbox-input-checked {
+		background-color: #22C572 !important;
+		border-color: #22C572 !important;
+		color:#fff !important;
+	}
 </style>

+ 13 - 6
common/helper.js

@@ -319,16 +319,23 @@ const getProvinceAbbreviation = (province) => {
 }
 // 获取市、区简称
 const filterUrban = (s) => {
-	if (s.lastIndexOf('市') != -1) {
-		return s.substring(0, s.length - 1)
+	if(s){
+		if (s.lastIndexOf('市') != -1) {
+			return s.substring(0, s.length - 1)
+		}
+		return s
 	}
-	return s
+	return ''
 }
 const filterArea = (q) => {
-	if (q.lastIndexOf('区') != -1) {
-		return q.substring(0, q.length - 1)
+	if(q){
+		if (q.lastIndexOf('区') != -1) {
+			return q.substring(0, q.length - 1)
+		}
+		return q	
 	}
-	return q
+	return ''
+	
 }
 const fUN_AmapLocation = uni.requireNativePlugin('FUN-AmapLocation');
 

+ 12 - 11
components/uview-ui/components/u-upload/u-upload.vue

@@ -458,12 +458,12 @@ export default {
 			this.showToast('上传失败,请重试');
 		},
 		// 删除一个图片
-		deleteItem(index) {
-			uni.showModal({
-				title: '提示',
-				content: '您确定要删除此项吗?',
-				success: async (res) => {
-					if (res.confirm) {
+		async deleteItem(index) {
+			// uni.showModal({
+			// 	title: '提示',
+			// 	content: '您确定要删除此项吗?',
+			// 	success: async (res) => {
+			// 		if (res.confirm) {
 						// 先检查是否有定义before-remove移除前钩子
 						// 执行before-remove钩子
 						if(this.beforeRemove && typeof(this.beforeRemove) === 'function') {
@@ -489,9 +489,9 @@ export default {
 							// 如果不存在before-remove钩子,
 							this.handlerDeleteItem(index);
 						}
-					}
-				}
-			});
+			// 		}
+			// 	}
+			// });
 		},
 		// 执行移除图片的动作,上方代码只是判断是否可以移除
 		handlerDeleteItem(index) {
@@ -609,8 +609,8 @@ export default {
 
 .u-delete-icon {
 	position: absolute;
-	top: 10rpx;
-	right: 10rpx;
+	top: 0rpx;
+	right: 0rpx;
 	z-index: 10;
 	background-color: $u-type-error;
 	border-radius: 100rpx;
@@ -649,4 +649,5 @@ export default {
 	z-index: 9;
 	line-height: 1;
 }
+
 </style>

+ 2 - 2
config/index.js

@@ -3,14 +3,14 @@ const dev = {
 	// baseUrl: 'http://localhost:8080/',
 	// baseUrlNew: 'http://192.168.110.67:9100/',
 	// baseUrlNew: 'http://192.168.1.118:8090/',
-	baseUrlNew: 'http://192.168.110.9:9888/',
+	// baseUrlNew: 'http://192.168.110.9:9888/',
 	// baseUrlNew: 'http://192.168.110.138:8090/',
 	// baseUrlNew: 'http://192.168.110.67:9888/',
 	// baseUrlNew: 'http://192.168.110.9:9888/',
 	// baseUrlNew: 'http://192.168.110.82:8090/',
 	// baseUrlNew: 'http://192.168.110.82:8090/',
 	// baseUrlNew: 'http://192.168.110.202:8090/',
-	// baseUrlNew: 'http://192.168.110.138:8090/',
+	baseUrlNew: 'http://192.168.110.138:8090/',
 	// 上传图片的
 	// baseUrlNew: 'https://api2.eliangeyun.com/',
 	h5Appid: 'wxb66b599f7f61b46f',

+ 1 - 1
manifest.json

@@ -192,7 +192,7 @@
                 }
             }
         },
-        "nvueCompiler" : "uni-app",
+        "nvueCompiler" : "weex",
         "modules" : {
             "SQLite" : {},
             "Push" : {},

+ 43 - 13
pages.json

@@ -1482,7 +1482,23 @@
 			"path": "pages/fuelfilling/track_addition",
 			"style": {
 				"navigationBarTitleText": "添加轨迹",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": false,
+				"app-plus": {
+					"titleNView": false , //禁用原生导航栏
+					"subNVues":[ {//弹出层
+						"id": "popview",//页面进行跳转时需要用,必须有,且要唯一
+						"path": "pages/fuelfilling/popup",
+						"style": {
+							"position": "absolute",
+							"margin": "auto",
+							"mask": "rgba(0,0,0,0.3)",
+							"width": "100%",
+							"height": "100%",
+							"background":"rgba(0,0,0,0.3)"
+						}
+				 
+					}]
+				}
 			}
 
 		}, {
@@ -1496,24 +1512,15 @@
 			"path": "pages/fuelfilling/apply_see_reimbursement",
 			"style": {
 				"navigationBarTitleText": "查看申请",
-				"enablePullDownRefresh": false
+				"enablePullDownRefresh": false,
+				"softinputMode":"adjustResize"
 			}
 
 		}, {
 			"path": "pages/shortDistance/short_distance_record",
 			"style": {
 				"navigationBarTitleText": "短途记录",
-				"enablePullDownRefresh": false,
-				"titleNView": {
-					"autoBackButton": false,
-					"buttons": [{
-						"float": "right",
-						"text": "批量请款",
-						"fontSize": "18px",
-						"fontWeight": "700"
-					}]
-				}
-
+				"enablePullDownRefresh": false
 			}
 
 		}, {
@@ -1586,6 +1593,20 @@
 				"enablePullDownRefresh": false
 			}
 
+		},{
+			"path": "pages/fuelfilling/selectWarehouse",
+			"style": {
+				"navigationBarTitleText": "选择仓库",
+				"enablePullDownRefresh": false
+			}
+
+		}, {
+			"path": "pages/fuelfilling/selectContract",
+			"style": {
+				"navigationBarTitleText": "选择合同",
+				"enablePullDownRefresh": false
+			}
+
 		}, {
 			"path": "pages/reimbursement/get_request_funds",
 			"style": {
@@ -1720,6 +1741,15 @@
             }
             
         }
+        ,{
+            "path" : "pages/fuelfilling/popup",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"subpackages": [{
 			"root": "pageA",

+ 254 - 55
pages/fuelfilling/apply_for_reimbursement.vue

@@ -5,7 +5,8 @@
 				<view class="c-row">
 					<view class="title">车牌号</view>
 					<view class="con-list">
-						{{detailData.carNo}}
+						<input v-model='detailData.carNo' type="text">
+
 					</view>
 				</view>
 				<view class="c-row">
@@ -31,9 +32,46 @@
 						</view>
 					</view>
 				</view>
+				<view class="c-row">
+					<view class="left">备注</view>
+				</view>
+				<view style='position:relative;' class="wrap1 no-boder">
+					<u-input ref='textarea' class='textarea' v-model="detailData.remark" :type="typeRemark" :border="border"
+						placeholder="选填,不超过150字" :height="height" :auto-height="autoHeight" maxlength="150" />
+					<view class="remark">
+						{{detailData.remark?detailData.remark.length:'0'}}/150个字
+					</view>
+				</view>
+				<!-- <view class="c-row">
+					<view class="title">用途</view>
+					<view class="con-list">
+						<view @click='show1=true'>{{detailData.purpose?detailData.purpose:'选择用途'}}
+							<u-icon name="arrow-right" color=""></u-icon>
+						</view>
+						<u-picker :range="purposeList" range-key="purpose" @confirm='ltCheck($event)' v-model="show1"
+							mode="selector">
+						</u-picker>
+					</view>
+				</view>
+				<view class="c-row" v-if="detailData.purpose == '库点费用'">
+					<view class="title">仓库名称</view>
+					<view class="con-list">
+						<view @click='selectWare()'>{{detailData.warehouseName?detailData.warehouseName:"请选择仓库名称"}}
+							<u-icon name="arrow-right" color=""></u-icon>
+						</view>
+					</view>
+				</view>
+				<view class="c-row" v-if="detailData.purpose == '合同费用'">
+					<view class="title">合同编号</view>
+					<view class="con-list">
+						<view @click='selectCon'>{{detailData.contractNo?detailData.contractNo:"请选择合同编号"}}
+							<u-icon name="arrow-right" color=""></u-icon>
+						</view>
+					</view>
+				</view> -->
 			</view>
 			<view class='wrap1' v-for="(item , index) in fillingDetail.fillingDetailInfoList" :Key="index">
-				<view class="tit">加油-{{index+1}}</view>
+				<view class="tit">加油-{{item.serialNumber}}</view>
 				<image src="../../static/img/sign/jian@2x.png" class="eliminate1" @click="delApply(index)">
 				</image>
 				<image src="../../static/img/sign/jia@2x.png" class="eliminate2" @click="addApply(index)">
@@ -41,7 +79,7 @@
 				<view class="c-row">
 					<view class="title">油耗(升)</view>
 					<view class="con-list">
-						<input v-model='item.oilConsumption' placeholder="请输入油耗" @input='calculate(index)'></input>
+						<input type='digit' v-model='item.oilConsumption' placeholder="请输入油耗" @input='calculate(index)'></input>
 					</view>
 				</view>
 				<view class="c-row">
@@ -62,15 +100,21 @@
 					<view class="title">加油凭证</view>
 				</view>
 				<view class="voucher">
-					<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="9"
+					<u-upload  imageMode='aspectFill' class="upload" :ref="'upload'+index" name='fileName' :file-list="item.fileList" :form-data="{companyId: pcUserInfo.compId,
+								modelId: '',
+								vesselId: ''}" :action="action"  :max-size="maxSize" :max-count="9"
+						:size-type="['compressed']" @on-success="getImgUrl($event,index)" @on-error="onError"
+						@on-remove="onRemove($event,index)" :show-progress='false' :limitType ="['png', 'jpg', 'jpeg', 'webp', 'gif']"
+						@on-progress="onProgress"></u-upload>
+					<!-- <upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="9"
 						:size-type="['compressed']" @on-success="getImgUrl($event,index)" @on-error="onError"
 						@on-remove="onRemove($event,index)" @on-uploaded="isAdd = true" :before-upload="filterFileType"
-						@on-progress="onProgress"></upload>
+						@on-progress="onProgress"></upload> -->
 				</view>
 			</view>
 			<view class="footer">
 				<view class="c-row">
-					<view class="title">总油耗(L)</view>
+					<view class="title">总油耗()</view>
 					<view class="con-list">
 						<input :disabled="true" v-model='tfc' placeholder="不可编辑,自动计算" type="digit"></input>
 					</view>
@@ -84,10 +128,12 @@
 				<view @click='submitApply' class="button">提交申请</view>
 			</view>
 		</view>
+		<u-modal v-model="show" @confirm='submit' content="确定提交申请信息?" :show-cancel-button='true' ></u-modal>
 	</view>
 </template>
 
 <script>
+	import * as config from '../../config'
 	import upload from '@/components/upload.vue';
 	export default {
 		components: {
@@ -104,9 +150,27 @@
 					originProvince: "",
 					originCity: "",
 					originArea: "",
+					purpose: '库点费用',
+					remark: "",
+					warehouseName: '选择仓库',
 				},
+				height: 150,
+				autoHeight: true,
+				typeRemark: 'textarea',
+				border: true,
+				show:false,
+				show1:false,
+				purposeList: [{
+						purpose: "合同费用"
+					},
+					{
+						purpose: "库点费用"
+					},
+				],
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
 				fillingDetail: {
 					fillingDetailInfoList: [{
+						serialNumber:1,
 						oilConsumption: "",
 						currentOilPrice: "",
 						currentConsumption: "",
@@ -118,43 +182,116 @@
 					tfc: "",
 					totalCost: ""
 				},
-				action: this.$uploadUrl,
+				action: config.def().baseUrlNew+ 'appendix/api/uploadFiles',
 				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
 				btnLoading: false, //防止重复点击
 				isAdd: true,
 				tfc: "",
-				totalCost: ""
+				totalCost: "",
 			}
 		},
 		onLoad(options) {
+			this.height1 = uni.getSystemInfoSync().windowHeight
 			this.id = options.id
 			this.fillingDetail.fillingDetailInfoList[0].fillingId = this.id
-		},
-		onShow() {
 			var that = this
 			if (this.id) {
 				this.seeInfo()
 			}
 		},
+		onShow() {
+			
+			// this.warehouseInfo = uni.getStorageSync('theWarehouse1');
+			// if (this.warehouseInfo && this.detailData.purpose == "库点费用") {
+			// 	this.detailData.warehouseName = this.warehouseInfo.warehouseName
+			// 	this.$forceUpdate()
+			// }
+			// this.contractNoInfo = uni.getStorageSync('reContractNo1');
+			// if (this.contractNoInfo && this.detailData.purpose == "合同费用") {
+			// 	this.detailData.contractId = this.contractNoInfo.id
+			// 	this.detailData.contractNo = this.contractNoInfo.contractNo
+			// 	this.$api.doRequest('get', 'customerInfo/getPayeeInfo', {
+			// 		contractNo: this.detailData.contractNo
+			// 	}).then(res => {
+			// 		this.detailData.payee=res.customerType=="企业客户"?res.compName:res.customerName
+			// 		this.detailData.accountNumber=res.bankCard
+			// 		this.detailData.bank=res.bankDeposit
+			// 		this.detailData.bankBranch=res.bankDepositBranch
+			// 		this.$forceUpdate()
+			// 	})
+			// }
+			
+		},
 		methods: {
-			seeInfo() {
-				this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
+			selectCon() {
+				uni.navigateTo({
+					url: '/pages/fuelfilling/selectContract'
+				})
+			},
+			selectWare() {
+				uni.navigateTo({
+					url: '/pages/fuelfilling/selectWarehouse?warehouseType=1'
+				})
+			},
+			ltCheck(e) {
+				this.detailData.purpose = this.purposeList[e[0]].purpose
+				if (this.detailData.purpose == "合同费用") {
+					this.detailData.expensesPurpose = "1"
+					delete this.detailData.warehouseName
+			
+				} else if (this.detailData.purpose == "库点费用") {
+					this.detailData.expensesPurpose = "3"
+					delete this.detailData.contractNo
+			
+				}
+				console.log(this.detailData)
+			},
+			async seeInfo() {
+				await this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
 					id: this.id
 				}).then(res => {
 					if (res.data.code == 200) {
 						this.detailData = res.data.data
+						if(this.detailData.fillingDetailInfoList&&this.detailData.fillingDetailInfoList.length>0){
+							for (var i = 0; i < this.detailData.fillingDetailInfoList.length; i++) {
+									this.detailData.fillingDetailInfoList[i].serialNumber=i+1
+									this.tfc = (Number(this.tfc) + Number(this.detailData.fillingDetailInfoList[i].oilConsumption))
+										.toFixed(2)
+									this.totalCost = (Number(this.totalCost) + Number(this.detailData.fillingDetailInfoList[i]
+										.currentConsumption)).toFixed(2)
+								this.detailData.fillingDetailInfoList[i].fileList=[]
+								if(this.detailData.fillingDetailInfoList[i].addressUrl){								var arr=this.detailData.fillingDetailInfoList[i].addressUrl.split(',')
+									for (var q = 0; q < arr.length; q++) {
+										if(arr[q]!=''){
+											this.detailData.fillingDetailInfoList[i].fileList.push({url:arr[q]})
+										}
+									}
+									
+								}
+							}
+							this.fillingDetail.fillingDetailInfoList=this.detailData.fillingDetailInfoList
+							this.$forceUpdate()
+						}
+						console.log(this.fillingDetail.fillingDetailInfoList)
+						// if(this.detailData.fillingDetailInfoList){
+						// 	this.fillingDetail.fillingDetailInfoList[0].serialNumber=this.detailData.fillingDetailInfoList.length+1
+						// }
 					}
 				})
 			},
 			getImgUrl(res, index) {
-				this.fillingDetail.fillingDetailInfoList[index].addressUrl.push(res)
+				if(typeof(this.fillingDetail.fillingDetailInfoList[index].addressUrl)=='string'){
+					this.fillingDetail.fillingDetailInfoList[index].addressUrl=this.fillingDetail.fillingDetailInfoList[index].addressUrl.split(',')
+				}
+				
+				this.fillingDetail.fillingDetailInfoList[index].addressUrl.push(res.data.appendixPath)
 				// if(this.fillingDetail.fillingDetailInfoList[index].addressUrl){
 				// 	this.fillingDetail.fillingDetailInfoList[index].addressUrl = this.fillingDetail.fillingDetailInfoList[index].addressUrl +","+res
 				// }else{
 				// 	this.fillingDetail.fillingDetailInfoList[index].addressUrl = res
 				// }
 
-				// console.log(res)
+				console.log(this.fillingDetail.fillingDetailInfoList[index])
 				// console.log('------------res-----------')
 			},
 			onError(error) {
@@ -166,9 +303,15 @@
 				console.log(e)
 			},
 			onRemove(index, num) {
+				if(typeof(this.fillingDetail.fillingDetailInfoList[num].addressUrl)=='string'){
+					this.fillingDetail.fillingDetailInfoList[num].addressUrl=this.fillingDetail.fillingDetailInfoList[num].addressUrl.split(',')
+				}
 				this.fillingDetail.fillingDetailInfoList[num].addressUrl.splice(index, 1)
+				
+				
 			},
 			filterFileType(index, lists) {
+				console.log(lists)
 				if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
 					lists.splice(index, 1);
 					// 当前文件不支持
@@ -196,10 +339,50 @@
 				}
 			},
 			delApply(index) {
-				this.fillingDetail.fillingDetailInfoList.splice(index, 1)
+				var that = this
+				if(this.fillingDetail.fillingDetailInfoList.length>1){
+					if(this.fillingDetail.fillingDetailInfoList[index].id){
+						that.$api.doRequest('post', '/fillingDetailInfo/deleteInfo',
+								{id:this.fillingDetail.fillingDetailInfoList[index].id}
+							)
+							.then(res => {
+								uni.hideLoading()
+								if (res.data.code == 200) {
+									that.$api.msg('删除成功')
+					
+								} else {
+									that.$api.msg('删除失败')
+									return
+								}
+							})
+					}
+					console.log(this.$refs,this.$refs[`upload${index}`])
+					// this.$refs[`upload${index}`].clear
+					this.$refs[`upload${index}`][0].clear()
+					this.fillingDetail.fillingDetailInfoList[index].fileList=[]
+					this.fillingDetail.fillingDetailInfoList.splice(index, 1)
+					console.log(this.fillingDetail.fillingDetailInfoList)
+					this.tfc=0
+					this.totalCost=0
+					for (var i = 0; i < this.fillingDetail.fillingDetailInfoList.length; i++) {
+						this.fillingDetail.fillingDetailInfoList[i].serialNumber=i+1
+						this.tfc = (Number(this.tfc) + Number(this.fillingDetail.fillingDetailInfoList[i].oilConsumption))
+							.toFixed(2)
+						this.totalCost = (Number(this.totalCost) + Number(this.fillingDetail.fillingDetailInfoList[i]
+							.currentConsumption)).toFixed(2)
+					}
+					this.$forceUpdate()
+				}else{
+					uni.showToast({
+						title: "至少要保留1条不可删除的!",
+						icon: "none"
+					})
+				}
+				
 			},
 			addApply() {
 				this.fillingDetail.fillingDetailInfoList.push({
+					serialNumber:Number(this.fillingDetail.fillingDetailInfoList[this.fillingDetail.fillingDetailInfoList.length-1].serialNumber)+1,
 					oilConsumption: "",
 					currentOilPrice: "",
 					currentConsumption: "",
@@ -235,48 +418,44 @@
 						return
 					}
 				}
-				uni.showModal({
-					content: "确定提交申请信息?",
-					showCancel: true,
-					confirmText: '提交',
-					success: function(res) {
-						if (res.confirm) {
-							uni.showLoading({
-								title: '加载中',
-								mask: true
+				this.show=true
+			},
+			submit(){
+				var that = this
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				});
+				that.fillingDetail.tfc = that.tfc
+				that.fillingDetail.remark=that.detailData.remark
+				that.fillingDetail.totalCost = that.totalCost
+				for (let i = 0; i < that.fillingDetail.fillingDetailInfoList.length; i++) {
+					that.fillingDetail.fillingDetailInfoList[i].addressUrl = that.fillingDetail
+						.fillingDetailInfoList[i].addressUrl.toString()
+				}
+				that.$api.doRequest('post', '/fillingDetailInfo/api/addFillingDetail',
+						that.fillingDetail
+					)
+					.then(res => {
+						uni.hideLoading()
+						if (res.data.code == 200) {
+							that.$api.msg('提交成功')
+							uni.navigateBack({
+								delta: 2
 							});
-							that.fillingDetail.tfc = that.tfc
-							that.fillingDetail.totalCost = that.totalCost
-							for (let i = 0; i < that.fillingDetail.fillingDetailInfoList.length; i++) {
-								that.fillingDetail.fillingDetailInfoList[i].addressUrl = that.fillingDetail
-									.fillingDetailInfoList[i].addressUrl.toString()
-							}
-							that.$api.doRequest('post', '/fillingDetailInfo/api/addFillingDetail',
-									that.fillingDetail
-								)
-								.then(res => {
-									uni.hideLoading()
-									if (res.data.code == 200) {
-										that.$api.msg('提交成功')
-										uni.navigateTo({
-											url: '/pages/fuelfilling/the_fuel_filling'
-										})
-									} else {
-										that.$api.msg('提交失败')
-									}
-								})
+						} else {
+							that.$api.msg(res.data.message)
 						}
-					}
-				})
-			},
+					})
+			}
 		}
 	}
 </script>
 
 <style lang='scss' scoped>
-	.center {
+	/* .center {
 		padding-bottom: 400rpx;
-	}
+	} */
 
 	page {
 		background: #F5F6FA;
@@ -443,17 +622,13 @@
 
 	.footer {
 		background: #fff;
-		position: fixed;
-		bottom: 0;
 		width: 100%;
 		padding: 20px 10px;
-		z-index: 10;
-		height: 25%;
 
 		.button {
 			background: #4089ff;
 			width: 90%;
-			margin: 250px auto;
+			margin: 0px auto;
 			padding: 10px;
 			color: #fff;
 			text-align: center;
@@ -485,12 +660,36 @@
 	.no-boder {
 		border: 0;
 	}
-
+	
 	.textarea {
 		background: #F9F9FA;
 		border: 1px solid #EEEEEE;
 	}
+	
+	.remark {
+		position: absolute;
+		right: 10px;
+		bottom: 20px;
+		color: #AFB3BF;
+	}
 	.voucher{
 		margin-left: 20rpx;
 	}
+	.wrap1 {
+		padding-bottom: 10px;
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+	
+		input {
+			font-size: 14px;
+		}
+	
+		>.title {
+			padding: 10px 16px;
+		}
+	
+	}
+
 </style>

+ 80 - 41
pages/fuelfilling/apply_see_reimbursement.vue

@@ -1,20 +1,20 @@
 <template>
-	<view class="center">
-		<view>
+	<view>
+		<view class="center u-skeleton">
 			<view class='wrap'>
 				<view class="c-row">
-					<view class="title">车牌号</view>
-					<view class="con-list">
+					<view class="title u-skeleton-rect">车牌号</view>
+					<view class="con-list u-skeleton-rect">
 						{{detailData.carNo}}
 					</view>
 				</view>
-				<view class="c-row">
+				<view class="c-row u-skeleton-rect">
 					<view class="title">行程轨迹</view>
 					<view class="con-list">
 						<view class="flex align-center">
 							<view class="item1">
-								<view class="ssx">{{$helper.getProvinceAbbreviation(detailData.originProvince)}}</view>
-								<view class="level2-title">
+								<view class="ssx ">{{$helper.getProvinceAbbreviation(detailData.originProvince)}}</view>
+								<view class="level2-title ">
 									{{$helper.filterUrban(detailData.originCity)}}
 									{{$helper.filterArea(detailData.originArea)}}
 								</view>
@@ -22,27 +22,37 @@
 							<image class="jt-icon item2" src="@/static/images/fuel/jt.png" mode='widthFix'>
 							</image>
 							<view class="item3">
-								<view class="ssx">{{$helper.getProvinceAbbreviation(detailData.destinationProvince)}}
+								<view class="ssx ">{{$helper.getProvinceAbbreviation(detailData.destinationProvince)}}
 								</view>
-								<view class="level2-title">{{$helper.filterUrban(detailData.destinationCity)}}
+								<view class="level2-title ">{{$helper.filterUrban(detailData.destinationCity)}}
 									{{$helper.filterArea(detailData.destinationArea)}}
 								</view>
 							</view>
 						</view>
 					</view>
 				</view>
+				<view class="c-row">
+					<view class="left">备注</view>
+				</view>
+				<view style='position:relative;' class="wrap1 no-boder">
+					<u-input disabled ref='textarea' class='textarea' v-model="detailData.remark" :type="typeRemark" :border="border"
+						placeholder="选填,不超过150字" :height="height" :auto-height="autoHeight" maxlength="150" />
+					<view class="remark">
+						{{detailData.remark?detailData.remark.length:'0'}}/150个字
+					</view>
+				</view>
 			</view>
 			<view class='wrap1' v-for="(item , index) in detailData.fillingDetailInfoList" :Key="index">
 				<view class="tit">加油-{{index+1}}</view>
 				<view class="c-row">
 					<view class="title">油耗(升)</view>
-					<view class="con-list">
+					<view class="con-list ">
 						{{item.oilConsumption}}
 					</view>
 				</view>
 				<view class="c-row">
 					<view class="title">当前油价(元/升)</view>
-					<view class="con-list">
+					<view class="con-list ">
 						{{item.currentOilPrice}}
 					</view>
 				</view>
@@ -58,19 +68,19 @@
 						@click="previewImage(item.addressUrl)"></image> -->
 				</view>
 				<view class="voucher">
-					<u-upload :action="action" :file-list="item.urlList" max-count="1" :deletable="false" :show-progress="false"></u-upload>
+					<u-upload :action="action" imageMode='aspectFill' :file-list="item.urlList" max-count="1" :deletable="false" :show-progress="false"></u-upload>
 				</view>
 			</view>
 			<view class="footer">
 				<view class="c-row">
-					<view class="title">总油耗(L)</view>
-					<view class="con-list">
+					<view class="title">总油耗()</view>
+					<view class="con-list  u-skeleton-rect">
 						<input :disabled="true" v-model='detailData.tfc' placeholder="不可编辑,自动计算" type="digit"></input>
 					</view>
 				</view>
 				<view class="c-row">
 					<view class="title">合计金额(元)</view>
-					<view class="con-list">
+					<view class="con-list u-skeleton-rect">
 						<input :disabled="true" v-model='detailData.totalCost' placeholder="不可编辑,自动计算"
 							type="digit"></input>
 					</view>
@@ -78,6 +88,7 @@
 				<!-- <view @click='submitApply' class="button">提交申请</view> -->
 			</view>
 		</view>
+		<!-- <u-skeleton class='skeletonwrap' :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton> -->
 	</view>
 </template>
 
@@ -95,12 +106,17 @@
 				btnLoading: false, //防止重复点击
 				isAdd: true,
 				tfc: "",
-				totalCost: ""
+				totalCost: "",
+				loading: true,
+				height: 150,
+				autoHeight: true,
+				typeRemark: 'textarea',
+				border: true,
 			}
 		},
 		onLoad(options) {
 			this.id = options.id
-			this.fillingDetail.fillingDetailInfoList[0].fillingId = this.id
+			// this.fillingDetail.fillingDetailInfoList[0].fillingId = this.id
 		},
 		onShow() {
 			var that = this
@@ -124,37 +140,33 @@
 				});
 			},
 			seeInfo() {
+				var that = this
 				this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
 					id: this.id
 				}).then(res => {
 					if (res.data.code == 200) {
 						this.detailData = res.data.data
-						for (let i = 0; i < this.detailData.fillingDetailInfoList.length; i++) {
-							let urlList = []
-							if (this.detailData.fillingDetailInfoList[i].addressUrl) {
-								let datalist = this.detailData.fillingDetailInfoList[i].addressUrl.split(",")
-								for (let j = 0; j < datalist.length; j++) {
-									urlList.push({
-										url: datalist[j]
-									})
+						if(this.detailData.fillingDetailInfoList){
+							for (let i = 0; i < this.detailData.fillingDetailInfoList.length; i++) {
+								let urlList = []
+								if (this.detailData.fillingDetailInfoList[i].addressUrl) {
+									let datalist = this.detailData.fillingDetailInfoList[i].addressUrl.split(",")
+									for (let j = 0; j < datalist.length; j++) {
+										urlList.push({
+											url: datalist[j]
+										})
+									}
+									this.detailData.fillingDetailInfoList[i].urlList = urlList
 								}
-								this.detailData.fillingDetailInfoList[i].urlList = urlList
 							}
 						}
+						
+						// setTimeout(()=>{
+						// 	that.loading=false
+						// },1000)
 					}
 				})
 			},
-			getImgUrl(res, index) {
-				this.fillingDetail.fillingDetailInfoList[index].addressUrl.push(res)
-				// if(this.fillingDetail.fillingDetailInfoList[index].addressUrl){
-				// 	this.fillingDetail.fillingDetailInfoList[index].addressUrl = this.fillingDetail.fillingDetailInfoList[index].addressUrl +","+res
-				// }else{
-				// 	this.fillingDetail.fillingDetailInfoList[index].addressUrl = res
-				// }
-
-				// console.log(res)
-				// console.log('------------res-----------')
-			},
 			onError(error) {
 				alert(error)
 				console.log('------------error-----------')
@@ -227,9 +239,9 @@
 								.then(res => {
 									if (res.data.code == 200) {
 										that.$api.msg('提交成功')
-										uni.navigateTo({
-											url: '/pages/fuelfilling/the_fuel_filling'
-										})
+										uni.navigateBack({
+											delta: 1
+										});
 									} else {
 										that.$api.msg('提交失败')
 									}
@@ -453,12 +465,39 @@
 	.no-boder {
 		border: 0;
 	}
-
+	
 	.textarea {
 		background: #F9F9FA;
 		border: 1px solid #EEEEEE;
 	}
+	
+	.remark {
+		position: absolute;
+		right: 10px;
+		bottom: 20px;
+		color: #AFB3BF;
+	}
 	.voucher{
 		margin-left: 20rpx;
 	}
+	.wrap1 {
+		padding-bottom: 10px;
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+	
+		input {
+			font-size: 14px;
+		}
+	
+		>.title {
+			padding: 10px 16px;
+		}
+	
+	}
+	/deep/.skeletonwrap{
+		height:100vh !important;
+		top:-18px !important;
+	}
 </style>

+ 75 - 0
pages/fuelfilling/popup.nvue

@@ -0,0 +1,75 @@
+<template>
+	<div class='wrap'>
+		<div class='popup'>
+			<text class='title'>提示</text>
+			<div class="popup-content">
+				<text class='content'>确认行程已结束?</text>
+			</div>
+			<div class="button-group">
+				<text @click='close' class='button'>取消</text>
+				<text @click='submit' class='button success'>确定</text>
+			</div>
+			
+		</div>
+	</div>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			close(){
+				uni.$emit('page-popup-close', {   
+				    content: false
+				});
+			},
+			submit(){
+				uni.$emit('page-popup-submit', {  
+				    content: false 
+				});
+			}
+		}
+	}
+</script>
+
+<style scoped>
+.wrap{
+	padding:500rpx 50rpx;
+	background:rgba(255,255,255,0.3);
+}
+.popup{
+	background:#fff;
+	border-radius: 20rpx;
+}
+.popup-content{
+	padding: 20rpx;
+}
+.content{
+	font-size:28rpx;
+	padding:6rpx 0 36rpx;
+	text-align:center;
+}
+.title{
+	font-size:36rpx;
+	padding:20rpx 20rpx;
+}
+.button-group{
+	flex-direction: row; display:flex;
+	justify-content: space-between;
+}
+.button{
+	font-size:28rpx;
+	text-align:center;
+	flex:1;
+	padding:20rpx;
+}
+.success{
+	color:#409eff;
+	border-bottom-right-radius:20rpx;
+}
+</style>
+

+ 27 - 0
pages/fuelfilling/popup.vue

@@ -0,0 +1,27 @@
+<template>
+	<view class='wrap'>
+		<view class='content'>确认行程已结束?</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+			}
+		},
+		methods: {
+			
+		}
+	}
+</script>
+
+<style scoped>
+.wrap{
+	padding:50rpx;
+}
+.content{
+	font-size:50rpx;
+}
+</style>

+ 145 - 0
pages/fuelfilling/selectContract.vue

@@ -0,0 +1,145 @@
+<template>
+	<view class="warp">
+		<view class="content1">
+			<u-search placeholder="输入合同编号" :show-action="false" v-model="inputKeyword"  maxlength="20"></u-search>
+		</view>
+		<view class="content2" v-if="!inputKeyword&&newSelectList.length!=0">
+			<view class="title" v-if="">最新选择</view>
+			<view class="item-contnet">
+				<view class="item-list" v-for="(item,index) in newSelectList" :key="index" @click="confirm(item)">
+					{{item.contractNo}}
+				</view>
+			</view>
+		</view>
+		<view class="content2" v-if="!inputKeyword&&moreList.length!=0 ">
+			<view class="title" v-if="">更多合同</view>
+			<view class="item-contnet">
+				<view class="item-list" v-for="(item,index) in moreList" :key="index" @click="confirm(item)">
+					{{item.contractNo}}
+				</view>
+			</view>
+		</view>
+		<view class="content3" v-if="inputKeyword">
+			<view class="search-item-list" v-for="(item,index) in filterNewList" :key="index" @click="confirm(item)">
+				{{item.contractNo}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	 import helper from '@/common/helper.js'; 
+	export default {
+		data() {
+			return {
+				inputKeyword: '',
+				newList: [],
+				newSelectList:[],
+				filterNewList: [],
+				moreList:[],
+				compId: '',
+				flag:""
+			}
+		},
+		onShow() {
+			this.newSelectList =  uni.getStorageSync('reContractNoList1');
+		},
+		onLoad(options) {
+			this.compId = helper.erpWarehouse.compId 
+			this.getContractNoList()
+		},
+		watch: {
+			inputKeyword(val) {
+				this.filterNewList = this.newList.filter(function(item) {
+					if (item.contractNo.indexOf(val) > -1) {
+						return item
+					}
+				})
+			}
+		},
+		methods: {
+			confirm(item){
+				let _list = uni.getStorageSync('reContractNoList1');
+				if(_list==''){
+					_list=[]
+				}
+				if(_list.length<=20){
+					_list = _list.filter(function(val) {
+						if (val.contractNo!=item.contractNo) {
+							return val
+						}
+					})
+					_list.unshift(item)
+				}else{
+					_list.unshift(item).pop(item)
+				}
+				uni.setStorageSync('reContractNoList1', _list);
+				uni.setStorageSync('reContractNo1', item);
+				uni.navigateBack({
+					delta: 1
+				});
+			},
+			getContractNoList() {
+
+					this.$api.doRequest('get', '/warehouseBaseInfo/selectContractNoList', {
+						compId: this.compId,
+						flag: 11,
+					}).then(res => {
+						if (res.data.code == 200) {
+							this.newList = res.data.data
+							this.moreList = res.data.data
+						}
+					})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.content1 {
+		background: white;
+		padding: 20rpx;
+		border-radius: 0 0 20rpx 20rpx;
+	}
+
+	.content2 {
+		background: white;
+		margin-top: 20rpx;
+		padding: 20rpx;
+		border-radius: 20rpx 20rpx 0 0;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 400;
+			color: #AFB3BF;
+		}
+
+		.item-contnet {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+		}
+
+		.item-list {
+			width: 45%;
+			background: #F5F6F9;
+			margin: 20rpx 0;
+			padding: 10rpx 15rpx;
+			border-radius: 30rpx;
+			text-align: center;
+		}
+	}
+
+	.content3 {
+		height: calc(100vh - 192rpx);
+		background: white;
+		padding: 20rpx;
+		box-sizing: border-box;
+	}
+
+	.search-item-list {
+		margin: 20rpx;
+		border-bottom: 1px solid #EEEEEE;
+		padding-bottom: 20rpx;
+	}
+</style>

+ 152 - 0
pages/fuelfilling/selectWarehouse.vue

@@ -0,0 +1,152 @@
+<template>
+	<view class="warp">
+		<view class="content1">
+			<u-search placeholder="输入仓库名称" :show-action="false" v-model="inputKeyword"></u-search>
+		</view>
+		<view class="content2" v-if="!inputKeyword&&newSelectList.length!=0">
+			<view class="title" v-if="">最新选择</view>
+			<view class="item-contnet">
+				<view class="item-list" v-for="(item,index) in newSelectList" :key="index" @click="confirm(item)">
+					{{item.warehouseName}}
+				</view>
+			</view>
+		</view>
+		<view class="content2" v-if="!inputKeyword&&moreList.length!=0 ">
+			<view class="title" v-if="">更多仓库</view>
+			<view class="item-contnet">
+				<view class="item-list" v-for="(item,index) in moreList" :key="index" @click="confirm(item)">
+					{{item.warehouseName}}
+				</view>
+			</view>
+		</view>
+		<view class="content3" v-if="inputKeyword">
+			<view class="search-item-list" v-for="(item,index) in filterNewList" :key="index" @click="confirm(item)">
+				{{item.warehouseName}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import helper from '@/common/helper.js';
+	export default {
+		data() {
+			return {
+				inputKeyword: '',
+				newList: [],
+				newSelectList: [],
+				filterNewList: [],
+				moreList: [],
+				compId: '',
+				warehouseType: "",
+			}
+		},
+		onShow() {
+			this.newSelectList = uni.getStorageSync('theWarehouseList1');
+		},
+		onLoad(options) {
+			this.warehouseType = options.warehouseType
+			// this.compId = helper.theWarehouse.compId 
+			this.getWarehouse()
+		},
+		watch: {
+			inputKeyword(val) {
+				this.filterNewList = this.newList.filter(function(item) {
+					if (item.warehouseName.indexOf(val) > -1) {
+						return item
+					}
+				})
+			}
+		},
+		methods: {
+			confirm(item) {
+				let _list = uni.getStorageSync('theWarehouseList1');
+				if (_list == '') {
+					_list = []
+				}
+				if (_list.length <= 20) {
+					_list = _list.filter(function(val) {
+						if (val.warehouseName != item.warehouseName) {
+							return val
+						}
+					})
+					_list.unshift(item)
+				} else {
+					_list.unshift(item).pop(item)
+				}
+				uni.setStorageSync('theWarehouseList1', _list);
+				uni.setStorageSync('theWarehouse1', item);
+				uni.navigateBack({
+					delta: 1
+				})
+			},
+			getWarehouse() {
+				uni.showLoading({
+					title: '查询仓库',
+					mask: true
+				})
+				var that = this
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectWarehouse', {
+					compId: uni.getStorageSync("pcUserInfo").compId,
+					warehouseType: '1'
+				}).then(res => {
+					uni.hideLoading()
+					if (res.data.data.length != 0) {
+						that.newList = res.data.data
+						that.moreList = res.data.data
+
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.content1 {
+		background: white;
+		padding: 20rpx;
+		border-radius: 0 0 20rpx 20rpx;
+	}
+
+	.content2 {
+		background: white;
+		margin-top: 20rpx;
+		padding: 20rpx;
+		border-radius: 20rpx 20rpx 0 0;
+
+		.title {
+			font-size: 28rpx;
+			font-weight: 400;
+			color: #AFB3BF;
+		}
+
+		.item-contnet {
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+		}
+
+		.item-list {
+			width: 45%;
+			background: #F5F6F9;
+			margin: 20rpx 0;
+			padding: 10rpx 15rpx;
+			border-radius: 30rpx;
+			text-align: center;
+		}
+	}
+
+	.content3 {
+		height: calc(100vh - 192rpx);
+		background: white;
+		padding: 20rpx;
+		box-sizing: border-box;
+	}
+
+	.search-item-list {
+		margin: 20rpx;
+		border-bottom: 1px solid #EEEEEE;
+		padding-bottom: 20rpx;
+	}
+</style>

+ 65 - 31
pages/fuelfilling/the_fuel_filling.vue

@@ -14,7 +14,7 @@
 				</view>
 			</view>
 		</view>
-		<mescroll-body ref="mescrollRef" :down="downOption" @down="downCallback" @up="upCallback">
+		<mescroll-body ref="mescrollRef" :down="downOption" @down="downCallback" @up="upCallback" @init="mescrollInit">
 			<view v-for="(item,index) in fuelFilling" :key="index" @click.stop="getInfo(item)">
 				<view class="good-list">
 					<view style="padding: 0 35rpx 20rpx 35rpx;position: relative;">
@@ -62,7 +62,7 @@
 								</view>
 							</view>
 						</view>
-						<view class="see" v-if="item.status=='已申请'" @click.stop="seeInfo(item.id)">
+						<view class="see" v-if="item.status=='已申请'||item.travelStatus=='已结束'" @click.stop="seeInfo(item.id)">
 							<view class="btn">
 								查看
 							</view>
@@ -80,6 +80,8 @@
 		mixins: [MescrollMixin],
 		data() {
 			return {
+				canReset:"",
+				mescroll: null,
 				downOption: {
 					auto: false //是否在初始化后,自动执行downCallback; 默认true
 				},
@@ -103,9 +105,21 @@
 			}
 		},
 		onShow() {
-			// this.getList()
+			// this.mescroll.endSuccess()
+			// this.mescroll.resetUpScroll()
+			// this.fuelFilling = []
+			// this.getList(10, 1, 'down')
+			this.$nextTick(function() {
+				this.canReset && this.mescroll.resetUpScroll() // 重置列表数据为第一页  
+				this.canReset && this.mescroll.scrollTo(0, 0) // 重置列表数据为第一页时,建议把滚动条也重置到顶部,避免无法再次翻页的问题  
+				this.canReset = true // 过滤第一次的onShow事件,避免初始化界面时重复触发upCallback, 无需配置auto:false
+			});
 		},
 		methods: {
+			mescrollInit(mescroll) {
+				console.log("mescroll", mescroll)
+				this.mescroll = mescroll;
+			},
 			seeInfo(id) {
 				uni.navigateTo({
 					url: '/pages/fuelfilling/apply_see_reimbursement?id=' + id
@@ -113,18 +127,44 @@
 			},
 			/*下拉刷新的回调 */
 			downCallback() {
-				this.getList(10, 1, 'down')
+	this.mescroll.resetUpScroll();
 			},
 			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
 			upCallback(page) {
+				console.log(page)
+				// if(page.num==1) this.fuelFilling = []
+				this.$api.doRequest('get', '/fuelFillingInfo/selectFilling', {
+					pageSize: page.size,
+					currentPage: page.num,
+					// pcFlag: 0,
+					searchType: this.searchType,
+					compId: uni.getStorageSync('pcUserInfo').compId,
+					commonId: uni.getStorageSync('pcUserInfo').userId,
+				}).then(res => {
+					if (res.data.code == 200) {
+						let curPageData = res.data.data.records;
+						let curPageLen = curPageData.length;
+						let totalPage = res.data.data.total;
+						if (page.num == 1) this.fuelFilling = [];
+						this.fuelFilling = this.fuelFilling.concat(curPageData);
+						console.log(curPageLen, totalPage)
+						this.mescroll.endByPage(curPageLen, totalPage);
+						// if (type == 'down') {
+						// 	this.mescroll.endSuccess();
+						// 	this.fuelFilling = []
+						// }
+						// this.mescroll.endBySize(res.data.data.records.length, res.data.data.total);
+						// this.fuelFilling = this.fuelFilling.concat(res.data.data.records)
+				
+					}
+				})
 				//联网加载数据
-				this.getList(page.size, page.num, 'up')
+				// this.getList(page.size, page.num, 'up')
 			},
 
 			tabcarchange(searchType) {
 				this.searchType = searchType
-
-				this.getList(10, 1, 'down')
+				this.mescroll.resetUpScroll()
 			},
 			trackAddition() {
 				uni.navigateTo({
@@ -132,34 +172,19 @@
 				})
 			},
 			getList(size, page, type) {
-				this.$api.doRequest('get', '/fuelFillingInfo/selectFilling', {
-					pageSize: size,
-					currentPage: page,
-					// pcFlag: 0,
-					searchType: this.searchType,
-					compId: uni.getStorageSync('pcUserInfo').compId,
-					commonId: uni.getStorageSync('pcUserInfo').userId,
-				}).then(res => {
-					if (res.data.code == 200) {
-						if (type == 'down') {
-							this.mescroll.endSuccess();
-							this.fuelFilling = []
-						} else {
-							this.mescroll.endBySize(res.data.data.records.length, res.data.data.records
-								.length); //必传参数(当前页的数据个数, 总数据量)
-						}
-						this.fuelFilling = this.fuelFilling.concat(res.data.data.records)
-
-					}
-				})
+			
 			},
 			getInfo(item) {
 				if (item.travelStatus == '已报销') {
 					return
-				} else {
+				} else if(item.travelStatus == '已开始'&&!item.status||item.travelStatus == '已结束'&&!item.status||item.status=='已驳回') {
 					uni.navigateTo({
 						url: '/pages/fuelfilling/track_addition?id=' + item.id
 					})
+				}else{
+					uni.navigateTo({
+						url: '/pages/fuelfilling/apply_see_reimbursement?id=' + item.id
+					})
 				}
 			},
 		}
@@ -243,6 +268,9 @@
 		padding: 10px 16px 0 10px;
 		border-radius: 0 0 15px 15px;
 		padding-bottom: 10px;
+		position:fixed;
+		width:100%;
+		z-index:10;
 	}
 
 	.top2 {
@@ -257,18 +285,20 @@
 
 			.right-contrent1 {
 				background: #22C572;
-				height: 25px;
+				height: 27px;
 				font-size: 14px;
 				color: #fff;
 
 			}
-
+			uni-button.right-contrent1:after{
+				border: 1px solid #22C572;
+			}
 		}
 	}
 
 	.good-list {
 		background-color: white;
-		margin: -10px 10px 20px 10px;
+		margin: 0px 10px 20px 10px;
 		padding: 20px 0px 8px 0px;
 		border-radius: 30rpx;
 		box-shadow: 0px 5rpx 20rpx #E3E3E3;
@@ -414,4 +444,8 @@
 			margin-top: 20rpx;
 		}
 	}
+	
+	/deep/.mescroll-body{
+		margin-top:50px;
+	}
 </style>

+ 66 - 5
pages/fuelfilling/track_addition.vue

@@ -2,11 +2,14 @@
 	<view>
 		<map :latitude="detailData.originLatitude" :longitude="detailData.originLongitude" :markers="covers" class="map"
 			:polyline="polyline"></map>
+			<cover-view v-if='show'>
+				<view>确认行程已结束?</view>
+			</cover-view>
 		<view class='wrap'>
 			<view class="c-row">
 				<view class="title">车牌号</view>
 				<view class="con-list">
-					<input v-model='detailData.carNo' placeholder="请输入车牌号" maxlength="7"></input>
+					<input :disabled='titleBtn=="申请报销"' v-model='detailData.carNo' placeholder="请输入车牌号" maxlength="7"></input>
 				</view>
 			</view>
 			<view @click='startTrack' class="button" v-if='titleBtn=="开始轨迹"'>{{titleBtn}}</view>
@@ -14,6 +17,7 @@
 			<view @click='reimbursement' class="button2" v-if='titleBtn=="申请报销"'>{{titleBtn}}</view>
 		</view>
 		<u-toast ref="uToast" />
+		<!-- <u-modal v-model="show" @confirm='submit' content="确认行程已结束?" :show-cancel-button='true' ></u-modal> -->
 	</view>
 </template>
 
@@ -29,6 +33,8 @@
 					width: 1, //线的宽度
 					//     dottedLine:true,//是否虚线
 				}],
+				carNo:'',
+				show:false,
 				detailData: {
 					carNo: '',
 					travelStatus: '',
@@ -53,13 +59,36 @@
 				titleBtn: "开始轨迹",
 			}
 		},
+		created() {
+		    // #ifdef APP-PLUS
+		    const subNVue = uni.getSubNVueById('popview') //'popview'就是你在                		 
+		    subNVue.hide('none', 100);
+		    
+		    uni.$on('page-popup-submit', (data) => {  
+		        console.log(data)
+		    	subNVue.hide('none', 100);
+		    	
+		    	this.submit()
+		    })
+		    uni.$on('page-popup-close', (data) => {
+		    	console.log(data)
+		        subNVue.hide('none', 100);
+		    })
+		    // #endif
+		  },
+		  destroyed() {
+		    // 移除监听事件
+		    uni.$off("page-popup-submit")
+		  },
 		onLoad(options) {
+			
 			this.id = options.id
 			that = this
 		},
 		onShow() {
 			var that = this
 			if (this.id) {
+				console.log(1111111)
 				this.seeInfo()
 			} else {
 				// #ifdef APP-PLUS
@@ -75,6 +104,7 @@
 					title: '获取定位中',
 					mask: true
 				})
+				var num=0
 				uni.getLocation({
 					type: 'gcj02',
 					geocode: true,
@@ -90,6 +120,7 @@
 								that.detailData.originAddress = res.address.street + res.address.streetNum
 							} else if (type == '结束轨迹') {
 								// console.log("res",res)
+								that.detailData.carNo=that.carNo
 								that.detailData.destinationLongitude = res.longitude;
 								that.detailData.destinationLatitude = res.latitude;
 								that.detailData.destinationProvince = res.address.province;
@@ -98,7 +129,8 @@
 									.district)
 								that.detailData.destinationAddress = res.address.street + res.address.streetNum
 								that.detailData.trackFlag = "1"
-								// console.log("asddfadsad",that.detailData)
+								num++
+								console.log("asddfadsad",that.detailData,num)
 								if (!that.detailData.destinationAddress) {
 									uni.showToast({
 										title: "未获取结束位置,请开启定位在试!",
@@ -106,6 +138,14 @@
 									})
 									return
 								}
+								that.$api.doRequest('post', '/fillingDetailInfo/api/addFillingDetail', that.detailData)
+									.then(res1 => {
+										if (res1.data.code == 200) {
+										}
+									})
+									.catch(res => {
+										uni.$u.toast(res.message);
+									});
 								that.$api.doRequest('post', '/fuelFillingInfo/api/addFilling', that.detailData)
 									.then(res1 => {
 										if (res1.data.code == 200) {
@@ -229,8 +269,10 @@
 				this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
 					id: this.id
 				}).then(res => {
+					console.log(222222,res.data,this.id)
 					if (res.data.code == 200) {
 						this.detailData = res.data.data
+						console.log(this.detailData,111111)
 						if (this.detailData.travelStatus == "已开始") {
 							this.titleBtn = "结束轨迹"
 						} else if (this.detailData.travelStatus == "已结束") {
@@ -242,6 +284,15 @@
 					}
 				})
 			},
+			async seeInfo1() {
+				await this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.detailData = res.data.data
+					}
+				})
+			},
 			// 申请报销
 			reimbursement() {
 				uni.navigateTo({
@@ -250,11 +301,19 @@
 			},
 			// 结束轨迹
 			endTrack() {
+				this.carNo=this.detailData.carNo
+				// #ifdef APP-PLUS
+				const subNVue = uni.getSubNVueById('popview') //'popview'就是你在                		 
+				subNVue.show('zoom-fade-out', 300, function(){  });  
+				// #endif
+			},
+			submit(){
 				if (that.$helper.fUN_AmapLocation) {
 					that.$helper.fUN_AmapLocation.stop({}, result => {
 						console.log('====fUN_AmapLocation定位stop====', JSON.stringify(result));
 						// 更新轨迹结束地点
 						// 更新结束地点位置
+						this.seeInfo1()
 						this.getLngLat('结束轨迹')
 					});
 				}
@@ -286,6 +345,7 @@
 				that.detailData.trackFlag = "0"
 				console.log(that.detailData)
 				that.$api.doRequest('post', '/fuelFillingInfo/api/addFilling', that.detailData).then(res1 => {
+						console.log(res1.data)
 						if (res1.data.code == 200) {
 							that.$helper.fUN_AmapLocation.start({
 									intervalTime: 5000,
@@ -299,6 +359,7 @@
 										iconPath: '../../../static/img/location.png',
 									}]
 									this.id = res1.data.data
+									this.seeInfo1()
 									let _data = {
 										fillingId: res1.data.data,
 										longitude: res.longitude,
@@ -486,7 +547,7 @@
 	.button {
 		background: #22C572;
 		width: 90%;
-		margin: 40rpx auto;
+		margin: 40rpx auto 30rpx;
 		padding: 10px;
 		color: #fff;
 		text-align: center;
@@ -496,7 +557,7 @@
 	.button1 {
 		background: #ff0000;
 		width: 90%;
-		margin: 0 auto;
+		margin: 40rpx auto 30rpx;
 		padding: 10px;
 		color: #fff;
 		text-align: center;
@@ -506,7 +567,7 @@
 	.button2 {
 		background: #4089ff;
 		width: 90%;
-		margin: 0 auto;
+		margin: 40rpx auto 30rpx;
 		padding: 10px;
 		color: #fff;
 		text-align: center;

+ 2 - 2
pages/public/login_account_number.vue

@@ -5,9 +5,9 @@
 		<view class="wrapper">
 			<image style='width:38px;height:38px;margin-bottom:10px;' src='../../static/img/login/logo@2x.png'></image>
 			<h2 class="title Semibold">欢迎使用易粮易运</h2>
-			<view style='position:relative;width:100%;margin-top:50px;border-bottom:1px solid #E8E9ED;padding:10px;align-items: center;' class="flex">
+			<view style='position:relative;width:100%;margin-top:50px;border-bottom:1px solid #E8E9ED;padding:10px 0 10px 10px;align-items: center;' class="flex">
 				<view class="phone-before-num NumberMedium">+86</view>
-				<view style='width:85%;'>
+				<view style='width:100%;'>
 					<u-input class="phone-number" :custom-style='{"fontSize":"16px"}'  maxlength='11' v-model='phone' placeholder="请输入手机号码" type="number"/>
 					<!-- <input style='padding-left:10px;' maxlength='11' v-model='phone' placeholder="请输入手机号码" type="number"> -->
 					</view>

+ 203 - 75
pages/shortDistance/short_distance_record.vue

@@ -15,15 +15,17 @@
 				</view>
 			</view>
 		</view>
-		<view v-for="(item,index) in shortDetail.shortFillingList" :key="index" @click="getInfo(item)">
+		<mescroll-body ref="mescrollRef" :down="downOption" @down="downCallback" @up="upCallback" @init="mescrollInit">
+		<view style="display: flex;align-items: center;" v-for="(item,index) in shortDetail.shortFillingList" :key="index" @click='getInfo(item)'>
+			<view style="width: 30px;">
+			<label @click.stop='emptyclick'>
+				<checkbox-group v-model="show2" class="fuxuankuang" @change="checkedChange(item,$event,index)" v-if="searchType==3">
+					<checkbox :checked='item.checked' :value="'cd'+index" style="transform:scale(0.7)" :disabled="item.travelStatus == '已申请'" />
+				</checkbox-group>
+			</label>
+			</view>
 			<view class="good-list flex">
-				<view style="margin-top: 20px;width: 30px;">
-					<label v-model="show2" class="fuxuankuang" @click.stop="checkedChange(item)" v-if="searchType==3">
-						<checkbox value="cb" style="transform:scale(0.7)" :disabled="item.travelStatus == '已申请'" />
-					</label>
-				</view>
-
-				<view style="padding: 0 35rpx 20rpx 0rpx;">
+				<view style="padding: 0 35rpx 0rpx 35rpx;">
 					<view class="flex align-center" style="width: 103%;margin-left: 12px;">
 						<view class="item1">
 							<view class="ssx">{{$helper.getProvinceAbbreviation(item.originProvince)}}</view>
@@ -42,17 +44,19 @@
 						<view class="wenzi audit1" v-if="item.travelStatus">{{item.travelStatus}}</view>
 					</view>
 					<view class="yf-style">
-						<view class="left">
-							<view style='justify-content:space-between;' class="flex">
-								<view style="min-width: 130px;margin-top: 10px;">车牌号 : {{item.carNo}}</view>
-								<view style="width: 90px;margin-top: 12px;">{{item.createDate.split(" ")[0]}}
-								</view>
+						<view style='background:#F9F9FA;padding:0 30rpx 20rpx;border-radius:10rpx;' class="left">
+							<view style='justify-content:space-between;font-weight:600;' class="flex">
+								<view style="min-width: 130px;margin: 10px 0;">车牌号 : {{item.carNo}}</view>
+								<view style="width: 90px;margin: 12px 0;">里程</view>
 							</view>
+							<view>{{item.createDate.split(" ")[0]}}
+								</view>
 						</view>
 					</view>
 				</view>
 			</view>
 		</view>
+		</mescroll-body>
 		<view v-if='show1' class="shade">
 			<view class="wrap1">
 				<view class="alert-top">
@@ -61,51 +65,80 @@
 					</view>
 					<u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
 				</view>
-				<view class="c-row">
-					<view class="title2">请款金额</view>
-					<view class="con-list">
-						<input type="digit" style="width: 100px;margin-left: 60px;"
-							v-model='shortDetail.amountRequested' placeholder="请输入请款金额">
-						<view style="width: 0px;margin-left: 162px;margin-top: -20px;">元</view></input>
+				<view style='overflow-y: scroll;height:740rpx;' class="content1">
+					<view class="c-row">
+						<view class="title2">请款金额</view>
+						<view class="con-list">
+							<input type="digit" style="width: 100px;margin-left: 60px;"
+								v-model='shortDetail.amountRequested' placeholder="请输入请款金额">
+							<view style="width: 0px;margin-left: 162px;margin-top: -20px;">元</view></input>
+						</view>
+					</view>
+					<view class="c-row">
+						<view class="title2">仓库名称</view>
+						<view class="con-list">
+							<view @click='show=true'>{{shortDetail.warehouseName}}</view>
+							<u-picker :range="warehouseBaseInfoList" range-key="warehouseName"
+								@confirm='targetLPicker($event)' v-model="show" mode="selector">
+							</u-picker>
+						</view>
+					</view>
+					<view class="c-row">
+						<view class="title2">备注</view>
 					</view>
-				</view>
-				<view class="c-row">
-					<view class="title2">仓库名称</view>
 					<view class="con-list">
-						<view @click='show=true'>{{shortDetail.warehouseName}}</view>
-						<u-picker :range="warehouseBaseInfoList" range-key="warehouseName"
-							@confirm='targetLPicker($event)' v-model="show" mode="selector">
-						</u-picker>
+						<u-input class='textarea' v-model="shortDetail.remark" :type="type" :border="border"
+							:height="height" :auto-height="autoHeight" />
+						<view style='right:10px;bottom:20px;color:#AFB3BF;'>
+							{{shortDetail.remark.length}}/150个字
+						</view>
 					</view>
-				</view>
-				<view class="c-row">
-					<view class="title2">备注</view>
-				</view>
-				<view class="con-list">
-					<u-input class='textarea' v-model="shortDetail.remark" :type="type" :border="border"
-						:height="height" :auto-height="autoHeight" />
-					<view style='right:10px;bottom:20px;color:#AFB3BF;'>
-						{{shortDetail.remark.length}}/150个字
+					<view class="c-row">
+						<view class="title2">加油凭证</view>
+					</view>
+					<view class="voucher">
+						<u-upload class="upload" ref="upload" name='fileName' :form-data="{companyId: pcUserInfo.compId,
+									modelId: '',
+									vesselId: ''}" :action="action" :show-tips="false" :max-size="maxSize" :max-count="9"
+							:size-type="['compressed']" @on-success="getImgUrl($event,index)" @on-error="onError"
+							@on-remove="onRemove($event,index)" @on-uploaded="isAdd = true" :limitType ="['png', 'jpg', 'jpeg', 'webp', 'gif']"
+							@on-progress="onProgress"></u-upload>
+						<!-- <upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="9"
+							:size-type="['compressed']" @on-success="getImgUrl($event,index)" @on-error="onError"
+							@on-remove="onRemove($event,index)" @on-uploaded="isAdd = true" :before-upload="filterFileType"
+							@on-progress="onProgress"></upload> -->
 					</view>
 				</view>
 				<view @click="close()" class="cancel">取消</view>
 				<view @click='requestFundsSubmit()' class="confirm">确定</view>
 			</view>
 		</view>
+		<u-modal v-model="show3" @confirm='submit' content="确定提交请款信息?" :show-cancel-button='true' ></u-modal>
 	</view>
 </template>
 
 <script>
+		import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
+		import * as config from '../../config'
 	export default {
+		mixins: [MescrollMixin],
 		data() {
 			return {
 				show2: false,
+				show3:false,
 				searchType: 1,
 				pageSize: 10,
 				show1: false,
 				show: false,
 				currentPage: 1,
+				canReset:"",
+				mescroll: null,
+				downOption: {
+					auto: false //是否在初始化后,自动执行downCallback; 默认true
+				},
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
 				shortDetail: {
+					addressUrlArray:[],
 					shortFillingList: [{
 						destinationProvince: "",
 						carNo: "",
@@ -120,6 +153,8 @@
 					warehouseName: '请选择仓库名称',
 					remark: '',
 				},
+				action: config.def().baseUrlNew+ 'appendix/api/uploadFiles',
+				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
 				warehouseType: '1',
 				warehouseBaseInfoList: [],
 				type: 'textarea',
@@ -136,16 +171,93 @@
 		},
 		onShow() {
 			this.getList()
+			this.$nextTick(function() {
+				this.canReset && this.mescroll.resetUpScroll() // 重置列表数据为第一页  
+				this.canReset && this.mescroll.scrollTo(0, 0) // 重置列表数据为第一页时,建议把滚动条也重置到顶部,避免无法再次翻页的问题  
+				this.canReset = true // 过滤第一次的onShow事件,避免初始化界面时重复触发upCallback, 无需配置auto:false
+			});
 		},
 		methods: {
-			checkedChange(item) {
+			mescrollInit(mescroll) {
+				console.log("mescroll", mescroll)
+				this.mescroll = mescroll;
+			},
+			downCallback() {
+				this.mescroll.resetUpScroll();
+			},
+			emptyclick(){
+				
+			},
+			/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
+			upCallback(page) {
+				// if(page.num==1) this.fuelFilling = []
+				this.$api.doRequest('get', '/shortFillingInfo/selectShortFilling', {
+					pageSize: page.size,
+					currentPage: page.num,
+					// pcFlag: 0,
+					searchType: this.searchType,
+					compId: uni.getStorageSync('pcUserInfo').compId,
+					commonId: uni.getStorageSync('pcUserInfo').userId,
+				}).then(res => {
+					if (res.data.code == 200) {
+						for (var i = 0; i < res.data.data.records.length; i++) {
+							res.data.data.records[i].checked=false
+						}
+						let curPageData = res.data.data.records;
+						let curPageLen = curPageData.length;
+						let totalPage = res.data.data.total;
+						if (page.num == 1) this.shortDetail.shortFillingList = [];
+						this.shortDetail.shortFillingList = this.shortDetail.shortFillingList.concat(curPageData);
+						console.log(curPageLen, totalPage)
+						this.mescroll.endByPage(curPageLen, totalPage);
+						// if (type == 'down') {
+						// 	this.mescroll.endSuccess();
+						// 	this.fuelFilling = []
+						// }
+						// this.mescroll.endBySize(res.data.data.records.length, res.data.data.total);
+						// this.fuelFilling = this.fuelFilling.concat(res.data.data.records)
+				
+					}
+				})
+				//联网加载数据
+				// this.getList(page.size, page.num, 'up')
+			},
+			getImgUrl(res) {
+				this.shortDetail.addressUrlArray.push(res.data.appendixPath)
+				// if(this.fillingDetail.fillingDetailInfoList[index].addressUrl){
+				// 	this.fillingDetail.fillingDetailInfoList[index].addressUrl = this.fillingDetail.fillingDetailInfoList[index].addressUrl +","+res
+				// }else{
+				// 	this.fillingDetail.fillingDetailInfoList[index].addressUrl = res
+				// }
+			
+				// console.log('------------res-----------')
+			},
+			onError(error) {
+				alert(error)
+				console.log('------------error-----------')
+				console.log(error)
+			},
+			onProgress(e) {
+				console.log(e)
+			},
+			onRemove(index, num) {
+				this.shortDetail.addressUrlArray.splice(index, 1)
+				
+			},
+			checkedChange(item,e,index) {
 				if (item.travelStatus == '已报销') {
 					this.show2 = false
 					this.$api.msg('已报销的不可再选')
 					return
 				}else{
-					this.infoList.push(item)
+					if(e.detail.value[0]&&e.detail.value[0].indexOf(index)!=-1){
+						this.shortDetail.shortFillingList[index].checked=true
+					}else{
+						this.shortDetail.shortFillingList[index].checked=false
+					}
 				}
+				
+				console.log(this.shortDetail.shortFillingList,)
 			},
 			tabcarchange(searchType) {
 				this.searchType = searchType
@@ -167,6 +279,9 @@
 					commonId: uni.getStorageSync('pcUserInfo').userId,
 				}).then(res => {
 					if (res.data.code == 200) {
+						for (var i = 0; i < res.data.data.records.length; i++) {
+							res.data.data.records[i].checked=false
+						}
 						this.shortDetail.shortFillingList = res.data.data.records
 
 					}
@@ -186,7 +301,11 @@
 				this.shortDetail.warehouseName = this.warehouseBaseInfoList[e[0]].warehouseName
 			},
 			requestFunds() {
-				if(this.infoList.length==0){
+				console.log(this.shortDetail.shortFillingList)
+				var arr=this.shortDetail.shortFillingList.filter((item)=>{return item.checked==true})
+				console.log(arr)
+				this.infoList=arr
+				if(arr.length==0){
 					this.$api.msg('请选择一条要请款的条目')
 					return
 				}
@@ -206,40 +325,32 @@
 				}
 			},
 			requestFundsSubmit() {
-				
+				this.show3=true
+			},
+			submit(){
 				var that = this
-				uni.showModal({
-					content: "确定提交请款信息?",
-					showCancel: true,
-					confirmText: '提交',
-					success: function(res) {
-						if (res.confirm) {
-							// that.shortDetail.remark = that.remark
-							// that.shortDetail.amountRequested = that.amountRequested
-							// that.shortDetail.warehouseName = that.warehouseName
-							let dataInfo={}
-							dataInfo.amountRequested = that.shortDetail.amountRequested 
-							dataInfo.warehouseName = that.shortDetail.warehouseName
-							dataInfo.remark = that.shortDetail.remark
-							// dataInfo.compId = uni.getStorageSync('pcUserInfo').compId
-							// dataInfo.commonId = uni.getStorageSync('pcUserInfo').userId
-							// dataInfo.empName = uni.getStorageSync('userInfo').userName
-							dataInfo.shortFillingInfoList = that.infoList
-							that.$api.doRequest('post', '/shortFillingInfo/api/shortRequestFunds',
-									dataInfo
-								)
-								.then(res => {
-									if (res.data.code == 200) {
-										that.$api.msg('提交成功')
-										that.infoList = []
-									} else {
-										that.$api.msg('提交失败')
-									}
-								})
+				let dataInfo={}
+				dataInfo.amountRequested = that.shortDetail.amountRequested 
+				dataInfo.warehouseName = that.shortDetail.warehouseName
+				dataInfo.remark = that.shortDetail.remark
+				dataInfo.addressUrl = that.shortDetail.addressUrlArray.toString()
+				// dataInfo.compId = uni.getStorageSync('pcUserInfo').compId
+				// dataInfo.commonId = uni.getStorageSync('pcUserInfo').userId
+				// dataInfo.empName = uni.getStorageSync('userInfo').userName
+				dataInfo.shortFillingInfoList = that.infoList
+				that.$api.doRequest('post', '/shortFillingInfo/api/shortRequestFunds',
+						dataInfo
+					)
+					.then(res => {
+						if (res.data.code == 200) {
+							that.$api.msg('提交成功')
+							that.show3=false
+							that.show1=false
+						} else {
+							that.$api.msg('提交失败')
 						}
-					}
-				})
-			},
+					})
+			}
 		}
 	}
 </script>
@@ -321,6 +432,9 @@
 		padding: 10px 16px 0 10px;
 		border-radius: 0 0 15px 15px;
 		padding-bottom: 10px;
+		position:fixed;
+		z-index:10;
+		width:100%;
 	}
 
 	.top2 {
@@ -345,10 +459,10 @@
 	}
 
 	.good-list {
-		width: 95%;
-		margin: 0 auto;
+		width:89%;
+		margin-right: 10rpx;
 		background-color: white;
-		padding: 33px 0px 25px 0px;
+		padding: 33px 10px 25px 0px;
 		border-radius: 30rpx;
 		box-shadow: 0px 5rpx 20rpx #E3E3E3;
 		margin-bottom: 10px;
@@ -415,7 +529,12 @@
 		align-items: center;
 		margin-right: 5px;
 	}
-
+	.item1 .ssx{
+		background:#22C572;
+	}
+	.item3 .ssx{
+		background:#FE6430;
+	}
 	.level2-title {
 		font-weight: 700;
 		color: #000000;
@@ -423,6 +542,7 @@
 
 	.wenzi {
 		margin-top: -65px;
+		margin-left:-20px;
 		text-align: right;
 		border-radius: 5px;
 		height: 5px;
@@ -430,6 +550,8 @@
 
 	.audit1 {
 		color: #22C572;
+		width:43px;
+		// margin-right:10px;
 	}
 
 	.audit2 {
@@ -466,7 +588,7 @@
 			margin: auto;
 			background: #fff;
 			width: calc(100% - 198rpx);
-			height: 320px;
+			height: 476px;
 			border-radius: 20rpx;
 
 			input {
@@ -572,4 +694,10 @@
 		border: 1px solid #EEEEEE;
 		margin-left: 10px;
 	}
+	.voucher{
+		margin-left: 20rpx;
+	}
+	/deep/.mescroll-body{
+		margin-top:50px;
+	}
 </style>

+ 3 - 3
pages/shortDistance/short_track_addition.vue

@@ -105,9 +105,9 @@
 										console.log(res1)
 										if (res1.data.code == 200) {
 											that.$api.msg('提交成功')
-											uni.navigateTo({
-												url: '/pages/shortDistance/short_distance_record'
-											})
+											uni.navigateBack({
+												delta: 1
+											});
 										} else {
 											that.$api.msg('提交失败')
 										}

+ 285 - 99
pages/task/audit/refuel.vue

@@ -17,6 +17,11 @@
 					{{list.destinationProvince}}{{list.destinationCity}}{{list.destinationArea}}{{list.destinationAddress}}
 				</view>
 			</u-form-item>
+			<u-form-item v-if='list.strokeType==1' label-width='150' :borderBottom="false" label="备注">
+				<view class="place">
+					{{list.remark}}
+				</view>
+			</u-form-item>
 			<u-form-item v-if='list.strokeType==1' label-width='260' :borderBottom="false" label="总油耗(升)">
 				<u-input v-model="list.tfc" input-align="right" placeholder="--" disabled />
 			</u-form-item>
@@ -64,7 +69,7 @@
 				<view class="voucher">
 					<view class="voucher_tips">加油凭证</view>
 					<view >
-						<u-upload :action="action" :file-list="item.urlList" max-count="1" :deletable="false" :show-progress="false"></u-upload>
+						<u-upload :action="action" imageMode='aspectFill' :file-list="item.urlList" max-count="1" :deletable="false" :show-progress="false"></u-upload>
 					</view>
 				</view>
 			</u-form>
@@ -131,6 +136,11 @@
 							<view v-if='item.auditMind' class="right-content">
 								{{item.auditMind}}
 							</view>
+							<view class="flex audit_img">
+								<view v-for="(items,indexs) in item.fileUrl" class="url_css">
+									<image :src="items" mode="" class="url_img" @click="auditFile(items)"></image>
+								</view>
+							</view>
 						</view>
 						<view v-if='item.commonStaffs1' class="right">
 							<u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28">
@@ -167,6 +177,7 @@
 					</view>
 					<u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
 				</view>
+				<view style='overflow-y: scroll;height: 740rpx;padding-bottom:102rpx;'>
 				<view class="u-textarea-style">
 					<view class="right-bottom">
 						{{auditMind.length}}/1000个字
@@ -175,6 +186,13 @@
 						rows="11"></textarea>
 
 				</view>
+				<u-upload class="upload" ref="upload" name='fileName' :form-data="{companyId: pcUserInfo.compId,
+							modelId: '',
+							vesselId: ''}" :action="action1" :show-tips="false" :max-size="maxSize" :max-count="9"
+					:size-type="['compressed']" @on-success="getImgUrl($event)" @on-error="onError"
+					@on-remove="onRemove" @on-uploaded="isAdd = true" :limitType ="['png', 'jpg', 'jpeg', 'webp', 'gif']"
+					@on-progress="onProgress"></u-upload>
+				</view>
 				<view @click='close()' class="cancel">取消</view>
 				<view @click='passSubmit()' class="confirm">确定</view>
 			</view>
@@ -186,6 +204,7 @@
 </template>
 
 <script>
+	import * as config from '../../../config'
 	import upload from '@/components/upload.vue';
 	import helper from '@/common/helper.js';
 	export default {
@@ -196,8 +215,12 @@
 			return {
 				everyCheck: '',
 				id: "",
+				pcUserInfo :uni.getStorageSync('pcUserInfo'),
+				action1: config.def().baseUrlNew+ 'appendix/api/uploadFiles',
+				maxSize: 50 * 1024 * 1024, 
 				currentPage: 1,
 				pageSize: 10,
+				fileUrl:[],
 				list: {
 					status: "",
 					contractGoodsInfo: {},
@@ -238,6 +261,36 @@
 			this.getList()
 		},
 		methods: {
+			auditFile(src) {
+				uni.downloadFile({
+					url: src,
+					success: function(res) {
+						var filePath = res.tempFilePath;
+						uni.openDocument({
+							filePath: filePath,
+							showMenu: true,
+							success: function(res) {
+								console.log('打开文档成功');
+							}
+						});
+					}
+				});
+			},
+			getImgUrl(res) {
+				this.fileUrl.push(res.data.appendixPath)
+			},
+			onError(error) {
+				alert(error)
+				console.log('------------error-----------')
+				console.log(error)
+			},
+			onProgress(e) {
+				console.log(e)
+			},
+			onRemove(index) {
+				console.log(index)
+				this.fileUrl.splice(index, 1)
+			},
 			openDocument(src) {
 				uni.downloadFile({
 					url: src.appendixPath,
@@ -305,131 +358,228 @@
 							}).then(response => {
 								uni.hideLoading()
 								for (let i = 0; i < response.data.data.length; i++) {
-									this.$set(response.data.data[i], 'status', 'question')
+									this.$set(response.data.data[i],'status','question')
 									// console.log(response.data.data[i].workflowHistoricTasks,i)
-									if (response.data.data[i].commonStaffs) {
-										response.data.data[i].showflow = false
-										response.data.data[i].operatorTitle = response.data.data[i]
-											.desc.substring(0, 2)
-										response.data.data[i].operatorName = response.data.data[i]
-											.desc
-										response.data.data[i].staffscontent = '共' + response.data
-											.data[i].commonStaffs.length + '人,当前审核' + response.data
-											.data[i].workflowHistoricTasks.length + '人'
-										if (response.data.data[i].workflowHistoricTasks && response
-											.data.data[i].workflowHistoricTasks.length > 0) {
-											if (response.data.data[i].workflowHistoricTasks
-												.length != response.data.data[i].commonStaffs
-												.length) {
+									if(response.data.data[i].commonStaffs){
+										response.data.data[i].showflow=false
+										response.data.data[i].operatorTitle=response.data.data[i].desc.substring(0,2)
+										response.data.data[i].operatorName=response.data.data[i].desc
+										response.data.data[i].staffscontent='共'+response.data.data[i].commonStaffs.length+'人,当前审核'+response.data.data[i].workflowHistoricTasks.length+'人'
+										if(response.data.data[i].workflowHistoricTasks&&response.data.data[i].workflowHistoricTasks.length>0){
+											if(response.data.data[i].workflowHistoricTasks.length!=response.data.data[i].commonStaffs.length){
 												// response.data.data[i].status='question'
-												this.$set(response.data.data[i], 'status',
-													'question')
-											} else {
-												this.$set(response.data.data[i], 'status',
-													'success')
+												this.$set(response.data.data[i],'status','question')
+											}else{
+												this.$set(response.data.data[i],'status','success')
 												// response.data.data[i].status='success'
 											}
-											response.data.data[i].workflowlen = response.data.data[
-												i].workflowHistoricTasks.length
-											var workflowdata = response.data.data[i]
-												.workflowHistoricTasks
-											var staffsdata = response.data.data[i].commonStaffs
+											response.data.data[i].workflowlen=response.data.data[i].workflowHistoricTasks.length
+											var workflowdata=response.data.data[i].workflowHistoricTasks
+											var staffsdata=response.data.data[i].commonStaffs
 											for (let q = 0; q < staffsdata.length; q++) {
-												staffsdata[q].status = false
-												staffsdata[q].staffTitle = staffsdata[q].staffName
+												staffsdata[q].status=false
+												staffsdata[q].staffTitle=staffsdata[q].staffName
 												for (let k = 0; k < workflowdata.length; k++) {
-													if (staffsdata[q].staffId == workflowdata[k]
-														.operatorId) {
-														staffsdata[q].status = true
+													if(staffsdata[q].staffId==workflowdata[k].operatorId){
+														staffsdata[q].status=true
 													}
 												}
 											}
 										}
-										response.data.data[i].commonStaffs1 = response.data.data[i]
-											.commonStaffs
-									} else {
-										if (response.data.data[i].workflowHistoricTasks && response
-											.data.data[i].workflowHistoricTasks.length > 0) {
-											var len = response.data.data[i].workflowHistoricTasks
-												.length - 1
-											if (response.data.data[i].workflowHistoricTasks[len]
-												.approved) {
-												this.$set(response.data.data[i], 'status',
-													'success')
-											} else {
-												this.$set(response.data.data[i], 'status', 'error')
+										response.data.data[i].commonStaffs1=response.data.data[i].commonStaffs
+									}else{
+										if(response.data.data[i].workflowHistoricTasks&&response.data.data[i].workflowHistoricTasks.length>0){
+											var len =response.data.data[i].workflowHistoricTasks.length-1
+											if(response.data.data[i].workflowHistoricTasks[len].approved){
+												this.$set(response.data.data[i],'status','success')
+											}else{
+												this.$set(response.data.data[i],'status','error')
+											}
+											response.data.data[i].operatorTitle=response.data.data[i].workflowHistoricTasks[len].operatorName.substring(response.data.data[i].workflowHistoricTasks[0].operatorName.length - 2)
+											response.data.data[i].operatorName=response.data.data[i].workflowHistoricTasks[len].operatorName
+											var time=new Date(response.data.data[i].workflowHistoricTasks[len].claimTime).getTime()
+											response.data.data[i].updateDate=this.$u.timeFormat(time, 'mm.dd hh:MM')
+											// response.data.data[i].auditMind=response.data.data[i].workflowHistoricTasks[len].auditMind
+											if (response.data.data[i].workflowHistoricTasks[len].auditMind && response.data.data[i].workflowHistoricTasks[len].auditMind.indexOf("##") !=-1) {
+												response.data.data[i].auditMind = response.data.data[i].workflowHistoricTasks[len].auditMind.split("##")[0]
+												response.data.data[i].fileUrl = response.data.data[i].workflowHistoricTasks[len].auditMind.split("##")[1].split(",")
+											}else{
+												response.data.data[i].auditMind = response.data.data[i].workflowHistoricTasks[len].auditMind
 											}
-											response.data.data[i].operatorTitle = response.data
-												.data[i].workflowHistoricTasks[len].operatorName
-												.substring(response.data.data[i]
-													.workflowHistoricTasks[0].operatorName.length -
-													2)
-											response.data.data[i].operatorName = response.data
-												.data[i].workflowHistoricTasks[len].operatorName
-											var time = new Date(response.data.data[i]
-													.workflowHistoricTasks[len].claimTime)
-												.getTime()
-											response.data.data[i].updateDate = this.$u.timeFormat(
-												time, 'mm.dd hh:MM')
-											response.data.data[i].auditMind = response.data.data[i]
-												.workflowHistoricTasks[len].auditMind
-										} else {
-											this.$set(response.data.data[i], 'status', 'question')
+										}else{
+											this.$set(response.data.data[i],'status','question')
 											// response.data.data[i].status='question'
-											if (response.data.data[i].desc == '总经理助理审核') {
-												response.data.data[i].operatorTitle = '总助'
-											} else if (response.data.data[i].desc == '杜大光审核') {
-												response.data.data[i].operatorTitle = '大光'
-											} else {
-												response.data.data[i].operatorTitle = response.data
-													.data[i].desc.substring(0, 2)
+											if(response.data.data[i].desc=='总经理助理审核'){
+												response.data.data[i].operatorTitle='总助'
+											}else if(response.data.data[i].desc=='杜大光审核'){
+												response.data.data[i].operatorTitle='大光'
+											}else{
+												response.data.data[i].operatorTitle=response.data.data[i].desc.substring(0,2)
 											}
-											response.data.data[i].operatorName = response.data
-												.data[i].desc
-											var time1 = new Date(response.data.data[i].updateDate)
-												.getTime()
-											response.data.data[i].updateDate = this.$u.timeFormat(
-												time1, 'mm.dd hh:MM')
-											response.data.data[i].auditMind = ''
+											response.data.data[i].operatorName=response.data.data[i].desc
+											var time1=new Date(response.data.data[i].updateDate).getTime()
+											response.data.data[i].updateDate=this.$u.timeFormat(time1, 'mm.dd hh:MM')
+											response.data.data[i].auditMind=''
 										}
 									}
 								}
 								console.log(response.data.data)
-								for (let i = 0; i < response.data.data.length; i++) {
-									if (response.data.data[i].status == "error") {
+								for(let i = 0 ;i<response.data.data.length;i++){
+									if(response.data.data[i].status == "error"){
 										this.auditCheck = "error"
 										break;
-									} else if (response.data.data[i].status == "question") {
+									}else if(response.data.data[i].status == "question"){
 										this.auditCheck = "question"
 										break;
-									} else {
+									}else{ 
 										this.auditCheck = "success"
 									}
 								}
 								this.auditList = response.data.data
-								var time2 = new Date(this.list.createDate).getTime()
-								var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
+								var time2=new Date(this.list.createDate).getTime()
+								var time3=this.$u.timeFormat(time2, 'mm.dd hh:MM')
 								this.auditList.unshift({
-									operatorTitle: this.list.creater.substring(0, 2),
-									operatorName: this.list.creater,
-									updateDate: time3,
-									auditMind: '',
-									desc: '发起申请',
-									showflow: false,
-									commonStaffs1: null,
-									commonStaffs: null,
-									workflowHistoricTasks: [],
-									status: 'success'
+									operatorTitle:this.list.creater.substring(0,2),
+									operatorName:this.list.creater,
+									updateDate:time3,
+									auditMind:'',
+									desc:'发起申请',
+									showflow:false,
+									commonStaffs1:null,
+									commonStaffs:null,
+									workflowHistoricTasks:[],
+									status:'success'
 								})
 							})
-						})
+						// 	this.$api.doRequest('get', '/commonUser/getHis', {
+						// 		workflowId: res1.data.data[0].id,
+						// 		businessKey: this.id,
+						// 		// branch:that.list.jointVentureParties?that.list.jointVentureParties:'zt'
+						// 	}).then(response => {
+						// 		uni.hideLoading()
+						// 		for (let i = 0; i < response.data.data.length; i++) {
+						// 			this.$set(response.data.data[i], 'status', 'question')
+						// 			// console.log(response.data.data[i].workflowHistoricTasks,i)
+						// 			if (response.data.data[i].commonStaffs) {
+						// 				response.data.data[i].showflow = false
+						// 				response.data.data[i].operatorTitle = response.data.data[i]
+						// 					.desc.substring(0, 2)
+						// 				response.data.data[i].operatorName = response.data.data[i]
+						// 					.desc
+						// 				response.data.data[i].staffscontent = '共' + response.data
+						// 					.data[i].commonStaffs.length + '人,当前审核' + response.data
+						// 					.data[i].workflowHistoricTasks.length + '人'
+						// 				if (response.data.data[i].workflowHistoricTasks && response
+						// 					.data.data[i].workflowHistoricTasks.length > 0) {
+						// 					if (response.data.data[i].workflowHistoricTasks
+						// 						.length != response.data.data[i].commonStaffs
+						// 						.length) {
+						// 						// response.data.data[i].status='question'
+						// 						this.$set(response.data.data[i], 'status',
+						// 							'question')
+						// 					} else {
+						// 						this.$set(response.data.data[i], 'status',
+						// 							'success')
+						// 						// response.data.data[i].status='success'
+						// 					}
+						// 					response.data.data[i].workflowlen = response.data.data[
+						// 						i].workflowHistoricTasks.length
+						// 					var workflowdata = response.data.data[i]
+						// 						.workflowHistoricTasks
+						// 					var staffsdata = response.data.data[i].commonStaffs
+						// 					for (let q = 0; q < staffsdata.length; q++) {
+						// 						staffsdata[q].status = false
+						// 						staffsdata[q].staffTitle = staffsdata[q].staffName
+						// 						for (let k = 0; k < workflowdata.length; k++) {
+						// 							if (staffsdata[q].staffId == workflowdata[k]
+						// 								.operatorId) {
+						// 								staffsdata[q].status = true
+						// 							}
+						// 						}
+						// 					}
+						// 				}
+						// 				response.data.data[i].commonStaffs1 = response.data.data[i]
+						// 					.commonStaffs
+						// 			} else {
+						// 				if (response.data.data[i].workflowHistoricTasks && response
+						// 					.data.data[i].workflowHistoricTasks.length > 0) {
+						// 					var len = response.data.data[i].workflowHistoricTasks
+						// 						.length - 1
+						// 					if (response.data.data[i].workflowHistoricTasks[len]
+						// 						.approved) {
+						// 						this.$set(response.data.data[i], 'status',
+						// 							'success')
+						// 					} else {
+						// 						this.$set(response.data.data[i], 'status', 'error')
+						// 					}
+						// 					response.data.data[i].operatorTitle = response.data
+						// 						.data[i].workflowHistoricTasks[len].operatorName
+						// 						.substring(response.data.data[i]
+						// 							.workflowHistoricTasks[0].operatorName.length -
+						// 							2)
+						// 					response.data.data[i].operatorName = response.data
+						// 						.data[i].workflowHistoricTasks[len].operatorName
+						// 					var time = new Date(response.data.data[i]
+						// 							.workflowHistoricTasks[len].claimTime)
+						// 						.getTime()
+						// 					response.data.data[i].updateDate = this.$u.timeFormat(
+						// 						time, 'mm.dd hh:MM')
+						// 					response.data.data[i].auditMind = response.data.data[i]
+						// 						.workflowHistoricTasks[len].auditMind
+						// 				} else {
+						// 					this.$set(response.data.data[i], 'status', 'question')
+						// 					// response.data.data[i].status='question'
+						// 					if (response.data.data[i].desc == '总经理助理审核') {
+						// 						response.data.data[i].operatorTitle = '总助'
+						// 					} else if (response.data.data[i].desc == '杜大光审核') {
+						// 						response.data.data[i].operatorTitle = '大光'
+						// 					} else {
+						// 						response.data.data[i].operatorTitle = response.data
+						// 							.data[i].desc.substring(0, 2)
+						// 					}
+						// 					response.data.data[i].operatorName = response.data
+						// 						.data[i].desc
+						// 					var time1 = new Date(response.data.data[i].updateDate)
+						// 						.getTime()
+						// 					response.data.data[i].updateDate = this.$u.timeFormat(
+						// 						time1, 'mm.dd hh:MM')
+						// 					response.data.data[i].auditMind = ''
+						// 				}
+						// 			}
+						// 		}
+						// 		console.log(response.data.data)
+						// 		for (let i = 0; i < response.data.data.length; i++) {
+						// 			if (response.data.data[i].status == "error") {
+						// 				this.auditCheck = "error"
+						// 				break;
+						// 			} else if (response.data.data[i].status == "question") {
+						// 				this.auditCheck = "question"
+						// 				break;
+						// 			} else {
+						// 				this.auditCheck = "success"
+						// 			}
+						// 		}
+						// 		this.auditList = response.data.data
+						// 		var time2 = new Date(this.list.createDate).getTime()
+						// 		var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
+						// 		this.auditList.unshift({
+						// 			operatorTitle: this.list.creater.substring(0, 2),
+						// 			operatorName: this.list.creater,
+						// 			updateDate: time3,
+						// 			auditMind: '',
+						// 			desc: '发起申请',
+						// 			showflow: false,
+						// 			commonStaffs1: null,
+						// 			commonStaffs: null,
+						// 			workflowHistoricTasks: [],
+						// 			status: 'success'
+						// 		})
+						// 	})
+						// })
+					})
 					}
 				})
 			},
-			onRemove() {
-
-				return
-			},
 			filterFileType(index, lists) {
 				if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
 					lists.splice(index, 1);
@@ -460,10 +610,14 @@
 					title: '加载中',
 					mask: true
 				});
+				var info = that.auditMind
+				if (that.fileUrl.length > 0) {
+					info = that.auditMind + "##" + that.fileUrl.toString()
+				}
 				that.$api.doRequest('post', '/newWorkflow/api/handle', {
 					taskId: that.list.taskId,
 					approved: false,
-					auditMind: this.auditMind,
+					auditMind: info?info:"",
 					needReapply: true,
 				}).then(res => {
 					that.$api.msg('驳回成功')
@@ -497,10 +651,14 @@
 						title: '加载中',
 						mask: true
 					});
+					var info = that.auditMind
+					if (that.fileUrl.length > 0) {
+						info = that.auditMind + "##" + that.fileUrl.toString()
+					}
 					that.$api.doRequest('post', '/newWorkflow/api/handle', {
 						taskId: that.list.taskId,
 						approved: true,
-						auditMind: this.auditMind,
+						auditMind: info?info:"",
 						needReapply: true,
 					}).then(res => {
 						that.$api.msg('通过成功')
@@ -682,7 +840,7 @@
 		height: 100%;
 		width: 100%;
 		background: rgba(0, 0, 0, 0.4);
-		z-index: 11;
+		z-index: 13;
 
 		.wrap {
 			position: absolute;
@@ -693,8 +851,9 @@
 			margin: auto;
 			background: #fff;
 			width: calc(100% - 198rpx);
-			height: 700rpx;
+			height: 948rpx;
 			border-radius: 20rpx;
+			// overflow-y: scroll;
 
 			.alert-top {
 				padding: 33rpx;
@@ -727,6 +886,8 @@
 		padding: 10px;
 		border-top: 1px solid #eee;
 		font-size: 34rpx;
+		z-index:10;
+		background:#fff;
 	}
 
 	.cancel {
@@ -880,6 +1041,27 @@
 						}
 					}
 				}
+				.audit_img {
+					flex-wrap: wrap;
+					// margin: 0 10rpx;
+					margin-left: 20rpx;
+				
+					.url_css {
+						border: 1px solid #999999;
+						border-radius: 10px;
+						margin-top: 10px;
+						margin-right: 4px;
+						overflow: hidden;
+						width: 73px;
+						height: 73px;
+				
+						.url_img {
+							width: 73px;
+							height: 73px;
+							// border-radius: 10px;
+						}
+					}
+				}
 			}
 		}
 
@@ -1076,4 +1258,8 @@
 	   margin: auto;
 	   margin-right: 0px;
 	}
+	/deep/.place{
+		color:#000;
+	}
+
 </style>

+ 1 - 1
pages/universalityAudit/look.vue

@@ -6,7 +6,7 @@
 				<u-form-item :border-bottom='false' :label-position='"top"' label="备注">
 					<view class="u-textarea-style">
 						<view class="right-bottom">
-							{{dataobj.remark.length}}/2000个字
+							{{dataobj.remark?dataobj.remark.length:0}}/2000个字
 						</view>
 						<textarea style='font-size:12px;' disabled maxlength="2000" v-model='dataobj.remark' placeholder="请输入备注信息" name="" id="" cols="30" rows="11"></textarea>
 					</view>