qzyReal 2 lat temu
rodzic
commit
f3611568d5
25 zmienionych plików z 668 dodań i 608 usunięć
  1. 26 10
      sp-admin/sa-view/tb-account/balance-print.html
  2. 11 3
      sp-admin/sa-view/tb-account/tb-account-add.html
  3. 5 5
      sp-admin/sa-view/tb-account/tb-account-info.html
  4. 5 5
      sp-admin/sa-view/tb-account/tb-account-list.html
  5. 0 7
      sp-admin/sa-view/tb-business/tb-business-info.html
  6. 124 243
      sp-admin/sa-view/tb-business/tb-car-disincle-add.html
  7. 86 236
      sp-admin/sa-view/tb-business/tb-car-disincle-edit.html
  8. 22 6
      sp-admin/sa-view/tb-business/tb-car-disincle-info.html
  9. 20 4
      sp-admin/sa-view/tb-business/tb-car-disincle-judge.html
  10. 13 8
      sp-admin/sa-view/tb-business/tb-car-disincle-list.html
  11. 5 5
      sp-admin/sa-view/tb-charge-record/tb-charge-record-info.html
  12. 5 5
      sp-admin/sa-view/tb-charge-record/tb-charge-record-list.html
  13. 5 5
      sp-admin/sa-view/tb-deduction-record/tb-deduction-record-error-list.html
  14. 5 5
      sp-admin/sa-view/tb-deduction-record/tb-deduction-record-list.html
  15. 1 1
      sp-admin/static/sa.js
  16. 2 4
      sp-server/src/main/java/com/pj/api/wx/service/WxService.java
  17. 24 0
      sp-server/src/main/java/com/pj/current/config/MyConfig.java
  18. 2 0
      sp-server/src/main/java/com/pj/project/sync/request/item/IFactorItem.java
  19. 181 34
      sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java
  20. 25 0
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItem.java
  21. 75 5
      sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java
  22. 4 3
      sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java
  23. 10 4
      sp-server/src/main/java/com/pj/project/tb_item/TbItem.java
  24. 6 10
      sp-server/src/main/java/com/pj/project/tb_item_fac/TbItemFacService.java
  25. 6 0
      sp-server/src/main/resources/application-dev.yml

+ 26 - 10
sp-admin/sa-view/tb-account/balance-print.html

@@ -50,6 +50,14 @@
 			.title-top {
 				margin-top: 248px;
 			}
+			.hide-border{
+				border-bottom-style:none;
+				border-left-style:none;
+				border-right-style: none;
+			}
+			tr td:first-child {
+			  border-left: none;
+			}
 		</style>
 		<link rel="stylesheet" href="../../static/sa.css">
 		<script src="../../static/kj/vue.min.js"></script>
@@ -90,9 +98,6 @@
 								<th style="min-width: 60px;">余额退款</th>
 								<th style="min-width: 60px;">异常退款</th>
 								<th style="width: 70px;">期末余额</th>
-								<th style="width: 110px;">统计稽核员</th>
-								<th style="width: 100px;">复核员</th>
-								<th style="width: 100px;">开单员</th>
 							</tr>
 							<tr v-for="(cel,i) in item.list" :key="cel.index" style="height:60px;font-size: 10px;">
 								<td>{{i+1}}</td>
@@ -103,11 +108,8 @@
 								<td>{{cel.balanceRefundMoney}}</td>
 								<td>{{cel.errorRefundMoney}}</td>
 								<td>{{cel.endMoney}}</td>
-								<td></td>
-								<td></td>
-								<td></td>
 							</tr>
-							<tr style="height: 60px;padding: 0 0.5px;" v-if="index==dataList.length-1">
+							<tr style="height: 40px;padding: 0 0.5px;" v-if="index==dataList.length-1">
 								<td></td>
 								<td>合计</td>
 								<td>{{totalInit}}</td>
@@ -116,11 +118,25 @@
 								<td>{{totalRefundMoney}}</td>
 								<td>{{totalErrorRefund}}</td>
 								<td>{{totalEnd}}</td>
-								<td></td>
-								<td></td>
-								<td></td>
 							</tr>
+						<!-- 	<tr style="height: 40px;padding: 0 0.5px;" v-if="index==dataList.length-1">
+								<td class="hide-border"></td>
+								<td class="hide-border"></td>
+								<td class="hide-border">统计稽核员:</td>
+								<td class="hide-border"></td>
+								<td class="hide-border">复核员:</td>
+								<td class="hide-border"></td>
+								<td class="hide-border">开单员:</td>
+								<td class="hide-border"></td>
+							</tr> -->
 						</table>
+						<div>
+							<div style="display: flex;margin-top: 15px;">
+								<div style="flex: 2;text-align: right;margin-right: 50px;">统计稽核员:</div>
+								<div style="flex: 1;">复核员:</div>
+								<div style="flex: 1;margin-right: 20px;">开单员:</div>
+							</div>
+						</div>
 						<span style="position: absolute;top: 1250px;left: 750px">{{index+1}}/{{dataList.length}}</span>
 					</div>
 				</div>

+ 11 - 3
sp-admin/sa-view/tb-account/tb-account-add.html

@@ -42,7 +42,7 @@
 						<sa-item type="text" name="客户名称" v-model="m.customerName" :disabled="true" br></sa-item>
 						<sa-item type="text" name="客户余额" v-model="m.totalMoney" :disabled="true" br></sa-item>
 						<sa-item name="实际收款" br>
-							<el-input type="number" v-model="m.totalTopup" >
+							<el-input type="number" step="0.01" @input="totalTopupInput" v-model="m.totalTopup" >
 								<template slot="suffix">元</template>
 							</el-input>
 						</sa-item>
