|  | @@ -50,67 +50,72 @@
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <van-form ref="form" scroll-to-error @failed="onFormFailed">
 | 
	
		
			
				|  |  |        <div class="card" v-for="(v,i) in userInfos" :key="i">
 | 
	
		
			
				|  |  | -        <van-panel>
 | 
	
		
			
				|  |  | -            <template #header>
 | 
	
		
			
				|  |  | -            <van-cell :title="'人员' + (i+1)" icon="manager-o" />
 | 
	
		
			
				|  |  | -          </template>
 | 
	
		
			
				|  |  | -      <!--  人员列表  -->
 | 
	
		
			
				|  |  | -        <div class="card" >
 | 
	
		
			
				|  |  | -          <div class="goods-card">
 | 
	
		
			
				|  |  | -            <div class="card-cell-checkbox" v-if="isShowCheckBox">
 | 
	
		
			
				|  |  | -              <van-checkbox v-model="v.checked" shape="square" @click.native="checkboxClicked(i)"/>
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -            <div>
 | 
	
		
			
				|  |  | -              <div class="card-img-box" v-if="v.imgFile && v.imgFile.length > 0" @click="preView(v.imgFile)">
 | 
	
		
			
				|  |  | -                <!-- <img :src="imgUrl(v.imgFile[0])" alt=""> -->
 | 
	
		
			
				|  |  | -                <ImageThumbnail
 | 
	
		
			
				|  |  | -                    :image-list="v.imgFile[0]"
 | 
	
		
			
				|  |  | -                    height="60px"
 | 
	
		
			
				|  |  | -                    width="80px"
 | 
	
		
			
				|  |  | -                    radius="8px"
 | 
	
		
			
				|  |  | -                />
 | 
	
		
			
				|  |  | +        <van-swipe-cell>
 | 
	
		
			
				|  |  | +          <van-panel>
 | 
	
		
			
				|  |  | +              <template #header>
 | 
	
		
			
				|  |  | +              <van-cell :title="'人员' + (i+1)" icon="manager-o" />
 | 
	
		
			
				|  |  | +            </template>
 | 
	
		
			
				|  |  | +        <!--  人员列表  -->
 | 
	
		
			
				|  |  | +          <div class="card" >
 | 
	
		
			
				|  |  | +            <div class="goods-card">
 | 
	
		
			
				|  |  | +              <div class="card-cell-checkbox" v-if="isShowCheckBox">
 | 
	
		
			
				|  |  | +                <van-checkbox v-model="v.checked" shape="square" @click.native="checkboxClicked(i)"/>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  | -              <div class="card-img-box" v-if="v.imgFile && v.imgFile.length >= 1" @click="preView(v.imgFile)">
 | 
	
		
			
				|  |  | -                <!-- <img :src="imgUrl(v.imgFile[1])" alt=""> -->
 | 
	
		
			
				|  |  | -                <ImageThumbnail
 | 
	
		
			
				|  |  | -                    :image-list="v.imgFile[1]"
 | 
	
		
			
				|  |  | -                    height="60px"
 | 
	
		
			
				|  |  | -                    width="80px"
 | 
	
		
			
				|  |  | -                    radius="8px"
 | 
	
		
			
				|  |  | -                />
 | 
	
		
			
				|  |  | +              <div>
 | 
	
		
			
				|  |  | +                <div class="card-img-box" v-if="v.imgFile && v.imgFile.length > 0" @click="preView(v.imgFile)">
 | 
	
		
			
				|  |  | +                  <!-- <img :src="imgUrl(v.imgFile[0])" alt=""> -->
 | 
	
		
			
				|  |  | +                  <ImageThumbnail
 | 
	
		
			
				|  |  | +                      :image-list="v.imgFile[0]"
 | 
	
		
			
				|  |  | +                      height="60px"
 | 
	
		
			
				|  |  | +                      width="80px"
 | 
	
		
			
				|  |  | +                      radius="8px"
 | 
	
		
			
				|  |  | +                  />
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +                <div class="card-img-box" v-if="v.imgFile && v.imgFile.length >= 1" @click="preView(v.imgFile)">
 | 
	
		
			
				|  |  | +                  <!-- <img :src="imgUrl(v.imgFile[1])" alt=""> -->
 | 
	
		
			
				|  |  | +                  <ImageThumbnail
 | 
	
		
			
				|  |  | +                      :image-list="v.imgFile[1]"
 | 
	
		
			
				|  |  | +                      height="60px"
 | 
	
		
			
				|  |  | +                      width="80px"
 | 
	
		
			
				|  |  | +                      radius="8px"
 | 
	
		
			
				|  |  | +                  />
 | 
	
		
			
				|  |  | +                </div>
 | 
	
		
			
				|  |  | +              </div>
 | 
	
		
			
				|  |  | +              <div class="card-cell-box">
 | 
	
		
			
				|  |  | +                <van-field required label="申请单位" v-model="v.companyName" rows="1" autosize :maxlength="200" 
 | 
	
		
			
				|  |  | +                placeholder="请输入申请单位"
 | 
	
		
			
				|  |  | +                :rules="[{ required: true, message: '申请单位不能为空' }]"
 | 
	
		
			
				|  |  | +                ></van-field>
 | 
	
		
			
				|  |  | +                <van-field required label="出入人员" v-model="v.userName" rows="1" autosize :maxlength="200" 
 | 
	
		
			
				|  |  | +                  placeholder="请输入出入人员"
 | 
	
		
			
				|  |  | +                  :rules="[{ required: true, message: '出入人员不能为空' }]"
 | 
	
		
			
				|  |  | +                ></van-field>
 | 
	
		
			
				|  |  | +                <select-cell
 | 
	
		
			
				|  |  | +                  title="证件类型"
 | 
	
		
			
				|  |  | +                  is-row
 | 
	
		
			
				|  |  | +                  v-model="v.idType"
 | 
	
		
			
				|  |  | +                  :data-list="getDictItem('letter_id_type')"
 | 
	
		
			
				|  |  | +                  required>
 | 
	
		
			
				|  |  | +              </select-cell>
 | 
	
		
			
				|  |  | +              <van-field
 | 
	
		
			
				|  |  | +                  required
 | 
	
		
			
				|  |  | +                  v-model="v.idCard"
 | 
	
		
			
				|  |  | +                  rows="1"
 | 
	
		
			
				|  |  | +                  autosize
 | 
	
		
			
				|  |  | +                  :maxlength="20"
 | 
	
		
			
				|  |  | +                  label="证件号码"
 | 
	
		
			
				|  |  | +                  :rules="[{ required: true, message: '证件号码不能为空' }]"
 | 
	
		
			
				|  |  | +                  placeholder="请输入证件号码"/>
 | 
	
		
			
				|  |  | +                <date-cell required title="进入时间" @change="arrivalTimeChangedHandler(v)" :max-date="maxDate" :min-date='minDate' :is-row="true"  v-model="v.arrivalTime" date-type="datetime" labeldateType="dateminute" />
 | 
	
		
			
				|  |  | +                <date-cell required title="离开时间" :max-date.sync="maxDate" :updateMaxDateNow="true" :min-date='v.departureTimeMinDate' :is-row="true"  v-model="v.departureTime" date-type="datetime" labeldateType="dateminute"/>
 | 
	
		
			
				|  |  |                </div>
 | 
	
		
			
				|  |  | -            </div>
 | 
	
		
			
				|  |  | -            <div class="card-cell-box">
 | 
	
		
			
				|  |  | -              <van-field required label="申请单位" v-model="v.companyName" rows="1" autosize :maxlength="200" 
 | 
	
		
			
				|  |  | -              placeholder="请输入申请单位"
 | 
	
		
			
				|  |  | -              :rules="[{ required: true, message: '申请单位不能为空' }]"
 | 
	
		
			
				|  |  | -              ></van-field>
 | 
	
		
			
				|  |  | -              <van-field required label="出入人员" v-model="v.userName" rows="1" autosize :maxlength="200" 
 | 
	
		
			
				|  |  | -                placeholder="请输入出入人员"
 | 
	
		
			
				|  |  | -                :rules="[{ required: true, message: '出入人员不能为空' }]"
 | 
	
		
			
				|  |  | -              ></van-field>
 | 
	
		
			
				|  |  | -              <select-cell
 | 
	
		
			
				|  |  | -                title="证件类型"
 | 
	
		
			
				|  |  | -                is-row
 | 
	
		
			
				|  |  | -                v-model="v.idType"
 | 
	
		
			
				|  |  | -                :data-list="getDictItem('letter_id_type')"
 | 
	
		
			
				|  |  | -                required>
 | 
	
		
			
				|  |  | -            </select-cell>
 | 
	
		
			
				|  |  | -            <van-field
 | 
	
		
			
				|  |  | -                required
 | 
	
		
			
				|  |  | -                v-model="v.idCard"
 | 
	
		
			
				|  |  | -                rows="1"
 | 
	
		
			
				|  |  | -                autosize
 | 
	
		
			
				|  |  | -                :maxlength="20"
 | 
	
		
			
				|  |  | -                label="证件号码"
 | 
	
		
			
				|  |  | -                :rules="[{ required: true, message: '证件号码不能为空' }]"
 | 
	
		
			
				|  |  | -                placeholder="请输入证件号码"/>
 | 
	
		
			
				|  |  | -              <date-cell required title="进入时间" @change="arrivalTimeChangedHandler(v)" :max-date="maxDate" :min-date='minDate' :is-row="true"  v-model="v.arrivalTime" date-type="datetime" labeldateType="dateminute" />
 | 
	
		
			
				|  |  | -              <date-cell required title="离开时间" :max-date.sync="maxDate" :updateMaxDateNow="true" :min-date='v.departureTimeMinDate' :is-row="true"  v-model="v.departureTime" date-type="datetime" labeldateType="dateminute"/>
 | 
	
		
			
				|  |  |              </div>
 | 
	
		
			
				|  |  |            </div>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        </van-panel>
 | 
	
		
			
				|  |  | +          </van-panel>
 | 
	
		
			
				|  |  | +          <template #right>
 | 
	
		
			
				|  |  | +            <van-button style="height: 100%;" square text="删除" type="danger" @click="deleteUser(v,i)" class="delete-button" />
 | 
	
		
			
				|  |  | +          </template>
 | 
	
		
			
				|  |  | +        </van-swipe-cell>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <div class="card">
 | 
	
		
			
				|  |  |          <!-- <div style="display: flex;justify-content: space-between; align-items: center;">
 | 
	
	
		
			
				|  | @@ -231,7 +236,7 @@ import { Toast,Dialog,ImagePreview } from 'vant'
 | 
	
		
			
				|  |  |  import { base64ToBlob } from '@/utils/base64TurnImg.js'
 | 
	
		
			
				|  |  |  import { upload } from '@/api/public'
 | 
	
		
			
				|  |  |  import writingPad from '@/components/writingPad/index.vue'
 | 
	
		
			
				|  |  | -import {outInRequestDetail,updateOutInRequest,deleteOutInRequest} from './api'
 | 
	
		
			
				|  |  | +import {outInRequestDetail,updateOutInRequest,deleteOutInRequest,deletedOutInRequestUser} from './api'
 | 
	
		
			
				|  |  |  export default {
 | 
	
		
			
				|  |  |    components: {Uploader, DateCell,ImageThumbnail,writingPad},
 | 
	
		
			
				|  |  |    data(){
 | 
	
	
		
			
				|  | @@ -366,6 +371,24 @@ export default {
 | 
	
		
			
				|  |  |          .catch(() => {
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | +    deleteUser(user,index){
 | 
	
		
			
				|  |  | +      Dialog.confirm({
 | 
	
		
			
				|  |  | +        title: '',
 | 
	
		
			
				|  |  | +        message: `是否删除 “${user.userName ? user.userName:"人员"+(index+1)}”,删除后将无法再恢复?`
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +        .then(async () => {          
 | 
	
		
			
				|  |  | +          deletedOutInRequestUser(user.id).then(res=>{
 | 
	
		
			
				|  |  | +            this.userInfos.splice(index,1);
 | 
	
		
			
				|  |  | +            this.$toast('删除成功');
 | 
	
		
			
				|  |  | +          }).catch(error=>{
 | 
	
		
			
				|  |  | +            this.$toast('删除失败');   
 | 
	
		
			
				|  |  | +          })
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        .catch((error) => {
 | 
	
		
			
				|  |  | +          // this.$toast('删除失败');
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +     
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  |      // 保存
 | 
	
		
			
				|  |  |      onSave(){
 | 
	
		
			
				|  |  |        this.submitHandler(1);
 | 
	
	
		
			
				|  | @@ -403,7 +426,7 @@ export default {
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      onFormFailed(data)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -      this.$toast(`请填写完整信息`)
 | 
	
		
			
				|  |  | +      // this.$toast(`请填写完整信息`)
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  |      //表单提交前校验
 | 
	
		
			
				|  |  |      customerValidate() {
 | 
	
	
		
			
				|  | @@ -466,13 +489,19 @@ export default {
 | 
	
		
			
				|  |  |          accompanyingPerson:this.outInRequestInfo.accompanyingPerson,
 | 
	
		
			
				|  |  |          remark:this.outInRequestInfo.remark,
 | 
	
		
			
				|  |  |          remarkImage: Array.isArray(this.outInRequestInfo.remarkImage)?this.outInRequestInfo.remarkImage.map(v=>{return v.imgPath}).toString(','):this.outInRequestInfo.remarkImage,
 | 
	
		
			
				|  |  | -        userInfos:[...this.userInfos],
 | 
	
		
			
				|  |  | +        userInfos:JSON.parse(JSON.stringify(this.userInfos)),
 | 
	
		
			
				|  |  |        };
 | 
	
		
			
				|  |  |        params.userInfos.forEach(item=>{
 | 
	
		
			
				|  |  |          delete item.departureTimeMinDate;
 | 
	
		
			
				|  |  |          delete item.imgFile;
 | 
	
		
			
				|  |  | -        item.arrivalTime=this.dayjs(item.arrivalTime).format('YYYY-MM-DD HH:mm:ss');
 | 
	
		
			
				|  |  | -        item.departureTime=this.dayjs(item.departureTime).format('YYYY-MM-DD HH:mm:ss');
 | 
	
		
			
				|  |  | +        if(item.arrivalTime)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          item.arrivalTime=this.dayjs(item.arrivalTime).format('YYYY-MM-DD HH:mm:ss');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(item.departureTime)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +          item.departureTime=this.dayjs(item.departureTime).format('YYYY-MM-DD HH:mm:ss');
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        })
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        updateOutInRequest(params).then(res => {
 |