odc.xiaohui
2023-03-23 05df4f202c9a21b384e4b6109f22901c00859a9a
src/views/common/Audit.vue
@@ -28,9 +28,9 @@
            <el-button type="primary" @click="addAduitDialogOpen">添加</el-button>
          </el-form-item>
          <el-form-item>
            <el-upload name="multipartFile" class="upload-demo" action="/api/cause/reporterUpload"
            <el-upload name="multipartFile" class="upload-demo" action="/api/report/reporterUpload"
              :show-file-list="false" :before-upload="beforeAvatarUpload" :on-success="reporterRespond" :limit="1">
              <el-button type="primary">导入</el-button>
<!--              <el-button type="primary">导入</el-button>-->
            </el-upload>
          </el-form-item>
        </el-form>
@@ -51,7 +51,15 @@
        <el-table-column width="180" prop="idcard" label="证件号码"></el-table-column>
        <el-table-column width="100" prop="isCommission" label="是否审核">
          <template slot-scope="scope">
            <span v-if="scope.row.isCommission == 1">是</span>
            <el-popover
                v-if="scope.row.status == 2"
                placement="bottom"
                title="驳回原因"
                width="200"
                trigger="click"
                :content="scope.row.remarks">
              <el-button type="text"  slot="reference">已驳回</el-button>
            </el-popover>
            <span v-else>否</span>
          </template>
        </el-table-column>
@@ -88,7 +96,7 @@
          <el-col :span="12">
            <el-form-item label="头像" prop="pic" required>
              <el-upload ref="pic" action="/api/minio/upload" :show-file-list="false" :on-success="handleAvatarSuccess"
                         list-type="picture-card" accept="image/*">
                list-type="picture-card" accept="image/*">
                <img v-if="picShow" :src="picShow" style="width: 145px;height: 145px">
                <i v-else class="el-icon-plus"></i>
              </el-upload>
@@ -114,7 +122,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="被骗时间" prop="cheatTime">
              <el-date-picker v-model="auditFrom.cheatTime" type="datetime" placeholder="选择日期时间"
              <el-date-picker v-model="auditFrom.cheatTime+''" type="datetime" placeholder="选择日期时间"
                :style="{ width: '100%' }" format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
            </el-form-item>
@@ -158,6 +166,7 @@
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addAduitDialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="addAduit">确 定</el-button>
      </span>
    </el-dialog>
@@ -165,14 +174,13 @@
    <!--审核弹窗-->
    <el-dialog title="审核" :visible.sync="checkVisible" width="50%" :before-close="infoAduitClose">
      <el-row :gutter="15">
        <el-form ref="infoAduitForm" :model="auditInfo" size="medium" label-width="100px">
        <el-form ref="infoAduitForm" :rules="rules2" :model="auditInfo" size="medium" label-width="100px">
          <el-col :span="12">
            <el-form-item label="头像" prop="pic" required>
              <el-upload ref="pic" action="/api/minio/upload" :show-file-list="false" :on-success="handleAvatarSuccess"
                list-type="picture-card" accept="image/*" disabled>
                <el-image style="width: 145px; height: 145px" :src="picShow" :preview-src-list="new Array(picShow)">
                </el-image>
              </el-upload>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -194,9 +202,8 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="被骗时间">
              <el-date-picker v-model="auditInfo.tmpTime" type="datetime" placeholder="选择日期时间"
                :style="{ width: '100%' }" format="yyyy-MM-dd HH:mm:ss" :value-format="auditFrom.cheatTime"
                disabled></el-date-picker>
              <el-input v-model="auditInfo.cheatTime" placeholder="请选择报案时间 " clearable disabled :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -205,28 +212,61 @@
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="案件描述">
              <el-input v-model="auditInfo.reportDescription" placeholder="请输入案件描述" :style="{ width: '100%' }" disabled>
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="补充信息">
              <el-input v-model="auditInfo.information" type="textarea" placeholder="请输入补充信息"
                :autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }" disabled></el-input>
            </el-form-item>
          </el-col>
<!--          <el-col :span="24">-->
<!--            <el-form-item label="案件描述">-->
<!--              <el-input v-model="auditInfo.reportDescription" placeholder="请输入案件描述" :style="{ width: '100%' }" disabled>-->
<!--              </el-input>-->
<!--            </el-form-item>-->
<!--          </el-col>-->
<!--          <el-col :span="24">-->
<!--            <el-form-item label="补充信息">-->
<!--              <el-input v-model="auditInfo.information" type="textarea" placeholder="请输入补充信息"-->
<!--                :autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }" disabled></el-input>-->
<!--            </el-form-item>-->
<!--          </el-col>-->
          <el-col :span="24">
            <el-form-item label="材料">
              <div class="metalL">
                <el-image v-for="(img,index) in reportData" :src="img" style="height: 200px;width: 200px;"></el-image>
                <el-tabs v-model="activeName" @tab-click="handleClickTab">
                  <el-tab-pane label="身份证" name="a">
                   <div v-for="item in idCardMaterials">
                     <el-image
                         style="width: 100px; height: 100px"
                         :src="item"
                         fit="fill"></el-image>
                   </div>
                  </el-tab-pane>
                  <el-tab-pane label="合同" name="b">
                    <div v-for="item in contractMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                  <el-tab-pane label="交易凭证" name="c">
                    <div v-for="item in transactionMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                  <el-tab-pane label="其他" name="d">
                    <div v-for="item in elseMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                </el-tabs>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="关联案件" prop="causeId">
              <el-select v-model="auditInfo.causeId" placeholder="请选择下拉选择" clearable :style="{ width: '50%' }">
              <el-select v-model="auditInfo.causeId+''" placeholder="请选择下拉选择" clearable :style="{ width: '50%' }">
                <el-option v-for="item in causeOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