@@ -90,15 +90,23 @@
 				},
 				computed: {
 					preTopupMoney() {
-						let money= parseInt(this.m.totalTopup) + parseInt(this.m.discountMoney);
+						let money= parseFloat(this.m.totalTopup) + parseFloat(this.m.discountMoney);
 						if(money<0){
 							money=0;
 							sa.error('金额不正确');
 						}
-						return money;
+						return money.toFixed(2);
 					}
 				},
 				methods: {
+					totalTopupInput(){
+						let totalTopup=this.m.totalTopup;
+					  	if(totalTopup&&totalTopup.indexOf('.')>-1){
+							if(totalTopup.substr('.').length>2){
+								this.m.totalTopup=totalTopup.substr(0,totalTopup.indexOf('.')+3);
+							}
+						}
+					},
 					// 提交数据
 					ok: function() {
 						this.m.preTopupMoney=this.preTopupMoney;

+ 5 - 5
sp-admin/sa-view/tb-account/tb-account-info.html

@@ -8,11 +8,11 @@
     <!-- 所有的 css js 资源 -->
     <link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
     <link rel="stylesheet" href="../../static/sa.css">
-    <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
-    <script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-    <script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-    <script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-    <script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+    <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>
     <style type="text/css">
         .c-panel .c-label {

+ 5 - 5
sp-admin/sa-view/tb-account/tb-account-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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/node_modules/crypto-js/crypto-js.js"></script>
 		<style>

+ 0 - 7
sp-admin/sa-view/tb-business/tb-business-info.html

@@ -60,8 +60,6 @@
                                         <sa-info name="业务费用" br>{{m.itemPrice}}(元)</sa-info>
                                         <sa-info name="合计费用" br>{{m.totalMoney}}(元)</sa-info>
                                         <sa-info name="支付时间" br>{{m.payTime}}</sa-info>
-                                        <sa-info type="img" name="检验检疫证" :value="m.checkReport" br></sa-info>
-                                        <sa-info type="img" name="出仓证明" :value="m.outReport" br></sa-info>
                                     </el-col>
                                 </el-row>
                             </div>
@@ -77,14 +75,9 @@
                             </div>
                             <el-table :data="m.cars" style="width: 100%">
                                 <sa-td name="车牌号" prop="carNo"></sa-td>
-                                <sa-td name="车辆规格" prop="carSize"></sa-td>
                                 <sa-td width="130" name="支付状态" prop="pay" type="enum"
                                        :jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]'}">
                                 </sa-td>
-                                <sa-td width="120" name="车辆状态" prop="isLock" type="enum"
-                                       :jv="{1: '锁定[#ff0000]', 0: '正常[#005500]'}">
-                                </sa-td>
-
                                 <el-table-column label="停车费">
                                     <template slot-scope="s">
                                         <label v-if="s.row.money">{{s.row.money}}</label>

+ 124 - 243
sp-admin/sa-view/tb-business/tb-car-disincle-add.html

@@ -45,6 +45,10 @@
 			.china-car-size .el-input__inner {
 				width: 130px;
 			}
+			.flex-item {
+				width: 360px;
+				padding-bottom: 20px;
+			}
 		</style>
 	</head>
 	<body>
@@ -97,7 +101,8 @@
 										<el-col span=8>
 											<div class="c-item" v-if="goods.needPartner">
 												<label class="c-label"><span style="color: red;">*</span>合作伙伴:</label>
-												<el-select v-model="m.pickCustomerId" placeholder="请选择" filterable :disabled="partnerDis">
+												<el-select v-model="m.pickCustomerId" placeholder="请选择" filterable
+													:disabled="partnerDis">
 													<el-option v-for="item in partnerList" :key="item.id"
 														:label="item.name" :value="item.id">
 													</el-option>
@@ -117,7 +122,7 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>车辆</span>
+									<span>业务车辆</span>
 									<el-button style="float: right;" icon="el-icon-plus" type="primary"
 										@click="showAddModal" v-if="goods.mulCar==1||car.list.length==0">添加
 									</el-button>
@@ -127,13 +132,13 @@
 									</el-table-column>
 									<el-table-column prop="carNo" label="车牌号">
 									</el-table-column>
-									<el-table-column prop="carSize" label="规格(米)">
-									</el-table-column>
 									<el-table-column prop="carType" label="类型">
 									</el-table-column>
-									<el-table-column prop="netWeight" label="载重(kg)">
+									<el-table-column prop="driverName" label="司机姓名" v-if="car.list.length>0&&car.list[0].driverName">
+									</el-table-column>
+									<el-table-column prop="driverPhone" label="司机电话" v-if="car.list.length>0&&car.list[0].driverName">
 									</el-table-column>
-									<el-table-column label="操作">
+									<el-table-column label="操作" fixed="right" width="140">
 										<template slot-scope="s">
 											<el-button class="c-btn" type="info" @click="editFn(s.row)">修改</el-button>
 											<el-button class="c-btn" type="danger" @click="deleteFn(s.row)">删除
@@ -146,46 +151,71 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>收费项</span>
+									<span>业务类型</span>
 								</div>
 								<div>
-									<el-form-item v-for="(type,index) in itemTypeList">
-										<el-row justify="center">
-											<el-col span="8">
+									<div v-for="(type,index) in itemTypeList">
+										<div style="display: flex;flex-wrap: wrap;">
+											<div style="width: 360px;padding-bottom: 20px;">
 												<label style="color: red;"
 													v-if="type.need==1">*</label><label>{{type.name}}:</label>
-												<el-select v-model="type.itemId" style="width: 120px;"
-													@change="itemChange(type)" placeholder="请选择">
+												<el-select v-model="type.itemId" @change="itemChange(type)"
+													placeholder="请选择">
 													<el-option v-for="item in type.items" :key="item.id"
 														:label="item.itemName" :value="item.id">
 													</el-option>
 												</el-select>
-											</el-col>
-											<el-col span="8">
-												<el-input-number style="margin-left: 60px;" class="item-num"
-													v-model="type.num" :min="1" :disabled="type.disabled" :max="100" size="mini"></el-input-number>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-show="(type.itemAlias&&(type.itemAlias=='emptyStore'||type.itemAlias=='heavyStore'))">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													取/存:</label>
+												<el-select v-model="type.cabinetType" placeholder="请选择">
+													<el-option v-for="item in type.cabinetTypeList" :key="item.value"
+														:label="item.name" :value="item.value">
+													</el-option>
+												</el-select>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;" v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
+												||(type.itemName&&type.itemName.indexOf('堆存')!==-1)">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													柜号:</label>
+												<el-input v-model="type.cabinetNo" placeholder="柜号" clearable>
+												</el-input>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													数量:</label>
+												<el-input-number style="margin-left: 20px;" class="item-num"
+													v-model="type.num" :min="1" :disabled="type.disabled" :max="100"
+													size="mini"></el-input-number>
 												<div class="xj" v-if="type.itemId">
-													{{type.price * type.num}}元
+													<label v-if="type.price>1">{{type.price * type.num}}元</label>
+													<label v-else>—</label>
 													<label @click="cleanItem(type)"
-														style="margin-left: 5px;cursor: pointer">(<i
+														style="margin-left: 5px;cursor: pointer;z-index: 999;">(<i
 															class="el-icon-delete"></i>)</label>
 												</div>
-											</el-col>
-											<el-col span="8">
-												<div v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
-												||(type.itemName&&type.itemName.indexOf('堆存')!==-1)">
-													<label class="c-label">
-														<span style="color: red;">*</span>
-														柜号:</label>
-													<el-input v-model="type.cabinetNo"  placeholder="柜号" clearable>
-													</el-input>
-												</div>
-											</el-col>
-										</el-row>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"
+												v-if="(type.itemAlias&&(type.itemAlias=='bigHeadCar'||type.itemAlias=='coldTruck'||type.itemAlias.indexOf('Store')>-1))">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													<span v-if="type.cabinetType&&type.cabinetType==1">结束时间:</span>
+													<span v-else>开始时间:</span></label>
+												<el-date-picker type="datetime" v-model="type.coldStartTime"
+													:placeholder="type.cabinetType&&type.cabinetType==1?'结束时间':'开始时间'"></el-date-picker>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;"></div>
+										</div>
 										<el-divider></el-divider>
-									</el-form-item>
-									<div class="hj" v-if="totalPrice>0">
-										合计费用:{{totalPrice}}<label>元</label>
+									</div>
+									<div class="hj">
+										合计费用:<label v-if="totalPrice>5">{{totalPrice}}元</label>
+										<label v-else>未计算</label>
 									</div>
 								</div>
 							</el-card>
@@ -198,14 +228,13 @@
 				<el-button type="primary" @click="ok()">确定</el-button>
 				<el-button @click="closeFn()">取消</el-button>
 			</div>
-			<el-dialog title="车辆录入" :visible.sync="car.visible" width="400">
+			<el-dialog title="车辆录入" :visible.sync="car.visible" width="300">
 				<span>
 					<el-form label-position="left">
 						<div class="c-item">
 							<label class="c-label"><span style="color: red;">*</span>车牌号:</label>
-							<el-autocomplete v-model="car.form.carNo" placeholder="请输入车牌号" value-key='carNo'
-								:fetch-suggestions="queryCarAsync">
-							</el-autocomplete>
+							<el-input v-model="car.form.carNo" placeholder="请输入车牌号" value-key='carNo'>
+							</el-input>
 						</div>
 						<div class="c-item">
 							<label class="c-label">车辆类型:</label>
@@ -214,19 +243,15 @@
 								</el-option>
 							</el-select>
 						</div>
-						<div class="c-item">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								规格(米):</label>
-							<el-input-number class="item-num" v-model="car.form.carSize" :min="1" :max="50">
-							</el-input-number>
+						<div class="c-item" v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机姓名:</label>
+							<el-input v-model="car.form.driverName" placeholder="司机姓名">
+							</el-input>
 						</div>
-						<div class="c-item" v-if="car.form.carType.indexOf('空')==-1">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								载重(kg):</label>
-							<el-input-number class="item-num" v-model="car.form.netWeight" :min="1" :max="999999">
-							</el-input-number>
+						<div class="c-item"  v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机号码:</label>
+							<el-input v-model="car.form.driverPhone" placeholder="司机号码">
+							</el-input>
 						</div>
 					</el-form>
 				</span>
@@ -235,50 +260,6 @@
 					<el-button type="primary" @click="confirmAdd">确 定</el-button>
 				</span>
 			</el-dialog>
-			<el-dialog title="申报单" :visible.sync="declare.visible" width="90%">
-				<div class="delect-search">
-					申报人:
-					<el-input style="width: 140px;" v-model="declare.p.declarePeople" placeholder="申报人">
-					</el-input>
-					<el-button type="primary" @click="getDeclareList">搜索</el-button>
-					<el-button type="info" @click="resetDclare">重置</el-button>
-				</div>
-				<el-card class="box-card" style="margin-top: 20px;">
-					<div slot="header">
-						<span>列表</span>
-					</div>
-					<el-table :data="declare.list" ref="declareTable">
-						<el-table-column type="selection">
-						</el-table-column>
-						<el-table-column prop="declarePeople" label="申报人">
-						</el-table-column>
-						<el-table-column prop="customerName" label="申报公司" width=200>
-						</el-table-column>
-						<el-table-column prop="sendUnit" label="货主" width=200>
-						</el-table-column>
-						<el-table-column prop="createTime" width="140" label="申报时间">
-						</el-table-column>
-						<el-table-column prop="declareNo" width="180" label="申报单号">
-						</el-table-column>
-						<el-table-column prop="goodsName" label="产品学名">
-						</el-table-column>
-						<el-table-column prop="carNo" label="越南车牌">
-						</el-table-column>
-						<el-table-column prop="grossWeight" label="毛重(kg)">
-						</el-table-column>
-					</el-table>
-					<div class="block">
-						<el-pagination layout="prev, pager, next" @current-change="currentPageChange"
-							:page-size="declare.p.pageSize" :total="declare.p.dataCount"
-							:current-page="declare.p.pageNo">
-						</el-pagination>
-					</div>
-				</el-card>
-				<span slot="footer" class="dialog-footer">
-					<el-button @click="declare.visible = false">取 消</el-button>
-					<el-button type="primary" @click="confirmSelectDeclare">确 定</el-button>
-				</span>
-			</el-dialog>
 		</div>
 		<script>
 			var app = new Vue({
@@ -291,7 +272,7 @@
 					m: {
 						id: '', // 主键
 						customerId: '', // 客户id
-						pickCustomerId:'',
+						pickCustomerId: '',
 						customerName: '', // 客户名称
 						operateTime: '',
 						no: '', // 编号
@@ -300,7 +281,7 @@
 						businessGoodsNum: 1,
 						businessGoodsName: ''
 					}, // 实体对象
-					partnerDis:false,
+					partnerDis: false,
 					customerList: [],
 					partnerList: [],
 					carList: [],
@@ -316,6 +297,8 @@
 							carNo: '',
 							carType: '',
 							netWeight: '',
+							driverName:'',
+							driverPhone:'',
 							carSize: ''
 						}
 					},
@@ -364,6 +347,9 @@
 					}
 				},
 				methods: {
+					cabinetTypeChange(type) {
+						console.log(type);
+					},
 					resetDclare() {
 						this.declare.p.pageNo = 1;
 						this.declare.p.pageSize = 8;
@@ -398,79 +384,27 @@
 							})
 						}.bind(this))
 					},
