浏览代码

流程优化

qzyReal 2 年之前
父节点
当前提交
3e1ae8ead3

+ 1 - 1
app-ui/manifest.json

@@ -83,7 +83,7 @@
     "vueVersion" : "2",
     "h5" : {
         "router" : {
-            "base" : "/h5/",
+            "base" : "/test/",
             "mode" : "history"
         },
         "devServer" : {

+ 19 - 7
app-ui/pages/wx/pay.vue

@@ -72,8 +72,11 @@
         <view>
           1、车辆无需缴费。
         </view>
+		<view>
+		  2、业务订单未审核。
+		</view>
         <view>
-          2、业务订单需管理员确认后方可缴费。
+          3、业务订单需管理员确认后方可缴费。
         </view>
       </view>
     </view>
@@ -83,12 +86,19 @@
           <text class="t1">金额:</text>
           <text class="t2">¥{{ total }}元</text>
         </view>
-        <view class="r" v-if="showPay">
-          <view class="btn" @click="confirmPayFn()">立即支付</view>
-        </view>
-        <view class="r" v-else>
-          <view class="btn" @click="showMsg">存在待录入业务</view>
-        </view>
+		<view v-if="judge">
+			<view class="r" v-if="showPay">
+			  <view class="btn" @click="confirmPayFn()">立即支付</view>
+			</view>
+			<view class="r" v-else>
+			  <view class="btn" @click="showMsg">存在待录入业务</view>
+			</view>
+		</view>
+		<view v-else>
+			<view class="r">
+			  <view class="btn">业务未审核</view>
+			</view>
+		</view>
       </view>
     </view>
   </view>
@@ -117,6 +127,7 @@ export default {
       type: 0,
       businessAble: true,
       showPay: false,
+	  judge:false,
       item: {
         itemsPrice: 0,
         businessId: '',
@@ -304,6 +315,7 @@ export default {
         this.cars = data.carList;
         this.goodsName = data.goodsName;
         this.showPay = data.showPay;
+		this.judge=data.noJudgeCount==0;
         this.businessNos = data.businessNo;
         this.type = data.type;
         let list = data.itemList;

+ 16 - 10
app-ui/pages/wx/payOrder.vue

@@ -44,16 +44,22 @@
         </view>
       </view>
     </view>
-    <view v-if="form.adminConfirmInput==0">
-      <u-button type="info" v-if="customerId!=='1'">待确认</u-button>
-      <u-button type="primary" @click="adminConfirmFn">确认账单</u-button>
-    </view>
-    <view v-else>
-      <u-button type="primary" v-if="form.payStatus==1&&customerId!=='1'&&form.adminConfirmInput==1"
-                @click="confirmFn">支付账单
-      </u-button>
-      <u-button type="info" v-if="form.payStatus==3">已支付</u-button>
-    </view>
+	<view v-if="form.confirmJudge==1">
+		<view v-if="form.adminConfirmInput==0">
+		  <u-button type="info" v-if="customerId!=='1'">待确认</u-button>
+		  <u-button type="primary" @click="adminConfirmFn">确认账单</u-button>
+		</view>
+		<view v-else>
+		  <u-button type="primary" v-if="form.payStatus==1&&customerId!=='1'&&form.adminConfirmInput==1"
+		            @click="confirmFn">支付账单
+		  </u-button>
+		  <u-button type="info" v-if="form.payStatus==3">已支付</u-button>
+		</view>
+	</view>
+	<view v-else>
+		<u-button type="info">业务未审核</u-button>
+	</view>
+   
   </view>
 </template>
 

+ 40 - 40
app/.vite/_cert.pem

@@ -1,51 +1,51 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
 -----BEGIN CERTIFICATE-----
-MIID9zCCAt+gAwIBAgIJYVnMm9Nml9SCMA0GCSqGSIb3DQEBCwUAMGkxFDASBgNV
+MIID9zCCAt+gAwIBAgIJLbAVd3zfgc+eMA0GCSqGSIb3DQEBCwUAMGkxFDASBgNV
 BAMTC2V4YW1wbGUub3JnMQswCQYDVQQGEwJVUzERMA8GA1UECBMIVmlyZ2luaWEx
 EzARBgNVBAcTCkJsYWNrc2J1cmcxDTALBgNVBAoTBFRlc3QxDTALBgNVBAsTBFRl
-c3QwHhcNMjIxMDExMDMyOTQ3WhcNMjIxMTEwMDMyOTQ3WjBpMRQwEgYDVQQDEwtl
+c3QwHhcNMjIxMDI0MDIyNDMyWhcNMjIxMTIzMDIyNDMyWjBpMRQwEgYDVQQDEwtl
 eGFtcGxlLm9yZzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZpcmdpbmlhMRMwEQYD
 VQQHEwpCbGFja3NidXJnMQ0wCwYDVQQKEwRUZXN0MQ0wCwYDVQQLEwRUZXN0MIIB
-IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqWxqT9H08sW79d2q4sYflpuU
-JC1gBDN1mK0KKJP2/+XLLHo50Q+46E2JZBojtyaF38bxF/bjsTmhd2+4Y5qWPnTH
-YewudY8Csgtpa3PguRCJg6IqWNt28GXIfIdgu6RT1XteUBr4HxvrC3w5PvHAcmgY
-OVUB6zAvyPDtlN2Qmn8gCByBCn2+Q5EziIKuSBO4N94dLzdwBoUA/xIY+zltsNPf
-iGQsq968pDnIEd9cO8hsteB4Ql/TOBib3kBlIeXaeSEKXlMt/MlRS1215+R+z8wk
-8kWepO17pnFc5DWCvhpMCHArWpMjoF45rgzexP8TcZHFTaH7a2N7QWYdv5UH+wID
+IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ELmLf6J1sog9t7Ip6GiSXcS
+GAIerh4c1pe6LGs6FxTLA3gIw2yesJG9nNGGKQdA2UNncz1OCfBkvhDsGWxxyWQZ
+RiVPyeOYAMugJgz6SQNq96aVd5HE1ITzXFe35GahQ5/Tvq039NpSJVO9lv+56UHw
+yiIoFZo9KJZVppWqB0W3rFl1RzbjaR5V5vKy/3iyjaIMdjkPT7hfrVmQmmSoC0yy
+NsX6mpY0XGLf+UwL9l08iwiLGXWmXPwCmXtZUaUk+/1ZF6KbYxMEq0nIKZJm36F5
+udFDZ96EoQGWacXETLNFzF3WuMFWAgAFzr05gbW4LDzn0uewZfunNM8PT1scQQID
 AQABo4GhMIGeMAsGA1UdDwQEAwIC9DAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYB
 BQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDCDBcBgNVHREEVTBTgglsb2NhbGhvc3SC
 FWxvY2FsaG9zdC5sb2NhbGRvbWFpboIGbHZoLm1lgggqLmx2aC5tZYIFWzo6MV2H
-BH8AAAGHEP6AAAAAAAAAAAAAAAAAAAEwDQYJKoZIhvcNAQELBQADggEBAIPoP0VE
-W+GilL9smo58P76OipPqSBG592kNOKMwxYW4mkY+C7TyMqGukEzdOPLY19r94Img
-8SKIABK6sujx9Gxklbx8TlussVNBVXrOcllTN6p1ui33hM6FGnn4qtpjWn6IC8sy
-sWuHmGRI0MzrwfzvclfC6fDP/vtiSQmxLPN/BGYDsAaBJxIlk3RrpYqtvFJ8JJdY
-SrynAr0EzcOxNH4g2C7mLla8mX0TssHgbGuWp2ezIHwv/cdYPYUhTXGhXKpsvMFf
-mBfot5rrinAtBLD0Gg94PFE6/UHzwqI6bcGphl5zwke7zaZDng/xtpjCidDMsR8X
-ItCjd+EKaQNxfBY=
+BH8AAAGHEP6AAAAAAAAAAAAAAAAAAAEwDQYJKoZIhvcNAQELBQADggEBAD7jyC0M
+haAJdgGyWcbgqNjXbuGmfxb5Mcl5JYOwDrfFxGryy45fL9xefGUgAFHbbPQiNMcf
+mqXijwGDzGL1pHrGGcdrSYFr/o+W0hPAfKyPv5O4JgDr5EpU/q4yw7om0YEVEGCC
+AZ/srhi8DmKg6IfD3wJ4eB7qizUWYKcU04mfKMXEzXOK52jPFO9c3JpFnnrUzkOz
+AcoCOTr4TYazl9lgnJtrPm2Bad0R4VwUnOdcewtaPkvCF1fxixeMGucEe/irC7wu
+e1d5+qoRgZooTyl1ST9MucvvHlvRCJuZZZudjVjlH2lfZm2tjnZfu0mZcrLsBJmQ
+XtloAs12xMDptoQ=
 -----END CERTIFICATE-----

+ 0 - 2
sp-admin/sa-frame/com/sa-info.vue

@@ -213,7 +213,6 @@ module.exports = {
           i--;
         }
       }
-      console.log('长度:' + this.value_arr.length);
     },
 
   },
@@ -228,7 +227,6 @@ module.exports = {
     // 如果是枚举
     if (this.type == 'enum' || this.type == 'j' || this.type == 'switch') {
       this.parseJv();
-      console.log(this.jvList);
     }
     // 如果是 img-list 等
     if (this.type == 'img-list' || this.type == 'audio-list' || this.type == 'video-list' || this.type == 'file-list' || this.type == 'img-video-list') {

+ 5 - 0
sp-admin/sa-frame/menu-list.js

@@ -306,6 +306,11 @@ var menuList = [
 						isShow: false
 					},
 					{
+						id: 'tb-business-judge',
+						name: '业务审核',
+						isShow: false
+					},
+					{
 						id: 'tb-business-zx-print',
 						name: '装卸打印',
 						isShow: false

+ 35 - 5
sp-admin/sa-view/tb-business-car/tb-business-car-info.html

@@ -35,7 +35,7 @@
 								<sa-info name="补录时间" br v-if="m.inTimeSupplementTime">{{m.inTimeSupplementTime}}
 								</sa-info>
 								<sa-info name="入场通道" br>{{m.inChannel}}</sa-info>
-									<sa-info name="备注" br v-if="m.remark">{{m.remark}}</sa-info>
+								<sa-info name="备注" br v-if="m.remark">{{m.remark}}</sa-info>
 								<sa-info type="img" name="入场图片" :value="m.inImage" br></sa-info>
 							</el-col>
 							<el-col span=12>
@@ -50,10 +50,31 @@
 								<sa-info type="img" name="离场图片" :value="m.outImage" br></sa-info>
 							</el-col>
 						</el-row>
-						<el-row v-if="tableData.length>0">
+						<el-row v-if="businessList.length>0">
 							<el-collapse value='1'>
 								<el-collapse-item name="1">
 									<div slot="title">
+										业务列表
+									</div>
+									<el-table :data="businessList" style="width: 100%">
+										<sa-td name="业务单号" prop="no" width="160"></sa-td>
+										<sa-td name="客户名称" prop="customerName" width="190"></sa-td>
+										<sa-td name="货主" prop="owner" width="160"></sa-td>
+										<sa-td name="业务项" prop="goodsName" width="160"></sa-td>
+										<sa-td name="作业时间" prop="operateTime" width="160"></sa-td>
+										<sa-td name="业务费用(元)" prop="itemPrice" width="120"></sa-td>
+										<sa-td name="确认" prop="adminConfirmInput" type="enum"
+											:jv="{1: '已确认', 0: '未确认'}"></sa-td>
+										<sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>
+										<sa-td width="160" name="创建时间" prop="createTime"></sa-td>
+									</el-table>
+								</el-collapse-item>
+							</el-collapse>
+						</el-row>
+						<el-row v-if="tableData.length>0">
+							<el-collapse value='2'>
+								<el-collapse-item name="2">
+									<div slot="title">
 										具体业务项
 									</div>
 									<el-table :data="tableData" style="width: 100%">
@@ -96,6 +117,7 @@
 				},
 				el: '.vue-box',
 				data: {
+					businessList:[],
 					tableData: [],
 					id: sa.p('id', 0), // 获取数据ID
 					m: null
@@ -108,18 +130,26 @@
 							this.tableData = resp.data;
 						}.bind(this))
 					},
+					getByBusinessCarId() {
+						sa.ajax('/TbBusiness/getByBusinessCarId', {
+							businessCarId: this.id
+						}, function(resp) {
+							this.businessList = resp.data;
+						}.bind(this))
+					},
 					getById() {
 						sa.ajax('/TbBusinessCar/getById?id=' + this.id, function(res) {
 							this.m = res.data;
-				   if (res.data == null) {
+							if (res.data == null) {
 								sa.alert('未能查找到 id=' + this.id + " 详细数据");
-				 		}
+							}
 						}.bind(this))
 					}
 				},
 				mounted: function() {
 					this.getById();
-					// this.getItemsByCarId();
+					this.getItemsByCarId();
+					this.getByBusinessCarId();
 				}
 			})
 		</script>

