Procházet zdrojové kódy

Merge branch 'master' of http://47.92.161.104:10080/zkx/jp-car-xinda

vonin před 4 roky
rodič
revize
a4a00ff577

+ 34 - 0
apis/merchant.js

@@ -23,3 +23,37 @@ export function revenueStatisticsDown(data) {
 		url: '/mobile/merchantApi/revenueStatisticsDown',
 	})
 }
+
+export function merchantVehicleList(data) {
+	return request({
+		method: 'post',
+		data: data,
+		url: '/mobile/merchantApi/merchantVehicleList',
+	})
+}
+
+export function profitList(data) {
+	return request({
+		method: 'post',
+		data: data,
+		url: '/mobile/merchantApi/profitList',
+	})
+}
+
+export function sellList(data) {
+	return request({
+		method: 'post',
+		data: data,
+		url: '/mobile/merchantApi/sellList',
+	})
+}
+
+export function sellDetail(data) {
+	return request({
+		method: 'post',
+		data: {
+			id:data
+		},
+		url: '/mobile/merchantApi/sellDetail',
+	})
+}

+ 1 - 1
manifest.json

@@ -81,7 +81,7 @@
         },
         "title" : "车信达",
         "router" : {
-            "base" : ""
+            "base" : "./"
         }
     }
 }

+ 146 - 82
pages/order/index.js

