qzyReal 3 năm trước cách đây
mục cha
commit
d43e0e313a
2 tập tin đã thay đổi với 239 bổ sung124 xóa
  1. 126 124
      sp-admin/sa-view/tb-business/tb-business-edit.html
  2. 113 0
      sp-server/logs/pco/log_info.log

+ 126 - 124
sp-admin/sa-view/tb-business/tb-business-edit.html

@@ -67,39 +67,33 @@
 											</el-select>
 										</div>
 										<div class="c-item">
-											<label class="c-label">境外车牌号:</label>
-											<el-autocomplete v-model="m.cardNo" @select="handleSelectCar"
-												value-key='cardNo' :fetch-suggestions="queryCarAsync">
-											</el-autocomplete>
-										</div>
-										<sa-item type="num" name="境外车规格" placeholder="单位(米)" v-model="m.cardSize" br>
-										</sa-item>
-										<!-- 									<div class="c-item">
-											<label class="c-label">国籍:</label>
-											<el-select v-model="m.countryName" placeholder="请选择">
-												<el-option v-for="item in countryList" :key="item.name"
-													:label="item.name" :value="item.name">
-												</el-option>
-											</el-select>
-										</div> -->
-										<div class="c-item">
 											<label class="c-label">运输货品:</label>
-											<el-select v-model="m.goodsName" placeholder="请选择">
+											<el-select v-model="m.goodsName" placeholder="请选择" @change="goodsChange">
 												<el-option v-for="item in goodsList" :key="item.id" :label="item.name"
 													:value="item.name">
 												</el-option>
 											</el-select>
 										</div>
-										<sa-item type="num" name="载重(吨)" v-model="m.netWeight" br></sa-item>
+										<sa-item type="text" name="境外车牌号" placeholder="请输入境外车牌号" v-model="m.cardNo" br>
+										</sa-item>
+										</sa-item>
 										<div class="c-item">
-											<label class="c-label">中国车牌:</label>
-											<el-autocomplete v-model="m.chinaCarNo" @select="handleSelectChinaCar"
-												value-key='cardNo' :fetch-suggestions="queryCarAsync">
+											<label class="c-label">境外车规格:</label>
+											<el-autocomplete v-model="m.cardSize" placeholder="请输入车规格"
+												@select="handleSelectCarSize" value-key='unit'
+												:fetch-suggestions="queryCaSizerAsync">
 											</el-autocomplete>
 										</div>
-										<sa-item type="text" name="中国司机" v-model="m.driverName" br></sa-item>
-										<sa-item type="text" name="联系号码" v-model="m.driverPhone" br></sa-item>
-										<sa-item type="datetime" name="预计入场" v-model="m.expectInDay" br></sa-item>
+										<sa-item type="num" name="载重(吨)" placeholder="请输入车辆载重" v-model="m.netWeight" br>
+										</sa-item>
+										<sa-item type="text" name="中国车牌" placeholder="请输入中国车牌" v-model="m.chinaCarNo"
+											br></sa-item>
+										<sa-item type="text" name="中国司机" placeholder="请输入中国车司机" v-model="m.driverName"
+											br></sa-item>
+										<sa-item type="text" name="联系号码" placeholder="请输入联系号码" v-model="m.driverPhone"
+											br></sa-item>
+										<sa-item type="datetime" name="预计入场" placeholder="请选择" v-model="m.expectInDay"
+											br></sa-item>
 									</div>
 								</el-card>
 							</el-col>
@@ -110,15 +104,18 @@
 										<span>业务项</span>
 									</div>
 									<div>
-										<el-form-item v-for="(type,index) in itemTypeList" :label="type.name"
-											style="display: flex;">
+										<el-form-item v-for="(type,index) in filterTypeList" style="display: flex;"
+											v-if="filterTypeList.length>0">
+											<label slot="label"><label v-if="needTypeId.indexOf(type.id)!==-1"
+													style="color: red;">*</label>{{type.name}}</label>
 											<el-select v-model="type.itemId" style="width: 120px;" placeholder="请选择">
 												<el-option v-for="item in type.items" :key="item.id"
 													:label="item.itemName" :value="item.id">
 												</el-option>
 											</el-select>
 											<el-input-number style="margin-left: 60px;" class="item-num"
