<template>
|
<el-dialog
|
:visible.sync="carrierLicenseVisible"
|
append-to-body
|
:title="title"
|
:close-on-click-modal="false"
|
width="70%"
|
>
|
|
<el-form ref="dataForm" :model="dataForm" :rules="ruleForm" label-position="right" label-width="150px" element-loading-text="保存中...">
|
<div class="enterpriseBasicInformation_title">
|
<span>基本信息(带*为必填项)</span>
|
</div>
|
<el-divider></el-divider>
|
|
<div>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="运输证编号:" >
|
<el-input :disabled="isMod" v-model.trim="dataForm.code" class="carrierLicense_select">
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="收货人:单位名称:" >
|
<el-input v-model.trim="dataForm.receivercompanyname" class="carrierLicense_select">
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="收货人:地址:" >
|
<el-input v-model.trim="dataForm.receiveraddress" class="carrierLicense_select">
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="收货人:负责人姓名:" >
|
<el-input v-model.trim="dataForm.receiverprincipalname" class="carrierLicense_select">
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="收货人:负责人电话:" >
|
<el-input v-model.trim="dataForm.receiverprincipalphone" class="carrierLicense_select">
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="运输车辆牌号:">
|
<el-input v-model.trim="dataForm.carnumber" class="carrierLicense_select">
|
</el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="预计送达时间:" prop="specification">
|
<el-date-picker
|
value-format="yyyy-MM-dd"
|
v-model="dataForm.processtime"
|
placeholder="选择日期时间">
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</div>
|
|
|
<div class="enterpriseBasicInformation_title">
|
<span>驾驶员/押运员信息(带*为必填项)</span>
|
</div>
|
<el-divider></el-divider>
|
|
<div>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="驾驶员/押运员:" prop="成立时间">
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="addDriver('新增','')">添加</el-button>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<div class="table_content">
|
<el-table
|
:key="tableKey"
|
:data="transportPerson"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="序号" type="index" align="center" width="60"/>
|
<el-table-column label="类型" prop="type" align="center">
|
</el-table-column>
|
<el-table-column label="姓名" prop="personname" align="center">
|
</el-table-column>
|
<el-table-column label="身份证号" prop="personidentify" align="center">
|
</el-table-column>
|
<el-table-column label="资格证号" prop="number" align="center">
|
</el-table-column>
|
<el-table-column label="资格证号有效期" prop="validtime" align="center">
|
</el-table-column>
|
<el-table-column label="联系电话" prop="phone" align="center">
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="deleteDriver(scope.$index)">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
|
|
<div class="enterpriseBasicInformation_title">
|
<span>物品信息(带*为必填项)</span>
|
</div>
|
<el-divider></el-divider>
|
|
<div>
|
<el-row>
|
<el-col :span="4">
|
<el-form-item label="添加物品:" >
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="addProduct('新增','')">添加产品</el-button>
|
</el-form-item>
|
</el-col>
|
<el-col :span="4">
|
<el-form-item label="上传产品:" >
|
<el-upload
|
class="upload"
|
:action="actionUrlPrefixx+'/transport/product2json'"
|
:headers="headers"
|
:on-preview="handlePreview"
|
:on-remove="handleRemove"
|
:before-remove="beforeRemove"
|
:limit="1"
|
:before-upload="beforeUpload"
|
:on-exceed="handleExceed"
|
:on-success="handleSuccess"
|
:on-error="handleError"
|
:show-file-list="false"
|
:file-list="fileList">
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary">上传产品</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-col>
|
<el-col :span="4">
|
<el-form-item label="清空产品:" >
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="clearProduct()">清空产品</el-button>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row >
|
<el-form-item label="注意事项:" >
|
<span class="tip-important" style="margin-left: 10px;" data-role="time-label">需要上传请先上传产品!</span>
|
</el-form-item>
|
</el-row>
|
<div class="table_content">
|
<el-table
|
:key="tableKey"
|
:data="transportProduct"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="序号" type="index" align="center" width="60"/>
|
<el-table-column label="类别" prop="type" align="center">
|
</el-table-column>
|
<el-table-column label="名称" prop="name" align="center">
|
</el-table-column>
|
<el-table-column label="级别" prop="level" align="center">
|
</el-table-column>
|
<el-table-column label="包装方式" prop="packing" align="center">
|
</el-table-column>
|
<el-table-column label="规格" prop="specification" align="center">
|
</el-table-column>
|
<el-table-column label="箱含量" prop="productnum" align="center">
|
</el-table-column>
|
<el-table-column label="运输数量" prop="num" align="center">
|
<template slot-scope="scope">
|
<el-input v-model="scope.row.num"></el-input>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="deleteProduct (scope.$index)">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
|
<div class="enterpriseBasicInformation_title">
|
<span>文件</span>
|
</div>
|
<el-divider></el-divider>
|
|
<div>
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="文件:" >
|
<input id="upload" ref="upload" type="file" multiple/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<div v-for="item in dataForm.transportFile">
|
<el-row >
|
<el-col :span="20">
|
<el-form-item label="文件名:" >
|
<a style="height:36px;text-decoration:underline;color:blue;padding-left: 10px;" @click="downloadFile(item.url)">{{ item.filename }}</a>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</div>
|
</div>
|
|
</el-form>
|
|
<div align="right" style="margin-top: 20px;">
|
<el-button @click="carrierLicenseVisible = false">取消</el-button>
|
<el-button type="primary" @click="submitCarrier()">确认</el-button>
|
</div>
|
|
<driverSelectForm ref="driverSelectForm" @getinfo="achieveDriver"></driverSelectForm>
|
<addProduct ref="product" @giveProduct="achieveProduct"></addProduct>
|
</el-dialog>
|
</template>
|
|
<script>
|
|
import {uploadUrl} from '@/assets/upload/url'
|
import addProduct from "./components/addProduct";
|
import driverSelectForm from "./components/driverSelectForm";
|
import { addCertificate ,updateCertificate ,updateFile } from "../../../api/certificateList";
|
import {confirmList} from "../../../api/contract";
|
import { getToken } from '@/utils/auth'
|
import {addEmergencyInformation} from "../../../api/emergency";
|
|
export default {
|
name: "CarrierLicense",
|
data(){
|
return{
|
title:'',
|
tableKey:'',
|
recordTotal:0,
|
currentPage:1,
|
pageSize:10,
|
isMod:false,
|
transportPerson:[],
|
fileList:[],
|
transportProduct:[],
|
actionUrlPrefixx:process.env.BASE_API,
|
headers:{ 'Authorization':getToken()},
|
dataForm:{
|
id:0,
|
code:'',
|
contractcode:'',
|
receivercompanyname:'',
|
receiveraddress:'',
|
receiverprincipalname:'',
|
receiverprincipalphone:'',
|
carnumber:'',
|
processtime:'',
|
transportPerson:[],
|
transportProduct:[],
|
file:[],
|
},
|
ruleForm:{
|
},
|
typeList:[
|
{id:1,name:'出口'},
|
{id:2,name:'购买'},
|
{id:3,name:'本单位运输'}
|
],
|
contractList:[],
|
carrierLicenseVisible:false,
|
}
|
},
|
components:{
|
driverSelectForm,
|
addProduct
|
},
|
created(){
|
this.getConfirmList()
|
},
|
methods:{
|
showCarrierLicense(title,value){
|
this.title = title
|
this.carrierLicenseVisible = true
|
if(this.title === '新增'){
|
this.isMod = false
|
this.dataForm = {
|
id:0,
|
code:'',
|
contractcode:'',
|
receivercompanyname:'',
|
receiveraddress:'',
|
receiverprincipalname:'',
|
receiverprincipalphone:'',
|
carnumber:'',
|
processtime:'',
|
transportPerson:[],
|
transportProduct:[],
|
file:[],
|
}
|
this.transportPerson = []
|
this.transportProduct = []
|
}else{
|
this.isMod = true
|
this.dataForm = value
|
this.transportPerson =value.transportPerson
|
this.transportProduct = value.transportProduct
|
|
}
|
},
|
|
async submitCarrier(){
|
this.dataForm.transportPerson = JSON.stringify(this.transportPerson)
|
this.dataForm.transportProduct =JSON.stringify(this.transportProduct)
|
const formData = new FormData();
|
if(this.$refs["upload"].files.length === 0){
|
this.dataForm.imgids = []
|
}
|
for (const i in this.dataForm) {
|
if (
|
this.dataForm[i] != undefined &&
|
this.dataForm[i].toString() != ""
|
) {
|
formData.append(i, this.dataForm[i]);
|
}
|
}
|
|
const files1 = this.$refs["upload"].files;
|
if (files1 && files1.length > 0) {
|
for (let i = 0; i < files1.length; i++)
|
formData.append("file", files1[i]);
|
}
|
if(this.$refs.upload.files.length!==0){
|
this.$refs.upload.value = []
|
}
|
if(this.title === '新增'){
|
let res = await addCertificate(formData)
|
if(res.data.code === '200'){
|
this.carrierLicenseVisible = false
|
this.$emit('getinfo')
|
this.$notify({
|
title:'成功',
|
duration:2000,
|
type:'success',
|
message:'新增运输证成功'
|
})
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'success',
|
})
|
}
|
}else{
|
let res = await updateCertificate(formData)
|
if(res.data.code === '200'){
|
this.carrierLicenseVisible = false
|
this.$emit('getinfo')
|
this.$notify({
|
title:'成功',
|
duration:2000,
|
type:'success',
|
message:'修改运输证成功'
|
})
|
}else{
|
this.$message({
|
message:res.data.message,
|
type:'success',
|
})
|
}
|
}
|
},
|
|
downloadFile(val){
|
window.open(uploadUrl()+val, '_blank')
|
},
|
|
|
|
addDriver(){
|
this.$refs.driverSelectForm.selectDriver()
|
},
|
achieveDriver(value){
|
let isContain = false
|
if (this.transportPerson.length > 0) {
|
this.transportPerson.forEach(item=>{
|
if (item.personid === value.id) {
|
isContain = true
|
}
|
})
|
}
|
if (!isContain)
|
this.transportPerson.push({personid:value.id,type:value.type,personname:value.name,personidentify:value.identify,number:value.certificate,validtime:value.validtime,phone:value.phone})
|
|
},
|
deleteDriver(index){
|
this.transportPerson.splice(index,1);
|
},
|
addProduct(){
|
this.$refs.product.selectProduct()
|
},
|
achieveProduct(value){
|
if (this.transportProduct.length > 0) {
|
this.transportProduct.forEach(item=>{
|
for (let ii = 0; ii < value.length; ii++) {
|
if (value[ii].directionCode === item.productcode) {
|
value.splice(ii,1)
|
}
|
}
|
})
|
}
|
for(let i = 0 ; i<value.length;i++){
|
this.transportProduct.push({productcode:value[i].directionCode,type:value[i].type,name:value[i].name,level:value[i].level,packing:value[i].packing,specification:value[i].specification,productnum:value[i].boxNumber,num:null,})
|
}
|
},
|
deleteProduct(index){
|
this.transportProduct.splice(index,1)
|
},
|
|
beforeUpload(file){
|
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
|
|
const whiteList = ["xls", "xlsx"];
|
|
if (whiteList.indexOf(fileSuffix) === -1) {
|
this.$message.warning("上传文件只能是 xls、xlsx格式", "error");
|
return false;
|
}
|
|
|
},
|
clearProduct(){
|
this.transportProduct = []
|
},
|
handleRemove(file, fileList) {
|
if (file && file.status==="success") {
|
this.transportProduct = []
|
return this.$confirm(`已清空产品信息`);
|
}
|
},
|
handlePreview(file) {
|
},
|
handleExceed(files, fileList) {
|
this.$message.warning(`当前限制选择 1个文件,本次选择了 ${files.length} 个文件`);
|
},
|
beforeRemove(file, fileList) {
|
if (file && file.status==="success") {
|
//移除方法
|
return this.$confirm(`确定移除 ${ file.name },并清空产品信息吗?`);
|
}
|
},
|
handleSuccess(response, file, fileList) {
|
if (response.code == '200') {
|
let value = response.result
|
if (value !=null && value.length>0)
|
for(let i = 0 ; i<value.length;i++){
|
this.transportProduct.push({productcode:value[i].directionCode,type:value[i].type,name:value[i].name,level:value[i].level,packing:value[i].packing,specification:value[i].specification,productnum:value[i].boxNumber,num:value[i].num,})
|
}
|
this.$notify({
|
title: '成功',
|
duration: 2000,
|
message: '上传成功',
|
type: 'success'
|
})
|
this.fileList = []
|
}else{
|
this.$message.warning(response.message);
|
this.fileList = []
|
}
|
},
|
handleError(response, file, fileList) {
|
this.fileList = []
|
},
|
|
|
|
async getConfirmList() {
|
const params = {}
|
params['pageIndex'] = 1
|
params['pageSize'] = 1000
|
let res = await confirmList()
|
this.contractList = res.data.result.result
|
},
|
showPic(val){
|
window.open(val, '_blank')
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
.enterpriseBasicInformation_title{
|
font-weight: bolder;
|
font-size: large;
|
text-align: center;
|
margin-top: 24px;
|
}
|
.carrierLicense_select{
|
width:40%;
|
}
|
.carrierLicense_upload_top{
|
border:1px solid #DCDFE6;
|
}
|
.carrierLicense_upload{
|
border-bottom: 1px solid #DCDFE6;
|
border-left: 1px solid #DCDFE6;
|
border-right: 1px solid #DCDFE6;
|
}
|
.carrierLicense_col_left{
|
}
|
.carrierLicense_col_right{
|
padding-bottom:20px;
|
padding-top: 20px;
|
border-left:1px solid #DCDFE6;
|
}
|
.tip-important{
|
overflow: hidden;
|
text-overflow: ellipsis;
|
white-space: nowrap;
|
border-radius: 3px;
|
color: #e62412;
|
/*background-color: #e62412;*/
|
/*display: inline-block;*/
|
/*height: 28px;*/
|
/*line-height: 32px;*/
|
/*font-size: 14px;*/
|
}
|
</style>
|