zxz пре 2 година
родитељ
комит
8214f0083a

+ 88 - 2
common/helper.js

@@ -169,7 +169,90 @@ const convertCurrency = (money) => {
 	}
 	return chineseStr;
 }
-
+//获取省份简称
+const getProvinceAbbreviation = (province) => {
+	if (province == "北京市" || province == "北京")
+		return "京";
+	else if (province == "天津市" || province == "天津")
+		return "津";
+	else if (province == "重庆市" || province == "重庆")
+		return "渝";
+	else if (province == "上海市" || province == "上海")
+		return "沪";
+	else if (province == "河北省" || province == "河北")
+		return "冀";
+	else if (province == "山西省" || province == "山西")
+		return "晋";
+	else if (province == "辽宁省" || province == "辽宁")
+		return "辽";
+	else if (province == "吉林省" || province == "吉林")
+		return "吉";
+	else if (province == "黑龙江省" || province == "黑龙江")
+		return "黑";
+	else if (province == "江苏省" || province == "江苏")
+		return "苏";
+	else if (province == "浙江省" || province == "浙江")
+		return "浙";
+	else if (province == "安徽省" || province == "安徽")
+		return "皖";
+	else if (province == "福建省" || province == "福建")
+		return "闽";
+	else if (province == "江西省" || province == "江西")
+		return "赣";
+	else if (province == "山东省" || province == "山东")
+		return "鲁";
+	else if (province == "河南省" || province == "河南")
+		return "豫";
+	else if (province == "湖北省" || province == "湖北")
+		return "鄂";
+	else if (province == "湖南省" || province == "湖南")
+		return "湘";
+	else if (province == "广东省" || province == "广东")
+		return "粤";
+	else if (province == "海南省" || province == "海南")
+		return "琼";
+	else if (province == "四川省" || province == "四川")
+		return "川";
+	else if (province == "贵州省" || province == "贵州")
+		return "贵";
+	else if (province == "云南省" || province == "云南")
+		return "云";
+	else if (province == "陕西省" || province == "陕西")
+		return "陕";
+	else if (province == "甘肃省" || province == "甘肃")
+		return "甘";
+	else if (province == "青海省" || province == "青海")
+		return "青";
+	else if (province == "台湾省" || province == "台湾")
+		return "台";
+	else if (province == "内蒙古自治区" || province == "内蒙古")
+		return "蒙";
+	else if (province == "广西壮族自治区" || province == "广西")
+		return "桂";
+	else if (province == "宁夏回族自治区" || province == "宁夏")
+		return "宁";
+	else if (province == "新疆维吾尔自治区" || province == "新疆")
+		return "新";
+	else if (province == "西藏自治区" || province == "西藏")
+		return "藏";
+	else if (province == "香港特别行政区" || province == "香港")
+		return "港";
+	else if (province == "澳门特别行政区" || province == "澳门")
+		return "澳";
+}
+// 获取市、区简称
+const filterUrban = (s) => {
+	if (s.lastIndexOf('市') != -1) {
+		return s.substring(0, s.length - 1)
+	}
+	return s
+}
+const filterArea = (q) => {
+	if (q.lastIndexOf('区') != -1) {
+		return q.substring(0, q.length - 1)
+	}
+	return q
+}
 
 
 export default {
@@ -181,5 +264,8 @@ export default {
 	getListByUserId,
 	setAudit,
 	getNowFormatDate,
-	convertCurrency
+	getProvinceAbbreviation,
+	convertCurrency,
+	filterUrban,
+	filterArea,
 }

+ 2 - 0
main.js

@@ -22,6 +22,8 @@ Vue.component('my',my)
 import uView from "./components/uview-ui";
 Vue.use(uView);
 const vuexStore = require("@/store/$u.mixin.js");
+import helper from'@/common/helper.js'
+Vue.prototype.$helper = helper
 
 Vue.mixin(vuexStore);
 import webim from 'webim.js';

+ 63 - 0
pages.json

@@ -1359,6 +1359,69 @@
             }
             
         }