-					confirmSelectDeclare() {
-						// 获取选中元素的id列表
-						let selection = this.$refs['declareTable'].selection;
-						let declareNo = sa.getArrayField(selection, 'declareNo');
-						if (selection.length == 0) {
-							return sa.msg('请至少选择一条数据')
-						}
-						if (selection.length > 1) {
-							return sa.msg('只能选择一条数据')
-						}
-						let declare = selection[0];
-						let oldNo = this.m.declareNo;
-						if (oldNo && oldNo !== declare.declareNo) {
-							this.car.list = [];
-						}
-						if (oldNo !== declare.declareNo) {
-							this.m.declareNo = declare.declareNo;
-							this.m.customerId = declare.customerId;
-							this.m.customerName = declare.customerName;
-							this.m.owner = declare.sendUnit;
-							let carNo = declare.carNo;
-							let grossWeight = declare.grossWeight;
-							let carList = this.car.list;
-							let exit = carList.filter(obj => obj.carNo == carNo).pop();
-							if (!exit) {
-								let car = {
-									carNo: carNo,
-									netWeight: grossWeight,
-									carType: '载重'
-								}
-								this.car.list.push(car)
-							}
-							this.m.cardNo = declare.carNo;
-							this.m.chinaCarNo = declare.chinaCarNo;
-							this.m.netWeight = declare.grossWeight;
-							let chinaCarNo = declare.chinaCarNo;
-							if (chinaCarNo) {
-								let list = [];
-								chinaCarNo.replace(",", ",").split(",").forEach(carNo => {
-									let exit = carList.filter(obj => obj.carNo == carNo).pop();
-									if (!exit) {
-										let car = {
-											carNo: carNo,
-											carType: '空车'
-										}
-										this.car.list.push(car)
-									}
-								})
-							}
-							this.filterItems();
-						}
-						this.declare.visible = false;
-					},
 					cleanItem(type) {
 						type.itemId = '';
 						type.itemName = '';
 						type.price = '';
+						type.cabinetNo = '';
+						type.coldStartTime = '';
 					},
 					itemChange(type) {
-						if (this.validBefore()) {
 							let itemId = type.itemId;
 							let item = type.items.filter(obj => obj.id == itemId).pop();
 							if (item) {
 								type.inc = item.inc;
 								type.price = item.price;
 								type.needRemark = item.needRemark;
-								type.disabled=false;
-								type.itemName=item.itemName;
-								if(item.itemName=='人工、机械装卸车辆'){
-									type.disabled=true;
+								type.disabled = false;
+								type.itemName = item.itemName;
+								type.itemAlias = item.itemAlias;
+								if (item.itemName == '人工、机械装卸车辆') {
+									type.disabled = true;
 								}
 							}
-						}
 					},
 					confirmAdd() {
 						let list = this.car.list;
@@ -479,15 +413,10 @@
 						let goods = this.goods;
 						let form = this.car.form;
 						let carType = form.carType;
-
 						if (!carNo) {
 							sa.error('请录入车牌号')
 							return false;
 						}
-						if (!form.carSize && goods.needCarSize == 1) {
-							sa.error('请填入车辆规格')
-							return false;
-						}
 						if (carType.indexOf('空') !== -1) {
 							netWeight = 0;
 						}
@@ -495,65 +424,32 @@
 						if (index > -1) {
 							list.splice(index, 1);
 						}
+						let phone=form.driverPhone;
+						if(phone&&!sa.isPhone(phone)){
+							sa.error('司机号码不正确')
+							return;
+						}
 						let carSize = form.carSize;
 						let car = {
 							id: form.id,
 							carNo: form.carNo.toUpperCase(),
 							carType: carType,
 							carSize: carSize,
-							netWeight: netWeight
+							netWeight: netWeight,
+							driverName:form.driverName,
+							driverPhone:phone
 						}
 						this.car.list.push(car);
 						this.car.visible = false;
-						this.filterItems();
-					},
-					filterItems() {
-						let carList = this.car.list;
-						let filterTypeList = JSON.parse(JSON.stringify(this.filterTypeList));
-						if (carList.length == 0) {
-							this.itemTypeList = filterTypeList;
-							return;
-						}
-						let car = this.car.form;
-						if (car == null) {
-							let checkList = carList.filter(obj => obj.carType.indexOf('空') === -1);
-							if (checkList.length > 0) {
-								car = checkList[0];
-							}
-						}
-						let carSize = car.carSize;
-						let carType = car.carType;
-						if (carType.indexOf('空') !== -1 && carList.length > 1) {
-							return;
-						}
-						let netWeight = car.netWeight;
-						let tempList = [];
-						for (let i in filterTypeList) {
-							let type = filterTypeList[i];
-							let items = type.items;
-							if (carType) {
-								items = items.filter(item => item.itemType && item.itemType.indexOf(carType) !== -1);
-							}
-							if (carSize && carSize > 1) {
-								items = items.filter(item => item.minLength <= carSize && item.carLength >= carSize);
-							}
-							if (netWeight && netWeight > 1 && carType.indexOf('空') == -1) {
-								items = items.filter(item => item.minWeight <= netWeight && item.maxWeight >= netWeight);
-							}
-							let itemIds = items.map(item => item.id);
-							if (itemIds.indexOf(type.itemId) == -1) {
-								this.cleanItem(type);
-							}
-							type.items = items;
-							tempList.push(type);
-						}
-						this.itemTypeList = tempList;
+
 					},
 					showAddModal() {
 						this.car.visible = true;
 						this.car.form.carNo = '';
 						this.car.form.carSize = '';
 						this.car.form.netWeight = '';
+						this.car.form.driverName='';
+						this.car.form.driverPhone='';
 					},
 					editFn(data) {
 						Object.assign(this.car, {
@@ -563,7 +459,6 @@
 					},
 					deleteFn(data) {
 						this.car.list.splice(this.car.list.indexOf(data), 1);
-						this.filterItems();
 					},
 					getGoods() {
 						sa.ajax('/TbGoods/getList', {
@@ -594,10 +489,21 @@
 							goodsId: this.m.goodsId
 						}, function(resp) {
 							let list = resp.data;
+							for (let i in list) {
+								let type = list[i];
+								let cabinetTypeList = [{
+									value: 0,
+									name: '存柜'
+								}, {
+									value: 1,
+									name: '取柜'
+								}];
+								type.cabinetTypeList = cabinetTypeList;
+								type.cabinetType = 0;
+							}
 							this.itemTypeList = list.filter(type => type.status == 1);
-							console.log(this.itemTypeList);
-							this.filterTypeList = JSON.parse(JSON.stringify(this.itemTypeList));
-							this.filterItems();
+
+							//this.filterTypeList = JSON.parse(JSON.stringify(this.itemTypeList));
 						}.bind(this))
 					},
 					getItemType() {
@@ -625,13 +531,6 @@
 							this.getCurrentCustomer();
 						}.bind(this));
 					},
-					queryCarAsync(queryStr, cb) {
-						sa.ajaxNoLoading('/TbBusinessCar/searchByNo', {
-							carNo: queryStr
-						}, function(resp) {
-							cb(resp.data)
-						}.bind(this))
-					},
 					closeFn() {
 						parent.app.f5();
 						sa.closeCurrIframe();
@@ -656,15 +555,6 @@
 							sa.error('请录入车辆');
 							return false;
 						}
-						let needCarSize = goods.needCarSize;
-						let carList = this.car.list;
-						for (let i in carList) {
-							let car = carList[i];
-							if (needCarSize == 1 && !car.carSize) {
-								sa.error('请补充' + car.carNo + '规格');
-								return;
-							}
-						}
 						return true;
 					},
 					// 提交数据
@@ -689,16 +579,6 @@
 							sa.error('请录入车辆');
 							return false;
 						}
-						let needCarSize = goods.needCarSize;
-						let carList = this.car.list;
-						for (let i in carList) {
-							let car = carList[i];
-							if (needCarSize == 1 && !car.carSize) {
-								sa.error('请补充' + car.carNo + '规格');
-								return;
-							}
-
-						}
 						let typeList = this.itemTypeList;
 						let selectList = [];
 						for (let i in typeList) {
@@ -707,10 +587,7 @@
 								sa.error('【' + type.name + '】必选');
 								return false;
 							}
-							if (type.needRemark == 1 && !type.remark) {
-								sa.error('请输入【' + type.name + '】的备注');
-								return false;
-							}
+
 							if (type.itemId) {
 								let obj = {
 									typeId: type.id,
@@ -719,7 +596,10 @@
 									num: type.num,
 									price: type.price,
 									remark: type.remark,
-									cabinetNo:type.cabinetNo
+									cabinetNo: type.cabinetNo,
+									coldStartTime: type.coldStartTime,
+									itemAlias: type.itemAlias,
+									cabinetType: type.cabinetType
 								}
 								selectList.push(obj);
 							}
@@ -728,6 +608,7 @@
 							m.customerId = '';
 						}
 						m.itemJson = JSON.stringify(selectList);
+						let carList = this.car.list;
 						m.carJson = JSON.stringify(carList);
 						let chinaCarNo = carList
 							.filter(car => sa.isCarNo(car.carNo.toUpperCase()))
@@ -754,10 +635,10 @@
 							this.currentCustomerId = id;
 							let partnerList = this.partnerList;
 							let arr = partnerList.filter(obj => obj.id == id);
-							if(arr.length>0){
-								this.m.pickCustomerId=id;
-								this.partnerDis=true;
-								this.m.customerId=id;
+							if (arr.length > 0) {
+								this.m.pickCustomerId = id;
+								this.partnerDis = true;
+								this.m.customerId = id;
 							}
 						}.bind(this));
 					},
@@ -770,4 +651,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 86 - 236
sp-admin/sa-view/tb-business/tb-car-disincle-edit.html

@@ -41,6 +41,11 @@
 				font-weight: bold;
 
 			}
+
+			.flex-item {
+				width: 360px;
+				padding-bottom: 20px;
+			}
 		</style>
 	</head>
 	<body>
@@ -117,7 +122,7 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>车辆</span>
+									<span>业务车辆</span>
 									<el-button style="float: right;" icon="el-icon-plus" type="primary"
 										@click="showAddModal" v-if="goods.mulCar==1||car.list.length==0">添加
 									</el-button>
@@ -127,11 +132,11 @@
 									</el-table-column>
 									<el-table-column prop="carNo" label="车牌号">
 									</el-table-column>
-									<el-table-column prop="carSize" label="规格(米)">
-									</el-table-column>
 									<el-table-column prop="carType" label="类型">
 									</el-table-column>
-									<el-table-column prop="netWeight" label="载重(kg)">
+									<el-table-column prop="driverName" label="司机姓名" v-if="car.list.length>0&&car.list[0].driverName">
+									</el-table-column>
+									<el-table-column prop="driverPhone" label="司机电话" v-if="car.list.length>0&&car.list[0].driverName">
 									</el-table-column>
 									<el-table-column label="操作">
 										<template slot-scope="s">
@@ -146,47 +151,70 @@
 						<el-row>
 							<el-card class="box-card">
 								<div slot="header" class="clearfix">
-									<span>收费项</span>
+									<span>业务类型</span>
 								</div>
 								<div>
 									<el-form-item v-for="(type,index) in itemTypeList">
-										<el-row justify="center">
-											<el-col span="8">
+										<div style="display: flex;flex-wrap: wrap;">
+											<div class="flex-item">
 												<label style="color: red;"
 													v-if="type.need==1">*</label><label>{{type.name}}:</label>
-												<el-select v-model="type.itemId" style="width: 120px;"
+												<el-select v-model="type.itemId" style="width: 100px;"
 													@change="itemChange(type)" placeholder="请选择">
 													<el-option v-for="item in type.items" :key="item.id"
 														:label="item.itemName" :value="item.id">
 													</el-option>
 												</el-select>
-											</el-col>
-											<el-col span="8">
-												<el-input-number style="margin-left: 60px;" class="item-num"
-													v-model="type.num" :min="1" :max="100" size="mini"
-													:disabled="type.disabled"></el-input-number>
+											</div>
+											<div class="flex-item">
+												<el-input-number style="margin-left: 20px;" class="item-num"
+													v-model="type.num" :min="1" :disabled="type.disabled" :max="100"
+													size="mini"></el-input-number>
 												<div class="xj" v-if="type.itemId">
-													{{type.price * type.num}}元
-													<label @click="cleanItem(type)"
-														style="margin-left: 5px;cursor: pointer">(<i
-															class="el-icon-delete"></i>)</label>
+													<label v-if="type.price>1">{{type.price * type.num}}元</label>
+													<label v-else>—</label>
+													<!-- <label @click="cleanItem(type)"
+														style="margin-left: 5px;cursor: pointer;z-index: 999;">(<i
+															class="el-icon-delete"></i>)</label> -->
 												</div>
-											</el-col>
-											<el-col span="8">
-												<div v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
+											</div>
+											<div class="flex-item" v-if="(type.itemName&&type.itemName.indexOf('集装箱')!==-1)
 												||(type.itemName&&type.itemName.indexOf('堆存')!==-1)">
