“dzb”
2022-10-12 7298e6cff9ed3e0137398283a96156dadbeabf5b
src/views/operate/disposal/casepool/pool/createUser/vio/index.vue
@@ -6,42 +6,52 @@
                <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-select v-model="vio.actionCause" placeholder="请输入案由">
                                <el-option v-for="item in anYouList" :key="item.id" :label="item.name"
                                    :value="item.id" >
                                </el-option>
                            </el-select>
                        <!-- <el-input v-model="vio.actionCause" placeholder="请输入案由"></el-input> -->
                    </el-form-item>
                    <!-- 所属区县 -->
                    <!-- <el-form-item class="optionItems" label="所属区县:" prop="status">
@@ -51,69 +61,73 @@
                            </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>
                    <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.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>
                    </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-input placeholder="请填写关联商铺名称" v-model="vio.shopName"
                                :disabled="vio.linkShop === 1 ?false : true"></el-input>
                        </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>
                    </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="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>
@@ -127,6 +141,7 @@
</template>
<script>
import MyMap from '@/components/map'
import { validateName, validatePhone, validateCarNum } from '@/utils/validate'
export default {
    components: {
        MyMap
@@ -195,6 +210,49 @@
                callback(new Error('报警时间不能为空'))
            }
        }
        const checkCarNumber = (rule, value, callback) => {
            if (value) {
                if (validateCarNum(value)) {
                    callback();
                } else {
                    callback(new Error('请输入正确的车牌号'));
                }
            } 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) {
                callback();
            } 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();
                }
            }
        }
        return {
            vio: {
                actionCause: "",//案由
@@ -224,7 +282,7 @@
                //车牌号
                carNumber: [
                    {
                        required: false,
                        required: true, trigger: 'blur', validator: checkCarNumber
                    }
                ],
                //大类
@@ -245,11 +303,27 @@
                        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: [
                    {
@@ -294,42 +368,69 @@
                    value: 2.
                }
            ],
            streetList:[],
            communityList:[],
            streetList: [],
            communityList: [],
            anYouList:[],
        }
    },
    created() {
        const { getBigKind, getEventLevel, getSmallKind,getStreetList } = this;
        const { setBigKindList,getStreetList,getEventLevel } = this;
        console.log(this.mytype);
        this.vio.category = this.mytype + 1;
        getBigKind();
        getSmallKind();
        getEventLevel();
        setBigKindList();
        getStreetList();
        getEventLevel();
    },
    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;
                }
            })
        },
        // 获取小类列表
        getSmallKind() {
            this.$axios({
        // 设置案由
        async setAnYouList(id){
            let arr = await this.getAnYouList();
            this.anYouList = arr.filter(item=>{
                if(item.parentId===id){
                    return item;
                }
            })
            console.log(this.anYouList);
        },
        // 查询大类列表
        async getBigKind() {
            let arr = [];
            await this.$axios({
                method: 'get',
                url: 'sccg/violations/query/type_second'
                url: "sccg/violations/query/type_second",
            })
                .then(res => {
                    this.smallKindList = res.data;
                    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
        },
        // 获取案件等级列表
        getEventLevel() {
@@ -340,6 +441,19 @@
                .then(res => {
                    this.eventLevelList = res.data;
                })
        },
        // 查询所属案由
        async getAnYouList() {
            let arr = [];
            await this.$axios({
                method: 'get',
                url: 'sccg/violations/query/type_four'
            })
                .then(res => {
                    arr = res.data;
                    console.log(res);
                })
            return arr;
        },
        // 提交注册信息
        handleSubmit() {
@@ -373,32 +487,48 @@
            })
        },
        // 返回
        handleBack(){
            this.$emit('changeDialog',{flag:false})
        handleBack() {
            this.$emit('changeDialog', { flag: false })
        },
        // 获取街道信息
        getStreetList(){
        getStreetList() {
            this.$axios({
                method:'get',
                url:'sccg/dict/query_Street_type'
                method: 'get',
                url: 'sccg/dict/query_Street_type'
            })
            .then(res=>{
                this.streetList = res.data;
            })
                .then(res => {
                    this.streetList = res.data;
                })
        },
        // 街道更改
        handleStreet(id){
        handleStreet(id) {
            console.log(id);
            this.vio.communityId = '';
            this.$axios({
                method:'get',
                url:'sccg/dict/query_social_type?id='+id
                method: 'get',
                url: 'sccg/dict/query_social_type?id=' + id
            })
            .then(res=>{
                this.communityList = res.data;
            })
        }
                .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);
        }
    },
    props: ['mytype', 'changeDialog','refresh']
    props: ['mytype', 'changeDialog', 'refresh']
}
</script>
<style lang="scss" scoped>
@@ -422,6 +552,11 @@
            .input-header__tip {
                line-height: 40px;
            }
        }
        .user-item {
            display: flex;
            justify-content: space-between;
        }
        .input-form {
@@ -459,6 +594,19 @@
            line-height: 40px;
        }
        .my-sp-item {
            display: flex;
            .not-item-left,
            .not-item-right {
                display: flex;
                .el-input {
                    flex: 1;
                }
            }
        }
        .not-need-item {
            line-height: 40px;
            margin-bottom: 22px;
@@ -470,6 +618,10 @@
                text-align: right;
            }
            .el-input {
                flex: 1;
            }
            .not-need__inner {
                flex: 1;
                line-height: 40px;