@@ -235,8 +275,25 @@
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-button @click="checkVisible = false">取 消</el-button>
        <el-button type="danger" @click="innerLayerVisible =true">驳 回</el-button>
        <el-button type="primary" @click="checkAdd">确 定</el-button>
      </span>
      <el-dialog
          width="30%"
          title="驳回原因"
          :visible.sync="innerLayerVisible"
          append-to-body>
        <div class="reason-for-rejection">
          <label class="reason-for-rejection-lable">驳回原因:</label>
          <el-input v-model="reasonForRejectionInput" placeholder="请输入内容"></el-input>
        </div>
        <div slot="footer" class="dialog-footer">
          <el-button @click="innerLayerVisible = false">取 消</el-button>
          <el-button type="primary" @click="rejectionConfirmation">确定</el-button>
        </div>
      </el-dialog>
    </el-dialog>
@@ -272,9 +329,8 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="被骗时间">
              <el-date-picker v-model="auditInfo.tmpTime" type="datetime" placeholder="选择日期时间"
                :style="{ width: '100%' }" format="yyyy-MM-dd HH:mm:ss" :value-format="auditFrom.cheatTime"
                disabled></el-date-picker>
              <el-input v-model="auditInfo.cheatTime" placeholder="请选择报案时间 " clearable disabled :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -284,24 +340,53 @@
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="案件描述">
              <el-input v-model="auditInfo.reportDescription" placeholder="请输入案件描述" :style="{ width: '100%' }" disabled>
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="补充信息">
              <el-input v-model="auditInfo.information" type="textarea" placeholder="请输入补充信息"
                :autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="材料">
              <div class="metalL">
                <el-image v-for="(img,index) in reportData" :src="img" style="height: 200px;width: 200px;"></el-image>
                <el-tabs v-model="activeName" @tab-click="handleClickTab">
                  <el-tab-pane label="身份证" name="a">
                    <div v-for="item in idCardMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                  <el-tab-pane label="合同" name="b">
                    <div v-for="item in contractMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                  <el-tab-pane label="交易凭证" name="c">
                    <div v-for="item in transactionMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                  <el-tab-pane label="其他" name="d">
                    <div v-for="item in elseMaterials">
                      <el-image
                          style="width: 100px; height: 100px"
                          :src="item"
                          fit="fill"></el-image>
                    </div>
                  </el-tab-pane>
                </el-tabs>
              </div>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="关联案件" prop="causeId">
              <el-select v-model="auditInfo.causeId+''" placeholder="请选择下拉选择" clearable :style="{ width: '50%' }">
                <el-option v-for="item in causeOptions" :key="item.id" :label="item.name" :value="item.id"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <!-- <el-col :span="24">
            <el-form-item label="关联案件" prop="causeId">
              <el-select v-model="auditFrom.causeId" placeholder="请选择下拉选择" clearable :style="{ width: '50%' }" disabled>