-													<label class="c-label">
-														<span style="color: red;">*</span>
-														柜号:</label>
-													<el-input v-model="type.cabinetNo" placeholder="柜号" clearable>
-													</el-input>
-												</div>
-											</el-col>
-										</el-row>
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													柜号:</label>
+												<el-input v-model="type.cabinetNo" placeholder="柜号" clearable>
+												</el-input>
+											</div>
+											<div style="width: 360px;padding-bottom: 20px;" v-show="(type.itemAlias&&(type.itemAlias=='emptyStore'||type.itemAlias=='heavyStore'))">
+												<label class="c-label">
+													<span style="color: red;">*</span>
+													取/存:</label>
+													<el-select  v-model="type.cabinetType" disabled  placeholder="请选择">
+														<el-option v-for="item in type.cabinetTypeList" :key="item.value"
+															:label="item.name" :value="item.value">
+														</el-option>
+													</el-select>
+											</div>
+											<div class="flex-item" v-if="(type.itemAlias&&(type.itemAlias=='bigHeadCar'||type.itemAlias=='coldTruck'||type.itemAlias.indexOf('Store')>-1))">
+												<label class="c-label">
+													<span style="color: red;">*</span>开始时间:</label>
+												<el-date-picker type="datetime" disabled v-model="type.coldStartTime"
+													placeholder="开始时间"></el-date-picker>
+											</div>
+											<div class="flex-item" 
+											v-if="(type.itemAlias&&(type.itemAlias=='coldTruck'||type.itemAlias.indexOf('Store')>-1))">
+												<label class="c-label">
+													结束时间:</label>
+												<el-date-picker type="datetime" v-model="type.coldEndTime"
+													placeholder="结束时间"></el-date-picker>
+											</div>
+										</div>
 										<el-divider></el-divider>
 									</el-form-item>
-									<div class="hj" v-if="totalPrice>0">
-										合计费用:{{totalPrice}}<label>元</label>
+									<div class="hj">
+										合计费用:<label v-if="totalPrice>5">{{totalPrice}}元</label>
+										<label v-else>-</label>
 									</div>
 								</div>
 							</el-card>
@@ -215,19 +243,15 @@
 								</el-option>
 							</el-select>
 						</div>
-						<div class="c-item">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								规格(米):</label>
-							<el-input-number class="item-num" v-model="car.form.carSize" :min="1" :max="50">
-							</el-input-number>
+						<div class="c-item" v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机姓名:</label>
+							<el-input v-model="car.form.driverName" placeholder="司机姓名">
+							</el-input>
 						</div>
-						<div class="c-item" v-if="car.form.carType&&car.form.carType.indexOf('空')==-1">
-							<label class="c-label">
-								<span style="color: red;" v-if="goods.needCarSize==1">*</span>
-								载重(kg):</label>
-							<el-input-number class="item-num" v-model="car.form.netWeight" :min="1" :max="999999">
-							</el-input-number>
+						<div class="c-item"  v-if="m.goodsName=='集装箱正面吊装'">
+							<label class="c-label">司机号码:</label>
+							<el-input v-model="car.form.driverPhone" placeholder="司机号码">
+							</el-input>
 						</div>
 					</el-form>
 				</span>
@@ -236,50 +260,7 @@
 					<el-button type="primary" @click="confirmAdd">确 定</el-button>
 				</span>
 			</el-dialog>
-			<el-dialog title="申报单" :visible.sync="declare.visible" width="90%">
-				<div class="delect-search">
-					申报人:
-					<el-input style="width: 140px;" v-model="declare.p.declarePeople" placeholder="申报人">
-					</el-input>
-					<el-button type="primary" @click="getDeclareList">搜索</el-button>
-					<el-button type="info" @click="resetDclare">重置</el-button>
-				</div>
-				<el-card class="box-card" style="margin-top: 20px;">
-					<div slot="header">
-						<span>列表</span>
-					</div>
-					<el-table :data="declare.list" ref="declareTable">
-						<el-table-column type="selection">
-						</el-table-column>
-						<el-table-column prop="declarePeople" label="申报人">
-						</el-table-column>
-						<el-table-column prop="customerName" label="申报公司" width=200>
-						</el-table-column>
-						<el-table-column prop="sendUnit" label="货主" width=200>
-						</el-table-column>
-						<el-table-column prop="createTime" width="140" label="申报时间">
-						</el-table-column>
-						<el-table-column prop="declareNo" width="180" label="申报单号">
-						</el-table-column>
-						<el-table-column prop="goodsName" label="产品学名">
-						</el-table-column>
-						<el-table-column prop="carNo" label="越南车牌">
-						</el-table-column>
-						<el-table-column prop="grossWeight" label="毛重(kg)">
-						</el-table-column>
-					</el-table>
-					<div class="block">
-						<el-pagination layout="prev, pager, next" @current-change="getDeclareList"
-							:page-size="declare.p.pageSize" :total="declare.p.dataCount"
-							:current-page="declare.p.pageNo">
-						</el-pagination>
-					</div>
-				</el-card>
-				<span slot="footer" class="dialog-footer">
-					<el-button @click="declare.visible = false">取 消</el-button>
-					<el-button type="primary" @click="confirmSelectDeclare">确 定</el-button>
-				</span>
-			</el-dialog>
+			
 		</div>
 		<script>
 			var app = new Vue({
@@ -366,87 +347,9 @@
 						this.declare.p.pageSize = 8;
 						this.declare.p.production = '';
 						this.declare.p.declarePeople = '';
-						this.getDeclareList();
 					},
 					handlerDeclare() {
 						this.declare.visible = true;
-						this.getDeclareList();
-					},
-					getDeclareList() {
-						let currentCustomerId = this.currentCustomerId;
-						if (currentCustomerId != '1') {
-							this.declare.p.customerId = this.currentCustomerId;
-						}
-						let declareNo = this.m.declareNo;
-						if (declareNo) {
-							this.declare.p.declareNo = declareNo;
-						}
-						sa.ajax('/TbDeclare/getNotBindList', sa.removeNull(this.declare.p), function(resp) {
-							let list = resp.data;
-							this.declare.list = list;
-							this.declare.p.pageNo = resp.pageNo;
-							this.declare.p.dataCount = resp.dataCount;
-							list.forEach(row => {
-								if (row.declareNo == this.m.declareNo) {
-									this.$nextTick(() => {
-										this.$refs['declareTable'].toggleRowSelection(row, true)
-									})
-								}
-							})
-						}.bind(this))
-					},
-					confirmSelectDeclare() {
-						// 获取选中元素的id列表
-						let selection = this.$refs['declareTable'].selection;
-						let declareNo = sa.getArrayField(selection, 'declareNo');
-						if (selection.length == 0) {
-							return sa.msg('请至少选择一条数据')
-						}
-						if (selection.length > 1) {
-							return sa.msg('只能选择一条数据')
-						}
-						let declare = selection[0];
-						let oldNo = this.m.declareNo;
-						if (oldNo && oldNo !== declare.declareNo) {
-							this.car.list = [];
-						}
-						if (oldNo !== declare.declareNo) {
-							this.m.declareNo = declare.declareNo;
-							this.m.customerId = declare.customerId;
-							this.m.customerName = declare.customerName;
-							this.m.owner = declare.sendUnit;
-							let carNo = declare.carNo;
-							let grossWeight = declare.grossWeight;
-							let carList = this.car.list;
-							let exit = carList.filter(obj => obj.carNo == carNo).pop();
-							if (!exit) {
-								let car = {
-									carNo: carNo,
-									netWeight: grossWeight,
-									carType: '载重'
-								}
-								this.car.list.push(car)
-							}
-							this.m.cardNo = declare.carNo;
-							this.m.chinaCarNo = declare.chinaCarNo;
-							this.m.netWeight = declare.grossWeight;
-							let chinaCarNo = declare.chinaCarNo;
-							if (chinaCarNo) {
-								let list = [];
-								chinaCarNo.replace(",", ",").split(",").forEach(carNo => {
-									let exit = carList.filter(obj => obj.carNo == carNo).pop();
-									if (!exit) {
-										let car = {
-											carNo: carNo,
-											carType: '空车'
-										}
-										this.car.list.push(car)
-									}
-								})
-							}
-							// this.filterItems();
-						}
-						this.declare.visible = false;
 					},
 					cleanItem(type) {
 						type.itemId = '';
@@ -461,11 +364,11 @@
 							type.price = item.price;
 							type.disabled = false;
 							type.itemName = item.itemName;
+							type.itemAlias = item.itemAlias;
 							if (item.itemName == '人工、机械装卸车辆') {
 								type.disabled = true;
 							}
 						}
-						console.log(type);
 						this.validBefore();
 					},
 					confirmAdd() {
@@ -480,10 +383,6 @@
 							sa.error('请录入车牌号')
 							return false;
 						}
-						if (!form.carSize && goods.needCarSize == 1) {
-							sa.error('请填入车辆规格')
-							return false;
-						}
 						if (carType.indexOf('空') !== -1) {
 							netWeight = 0;
 						}
@@ -512,48 +411,6 @@
 
 						// this.filterItems();
 					},
-					filterItems() {
-						let carList = this.car.list;
-						let filterTypeList = JSON.parse(JSON.stringify(this.filterTypeList));
-						if (carList.length == 0) {
-							this.itemTypeList = filterTypeList;
-							return;
-						}
-						let car = this.car.form;
-						if (car == null) {
-							let checkList = carList.filter(obj => obj.carType.indexOf('空') === -1);
-							if (checkList.length > 0) {
-								car = checkList[0];
-							}
-						}
-						let carSize = car.carSize;
-						let carType = car.carType;
-						if (carType.indexOf('空') !== -1 && carList.length > 1) {
-							return;
-						}
-						let netWeight = car.netWeight;
-						let tempList = [];
-						for (let i in filterTypeList) {
-							let type = filterTypeList[i];
-							let items = type.items;
-							if (carType) {
-								items = items.filter(item => item.itemType && item.itemType.indexOf(carType) !== -1);
-							}
-							if (carSize && carSize > 1) {
-								items = items.filter(item => item.minLength <= carSize && item.carLength >= carSize);
-							}
-							if (netWeight && netWeight > 1 && carType && carType.indexOf('空') == -1) {
-								items = items.filter(item => item.minWeight <= netWeight && item.maxWeight >= netWeight);
-							}
-							let itemIds = items.map(item => item.id);
-							if (itemIds.indexOf(type.itemId) == -1) {
-								this.cleanItem(type);
-							}
-							type.items = items;
-							tempList.push(type);
-						}
-						this.itemTypeList = tempList;
-					},
 					showAddModal() {
 						this.car.visible = true;
 						this.car.form.carNo = '';
@@ -577,7 +434,7 @@
 							return;
 						}
 						this.car.list.splice(this.car.list.indexOf(data), 1);
-						this.filterItems();
+						// this.filterItems();
 					},
 					getGoods() {
 						sa.ajaxNoLoading('/TbGoods/getList', {
@@ -612,11 +469,20 @@
 										type.price = initItem.itemPrice;
 										type.itemId = initItem.itemId;
 										type.remark = initItem.remark;
-										type.itemName= initItem.itemName;
-										type.cabinetNo=initItem.cabinetNo
+										type.itemName = initItem.itemName;
+										type.cabinetNo = initItem.cabinetNo;
+										type.itemAlias = initItem.itemAlias;
+										type.coldStartTime = initItem.coldStartTime;
+										type.coldEndTime = initItem.coldEndTime;
+										type.cabinetType=initItem.cabinetType;
 									}
 								}
 							}