-												v-model="type.num" :min="1" :max="10" size="mini"></el-input-number>
+												v-model="type.num" :min="1" :max="10" size="mini"
+												:disabled="type.inc==0"></el-input-number>
 											<div class="xj" v-if="type.itemId">
 												{{type.items.filter(obj=>obj.id==type.itemId)[0].price*type.num}}元
 												<label @click="type.itemId=''"
@@ -126,8 +123,11 @@
 														class="el-icon-delete"></i>)</label>
 											</div>
 											<el-button v-if="type.code=='p09'&&type.itemId"
-												@click="addPeopleFn(type.itemId,true)">操作</el-button>
+												@click="addPeopleFn(type.itemId,type.num,true)">操作</el-button>
 										</el-form-item>
+										<div v-if="filterTypeList.length==0" style="height: 400px;padding: 30px;">
+											请先选择运输货品
+										</div>
 										<div class="hj" v-if="totalPrice>0">
 											合计费用:{{totalPrice}}<label>元</label>
 										</div>
@@ -149,7 +149,8 @@
 				<el-card class="box-card">
 					<div slot="header">
 						<span>列表</span>
-						<el-button style="float: right;" icon="el-icon-plus" type="primary" @click="showAddModal">添加
+						<el-button style="float: right;" icon="el-icon-plus" type="primary" @click="showAddModal"
+							v-if="modal.list.length<modal.num">添加
 						</el-button>
 					</div>
 					<el-table :data="modal.list">
@@ -175,8 +176,8 @@
 			<el-dialog title="人员核酸检测" :visible.sync="addModal.visible" width="400">
 				<span>
 					<el-form label-position="left">
-						<sa-item type="text" name="姓名" v-model="addModal.form.name" br></sa-item>
-						<sa-item type="text" name="联系号码" v-model="addModal.form.phone" br></sa-item>
+						<sa-item type="text" name="姓名" placeholder="姓名" v-model="addModal.form.name" br></sa-item>
+						<sa-item type="text" name="联系号码" placeholder="联系号码" v-model="addModal.form.phone" br></sa-item>
 					</el-form>
 				</span>
 				<span slot="footer" class="dialog-footer">
@@ -216,6 +217,7 @@
 					driverList: [],
 					currentCustomerId: 1,
 					itemTypeList: [],
