You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

596 lines
19 KiB

<template>
<div class="app-container">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="handleCreate()">保存</el-button>
<el-button type="primary" size="small" @click="handleSubmit()">提交</el-button>
<el-button type="info" size="small" @click="handleReturn()">返回</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu">车辆存放地点变更申请</div>
<el-form ref="dataForm" :model="temp" label-position="right" class="formadd" :rules="rules">
<el-row style="border-top: 1px solid #e0e3eb;">
<el-col :span="3">
<span>申请日期</span>
</el-col>
<el-col :span="9">
<el-form-item>
<span>{{ temp.applicantDate }}</span>
</el-form-item>
</el-col>
<el-col :span="3">
<span>申请人</span>
</el-col>
<el-col :span="9">
<el-form-item>
<span>{{ temp.applicantName }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="3">
<span>现存放地点</span>
</el-col>
<el-col :span="9">
<el-form-item prop="location">
<el-select v-model="temp.location" placeholder="请选择" clearable class="addinputw"
@change="locationChange">
<el-option v-for="item in warehouwarehouse_list" :key="item.dictKey" :label="item.dictValue"
:value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<span>目标存放地点</span>
</el-col>
<el-col :span="9">
<el-form-item prop="targetLocation">
<el-select v-model="temp.targetLocation" placeholder="请选择" clearable class="addinputw"
@change="targetLocationChange">
<el-option v-for="item in warehouwarehouse_list" :key="item.dictKey" :label="item.dictValue"
:value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="3">
<span>移库原因</span>
</el-col>
<el-col :span="21">
<el-input v-model="temp.changeReason" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-col>
</el-row>
<el-row>
<el-col :span="3">
<span><span class="icon">*</span>车架号</span>
</el-col>
<el-col :span="21">
<el-form-item prop="vinNo">
<span>{{ temp.vinNo }}</span>
<el-button size="small" type="primary" @click="selectVinNo" class="selectVinNoBtn">选择</el-button>
<!-- <el-select v-model="temp.vinNo" placeholder="请选择" filterable clearable class="addinputw">-->
<!-- <el-option v-for="item in vinNo_list" :key="item.vin" :label="item.vin" :value="item.vin"/>-->
<!-- </el-select>-->
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="3">
<span>申请费用</span>
</el-col>
<el-col :span="21">
<el-input v-model="temp.applicantFunds" maxlength="125" placeholder="" class="addinputw" clearable
@keyup.native="temp.applicantFunds = oninput(temp.applicantFunds,2)"/>
</el-col>
</el-row>
<el-row>
<el-col :span="3"> <!--<span class="icon">*</span>-->
<span>移库操作人</span>
</el-col>
<el-col :span="9">
<el-form-item prop="operator">
<el-input v-model="temp.operator" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<span>保险状态</span>
</el-col>
<el-col :span="9">
<el-form-item prop="InsuranceStateKey">
<el-radio v-model="temp.InsuranceStateKey" label="0">否</el-radio>
<el-radio v-model="temp.InsuranceStateKey" label="1">是</el-radio>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="temp.InsuranceStateKey == '1'">
<el-col :span="3">
<span>保单</span>
</el-col>
<el-col :span="21">
<upload ref="uploadImg" v-model="imgList" :limit="1" bucket="map" :upload-data="{type:'0001'}"/>
</el-col>
</el-row>
<el-row>
<el-col :span="3">
<span>临牌</span>
</el-col>
<el-col :span="21">
<el-input v-model="temp.temporaryCard" maxlength="125" placeholder="" class="addinputw" clearable/>
</el-col>
</el-row>
</el-form>
</div>
<!-- ======== 打开选择车架号 ======== -->
<el-dialog :showClose="false" :visible.sync="vinNoVisible">
<div slot="title">
<span>选择车架号</span>
<div class="vinNoBtn">
<el-button type="primary" @click="selectionvinNo()">确 定</el-button>
<el-button @click="vinNoVisible = false">取 消</el-button>
</div>
</div>
<div>
<el-form ref="multipleTable" :inline="true" :model="vinNoList" class="vinNoForm" label-width="100px">
<el-col :span="14">
<el-form-item label="车架号:">
<el-input v-model="vinNoList.params.vin" clearable class="addinputw" placeholder="车架号"/>
</el-form-item>
</el-col>
<el-col :span="10" class="dialogBtn">
<el-button type="primary" size="small" @click="handlevinNo">查询</el-button>
</el-col>
</el-form>
</div>
<el-table :key="tableKey" v-loading="vinNoLoading" :data="listvinNo" border fit highlight-current-row
style="width: 100%;" @selection-change="handleSelectionvinNo">
<el-table-column align="center" type="selection" width="50"/>
<el-table-column :index="vinNoindexMethod" align="center" label="序号" type="index" width="80"/>
<el-table-column align="center" label="车架号" prop="billNo">
<template slot-scope="scope">
<span>{{ scope.row.vin }}</span>
</template>
</el-table-column>
</el-table>
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination
v-show="vinNototal > 0"
:limit.sync="vinNoList.size"
:page.sync="vinNoList.current"
:total="vinNototal" class="pagination" @pagination="getvinNoList"/>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getCarTransferInfo,
getVinByWarehouseSid,
saveCarTransferInfo,
selectWarehouseByUserSid,
submitCarTransfer
} from '@/api/supplychain/cunfangdidianbiangeng'
import Upload from '@/components/uploadFile/uploadImg.vue'
export default {
name: 'cunfangdidianbiangengAdd',
components: {
Upload
},
data() {
return {
viewTitle: '',
// --按钮菜单-------
sid: '',
datas: null,
stateId: 0,
FormLoading: false,
listLoading: false,
location_list: [],
targetLocation_list: [],
imgList: [], // 附件上传
vinNo_list: [], // 车架号
warehouwarehouse_list: [], // 存放地点
temp: {
sid: '',
// taskId: '',
// procInsId: '',
userSid: window.sessionStorage.getItem('userSid'),
// applyId: '',
applicantName: '',
applicantDate: '',
location: '',
locationKey: '',
locationSid: '',
vinNo: '',
targetLocation: '',
targetLocationKey: '',
targetLocationSid: '',
changeReason: '',
applicantFunds: '',
operator: '',
InsuranceState: '',
InsuranceStateKey: '',
temporaryCard: '',
policyImage: []
}, // 添加和修改
dialogFormVisible: false, // 添加修改对话框状态
dialogFormShowVisible: false, // 查看对话框默认关闭状态
dialogStatus: '', // 对话框状态
vehiclePhoto: [],
// 现车车架号列表
vinNoVisible: false,
tableKey: 0,
vinNototal: 1,
vinNoLoading: false,
vinNoCount: 0,
vinNoChoice: [],
listvinNo: [],
vinNoList: {
current: 1,
size: 20,
params: {
vin: '',
warehouseSid: '',
userSid: window.sessionStorage.getItem('userSid')
}
},
rules: {
vinNo: [{ required: true, message: '车架号不能为空', trigger: 'change' }],
operator: [{ required: true, message: '经办人不能为空', trigger: 'change' }],
InsuranceStateKey: [{ required: true, message: '保险状态不能为空', trigger: 'blur' }],
location: [{ required: true, message: '现存放地点不能为空', trigger: 'change' }],
targetLocation: [{ required: true, message: '目标存放地点不能为空', trigger: 'change' }]
}
// ------------------------------------
}
},
methods: {
// 输入数字正则
oninput(val, limit = 0) {
val = val.replace(/[^\d.]/g, '') //保留数字
val = val.replace(/^00/, '0.') //开头不能有两个0
val = val.replace(/^\./g, '0.') //开头为小数点转换为0.
val = val.replace(/\.{2,}/g, '.') //两个以上的小数点转换成一个
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); //只保留一个小数点
/^0\d+/.test(val) ? val = val.slice(1) : '' //两位以上数字开头不能为0
const str = '^(\\d+)\\.(\\d{' + limit + '}).*$'
const reg = new RegExp(str)
if (limit === 0) {
// 不需要小数点
val = val.replace(reg, '$1')
} else {
// 通过正则保留小数点后指定的位数
val = val.replace(reg, '$1.$2')
}
return val
},
getType() {
// 存放地点
const userSid = window.sessionStorage.getItem('userSid')
selectWarehouseByUserSid(userSid).then((res) => {
if (res.code === '200') {
this.warehouwarehouse_list = res.data
console.log('存放地点', this.warehouwarehouse_list)
}
})
},
getVin(sid) {
const data = {
warehouseSid: sid,
userSid: window.sessionStorage.getItem('userSid')
}
getVinByWarehouseSid(data).then((res) => {
if (res.code === '200') {
this.vinNo_list = res.data
this.listvinNo = res.data
console.log('车架号', this.vinNo_list)
}
})
},
locationChange(val) {
const choosetItem = this.warehouwarehouse_list.filter((item) => item.dictValue == val)
this.temp.locationKey = choosetItem[0].dictKey
this.temp.locationSid = choosetItem[0].sid
this.vinNoList.params.warehouseSid = this.temp.locationSid
// this.getVin(this.temp.locationSid)
console.log('name:', this.temp.location, 'key:', this.temp.locationKey, 'sid:', this.temp.locationSid)
},
targetLocationChange(val) {
const choosetItem = this.warehouwarehouse_list.filter((item) => item.dictValue == val)
this.temp.targetLocationKey = choosetItem[0].dictKey
this.temp.targetLocationSid = choosetItem[0].sid
console.log('name:', this.temp.targetLocation, 'key:', this.temp.targetLocationKey, 'sid:', this.temp.targetLocationSid)
},
showAdd() {
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.dialogStatus = 'add'
this.viewTitle = '【新增】车辆存放地点变更申请'
this.temp.applicantName = window.sessionStorage.getItem('name')
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
var dayDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
this.temp.applicantDate = dayDate
this.getType()
},
showEdit(sid) {
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.dialogStatus = 'update'
this.viewTitle = '【修改】车辆存放地点变更申请'
this.temp.sid = sid
const data = {
userSid: window.sessionStorage.getItem('userSid'),
sid: sid
}
getCarTransferInfo(data).then((res) => {
if (res.success) {
this.temp = res.data
this.temp.instanceId = res.data.procInstId
if (this.temp.policyImage.length > 0) {
for (var i = 0; i < this.temp.policyImage.length; i++) {
const imgName = this.temp.policyImage[i].split('/')
this.imgList.push({
name: imgName[imgName.length - 1],
url: this.temp.policyImage[i]
})
}
}
}
})
this.getType()
},
// ------------ 选择车架号的方法 ------------
// 点击选择车架号
selectVinNo() {
if (this.temp.locationSid !== '') {
this.vinNoVisible = true
this.$nextTick(() => {
this.handlevinNo()
})
} else {
this.$message({
showClose: true,
message: '请选择现存放地点!',
type: 'error'
})
}
},
// 查询
handlevinNo() {
this.vinNoList.current = 1
this.getvinNoList()
},
// 请求车架号列表接口
getvinNoList() {
const _this = this
this.vinNoLoading = true
getVinByWarehouseSid(this.vinNoList)
.then(resp => {
_this.vinNoLoading = false
const data = resp.data
_this.vinNototal = data.total
_this.listvinNo = data.records
})
.catch(() => {
_this.vinNoLoading = false
})
},
// 勾选数据
handleSelectionvinNo(row) {
this.vinNoChoice = row
if (this.vinNoChoice.length > 1){
this.$message({
showClose: true,
message: '仅可选择一个车架号!',
type: 'error'
});
return
}
},
// 确认选择车架号
selectionvinNo() {
this.temp.vinNo = this.vinNoChoice[0].vin
this.vinNoVisible = false
// this.$refs.multipleTable.clearSelection();
},
// 现车序号
vinNoindexMethod(index) {
var pagestart = (this.vinNoList.current - 1) * this.vinNoList.size
var pageindex = index + 1 + pagestart
return pageindex
},
getUrl() {
if (this.temp.InsuranceStateKey == '1') {
if (this.imgList.length > 0) {
console.log('保存imgList', this.imgList)
const img_list = []
for (var i = 0; i < this.imgList.length; i++) {
img_list.push(this.imgList[i].url)
this.temp.policyImage = img_list
console.log('保存img_list', img_list)
}
} else {
this.temp.policyImage = []
}
} else {
this.temp.policyImage = []
}
},
// ----------------------------------方法--------------------
// 返回
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.temp = {
sid: '',
// taskId: '',
// procInsId: '',
userSid: window.sessionStorage.getItem('userSid'),
// applyId: '',
applicantName: '',
applicantDate: '',
location: '',
locationKey: '',
locationSid: '',
vinNo: '',
targetLocation: '',
targetLocationKey: '',
targetLocationSid: '',
changeReason: '',
applicantFunds: '',
operator: '',
InsuranceState: '',
InsuranceStateKey: '',
temporaryCard: '',
policyImage: []
}
this.imgList = []
this.vinNo_list = []
this.$emit('doback')
},
// 提交添加数据
handleCreate() {
if (this.temp.InsuranceStateKey == '0') {
this.temp.InsuranceState = '否'
this.temp.policyImage = []
this.imgList = []
}
if (this.temp.InsuranceStateKey == '1') {
this.temp.InsuranceState = '是'
}
this.getUrl()
this.$refs['dataForm'].validate((valid) => {
if (valid) {
this.FormLoading = true
// 只需添加和修改
saveCarTransferInfo(this.temp).then((response) => {
this.FormLoading = false
if (response.code === '200') {
this.dialogFormVisible = false
this.handleReturn('true')
} else {
this.$message({
showClose: true,
message: '保存失败!',
type: 'error'
})
}
})
}
})
},
handleSubmit() {
const _this = this
if (this.temp.InsuranceStateKey == '0') {
this.temp.InsuranceState = '否'
this.temp.policyImage = []
this.imgList = []
}
if (this.temp.InsuranceStateKey == '1') {
this.temp.InsuranceState = '是'
}
this.getUrl()
this.$refs['dataForm'].validate(valid => {
if (valid) {
// this.submitdisabled = true
this.$confirm('是否确定提交该业务', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
submitCarTransfer(this.temp).then(resp => {
// this.submitdisabled = false
if (resp.success) {
_this.handleReturn('true')
}
}).catch(() => {
// this.submitdisabled = false
})
})
} else {
return false
}
})
}
}
}
</script>
<style scoped>
/deep/ .el-autocomplete {
width: 80%;
}
.listconadd {
width: 100%;
padding: 0 240px !important;
}
.title {
padding-top: 28px;
}
.formadd .title {
padding: 10px !important;
}
.yancheAdd .el-row {
border: 0 !important;
}
.yancheAdd .el-col {
border: 0 !important;
}
/deep/ .el-col-3 {
text-align: right;
float: left;
font-size: 14px;
color: #606266;
line-height: 40px !important;
font-weight: 600;
}
.tit {
margin-bottom: 30px;
border-bottom: 1px solid #e0e3eb;
}
.times {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 30px 0 10px 0;
margin: 0 auto 0 auto;
width: 75%;
font-size: 14px;
text-align: center;
}
.selectVinNoBtn {
display: inline-block;
position: absolute;
top: 5px;
right: 5px;
}
.vinNoBtn {
float: right;
}
.vinNoForm {
text-align: center;
}
</style>