odc.xiaohui
2023-03-09 fcb6cfdbdb5fbce7d02d8513719237e65a72f474
src/views/common/Audit.vue
@@ -28,12 +28,19 @@
            <el-button type="primary" @click="addAduitDialogOpen">添加</el-button>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="exportExcel">导入</el-button>
            <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-upload>
          </el-form-item>
        </el-form>
      </template>
      <el-table :data="list">
        <el-table-column prop="id" label="序号" width="60"></el-table-column>
        <el-table-column label="序号" type="index" width="180" align="center">
          <template slot-scope="scope">
            <span>{{ (current - 1) * size + scope.$index + 1 }}</span>
          </template>
        </el-table-column>
        <el-table-column width="80" prop="pic" label="头像">
          <template slot-scope="scope">
            <img :src="scope.row.pic" style="width: 40px;height: 40px; border-radius: 50%;">
@@ -66,14 +73,13 @@
        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="details(scope.row.id)" style="font-size:14px">详情</el-button>
            <el-button type="text" size="small" @click="audit(scope.row.id)" style="font-size:14px;color: red">审核
            <el-button type="text" size="small" @click="check(scope.row.id)" style="font-size:14px;color: red">审核
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination @current-change="handleCurrentChange" :current-page="queryInfo.current"
                     :page-size="queryInfo.size" layout="prev, pager, next"
                     :total="total"></el-pagination>
      <el-pagination @current-change="handleCurrentChange" :current-page="queryInfo.current" :page-size="queryInfo.size"
        layout="prev, pager, next" :total="total"></el-pagination>
    </el-card>
    <!--添加人员弹窗-->
    <el-dialog title="添加人员" :visible.sync="addAduitDialogVisible" width="50%" :before-close="addAduitClose">
@@ -82,7 +88,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>
@@ -90,63 +96,64 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="报案人 " prop="reporterName">
              <el-input v-model="auditFrom.reporterName" placeholder="请输入报案人 " clearable
                        :style="{width: '100%'}"></el-input>
              <el-input v-model="auditFrom.reporterName" placeholder="请输入报案人 " clearable :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="手机号码" prop="mobile">
              <el-input v-model="auditFrom.mobile" placeholder="请输入手机号码" clearable :style="{width: '100%'}">
              <el-input v-model="auditFrom.mobile" placeholder="请输入手机号码" clearable :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="身份证号" prop="idcard">
              <el-input v-model="auditFrom.idcard" placeholder="请输入身份证号" clearable :style="{width: '100%'}">
              <el-input v-model="auditFrom.idcard" placeholder="请输入身份证号" clearable :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="被骗时间" prop="cheatTime">
              <el-date-picker v-model="auditFrom.tmpTime" type="datetime" placeholder="选择日期时间"
                              :style="{width: '100%'}" format="yyyy-MM-dd HH:mm:ss"
                              :value-format="auditFrom.cheatTime"></el-date-picker>
              <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>
          </el-col>
          <el-col :span="12">
            <el-form-item label="涉案金额" prop="amountInvolved">
              <el-input v-model="auditFrom.amountInvolved" placeholder="请输入涉案金额" clearable
                        :style="{width: '100%'}"></el-input>
              <el-input v-model="auditFrom.amountInvolved" placeholder="请输入涉案金额" clearable :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="案件描述" prop="reportDescription">
              <el-input v-model="auditFrom.reportDescription" placeholder="请输入案件描述" clearable
                        :style="{width: '100%'}"></el-input>
                :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="补充信息" prop="information">
              <el-input v-model="auditFrom.information" type="textarea" placeholder="请输入补充信息"
                        :autosize="{minRows: 4, maxRows: 4}" :style="{width: '100%'}"></el-input>
                :autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="上传" prop="fileList" required>
              <el-upload ref="reportMaterials" :file-list="auditFrom.fileList"
                         action="/api/minio/upload" list-type="picture" :on-success="handleMaterialSuccess">
            <el-form-item label="上传" prop="fileList">
              <el-upload ref="reportMaterials" :file-list="auditFrom.fileList" action="/api/minio/upload"
                list-type="picture" :on-success="handleMaterialSuccess">
                <el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
              </el-upload>
            </el-form-item>
          </el-col>
          <el-col :span="24">
          <!-- <el-col :span="24">
            <el-form-item label="关联案件" prop="causeId">
              <el-select v-model="auditFrom.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> -->
        </el-form>
      </el-row>
      <span slot="footer" class="dialog-footer">