+					filterTypeList: [],
 					goodsList: [],
 					countryList: [{
 						name: '越南车'
@@ -226,6 +228,7 @@
 					modal: {
 						visible: false,
 						itemId: 4,
+						num: 1,
 						list: []
 					},
 					addModal: {
@@ -236,7 +239,9 @@
 							itemId: 4,
 							ticket: ''
 						}
-					}
+					},
+					unitList: [],
+					needTypeId: []
 				},
 				computed: {
 					totalPrice() {
@@ -258,7 +263,21 @@
 					}
 				},
 				methods: {
-					addPeopleFn(itemId,show) {
+					goodsChange(value) {
+						let goods = this.goodsList.filter(obj => obj.name === value).pop();
+						let noNeedIds = goods.noNeedIds.split(',');
+						this.needTypeId = goods.needIds.split(',');
+						this.filterTypeList = this.itemTypeList.filter(type => noNeedIds.indexOf(type.id) === -1);
+					},
+					getUnitList() {
+						sa.ajax('/TbUnit/getList', {
+							pageNo: 1,
+							pageSize: 50
+						}, function(resp) {
+							this.unitList = resp.data;
+						}.bind(this))
+					},
+					addPeopleFn(itemId, num, show) {
 						sa.ajax('/TbBusinessPeople/getList', {
 							businessId: this.id
 						}, function(resp) {
@@ -278,7 +297,9 @@
 
 						}.bind(this));
 						this.modal.itemId = itemId;
+						this.modal.num = num;
 						this.modal.visible = show;
+
 					},
 					showAddModal() {
 						Object.assign(this.addModal, {
@@ -295,14 +316,16 @@
 					cancelAdd() {
 						this.modal.list = [];
 						this.modal.visible = false;
+
 					},
 					confirmAdd() {
 						if (!this.addModal.form.name) {
 							sa.error('请输入检测人姓名')
 							return false;
 						}
-						if (!this.addModal.form.phone) {
-							sa.error('请输入检测人联系号码')
+						let phone = this.addModal.form.phone;
+						if (phone && !sa.isPhone(phone)) {
+							sa.error('检测人联系号码不正确')
 							return false;
 						}
 						let dbIndex = this.addModal.form.index;
@@ -331,9 +354,6 @@
 							}.bind(this))
 						}
 					},
-					handleSelectChinaCar() {
-
-					},
 					getGoods() {
 						sa.ajax('/TbGoods/getList', {
 							pageNo: 1,
@@ -346,70 +366,38 @@
 						sa.ajax('/TbItemType/getList', function(resp) {
 							let typeList = resp.data;
 							// 初始化数据
-							if (this.id > 0) {
-								sa.ajax('/TbBusiness/getById?id=' + this.id, function(res) {
-									let m = res.data;
-									let items = m.items;
-									let hsItem= items.filter(obj=>obj.itemTypeName.indexOf('人')!==-1
-									&&obj.itemTypeName.indexOf('核酸')!==-1);
-									if(hsItem.length>0){
-										this.addPeopleFn(hsItem[0].itemTypeId,false)
-									}
-									for (let i in items) {
-										let item = items[i];
-										for (let j in typeList) {
-											let type = typeList[j];
-											if (item.itemTypeId == type.id) {
-												type.itemId = item.itemId;
-												type.num = item.num;
-												break;
-											}
+							sa.ajax('/TbBusiness/getById?id=' + this.id, function(res) {
+								let m = res.data;
+								let items = m.items;
+								let hsItem = items.filter(obj => obj.itemTypeName.indexOf('人') !== -1 &&
+									obj.itemTypeName.indexOf('核酸') !== -1);
+								if (hsItem.length > 0) {
+									this.addPeopleFn(hsItem[0].itemTypeId, false)
+								}
+								for (let i in items) {
+									let item = items[i];
+									for (let j in typeList) {
+										let type = typeList[j];
+										if (item.itemTypeId == type.id) {
+											type.itemId = item.itemId;
+											type.num = item.num;
 										}
 									}
-									this.m = m;
-								}.bind(this))
-							}
-							this.itemTypeList = typeList;
+								}
+								this.m = m;
+								this.itemTypeList = typeList;
+								this.goodsChange(m.goodsName);
+							}.bind(this))
 						}.bind(this))
 					},
-					getCardList() {
-						sa.ajax('/TbCar/getList', {
-							pageNo: 1,
-							pageSize: 100
-						}, function(resp) {
-							this.cardList = resp.data;
-						}.bind(this));
-					},
-					queryCarAsync(queryStr, cb) {
-						let list = this.cardList;
-						let filterList = list.filter(obj => obj.cardNo.indexOf(queryStr) !== -1);
-						cb(filterList)
-					},
-					handleSelectCar(item) {
-						console.log(item);
-						this.m.cardSize = item.cardSize;
-						this.m.goodsName = item.lastGoodsName
-						this.m.countryName = item.countryName;
-						this.m.netWeight = item.lastNetWeight;
-					},
-					getDriverList() {
-						sa.ajax('/TbDriver/getList', {
-							pageNo: 1,
-							pageSize: 100
-						}, function(resp) {
-							this.driverList = resp.data;
-						}.bind(this));
-					},
-					queryDriverAsync(queryStr, cb) {
-						let list = this.driverList;
-						let filterList = list.filter(obj => obj.idCard.indexOf(queryStr) !== -1);
+					queryCaSizerAsync(queryStr, cb) {
+						let list = this.unitList;
+						let filterList = list.filter(obj => obj.unit.indexOf(queryStr) !== -1);
 						cb(filterList)
 					},
-					handleSelectDriver(item) {
-						this.m.driverId = item.id;
-						this.m.driverName = item.name;
-						this.m.driverIdCard = item.idCard;
-						this.m.driverPhone = item.phone
+
+					handleSelectCarSize(item) {
+						this.m.cardSize = item.unit;
 					},
 					getCustomerList() {
 						sa.ajax('/TbCostomer/getList', {
@@ -436,46 +424,61 @@
 					},
 					// 提交数据 
 					ok: function() {
-						let itemList = this.itemTypeList.filter(obj => obj.itemId);
+						// 表单校验
+						let m = this.m;
+						if (this.currentCustomerId == 1) {
+							sa.checkNull(m.customerId, '请选择 [客户名称]');
+						}
+						sa.checkNull(m.goodsName, '请选择运输货物');
+						sa.checkNull(m.cardNo, '请输入 [车牌号]');
+						if (!sa.isNum(m.cardSize)) {
+							sa.error('车辆规格只能输入数字')
+							return;
+						}
+						if (!sa.isNum(m.netWeight)) {
+							sa.error('载重只能输入数字')
+							return;
+						}
+						sa.checkNull(m.driverName, '请输入 [中国司机名称]');
+						if (!sa.isPhone(m.driverPhone)) {
+							sa.error('司机联系号码不正确')
+							return false;
+						}
+						sa.checkNull(m.chinaCarNo, '请输入 [中国车牌号]');
+						let checkList = this.itemTypeList;
+						for (let j in this.needTypeId) {
+							let id = this.needTypeId[j];
+							for (let i in checkList) {
+								let type = checkList[i];
+								if (id == type.id && !type.itemId) {
+									sa.error('选择[' + this.m.goodsName + ']时,[' + type.name + ']必选')
+									return;
+								}
+							}
+						}
+						let typeList = this.itemTypeList.filter(obj => obj.itemId);
 						let list = [];
-						if (itemList.length == 0) {
+						if (typeList.length == 0) {
 							sa.error('至少选择一项业务');
 							return false;
 						}
-						for (let i in itemList) {
-							let item = itemList[i];
-							if (!item.num || item.num <= 0) {
-								this.$message({
-									message: '请填写【' + item.name + '】数量',
-									type: 'error'
-								});
-								return;
-							}
+						for (let i in typeList) {
+							let type = typeList[i];
 							list.push({
-								itemId: item.itemId,
-								num: item.num
+								itemId: type.itemId,
+								num: type.num
 							})
 						}
-						if (itemList.filter(obj => obj.itemId == 4 || obj.itemId == 9).length > 0 && this.modal.list
+						if (typeList.filter(obj => obj.itemId == 4 || obj.itemId == 9).length > 0 && this.modal.list
 							.length == 0) {
 							sa.error('请添加核酸检测人员');
 							return false;
 						}
-						// 表单校验 
-						let m = this.m;
+
 						m.itemJson = JSON.stringify(list);
 						m.peopleJson = JSON.stringify(this.modal.list);
 						m.items = [];
-						if (this.currentCustomerId == 1) {
-							sa.checkNull(m.customerId, '请选择 [客户名称]');
-						}
-						sa.checkNull(m.cardNo, '请输入 [车牌号]');
-						sa.checkNull(m.cardSize, '请输入 [车规格]');
-						sa.checkNull(m.netWeight, '请输入 [载重]');
-						sa.checkNull(m.goodsName, '请选择运输货物');
-						sa.checkNull(m.driverName, '请输入 [司机名称]');
-						sa.checkNull(m.driverPhone, '请输入 [司机联系号码]');
-						sa.checkNull(m.chinaCarNo, '请输入 [中国车牌号]');
+
 						if (this.id <= 0) { // 添加
 							sa.ajax('/TbBusiness/add', m, function(res) {
 								sa.alert('增加成功', this.clean);
@@ -499,10 +502,9 @@
 				},
 				mounted: function() {
 					this.getCustomer();
-					this.getCardList();
-					this.getDriverList();
 					this.getItemTypeList();
 					this.getGoods();
+					this.getUnitList();
 				}
 			})
 		</script>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 113 - 0
sp-server/logs/pco/log_info.log


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác