|
|
@@ -6,11 +6,12 @@
|
|
|
<div class="card">
|
|
|
<van-panel >
|
|
|
<template #header>
|
|
|
-<!-- <van-cell title="申请信息"></van-cell>-->
|
|
|
+ <van-cell title="申请信息"></van-cell>
|
|
|
</template>
|
|
|
<div class="panel-box">
|
|
|
<select-cell
|
|
|
title="介绍信类型"
|
|
|
+ is-row
|
|
|
:prop="prop"
|
|
|
v-model="visitType"
|
|
|
:data-list="typeList"
|
|
|
@@ -32,18 +33,35 @@
|
|
|
v-model="formData.reasons"
|
|
|
placeholder="请输入"
|
|
|
:maxlength="200"/>
|
|
|
+ <date-cell
|
|
|
+ v-if="visitType != 3"
|
|
|
+ required
|
|
|
+ v-model="formData.date"
|
|
|
+ title="开具日期">
|
|
|
+ </date-cell>
|
|
|
+ <select-cell
|
|
|
+ required
|
|
|
+ v-if="visitType != 3"
|
|
|
+ title="有效天数"
|
|
|
+ is-row
|
|
|
+ :label="formData.date"
|
|
|
+ is-link
|
|
|
+ @click="showCalendar">
|
|
|
+ </select-cell>
|
|
|
<van-cell
|
|
|
required
|
|
|
- title="有效期"
|
|
|
+ v-if="visitType != 2"
|
|
|
+ title="出入期限"
|
|
|
:label="formData.date"
|
|
|
is-link
|
|
|
@click="showCalendar">
|
|
|
</van-cell>
|
|
|
<div class="upload-box" v-if="visitType != 3" >
|
|
|
- <span><i>*</i> 介绍信上传</span>
|
|
|
+ <span><i>*</i> 上传介绍信</span>
|
|
|
<uploader :maxCount="1" v-model="formData.letterFile"/>
|
|
|
</div>
|
|
|
<van-field
|
|
|
+ v-if="visitType != 3"
|
|
|
v-model="formData.description"
|
|
|
rows="1"
|
|
|
autosize
|
|
|
@@ -64,11 +82,10 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- 人员列表 -->
|
|
|
- <div class="card" v-for="(v,i) in pList" :key="i">
|
|
|
+ <div class="card" v-for="(v,i) in pList" :key="v.uuid">
|
|
|
<van-swipe-cell>
|
|
|
<div class="goods-card">
|
|
|
<div class="card-img-box" @click="preView(v.imgFile)">
|
|
|
-<!-- <p>{{v.imgFile[0].imgPath}}</p>-->
|
|
|
<img :src="imgUrl(v.imgFile[0].imgPath)" alt="">
|
|
|
</div>
|
|
|
<div class="card-cell-box">
|
|
|
@@ -86,36 +103,37 @@
|
|
|
</van-swipe-cell>
|
|
|
</div>
|
|
|
|
|
|
-
|
|
|
<!-- 添加人员信息 -->
|
|
|
<div class="card" v-show="checked">
|
|
|
<van-cell title="人员信息">
|
|
|
<template #right-icon>
|
|
|
- <van-button type="info" icon="plus" size="mini" @click="onAdd">添加</van-button>
|
|
|
+ <van-button type="primary" v-if="isAdd" icon="plus" size="mini" @click="onAdd">添加</van-button>
|
|
|
+ <van-button type="info" v-else icon="edit" size="mini" @click="onEdit">确认</van-button>
|
|
|
</template>
|
|
|
</van-cell>
|
|
|
<div class="panel-box">
|
|
|
<van-form validate-first @failed="onFailed">
|
|
|
- <van-cell
|
|
|
- v-if="visitType == 1"
|
|
|
- title="来访机构"
|
|
|
- required
|
|
|
- is-link
|
|
|
- @click="showOrg"
|
|
|
- :label="formData.orgName">
|
|
|
- </van-cell>
|
|
|
<van-field
|
|
|
required
|
|
|
v-model="personnel.userName"
|
|
|
rows="1"
|
|
|
autosize
|
|
|
:maxlength="20"
|
|
|
- label="来访人员"
|
|
|
+ label="出入人员"
|
|
|
:rules="[{ pattern:/^(.+)$/, message: '请输入' }]"
|
|
|
placeholder="请输入"/>
|
|
|
+ <van-field
|
|
|
+ required
|
|
|
+ v-model="personnel.idCard"
|
|
|
+ rows="1"
|
|
|
+ autosize
|
|
|
+ :maxlength="20"
|
|
|
+ label="证件号码"
|
|
|
+ placeholder="请输入"/>
|
|
|
<select-cell
|
|
|
title="证件类型"
|
|
|
:prop="prop"
|
|
|
+ is-row
|
|
|
v-model="visitType"
|
|
|
:data-list="typeList"
|
|
|
required>
|
|
|
@@ -128,20 +146,12 @@
|
|
|
:maxlength="20"
|
|
|
label="证件号码"
|
|
|
placeholder="请输入"/>
|
|
|
- <van-field
|
|
|
- required
|
|
|
- v-model="personnel.companyName"
|
|
|
- rows="1"
|
|
|
- autosize
|
|
|
- :maxlength="20"
|
|
|
- label="单位"
|
|
|
- :rules="[{ pattern:/^(.+)$/, message: '请输入' }]"
|
|
|
- placeholder="请输入"/>
|
|
|
</van-form>
|
|
|
<div class="upload-box" >
|
|
|
- <span><i>*</i> 证件上传</span>
|
|
|
+ <span><i>*</i> 上传证件照</span>
|
|
|
<uploader :maxCount="2" v-model="personnel.imgFile"/>
|
|
|
</div>
|
|
|
+ <p class="tip-text" >注:证件号码将作为唯一识别码</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="big-btn-box" >
|
|
|
@@ -199,6 +209,7 @@ export default {
|
|
|
imgFile:[],
|
|
|
},
|
|
|
pList:[],
|
|
|
+ isAdd:true,
|
|
|
showPicker:false,
|
|
|
openCalendar:false,
|
|
|
prop:{
|
|
|
@@ -237,92 +248,127 @@ export default {
|
|
|
// return;
|
|
|
// }
|
|
|
// }
|
|
|
- if(this.visitType == '2'){
|
|
|
- if(!this.formData.letterNo){
|
|
|
- this.$toast('请输入介绍信编号');
|
|
|
+ try{
|
|
|
+ if(this.visitType == '2'){
|
|
|
+ if(!this.formData.letterNo){
|
|
|
+ this.$toast('请输入介绍信编号');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(!this.formData.letterFile){
|
|
|
+ this.$toast('请上传介绍信');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!this.formData.reasons){
|
|
|
+ this.$toast('请输入出入事由');
|
|
|
return;
|
|
|
}
|
|
|
- if(!this.formData.letterFile){
|
|
|
- this.$toast('请上传介绍信');
|
|
|
+ if(!this.formData.range){
|
|
|
+ this.$toast('请选择有效期');
|
|
|
return;
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- if(!this.formData.reasons){
|
|
|
- this.$toast('请输入出入事由');
|
|
|
- return;
|
|
|
- }
|
|
|
- if(!this.formData.range){
|
|
|
- this.$toast('请选择有效期');
|
|
|
- return;
|
|
|
- }
|
|
|
- if(this.pList.length == 0){
|
|
|
- this.$toast('请添加人员信息');
|
|
|
- return;
|
|
|
- }
|
|
|
- this.formData.status = 1;
|
|
|
- this.formData.type = this.visitType;
|
|
|
- this.formData.receptionOrgIds = [this.orgId];
|
|
|
- this.formData.userInfos = this.pList;
|
|
|
- let data = this.formData;
|
|
|
- //alert(JSON.stringify(data))
|
|
|
- if(this.visitType == '2'){
|
|
|
- data.letterFile = this.formData.letterFile.map(v=>{
|
|
|
- return JSON.stringify(v);
|
|
|
+ if(this.pList.length == 0){
|
|
|
+ this.$toast('请添加人员信息');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.formData.status = 1;
|
|
|
+ this.formData.type = this.visitType;
|
|
|
+ this.formData.receptionOrgIds = [this.orgId];
|
|
|
+ this.formData.userInfos = this.pList;
|
|
|
+ let data = this.formData;
|
|
|
+ //alert(JSON.stringify(data))
|
|
|
+ if(this.visitType == '2'){
|
|
|
+ data.letterFile = this.formData.letterFile.map(v=>{
|
|
|
+ return JSON.stringify(v);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ data.userInfos = this.pList.map(user=>{
|
|
|
+ let urlArr = user.imgFile.map(v=>{
|
|
|
+ return v.imgPath
|
|
|
+ })
|
|
|
+ user.imgFile = urlArr.join(',');
|
|
|
+ return user
|
|
|
})
|
|
|
- }
|
|
|
- data.userInfos = this.pList.map(user=>{
|
|
|
- let urlArr = user.imgFile.map(v=>{
|
|
|
- return v.imgPath
|
|
|
+ // alert(JSON.stringify(data));
|
|
|
+ // return;
|
|
|
+ visitAdd(data).then(res=>{
|
|
|
+ this.$toast.success('提交成功');
|
|
|
+ this.$router.replace({
|
|
|
+ name:'visitRegister',
|
|
|
+ path:'/visitRegister',
|
|
|
+ params:{event:'refresh'},
|
|
|
+ });
|
|
|
})
|
|
|
- user.imgFile = urlArr.join(',');
|
|
|
- return user
|
|
|
- })
|
|
|
- alert(JSON.stringify(data))
|
|
|
- visitAdd(data).then(res=>{
|
|
|
- this.$toast.success('提交成功');
|
|
|
- this.$router.replace({
|
|
|
- path:'/visitRegister',
|
|
|
- });
|
|
|
- })
|
|
|
+ }catch (e) {
|
|
|
+ alert(e)
|
|
|
+ }
|
|
|
},
|
|
|
onFailed(errorInfo) {
|
|
|
console.log('failed', errorInfo);
|
|
|
},
|
|
|
getDate(date){
|
|
|
- console.log(date,'date');
|
|
|
const [start, end] = date;
|
|
|
this.formData.range = date;
|
|
|
this.formData.date = `${start} ~ ${end}`;
|
|
|
- console.log( this.formData.date,'date');
|
|
|
},
|
|
|
showCalendar(){
|
|
|
this.$refs.CalendarPicker.show = true;
|
|
|
},
|
|
|
editPerson(v,i){
|
|
|
- console.log(v,'vvvvv');
|
|
|
this.checked = true;
|
|
|
+ this.isAdd = false;
|
|
|
this.personnel = JSON.parse(JSON.stringify(v));
|
|
|
},
|
|
|
deletePerson(v,i){
|
|
|
- console.log(v,'vvvvv')
|
|
|
this.pList.splice(i,1);
|
|
|
},
|
|
|
- onAdd(){
|
|
|
- // this.personnel.imgFile = [{
|
|
|
- // url:'askjdkajsdjajkdsa',
|
|
|
- // imgPath:'asjkdklaslkdasdlasld',
|
|
|
- // name:'asdasdasd'
|
|
|
- // }]
|
|
|
+ onEdit(){
|
|
|
if(!this.personnel.userName || !this.personnel.idCard || !this.personnel.companyName || !this.personnel.imgFile){
|
|
|
this.$toast('请完善人员信息');
|
|
|
return;
|
|
|
}
|
|
|
- if(this.personnel.imgFile.length < 2) {
|
|
|
- this.$toast('请上传证件照正反面');
|
|
|
+ let strObj = JSON.parse(JSON.stringify(this.personnel));
|
|
|
+ let index = this.pList.findIndex(v=>{return v.uuid === strObj.uuid});
|
|
|
+ this.pList.splice(index,1,strObj);
|
|
|
+ this.personnel = {
|
|
|
+ userName:null,
|
|
|
+ idCard:null,
|
|
|
+ companyName:null,
|
|
|
+ imgFile:[],
|
|
|
+ };
|
|
|
+ this.isAdd = true;
|
|
|
+ },
|
|
|
+ onAdd(){
|
|
|
+ //测试模拟
|
|
|
+ // if(!this.personnel.idCard){
|
|
|
+ // this.personnel.imgFile = [{
|
|
|
+ // url:'askjdkajsdjajkdsa',
|
|
|
+ // imgPath:'asjkdklaslkdasdlasld',
|
|
|
+ // name:'asdasdasd'
|
|
|
+ // },
|
|
|
+ // {
|
|
|
+ // url:'asdaaskjdkajsdjajkdsa',
|
|
|
+ // imgPath:'dsaasjkdklaslkdasdlasld',
|
|
|
+ // name:'asdasdasd'
|
|
|
+ // }
|
|
|
+ // ];
|
|
|
+ // this.personnel.userName = '张三';
|
|
|
+ // this.personnel.idCard = '123456789012345678'
|
|
|
+ // this.personnel.companyName = '测试单位';
|
|
|
+ // }
|
|
|
+ if(!this.personnel.userName || !this.personnel.idCard || !this.personnel.companyName || !this.personnel.imgFile){
|
|
|
+ this.$toast('请完善人员信息');
|
|
|
return;
|
|
|
}
|
|
|
let strObj = JSON.parse(JSON.stringify(this.personnel));
|
|
|
+ //判断是否已添加
|
|
|
+ let flag = this.pList.some(v=> {return v.idCard === strObj.idCard});
|
|
|
+ if(flag) {
|
|
|
+ this.$toast('该人员信息已添加');
|
|
|
+ return;
|
|
|
+ };
|
|
|
+ strObj.uuid = `${new Date().getTime()}`;
|
|
|
this.pList.push(strObj);
|
|
|
this.personnel = {
|
|
|
userName:null,
|
|
|
@@ -342,10 +388,15 @@ export default {
|
|
|
cancelPicker(){
|
|
|
this.showPicker = false;
|
|
|
},
|
|
|
- preView(imgs) {
|
|
|
- let arr = imgs.map(v=>{return v.imgPath});
|
|
|
- console.log(arr,'imgs')
|
|
|
- ImagePreview(arr)
|
|
|
+ preView(val) {
|
|
|
+ if(Array.isArray(val)){
|
|
|
+ let arr = val.map(v=>{
|
|
|
+ return imgUrl(v.imgPath);
|
|
|
+ })
|
|
|
+ ImagePreview(arr);
|
|
|
+ }else {
|
|
|
+ ImagePreview([imgUrl(val)]);
|
|
|
+ }
|
|
|
},
|
|
|
}
|
|
|
}
|
|
|
@@ -452,6 +503,11 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+.tip-text{
|
|
|
+ line-height: 60px;
|
|
|
+ color:red;
|
|
|
+ background-color: #fff;
|
|
|
+}
|
|
|
.big-btn-box{
|
|
|
padding-bottom: 20px;
|
|
|
}
|