@@ -1,82 +1,146 @@
-import * as API_user from '@/apis/user'
- 
-	export default {
-		data() {
-			return {
-				thisyear:0,
-				params:{
-					year: true,
-						month: true,
-						day: false,
-						hour: false,
-						minute: false,
-						second: false,
-						// 选择时间的时间戳
-						timestamp: true,
-				},
-				show1:false,
-				show2:false,
-				show3:false,
-				selectForm:{
-					select1:0,
-					select1Name:'全部车辆',
-					select2:0,
-					select2Name:'全部车票',
-					select3:0,
-					select3Name:'所有月份',
-				},
-				selectList1:[
-					{id:0,name:'全部车辆'},
-					{id:1,name:'车辆A'},
-					{id:2,name:'车辆B'},
-				],
-				selectList2:[
-					{id:0,name:'全部车票'},
-					{id:1,name:'微信支付'},
-					{id:2,name:'支付宝'},
-					{id:3,name:'现金购票'},
-					{id:4,name:'纸质车票'},
-				],
-				 
-			
-				list:[],
-				mymap:{},
-			}
-		},
-		methods: { 
-			show3cancel(op){
-				
-			},
-			show1confirm(op){
-			 
-				var i=op[0];
-				var obj=this.selectList1[i]
-				 
-				this.selectForm.select1=obj.id;
-				this.selectForm.select1Name=obj.name;
-			},
-			show2confirm(op){
-				var i=op[0];
-				var obj=this.selectList2[i]
-				
-				this.selectForm.select2=obj.id;
-				this.selectForm.select2Name=obj.name;
-			},
-			show3confirm(op){
-				console.log(op)
-				var select=op.year+"-"+op.month;
-				var selectName=op.year+"年"+op.month+"月";
-				this.selectForm.select3=select;
-				this.selectForm.select3Name=selectName;
-			},
-		},
-		onLoad(temp) {
-			var myDate = new Date();
-			var tYear = myDate.getFullYear();
-			 this.thisyear=tYear
-			 
-			
-				
-		}
-	}
-
+import * as API  from '@/apis/merchant.js'
+
+export default {
+	data() {
+		return {
+			thisyear: 0,
+			params: {
+				year: true,
+				month: true,
+				day: false,
+				hour: false,
+				minute: false,
+				second: false,
+				// 选择时间的时间戳
+				timestamp: true,
+			},
+			show1: false,
+			show2: false,
+			show3: false,
+			selectForm: {
+				select1Index:0,
+				select2Index:0,
+				 
+				select1: '',
+				select1Name: '全部车辆',
+				select2: '',
+				select2Name: '全部车票',
+				select3: '',
+				select3Name: '当前月份',
+			},
+			selectList1: [{
+					id: '',
+					licensePlateNumber: '全部车辆'
+				},
+
+			],
+			selectList2: [{
+					id: '',
+					name: '全部车票'
+				},
+				{
+					id: 'wechat',
+					name: '微信支付'
+				},
+				{
+					id: 'alipay',
+					name: '支付宝'
+				},
+				{
+					id: 'cash',
+					name: '现金购票'
+				},
+				{
+					id: 'ticket',
+					name: '纸质车票'
+				},
+			],
+
+
+			profitList: [],
+			mymap: {},
+		}
+	},
+	methods: {
+		gotoUrl(data){
+			uni.navigateTo({
+				url:"/pages/order/list?time="+data
+			})
+		},
+		getMerchantVehicleList() {
+			this.$refs.common.showLoading()
+			API.merchantVehicleList().then(response => {
+				var selectList1 = [{
+						id: '',
+						licensePlateNumber: '全部车辆'
+					},
+					...response.data
+				]
+				// selectList1
+				this.selectList1 = selectList1;
+				this.$refs.common.showLoading(false);
+				this.getProfitList();
+			}).catch(error => {
+				this.$refs.common.showLoading(false, error);
+			})
+		},
+		getProfitList() {
+			this.$refs.common.showLoading();
+			var obj={
+				vehicleId:this.selectForm.select1,
+				payName:this.selectForm.select2,
+				dateStr:this.selectForm.select3,
+			}
+			API.profitList(obj).then(response => {
+				 
+				// selectList1
+				this.profitList = response.data;
+				this.$refs.common.showLoading(false);
+				 
+			}).catch(error => {
+				this.$refs.common.showLoading(false, error);
+			})
+		},
+		show3cancel(op) {
+
+		},
+		show1confirm(op) {
+
+			var i = op[0];
+			this.selectForm.select1Index=i;
+			var obj = this.selectList1[i]
+
+			this.selectForm.select1 = obj.id;
+			this.selectForm.select1Name = obj.licensePlateNumber;
+			this.getProfitList();
+		},
+		show2confirm(op) {
+			
+			var i = op[0];
+			this.selectForm.select2Index=i;
+			var obj = this.selectList2[i]
+
+			this.selectForm.select2 = obj.id;
+			this.selectForm.select2Name = obj.name;
+			this.getProfitList();
+		},
+		show3confirm(op) {
+			console.log(op)
+			var select = op.year + "-" + op.month;
+			var selectName = op.year + "年" + op.month + "月";
+			this.selectForm.select3 = select;
+			this.selectForm.select3Name = selectName;
+			this.getProfitList();
+		},
+	},
+	onLoad(temp) {
+		var myDate = new Date();
+		var tYear = myDate.getFullYear();
+		this.thisyear = tYear
+		//this.selectForm.select3
+
+	},
+	onReady() {
+		this.getMerchantVehicleList();
+	}
+}

+ 6 - 13
pages/order/index.vue

@@ -1,9 +1,9 @@
 <template>
 	<view>
 		<car-common   ref="common"  ></car-common>
-		<u-picker v-model="show1" mode="selector" @confirm="show1confirm" :range="selectList1" range-key="name"></u-picker>
-		<u-picker v-model="show2" mode="selector" @confirm="show2confirm" :range="selectList2" range-key="name"></u-picker>
-		<u-picker v-model="show3" mode="time" @confirm="show3confirm" @cancel="show3cancel"   range-key="name" :params="params" :end-year="thisyear"></u-picker>
+		<u-picker v-model="show1" mode="selector" @confirm="show1confirm"  :default-selector="[selectForm.select1Index]" :range="selectList1" range-key="licensePlateNumber"></u-picker>
+		<u-picker v-model="show2" mode="selector" @confirm="show2confirm" :default-selector="[selectForm.select2Index]" :range="selectList2" range-key="name"></u-picker>
+		<u-picker v-model="show3" mode="time" @confirm="show3confirm" @cancel="show3cancel" :default-time="selectForm.select3"  range-key="name" :params="params" :end-year="thisyear"></u-picker>
 
 		<u-navbar   title="收益明细" :is-back="false" >
 				<view class="slot-wrap"></view>	