@@ -317,11 +402,20 @@
<script>
import { getAuditList, getImgUrl, getReportById, report, checkPass } from '@/api/common'
import {reasonForRejection} from "@/api/Audit";
export default {
  name: "Audit",
  data() {
    return {
      idCardMaterials:[],
      contractMaterials:[],
      transactionMaterials:[],
      elseMaterials:[],
      fits: ['fill', 'contain', 'cover', 'none', 'scale-down'],
      activeName: 'a',
      reasonForRejectionInput:'',
      innerLayerVisible:false,
      current: null,
      size: null,
      queryInfo: {
@@ -347,6 +441,7 @@
        tmpTime: '',
      },
      auditInfo: {},
      picShow: "",
      reportData: [],
      optionsGroup: [
@@ -407,11 +502,6 @@
          message: '请输入被骗时间',
          trigger: 'blur'
        }],
        cheatTime: [{
          required: true,
          message: '请输入被骗时间',
          trigger: 'blur'
        }],
        amountInvolved: [{
          required: true,
          message: '请输入涉案金额',
@@ -433,6 +523,11 @@
          trigger: 'change'
        }],
      },
      rules2:{
        causeId: [
          { required: true, message: '请选择活动区域', trigger: 'change' }
        ]
      }
    }
  },
  created() {
@@ -441,6 +536,12 @@
  },
  methods: {
    openInnerLayerVisible(){
    },
    handleClickTab(t,e){
      console.log(t,e)
    },
    //案件人员导入成功后
    reporterRespond(res) {
      if (res.code == 200) {
@@ -466,51 +567,103 @@
        return false
      }
    },
    rejectionConfirmation(){
      let data={
        id:this.auditInfo.id,
        reason:this.reasonForRejectionInput
      }
      reasonForRejection(data).then(res=>{
        console.log(res)
        this.getList()
        this.checkVisible=false
        this.innerLayerVisible =false
      })
    },
    //审核确定
    checkAdd() {
      let form = null;
      form = this.auditInfo;
      checkPass(form).then(res => {
        this.$message.success('提交成功')
        this.getList()
        this.checkVisible = false;
      console.log(form)
      this.$refs.infoAduitForm.validate((valid)=>{
        if(valid){
          checkPass(form).then(res => {
            this.$message.success('提交成功')
            this.getList()
            this.checkVisible = false;
          })
        }else{
          return false;
        }
      })
    },
    //审核
    check(val) {
      getReportById(val).then(res => {
        this.auditInfo = res
        console.log(this.auditInfo)
        if (res.idCardMaterials){
          this.idCardMaterials=res.idCardMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
       if (res.contractMaterials){
         this.contractMaterials=res.contractMaterials.split(',').map(item=>{
           return item='/minio/img/'+item
         })
       }
        if (res.transactionMaterials){
          this.transactionMaterials=res.transactionMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
        if (res.elseMaterials){
          this.elseMaterials=res.elseMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
        this.reasonForRejectionInput= this.auditInfo.remarks||''
        console.log(res)
        if (res.pic === '' || res.pic === null) {
          this.picShow = './logo.jpg';
        } else {
          getImgUrl(res.pic).then(res => {
            this.picShow = res
          })
            this.picShow = '/minio/img/'+res.pic
        }
        var addressList = res.reportMaterials.split(",")
        for (let item of addressList) {
          if (item === '' || item === null) {
            // this.reportData.push('./logo.jpg');
          } else {
            getImgUrl(item).then(res => {
              this.reportData.push(res);
            })
        if (res.reportMaterials) {
          var addressList = res.reportMaterials.split(",")
          for (let item of addressList) {
            if (item === '' || item === null) {
              // this.reportData.push('./logo.jpg');
            } else {
              this.reportData=[];
              getImgUrl(item).then(res => {
                this.reportData.push(res);
              })
            }
          }
        }
        this.checkVisible = true
      })
    },
    infoAduitClose() {
      this.checkVisible = false
      this.$refs.infoAduitForm.resetFields()
      this.reportData=[]
      this.picShow=""
      this.reportData = []
      this.picShow = ""
    },
    detailsClose() {
      this.infoAduitDialogVisible = false
      this.$refs.infoAduitForm.resetFields()
      this.reportData=[]
      this.picShow=""
      this.reportData = []
      this.picShow = ""
    },
    addAduit() {
      this.$refs.addAduitForm.validate(async (vaild) => {
@@ -529,6 +682,7 @@
    async getCauseOptions() {
      const { data: data } = await this.$http.get('/api/cause/getCauseIdAndName');
      this.causeOptions = data.data;
      console.log(this.causeOptions)
    },
    handleAvatarSuccess(res, file) {
      this.auditFrom.pic = res.data
@@ -569,6 +723,7 @@
              x.pic = res
            })
          }
          console.log(this.list)
        })
      })
    },
@@ -587,23 +742,46 @@
    details(id) {
      getReportById(id).then(res => {
        this.auditInfo = res
        if (res.idCardMaterials){
          this.idCardMaterials=res.idCardMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
        if (res.contractMaterials){
          this.contractMaterials=res.contractMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
        if (res.transactionMaterials){
          this.transactionMaterials=res.transactionMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
        if (res.elseMaterials){
          this.elseMaterials=res.elseMaterials.split(',').map(item=>{
            return item='/minio/img/'+item
          })
        }
        if (res.pic === '' || res.pic === null) {
          this.picShow = './logo.jpg';
        } else {
          getImgUrl(res.pic).then(res => {
            this.picShow = res
          })
          this.picShow = '/minio/img/'+res.pic
        }
        var addressList = res.reportMaterials.split(",")
        for (let item of addressList) {
          if (item === '' || item === null) {
            // this.reportData.push('./logo.jpg');
          } else {
            getImgUrl(item).then(res => {
              this.reportData.push(res);
            })
        if (res.reportMaterials) {
          var addressList = res.reportMaterials.split(",")
          for (let item of addressList) {
            if (item === '' || item === null) {
              // this.reportData.push('./logo.jpg');
            } else {
              getImgUrl(item).then(res => {
                this.reportData.push(res);
              })
            }
          }
        }
        this.infoAduitDialogVisible = true
      })
    },
@@ -626,4 +804,11 @@
.el-form-item {
  margin-top: 20px;
}
.reason-for-rejection{
  display: flex;
  align-items: center;
  .reason-for-rejection-lable{
    width: 120px;
  }
}
</style>