+        ,{
+            "path" : "pages/leave/the_leave",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/leave/the_leave_record",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/fuelfilling/the_fuel_filling",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/fuelfilling/track_addition",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/fuelfilling/apply_for_reimbursement",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/shortDistance/short_distance_record",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/shortDistance/short_track_addition",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"subpackages": [{
 			"root": "pageA",

+ 3 - 4
pages/clock/the_clock_record.vue

@@ -33,7 +33,7 @@
 					<uni-td align="center">
 						<view class="offClockDate" v-if="item.offClockDate">{{ item.offClockDate.split(" ")[1] }}</view>
 						<view class="offClockDate" v-else-if="!item.offClockDate">
-							<button v-if='item.status ==null' @click='supp' class="uni-button" size="mini"
+							<button v-if='item.status ==null' @click='supp(item)' class="uni-button" size="mini"
 								type="primary" align="center" style="height: 30px;">补卡</button>
 							<button @click='examine(item)' v-if='item.status=="审核中"'
 								class='listitemStatus audit Regular' size="mini" type="primary" align="center"
@@ -321,11 +321,10 @@
 			border-radius: 10px;
 			border: 1px solid #EEEEEE;
 			padding: 10rpx 20rpx;
-			position: relative;
 			height: 113px;
 
 			.right-bottom {
-				position: absolute;
+				// position: absolute;
 				right: 20rpx;
 				bottom: 20rpx;
 				color: #AFB3BF;
@@ -367,7 +366,7 @@
 
 		.bottom-btn {
 			width: 100%;
-			position: fixed;
+			// position: fixed;
 			bottom: 0;
 			display: flex;
 			z-index: 2;

+ 475 - 0
pages/fuelfilling/apply_for_reimbursement.vue

@@ -0,0 +1,475 @@
+<template>
+	<view class="center">
+		<view>
+			<view class='wrap'>
+				<view class="c-row">
+					<view class="title">车牌号</view>
+					<view class="con-list">
+						{{detailData.carNo}}
+					</view>
+				</view>
+				<view class="c-row">
+					<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" style="font-size: 5px;">
+									{{$helper.filterUrban(detailData.originCity)}}
+									{{$helper.filterArea(detailData.originArea)}}
+								</view>
+							</view>
+							<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>
+								<view class="level2-title">{{$helper.filterUrban(detailData.destinationCity)}}
+									{{$helper.filterArea(detailData.destinationArea)}}
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class='wrap1' v-for="(item , index) in fillingDetail.fillingDetailInfoList" :Key="index">
+				<view class="tit" style="font-size: 16px;">加油-{{index+1}}</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)">
+				</image>
+				<view class="c-row">
+					<view class="title">油耗(升)</view>
+					<view class="con-list">
+						<input v-model='item.oilConsumption' placeholder="请输入油耗" @input='calculate(index)'></input>
+					</view>
+				</view>
+				<view class="c-row">
+					<view class="title">当前油价(元/升)</view>
+					<view class="con-list">
+						<input type="digit" v-model='item.currentOilPrice' placeholder="请输入当前油价"
+							@input='calculate(index)'></input>
+					</view>
+				</view>
+				<view class="c-row">
+					<view class="title">计算金额(元)</view>
+					<view class="con-list">
+						<input type="digit" v-model='item.currentConsumption' placeholder="不可编辑,自动计算"
+							:disabled="true"></input>
+					</view>
+				</view>
+				<view class="c-row">
+					<view class="title">加油凭证</view>
+					<upload class="upload" ref="upload" :action="action" :max-size="maxSize" :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 class="footer">
+				<view class="c-row">
+					<view class="title">总油耗(L)</view>
+					<view class="con-list">
+						<input :disabled="true" v-model='tfc' placeholder="不可编辑,自动计算" type="digit"></input>
+					</view>
+				</view>
+				<view class="c-row">
+					<view class="title">合计金额(元)</view>
+					<view class="con-list">
+						<input :disabled="true" v-model='totalCost' placeholder="不可编辑,自动计算" type="digit"></input>
+					</view>
+				</view>
+				<view @click='submitApply' class="button">提交申请</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import upload from '@/components/upload.vue';
+	export default {
+		components: {
+			upload,
+		},
+		data() {
+			return {
+				detailData: {
+					carNo: '',
+					destinationProvince: "",
+					destinationCity: "",
+					destinationArea: "",
+					carNo: "",
+					originProvince: "",
+					originCity: "",
+					originArea: "",
+				},
+				fillingDetail: {
+					fillingDetailInfoList: [{
+						oilConsumption: "",
+						currentOilPrice: "",
+						currentConsumption: "",
+						addressUrl: [],
+						compId: uni.getStorageSync('pcUserInfo').compId,
+						commonId: uni.getStorageSync('pcUserInfo').userId,
+						fillingId: "",
+					}],
+					tfc: "",
+					totalCost: ""
+				},
+				action: this.$uploadUrl,
+				maxSize: 50 * 1024 * 1024, //限制文件大小 50M
+				btnLoading: false, //防止重复点击
+				isAdd: true,
+				tfc: "",
+				totalCost: ""
+			}
+		},
+		onLoad(options) {
+			this.id = options.id
+			this.fillingDetail.fillingDetailInfoList[0].fillingId = this.id
+		},
+		onShow() {
+			var that = this
+			if (this.id) {
+				this.seeInfo()
+			}
+		},
+		methods: {
+			seeInfo() {
+				this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.detailData = res.data.data
+					}
+				})
+			},
+			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-----------')
+				console.log(error)
+			},
+			onProgress(e) {
+				console.log(e)
+			},
+			onRemove(index, num) {
+				this.fillingDetail.fillingDetailInfoList[num].addressUrl.splice(index, 1)
+			},
+			filterFileType(index, lists) {
+				if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
+					lists.splice(index, 1);
+					// 当前文件不支持
+					uni.showModal({
+						title: '暂不支持当前图片类型',
+						showCancel: false
+					});
+				} else {
+					this.isAdd = false;
+				}
+			},
+			calculate(index) {
+				this.fillingDetail.fillingDetailInfoList[index].currentConsumption = (this.fillingDetail
+						.fillingDetailInfoList[index].oilConsumption * this.fillingDetail.fillingDetailInfoList[index]
+						.currentOilPrice)
+					.toFixed(2)
+				this.tfc = ""
+				this.totalCost = ""
+				for (let i = 0; i < this.fillingDetail.fillingDetailInfoList.length; i++) {
+					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()
+				}
+			},
+			delApply(index) {
+				this.fillingDetail.fillingDetailInfoList.splice(index, 1)
+			},
+			addApply() {
+				this.fillingDetail.fillingDetailInfoList.push({
+					oilConsumption: "",
+					currentOilPrice: "",
+					currentConsumption: "",
+					addressUrl: [],
+					compId: uni.getStorageSync('pcUserInfo').compId,
+					commonId: uni.getStorageSync('pcUserInfo').userId,
+					fillingId: this.id
+				})
+			},
+			submitApply() {
+				var that = this
+				uni.showModal({
+					content: "确定提交申请信息?",
+					showCancel: true,
+					confirmText: '提交',
+					success: function(res) {
+						if (res.confirm) {
+							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 => {
+									if (res.data.code == 200) {
+										that.$api.msg('提交成功')
+										uni.navigateTo({
+											url: '/pages/fuelfilling/the_fuel_filling'
+										})
+									} else {
+										that.$api.msg('提交失败')
+									}
+								})
+						}
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style lang='scss' scoped>
+	.center {
+		padding-bottom: 330rpx;
+	}
+
+	page {
+		background: #F5F6FA;
+	}
+
+	.title_b {
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding: 20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+	}
+
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 20rpx 30rpx;
+		position: relative;
+	}
+
+	.level2-title {
+		font-size: 14rpx;
+	}
+
+	.level2-title {
+		font-weight: 700;
+		color: #000000;
+	}
+
+	.jt-icon {
+		position: relative;
+		top: 6rpx;
+		width: 60rpx;
+		margin: 0 20rpx;
+
+	}
+
+	.xf-iamge {
+		width: 74rpx;
+		height: 43rpx;
+		position: absolute;
+		top: -20rpx;
+		right: 0;
+	}
+
+	.ssx {
+		width: 20px;
+		height: 20px;
+		background: linear-gradient(180deg, #C8D7E5 0%, #AFC1D6 100%);
+		font-size: 13px;
+		font-family: PingFangSC-Medium, PingFang SC;
+		font-weight: 500;
+		color: #FFFFFF;
+		border-radius: 50%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		margin-right: 5px;
+	}
+
+	.con-list {
+		-webkit-box-flex: 1;
+		-webkit-flex: 1;
+		flex: 1;
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: vertical;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		color: #303133;
+		line-height: 40rpx;
+		text-align: right;
+		padding-right: 20rpx;
+
+		.item1,
+		.item3 {
+			// width: 40%;
+			display: flex;
+
+			.text {
+				text-overflow: ellipsis;
+				overflow: hidden;
+				white-space: nowrap;
+			}
+
+		}
+
+		.item1 .text {
+			text-align: left;
+		}
+
+		.item3 .text {
+			text-align: right;
+		}
+	}
+
+	.align-center {
+		align-items: center;
+		margin-left: 64px;
+		width: 83%;
+	}
+
+	.wrap1 {
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 15px 10px;
+		margin-top: 18px;
+
+		input {
+			font-size: 14px;
+		}
+
+		.tit {
+			margin-left: 14px;
+			width: 47px;
+			padding-top: 10px;
+		}
+
+		.eliminate1 {
+			max-width: 50%;
+			width: 20px;
+			height: 20px;
+			font-size: 13px;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			border-radius: 50%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			margin-right: 5px;
+			margin-top: -20px;
+			margin-left: 73px;
+		}
+
+		.eliminate2 {
+			max-width: 50%;
+			width: 20px;
+			height: 20px;
+			font-size: 13px;
+			font-family: PingFangSC-Medium, PingFang SC;
+			font-weight: 500;
+			border-radius: 50%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			margin-right: 5px;
+			margin-top: -20px;
+			margin-left: 100px;
+		}
+
+		.upload {
+			margin-left: 157px;
+		}
+	}
+
+	.wrap {
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 15px 10px;
+		margin-top: 18px;
+
+		input {
+			font-size: 14px;
+		}
+
+		>.title {
+			padding: 10px 16px;
+		}
+
+	}
+
+	.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;
+			padding: 10px;
+			color: #fff;
+			text-align: center;
+			border-radius: 30px;
+			margin-top: 10px;
+		}
+	}
+
+
+	.buns_item {
+		display: flex;
+		padding: 80rpx 0 50rpx 0;
+		justify-content: space-around;
+	}
+
+	.but_css {
+		background: #22C572;
+		width: 40%;
+		padding: 20rpx;
+		color: #fff;
+		text-align: center;
+		border-radius: 20rpx;
+	}
+
+	/deep/.u-radio-group {
+		flex-direction: row-reverse;
+	}
+
+	.no-boder {
+		border: 0;
+	}
+
+	.textarea {
+		background: #F9F9FA;
+		border: 1px solid #EEEEEE;
+	}
+</style>

+ 308 - 0
pages/fuelfilling/the_fuel_filling.vue

@@ -0,0 +1,308 @@
+<template>
+	<view>
+		<view class="content">
+			<view class="content1-top">
+				<view class="top2">
+					<view class="left">
+						<view @click='tabcarchange(1)' class='line' :class='searchType==1?"active":""'>未完成</view>
+						<view @click='tabcarchange(3)' class='line' :class='searchType==3?"active":""'>已完成</view>
+					</view>
+					<view class="right uni-button">
+						<button style="line-height: 28px;" class="right-contrent1" @click="trackAddition">添加</button>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-for="(item,index) in fuelFilling" :key="index" @click="getInfo(item)">
+			<view class="good-list">
+				<view style="padding: 0 35rpx 20rpx 35rpx;position: relative;">
+					<view class="flex align-center">
+						<view class="item1">
+							<view class="ssx">{{$helper.getProvinceAbbreviation(item.originProvince)}}</view>
+							<view class="level2-title" style="font-size: 14px;">{{$helper.filterUrban(item.originCity)}}
+								{{$helper.filterArea(item.originArea)}}
+							</view>
+						</view>
+						<image class="jt-icon item2" src="@/static/images/fuel/jt.png" mode='widthFix'>
+						</image>
+						<view class="item3">
+							<view class="ssx">{{$helper.getProvinceAbbreviation(item.destinationProvince)}}</view>
+							<view class="level2-title">{{$helper.filterUrban(item.destinationCity)}}
+								{{$helper.filterArea(item.destinationArea)}}
+							</view>
+						</view>
+					</view>
+					<view class="flex flex-space-between yf-style">
+						<view class="left">
+							<view class="flex">
+								<view style="padding: 10px 0px 5px 20px;">车牌号 : {{item.carNo}}</view>
+								<view class="wenzi audit1" v-if="item.travelStatus == '已开始'">已开始</view>
+								<view class="wenzi audit2" v-if="item.travelStatus == '已结束'">已结束</view>
+								<view class="wenzi audit3" v-if="item.travelStatus == '已报销'">已报销</view>
+							</view>
+							<view class="u-flex-wrap flex row ">
+								<view style="width: 125px;padding: 10px 0px 5px 20px;">总油耗 : {{item.tfc}}L</view>
+								<view style="width: 100px;padding-top: 10px;">总价 : {{item.totalCost}}元</view>
+								<view style="padding: 13px 0px 5px 24px;">{{item.createDate.split(" ")[0]}}</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				searchType: 1,
+				pageSize: 10,
+				currentPage: 1,
+				fuelFilling: [{
+					destinationProvince: "",
+					destinationCity: "",
+					destinationArea: "",
+					carNo: "",
+					originProvince: "",
+					originCity: "",
+					originArea: "",
+					createDate: "",
+					travelStatus: "",
+					totalCost: "",
+					tfc: ""
+				}],
+			}
+		},
+		onShow() {
+			this.getList()
+		},
+		methods: {
+			tabcarchange(searchType) {
+				this.searchType = searchType
+				this.pageSize = 10
+				this.getList()
+			},
+			trackAddition() {
+				uni.navigateTo({
+					url: '/pages/fuelfilling/track_addition'
+				})
+			},
+			getList() {
+				this.$api.doRequest('get', '/fuelFillingInfo/selectFilling', {
+					pageSize: this.pageSize,
+					currentPage: this.currentPage,
+					// pcFlag: 0,
+					searchType: this.searchType,
+					compId: uni.getStorageSync('pcUserInfo').compId,
+					commonId: uni.getStorageSync('pcUserInfo').userId,
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.fuelFilling = res.data.data.records
+
+					}
+				})
+			},
+			getInfo(item) {
+				if (item.travelStatus == '已报销') {
+					return
+				} else {
+					uni.navigateTo({
+						url: '/pages/fuelfilling/track_addition?id=' + item.id
+					})
+				}
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		padding-bottom: 50rpx;
+	}
+
+	.tag {
+		background: #F5F6F9;
+		padding: 5px;
+		color: #333333;
+		display: inline-flex;
+		font-size: 22rpx;
+		border-radius: 3px;
+		margin: 3px;
+	}
+
+	.introduce-section .title {
+		justify-content: space-between;
+		align-items: flex-start;
+	}
+
+	.introduce-section .title text {
+		font-size: 28rpx;
+	}
+
+	.introduce-section .title .title-tip {
+		flex: 1;
+		font-size: 28rpx;
+		color: #FE6430;
+		font-weight: 500;
+		height: 50px;
+		line-height: 50px;
+		border-bottom: 1px solid #EEEEEE;
+
+	}
+
+	.introduce-section .title .title-tip-a {
+		flex: 1;
+		font-size: 15px;
+		color: #AFB3BF;
+		font-weight: 500;
+		height: 50px;
+		line-height: 50px;
+		border-bottom: 1px solid #EEEEEE;
+	}
+
+	.line {
+		display: inline-block;
+		padding: 5px;
+		position: relative;
+		font-size: 17px;
+	}
+
+	.line.active {
+		font-size: 19px;
+		font-weight: 900;
+	}
+
+	.line.active:after {
+		content: '';
+		display: block;
+		position: absolute;
+		width: 18px;
+		left: 50%;
+		transform: translateX(-50%);
+		bottom: 0;
+		border-bottom: 3px solid #22C572;
+	}
+
+	/deep/.u-action-active {
+		margin-right: 6px;
+	}
+
+	.content1-top {
+		background: white;
+		padding: 10px 16px 0 10px;
+		border-radius: 0 0 15px 15px;
+		padding-bottom: 10px;
+	}
+
+	.top2 {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		.right.uni-button {
+			display: flex;
+			align-items: center;
+			font-weight: normal;
+
+			.right-contrent1 {
+				background: #22C572;
+				height: 25px;
+				font-size: 14px;
+				color: #fff;
+
+			}
+
+		}
+	}
+
+	.good-list {
+		background-color: white;
+		margin: -10px 10px 20px 10px;
+		padding: 20px 0px 8px 0px;
+		border-radius: 30rpx;
+		box-shadow: 0px 5rpx 20rpx #E3E3E3;
+
+		.item1,
+		.item3 {
+			// width: 40%;
+			display: flex;
+
+			.text {
+				text-overflow: ellipsis;
+				overflow: hidden;
+				white-space: nowrap;
+			}
+
+		}
+
+		.item1 .text {
+			text-align: left;
+		}
+
+		.item3 .text {
+			text-align: right;
+		}
+	}
+
+	.xf-iamge {
+		width: 74rpx;
+		height: 43rpx;
+		position: absolute;
+		top: -20rpx;
+		right: 0;
+	}
+
+	.level2-title {
+		font-size: 28rpx;
+	}
+
+	.jt-icon {
+		position: relative;
+		top: 6rpx;
+		width: 60rpx;
+		margin: 0 20rpx;
+
+	}
+
+	.ssx {
+		width: 20px;
+		height: 20px;
+		background: linear-gradient(180deg, #C8D7E5 0%, #AFC1D6 100%);
+		font-size: 13px;
+		font-family: PingFangSC-Medium, PingFang SC;
+		font-weight: 500;
+		color: #FFFFFF;
+		border-radius: 50%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		margin-right: 5px;
+	}
+
+	.level2-title {
+		font-weight: 700;
+		color: #000000;
+	}
+
+	.wenzi {
+		text-align: right;
+		border-radius: 10rpx;
+		// margin-right: 30rpx;
+		height: 10rpx;
+		padding: 10px 0px 5px 128px;
+	}
+
+	.audit1 {
+		color: #22C572;
+	}
+
+	.audit2 {
+		color: #22C572;
+	}
+
+	.audit3 {
+		color: #AFB3BF;
+	}
+</style>

+ 256 - 0
pages/fuelfilling/track_addition.vue

@@ -0,0 +1,256 @@
+<template>
+	<view>
+		<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>
+					</view>
+				</view>
+			</view>
+			<view @click='startTrack' class="button" v-if='titleBtn=="开始轨迹"'>{{titleBtn}}</view>
+			<view @click='startTrack' class="button1" v-if='titleBtn=="结束轨迹"'>{{titleBtn}}</view>
+			<view @click='startTrack' class="button2" v-if='titleBtn=="申请报销"'>{{titleBtn}}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				detailData: {
+					carNo: '',
+					travelStatus: '',
+					originProvince: '',
+					originCity: '',
+					originArea: '',
+					originLongitude: '',
+					originLatitude: '',
+					destinationProvince: '',
+					destinationCity: '',
+					destinationArea: '',
+					destinationLongitude: '',
+					destinationLatitude: '',
+					trackFlag: '',
+					compId: '',
+					commonId: '',
+					driverName: '',
+					fillingNo: '',
+					strokeType: '1',
+				},
+				titleBtn: "开始轨迹",
+			}
+		},
+		onLoad(options) {
+			this.id = options.id
+		},
+		onShow() {
+			var that = this
+			if (this.id) {
+				this.seeInfo()
+			}
+		},
+		methods: {
+			seeInfo() {
+				this.$api.doRequest('get', '/fuelFillingInfo/getFilling', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.detailData = res.data.data
+						if (this.detailData.travelStatus == "已开始") {
+							this.titleBtn = "结束轨迹"
+						} else if (this.detailData.travelStatus == "已结束") {
+							this.titleBtn = "申请报销"
+						}
+					}
+				})
+			},
+			startTrack() {
+				if (this.titleBtn == "开始轨迹") {
+					var that = this
+					uni.showModal({
+						content: "确定开始轨迹?",
+						showCancel: true,
+						confirmText: '确定',
+						success: function(res) {
+							if (res.confirm) {
+								that.detailData.compId = uni.getStorageSync('pcUserInfo').compId
+								that.detailData.commonId = uni.getStorageSync('pcUserInfo').userId
+								that.detailData.driverName = uni.getStorageSync('userInfo').userName
+								that.detailData.trackFlag = "0"
+								that.detailData.fillingNo = "202207040001"
+								that.detailData.originProvince = "辽宁省"
+								that.detailData.originCity = "营口市"
+								that.detailData.originArea = "鲅鱼圈区"
+								that.detailData.originLongitude = "122.21"
+								that.detailData.originLatitude = "40.664"
+								that.$api.doRequest('post', '/fuelFillingInfo/api/addFilling',
+										that.detailData
+									)
+									.then(res => {
+										that.id = res.data.data
+										if (res.data.code == 200) {
+											that.$api.msg('提交成功')
+											that.titleBtn = "结束轨迹"
+										} else {
+											that.$api.msg('提交失败')
+										}
+									})
+							}
+						}
+					})
+				} else if (this.titleBtn == "结束轨迹") {
+					var that = this
+					uni.showModal({
+						content: "确定结束轨迹?",
+						showCancel: true,
+						confirmText: '确定',
+						success: function(res) {
+							if (res.confirm) {
+								that.detailData.compId = uni.getStorageSync('pcUserInfo').compId
+								that.detailData.commonId = uni.getStorageSync('pcUserInfo').userId
+								that.detailData.driverName = uni.getStorageSync('userInfo').userName
+								that.detailData.trackFlag = "1"
+								that.detailData.destinationProvince = "江苏省"
+								that.detailData.destinationCity = "宿迁市"
+								that.detailData.destinationArea = "宿城区"
+								that.detailData.destinationLongitude = "118.291"
+								that.detailData.destinationLatitude = "33.942"
+								that.$api.doRequest('post', '/fuelFillingInfo/api/addFilling',
+										that.detailData
+									)
+									.then(res => {
+										if (res.data.code == 200) {
+											that.$api.msg('提交成功')
+											that.titleBtn = "申请报销"
+										} else {
+											that.$api.msg('提交失败')
+										}
+									})
+							}
+						}
+					})
+				} else {
+					uni.navigateTo({
+						url: '/pages/fuelfilling/apply_for_reimbursement?id=' + this.id
+					})
+				}
+			},
+		}
+	}
+</script>
+
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+	}
+
+	.title_b {
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding: 20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+	}
+
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 20rpx 30rpx;
+	}
+
+	.con-list {
+		-webkit-box-flex: 1;
+		-webkit-flex: 1;
+		flex: 1;
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: vertical;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		color: #303133;
+		line-height: 40rpx;
+		text-align: right;
+		padding-right: 20rpx;
+	}
+
+	.wrap {
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 15px 10px;
+
+		input {
+			font-size: 14px;
+		}
+
+		>.title {
+			padding: 10px 16px;
+		}
+	}
+
+	.button {
+		background: #22C572;
+		width: 90%;
+		margin: 250px auto;
+		padding: 10px;
+		color: #fff;
+		text-align: center;
+		border-radius: 30px;
+	}
+
+	.button1 {
+		background: #ff0000;
+		width: 90%;
+		margin: 250px auto;
+		padding: 10px;
+		color: #fff;
+		text-align: center;
+		border-radius: 30px;
+	}
+
+	.button2 {
+		background: #4089ff;
+		width: 90%;
+		margin: 250px auto;
+		padding: 10px;
+		color: #fff;
+		text-align: center;
+		border-radius: 30px;
+	}
+
+	.buns_item {
+		display: flex;
+		padding: 80rpx 0 50rpx 0;
+		justify-content: space-around;
+	}
+
+	.but_css {
+		background: #22C572;
+		width: 40%;
+		padding: 20rpx;
+		color: #fff;
+		text-align: center;
+		border-radius: 20rpx;
+	}
+
+	/deep/.u-radio-group {
+		flex-direction: row-reverse;
+	}
+
+	.no-boder {
+		border: 0;
+	}
+
+	.textarea {
+		background: #F9F9FA;
+		border: 1px solid #EEEEEE;
+	}
+</style>