+ 185 - 0
sp-admin/sa-view/tb-business/tb-business-judge.html

@@ -0,0 +1,185 @@
+<!DOCTYPE html>
+<html>
+	<head>
+		<title>入境登记-详情</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport"
+			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<!-- 所有的 css js 资源 -->
+		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
+		<link rel="stylesheet" href="../../static/sa.css">
+		<script src="../../static/kj/vue.min.js"></script>
+		<script src="../../static/kj/element-ui/index.js"></script>
+		<script src="../../static/kj/httpVueLoader.js"></script>
+		<script src="../../static/kj/jquery.min.js"></script>
+		<script src="../../static/kj/layer/layer.js"></script>
+		<script src="../../static/sa.js"></script>
+		<script src="../../static/sa.js"></script>
+		<script src="../../static/kj/upload-util.js"></script>
+		<style type="text/css">
+			.c-panel .c-label {
+				width: 8em;
+			}
+		</style>
+	</head>
+	<body>
+		<div class="vue-box sbot" style="display: none;" :style="'display: block;'">
+			<!-- ------- 内容部分 ------- -->
+			<div class="s-body">
+				<div class="c-panel">
+					<el-form v-if="m">
+						<el-row>
+							<el-collapse value='1'>
+								<el-collapse-item name="1">
+									<div slot="title">
+										基础资料
+									</div>
+									<div>
+										<el-row>
+											<el-col span="12">
+												<sa-info name="客户名称" br>{{m.customerName}}
+												</sa-info>
+												<sa-info name="业务项目" br>{{m.goodsName}}</sa-info>
+												<sa-info name="作业时间" br>{{m.operateTime}}</sa-info>
+												<sa-info name="业务费用" br>{{m.itemPrice}}(元)</sa-info>
+												<sa-info style="margin-top: 0;" type="enum" name="审核状态"
+													:value="m.confirmJudge" :jv="{0: '未审核', 1: '审核通过', 2: '审核驳回'}" br>
+												</sa-info>
+												<sa-info style="margin-top: 0;" name="审核人" br>{{m.confirmJudgeBy}}
+												</sa-info>
+											</el-col>
+											<el-col span="12">
+												<sa-info name="货主" br>{{m.owner}}</sa-info>
+												<sa-info name="业务编号" br>{{m.no}}</sa-info>
+												<sa-info name="录入时间" br>{{m.createTime}}</sa-info>
+												<sa-info name="录入人" br>{{m.createBy}}</sa-info>
+												<sa-info name="审核时间" br>{{m.confirmJudgeTime}}</sa-info>
+												<sa-info name="审核意见" br v-if="m.confirmJudgeContent">
+													{{m.confirmJudgeContent}}
+												</sa-info>
+											</el-col>
+										</el-row>
+									</div>
+								</el-collapse-item>
+							</el-collapse>
+
+						</el-row>
+						<el-row>
+							<el-collapse value='1'>
+								<el-collapse-item name="1">
+									<div slot="title">
+										车辆信息
+									</div>
+									<el-table :data="m.cars" style="width: 100%">
+										<sa-td name="车牌号" prop="carNo"></sa-td>
+										<sa-td name="类型" prop="carType"></sa-td>
+										<sa-td name="载重(kg)" prop="netWeight"></sa-td>
+										<sa-td name="规格(米)" prop="carSize"></sa-td>
+
+										<sa-td width="120" name="车辆状态" prop="isLock" type="enum"
+											:jv="{1: '锁定[#ff0000]', 0: '正常[#005500]'}">
+										</sa-td>
+										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
+										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
+										<el-table-column label="停车费">
+											<template slot-scope="s">
+												<label v-if="s.row.money">{{s.row.money}}</label>
+												<label v-else>-</label>
+											</template>
+										</el-table-column>
+									</el-table>
+								</el-collapse-item>
+							</el-collapse>
+						</el-row>
+						<el-row>
+							<el-collapse value='1'>
+								<el-collapse-item name="1">
+									<div slot="title">
+										具体业务项
+										<label
+											style="color: red; font-weight: bold;margin-left: 20px;">合计:({{m.itemPrice}}元)</label>
+									</div>
+									<el-table :data="tableData" style="width: 100%">
+										<el-table-column prop="itemTypeName" label="收费项" width="180">
+										</el-table-column>
+										<el-table-column prop="itemName" label="收费明细" width="180">
+										</el-table-column>
+										<el-table-column prop="itemPrice" label="单价">
+										</el-table-column>
+										<el-table-column prop="unit" label="计费标准">
+										</el-table-column>
+										<el-table-column prop="num" label="数量">
+										</el-table-column>
+										<el-table-column prop="total" label="合计">
+										</el-table-column>
+									</el-table>
+								</el-collapse-item>
+							</el-collapse>
+						</el-row>
+					</el-form>
+				</div>
+			</div>
+			<!-- ------- 底部按钮 ------- -->
+			<div class="s-foot">
+				<el-button class="c-btn" type="success" icon="el-icon" @click="pass()">审核通过</el-button>
+				<el-button class="c-btn" type="warning" icon="el-icon" @click="callback()">审核驳回</el-button>
+				<el-button type="primary" @click="sa.closeCurrIframe()">关闭</el-button>
+			</div>
+
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue'),
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
+					"sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0), // 获取数据ID
+					m: null,
+					tableData: [],
+				},
+				methods: {
+					pass() {
+						sa.ajax('/TbBusiness/confirmJudgePass', {
+							id: this.id
+						}, function(res) {
+							sa.alert('审核通过', this.clean);
+						}.bind(this))
+					},
+					callback() {
+						let that = this;
+						layer.prompt({
+							title: '填写审核意见'
+						}, function(content, index) {
+							layer.close(index);
+							sa.ajax('/TbBusiness/callback', {
+								id: that.id,
+								judgeContent: content
+							}, function(res) {
+								sa.alert('业务已驳回', that.clean);
+							})
+						});
+					},
+					clean() {
+						parent.app.f5();
+						sa.closeCurrIframe();
+					},
+					ok() {
+
+					},
+					getInfo() {
+						sa.ajax('/TbBusiness/getOtherBusinessById?id=' + this.id, function(res) {
+							this.m = res.data;
+							this.tableData = res.data.items;
+						}.bind(this))
+					}
+				},
+				mounted: function() {
+					this.getInfo()
+				}
+			})
+		</script>
+	</body>
+</html>