+							for(let i in list){
+								let type=list[i];
+								let cabinetTypeList=[{value:0,name:'存柜'},{value:1,name:'取柜'}];
+								type.cabinetTypeList=cabinetTypeList;
+							}
 							this.itemTypeList = list;
 							this.filterTypeList = JSON.parse(JSON.stringify(this.itemTypeList));
 							//this.filterItems();
@@ -678,16 +544,6 @@
 							sa.error('请录入车辆');
 							return false;
 						}
-						let needCarSize = goods.needCarSize;
-						let carList = this.car.list;
-						for (let i in carList) {
-							let car = carList[i];
-							if (needCarSize == 1 && !car.carSize) {
-								sa.error('请补充' + car.carNo + '规格');
-								return;
-							}
-
-						}
 					},
 					// 提交数据
 					ok: function() {
@@ -706,15 +562,6 @@
 							return false;
 						}
 						let carList = this.car.list;
-						let needCarSize = goods.needCarSize;
-						for (let i in carList) {
-							let car = carList[i];
-							if (needCarSize == 1 && !car.carSize) {
-								sa.error('请补充' + car.carNo + '规格');
-								return;
-							}
-
-						}
 						let typeList = this.itemTypeList;
 						let selectList = [];
 						for (let i in typeList) {
@@ -731,7 +578,11 @@
 									num: type.num,
 									price: type.price,
 									remark: type.remark,
-									cabinetNo:type.cabinetNo
+									cabinetNo: type.cabinetNo,
+									coldStartTime: type.coldStartTime,
+									coldEndTime: type.coldEndTime,
+									itemAlias: type.itemAlias,
+									cabinetType: type.cabinetType
 								}
 								selectList.push(obj);
 							}
