| | |
| | | <div class="input-header__tip">填写事件基础信息</div> |
| | | </div> |
| | | <div class="input-form"> |
| | | <el-form ref="user" label-width="100px" autoComplete="on" :model="vio" :rules="createRoleRules" |
| | | <el-form ref="user" label-width="120px" autoComplete="on" :model="vio" :rules="createRoleRules" |
| | | label-position="right"> |
| | | <!-- 问题类型 --> |
| | | <el-form-item class="optionItem" label="问题类型:" prop="category"> |
| | | <el-select v-model="vio.category" placeholder="违规" disabled> |
| | | <el-option v-for="item in typeList" :key="item.label" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 大类名称 --> |
| | | <el-form-item class="optionItems" label="大类名称:" prop="categoryId"> |
| | | <el-select v-model="vio.categoryId" placeholder="请选择大类名称"> |
| | | <el-option v-for="item in bigKindList" :key="item.id" :label="item.name" :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 小类名称 --> |
| | | <el-form-item class="optionItems" label="小类名称:" prop="typeId"> |
| | | <el-select v-model="vio.typeId" placeholder="请选择小类名称"> |
| | | <el-option v-for="item in smallKindList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 事件等级 --> |
| | | <el-form-item class="optionItems" label="事件等级:" prop="gradeId"> |
| | | <el-select v-model="vio.gradeId" placeholder="请选择案件等级"> |
| | | <el-option v-for="item in eventLevelList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <div class="user-item"> |
| | | <!-- 问题类型 --> |
| | | <el-form-item class="optionItem" label="问题类型:" prop="category"> |
| | | <el-select v-model="vio.category" placeholder="违规" disabled> |
| | | <el-option v-for="item in typeList" :key="item.label" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 大类名称 --> |
| | | <el-form-item class="optionItems" label="大类名称:" prop="categoryId"> |
| | | <el-select v-model="vio.categoryId" placeholder="请选择大类名称" @change="handleBigKindChange"> |
| | | <el-option v-for="item in bigKindList" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="user-item"> |
| | | <!-- 小类名称 --> |
| | | <el-form-item class="optionItems" label="小类名称:" prop="typeId"> |
| | | <el-select v-model="vio.typeId" placeholder="请选择小类名称" @change="handleSmallKindChange"> |
| | | <el-option v-for="item in smallKindList" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 事件等级 --> |
| | | <el-form-item class="optionItems" label="事件等级:" prop="gradeId"> |
| | | <el-select v-model="vio.gradeId" placeholder="请选择案件等级"> |
| | | <el-option v-for="item in eventLevelList" :key="item.id" :label="item.name" |
| | | :value="item.id"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 案由 --> |
| | | <el-form-item class="optionItem" label="案由:" prop="actionCause"> |
| | | <el-input v-model="vio.actionCause" placeholder="请输入案由"></el-input> |
| | | </el-form-item> |
| | | <!-- 所属区县 --> |
| | | <!-- <el-form-item class="optionItems" label="所属区县:" prop="status"> |
| | | <el-select v-model="vio.type" placeholder="请选择所属区县"> |
| | | <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | <!-- 所属街道 --> |
| | | <el-form-item class="optionItems" label="所属街道:" prop="streetId"> |
| | | <el-select v-model="vio.streetId" placeholder="请选择所属街道" @change="handleStreet"> |
| | | <el-option v-for="item in streetList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | <el-form-item class="optionItem anyou" label="案由:" prop="actionCause"> |
| | | <el-select v-model="vio.actionCause" placeholder="请输入案由" filterable @blur="selectBlur"> |
| | | <el-option v-for="item in anYouList" :key="item.id" :label="item.name" :value="item.name"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 所属社区 --> |
| | | <el-form-item class="optionItems" label="所属社区:" prop="communityId"> |
| | | <el-select v-model="vio.communityId" placeholder="请选择所属社区"> |
| | | <el-option v-for="item in communityList" :key="item.id" :label="item.name" :value="item.id" |
| | | :disabled="item.disabled"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <div class="user-item"> |
| | | <!-- 所属街道 --> |
| | | <el-form-item class="optionItems" label="所属街道:" prop="streetId"> |
| | | <el-select v-model="vio.streetId" placeholder="请选择所属街道" @change="handleStreet"> |
| | | <el-option v-for="item in streetList" :key="item.id" :label="item.regionName" :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 所属社区 --> |
| | | <el-form-item class="optionItems" label="所属社区:" prop="communityId"> |
| | | <el-select v-model="vio.communityId" placeholder="请选择所属社区"> |
| | | <el-option v-for="item in communityList" :key="item.id" :label="item.regionName" |
| | | :value="item.id" > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 事发地点 --> |
| | | <el-form-item class="optionItems" label="事发地点:" prop="site"> |
| | | <el-input placeholder="请输入事发地详细位置" v-model="vio.site"></el-input> |
| | | </el-form-item> |
| | | <!-- 是否关联商铺 --> |
| | | <el-form-item class="optionItems" label="是否关联商铺:" prop="linkShop"> |
| | | <el-radio-group v-model="vio.linkShop"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <!-- 关联商铺名称 --> |
| | | <el-form-item class="optionItems" label="关联商铺名称:" prop="shopName"> |
| | | <el-input placeholder="请填写关联商铺名称" v-model="vio.shopName" |
| | | :disabled="vio.linkShop === 1 ?false : true"></el-input> |
| | | </el-form-item> |
| | | <div class="user-item"> |
| | | <!-- 是否关联商铺 --> |
| | | <el-form-item class="optionItems" label="是否关联商铺:" prop="linkShop"> |
| | | <el-radio-group v-model="vio.linkShop" @change="handleLinkShop"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <!-- 关联商铺名称 --> |
| | | <el-form-item class="optionItems" label="关联商铺名称:" prop="shopName"> |
| | | <el-select v-model="vio.shopName" :disabled="vio.linkShop === 0" placeholder="请填写关联商铺名称"> |
| | | <el-option v-for="store in storeList" :key="store.id" :value="store.id" :label="store.storeName"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 填写车牌号 --> |
| | | <el-form-item class="optionItems" label="填写车牌号:" prop="carNumber"> |
| | | <el-input placeholder="请填写车牌号" v-model="vio.carNumber"></el-input> |
| | | </el-form-item> |
| | | <!-- 问题描述 --> |
| | | <el-form-item class="optionItems" label="问题描述:" prop="description"> |
| | | <el-input type="textarea" maxlength="200" placeholder="请输入内容200字以内" v-model="vio.description"></el-input> |
| | | <el-input type="textarea" :rows="5" maxlength="200" placeholder="请输入内容200字以内" |
| | | v-model="vio.description"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <!-- 报警时间 --> |
| | | <el-form-item class="optionItems" label="报警时间:" prop="alarmTime"> |
| | | <el-date-picker v-model="vio.alarmTime" type="datetime" placeholder="选择报警时间"> |
| | | </el-date-picker> |
| | | <div class="user-item"> |
| | | <!-- 报警时间 --> |
| | | <el-form-item class="optionItems" label="报警时间:" prop="alarmTime"> |
| | | <el-date-picker v-model="vio.alarmTime" type="datetime" placeholder="选择报警时间"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <!-- 调度时限 --> |
| | | <el-form-item class="optionItems" label="调度时限:" prop="limitTime"> |
| | | <el-date-picker v-model="vio.limitTime" type="datetime" placeholder="选择调度时限"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 填写反映人信息 --> |
| | | <el-form-item class="optionItems" label="填写反映人信息"> |
| | | </el-form-item> |
| | | <!-- 反映人情况 --> |
| | | <div class="user-item"> |
| | | <el-form-item class="optionItems" label="反映人:" prop="informant"> |
| | | <el-input v-model="vio.informant"></el-input> |
| | | </el-form-item> |
| | | <el-form-item class="optionItems" label="联系方式:" prop="informantPhoneCode"> |
| | | <el-input v-model="vio.informantPhoneCode"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <el-form-item class="optionItems" label="身份证号:" prop="informantIdCard"> |
| | | <el-input v-model="vio.informantIdCard"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <div class="not-need"> |
| | | <div class="not-need__header"> |
| | | 填写反映人信息 |
| | | </div> |
| | | <div class="not-need-item"> |
| | | <label>反映人:</label> |
| | | <el-input v-model="vio.informant"></el-input> |
| | | </div> |
| | | <div class="not-need-item"> |
| | | <label>联系方式:</label> |
| | | <el-input v-model="vio.informantPhoneCode"></el-input> |
| | | </div> |
| | | <div class="not-need-item"> |
| | | <label>身份证号:</label> |
| | | <el-input v-model="vio.informantIdCard"></el-input> |
| | | </div> |
| | | </div> |
| | | <div class="input-footer"> |
| | | <el-button type="primary" class="confirm" @click="handleSubmit">确定</el-button> |
| | |
| | | </template> |
| | | <script> |
| | | import MyMap from '@/components/map' |
| | | import { validateName, validatePhone, validateCarNum, validateCardId } from '@/utils/validate' |
| | | import { getTypeList } from '@/utils/helper' |
| | | import { parseTime } from "@/utils/index" |
| | | import { getStoreInfoList } from "@/api/operate/storeManagement"; |
| | | export default { |
| | | components: { |
| | | MyMap |
| | |
| | | callback(new Error('报警时间不能为空')) |
| | | } |
| | | } |
| | | const checkName = (rule, value, callback) => { |
| | | if (value) { |
| | | validateName(value) ? callback() : callback(new Error('请输入正确的姓名')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const checkCardId = (rule, value, callback) => { |
| | | if (value) { |
| | | validateCardId(value) ? callback() : callback(new Error('请输入正确的身份证号码')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const checkPhone = (rule, value, callback) => { |
| | | if (value) { |
| | | validatePhone(value) ? callback() : callback(new Error('请输入正确的手机号')); |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const checkLink = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | if (this.vio.linkShop === 1) { |
| | | callback(new Error('关联商铺名字不能为空')); |
| | | } else { |
| | | callback(); |
| | | } |
| | | } |
| | | } |
| | | const checkLimit = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('调度时限时间不能为空')) |
| | | } |
| | | } |
| | | return { |
| | | vio: { |
| | | actionCause: "",//案由 |
| | | carNumber: "",//车牌号 |
| | | // category:1,//1:违规2:违建 |
| | | categoryId: '',//大类 |
| | | communityId: '',//所属社区 |
| | | description: '',//问题描述 |
| | |
| | | streetId: '',//所属街道 |
| | | typeId: '',//小类 |
| | | gradeId: '',//案件等级 |
| | | alarmTime: '' |
| | | alarmTime: '', |
| | | limitTime: '',//调度时限 |
| | | }, |
| | | createRoleRules: { |
| | | //案由 |
| | | actionCause: [ |
| | | { |
| | | required: true, trigger: 'blur', validator: checkCause, |
| | | } |
| | | ], |
| | | //车牌号 |
| | | carNumber: [ |
| | | { |
| | | required: false, |
| | | } |
| | | ], |
| | | //大类 |
| | |
| | | required: true, trigger: 'blur', validator: checkDesc |
| | | } |
| | | ], |
| | | // informant:"大苏打",//反映人 |
| | | // informantIdCard:"51102519910082831",//身份证号码 |
| | | // informantPhoneCode:"17844631885",//反映人联系方式 |
| | | informant: [ |
| | | { |
| | | required: false, trigger: 'blur', validator: checkName |
| | | } |
| | | ], |
| | | informantIdCard: [ |
| | | { |
| | | required: false, trigger: 'blur', validator: checkCardId |
| | | } |
| | | ], |
| | | informantPhoneCode: [ |
| | | { |
| | | required: false, trigger: 'blur', validator: checkPhone |
| | | } |
| | | ], |
| | | // linkShop:0,//是否关联商铺(0否1是) |
| | | // shopName:"",//关联商铺名称 |
| | | shopName: [ |
| | | { |
| | | required: false, trigger: 'blur', validator: checkLink |
| | | } |
| | | ], |
| | | //事发地点 |
| | | site: [ |
| | | { |
| | |
| | | { |
| | | required: true, trigger: 'change', validator: checkDate |
| | | } |
| | | ], |
| | | limitTime: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkLimit |
| | | } |
| | | ] |
| | | |
| | | }, |
| | |
| | | value: 2. |
| | | } |
| | | ], |
| | | streetList:[], |
| | | communityList:[], |
| | | streetList: [], |
| | | communityList: [], |
| | | anYouList: [], |
| | | storeList: [] |
| | | } |
| | | }, |
| | | created() { |
| | | const { getBigKind, getEventLevel, getSmallKind,getStreetList } = this; |
| | | console.log(this.mytype); |
| | | const { setBigKindList, getStreetList, getEventLevel } = this; |
| | | this.vio.category = this.mytype + 1; |
| | | getBigKind(); |
| | | getSmallKind(); |
| | | setBigKindList(); |
| | | getStreetList(0); |
| | | getEventLevel(); |
| | | getStreetList(); |
| | | this.getShopList(); |
| | | }, |
| | | methods: { |
| | | handleStop() { |
| | | this.refresh(); |
| | | }, |
| | | // 获取大类列表 |
| | | getBigKind() { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/violations/query/type_first' |
| | | }).then(res => { |
| | | this.bigKindList = res.data; |
| | | // console.log(res); |
| | | // 设置大类 |
| | | async setBigKindList() { |
| | | this.bigKindList = await this.getBigKind(); |
| | | }, |
| | | // 设置小类 |
| | | async setSmallKindList(id) { |
| | | let arr = await this.getSmallKind(); |
| | | this.smallKindList = arr.filter(item => { |
| | | if (item.parentId === id) { |
| | | return item; |
| | | } |
| | | }) |
| | | }, |
| | | // 设置案由 |
| | | async setAnYouList(id) { |
| | | let arr = await this.getAnYouList(); |
| | | this.anYouList = arr.filter(item => { |
| | | if (item.parentId === id) { |
| | | return item; |
| | | } |
| | | }) |
| | | }, |
| | | // 查询大类列表 |
| | | async getBigKind() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: 'get', |
| | | url: "sccg/violations/query/type_second", |
| | | }) |
| | | .then(res => { |
| | | arr = res.data; |
| | | }) |
| | | return arr |
| | | }, |
| | | // 获取小类列表 |
| | | getSmallKind() { |
| | | this.$axios({ |
| | | async getSmallKind() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/violations/query/type_second' |
| | | url: "sccg/violations/query/type_third", |
| | | }) |
| | | .then(res => { |
| | | this.smallKindList = res.data; |
| | | arr = res.data; |
| | | }) |
| | | return arr |
| | | }, |
| | | // 获取案件等级列表 |
| | | getEventLevel() { |
| | | this.$axios({ |
| | | async getEventLevel() { |
| | | this.eventLevelList = await getTypeList(1, '02'); |
| | | }, |
| | | // 查询所属案由 |
| | | async getAnYouList() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/violations/query/event_type' |
| | | url: 'sccg/violations/query/type_four' |
| | | }) |
| | | .then(res => { |
| | | this.eventLevelList = res.data; |
| | | arr = res.data; |
| | | }) |
| | | return arr; |
| | | }, |
| | | // 提交注册信息 |
| | | handleSubmit() { |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const { vio } = this; |
| | | console.log(vio); |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/base_case/addition_violation', |
| | | data: vio |
| | | data: { |
| | | ...vio, |
| | | alarmTime: parseTime(vio.alarmTime), |
| | | limitTime:parseTime(vio.limitTime), |
| | | } |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | |
| | | }) |
| | | }, |
| | | // 返回 |
| | | handleBack(){ |
| | | this.$emit('changeDialog',{flag:false}) |
| | | handleBack() { |
| | | this.$emit('changeDialog', { flag: false }) |
| | | }, |
| | | // 获取街道信息 |
| | | getStreetList(){ |
| | | this.$axios({ |
| | | async getStreetList(id) { |
| | | let arr |
| | | await this.$axios({ |
| | | method:'get', |
| | | url:'sccg/dict/query_Street_type' |
| | | }) |
| | | .then(res=>{ |
| | | this.streetList = res.data; |
| | | }) |
| | | }, |
| | | // 街道更改 |
| | | handleStreet(id){ |
| | | console.log(id); |
| | | this.$axios({ |
| | | method:'get', |
| | | url:'sccg/dict/query_social_type?id='+id |
| | | url:`sccg/sccg_region/getChildren/${id}`, |
| | | }) |
| | | .then(res=>{ |
| | | this.communityList = res.data; |
| | | if(res.code === 200){ |
| | | arr = res.data; |
| | | } |
| | | }) |
| | | } |
| | | this.streetList = arr; |
| | | }, |
| | | // 街道更改 |
| | | handleStreet(id) { |
| | | this.vio.communityId = ''; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: `sccg/sccg_region/getChildren/${id}` |
| | | }) |
| | | .then(res => { |
| | | this.communityList = res.data; |
| | | }) |
| | | }, |
| | | // 关联商铺 |
| | | handleLinkShop(value) { |
| | | value === 0 ? this.vio.shopName = '' : ''; |
| | | }, |
| | | // 大类选中 |
| | | handleBigKindChange(id) { |
| | | this.vio.actionCause = ''; |
| | | this.vio.typeId = ''; |
| | | this.setSmallKindList(id); |
| | | }, |
| | | // 小类选中 |
| | | handleSmallKindChange(id) { |
| | | this.vio.actionCause = ''; |
| | | this.setAnYouList(id); |
| | | }, |
| | | // 案由输入 |
| | | selectBlur(e) { |
| | | if (e.target.value) { |
| | | this.vio.actionCause = e.target.value; |
| | | } |
| | | }, |
| | | |
| | | getShopList() { |
| | | getStoreInfoList({ current: 1, size: 100 }) |
| | | .then(({ list }) => { |
| | | this.storeList = list; |
| | | }) |
| | | .catch(err => { |
| | | this.$message.error(err) |
| | | }) |
| | | } |
| | | }, |
| | | props: ['mytype', 'changeDialog','refresh'] |
| | | props: ['mytype', 'changeDialog', 'refresh'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | |
| | | padding: 20px 10px 50px; |
| | | |
| | | .input-area { |
| | | flex: 1; |
| | | flex: 3; |
| | | padding: 10px 20px; |
| | | |
| | | .input-header { |
| | |
| | | } |
| | | } |
| | | |
| | | .user-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .input-form { |
| | | .el-form { |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | // &::v-deep .el-form-item__label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | // &::v-deep .el-input__inner { |
| | | // // background-color: #09152f; |
| | | // border: 1px solid #17324c; |
| | | // } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | // &::v-deep .el-textarea__inner { |
| | | // // background-color: #09152f; |
| | | // border: 1px solid #17324c; |
| | | // } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .map-area { |
| | | flex: 1; |
| | | flex: 2; |
| | | } |
| | | |
| | | .not-need { |
| | | color: #4b9bb7; |
| | | |
| | | .not-need__header { |
| | | line-height: 40px; |
| | | } |
| | | |
| | | .not-need-item { |
| | | line-height: 40px; |
| | | margin-bottom: 22px; |
| | | display: flex; |
| | | |
| | | label { |
| | | width: 100px; |
| | | padding-right: 12px; |
| | | text-align: right; |
| | | } |
| | | |
| | | .not-need__inner { |
| | | flex: 1; |
| | | line-height: 40px; |
| | | padding: 0 15px; |
| | | border-radius: 4px; |
| | | color: #fff; |
| | | // outline: #409eff solid 1px; |
| | | outline: none; |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | .anyou { |
| | | :deep(.el-select) { |
| | | display: block; |
| | | } |
| | | } |
| | | |