+ 291 - 0
pages/leave/the_leave.vue

@@ -0,0 +1,291 @@
+<template>
+	<view>
+		<view class='wrap'>
+			<view class="c-row">
+				<view class="title">请假类型</view>
+				<view class="con-list">
+					<view @click='show=true'>{{detailData.leaveType}}</view>
+					<u-picker :range="leaveTypeList" range-key="leaveType"@confirm='ltCheck($event)' v-model="show" mode="selector">
+					</u-picker>
+				</view>
+			</view>
+			<view class="c-row">
+				<view class="title">开始时间</view>
+				<view class="con-list">
+					<view @click='show1=true'>{{detailData.startDate}}</view>
+					<u-picker v-model="show1" mode="time" @confirm='dateChange($event)' :params="params">
+					</u-picker>
+				</view>
+			</view>
+			<view class="c-row">
+				<view class="title">结束时间</view>
+				<view class="con-list">
+					<view @click='show2=true'>{{detailData.endDate}}</view>
+					<u-picker v-model="show2" mode="time" @confirm='dateChange1($event)' :params="params">
+					</u-picker>
+				</view>
+			</view>
+			<view class="c-row">
+				<view class="title">时长</view>
+				<view class="con-list">
+					<input  v-model='detailData.leaveDuration' placeholder="请输入时长"></input>
+				</view>
+			</view>
+			<view class="c-row">
+				<view class="left">请假事由</view>
+			</view>
+			<view style='position:relative;' class="wrap no-boder">
+				<u-input class='textarea' v-model="detailData.reasonForLeave" :type="type" :border="border"
+					:height="height" :auto-height="autoHeight" />
+				<view style='position:absolute;right:10px;bottom:20px;color:#AFB3BF;'>
+					{{detailData.reasonForLeave.length}}/100个字
+				</view>
+			</view>
+		</view>
+		<view class="footer">
+			<view @click='clockRecord' class="button">记录</view>
+			<view @click='submit' class="button">提交</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				
+				show: false,
+				show1: false,
+				show2: false,
+				detailData: {
+					leaveType:'选择请假类型',
+					reasonForLeave:"",
+					startDate:'',
+					endDate:'选择结束时间',
+					leaveDuration:'',
+				},
+				params: {
+					year: true,
+					month: true,
+					day: true,
+					hour: true,
+					minute: true,
+					
+				},
+				type: 'textarea',
+				border: true,
+				height: 150,
+				autoHeight: true,
+				// endDate1:"",
+				// startDate1: "",
+				leaveTypeList: [{
+						leaveType: "事假"
+					},
+					{
+						leaveType: "病假"
+					},
+				],
+
+			}
+		},
+		onLoad(options) {
+			let h 
+			let m 
+			let s
+			let _day = new Date();
+			_day.setTime(_day.getTime());
+			if(_day.getHours() < 10 ){
+				 h = "0" + _day.getHours()
+			}
+			else{
+				h =  _day.getHours()
+			}
+			if(_day.getMinutes() < 10 ){
+				 m = "0" + _day.getMinutes()
+			}
+			else{
+				m = _day.getMinutes()
+			}
+			this.detailData.startDate = _day.getFullYear() + "-" + (_day.getMonth() + 1) + "-" + _day.getDate()
+			+ " " + h + ":" + m;
+		},
+		methods: {
+			calculate() {
+				const query = uni.createSelectorQuery().in(this);
+				query.selectAll('.left')
+				console.log(query)
+			},
+			ltCheck(e) {
+				this.detailData.leaveType = this.leaveTypeList[e].leaveType
+				if(this.detailData.leaveType = "事假"){
+					this.detailData.leaveTypeKey = "1"
+				}
+				else{
+					this.detailData.leaveTypeKey = "3"
+				}
+			},
+			dateChange(e) {
+				this.detailData.startDate = e.year + "-" + e.month + "-" + e.day + " " + e.hour + ":" + e.minute
+				// this.startDate1 = e.year + "-" + e.month + "-" + e.day + "-" + e.hour + "-" + e.minute + "-" + e.second
+				 // + ":" + "00"
+			},
+			dateChange1(e) {
+				this.detailData.endDate = e.year + "-" + e.month + "-" + e.day + " " + e.hour + ":" + e.minute
+				// this.endDate1 = e.year + "-" + e.month + "-" + e.day + "-" + e.hour + "-" + e.minute + "-" + e.second
+			},
+			submit() {
+				if (!this.detailData.leaveType) {
+					this.$api.msg('请假类型不能为空')
+					return
+				}
+				if (!this.detailData.startDate) {
+					this.$api.msg('请选择请假开始时间')
+					return
+				}
+				if (!this.detailData.endDate) {
+					this.$api.msg('请选择请假结束时间')
+					return
+				}
+				if (!this.detailData.leaveDuration) {
+					this.$api.msg('请输入请假时长')
+					return
+				}
+				if (!this.detailData.reasonForLeave) {
+					this.$api.msg('请假事由不能为空')
+					return
+				}
+				var that = this
+				uni.showModal({
+					content: "确定提交请假信息?",
+					showCancel: true,
+					confirmText: '提交',
+					success: function(res) {
+						if (res.confirm) {
+							that.detailData.compId = uni.getStorageSync('pcUserInfo').compId
+							that.detailData.commonId = uni.getStorageSync('pcUserInfo').userId
+							that.detailData.dept = uni.getStorageSync('pcUserInfo').deptName
+							that.detailData.phone = uni.getStorageSync('pcUserInfo').userMobilePhone
+							that.detailData.empName = uni.getStorageSync('userInfo').userName
+							that.$api.doRequest('post', '/leaveInfo/api/addLeave', that.detailData)
+								.then(res => {
+									if (res.data.code == 200) {
+										that.$api.msg('提交成功')
+									} else {
+										that.$api.msg('提交失败')
+									}
+								})
+						}
+					}
+				})
+			},
+			clockRecord() {
+				uni.navigateTo({
+					url: '/pages/leave/the_leave_record'
+				})
+			},
+		},
+	}
+</script>
+
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+	}
+
+	.title_b {
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding: 20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+	}
+
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 20rpx 30rpx;
+		position: relative;
+	}
+
+	.con-list {
+		-webkit-box-flex: 1;
+		-webkit-flex: 1;
+		flex: 1;
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: vertical;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		color: #303133;
+		line-height: 40rpx;
+		text-align: right;
+		padding-right: 20rpx;
+	}
+
+	.wrap {
+		padding-bottom: 10px;
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+
+		input {
+			font-size: 14px;
+		}
+
+		>.title {
+			padding: 10px 16px;
+		}
+
+	}
+
+	.footer {
+		background: #fff;
+		position: fixed;
+		bottom: 0;
+		width: 100%;
+		padding: 20px 10px;
+		z-index: 10;
+
+		.button {
+			background: #22C572;
+			width: 90%;
+			margin: 20rpx auto;
+			padding: 10px;
+			color: #fff;
+			text-align: center;
+			border-radius: 30px;
+		}
+	}
+
+	.buns_item {
+		display: flex;
+		padding: 80rpx 0 50rpx 0;
+		justify-content: space-around;
+	}
+
+	.but_css {
+		background: #22C572;
+		width: 40%;
+		padding: 20rpx;
+		color: #fff;
+		text-align: center;
+		border-radius: 20rpx;
+	}
+
+	/deep/.u-radio-group {
+		flex-direction: row-reverse;
+	}
+	.no-boder {
+		border: 0;
+	}
+	.textarea {
+		background: #F9F9FA;
+		border: 1px solid #EEEEEE;
+	}
+</style>