+ 57 - 51
sp-admin/sa-view/tb-business/tb-car-disincle-info.html

@@ -41,6 +41,10 @@
 												</sa-info>
 												<sa-info name="业务项目" br>{{m.goodsName}}</sa-info>
 												<sa-info name="作业时间" br>{{m.operateTime}}</sa-info>
+												<sa-info style="margin-top: 0;" type="enum" name="审核状态" :value="m.confirmJudge"
+													:jv="{0: '未审核', 1: '审核通过', 2: '审核驳回'}" br>
+												</sa-info>
+												<sa-info style="margin-top: 0;" name="审核人" br>{{m.confirmJudgeBy}}</sa-info>
 												<sa-info name="业务费用" br>{{m.itemPrice}}(元)</sa-info>
 												<sa-info name="支付时间" br>{{m.payTime}}</sa-info>
 												<sa-info name="补录人" br v-if="m.supplementBy">{{m.supplementBy}}
@@ -49,19 +53,21 @@
 												</sa-info>
 												<sa-info name="补录原因" br v-if="m.supplementReason">{{m.supplementReason}}
 												</sa-info>
-												<sa-info type="enum" style="margin-top: 0px;" name="OA流程"
-													:value="m.sendOa" :jv="{0: '未发起', 1: '已发起'}" br
-													v-if="m.supplementTime">
+												<sa-info type="enum" name="OA流程" :value="m.sendOa"
+													:jv="{0: '未发起', 1: '已发起'}" br v-if="m.supplementTime">
 												</sa-info>
 
 											</el-col>
 											<el-col span="12">
 												<sa-info name="货主" br>{{m.owner}}</sa-info>
 												<sa-info name="业务编号" br>{{m.no}}</sa-info>