@@ -154,74 +161,154 @@
        <el-button type="primary" @click="addAduit">确 定</el-button>
      </span>
    </el-dialog>
    <!--查看详情弹窗-->
    <el-dialog title="案件详情" :visible.sync="infoAduitDialogVisible" width="50%" :before-close="infoAduitClose">
    <!--审核弹窗-->
    <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-image style="width: 145px; height: 145px" :src="picShow" :preview-src-list="new Array(picShow)"></el-image>
              <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">
            <el-form-item label="报案人 ">
              <el-input v-model="auditInfo.reporterName" disabled
                        :style="{width: '100%'}"></el-input>
              <el-input v-model="auditInfo.reporterName" disabled :style="{ width: '100%' }"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="手机号码">
              <el-input v-model="auditInfo.mobile" disabled :style="{width: '100%'}">
              <el-input v-model="auditInfo.mobile" disabled :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="身份证号">
              <el-input v-model="auditInfo.idcard" disabled :style="{width: '100%'}">
              <el-input v-model="auditInfo.idcard" disabled :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </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>
                :style="{ width: '100%' }" format="yyyy-MM-dd HH:mm:ss" :value-format="auditFrom.cheatTime"
                disabled></el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="涉案金额">
              <el-input v-model="auditInfo.amountInvolved" placeholder="请输入涉案金额"
                        :style="{width: '100%'}" disabled></el-input>
              <el-input v-model="auditInfo.amountInvolved" 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.reportDescription" placeholder="请输入案件描述"
                        :style="{width: '100%'}" disabled></el-input>
              <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>
                :autosize="{ minRows: 4, maxRows: 4 }" :style="{ width: '100%' }" disabled></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="24">
            <el-form-item label="上传" required>
              <el-upload ref="reportMaterials" :file-list="auditInfo.fileList"
                         action="/api/minio/upload" list-type="picture" :on-success="handleMaterialSuccess">
                <el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
              </el-upload>
            <el-form-item label="材料">
              <div class="metalL">
                <el-image v-for="(img, index) in reportData" :src="img" style="height: 200px;width: 200px;"></el-image>
              </div>
            </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>
                <el-option v-for="item in causeOptions" :key="item.id" :label="item.name"
                           :value="item.id"></el-option>
              <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-form>
      </el-row>
      <span slot="footer" class="dialog-footer">
        <el-button @click="checkVisible = false">取 消</el-button>
        <el-button type="primary" @click="checkAdd">确 定</el-button>
      </span>
    </el-dialog>
    <!--查看详情弹窗-->
    <el-dialog title="案件详情" :visible.sync="infoAduitDialogVisible" width="50%" :before-close="detailsClose">
      <el-row :gutter="15">
        <el-form ref="infoAduitForm" :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">
            <el-form-item label="报案人 ">
              <el-input v-model="auditInfo.reporterName" disabled :style="{ width: '100%' }"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="手机号码">
              <el-input v-model="auditInfo.mobile" disabled :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="身份证号">
              <el-input v-model="auditInfo.idcard" disabled :style="{ width: '100%' }">
              </el-input>
            </el-form-item>
          </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-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="涉案金额">
              <el-input v-model="auditInfo.amountInvolved" 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.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>
              </div>
            </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>
                <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-form>
      </el-row>
    </el-dialog>