@@ -16,19 +16,12 @@
 			</view>
 			<view class="von-sy-content">
 				<view class="von-sy-area">
-					<h5 class="flex-sp">2020年5月<text>共收入6478.00</text></h5>
+					<h5 class="flex-sp">{{profitList.dateDesc}}<text>共收入{{profitList.revenue}}</text></h5>
 					<u-cell-group>
-						<u-cell-item title="2020-05-07" value="+1141.00"  ></u-cell-item>
-						<u-cell-item title="2020-05-07" value="+1141.00"  ></u-cell-item>
-					</u-cell-group>
-				</view>
-				<view class="von-sy-area">
-					<h5 class="flex-sp">2020年5月<text>共收入6478.00</text></h5>
-					<u-cell-group>
-						<u-cell-item title="2020-05-07" value="+1141.00"  ></u-cell-item>
-						<u-cell-item title="2020-05-07" value="+1141.00" ></u-cell-item>
+						<u-cell-item v-for="item,i in profitList.list" :key="i" :title="item.dateDesc" :value="'+'+item.revenue"  @click="gotoUrl(item.dateDesc)" ></u-cell-item>
 					</u-cell-group>
 				</view>
+				 
 			</view>
 		</view>
 	</view>

+ 35 - 0
pages/order/info.js

@@ -0,0 +1,35 @@
+import * as API  from '@/apis/merchant.js'
+
+export default {
+	data() {
+		return { 
+			id:'',
+			info:{}
+		}
+	},
+	methods: {
+	 
+		getSellDetail() {
+			this.$refs.common.showLoading()
+			API.sellDetail(this.id).then(response => {
+
+				this.info = response.data;
+				this.$refs.common.showLoading(false);
+			 
+			}).catch(error => {
+				this.$refs.common.showLoading(false, error);
+			})
+		},
+	  
+	},
+	onLoad(temp) {
+	 
+		this.id = temp.id;
+		if(process.car.SIMPLE_RUN){
+			this.id="1908362f-9685-462c-93bb-200c4997641"
+		}
+	},
+	onReady() {
+		this.getSellDetail();
+	}
+}

+ 20 - 16
pages/order/info.vue

@@ -1,66 +1,70 @@
 <template>
 	<view>
+		<car-common   ref="common"  ></car-common>
 		<u-navbar   title="售票详情" :is-back="true" >
 				<view class="slot-wrap"></view>	
 		</u-navbar>
+		
 		<view class="von-sp-info">
 			<!-- bgblue支付宝 bggreen微信支付 bgorange现金购票 bgred纸质车票 -->
 			<h3 class="flex-spal bggreen">
-				订单编号:1234567812345678<text>微信支付</text>
+				订单编号:{{info.outOrderNo}}<text>{{info.payNameStr}}</text>
 			</h3>
 			<view class="von-form">
 				<view class="von-form-text">
-					<p class="flex-spal"><text>成人票</text>6.00</p>
-					<p class="flex-spal"><text>货票</text>20.00</p>
+
+					<p class="flex-sp"><text>{{info.ticketTypeStr}}</text>{{info.ticketFee}}</p>
+					<p class="flex-sp"><text>货票</text>{{info.goodTicketFee}}</p>
+
 				</view>
-				<h4 class="flex-sp">实际票价<text class="red">¥26.00</text></h4>
+				<h4 class="flex-sp">实际票价<text class="red">¥{{info.totalFee}}</text></h4>
 			</view>
 			<view class="von-forme">
 				<view class="von-forme-item">
 					<label>行程</label>
