Răsfoiți Sursa

解决缺陷

zhulu 2 zile în urmă
părinte
comite
2970156dd9

+ 1 - 1
src/views/menu/introduceLetter/letter/approvalOutInRequest.vue

@@ -378,7 +378,7 @@ export default {
     }
   }
   .card-cell-box{
-    width: 60%;
+    width: 70%;
     .van-cell{
       padding: 4px;
       &::after{

+ 8 - 0
src/views/menu/introduceLetter/outIn/api.js

@@ -41,6 +41,14 @@ export function updateOutInRequest(outInRequestInfo) {
   });
 }
 
+// 删除出入人员
+export function deletedOutInRequestUser(id) {
+  return request({
+    url: "/core/letter/outinrequest/user/"+id,
+    method: "delete",
+  });
+}
+
 
 
 

+ 91 - 62
src/views/menu/introduceLetter/outIn/fillOutInInfo.vue

@@ -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 => {