| | |
| | | <template> |
| | | <div class="vio"> |
| | | <div class="input-area"> |
| | | <div class="input-header"> |
| | | <div class="input-header__title">基础信息</div> |
| | | <div class="input-header__tip">填写事件基础信息</div> |
| | | </div> |
| | | <div class="input-form"> |
| | | <el-form ref="user" label-width="100px" 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> |
| | | <!-- 案由 --> |
| | | <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-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> |
| | | <!-- 事发地点 --> |
| | | <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> |
| | | <!-- 填写车牌号 --> |
| | | <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-form-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> |
| | | </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> |
| | | <el-button class="back" @click="handleBack">返回</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="map-area"> |
| | | <!-- <MyMap /> --> |
| | | </div> |
| | | <div class="vio"> |
| | | <div class="input-area"> |
| | | <div class="input-header"> |
| | | <div class="input-header__title">基础信息</div> |
| | | <div class="input-header__tip">填写事件基础信息</div> |
| | | </div> |
| | | <div class="input-form"> |
| | | <el-form |
| | | ref="user" |
| | | label-width="120px" |
| | | autoComplete="on" |
| | | :model="vio" |
| | | :rules="createRoleRules" |
| | | label-position="right" |
| | | > |
| | | <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-cascader |
| | | :show-all-levels="false" |
| | | v-model="vio.gradeId" |
| | | :props="{ |
| | | value: 'id', |
| | | label: 'name', |
| | | children: 'children', |
| | | emitPath: false, |
| | | }" |
| | | :options="eventLevelList" |
| | | ></el-cascader> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 案由 --> |
| | | <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> |
| | | <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> |
| | | <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" |
| | | :rows="5" |
| | | maxlength="200" |
| | | placeholder="请输入内容200字以内" |
| | | v-model="vio.description" |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | <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 prop="url" label="图片:" min-width="8"> |
| | | <my-upload |
| | | :picture-list="imageList" |
| | | :is-show-upload="dialogType !== 'view'" |
| | | @setPictureUrl="setPictureUrl" |
| | | @delPictureUrl="delPictureUrl" |
| | | ></my-upload> |
| | | </el-form-item> |
| | | |
| | | <el-form-item prop="url" label="视频:" min-width="8"> |
| | | <my-upload-media |
| | | :picture-list="mediaList" |
| | | :is-show-upload="dialogType !== 'view'" |
| | | @setPictureUrl="setMediaUrl" |
| | | @delPictureUrl="delMediaUrl" |
| | | ></my-upload-media> |
| | | </el-form-item> |
| | | <!-- 填写反映人信息 --> |
| | | <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="input-footer"> |
| | | <el-button type="primary" class="confirm" @click="handleSubmit" |
| | | >确定</el-button |
| | | > |
| | | <el-button class="back" @click="handleBack">返回</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="map-area"> |
| | | <!-- <MyMap /> --> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyMap from '@/components/map' |
| | | // import MyMap from "@/components/map"; |
| | | import MyMap from "@/components/map/leafletMap.vue"; |
| | | import { |
| | | validateName, |
| | | validatePhone, |
| | | validateCarNum, |
| | | validateCardId, |
| | | } from "@/utils/validate"; |
| | | import { getTypeList } from "@/utils/helper"; |
| | | import { parseTime } from "@/utils/index"; |
| | | import { getStoreInfoList } from "@/api/operate/storeManagement"; |
| | | import MyUpload from "@/components/myUpload"; |
| | | import MyUploadMedia from "@/components/myUpload/media.vue"; |
| | | import { FILE_ORIGINAL_URL } from "@/utils"; |
| | | export default { |
| | | components: { |
| | | MyMap |
| | | components: { |
| | | MyMap, |
| | | MyUpload, |
| | | MyUploadMedia, |
| | | }, |
| | | data() { |
| | | const checkCause = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("案由不能为空")); |
| | | } |
| | | }; |
| | | const checkCategory = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("大类名称不能为空")); |
| | | } |
| | | }; |
| | | const checkCommunity = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("所属社区不能为空")); |
| | | } |
| | | }; |
| | | const checkDesc = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("问题描述不能为空")); |
| | | } |
| | | }; |
| | | const checkSite = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("事发地点不能为空")); |
| | | } |
| | | }; |
| | | const checkStreet = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("所属街道不能为空")); |
| | | } |
| | | }; |
| | | const checkType = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("小类不能为空")); |
| | | } |
| | | }; |
| | | const checkGrade = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error("事件等级不能为空")); |
| | | } |
| | | }; |
| | | const checkDate = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | 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: "", //车牌号 |
| | | categoryId: "", //大类 |
| | | communityId: "", //所属社区 |
| | | description: "", //问题描述 |
| | | informant: "", //反映人 |
| | | informantIdCard: "", //身份证号码 |
| | | informantPhoneCode: "", //反映人联系方式 |
| | | linkShop: 0, //是否关联商铺(0否1是) |
| | | shopName: "", //关联商铺名称 |
| | | site: "", //事发地点 |
| | | streetId: "", //所属街道 |
| | | typeId: "", //小类 |
| | | gradeId: "", //案件等级 |
| | | alarmTime: "", |
| | | limitTime: "", //调度时限 |
| | | }, |
| | | createRoleRules: { |
| | | //案由 |
| | | actionCause: [ |
| | | { |
| | | required: true, |
| | | trigger: "blur", |
| | | validator: checkCause, |
| | | }, |
| | | ], |
| | | //大类 |
| | | categoryId: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkCategory, |
| | | }, |
| | | ], |
| | | //所属社区 |
| | | communityId: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkCommunity, |
| | | }, |
| | | ], |
| | | //问题描述 |
| | | description: [ |
| | | { |
| | | required: true, |
| | | trigger: "blur", |
| | | validator: checkDesc, |
| | | }, |
| | | ], |
| | | 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: [ |
| | | { |
| | | required: false, |
| | | trigger: "blur", |
| | | validator: checkLink, |
| | | }, |
| | | ], |
| | | //事发地点 |
| | | site: [ |
| | | { |
| | | required: true, |
| | | trigger: "blur", |
| | | validator: checkSite, |
| | | }, |
| | | ], |
| | | //所属街道 |
| | | streetId: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkStreet, |
| | | }, |
| | | ], |
| | | //小类 |
| | | typeId: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkType, |
| | | }, |
| | | ], |
| | | //案件等级 |
| | | gradeId: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkGrade, |
| | | }, |
| | | ], |
| | | alarmTime: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkDate, |
| | | }, |
| | | ], |
| | | limitTime: [ |
| | | { |
| | | required: true, |
| | | trigger: "change", |
| | | validator: checkLimit, |
| | | }, |
| | | ], |
| | | }, |
| | | bigKindList: [], |
| | | smallKindList: [], |
| | | eventLevelList: [], |
| | | typeList: [ |
| | | { |
| | | label: "违规", |
| | | value: 1, |
| | | }, |
| | | { |
| | | label: "违建", |
| | | value: 2, |
| | | }, |
| | | ], |
| | | streetList: [], |
| | | communityList: [], |
| | | anYouList: [], |
| | | storeList: [], |
| | | imageList: [], |
| | | mediaList: [], |
| | | dialogType: "add", |
| | | }; |
| | | }, |
| | | created() { |
| | | const { setBigKindList, getStreetList, getEventLevel } = this; |
| | | this.vio.category = this.mytype + 1; |
| | | setBigKindList(); |
| | | getStreetList(0); |
| | | getEventLevel(); |
| | | this.getShopList(); |
| | | }, |
| | | methods: { |
| | | handleStop() { |
| | | this.refresh(); |
| | | }, |
| | | data() { |
| | | const checkCause = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('案由不能为空')) |
| | | } |
| | | // 设置大类 |
| | | 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; |
| | | } |
| | | const checkCategory = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('大类名称不能为空')) |
| | | } |
| | | }); |
| | | }, |
| | | // 设置案由 |
| | | async setAnYouList(id) { |
| | | let arr = await this.getAnYouList(); |
| | | this.anYouList = arr.filter((item) => { |
| | | if (item.parentId === id) { |
| | | return item; |
| | | } |
| | | const checkCommunity = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('所属社区不能为空')); |
| | | } |
| | | } |
| | | const checkDesc = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('问题描述不能为空')) |
| | | } |
| | | } |
| | | const checkSite = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('事发地点不能为空')) |
| | | } |
| | | } |
| | | const checkStreet = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('所属街道不能为空')) |
| | | } |
| | | } |
| | | const checkType = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('小类不能为空')) |
| | | } |
| | | } |
| | | const checkGrade = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('事件等级不能为空')) |
| | | } |
| | | } |
| | | const checkDate = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('报警时间不能为空')) |
| | | } |
| | | } |
| | | return { |
| | | vio: { |
| | | actionCause: "",//案由 |
| | | carNumber: "",//车牌号 |
| | | // category:1,//1:违规2:违建 |
| | | categoryId: '',//大类 |
| | | communityId: '',//所属社区 |
| | | description: '',//问题描述 |
| | | informant: '',//反映人 |
| | | informantIdCard: '',//身份证号码 |
| | | informantPhoneCode: "",//反映人联系方式 |
| | | linkShop: 0,//是否关联商铺(0否1是) |
| | | shopName: "",//关联商铺名称 |
| | | site: '',//事发地点 |
| | | streetId: '',//所属街道 |
| | | typeId: '',//小类 |
| | | gradeId: '',//案件等级 |
| | | alarmTime: '' |
| | | }); |
| | | }, |
| | | // 查询大类列表 |
| | | async getBigKind() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: "get", |
| | | url: "sccg/violations/query/type_second", |
| | | }).then((res) => { |
| | | arr = res.data; |
| | | }); |
| | | return arr; |
| | | }, |
| | | // 获取小类列表 |
| | | async getSmallKind() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: "get", |
| | | url: "sccg/violations/query/type_third", |
| | | }).then((res) => { |
| | | arr = res.data; |
| | | }); |
| | | return arr; |
| | | }, |
| | | // 获取案件等级列表 |
| | | async getEventLevel() { |
| | | this.eventLevelList = await getTypeList(1, "02"); |
| | | }, |
| | | // 查询所属案由 |
| | | async getAnYouList() { |
| | | let arr = []; |
| | | await this.$axios({ |
| | | method: "get", |
| | | url: "sccg/violations/query/type_four", |
| | | }).then((res) => { |
| | | arr = res.data; |
| | | }); |
| | | return arr; |
| | | }, |
| | | // 提交注册信息 |
| | | handleSubmit() { |
| | | this.vio.imageUrls = this.imageList; |
| | | this.vio.videoUrls = this.mediaList; |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const { vio } = this; |
| | | this.$axios({ |
| | | method: "post", |
| | | url: "sccg/base_case/addition_violation", |
| | | data: { |
| | | ...vio, |
| | | alarmTime: parseTime(vio.alarmTime), |
| | | limitTime: parseTime(vio.limitTime), |
| | | }, |
| | | createRoleRules: { |
| | | //案由 |
| | | actionCause: [ |
| | | { |
| | | required: true, trigger: 'blur', validator: checkCause, |
| | | } |
| | | ], |
| | | //车牌号 |
| | | carNumber: [ |
| | | { |
| | | required: false, |
| | | } |
| | | ], |
| | | //大类 |
| | | categoryId: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkCategory |
| | | } |
| | | ], |
| | | //所属社区 |
| | | communityId: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkCommunity |
| | | } |
| | | ], |
| | | //问题描述 |
| | | description: [ |
| | | { |
| | | required: true, trigger: 'blur', validator: checkDesc |
| | | } |
| | | ], |
| | | // informant:"大苏打",//反映人 |
| | | // informantIdCard:"51102519910082831",//身份证号码 |
| | | // informantPhoneCode:"17844631885",//反映人联系方式 |
| | | // linkShop:0,//是否关联商铺(0否1是) |
| | | // shopName:"",//关联商铺名称 |
| | | //事发地点 |
| | | site: [ |
| | | { |
| | | required: true, trigger: 'blur', validator: checkSite |
| | | } |
| | | ], |
| | | //所属街道 |
| | | streetId: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkStreet |
| | | } |
| | | ], |
| | | //小类 |
| | | typeId: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkType |
| | | } |
| | | ], |
| | | //案件等级 |
| | | gradeId: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkGrade |
| | | } |
| | | ], |
| | | alarmTime: [ |
| | | { |
| | | required: true, trigger: 'change', validator: checkDate |
| | | } |
| | | ] |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: "success", |
| | | message: res.message, |
| | | }); |
| | | this.$emit("changeDialog", { flag: false }); |
| | | this.refresh(); |
| | | } else { |
| | | this.$message({ |
| | | type: "warning", |
| | | message: res.message, |
| | | }); |
| | | } |
| | | }); |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | // 返回 |
| | | handleBack() { |
| | | this.$emit("changeDialog", { flag: false }); |
| | | }, |
| | | // 获取街道信息 |
| | | async getStreetList(id) { |
| | | let arr; |
| | | await this.$axios({ |
| | | method: "get", |
| | | url: `sccg/sccg_region/getChildren/${id}`, |
| | | }).then((res) => { |
| | | 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; |
| | | } |
| | | }, |
| | | setPictureUrl({ url }) { |
| | | this.imageList.push(`${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${url}`); |
| | | // this.imagedata.url = this.imageList.join(","); |
| | | }, |
| | | delPictureUrl({ url }) { |
| | | this.imageList = this.imageList.filter((item) => item !== url); |
| | | // this.imagedata.url = this.imageList.join(","); |
| | | }, |
| | | |
| | | }, |
| | | bigKindList: [], |
| | | smallKindList: [], |
| | | eventLevelList: [], |
| | | typeList: [ |
| | | { |
| | | label: '违规', |
| | | value: 1. |
| | | }, |
| | | { |
| | | label: '违建', |
| | | value: 2. |
| | | } |
| | | ], |
| | | streetList:[], |
| | | communityList:[], |
| | | } |
| | | setMediaUrl({ url }) { |
| | | this.mediaList.push(`${FILE_ORIGINAL_URL}sccg/API/img?fileUrl=${url}`); |
| | | this.mediaList.url = this.mediaList.join(","); |
| | | }, |
| | | created() { |
| | | const { getBigKind, getEventLevel, getSmallKind,getStreetList } = this; |
| | | console.log(this.mytype); |
| | | this.vio.category = this.mytype + 1; |
| | | getBigKind(); |
| | | getSmallKind(); |
| | | getEventLevel(); |
| | | getStreetList(); |
| | | delMediaUrl({ url }) { |
| | | this.mediaList = this.mediaList.filter((item) => item !== url); |
| | | this.mediaList.url = this.mediaList.join(","); |
| | | }, |
| | | methods: { |
| | | handleStop() { |
| | | this.refresh(); |
| | | }, |
| | | // 获取大类列表 |
| | | getBigKind() { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/violations/query/type_first' |
| | | }).then(res => { |
| | | this.bigKindList = res.data; |
| | | // console.log(res); |
| | | }) |
| | | }, |
| | | // 获取小类列表 |
| | | getSmallKind() { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/violations/query/type_second' |
| | | }) |
| | | .then(res => { |
| | | this.smallKindList = res.data; |
| | | }) |
| | | }, |
| | | // 获取案件等级列表 |
| | | getEventLevel() { |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/violations/query/event_type' |
| | | }) |
| | | .then(res => { |
| | | this.eventLevelList = res.data; |
| | | }) |
| | | }, |
| | | // 提交注册信息 |
| | | 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 |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: res.message |
| | | }) |
| | | this.$emit('changeDialog', { flag: false }); |
| | | this.refresh(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: res.message, |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 返回 |
| | | handleBack(){ |
| | | this.$emit('changeDialog',{flag:false}) |
| | | }, |
| | | // 获取街道信息 |
| | | getStreetList(){ |
| | | 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 |
| | | }) |
| | | .then(res=>{ |
| | | this.communityList = res.data; |
| | | }) |
| | | } |
| | | 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> |
| | | .vio { |
| | | display: flex; |
| | | padding: 20px 10px 50px; |
| | | display: flex; |
| | | padding: 20px 10px 50px; |
| | | |
| | | .input-area { |
| | | flex: 1; |
| | | padding: 10px 20px; |
| | | .input-area { |
| | | flex: 3; |
| | | padding: 10px 20px; |
| | | |
| | | .input-header { |
| | | color: #4b9bb7; |
| | | .input-header { |
| | | color: #4b9bb7; |
| | | |
| | | .input-header__title { |
| | | line-height: 60px; |
| | | font-weight: 650; |
| | | font-size: 20px; |
| | | } |
| | | .input-header__title { |
| | | line-height: 60px; |
| | | font-weight: 650; |
| | | font-size: 20px; |
| | | } |
| | | |
| | | .input-header__tip { |
| | | line-height: 40px; |
| | | } |
| | | } |
| | | |
| | | .input-form { |
| | | .el-form { |
| | | &::v-deep .el-form-item__label { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | &::v-deep .el-textarea__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .input-footer { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | .input-header__tip { |
| | | line-height: 40px; |
| | | } |
| | | } |
| | | |
| | | .map-area { |
| | | flex: 1; |
| | | .user-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .not-need { |
| | | color: #4b9bb7; |
| | | .input-form { |
| | | .el-form { |
| | | // &::v-deep .el-form-item__label { |
| | | // color: #4b9bb7; |
| | | // } |
| | | |
| | | .not-need__header { |
| | | line-height: 40px; |
| | | } |
| | | // &::v-deep .el-input__inner { |
| | | // // background-color: #09152f; |
| | | // border: 1px solid #17324c; |
| | | // } |
| | | |
| | | .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; |
| | | } |
| | | } |
| | | // &::v-deep .el-textarea__inner { |
| | | // // background-color: #09152f; |
| | | // border: 1px solid #17324c; |
| | | // } |
| | | } |
| | | } |
| | | |
| | | .input-footer { |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | } |
| | | |
| | | .map-area { |
| | | flex: 2; |
| | | } |
| | | |
| | | .anyou { |
| | | :deep(.el-select) { |
| | | display: block; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | | </style> |