@@ -783,7 +634,6 @@
 					},
 				},
 				mounted: function() {
-
 					this.getOtherBusinessById();
 					this.getCustomerList();
 					this.getItemType();
@@ -791,4 +641,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 22 - 6
sp-admin/sa-view/tb-business/tb-car-disincle-info.html

@@ -102,8 +102,8 @@
 									<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 name="司机姓名" prop="driverName"></sa-td>
+										<sa-td name="司机号码" prop="driverPhone" width=130></sa-td>
 										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
 										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
 										<el-table-column label="停车费">
@@ -135,23 +135,39 @@
 								</div>
 							</div>
 							<el-table :data="tableData" style="width: 100%;margin-top: 20px;">
-								<el-table-column prop="itemTypeName" label="业务类型" width="180">
+								<el-table-column prop="itemTypeName" label="业务类型">
 								</el-table-column>
-								<el-table-column prop="itemName" label="车型" width="180">
+								<el-table-column prop="itemName" label="车型" >
 								</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="cabinetNo" label="柜号">
-									
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="取/存">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetType==-1">-</label>
+										<label v-if="s.row.cabinetType==0">存柜</label>
+										<label v-if="s.row.cabinetType==1">取柜</label>
+									</template>
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="柜状态">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetStatus==0">未取</label>
+										<label v-if="s.row.cabinetStatus==1">已取</label>
+									</template>
 								</el-table-column>
 								<el-table-column prop="num" label="数量">
 								</el-table-column>
+								<el-table-column prop="coldStartTime" label="开始时间" width="160">
+								</el-table-column>
+								<el-table-column prop="coldEndTime" label="结束时间" width="160">
+								</el-table-column>
 								<el-table-column prop="total" label="合计">
 								</el-table-column>
 								<sa-td width="120" name="支付状态" prop="payStatus" type="enum"
-									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]', 4: '已退款[#ff0000]'}">
+									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]',3: '无需支付[#005500]', 4: '已退款[#ff0000]'}">
 								</sa-td>
 								<el-table-column prop="refundMoney" label="退款金额">
 								</el-table-column>

+ 20 - 4
sp-admin/sa-view/tb-business/tb-car-disincle-judge.html

@@ -102,8 +102,8 @@
 									<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 name="司机姓名" prop="driverName"></sa-td>
+										<sa-td name="司机号码" prop="driverPhone" width=130></sa-td>
 										<sa-td name="入场时间" prop="realInTime" width=180></sa-td>
 										<sa-td name="离场时间" prop="realOutTime" width=180></sa-td>
 										<el-table-column label="停车费">
@@ -144,14 +144,30 @@
 								<el-table-column prop="unit" label="计费标准">
 								</el-table-column>
 								<el-table-column prop="cabinetNo" label="柜号">
-									
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="取/存">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetType==-1">-</label>
+										<label v-if="s.row.cabinetType==0">存柜</label>
+										<label v-if="s.row.cabinetType==1">取柜</label>
+									</template>
+								</el-table-column>
+								<el-table-column prop="cabinetType" label="柜状态">
+									<template slot-scope="s">
+										<label v-if="s.row.cabinetStatus==0">未取</label>
+										<label v-if="s.row.cabinetStatus==1">已取</label>
+									</template>
+								</el-table-column>
+								<el-table-column prop="coldStartTime" label="开始时间" width="160">
+								</el-table-column>
+								<el-table-column prop="coldEndTime" label="结束时间" width="160">
 								</el-table-column>
 								<el-table-column prop="num" label="数量">
 								</el-table-column>
 								<el-table-column prop="total" label="合计">
 								</el-table-column>
 								<sa-td width="120" name="支付状态" prop="payStatus" type="enum"
-									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]', 4: '已退款[#ff0000]'}">
+									:jv="{0: '未支付[#ff0000]', 1: '已支付[#005500]',3: '无需支付[#005500]',  4: '已退款[#ff0000]'}">
 								</sa-td>
 								<el-table-column prop="refundMoney" label="退款金额">
 								</el-table-column>

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

@@ -114,13 +114,17 @@
 							<!-- <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> -->
-							
+
 							<!-- <el-button class="c-btn" type="primary" v-if="sa.isAuth('tb-business-confirm')
 									&&currentCustomerId=='1'&&s.row.adminConfirmInput==1" @click="checkConfirmFn(s.row)">查看账单
 							</el-button> -->
 							<el-button class="c-btn" type="success" @click="get(s.row)">查看</el-button>
-							<el-button class="c-btn" type="success" v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge!=1" @click="pass(s.row)">审核</el-button>
-							<el-button class="c-btn" type="warning" v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge==1" @click="callback(s.row)">驳回</el-button>
+							<el-button class="c-btn" type="success"
+								v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge!=1"
+								@click="pass(s.row)">审核</el-button>
+							<el-button class="c-btn" type="warning"
+								v-if="sa.isAuth('tb-flex-business-judge')&&s.row.confirmJudge==1"
+								@click="callback(s.row)">驳回</el-button>
 							<el-button class="c-btn" type="primary"
 								v-if="currentCustomerId=='1'||(s.row.adminConfirmInput==0&&sa.isAuth('tb-flex-business-edit'))"
 								@click="update(s.row)">
@@ -340,14 +344,15 @@
 					},
 					add: function(data) {
 						this.stopTimmer();
-						sa.showIframe('新增数据', 'tb-car-disincle-add.html?id=-1', '1080px', '90%');
+						sa.showIframe('新增数据', 'tb-car-disincle-add.html?id=-1', '90%', '90%');
 					},
 					update(data) {
-						if(data.confirmJudge==1){
+						if (data.confirmJudge == 1) {
 							sa.error('业务已审核,请驳回后修改')
 							return;
 						}
-						sa.showIframe('修改数据', 'tb-car-disincle-edit.html?id=' + data.id, '1080px', '90%');
+						this.stopTimmer();
+						sa.showIframe('修改数据', 'tb-car-disincle-edit.html?id=' + data.id, '90%', '90%');
 					},
 					getPcodeByCurrRid() {
 						this.stopTimmer();
@@ -382,7 +387,7 @@
 					},
 					// 删除
 					del: function(data) {
-						if(data.confirmJudge==1){
+						if (data.confirmJudge == 1) {
 							sa.error('业务已审核,无法删除')
 							return;
 						}
@@ -429,4 +434,4 @@
 			})
 		</script>
 	</body>
-</html>
+</html>

+ 5 - 5
sp-admin/sa-view/tb-charge-record/tb-charge-record-info.html

@@ -7,11 +7,11 @@
 		<!-- 所有的 css js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 		<style type="text/css">
 			.c-panel .c-label{width: 8em;}

+ 5 - 5
sp-admin/sa-view/tb-charge-record/tb-charge-record-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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/node_modules/crypto-js/crypto-js.js"></script>
 	</head>

+ 5 - 5
sp-admin/sa-view/tb-deduction-record/tb-deduction-record-error-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 		<style>
 			.all-btn {

+ 5 - 5
sp-admin/sa-view/tb-deduction-record/tb-deduction-record-list.html

@@ -8,11 +8,11 @@
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="https://unpkg.com/element-ui@2.13.0/lib/theme-chalk/index.css">
 		<link rel="stylesheet" href="../../static/sa.css">
-		<script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script>
-		<script src="https://unpkg.com/element-ui@2.13.0/lib/index.js"></script>
-		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
-		<script src="https://unpkg.com/jquery@3.4.1/dist/jquery.js"></script>
-		<script src="https://www.layuicdn.com/layer-v3.1.1/layer.js"></script>
+		<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>
 		<style>
 			.sum-div {

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

@@ -822,7 +822,7 @@ var sa = {
 		// 正则验证是否为手机号
 		me.isPhone = function(str) {
 			str = str + '';
-			if ((/^1[345678]\d{9}$/.test(str))) {
+			if ((/^1[3456789]\d{9}$/.test(str))) {
 				return true;
 			}
 			return false;

+ 2 - 4
sp-server/src/main/java/com/pj/api/wx/service/WxService.java

@@ -75,14 +75,12 @@ public class WxService {
     TbBusinessItemService tbBusinessItemService;
     @Resource
     TbFeeStatisticsService tbFeeStatisticsService;
-    @Resource
-    private TbAccountService tbAccountService;
+
     @Resource
     TbFeeDetailsService tbFeeDetailsService;
     @Resource
     private TbOrderService tbOrderService;
-    @Resource
-    private TbGoodsService tbGoodsService;
+
 
     @Resource
     private WxSendMsgService wxSendMsgService;

+ 24 - 0
sp-server/src/main/java/com/pj/current/config/MyConfig.java

@@ -66,5 +66,29 @@ public class MyConfig {
      * 停车费变量名
      */
     private String partItemAlias;
+    /**
+     * 充电打冷
+     */
+    private String coldItemAlias;
+    /**
+     * #空柜堆存
+     */
+    private String  emptyStoreItemAlias;
+    /**
+     * #重柜堆存
+     */
+    private String  heavyStoreItemAlias;
+    /**
+     *集装箱吊装 (重 柜 )
+     */
+    private String  heavyCondoleItemAlias;
+    /**
+     *集装箱吊装 (空 柜 )
+     */
+    private String  emptyCondoleItemAlias;
+    /**
+     * 大头车
+     */
+    private String  bigHeadCar;
 
 }

+ 2 - 0
sp-server/src/main/java/com/pj/project/sync/request/item/IFactorItem.java

@@ -1,8 +1,10 @@
 package com.pj.project.sync.request.item;
 
 import lombok.Data;
+import lombok.experimental.Accessors;
 
 @Data
+@Accessors(chain = true)
 public class IFactorItem {
 
     /**

+ 181 - 34
sp-server/src/main/java/com/pj/project/tb_business/TbBusinessService.java

@@ -354,8 +354,8 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             res.setOver24Hour(1);
             res.setHourDesc(PartFeeEnum.OUT_24_HOURS.getDesc());
         }
-        TbItem partItem=tbItemService.findByAliasName(SystemObject.config.getPartItemAlias());
-        if (partItem==null) {
+        TbItem partItem = tbItemService.findByAliasName(SystemObject.config.getPartItemAlias());
+        if (partItem == null) {
             throw new AjaxError("未配置停车费规则");
         }
         List<TbItemFac> list = tbItemFacService.getByItemId(partItem.getId());
@@ -398,7 +398,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
     }
 
 
-
     /**
      * 微信端获取缴费信息
      *
@@ -456,6 +455,9 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 if (CarEnum.PayTypeEnum.FEE_TYPE.getType().equals(tbBusinessCar.getPayType())) {
                     partMoney = new BigDecimal("0");
                 }
+                if (CarEnum.PayTypeEnum.HAS_PAY_TYPE.getType().equals(tbBusinessCar.getPayType())) {
+                    inTime=tbBusinessCar.getPayTime();
+                }
                 if (partMoney.doubleValue() == 1) {
                     IOrderPriceRes partPriceRes = getPartMoney(inTime, outTime, tbBusinessCar.getCarNo(), tbBusinessCar.getColor());
                     BigDecimal partPrice = partPriceRes.getTotalOrderPrice();
@@ -487,18 +489,30 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             //未支付的
             List<IOrderItem> expenses = new ArrayList<>();
             items = items.stream().filter(item -> item.getPayStatus() == 0).collect(Collectors.toList());
-            //如果不需要支付,则过滤掉入场管理费
-//            ManagerBO dto = needPayManagerMoney(carNo, businessCarId, items);
-//            if (dto.isNeed()) {
-//                result.put("manager", dto);
-//            }
-            items.forEach(item -> {
-                String num = item.getNum();
-                String itemCode = item.getItemCode();
+            for (TbBusinessItem businessItem : items) {
+                String num = businessItem.getNum();
+                String itemCode = businessItem.getItemCode();
                 IOrderItem iOrderItem = new IOrderItem();
+                String itemAlias = businessItem.getItemAlias();
+                Date startTime = businessItem.getColdStartTime();
+                Date endTime = businessItem.getColdEndTime();
                 iOrderItem.setExpenseNum(Integer.parseInt(num)).setUniqExpenseId(itemCode);
+                if (StrUtil.equals(itemAlias, SystemObject.config.getColdItemAlias())) {
+                    tbBusinessItemService.buildColdFceItem(businessItem, iOrderItem, startTime, endTime);
+                    //充电打冷--->按小时计费
+                } else if (StrUtil.equals(itemAlias, SystemObject.config.getHeavyStoreItemAlias())
+                        || StrUtil.equals(itemAlias, SystemObject.config.getEmptyStoreItemAlias())) {
+                    //空柜堆存、重箱堆存--->按天算
+                    //如果存柜的话则不收费
+                    if (businessItem.getCabinetType() == 0) {
+                        continue;
+                    }
+                    tbBusinessItemService.buildDaysFceItem(businessItem, iOrderItem, startTime, endTime);
+                }else if (StrUtil.equals(itemAlias,SystemObject.config.getBigHeadCar())){
+                    tbBusinessItemService .buildDaysFceItem(businessItem, iOrderItem, startTime, endTime);
+                }
                 expenses.add(iOrderItem);
-            });
+            }
             if (!expenses.isEmpty()) {
                 IOrderPriceRes orderPriceRes = syncService.orderPriceCal(expenses);
                 BigDecimal totalPrice = orderPriceRes.getTotalOrderPrice();
@@ -656,17 +670,27 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         for (TbItem tbItem : tbItems) {
             TbItem db = tbItemService.getById(tbItem.getId());
             String itemName = db.getItemName();
+            String alaisName = db.getItemAlias();
             TbBusinessItem item = new TbBusinessItem();
+            int cabinetType = tbItem.getCabinetType();
+            if (!SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                    && !SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                cabinetType = -1;
+            }
             int num = tbItem.getNum();
             String typeId = tbItem.getTypeId();
             TbItemType tbItemType = tbItemTypeService.getById(typeId);
-            BigDecimal itemTotalPrice = tbItem.getPrice().multiply(new BigDecimal(num));
-            item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName()).setPayType(db.getPayType())
+            BigDecimal itemTotalPrice = db.getPrice().multiply(new BigDecimal(num));
+            item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName())
+                    .setPayType(db.getPayType())
                     .setBusinessType(db.getBusinessType()).setTaxRate(NumberUtil.div(db.getTaxRate().doubleValue(), 100D, 2));
-            item.setItemCode(db.getItemCode()).setNum(num + "").setItemId(db.getId()).setCabinetNo(tbItem.getCabinetNo())
+            item.setItemCode(db.getItemCode()).setNum(num + "")
+                    .setItemId(db.getId()).setCabinetType(cabinetType)
+                    .setCabinetNo(tbItem.getCabinetNo()).setColdStartTime(tbItem.getColdStartTime())
                     .setItemName(db.getItemName()).setItemPrice(db.getPrice()).setRemark(tbItem.getRemark())
-                    .setItemTypeId(typeId).setItemTypeName(tbItemType.getName())
-                    .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now);
+                    .setItemTypeId(typeId).setItemTypeName(tbItemType.getName()).setItemAlias(tbItem.getItemAlias())
+                    .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now)
+                    .setColdStartTime(tbItem.getColdStartTime());
             if (partner != null) {
                 item.setPick(1).setPickCustomerId(pickCustomerId).setPickCustomerName(partner.getName())
                         .setPickBy(StpUserUtil.getCreateBy()).setPickTime(now);
@@ -674,6 +698,57 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             if (SystemObject.config.getEveryCarPay().contains(itemName)) {
                 itemTotalPrice = itemTotalPrice.multiply(BigDecimal.valueOf(size));
             }
+            //堆存业务
+            if (SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                    || SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                //取柜--->根据柜号查询上一个存柜时间
+                TbBusinessItem tbBusinessItem = tbBusinessItemService.findTheLastRecordByCabinetNo(tbItem.getCabinetNo());
+                //堆存---》取柜
+                if (cabinetType == 1) {
+                    if (tbBusinessItem == null) {
+                        throw new AjaxError("根据柜号" + tbItem.getCabinetNo() + "找不到堆存记录");
+                    }
+                    //已经取走
+                    if (tbBusinessItem.getCabinetStatus() == 1) {
+                        throw new AjaxError("柜号" + tbItem.getCabinetNo() + "已取走");
+                    }
+                    Date endTime = tbItem.getColdStartTime();
+                    if (endTime == null) {
+                        throw new AjaxError("请输入取柜时间");
+                    }
+                    item.setColdStartTime(tbBusinessItem.getColdStartTime())
+                            .setParentCabinetId(tbBusinessItem.getId())
+                            .setColdEndTime(endTime)
+                            .setCabinetStatus(1);
+                    tbBusinessItem.setColdEndTime(endTime)
+                            .setCabinetStatus(1);
+                    tbBusinessItemService.updateById(tbBusinessItem);
+                } else {
+                    //存柜
+                    if (tbBusinessItem != null && tbBusinessItem.getCabinetStatus() == 0) {
+                        throw new AjaxError("柜号" + tbItem.getCabinetNo() + "已存柜未取柜");
+                    }
+                    Date endTime = tbItem.getColdStartTime();
+                    if (endTime == null) {
+                        throw new AjaxError("请输入存柜时间");
+                    }
+                    //业务费xxx都为0;
+                    BigDecimal zero = BigDecimal.ZERO;
+                    item.setColdStartTime(endTime).setItemPrice(zero)
+                            .setTotal(zero).setPayStatus(1).setPayTime(now);
+                    //无需支付
+                    item.setPayStatus(3);
+                    itemTotalPrice = zero;
+                }
+            }
+            Date startTime = item.getColdStartTime();
+            Date endTime = item.getColdEndTime();
+            if (startTime != null && endTime != null) {
+                List<IOrderItem> expenses = new ArrayList<>();
+                tbBusinessItemService.buildExpenses(Collections.singletonList(item), expenses);
+                IOrderPriceRes res = syncService.orderPriceCal(expenses);
+                item.setTotal(res.getTotalOrderPrice());
+            }
             price = price.add(itemTotalPrice);
             itemList.add(item);
             index++;
@@ -693,9 +768,6 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         for (TbBusinessCar car : cars) {
             String carNo = car.getCarNo().trim().toUpperCase();
             String carType = car.getCarType();
-            if (car.getCarSize() == null || car.getCarSize() <= 0) {
-                throw new AjaxError(carNo + "规格不正确");
-            }
             if (StrUtil.isEmpty(carType)) {
                 throw new BusinessException(carNo + "类型不能为空");
             }
@@ -732,6 +804,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             db.setCarNo(carNo).setIsLock(0).setBusinessType(CarEnum.BusinessTypeEnum.BUSINESS_CAR.getType());
             db.setCarSize(car.getCarSize()).setConfirmJudge(CarEnum.ConfirmJudgeEnum.NO_JUDGE.getCode())//业务车都是未审核状态
                     .setTimeUpdate(now).setCarType(car.getCarType())
+                    .setDriverName(car.getDriverName()).setDriverPhone(car.getDriverPhone())
                     .setNetWeight(car.getNetWeight()).setColor(car.getColor())
                     .setCustomerId(customerId)
                     .setNo(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4));
@@ -788,6 +861,13 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
         String carBuseinssNo = DateUtil.format(now, "yyyyMMddHHmm");
         List<TbBusinessItem> itemList = new ArrayList<>();
         if (PayEnum.PayStatusEnum.HAS_PAY_CONFIRM.getCode() != dbBusiness.getPayStatus()) {
+            List<TbBusinessItem> businessItemList = tbBusinessItemService.findByBusinessId(id);
+            //变成未取柜状态
+            businessItemList.stream().filter(item -> item.getParentCabinetId() != null).forEach(item -> {
+                TbBusinessItem tbBusinessItem = tbBusinessItemService.getById(item.getParentCabinetId());
+                tbBusinessItem.setCabinetStatus(0).setColdEndTime(null);
+                tbBusinessItemService.updateById(tbBusinessItem);
+            });
             tbBusinessItemService.removeByBusinessId(id);
             BigDecimal price = new BigDecimal("0");
             String no = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")) + RandomUtil.randomNumbers(4);
@@ -801,19 +881,26 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
             int size = cars.size();
             for (TbItem tbItem : tbItems) {
                 TbItem db = tbItemService.getById(tbItem.getId());
+                String alaisName = db.getItemAlias();
+                int cabinetType = tbItem.getCabinetType();
+                if (!SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                        && !SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                    cabinetType = -1;
+                }
                 String itemName = db.getItemName();
                 TbBusinessItem item = new TbBusinessItem();
                 int num = tbItem.getNum();
                 TbItemType tbItemType = tbItemTypeService.getById(tbItem.getTypeId());
-                BigDecimal itemTotalPrice = tbItem.getPrice().multiply(new BigDecimal(num));
-
+                BigDecimal itemTotalPrice = db.getPrice().multiply(new BigDecimal(num));
                 item.setNo(no + "0" + index).setPayTypeName(db.getPayTypeName()).setPayType(db.getPayType())
                         .setBusinessType(db.getBusinessType()).setTaxRate(NumberUtil.div(db.getTaxRate().doubleValue(), 100D, 2));
                 item.setItemCode(db.getItemCode()).setNum(num + "").setItemId(db.getId()).setBusinessId(dbBusiness.getId())
                         .setItemName(db.getItemName()).setItemPrice(db.getPrice()).setRemark(tbItem.getRemark())
                         .setItemTypeId(tbItem.getTypeId()).setItemTypeName(tbItemType.getName())
-                        .setCabinetNo(tbItem.getCabinetNo())
-                        .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now);
+                        .setCabinetNo(tbItem.getCabinetNo()).setItemAlias(tbItem.getItemAlias())
+                        .setUnit(db.getUnit()).setTotal(itemTotalPrice).setCreateTime(now)
+                        .setCabinetType(cabinetType)
+                        .setColdStartTime(tbItem.getColdStartTime()).setColdEndTime(tbItem.getColdEndTime());
                 if (partner != null) {
                     item.setPick(1).setPickCustomerId(pickCustomerId).setPickCustomerName(partner.getName())
                             .setPickBy(StpUserUtil.getCreateBy()).setPickTime(now);
@@ -821,6 +908,52 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                 if (SystemObject.config.getEveryCarPay().contains(itemName)) {
                     itemTotalPrice = itemTotalPrice.multiply(BigDecimal.valueOf(size));
                 }
+
+                Date startTime = item.getColdStartTime();
+                Date endTime = item.getColdEndTime();
+                if (startTime != null && endTime != null) {
+                    List<IOrderItem> expenses = new ArrayList<>();
+                    tbBusinessItemService.buildExpenses(Collections.singletonList(item), expenses);
+                    if (!expenses.isEmpty()){
+                        IOrderPriceRes res = syncService.orderPriceCal(expenses);
+                        item.setTotal(res.getTotalOrderPrice());
+                        itemTotalPrice = res.getTotalOrderPrice();
+                    }
+                }
+                //堆存业务
+                if (SystemObject.config.getEmptyStoreItemAlias().equals(alaisName)
+                        || SystemObject.config.getHeavyStoreItemAlias().equals(alaisName)) {
+                    //取柜--->根据柜号查询上一个存柜时间
+                    TbBusinessItem tbBusinessItem = tbBusinessItemService.findTheLastRecordByCabinetNo(tbItem.getCabinetNo());
+                    //堆存
+                    if (cabinetType == 1) {
+                        if (tbBusinessItem == null) {
+                            throw new AjaxError("根据柜号" + tbItem.getCabinetNo() + "找不到堆存记录");
+                        }
+                        if (endTime == null) {
+                            throw new AjaxError("请输入取柜时间");
+                        }
+                        item.setColdStartTime(tbBusinessItem.getColdStartTime())
+                                .setParentCabinetId(tbBusinessItem.getId())
+                                .setColdEndTime(endTime);
+                        tbBusinessItem.setColdEndTime(endTime)
+                                .setCabinetStatus(1);
+                        tbBusinessItemService.updateById(tbBusinessItem);
+                    } else {
+                        if (startTime == null) {
+                            throw new AjaxError("请输入存柜时间");
+                        }
+                        //业务费xxx都为0;
+                        BigDecimal zero = BigDecimal.ZERO;
+                        item.setColdStartTime(endTime).setItemPrice(zero)
+                                .setTotal(zero).setPayStatus(1).setPayTime(now);
+                        itemTotalPrice = zero;
+                        item.setColdStartTime(startTime);
+                        //无需支付
+                        item.setPayStatus(3);
+                    }
+                }
+
                 price = price.add(itemTotalPrice);
                 itemList.add(item);
                 index++;
@@ -1506,6 +1639,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
     /**
      * 审核通过
+     *
      * @param id
      */
     public void confirmJudgePass(String id) {
@@ -1540,20 +1674,26 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                         item.setPayTime(now).setPayStatus(1).setPayType(PayEnum.PayType.PER_PAY.getCode())
                                 .setPayTypeName(PayEnum.PayType.PER_PAY.getDesc());
                         tbBusinessItemService.updateById(item);
-                        tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney()));
+                        tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney())).setPayTime(now);
                         BigDecimal afterBalance = balance.subtract(price);
                         tbAccount.setTotalMoney(afterBalance);//增加累计扣款
                         tbAccountService.updateById(tbAccount);
                         TbFeeDetails details = tbFeeDetailsService.savePrePayDetails(res, item, tbBusinessCar, tbBusiness, FeeTypeEnum.STEVEDORE_FEE);
                         tbFeeStatisticsService.addOrUpdateStatistic(now, PayEnum.PayType.PER_PAY.getCode());//更新当前日期的日统计
-                        TbDeductionRecord record=  automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
-                        addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(),details,record);
+                        TbDeductionRecord record = automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
+                        addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(), details, record);
                     }
                 }
             }
         }
         //其他费项 装卸业务管理费” 进行预存款扣除
         for (TbBusinessItem item : tbBusinessItems) {
+            String aliasName = item.getItemAlias();
+            if (StrUtil.equals(aliasName, SystemObject.config.getColdItemAlias())) {
+                if (item.getColdStartTime() == null || item.getColdEndTime() == null) {
+                    throw new AjaxError("请先录入打冷开始/结束时间");
+                }
+            }
             //业务类型是装卸业务管理费且未支付的进行扣款
             if (item.getPayStatus() == 0 && SystemObject.config.getUnLoadItem().contains(item.getItemTypeName())) {
                 List<IOrderItem> expenses = new ArrayList<>();
@@ -1573,29 +1713,35 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
                     item.setPayTime(now).setPayStatus(1).setPayType(PayEnum.PayType.PER_PAY.getCode())
                             .setPayTypeName(PayEnum.PayType.PER_PAY.getDesc());
                     tbBusinessItemService.updateById(item);
-                    tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney()));
-                    //查找越南车--->统计以
-                    TbBusinessCar tbBusinessCar = tbBusinessCars.stream().filter(car -> !CAR_LIST.contains(car.getCarNo().substring(0, 1)))
+                    tbBusiness.setPayMoney(price.add(tbBusiness.getPayMoney())).setPayTime(now);
+                    //查找越南车--->统计以--->重车对集装箱吊装 (重 柜 ) =====空车 vs 集装箱吊装 (空 柜 )
+                    String itemAlias = item.getItemAlias();
+                    TbBusinessCar tbBusinessCar = tbBusinessCars.stream().filter(car -> car.getCarType().equals(CarEnum.CarTypeEnum.EMPTY_TYPE.getType()))
                             .findAny().orElse(tbBusinessCars.get(0));