@@ -229,18 +316,20 @@
</template>
<script>
import {getAuditList, getImgUrl, getReportById, report} from '@/api/common'
import { getAuditList, getImgUrl, getReportById, report, checkPass } from '@/api/common'
export default {
  name: "Audit",
  data() {
    return {
      current: null,
      size: null,
      queryInfo: {
        people: '',
        phoneNumber: '',
        isInGroup: '5',
        isInGroup: null,
        current: 1,
        HavaMaterial: '5',
        HavaMaterial: null,
        size: 10,
      },
      auditFrom: {
@@ -258,10 +347,12 @@
        tmpTime: '',
      },
      auditInfo: {},
      picShow: "",
      reportData: [],
      optionsGroup: [
        {
          value: '5',
          value: null,
          label: '全部'
        },
        {
@@ -275,7 +366,7 @@
      ],
      optionsMate: [
        {
          value: '5',
          value: null,
          label: '全部'
        },
        {
@@ -291,6 +382,7 @@
      list: [],
      addAduitDialogVisible: false,
      infoAduitDialogVisible: false,
      checkVisible: false,
      causeOptions: [],
      rules: {
        reporterName: [{
@@ -298,17 +390,25 @@
          message: '请输入报案人 ',
          trigger: 'blur'
        }],
        mobile: [{
        mobile:
          [{ required: true, message: '请输入手机号码', trigger: 'blur' },
          {
            validator: function (rule, value, callback) {
              if (/^1[34578]\d{9}$/.test(value) == false) {
                callback(new Error("请输入正确的手机号"));
              } else {
                callback();
              }
            }, trigger: 'blur'
          }],
        idcard: [{ required: true, message: '请输入身份证ID', trigger: 'blur' },
        { pattern: /(^\d{15}$)|(^\d{19}$)|(^\d{17}(\d|X|x)$)/, message: '你的身份证格式不正确' }],
        cheatTime: [{
          required: true,
          message: '请输入手机号码',
          message: '请输入被骗时间',
          trigger: 'blur'
        }],
        idcard: [{
          required: true,
          message: '请输入身份证号',
          trigger: 'blur'
        }],
        tmpTime: [{
        cheatTime: [{
          required: true,
          message: '请输入被骗时间',
          trigger: 'blur'
@@ -334,16 +434,101 @@
          trigger: 'change'
        }],
      },
      rules2:{
        causeId: [
          { required: true, message: '请选择活动区域', trigger: 'change' }
        ]
      }
    }
  },
  created() {
    this.getList()
    this.getCauseOptions()
  },
  methods: {
    //案件人员导入成功后
    reporterRespond(res) {
      if (res.code == 200) {
        this.$message({
          message: '上传成功',
          type: 'success'
        }
        )
      } else {
        this.$message({
          message: res.msg,
          type: 'error'
        })
      }
      this.getList()
    },
    beforeAvatarUpload(file) {
      let Xls = file.name.split('.');
      if (Xls[1] === 'xls' || Xls[1] === 'xlsx') {
        return file
      } else {
        this.$message.error('上传文件只能是 xls/xlsx 格式!')
        return false
      }
    },
    //审核确定
    checkAdd() {
      let form = null;
      form = this.auditInfo;
      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
        if (res.pic === '' || res.pic === null) {
          this.picShow = './logo.jpg';
        } else {
          getImgUrl(res.pic).then(res => {
            this.picShow = 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 = ""
    },
    detailsClose() {
      this.infoAduitDialogVisible = false
      this.$refs.infoAduitForm.resetFields()
      this.reportData = []
      this.picShow = ""
    },
    addAduit() {
      this.$refs.addAduitForm.validate(async (vaild) => {
@@ -351,6 +536,7 @@
        this.auditFrom.reportMaterials = this.auditFrom.fileList.map(i => i.data).join(',')
        report(this.auditFrom).then(res => {
          this.$message.success('提交成功')
          this.auditFrom = {}
          this.addAduitDialogVisible = false
          this.getList()
        }).catch(err => {
@@ -359,12 +545,11 @@
      })
    },
    async getCauseOptions() {
      const {data: data} = await this.$http.get('/api/cause/getCauseIdAndName');
      const { data: data } = await this.$http.get('/api/cause/getCauseIdAndName');
      this.causeOptions = data.data;
    },
    handleAvatarSuccess(res, file) {
      this.auditFrom.pic = res.data
      console.log(res.data)
      getImgUrl(res.data).then(res => {
        this.picShow = res
      })
@@ -378,8 +563,8 @@
    },
    addAduitClose() {
      this.addAduitDialogVisible = false
      this.$refs.addAduitForm.resetFields()
      this.picShow = ""
      this.$refs.addAduitForm.resetFields()
    },
    getList() {
      let param = {}
@@ -387,14 +572,16 @@
      param.phoneNumber = this.queryInfo.phoneNumber
      param.current = this.queryInfo.current
      param.size = this.queryInfo.size
      param.isInGroup = this.queryInfo.isInGroup !== '5' ? this.queryInfo.isInGroup : ''
      param.HavaMaterial = this.queryInfo.HavaMaterial !== '5' ? this.queryInfo.HavaMaterial : ''
      param.isInGroup = this.queryInfo.isInGroup
      param.HavaMaterial = this.queryInfo.HavaMaterial
      getAuditList(param).then(res => {
        this.total = res.total
        this.list = res.records
        this.size = res.size
        this.current = res.current
        this.list.forEach(x => {
          if (x.pic === '' || x.pic === null) {
            x.pic = './logo.png';
            x.pic = './logo.jpg';
          } else {
            getImgUrl(x.pic).then(res => {
              x.pic = res
@@ -418,9 +605,26 @@
    details(id) {
      getReportById(id).then(res => {
        this.auditInfo = res
        getImgUrl(res.pic).then(res => {
          this.picShow = res
        })
        if (res.pic === '' || res.pic === null) {
          this.picShow = './logo.jpg';
        } else {
          getImgUrl(res.pic).then(res => {
            this.picShow = 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
      })
    },
@@ -443,5 +647,4 @@
.el-form-item {
  margin-top: 20px;
}
</style>