+												<sa-info name="审核时间" br>{{m.confirmJudgeTime}}</sa-info>
+												<sa-info  name="审核意见" br v-if="m.confirmJudgeContent">
+													{{m.confirmJudgeContent}}</sa-info>
 												<sa-info name="录入时间" br>{{m.createTime}}</sa-info>
 												<sa-info name="录入人" br>{{m.createBy}}</sa-info>
-												<sa-info type="enum" style="margin-top: 0px;" name="支付状态"
-													:value="m.payStatus" :jv="{1: '未支付', 2: '已支付未确认', 3: '已支付'}" br>
+												<sa-info style="margin-top: 0;" type="enum" name="支付状态" :value="m.payStatus"
+													:jv="{1: '未支付', 2: '已支付未确认', 3: '已支付'}" br>
 												</sa-info>
 												<sa-info name="发起人" br v-if="m.sendBy">{{m.sendBy}}</sa-info>
 												<sa-info name="发起时间" br v-if="m.sendTime">{{m.sendTime}}</sa-info>
@@ -163,51 +169,51 @@
 				</span>
 			</el-dialog>
 
-</div>
-<script>
-    var app = new Vue({
-        components: {
-            "sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue'),
-            "sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
-            "sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
-        },
-        el: '.vue-box',
-        data: {
-            id: sa.p('id', 0), // 获取数据ID
-            m: null,
-            tableData: [],
-            upload: {
-                visible: false,
-                form: {
-                    id: '',
-                    ticket: ''
-                }
-            }
-        },
-        methods: {
-            print: function () {
-                sa.showIframe('打印收费单据', 'print.html?id=' + this.id, '1000px', '100%');
-            },
-            uploadFn(data) {
-                Object.assign(this.upload, {
-                    visible: true,
-                    form: data
-                })
-            },
-            ok() {
+		</div>
+		<script>
+			var app = new Vue({
+				components: {
+					"sa-info": httpVueLoader('../../sa-frame/com/sa-info.vue'),
+					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue'),
+					"sa-td": httpVueLoader('../../sa-frame/com/sa-td.vue'),
+				},
+				el: '.vue-box',
+				data: {
+					id: sa.p('id', 0), // 获取数据ID
+					m: null,
+					tableData: [],
+					upload: {
+						visible: false,
+						form: {
+							id: '',
+							ticket: ''
+						}
+					}
+				},
+				methods: {
+					print: function() {
+						sa.showIframe('打印收费单据', 'print.html?id=' + this.id, '1000px', '100%');
+					},
+					uploadFn(data) {
+						Object.assign(this.upload, {
+							visible: true,
+							form: data
+						})
+					},
+					ok() {
 
-            },
-            getInfo() {
-                sa.ajax('/TbBusiness/getOtherBusinessById?id=' + this.id, function (res) {
-                    this.m = res.data;
-                    this.tableData = res.data.items;
-                }.bind(this))
-            }
-        },
-        mounted: function () {
-            this.getInfo()
-        }
-    })
-</script>
-</body>
+					},
+					getInfo() {
+						sa.ajax('/TbBusiness/getOtherBusinessById?id=' + this.id, function(res) {
+							this.m = res.data;
+							this.tableData = res.data.items;
+						}.bind(this))
+					}
+				},
+				mounted: function() {
+					this.getInfo()
+				}
+			})
+		</script>
+	</body>
 </html>