+                    if (StrUtil.equals(itemAlias, SystemObject.config.getHeavyCondoleItemAlias())) {
+                        tbBusinessCar = tbBusinessCars.stream().filter(car -> car.getCarType().equals(CarEnum.CarTypeEnum.WEIGHT_TYPE.getType()))
+                                .findAny().orElse(tbBusinessCars.get(0));
+                    }
                     TbFeeDetails details = tbFeeDetailsService.savePrePayDetails(res, item, tbBusinessCar, tbBusiness, FeeTypeEnum.STEVEDORE_FEE);
                     tbFeeStatisticsService.addOrUpdateStatistic(now, PayEnum.PayType.PER_PAY.getCode());//更新当前日期的日统计
-                    TbDeductionRecord record=  automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
-                    addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(),details,record);
+                    TbDeductionRecord record = automaticPay.createTbDeductionRecord(details, balance, afterBalance, tbBusiness.getPickCustomerId(), tbBusiness.getPickCustomerName(), tbBusinessCar.getCarNo(), tbBusinessCar.getId(), FeeTypeEnum.STEVEDORE_FEE);
+                    addInvoiceOrder(tbBusiness, res.getTotalOrderPrice(), details, record);
                 }
             }
         }
         tbBusiness.setConfirmJudgeTime(now).setConfirmJudgeContent("审核通过")
                 .setConfirmJudge(CarEnum.ConfirmJudgeEnum.JUDGE_PASS.getCode())
-                .setJudgeBy(StpUserUtil.getCreateBy()).setPayTime(now);
+                .setJudgeBy(StpUserUtil.getCreateBy());
         this.updateById(tbBusiness);
     }
 
     /**
      * 添加开票订单
+     *
      * @param tbBusiness
      * @param billMoney
      */