-					<text>玉桥 - 宿架转盘玉桥 - 宿架转盘玉桥 - 宿架转盘玉桥 - 宿架转盘</text>
+					<text>{{info.ticketTrip}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>车票状态</label>
-					<text>乘车中/已过期</text>
+					<text>{{info.ticketStatus}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>创建时间</label>
-					<text>2021-03-30 12:00:00</text>
+					<text>{{info.createTime}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>支付时间</label>
-					<text>2021-03-30 12:00:00</text>
+					<text>{{info.payTime}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>关闭时间</label>
-					<text>2021-03-30 12:00:00</text>
+					<text>{{info.closeTime}}</text>
 				</view>
 			</view>
 			<view class="von-forme">
 				<view class="von-forme-item">
 					<label>线路</label>
-					<text>1号线</text>
+					<text>{{info.routeName}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>起止站点</label>
-					<text>六中 - 罗场</text>
+					<text>{{info.routeTrip}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>收发班时间</label>
-					<text>06:05 - 18:10</text>
+					<text>{{info.routeTime}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>车牌号码</label>
-					<text>湘J01981</text>
+					<text>{{info.licensePlateNumber}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>当值司机</label>
-					<text>李蔚然</text>
+					<text>{{info.driverName}}</text>
 				</view>
 				<view class="von-forme-item">
 					<label>联系方式</label>
-					<text class="blue">15512344567</text>
+					<text class="blue">{{info.phone}}</text>
 				</view>
 			</view>
 		</view>
@@ -69,7 +73,7 @@
 </template>
 
 <script>
-	import api from './index.js'
+	import api from './info.js'
 	export default api;
 </script>
 

+ 180 - 0
pages/order/list.js

@@ -0,0 +1,180 @@
+import * as API  from '@/apis/merchant.js'
+
+export default {
+	data() {
+		return {
+			thisyear: 0,
+			 clientHeight:0,
+			show1: false,
+			show2: false,
+			show3: false,
+			selectForm: {
+				select1Index:0,
+				select2Index:0,
+				 select3Index:0,
+				select1: '',
+				select1Name: '全部车辆',
+				select2: '',
+				select2Name: '全部车票',
+				select3: '',
+				select3Name: '全天',
+			},
+			selectList1: [{
+					id: '',
+					licensePlateNumber: '全部车辆'
+				},
+
+			],
+			selectList2: [{
+					id: '',
+					name: '全部车票'
+				},
+				{
+					id: 'wechat',
+					name: '微信支付'
+				},
+				{
+					id: 'alipay',
+					name: '支付宝'
+				},
+				{
+					id: 'cash',
+					name: '现金购票'
+				},
+				{
+					id: 'ticket',
+					name: '纸质车票'
+				},
+			],
+			selectList3: [
+				{
+					id: '0',
+					name: '全天'
+				},
+				{
+					id: '1',
+					name: '上午'
+				},
+				{
+					id: '2',
+					name: '下午'
+				},
+			],
+			listForm: {
+				totalPage: 1,
+				pageIndex: 1,
+				pageSize: 20
+			},
+			recordList:[],
+			sellList: {},
+			mymap: {},
+		}
+	},
+	methods: {
+		gotoUrl(item){
+			uni.navigateTo({
+				url:"/pages/order/info?id="+item.id
+			})
+		},
+		lower() {
+			console.log("--------")
+			if (this.listForm.pageIndex <= this.listForm.totalPage  ) {
+				this.getSellList(true);
+			} else {
+				return;
+			}
+		},
+		getMerchantVehicleList() {
+			this.$refs.common.showLoading()
+			API.merchantVehicleList().then(response => {
+				var selectList1 = [{
+						id: '',
+						licensePlateNumber: '全部车辆'
+					},
+					...response.data
+				]
+				// selectList1
+				this.selectList1 = selectList1;
+				this.$refs.common.showLoading(false);
+				this.getSellList();
+			}).catch(error => {
+				this.$refs.common.showLoading(false, error);
+			})
+		},
+		getSellList(bl) {
+			if(!bl){
+				this.listForm.pageIndex=1;
+			}
+			this.$refs.common.showLoading();
+			var obj={
+				vehicleId:this.selectForm.select1,
+				payName:this.selectForm.select2,
+				dateType:this.selectForm.select3,
+				dateStr:this.thisyear,
+				...this.listForm
+			}
+			API.sellList(obj).then(response => {
+				 
+				if (response) {
+					if (this.listForm.pageIndex == 1) {
+						this.recordList = response.data.data;
+						this.listForm.pageIndex = response.data.pageNumber;
+						this.listForm.totalPage = response.data.totalPage;
+					} else {
+						this.recordList = [
+							...this.recordList,
+							...response.data.data
+						];
+					}
+				}
+				this.listForm.pageIndex++;
+			
+				this.$refs.common.showLoading(false);
+				 
+			}).catch(error => {
+				this.$refs.common.showLoading(false, error);
+			})
+		},
+		show3cancel(op) {
+
+		},
+		show1confirm(op) {
+
+			var i = op[0];
+			this.selectForm.select1Index=i;
+			var obj = this.selectList1[i]
+
+			this.selectForm.select1 = obj.id;
+			this.selectForm.select1Name = obj.licensePlateNumber;
+			this.getSellList();
+		},
+		show2confirm(op) {
+			
+			var i = op[0];
+			this.selectForm.select2Index=i;
+			var obj = this.selectList2[i]
+
+			this.selectForm.select2 = obj.id;
+			this.selectForm.select2Name = obj.name;
+			this.getSellList();
+		},
+		show3confirm(op) {
+			var i = op[0];
+			this.selectForm.select2Index=i;
+			var obj = this.selectList2[i]
+			
+			this.selectForm.select3 = obj.id;
+			this.selectForm.select3Name = obj.name;
+			this.getSellList();
+		},
+	},
+	onLoad(temp) {
+		 this.clientHeight = document.body.clientHeight;
+		this.thisyear = temp.time
+		//this.selectForm.select3
+
+	},
+	onReady() {
+		this.getMerchantVehicleList();
+	}
+}

+ 20 - 13
pages/order/list.vue

@@ -1,31 +1,38 @@
 <template>
 	<view>
-		<u-navbar title="售票记录" :is-back="false" >
+		<car-common   ref="common"  ></car-common>
+		<u-picker v-model="show1" mode="selector" @confirm="show1confirm"  :default-selector="[selectForm.select1Index]" :range="selectList1" range-key="licensePlateNumber"></u-picker>
+		<u-picker v-model="show2" mode="selector" @confirm="show2confirm" :default-selector="[selectForm.select2Index]" :range="selectList2" range-key="name"></u-picker>
+		<u-picker v-model="show3" mode="selector" @confirm="show3confirm"  :default-selector="[selectForm.select3Index]" :range="selectList3" range-key="name"  ></u-picker>
+		
+		<u-navbar title="售票记录"  >
 				<view class="slot-wrap"></view>	
 		</u-navbar>
 		<view class="von-sy">
 			<view class="von-sy-select flex-sp" style="background-color: white;">
-				<navigator @click="show1=true">{{selectForm.select1Name}}<text class="icon iconfont icon-xiajiantou"></text></navigator>
-				<navigator @click="show2=true">{{selectForm.select2Name}}<text class="icon iconfont icon-xiajiantou"></text></navigator>
-				<navigator@click="show3=true" >{{selectForm.select3Name}}<text class="icon iconfont icon-xiajiantou"></text></navigator>
-			</view>
+		<navigator @click="show1=true">{{selectForm.select1Name}}<text class="icon iconfont icon-xiajiantou"></text></navigator>
+			<navigator @click="show2=true">{{selectForm.select2Name}}<text class="icon iconfont icon-xiajiantou"></text></navigator>
+			<navigator@click="show3=true" >{{selectForm.select3Name}}<text class="icon iconfont icon-xiajiantou"></text></navigator>
+		</view>
 			<view class="von-sp">
+				<scroll-view   :style="'height: '+clientHeight+'px;'"   scroll-y="true"     @scrolltolower="lower">
 				<!-- blue支付宝 green微信支付 orange现金购票 red纸质车票 -->
-				<view class="von-sp-list">
-					<h5 class="flex-sp">订单编号:1234567812345678<text class="green">微信支付</text></h5>
-					<view class="von-sp-text">
-						<p><text>线路:</text>玉桥 - 宿架转盘</p>
-						<p><text>线路:</text>玉桥 - 宿架转盘</p>
-						<p><text>线路:</text>玉桥 - 宿架转盘</p>
+					<view class="von-sp-list" v-for="item,i in recordList" @click="gotoUrl(item)">
+						<h5 class="flex-sp">订单编号:{{item.outOrderNo}}<text class="green">{{item.payNameStr}}</text></h5>
+						<view class="von-sp-text">
+							<p><text>线路:</text>{{item.routeName}}</p>
+							<p><text>票价:</text>{{item.payFee}}</p>
+							<p><text>时间:</text>{{item.payTime}}</p>
+						</view>
 					</view>
-				</view>
+				</scroll-view>
 			</view>
 		</view>
 	</view>
 </template>
 
 <script>
-	import api from './index.js'
+	import api from './list.js'
 	export default api;
 	
 </script>

+ 5 - 3
static/font/iconfont.css

@@ -1,8 +1,10 @@
 @font-face {
   font-family: "iconfont"; /* Project id 2443360 */
-  src: url('/static/font/iconfont.woff2?t=1620438794739') format('woff2'),
-       url('/static/font/iconfont.woff?t=1620438794739') format('woff'),
-       url('/static/font/iconfont.ttf?t=1620438794739') format('truetype');
+
+  src: url('static/font/iconfont.woff2?t=1620438794739') format('woff2'),
+       url('static/font/iconfont.woff?t=1620438794739') format('woff'),
+       url('static/font/iconfont.ttf?t=1620438794739') format('truetype');
+
 }
 
 .iconfont {

+ 86 - 0
vue.config.js

@@ -0,0 +1,86 @@
+const path = require('path');
+
+const CompressionWebpackPlugin = require("compression-webpack-plugin")
+const productionGzipExtensions = ['js', 'css']
+
+function resolve(dir) {
+	return path.join(__dirname, dir)
+}
+
+let title = '';
+if (process.env.VUE_APP_NODE_NAME == 'production') {
+	title = ''
+} else if (process.env.VUE_APP_NODE_NAME == 'test') {
+	title = '(测试)'
+} else {
+	title = '(开发)'
+}
+
+const Timestamp = new Date().getTime();
+module.exports = {
+	publicPath: './',
+	outputDir: 'dist/' + process.env.NODE_ENV,
+	assetsDir: 'static',
+	lintOnSave: false,
+	devServer: {
+		host: 'localhost',
+		port: 80,
+		//解析缓存
+		disableHostCheck: true,
+		//支持gzip
+		compress: true,
+	},
+	//不输出map
+	productionSourceMap: false,
+	chainWebpack: (config) => {
+		config.entry.app = ['babel-polyfill', './src/main.js']
+		config.resolve.alias
+			.set('@', resolve('./static/'))
+
+		config.plugins.delete('preload-index');
+		config.plugins.delete('prefetch-index');
+		
+		config.optimization.minimize(true);
+	},
+	configureWebpack: config => {
+		/* //开启gzip压缩,需要配置Nginx服务器gzip选项开启
+		config.plugins.push(
+			new CompressionWebpackPlugin({
+				filename: '[path].gz[query]',
+				algorithm: 'gzip',
+				test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
+				threshold: 10240,
+				minRatio: 0.8
+			})
+		); */
+
+		config.output.filename = `./static/js/[name].${Timestamp}.js`
+		config.output.chunkFilename = `./static/js/[name].${Timestamp}.js`
+
+		config.performance = {
+			hints: 'warning',
+			//入口起点的最大体积 整数类型(以字节为单位)
+			maxEntrypointSize: 50000000,
+			//生成文件的最大体积 整数类型(以字节为单位 300k)
+			maxAssetSize: 30000000,
+			//只给出 js 文件的性能提示
+			assetFilter: function(assetFilename) {
+				return assetFilename.endsWith('.js');
+			}
+		}
+	},
+	css: {
+		extract: {
+			filename: `./static/css/[name].${Timestamp}.css`,
+			chunkFilename: `./static/css/[name].${Timestamp}.css`
+		},
+		sourceMap: false,
+		loaderOptions: {
+			// 给 sass-loader 传递选项
+			sass: {
+				// @/ 是 src/ 的别名
+				// prependData: `@import "@/assets/scss/base.scss";`
+			}
+		}
+	}
+};