+ 8 - 0
sp-admin/sa-view/tb-business/tb-car-disincle-list.html

@@ -81,6 +81,7 @@
                 </template>
             </el-table-column>
             <sa-td name="作业时间" prop="operateTime" width="160"></sa-td>
+			<sa-td name="审核状态" prop="confirmJudge" type="enum" :jv="{0: '未审核', 1:'审核通过',2:'审核驳回'}"></sa-td>
             <sa-td name="确认" prop="adminConfirmInput" type="enum" :jv="{1: '已确认', 0: '未确认'}"></sa-td>
             <sa-td name="已支付(元)" prop="payMoney" width="140"></sa-td>
             <sa-td name="业务费用(元)" prop="itemPrice" width="120"></sa-td>
@@ -88,6 +89,9 @@
             </sa-td>
             <el-table-column label="操作" width="415px" fixed="right">
                 <template slot-scope="s">
+					<el-button class="c-btn" type="primary" v-if="sa.isAuth('tb-business-judge')
+								&&s.row.confirmJudge!==1&&s.row.payStatus!==3" @click="judgeFn(s.row)">业务审核
+					</el-button>
                     <el-button class="c-btn" type="primary" v-if="sa.isAuth('tb-flex-business-confirm')
 								&&currentCustomerId=='1'&&s.row.adminConfirmInput==0" @click="confirmFn(s.row)">账单确认
                     </el-button>