-    private void addInvoiceOrder(TbBusiness tbBusiness, BigDecimal billMoney,TbFeeDetails details,TbDeductionRecord record) {
+    private void addInvoiceOrder(TbBusiness tbBusiness, BigDecimal billMoney, TbFeeDetails details, TbDeductionRecord record) {
         TbInvoiceOrder t = new TbInvoiceOrder();
         t.setBusinessName(tbBusiness.getGoodsName())
                 .setBusinessNo(tbBusiness.getNo())
@@ -1611,6 +1757,7 @@ public class TbBusinessService extends ServiceImpl<TbBusinessMapper, TbBusiness>
 
     /**
      * 审核驳回
+     *
      * @param id
      * @param judgeContent
      */

+ 25 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItem.java

@@ -141,6 +141,31 @@ public class TbBusinessItem extends Model<TbBusinessItem> implements Serializabl
 	private String refundBy;
 	private BigDecimal refundMoney=BigDecimal.ZERO;
 	private Date refundTime;
+	/**
+	 * 费项别名
+	 */
+	private String itemAlias;
+	/**
+	 * 打冷开始时间
+	 */
+	private Date coldStartTime;
+	/**
+	 * 打冷结束时间
+	 */
+	private Date coldEndTime;
+	/**
+	 * 0存柜 1 取柜
+	 */
+	private int cabinetType=0;
+	/**
+	 * 0未取柜,1已取
+	 */
+	private int cabinetStatus=0;
+	/**
+	 *
+	 */
+	private Long parentCabinetId;
+
 
 	@TableField(exist = false)
 	private String goodsName;

+ 75 - 5
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java

@@ -1,6 +1,7 @@
 package com.pj.project.tb_business_item;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
@@ -13,9 +14,11 @@ import com.pj.api.wx.service.WxService;
 import com.pj.constants.UserTypeEnum;
 import com.pj.constants.business.PayEnum;
 import com.pj.current.config.MyConfig;
+import com.pj.current.config.SystemObject;
 import com.pj.current.config.WxConfig;
 import com.pj.current.satoken.StpUserUtil;
 import com.pj.current.task.TaskService;
+import com.pj.project.sync.request.item.IFactorItem;
 import com.pj.project.sync.request.item.IOrderItem;
 import com.pj.project.tb_business.TbBusiness;
 import com.pj.project.tb_business.TbBusinessService;
@@ -25,10 +28,13 @@ import com.pj.project.tb_fee_details.TbFeeDetails;
 import com.pj.project.tb_fee_details.TbFeeDetailsService;
 import com.pj.project.tb_item.TbItem;
 import com.pj.project.tb_item.TbItemService;
+import com.pj.project.tb_item_fac.TbItemFac;
+import com.pj.project.tb_item_fac.TbItemFacService;
 import com.pj.project.tb_item_type.TbItemType;
 import com.pj.project.tb_item_type.TbItemTypeService;
 import com.pj.project4sp.admin.SpAdmin;
 import com.pj.project4sp.admin.SpAdminService;
+import com.pj.project4sp.global.BusinessException;
 import com.pj.project4sp.uploadfile.UploadUtil;
 import com.pj.utils.sg.AjaxError;
 import com.pj.utils.sg.AjaxJson;
@@ -47,6 +53,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -88,6 +95,9 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
     @Resource
     private TbItemTypeService tbItemTypeService;
 
+    @Resource
+    private TbItemFacService tbItemFacService;
+
 
     /**
      * 查集合 - 根据条件(参数为空时代表忽略指定条件)
@@ -297,12 +307,72 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
      * @return
      */
     public void buildExpenses(List<TbBusinessItem> businessItems, List<IOrderItem> orderItems) {
-        businessItems
-                .stream().filter(item -> item.getPayStatus()==0)
-                .forEach(item -> {
+        businessItems = businessItems
+                .stream().filter(item -> item.getPayStatus() == 0).collect(Collectors.toList());
+        for (TbBusinessItem item : businessItems) {
             IOrderItem orderItem = new IOrderItem();
-            orderItem.setUniqExpenseId(item.getItemCode()).setExpenseNum(Integer.parseInt(item.getNum()));
+            String itemAlias = item.getItemAlias();
+            Date startTime = item.getColdStartTime();
+            Date endTime = item.getColdEndTime();
+            if (StrUtil.equals(itemAlias, SystemObject.config.getColdItemAlias())) {
+                buildColdFceItem(item, orderItem, startTime, endTime);
+                //充电打冷--->按小时计费
+            } else if (StrUtil.equals(itemAlias, SystemObject.config.getHeavyStoreItemAlias())
+                    || StrUtil.equals(itemAlias, SystemObject.config.getEmptyStoreItemAlias())) {
+                //如果存柜的话则不收费
+                if (item.getCabinetType()==0){
+                    continue;
+                }
+                //空柜堆存、重箱堆存
+                buildDaysFceItem(item, orderItem, startTime, endTime);
+            }else if (StrUtil.equals(itemAlias,SystemObject.config.getBigHeadCar())){
+                buildDaysFceItem(item, orderItem, startTime, endTime);
+            }
+            orderItem.setUniqExpenseId(item.getItemCode())
+                    .setExpenseNum(Integer.parseInt(item.getNum()));
             orderItems.add(orderItem);
-        });
+        }
     }
+
+    public void buildDaysFceItem(TbBusinessItem item, IOrderItem orderItem, Date startTime, Date endTime) {
+        String uniqExpenseId = item.getItemCode();
+        TbItemFac tbItemFac = tbItemFacService.findByItemIdAndUniqExpenseId(item.getItemId(), uniqExpenseId);
+        if (tbItemFac == null) {
+            throw new BusinessException("收费规则未配置");
+        }
+        if (startTime == null || endTime == null) {
+            throw new BusinessException("时间未设置");
+        }
+        long hour = DateUtil.between(startTime, endTime, DateUnit.HOUR);
+        long days = (hour / 24) + 1;
+        IFactorItem factorItem = new IFactorItem();
+        factorItem.setFacId(tbItemFac.getFacId() + "").setFacParams(days + "");
+        orderItem.setFactors(Collections.singletonList(factorItem));
+    }
+
+    public void buildColdFceItem(TbBusinessItem item, IOrderItem orderItem, Date startTime, Date endTime) {
+        String uniqExpenseId = item.getItemCode();
+        TbItemFac tbItemFac = tbItemFacService.findByItemIdAndUniqExpenseId(item.getItemId(), uniqExpenseId);
+        if (tbItemFac == null) {
+            throw new BusinessException("充电打冷收费规则未配置");
+        }
+        if (startTime == null || endTime == null) {
+            throw new BusinessException("充电打冷时间未设置");
+        }
+        long hour = DateUtil.between(startTime, endTime, DateUnit.HOUR) + 1;
+        IFactorItem factorItem = new IFactorItem();
+        factorItem.setFacId(tbItemFac.getFacId() + "").setFacParams(hour + "");
+        orderItem.setFactors(Collections.singletonList(factorItem));
+
+    }
+
+    public TbBusinessItem findTheLastRecordByCabinetNo(String cabinetNo) {
+        QueryWrapper<TbBusinessItem> ew = new QueryWrapper<>();
+        ew.lambda().eq(TbBusinessItem::getCabinetNo, cabinetNo)
+                .orderByDesc(TbBusinessItem::getId);
+        List<TbBusinessItem> list = list(ew);
+        return list.isEmpty() ? null : list.get(0);
+    }
+
+
 }

+ 4 - 3
sp-server/src/main/java/com/pj/project/tb_fee_details/TbFeeDetailsService.java

@@ -328,20 +328,21 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
     public TbFeeDetails savePrePayDetails(IOrderPriceRes res, TbBusinessItem item, TbBusinessCar tbBusinessCar, TbBusiness business, FeeTypeEnum feeTypeEnum){
         Integer feeType =feeTypeEnum.getCode();
         Double taxRate = item.getTaxRate();
+        BigDecimal totalPrice=res.getTotalOrderPrice();
         Date now=new Date();
         //添加此item的收费明细
         TbFeeDetails businessFeeDetail = new TbFeeDetails();
         businessFeeDetail.setTaxRate(BigDecimal.valueOf(taxRate));
-        BigDecimal taxPrice = item.getTotal()
+        BigDecimal taxPrice = totalPrice
                 .divide(BigDecimal.valueOf(1).add(businessFeeDetail.getTaxRate()), 2, BigDecimal.ROUND_HALF_UP)
                 .multiply(businessFeeDetail.getTaxRate());
         taxPrice = taxPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
-        BigDecimal noTaxPrice = item.getTotal().subtract(taxPrice);
+        BigDecimal noTaxPrice = totalPrice.subtract(taxPrice);
         noTaxPrice = noTaxPrice.setScale(2, BigDecimal.ROUND_HALF_UP);
         businessFeeDetail.setBusinessId(item.getBusinessId()).setBusinessNo(business.getNo())
                 .setBusinessItemNo(item.getNo()).setBusinessCarId(tbBusinessCar.getId()).setBusinessCarNo(tbBusinessCar.getCarNo())
                 .setCarNo(tbBusinessCar.getCarNo()).setCalculateId(res.getCalculateId())
-                .setItemPrice(item.getTotal()).setUnitPrice(item.getItemPrice()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
+                .setItemPrice(totalPrice).setUnitPrice(item.getItemPrice()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
                 .setFeeType(feeType)
                 .setItemTypeId(item.getItemTypeId()).setItemTypeName(item.getItemTypeName())
                 .setItemId(item.getItemId()).setItemName(item.getItemName())

+ 10 - 4
sp-server/src/main/java/com/pj/project/tb_item/TbItem.java

@@ -12,10 +12,7 @@ import lombok.experimental.Accessors;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Model: tb_item -- 作业配置项
@@ -96,6 +93,15 @@ public class TbItem extends Model<TbItem> implements Serializable {
     @TableField(exist = false)
     private String cabinetNo;
 
+    @TableField(exist = false)
+    private int cabinetType=-1;
+
+    @TableField(exist = false)
+    private Date coldStartTime;
+
+    @TableField(exist = false)
+    private Date coldEndTime;
+
 
 
     @TableField(exist = false)

+ 6 - 10
sp-server/src/main/java/com/pj/project/tb_item_fac/TbItemFacService.java

@@ -57,16 +57,12 @@ public class TbItemFacService extends ServiceImpl<TbItemFacMapper, TbItemFac> im
         this.remove(ew);
     }
 
-    /**
-     * 根据车长查询规则
-     * @param carSize
-     * @return
-     */
-    public TbItemFac getPartFac(double carSize) {
+
+
+    public TbItemFac findByItemIdAndUniqExpenseId(String itemId, String uniqExpenseId) {
         QueryWrapper<TbItemFac> ew = new QueryWrapper<>();
-        ew.lambda().le(TbItemFac::getMinRange, carSize)
-                .ge(TbItemFac::getMaxRange, carSize);
-        List<TbItemFac> list = this.list(ew);
-        return list.isEmpty() ? null : list.get(0);
+        ew.lambda().eq(TbItemFac::getItemId, itemId)
+                .eq(TbItemFac::getUniqueExpenseId, uniqExpenseId);
+        return getOne(ew);
     }
 }

+ 6 - 0
sp-server/src/main/resources/application-dev.yml

@@ -55,6 +55,12 @@ spring:
         un-load-item: "装卸业务管理费"  #装卸管理费
         every-car-pay: "人工、机械装卸车辆"  #每辆车都收费
         part-item-alias: partItem #停车费变量名
+        cold-item-alias: coldTruck #冷链车--->充电打冷
+        empty-store-item-alias: emptyStore #空柜堆存
+        heavy-store-item-alias: heavyStore #重柜堆存
+        empty-condole-item-alias: emptyCondole #集装箱吊装 (重 柜 )
+        heavy-condole-item-alias: heavyCondole    #集装箱吊装 (空 柜 )
+        big-head-car: bigHeadCar #大头车 --->按天收费
 part-config:
     base-price: 30 #基础费用
     extra-price: 10 #过夜额外收费