+ 98 - 0
pages/leave/the_leave_record.vue

@@ -0,0 +1,98 @@
+<template>
+	<view>
+		<view class='wrap' v-for="(item, index) in tableData" :key="index">
+			<view class="wenzi audit1" v-if="item.status == '待审核'">审核中</view>
+			<view class="wenzi audit2" v-if="item.status == '已通过'">已通过</view>
+			<view class="wenzi audit3" v-if="item.status == '未通过'" >未通过</view>
+			<view class="c-row">
+				<view class="title">请假类型 : {{item.leaveType}}</view>
+			</view>
+			<view class="c-row">
+				<view class="title">请假事由 : {{item.reasonForLeave}}</view>
+			</view>
+			<view class="c-row">
+				<view class="title">开始时间 : {{item.startDate}}</view>
+			</view>
+			<view class="c-row">
+				<view class="title">结束时间 : {{item.endDate}}</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				pageSize: 10,
+				currentPage: 1,
+				tableData: [],
+			}
+		},
+		onShow() {
+			this.getList()
+		},
+		methods: {
+			getList() {
+				this.$api.doRequest('get', '/leaveInfo/selectLeaveInfo', {
+					pageSize: this.pageSize,
+					currentPage: this.currentPage,
+					pcFlag: 0,
+					compId: uni.getStorageSync('pcUserInfo').compId,
+					commonId: uni.getStorageSync('pcUserInfo').userId,
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.tableData = res.data.data.records
+
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+	}
+	.wrap {
+		padding-top: 15px;
+		padding-bottom: 20px;
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 10px;
+		input {
+			font-size: 14px;
+		}
+		>.title {
+			padding: 10px 16px;
+		}
+	}
+	.wenzi {
+		text-align: right;
+		border-radius: 10rpx;
+		margin-right: 30rpx;
+		height: 10rpx;
+	}
+	.audit1{
+		color: red;
+	}
+	.audit2{
+		color: #afafe6;
+	}
+	.audit3{
+		color: red;
+	}
+
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 5rpx 30rpx;
+		position: relative;
+	}
+</style>

+ 573 - 0
pages/shortDistance/short_distance_record.vue

@@ -0,0 +1,573 @@
+<template>
+	<view>
+		<view class="content">
+			<view class="content1-top">
+				<view class="top2">
+					<view class="left">
+						<view @click='tabcarchange(1)' class='line' :class='searchType==1?"active":""'>未完成</view>
+						<view @click='tabcarchange(3)' class='line' :class='searchType==3?"active":""'>已完成</view>
+					</view>
+					<view class="right uni-button">
+						<button v-if="searchType==3" style="line-height: 28px;margin-right: 5px;"
+							class="right-contrent1" @click="requestFunds">请款</button>
+						<button style="line-height: 28px;" class="right-contrent1" @click="trackAddition">添加</button>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-for="(item,index) in shortDetail.shortFillingList" :key="index" @click="getInfo(item)">
+			<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 class="flex align-center" style="width: 103%;margin-left: 12px;">
+						<view class="item1">
+							<view class="ssx">{{$helper.getProvinceAbbreviation(item.originProvince)}}</view>
+							<view class="level2-title" style="font-size: 14px;">{{item.sendWarehouse}}
+							</view>
+						</view>
+						<image class="jt-icon item2" src="@/static/images/fuel/jt.png" mode='widthFix'>
+						</image>
+						<view class="item3">
+							<view class="ssx">{{$helper.getProvinceAbbreviation(item.destinationProvince)}}</view>
+							<view class="level2-title">{{item.receiveWarehouse}}
+							</view>
+						</view>
+						<view class="wenzi audit1" v-if="item.travelStatus == '已开始'">已开始</view>
+						<view class="wenzi audit2" v-if="item.travelStatus == '已结束'">已结束</view>
+						<view class="wenzi audit3" v-if="item.travelStatus == '已报销'">已报销</view>
+					</view>
+					<view class="flex flex-space-between yf-style">
+						<view class="left">
+							<view class="flex">
+								<view style="min-width: 130px;margin-top: 10px;">车牌号 : {{item.carNo}}</view>
+								<view style="min-width: 110px;margin-top: 10px;">里程 :
+									{{item.mileage}}公里
+								</view>
+								<view style="width: 90px;margin-top: 12px;">{{item.createDate.split(" ")[0]}}
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-if='show1' class="shade">
+			<view class="wrap1">
+				<view class="alert-top">
+					<view class="title1">
+						请款
+					</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>
+				</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 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>
+				</view>
+				<view @click="close()" class="cancel">取消</view>
+				<view @click='requestFundsSubmit()' class="confirm">确定</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				show2: false,
+				searchType: 1,
+				pageSize: 10,
+				show1: false,
+				show: false,
+				currentPage: 1,
+				shortDetail: {
+					shortFillingList: [{
+						destinationProvince: "",
+						carNo: "",
+						originProvince: "",
+						createDate: "",
+						travelStatus: "",
+						mileage: "",
+						sendWarehouse: "",
+						receiveWarehouse: "",
+					}],
+					amountRequested: '',
+					warehouseName: '请选择仓库名称',
+					remark: '',
+				},
+				warehouseType: '1',
+				warehouseBaseInfoList: [],
+				type: 'textarea',
+				border: true,
+				height: 150,
+				autoHeight: true,
+				
+				infoList:[],
+
+			}
+		},
+		onLoad() {
+			this.getWarehouse()
+		},
+		onShow() {
+			this.getList()
+		},
+		methods: {
+			checkedChange(item) {
+				if (item.travelStatus == '已报销') {
+					this.show2 = false
+					this.$api.msg('已报销的不可再选')
+					return
+				}else{
+					this.infoList.push(item)
+				}
+			},
+			tabcarchange(searchType) {
+				this.searchType = searchType
+				this.pageSize = 10
+				this.getList()
+			},
+			trackAddition() {
+				uni.navigateTo({
+					url: '/pages/shortDistance/short_track_addition'
+				})
+			},
+			getList() {
+				this.$api.doRequest('get', '/shortFillingInfo/selectShortFilling', {
+					pageSize: this.pageSize,
+					currentPage: this.currentPage,
+					// pcFlag: 0,
+					searchType: this.searchType,
+					compId: uni.getStorageSync('pcUserInfo').compId,
+					commonId: uni.getStorageSync('pcUserInfo').userId,
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.shortDetail.shortFillingList = res.data.data.records
+
+					}
+				})
+			},
+			getWarehouse() {
+				this.$api.doRequest('get', '/warehouseBaseInfo/selectWarehouse', {
+					compId: uni.getStorageSync("pcUserInfo").compId,
+					warehouseType: '1'
+				}).then(res => {
+					if (res.data.data.length != 0) {
+						this.warehouseBaseInfoList = res.data.data
+					}
+				})
+			},
+			targetLPicker(e) {
+				this.shortDetail.warehouseName = this.warehouseBaseInfoList[e[0]].warehouseName
+			},
+			requestFunds() {
+				this.show1 = true
+
+			},
+			close() {
+				this.show1 = false
+			},
+			getInfo(item) {
+				if (item.travelStatus == '已结束') {
+					return
+				} else {
+					uni.navigateTo({
+						url: '/pages/shortDistance/short_track_addition?id=' + item.id
+					})
+				}
+			},
+			requestFundsSubmit() {
+				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('提交失败')
+									}
+								})
+						}
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.content {
+		padding-bottom: 50rpx;
+	}
+
+	.tag {
+		background: #F5F6F9;
+		padding: 5px;
+		color: #333333;
+		display: inline-flex;
+		font-size: 22rpx;
+		border-radius: 3px;
+		margin: 3px;
+	}
+
+	.introduce-section .title {
+		justify-content: space-between;
+		align-items: flex-start;
+	}
+
+	.introduce-section .title text {
+		font-size: 28rpx;
+	}
+
+	.introduce-section .title .title-tip {
+		flex: 1;
+		font-size: 28rpx;
+		color: #FE6430;
+		font-weight: 500;
+		height: 50px;
+		line-height: 50px;
+		border-bottom: 1px solid #EEEEEE;
+
+	}
+
+	.introduce-section .title .title-tip-a {
+		flex: 1;
+		font-size: 15px;
+		color: #AFB3BF;
+		font-weight: 500;
+		height: 50px;
+		line-height: 50px;
+		border-bottom: 1px solid #EEEEEE;
+	}
+
+	.line {
+		display: inline-block;
+		padding: 5px;
+		position: relative;
+		font-size: 17px;
+	}
+
+	.line.active {
+		font-size: 19px;
+		font-weight: 900;
+	}
+
+	.line.active:after {
+		content: '';
+		display: block;
+		position: absolute;
+		width: 18px;
+		left: 50%;
+		transform: translateX(-50%);
+		bottom: 0;
+		border-bottom: 3px solid #22C572;
+	}
+
+	/deep/.u-action-active {
+		margin-right: 6px;
+	}
+
+	.content1-top {
+		background: white;
+		padding: 10px 16px 0 10px;
+		border-radius: 0 0 15px 15px;
+		padding-bottom: 10px;
+	}
+
+	.top2 {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+
+		.right.uni-button {
+			display: flex;
+			align-items: center;
+			font-weight: normal;
+
+			.right-contrent1 {
+				background: #22C572;
+				height: 25px;
+				font-size: 14px;
+				color: #fff;
+
+			}
+
+		}
+	}
+
+	.good-list {
+		width: 95%;
+		margin: 0 auto;
+		background-color: white;
+		padding: 33px 0px 25px 0px;
+		border-radius: 30rpx;
+		box-shadow: 0px 5rpx 20rpx #E3E3E3;
+		margin-bottom: 10px;
+
+		.item1,
+		.item3 {
+			// width: 40%;
+			display: flex;
+
+			.text {
+				text-overflow: ellipsis;
+				overflow: hidden;
+				white-space: nowrap;
+			}
+
+		}
+
+		.item1 .text {
+			text-align: left;
+		}
+
+		.item3 .text {
+			text-align: right;
+		}
+
+	}
+
+	.fuxuankuang {
+		margin-top: 10px;
+	}
+
+	.xf-iamge {
+		width: 74rpx;
+		height: 43rpx;
+		position: absolute;
+		top: -20rpx;
+		right: 0;
+	}
+
+	.level2-title {
+		font-size: 28rpx;
+		width: 84px;
+	}
+
+	.jt-icon {
+		position: relative;
+		top: 6rpx;
+		width: 60rpx;
+		margin: 0 20rpx;
+
+	}
+
+	.ssx {
+		width: 20px;
+		height: 20px;
+		background: linear-gradient(180deg, #C8D7E5 0%, #AFC1D6 100%);
+		font-size: 13px;
+		font-family: PingFangSC-Medium, PingFang SC;
+		font-weight: 500;
+		color: #FFFFFF;
+		border-radius: 50%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		margin-right: 5px;
+	}
+
+	.level2-title {
+		font-weight: 700;
+		color: #000000;
+	}
+
+	.wenzi {
+		margin-top: -65px;
+		text-align: right;
+		border-radius: 5px;
+		height: 5px;
+	}
+
+	.audit1 {
+		color: #22C572;
+	}
+
+	.audit2 {
+		color: #22C572;
+	}
+
+	.audit3 {
+		color: #AFB3BF;
+	}
+
+	.c-row {
+		display: flex;
+		-webkit-box-align: center;
+		align-items: center;
+		// padding: 0px 15px;
+		position: relative;
+	}
+
+	.shade {
+		position: fixed;
+		top: 0;
+		left: 0;
+		height: 100%;
+		width: 100%;
+		background: rgba(0, 0, 0, 0.4);
+		z-index: 3;
+
+		.wrap1 {
+			position: absolute;
+			left: 0;
+			top: 0;
+			right: 0;
+			bottom: 0;
+			margin: auto;
+			background: #fff;
+			width: calc(100% - 198rpx);
+			height: 320px;
+			border-radius: 20rpx;
+
+			input {
+				font-size: 14px;
+			}
+
+			.alert-top {
+				padding: 33rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				position: relative;
+			}
+
+			.title1 {
+				font-size: 32rpx;
+				font-weight: 600;
+				color: #333333;
+			}
+
+			.close {
+				position: absolute;
+				right: 33rpx;
+			}
+		}
+
+		.title2 {
+			padding: 10px 16px;
+		}
+
+		.con-list {
+			-webkit-box-flex: 1;
+			flex: 1;
+			display: flex;
+			-webkit-box-orient: vertical;
+			-webkit-box-direction: normal;
+			flex-direction: column;
+			color: #303133;
+			line-height: 20px;
+			text-align: right;
+			padding-right: 10px;
+		}
+
+		.cancel {
+			position: absolute;
+			display: inline-block;
+			width: 50%;
+			text-align: center;
+			bottom: 0;
+			padding: 10px;
+			border-top: 1px solid #eee;
+			font-size: 34rpx;
+		}
+
+		.confirm {
+			position: absolute;
+			display: inline-block;
+			width: 50%;
+			text-align: center;
+			bottom: 0;
+			padding: 10px;
+			border-top: 1px solid #eee;
+			font-size: 34rpx;
+		}
+
+		.cancel {
+			left: 0;
+			border-right: 1px solid #eee;
+			color: #ff0000;
+		}
+
+		.confirm {
+			right: 0;
+			color: #22C572;
+		}
+
+		.bottom-btn {
+			width: 100%;
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			z-index: 2;
+			left: 0;
+			background-color: #f8f8f8;
+			flex-direction: column;
+
+			.btn1,
+			.btn2 {
+				width: 100%;
+				margin-bottom: 26rpx;
+				border-radius: 90rpx;
+			}
+
+			.btn1 {
+				background: white;
+				color: #00C265;
+			}
+		}
+	}
+
+	.textarea {
+		background: #F9F9FA;
+		border: 1px solid #EEEEEE;
+		margin-left: 10px;
+	}
+</style>

+ 244 - 0
pages/shortDistance/short_track_addition.vue

@@ -0,0 +1,244 @@
+<template>
+	<view>
+		<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>
+					</view>
+				</view>
+			</view>
+			<view @click='startTrack' class="button" v-if='titleBtn=="开始轨迹"'>{{titleBtn}}</view>
+			<view @click='startTrack' class="button1" v-if='titleBtn=="结束轨迹"'>{{titleBtn}}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				detailData: {
+					carNo: '',
+					travelStatus: '',
+					originProvince: '',
+					originCity: '',
+					originArea: '',
+					originLongitude: '',
+					originLatitude: '',
+					destinationProvince: '',
+					destinationCity: '',
+					destinationArea: '',
+					destinationLongitude: '',
+					destinationLatitude: '',
+					trackFlag: '0',
+					compId: '',
+					commonId: '',
+					mileage: '',
+					sendWarehouse:'',
+					receiveWarehouse:'',
+				},
+				titleBtn: "开始轨迹",
+			}
+		},
+		onLoad(options) {
+			this.id = options.id
+		},
+		onShow() {
+			var that = this
+			if (this.id) {
+				this.seeInfo()
+			}
+		},
+		methods: {
+			seeInfo() {
+				this.$api.doRequest('get', '/shortFillingInfo/getShortFilling', {
+					id: this.id
+				}).then(res => {
+					if (res.data.code == 200) {
+						this.detailData = res.data.data
+						if (this.detailData.travelStatus == "已开始") {
+							this.titleBtn = "结束轨迹"
+						} 
+					}
+				})
+			},
+			startTrack() {
+				if (this.titleBtn == "开始轨迹") {
+					var that = this
+					uni.showModal({
+						content: "确定开始轨迹?",
+						showCancel: true,
+						confirmText: '确定',
+						success: function(res) {
+							if (res.confirm) {
+								that.detailData.compId = uni.getStorageSync('pcUserInfo').compId
+								that.detailData.commonId = uni.getStorageSync('pcUserInfo').userId
+								that.detailData.driverName = uni.getStorageSync('userInfo').userName
+								that.detailData.trackFlag = "0"
+								that.detailData.fillingNo = "202207040004"
+								that.detailData.originProvince = "黑龙江省"
+								that.detailData.originCity = "齐齐哈尔市"
+								that.detailData.originArea = "克东县"
+								that.detailData.sendWarehouse = "克东千丰库"
+								that.detailData.originLongitude = "123.188"
+								that.detailData.originLatitude = "41.737"
+								that.$api.doRequest('post', '/shortFillingInfo/api/addShortFilling',
+										that.detailData
+									)
+									.then(res => {
+										that.id = res.data.data
+										if (res.data.code == 200) {
+											that.$api.msg('提交成功')
+											that.titleBtn = "结束轨迹"
+										} else {
+											that.$api.msg('提交失败')
+										}
+									})
+							}
+						}
+					})
+				} else if (this.titleBtn == "结束轨迹") {
+					var that = this
+					uni.showModal({
+						content: "确定结束轨迹?",
+						showCancel: true,
+						confirmText: '确定',
+						success: function(res) {
+							if (res.confirm) {
+								that.detailData.compId = uni.getStorageSync('pcUserInfo').compId
+								that.detailData.commonId = uni.getStorageSync('pcUserInfo').userId
+								that.detailData.driverName = uni.getStorageSync('userInfo').userName
+								that.detailData.trackFlag = "1"
+								that.detailData.destinationProvince = "辽宁省"
+								that.detailData.receiveWarehouse = "鲅鱼圈红运库"
+								that.detailData.carNo
+								that.detailData.mileage = "15"
+								that.detailData.destinationLongitude = "118.291"
+								that.detailData.destinationLatitude = "33.942"
+								that.$api.doRequest('post', '/shortFillingInfo/api/addShortFilling',
+										that.detailData
+									)
+									.then(res => {
+										if (res.data.code == 200) {
+											that.$api.msg('提交成功')
+											uni.navigateTo({
+												url: '/pages/shortDistance/short_distance_record'
+											})
+										} else {
+											that.$api.msg('提交失败')
+										}
+									})
+							}
+						}
+					})
+				} 
+			},
+		}
+	}
+</script>
+
+<style lang='scss' scoped>
+	page {
+		background: #F5F6FA;
+	}
+
+	.title_b {
+		margin: 20rpx 20rpx 0rpx 20rpx;
+		padding: 20rpx 10rpx 20rpx 10rpx;
+		font-size: 18px;
+		font-weight: 550;
+	}
+
+	.c-row {
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-align: center;
+		-webkit-align-items: center;
+		align-items: center;
+		padding: 20rpx 30rpx;
+	}
+
+	.con-list {
+		-webkit-box-flex: 1;
+		-webkit-flex: 1;
+		flex: 1;
+		display: -webkit-box;
+		display: -webkit-flex;
+		display: flex;
+		-webkit-box-orient: vertical;
+		-webkit-box-direction: normal;
+		-webkit-flex-direction: column;
+		flex-direction: column;
+		color: #303133;
+		line-height: 40rpx;
+		text-align: right;
+		padding-right: 20rpx;
+	}
+
+	.wrap {
+		font-size: 14px;
+		background: #fff;
+		margin: 10px;
+		border-radius: 15px 10px;
+
+		input {
+			font-size: 14px;
+		}
+
+		>.title {
+			padding: 10px 16px;
+		}
+	}
+
+	.button {
+		background: #22C572;
+		width: 90%;
+		margin: 250px auto;
+		padding: 10px;
+		color: #fff;
+		text-align: center;
+		border-radius: 30px;
+	}
+
+	.button1 {
+		background: #ff0000;
+		width: 90%;
+		margin: 250px auto;
+		padding: 10px;
+		color: #fff;
+		text-align: center;
+		border-radius: 30px;
+	}
+
+	.buns_item {
+		display: flex;
+		padding: 80rpx 0 50rpx 0;
+		justify-content: space-around;
+	}
+
+	.but_css {
+		background: #22C572;
+		width: 40%;
+		padding: 20rpx;
+		color: #fff;
+		text-align: center;
+		border-radius: 20rpx;
+	}
+
+	/deep/.u-radio-group {
+		flex-direction: row-reverse;
+	}
+
+	.no-boder {
+		border: 0;
+	}
+
+	.textarea {
+		background: #F9F9FA;
+		border: 1px solid #EEEEEE;
+	}
+</style>
+

+ 28 - 1
pages/user/user.vue

@@ -304,13 +304,40 @@
 						show: false
 					},
 					{
-						num: 8,
+						num: 7,
 						name: '打卡',
 						// icon: 'cuIcon-edit',
 						src: '../../static/img/sign/kdsg.png',
 						tips: 0,
 						url: `/pages/clock/the_clock`,
 						show: true
+					},
+					{
+						num: 8,
+						name: '请假',
+						// icon: 'cuIcon-edit',
+						src: '../../static/img/sign/kdsg.png',
+						tips: 0,
+						url: `/pages/leave/the_leave`,
+						show: true
+					},
+					{
+						num: 9,
+						name: '加油',
+						// icon: 'cuIcon-edit',
+						src: '../../static/img/sign/kdsg.png',
+						tips: 0,
+						url: `/pages/fuelfilling/the_fuel_filling`,
+						show: true
+					},
+					{
+						num: 10,
+						name: '短途记录',
+						// icon: 'cuIcon-edit',
+						src: '../../static/img/sign/kdsg.png',
+						tips: 0,
+						url: `/pages/shortDistance/short_distance_record`,
+						show: true
 					}
 				],
 				showTran: true,

BIN
static/images/fuel/jt.png