@@ -187,6 +191,10 @@
             goodsList: [],
         },
         methods: {
+			judgeFn(data){
+				this.stopTimmer();
+				sa.showIframe('业务审核', 'tb-business-judge.html?id=' + data.id, '1050px', '90%');
+			},
             zxShow(goodsName) {
                 var flag = goodsName.indexOf("整车");
                 if (flag > 0 || flag === 0) {

+ 1 - 1
sp-admin/static/sa.js

@@ -22,7 +22,7 @@ var sa = {
 		api_url: 'https://dxkaa1.gxbtka.com/pro',
 		web_url: 'http://www.baidu.com'
 	}
-	sa.cfg = cfg_dev; // 最终环境 , 上线前请选择正确的环境
+	sa.cfg = cfg_test; // 最终环境 , 上线前请选择正确的环境
 })();
 
 

+ 11 - 0
sp-server/src/main/java/com/pj/api/h5/ApiController.java

@@ -97,12 +97,23 @@ public class ApiController {
         return AjaxJson.getSuccess();
     }
 
+    /**
+     * 根据车牌号查询
+     * @param carNo
+     * @return
+     */
     @GetMapping(value = "searchPartCar")
     public AjaxJson searchPartCar(String carNo) {
         carNo = carNo.toUpperCase();
         return AjaxJson.getSuccessData(apiService.searchPartCar(carNo));
     }
 
+    /**
+     * 获取费用
+     * @param carId
+     * @param state
+     * @return
+     */
     @GetMapping(value = "getBusinessMoney")
     public AjaxJson getBusinessMoney(String carId, @RequestParam(required = false) String state) {
         return AjaxJson.getSuccessData(apiService.getBusinessMoney(carId, state));

+ 13 - 0
sp-server/src/main/java/com/pj/api/jh/service/JhService.java

@@ -19,6 +19,8 @@ import com.pj.current.config.MyConfig;
 import com.pj.current.config.PartConfig;
 import com.pj.current.config.WxConfig;
 import com.pj.current.task.TaskService;
+import com.pj.project.tb_business.TbBusiness;
+import com.pj.project.tb_business.TbBusinessService;
 import com.pj.project.tb_order.TbOrder;
 import com.pj.project.tb_order.TbOrderService;
 import com.pj.project4sp.global.BusinessException;
@@ -34,6 +36,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -63,6 +66,8 @@ public class JhService {
     private TbOrderService tbOrderService;
     @Resource
     private TaskService taskService;
+    @Resource
+    private TbBusinessService tbBusinessService;
 
     public Map<String, ?> initPay(HttpServletRequest request) throws Exception {
         if (!jhConfig.isEnable()) {
@@ -75,6 +80,14 @@ public class JhService {
         String openid = request.getParameter("openid");
         String desc = handlerDesc(request.getParameter("desc"));
         String businessId = request.getParameter("b");
+        List<String> businessIds = StrUtil.splitTrim(businessId, ",");
+        List<TbBusiness>list=tbBusinessService.listByIds(businessIds);
+        //未审核的业务
+        long noJudgeCount = list.stream().filter(tbBusiness -> TbBusiness.ConfirmJudgeEnum.CALL_BACK.getCode() == tbBusiness.getConfirmJudge()
+                || TbBusiness.ConfirmJudgeEnum.NO_JUDGE.getCode() == tbBusiness.getConfirmJudge()).count();
+        if (noJudgeCount>0){
+            throw new Exception("存在未审核业务");
+        }
         String c = request.getParameter("c");
         String a = request.getParameter("a");
         String businessType = request.getParameter("businessType");

+ 3 - 0
sp-server/src/main/java/com/pj/api/open/ResultJson.java

@@ -30,6 +30,9 @@ public class ResultJson {
     public static ResultJson success() {
         return new ResultJson(1, "ok", 1, "");
     }
+    public static ResultJson success(String msg,String reason) {
+        return new ResultJson(1, msg, 1, reason);
+    }
 
     public static ResultJson error(String reason) {
         return new ResultJson(1, "ok", 0, reason);

+ 18 - 9
sp-server/src/main/java/com/pj/api/open/service/OpenService.java

@@ -110,22 +110,21 @@ public class OpenService {
             StaticLog.error("缓存入场图片:{}", carNo);
             IMAGE_CACHE.put(carNo, image);
         }
-//        List<TbBusinessCar> notOutList = tbBusinessCarService.findNotOutCar(carNo);
-//        if (!notOutList.isEmpty()) {
-//            String msg = "车辆有" + notOutList.size() + "条未离场记录";
-//            log.error("入场返回:{}", msg);
-//            return ResultJson.error(msg);
-//        }
+        List<TbBusinessCar> notOutList = tbBusinessCarService.findNotOutCar(carNo);
+        if (!notOutList.isEmpty()) {
+            String msg = "车辆有" + notOutList.size() + "条未离场记录";
+            log.error("入场返回:{}", msg);
+            return ResultJson.error(msg);
+        }
         automaticPay.unbindRun(carNo);
         TbBusinessCar tbBusinessCar = tbBusinessCarService.findTheLastRecord(carNo);
         Date now = new Date();
         TbCar tbCar = tbCarService.findByCardNo(carNo);
         //1、记录不存在;
         // 2、已离场重新入场;
-        // 3、抬杆离场
         if (tbBusinessCar == null
                 || (tbBusinessCar.getRealInTime() != null && tbBusinessCar.getRealOutTime() != null)
-                || (tbBusinessCar.getRealInTime() != null && tbBusinessCar.getRealOutTime() == null)) {
+        ) {
             //=======创建新的放行记录==========
             tbBusinessCar = new TbBusinessCar();
             tbBusinessCar.setCarNo(carNo).setPay(0).setCarSize(0D).setIsLock(0)
@@ -135,7 +134,10 @@ public class OpenService {
                     .setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));
             tbBusinessCarService.save(tbBusinessCar);
             CoverBase64ToUrl(image, tbBusinessCar.getId(), carNo, 1);
-            return ResultJson.success();
+            String msg = "无业务车辆";
+            log.error("入场返回:{}", msg);
+            return ResultJson.success(msg, msg);
+
         }
         tbBusinessCar.setRealInTime(now).setInChannel(channel).setTimeUpdate(now)
                 .setCarCompany(tbCar != null ? tbCar.getCustomerName() : "临时");
@@ -224,6 +226,13 @@ public class OpenService {
             //该车所有的业务都是到达卡口才进行扣费才会进入自动扣费
             int autoPayCount = 0;
             for (TbBusiness business : businessList) {
+                if (TbBusiness.ConfirmJudgeEnum.NO_JUDGE.getCode()== business.getConfirmJudge()){
+                    log.error("请求返回:业务未审核:{}", carNo);
+                    return ResultJson.error("业务未审核");
+                }else if (TbBusiness.ConfirmJudgeEnum.CALL_BACK.getCode()== business.getConfirmJudge()){
+                    log.error("请求返回:业务审核驳回:{}", carNo);
+                    return ResultJson.error("业务审核驳回");
+                }
                 TbGoods tbGoods = tbGoodsService.getById(business.getGoodsId());
                 if (TbGoods.DeductionTypeEnum.OUT_KK.getCode().equals(tbGoods.getAutoDeductionType())) {
                     autoPayCount++;

+ 29 - 0
sp-server/src/main/java/com/pj/project/tb_business/TbBusiness.java

@@ -42,6 +42,7 @@ public class TbBusiness extends Model<TbBusiness> implements Serializable {
      * 此模块对应的权限码
      */
     public static final String PERMISSION_CODE = "tb-business";
+    public static final String PERMISSION__JUDGE = "tb-business-judge";
     public static final String PERMISSION_LIST = "tb-business-list";
     public static final String PERMISSION_CONFIRM = "tb-business-confirm";
     public static final String PERMISSION_PAY = "tb-business-pay";
@@ -282,6 +283,24 @@ public class TbBusiness extends Model<TbBusiness> implements Serializable {
     private String confirmBy;
     private String confirmByAdminId;
 
+    /**
+     * 确认审核(0=未审核,1=审核通过,2=审核驳回)[j]
+     */
+    private Integer confirmJudge;
+    /**
+     * 审核时间
+     */
+    private Date confirmJudgeTime;
+    /**
+     * 审核意见
+     */
+    private String confirmJudgeContent;
+    /**
+     * 审核人
+     */
+    private String confirmJudgeBy;
+
+
     @TableField(exist = false)
     private List<TbBusinessItem> items = new ArrayList<>();
     @TableField(exist = false)
@@ -335,6 +354,16 @@ public class TbBusiness extends Model<TbBusiness> implements Serializable {
         private int code;
         private String desc;
     }
+    @Getter
+    @AllArgsConstructor
+    public static enum ConfirmJudgeEnum {
+        NO_JUDGE(0, "未审核"),
+        JUDGE_PASS(1, "审核通过"),
+        CALL_BACK(2, "审核驳回"),
+        ;
+        private int code;
+        private String desc;
+    }
 
 
     public void setCardNo(String cardNo) {

+ 41 - 4
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessController.java

@@ -50,10 +50,6 @@ public class TbBusinessController {
     private TbNoticesService tbNoticesService;
     @Resource
     private TbBusinessCarService tbBusinessCarService;
-    @Resource
-    private TbDeclareService tbDeclareService;
-    @Resource
-    private TbCostomerService tbCostomerService;
 
 
     @RequestMapping(value = "getMsg")
@@ -403,5 +399,46 @@ public class TbBusinessController {
     }
     // ------------------------- 前端接口 -------------------------
 
+    /**
+     * 根据车辆记录查找业务
+     *
+     * @param businessCarId
+     * @return
+     */
+    @RequestMapping("getByBusinessCarId")
+    public AjaxJson getByBusinessCarId(@RequestParam String businessCarId) {
+        return AjaxJson.getSuccessData(tbBusinessService.findOtherBusinessByCarId(businessCarId));
+    }
+
+    /**
+     * 审核通过
+     *
+     * @return
+     */
+    @RequestMapping("confirmJudgePass")
+    @SaCheckPermission(TbBusiness.PERMISSION__JUDGE)
+    public AjaxJson confirmJudge() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        String id = soMap.getString("id");
+        tbBusinessService.confirmJudgePass(id);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 驳回
+     *
+     * @return
+     */
+    @RequestMapping("callback")
+    @SaCheckPermission(TbBusiness.PERMISSION__JUDGE)
+    public AjaxJson callback() {
+        SoMap soMap = SoMap.getRequestSoMap();
+        String id = soMap.getString("id");
+        String judgeContent = soMap.getString("judgeContent");
+        tbBusinessService.callback(id,judgeContent);
+        return AjaxJson.getSuccess();
+
+    }
+
 
 }

+ 45 - 2
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java

@@ -487,11 +487,20 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         return p.multiply(new BigDecimal(unit)).add(new BigDecimal(days).multiply(extraPrice));
     }
 
-
+    /**
+     * 微信端获取缴费信息
+     *
+     * @param businessCarId
+     * @param state
+     * @return
+     */
     public Map<String, Object> getBusinessMoney(String businessCarId, String state) {
         Map<String, Object> result = new HashMap<>();
+        //对应的业务
         List<TbBusiness> businessList = this.findOtherBusinessByCarId(businessCarId);
-        businessList = businessList.stream().filter(tbBusiness -> 3 > tbBusiness.getPayStatus()).collect(Collectors.toList());
+        //未审核的业务
+        long noJudgeCount = businessList.stream().filter(tbBusiness -> TbBusiness.ConfirmJudgeEnum.CALL_BACK.getCode() == tbBusiness.getConfirmJudge()
+                || TbBusiness.ConfirmJudgeEnum.NO_JUDGE.getCode() == tbBusiness.getConfirmJudge()).count();
         Set<TbBusinessCar> cars = new HashSet<>();
         //越南车是否需要支付
         int vietnamCarPay = businessList.stream().anyMatch(tbBusiness -> {
@@ -601,6 +610,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             }
         }
         result.put("itemsPrice", itemsPrice);
+        result.put("noJudgeCount", noJudgeCount);
         result.put("itemList", itemList);
         result.put("businessNo", businessList.stream().map(TbBusiness::getNo).distinct().collect(Collectors.joining("、")));
         result.put("goodsName", businessList.stream().map(TbBusiness::getGoodsName).distinct().collect(Collectors.joining("、")));
@@ -1452,4 +1462,37 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         ew.eq("no", no);
         return this.getOne(ew);
     }
+
+    /**
+     * 审核驳回
+     *
+     * @param id
+     * @param judgeContent
+     */
+    public void callback(String id, String judgeContent) {
+        TbBusiness tbBusiness = this.getById(id);
+        if (tbBusiness == null) {
+            throw new AjaxError("业务不存在");
+        }
+        tbBusiness.setConfirmJudge(TbBusiness.ConfirmJudgeEnum.CALL_BACK.getCode())
+                .setConfirmJudgeContent(judgeContent).setConfirmJudgeTime(new Date())
+                .setConfirmJudgeBy(StpUserUtil.getCreateBy());
+        this.updateById(tbBusiness);
+    }
+
+    /**
+     * 审核通
+     *
+     * @param id
+     */
+    public void confirmJudgePass(String id) {
+        TbBusiness tbBusiness = this.getById(id);
+        if (tbBusiness == null) {
+            throw new AjaxError("业务不存在");
+        }
+        tbBusiness.setConfirmJudge(TbBusiness.ConfirmJudgeEnum.JUDGE_PASS.getCode())
+                .setConfirmJudgeContent("审核通过").setConfirmJudgeTime(new Date())
+                .setConfirmJudgeBy(StpUserUtil.getCreateBy());
+        this.updateById(tbBusiness);
+    }
 }

+ 1 - 2
sp-server/src/main/java/com/pj/project/wx_send_msg/WxMsgTask.java

@@ -21,11 +21,10 @@ public class WxMsgTask {
     /**
      * 3分钟执行一次
      */
-    @Scheduled(fixedRate = 180000)
+    @Scheduled(fixedRate = 600000)
     public void check() {
         List<WxSendMsg> list = wxSendMsgService.list();
         list.forEach(wxSendMsg -> {
-            log.info("重新发送离线消息:{}", JSONUtil.toJsonStr(wxSendMsg));
             wxService.sendTemplateMsg(wxSendMsg.getTemplateId(), wxSendMsg.getOpenid(), JSONUtil.toBean(wxSendMsg.getMsgData(), MsgDataBO.class), wxSendMsg.getDetailUrl());
         });
     }