| | |
| | | <div class="evidence-title">调查取证</div> |
| | | <div class="evidence-form"> |
| | | <el-form ref="evidenceForm" label-width="160px" :model="evidence" :rules="evidenceRules" autoComplete="on"> |
| | | <!-- 承办队员 --> |
| | | <el-form-item label="承办队员:" prop="undertaker"> |
| | | <el-input v-model="evidence.undertaker" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | <!-- 协办队员 --> |
| | | <el-form-item label="协办队员:" prop="assistant"> |
| | | <el-input v-model="evidence.assistant" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | <div class="evidence-item"> |
| | | <!-- 承办队员 --> |
| | | <el-form-item label="承办队员:" prop="undertaker"> |
| | | <el-input v-model="evidence.undertaker" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | <!-- 协办队员 --> |
| | | <el-form-item label="协办队员:" label-width="100px" prop="assistant"> |
| | | <el-input v-model="evidence.assistant" placeholder="请输入姓名"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 时间 --> |
| | | <el-form-item label="时间:" prop="investigationTime"> |
| | | <el-date-picker v-model="evidence.investigationTime" type="datetime" placeholder="选择时间"> |
| | |
| | | <el-input v-model="evidence.caseAction" placeholder="请输入案由"></el-input> |
| | | </el-form-item> |
| | | <!-- 当事人信息 --> |
| | | <el-form-item label="当事人信息"> |
| | | <el-input suffix-icon="el-icon-s-order" @focus="openDialog"></el-input> |
| | | <el-form-item label="当事人信息:" prop="userInfo"> |
| | | <el-input suffix-icon="el-icon-s-order" v-model="evidence.userInfo" @focus="openDialog"></el-input> |
| | | </el-form-item> |
| | | <!-- 情况描述 --> |
| | | <el-form-item label="情况描述:" prop="description"> |
| | |
| | | v-model="evidence.description" placeholder="请输入情况描述,限制200字以内"></el-input> |
| | | </el-form-item> |
| | | <!-- 照片附件 --> |
| | | <el-form-item label="照片附件:" prop="photo"> |
| | | <el-form-item label="照片附件:" prop="pic"> |
| | | <div class="upImg"> |
| | | <div class="img-list"> |
| | | <img :src="item" alt="" v-for="(item,index) in evidence.pic" :key="index"> |
| | | <div class="img-list" v-if="evidence.pic.length!==0"> |
| | | <div class="img" v-for="(item,index) in evidence.pic" :key="index"> |
| | | <img :src="item" alt=""> |
| | | <i class="el-icon-close myicon" @click="handleRemove(index)"></i> |
| | | </div> |
| | | </div> |
| | | <div class="upload" v-if="evidence.pic.length<4"> |
| | | <el-upload :file-list="fileList" class="upload-demo" |
| | | action="http://42.193.1.25:8082/sccg/file/medias" multiple :show-file-list="false" |
| | | action="/sccg/file/medias" multiple :show-file-list="false" |
| | | :limit="4" :on-success="handleSuccess2" :headers="getToken()"> |
| | | <i class="el-icon-plus"></i> |
| | | </el-upload> |
| | |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="user-form"> |
| | | <el-dialog :visible.sync="dialogUser" width="80%" title="调度信息" v-if="dialogUser" :before-close="handleClose" |
| | | append-to-body> |
| | | 11111 |
| | | </el-dialog> |
| | | <div class="user-form" v-show="userFlag"> |
| | | <div class="user-form-header"> |
| | | <span>调度信息</span> |
| | | <i class="el-icon-close" @click="closeUserForm"></i> |
| | | </div> |
| | | <div class="user-form-content"> |
| | | <el-form ref="userForm" label-width="120px" :model="user" :rules="userRules" autoComplete="on"> |
| | | <!-- 类型 --> |
| | | <el-form-item label="类型:" prop="illegalType"> |
| | | <el-select v-model="user.illegalType" placeholder="请选择"> |
| | | <el-option v-for="item in typeOptions" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 姓名、手机号 --> |
| | | <div class="user-item"> |
| | | <!-- 姓名 --> |
| | | <el-form-item label="当事人姓名:" prop="name"> |
| | | <el-input v-model="user.name"></el-input> |
| | | </el-form-item> |
| | | <!-- 手机号 --> |
| | | <el-form-item label="手机号码:" prop="phoneCode"> |
| | | <el-input v-model="user.phoneCode"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 证件 --> |
| | | <div class="user-item"> |
| | | <el-form-item label="证件类型:" prop="certificateType"> |
| | | <el-select v-model="user.certificateType" placeholder="请选择"> |
| | | <el-option v-for="item in cardOptions" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="证件号码:" prop="certificateCode"> |
| | | <el-input v-model="user.certificateCode"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 文化程度\职业 --> |
| | | <div class="user-item"> |
| | | <!-- 文化程度 --> |
| | | <el-form-item label="文化程度:" prop="educationDegree"> |
| | | <el-select v-model="user.educationDegree" placeholder="请选择"> |
| | | <el-option v-for="item in degreeOptions" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 职业 --> |
| | | <el-form-item label="职业:" prop="career"> |
| | | <el-input v-model="user.career"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 工作单位及职务 --> |
| | | <el-form-item label="工作单位及职务:" prop="work"> |
| | | <el-input v-model="user.work"></el-input> |
| | | </el-form-item> |
| | | <!-- 民族\籍贯 --> |
| | | <div class="user-item"> |
| | | <!-- 民族 --> |
| | | <el-form-item label="民族:" prop="nation"> |
| | | <!-- <el-select v-model="user.nation" placeholder="请选择民族"> --> |
| | | <el-select v-model="user.nation" placeholder="请选择"> |
| | | <el-option v-for="item in nationOptions" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | <!-- <el-input v-model="user.nation"></el-input> --> |
| | | </el-form-item> |
| | | <!-- 籍贯 --> |
| | | <el-form-item label="籍贯:" prop="nativePlace"> |
| | | <el-input v-model="user.nativePlace"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 现住址 --> |
| | | <el-form-item label="现住址:" prop="liveAddress"> |
| | | <el-input v-model="user.liveAddress"></el-input> |
| | | </el-form-item> |
| | | <!-- 户籍所在地 --> |
| | | <el-form-item label="户籍所在地:" prop="registerAddress"> |
| | | <el-input v-model="user.registerAddress"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="user-form-footer"> |
| | | <el-button type="primary" @click="checkUser">确定</el-button> |
| | | <el-button>返回</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { getTypeList } from '@/utils/helper' |
| | | import {validateName,validatePhone,validateCardId} from '@/utils/validate' |
| | | export default { |
| | | data() { |
| | | const checkName = (rule, value, callback) => { |
| | |
| | | } |
| | | } |
| | | const checkPic = (rule, value, callback) => { |
| | | if (value.length !== 0) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('请上传照片附件')); |
| | | } |
| | | } |
| | | const checkIll = (rule, value, callback) => { |
| | | if (value) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('案件类型不能为空')); |
| | | } |
| | | } |
| | | const checkName3 = (rule, value, callback) => { |
| | | if (value) { |
| | | validateName(value) ? callback() : callback(new Error('请输入正确的姓名')) |
| | | } else { |
| | | callback(new Error('当事人姓名不能为空')); |
| | | } |
| | | } |
| | | const checkPhone = (rule, value, callback) => { |
| | | if (value) { |
| | | validatePhone(value) ? callback() : callback(new Error('请输入正确的手机号码')) |
| | | } else { |
| | | callback(new Error('手机号码不能为空')); |
| | | } |
| | | } |
| | | const checkCard = (rule, value, callback) => { |
| | | if (value) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('证件类型不能为空')); |
| | | } |
| | | } |
| | | const checkCode = (rule, value, callback) => { |
| | | if (value) { |
| | | validateCardId(value) ? callback() : callback(new Error('请输入正确的证件号码')) |
| | | } else { |
| | | callback(new Error('证件号码不能为空')); |
| | | } |
| | | } |
| | | const checkWh = (rule, value, callback) => { |
| | | if (value) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('文化程度不能为空')); |
| | | } |
| | | } |
| | | // const checkCareer = (rule, value, callback) => { |
| | | // if (value) { |
| | | // callback() |
| | | // } else { |
| | | // callback(); |
| | | // } |
| | | // } |
| | | // const checkWork = (rule, value, callback) => { |
| | | // if (value) { |
| | | // callback() |
| | | // } else { |
| | | // callback(new Error('工作单位及职务不能为空')); |
| | | // } |
| | | // } |
| | | const checkNation = (rule, value, callback) => { |
| | | if (value) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('民族不能为空')); |
| | | } |
| | | } |
| | | // const checkNaP = (rule, value, callback) => { |
| | | // if (value) { |
| | | // callback() |
| | | // } else { |
| | | // callback(new Error('籍贯不能为空')); |
| | | // } |
| | | // } |
| | | const checkLiveAdd = (rule, value, callback) => { |
| | | if (value) { |
| | | callback() |
| | | } else { |
| | | callback(new Error('现住址不能为空')); |
| | | } |
| | | } |
| | | // const checkRegAdd = (rule, value, callback) => { |
| | | // if (value) { |
| | | // callback() |
| | | // } else { |
| | | // callback(new Error('户籍所在地不能为空')); |
| | | // } |
| | | // } |
| | | const checkFlag = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('用户信息不能为空')) |
| | | } |
| | | } |
| | | return { |
| | | evidence: { |
| | | pic: [] |
| | | pic: [], |
| | | userInfo: '', |
| | | }, |
| | | evidenceRules: { |
| | | userInfo: [ |
| | | { trigger: 'change', validator: checkFlag } |
| | | ], |
| | | undertaker: [ |
| | | { |
| | | trigger: 'blur', validator: checkName |
| | |
| | | ], |
| | | }, |
| | | fileList: [], |
| | | user: {}, |
| | | dialogUser: false, |
| | | user: { |
| | | illegalType: '', |
| | | name: '', |
| | | phoneCode: '', |
| | | certificateType: 703, |
| | | certificateCode: '', |
| | | educationDegree: '', |
| | | career: '', |
| | | work: '', |
| | | nation: '', |
| | | nativePlace: '', |
| | | liveAddress: '', |
| | | registerAddress: '', |
| | | }, |
| | | userRules: { |
| | | illegalType: [ |
| | | { |
| | | trigger: 'change', validator: checkIll, |
| | | } |
| | | ], |
| | | name: [ |
| | | { |
| | | required:true,trigger: 'blur', validator: checkName3 |
| | | } |
| | | ], |
| | | phoneCode: [ |
| | | { |
| | | required:true,trigger: 'blur', validator: checkPhone |
| | | } |
| | | ], |
| | | certificateType: [ |
| | | { |
| | | trigger: 'change', validator: checkCard |
| | | } |
| | | ], |
| | | certificateCode: [ |
| | | { |
| | | required:true,trigger: 'blur', validator: checkCode |
| | | } |
| | | ], |
| | | educationDegree: [ |
| | | { |
| | | trigger: 'change', validator: checkWh |
| | | } |
| | | ], |
| | | // career: [ |
| | | // { |
| | | // trigger: 'blur', validator: checkCareer |
| | | // } |
| | | // ], |
| | | // work: [ |
| | | // { |
| | | // trigger: 'blur', validator: checkWork |
| | | // } |
| | | // ], |
| | | nation: [ |
| | | { |
| | | trigger: 'change', validator: checkNation |
| | | } |
| | | ], |
| | | // nativePlace: [ |
| | | // { |
| | | // trigger: 'blur', validator: checkNaP |
| | | // } |
| | | // ], |
| | | liveAddress: [ |
| | | { |
| | | required:true,trigger: 'blur', validator: checkLiveAdd |
| | | } |
| | | ], |
| | | // registerAddress: [ |
| | | // { |
| | | // trigger: 'blur', validator: checkRegAdd |
| | | // } |
| | | // ], |
| | | }, |
| | | userFlag: false, |
| | | typeOptions: [ |
| | | { |
| | | label: '违法', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '违建', |
| | | value: 2 |
| | | } |
| | | ], |
| | | nationOptions: [], |
| | | cardOptions: [ |
| | | { |
| | | label: '身份证', |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: '其他', |
| | | value: 2 |
| | | } |
| | | ], |
| | | degreeOptions: [ |
| | | { |
| | | label: '小学', |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: '初中', |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: '高中', |
| | | value: 3 |
| | | }, |
| | | { |
| | | label: '大学及以上', |
| | | value: 4 |
| | | }, |
| | | ] |
| | | } |
| | | }, |
| | | created() { |
| | | this.getCardTypeList(); |
| | | this.getSchoolList(); |
| | | this.getNationList(); |
| | | console.log(this.mytype); |
| | | this.user.illegalType = JSON.parse(JSON.stringify(this.mytype)); |
| | | }, |
| | | methods: { |
| | | handleSuccess2(res, file, filelist) { |
| | |
| | | }, |
| | | // 打开当事人信息填写表 |
| | | openDialog(e) { |
| | | this.dialogUser = true |
| | | this.userFlag = true; |
| | | this.userInfo = true; |
| | | }, |
| | | // 关闭当事人信息 |
| | | handleClose(done) { |
| | | this.$confirm('确认关闭?') |
| | | .then(_ => { |
| | | this.dialogUser = false; |
| | | done(); |
| | | }) |
| | | .catch(_ => { }); |
| | | // 检验user |
| | | checkUser() { |
| | | // console.log(this.$refs.userForm.validate); |
| | | this.$refs.userForm.validate((valid) => { |
| | | console.log(valid); |
| | | if (valid) { |
| | | this.evidence.userInfo = this.user.name; |
| | | this.userFlag = false; |
| | | } else { |
| | | this.evidence.userInfo = false; |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | // 关闭当事人信息界面 |
| | | closeUserForm() { |
| | | this.userFlag = false; |
| | | }, |
| | | // 返回当前evidence和user对象 |
| | | backData() { |
| | | const { user, evidence } = this; |
| | | this.$emit('getEvidence', { user, evidence }); |
| | | }, |
| | | // 删除图片 |
| | | handleRemove(index) { |
| | | this.evidence.pic.splice(index, 1); |
| | | }, |
| | | // 获取证件类型 |
| | | async getCardTypeList() { |
| | | this.cardOptions = await getTypeList(1, '03'); |
| | | }, |
| | | // 获取学历 |
| | | async getSchoolList() { |
| | | this.degreeOptions = await getTypeList(1, '04'); |
| | | }, |
| | | // 获取民族列表 |
| | | async getNationList() { |
| | | this.nationOptions = await getTypeList(1, '05'); |
| | | } |
| | | }, |
| | | watch: { |
| | | 'evidence.pic.length': { |
| | | handler(newLen, oldLen) { |
| | | if (newLen !== 0) { |
| | | this.$refs.evidenceForm.validate((valid) => { |
| | | if (valid) { |
| | | |
| | | } else { return false } |
| | | }) |
| | | } |
| | | }, |
| | | deep: true, |
| | | } |
| | | }, |
| | | props:['mytype'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .evidence { |
| | | line-height: 60px; |
| | | |
| | | position: relative; |
| | | .evidence-item{ |
| | | display: flex; |
| | | } |
| | | .evidence-title { |
| | | line-height: 60px; |
| | | font-weight: 650; |
| | |
| | | } |
| | | |
| | | .img-list { |
| | | height: 80px; |
| | | height: 60px; |
| | | position: relative; |
| | | display: flex; |
| | | |
| | | img { |
| | | width: 60px; |
| | | height: 60px; |
| | | } |
| | | |
| | | .img { |
| | | height: 60px; |
| | | position: relative; |
| | | } |
| | | |
| | | .myicon { |
| | | position: absolute; |
| | | top: 0px; |
| | | right: 0px; |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | } |
| | |
| | | border-radius: 4px; |
| | | } |
| | | |
| | | .user-form { |
| | | position: absolute; |
| | | top: 0; |
| | | z-index: 3000; |
| | | background-color: #06122c; |
| | | |
| | | .user-form-header { |
| | | background-color: #fff; |
| | | color: #4b9bb7; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 0 20px; |
| | | } |
| | | |
| | | padding-bottom: 60px; |
| | | } |
| | | |
| | | .user-form-content { |
| | | padding-top: 20px; |
| | | |
| | | .user-item { |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | |
| | | .el-input { |
| | | flex: 1; |
| | | } |
| | | |
| | | .el-select { |
| | | flex: 1; |
| | | |
| | | :deep(.el-input__inner){ |
| | | padding: 0px 15px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | ::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | ::v-deep .el-input__count { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | ::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | ::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | |
| | | .user-form-footer { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | ::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |