“dzb”
2022-10-10 676722551d0bc2f8caa0644961e60deef3f0d532
src/views/operate/baseSetting/violation/createUser/index.vue
@@ -2,11 +2,8 @@
    <div class="createUser">
        <main>
            <div class="mainContent">
                <el-form ref="user" :rules="createThings" label-width="140px" autoComplete="on" :model="things" label-position="right">
                    <!-- 违规事项编号 -->
                    <!-- <el-form-item class="optionItem" label="违规事项编号:" prop="number">
                        <el-input v-model="things.number" placeholder="请填写违规事项编号"></el-input>
                    </el-form-item>  -->
                <el-form ref="user" :rules="createThings" label-width="140px" autoComplete="on" :model="things"
                    label-position="right">
                    <!-- 新增的类型或大类或小类 -->
                    <el-form-item class="optionItem" label="新增名称:" prop="name">
                        <el-input v-model="things.name" placeholder="请输入新增名称"></el-input>
@@ -21,15 +18,21 @@
                    </el-form-item>
                    <!-- 父级id -->
                    <el-form-item class="optionItem" label="父级:" prop="parentId">
                        <el-select v-model="things.parentId" placeholder="请选择所属类型" >
                            <el-option v-for="item in parentList" :key="item.id" :label="item.name"
                                :value="item.id">
                        <el-select v-model="things.parentId" placeholder="请选择所属类型" :disabled="things.level===1">
                            <!-- <el-option v-for="item in parentList" :key="item.id" :label="item.name" :value="item.id"
                                v-if="things.level===1">
                            </el-option> -->
                            <el-option :value="mylabel">
                                <el-tree ref="tree" :check-strictly="true"  :data="parentList" :props="defaultProps" show-checkbox
                                    @check-change="handleCheck" default-expand-all node-key="id">
                                </el-tree>
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 案由 -->
                    <el-form-item class="optionItem" label="案由:" prop="type">
                        <el-input type="textarea" autosize v-model="things.type" placeholder="请输入案由描述内容"></el-input>
                        <el-input type="textarea" :rows="2" v-model="things.type" placeholder="请输入案由描述内容"
                            :disabled="things.level!==4"></el-input>
                    </el-form-item>
                    <el-form-item>
                        <div class="optionBtn">
@@ -59,13 +62,6 @@
                callback(new Error('新增违规等级不能为空'));
            }
        }
        // const checkId = (rule,value,callback)=>{
        //     if(value){
        //         callback();
        //     }else{
        //         callback(new Error('新增违规等级不能为空'));
        //     }
        // }
        return {
            things: {
                name:'',
@@ -108,40 +104,57 @@
                },
            ],
            parentList:[],
            selectOrg: {
                orgsid: []
            },
            defaultProps: {
                children: 'children',
                label: 'name'
            },
            mylabel:''
        }
    },
    created() {
    },
    methods: {
        // 查询所属类型
        getTypeThird() {
            this.$axios({
        async getTypeThird() {
            let arr = [];
            await this.$axios({
                method: 'get',
                url: "sccg/violations/query/type_first",
            })
                .then(res => {
                    this.parentList = res.data;
                    arr = res.data;
                    // this.parentList = res.data;
                })
            return arr
        },
        // 查询所属大类
        getTypeSecond(){
            this.$axios({
        async getTypeSecond() {
            let arr = [];
            await this.$axios({
                method: 'get',
                url: "sccg/violations/query/type_second",
            })
                .then(res => {
                    this.parentList = res.data;
                    arr = res.data;
                    // this.parentList = res.data;
                })
            return arr
        },
        // 查询所属小类
        getTypeFirst(){
            this.$axios({
        async getTypeFirst() {
            let arr = [];
            await this.$axios({
                method: 'get',
                url: "sccg/violations/query/type_third",
            })
                .then(res => {
                    this.parentList = res.data;
                    arr = res.data;
                    // this.parentList = res.data;
                })
            return arr
        },
        // 查询所属案由
        getEventLevel() {
@@ -160,15 +173,16 @@
            this.$refs.user.validate((valid)=>{
                console.log(valid);
                if(valid){
                    const {things} = this;
                    const { things, selectOrg} = this;
                    console.log(things,selectOrg.orgsid[0]);
                    this.$axios({
                        method:'post',
                        url:'sccg/violations/addition/type',
                        data:{
                            code:'1111',
                            level:things.parentId === '' ? things.level : things.level+1,
                            level: things.level,
                            name:things.name,
                            parentId:things.parentId=== '' ? 0 : things.parentId,
                            parentId: things.parentId === '' ? 0 : selectOrg.orgsid[0],
                            typeCode:'01',
                            typeName:'问题类型',
                            remark:things.type,
@@ -195,17 +209,66 @@
            })
        },
        // 案件级别变化
        resetParentList(index){
        async resetParentList(index) {
            this.selectOrg.orgsid = [];
            if(index === 1){
                this.getTypeThird();
                // this.getTypeThird();
            }else if(index === 2){
                this.getTypeSecond();
                // console.log(this.getTypeThird());
                this.parentList = await this.getTypeThird();
                this.parentList.forEach(item=>{
                    item.children = [];
                })
            }else if(index === 3){
                this.getTypeFirst();
                this.parentList = this.addChildren(await this.getTypeThird(), await this.getTypeSecond());
                console.log(this.parentList);
            }else{
                this.getEventLevel();
                let arr1 =  this.addChildren(await this.getTypeSecond(), await this.getTypeFirst());
                this.parentList =  this.addChildren(await this.getTypeThird(), arr1);
            }
        },
        addChildren(parentArr, childArr) {
            // console.log(parentArr.length,childArr);
            parentArr.forEach(item => {
                item.children = [];
                childArr.forEach(child => {
                    if (item.id === child.parentId) {
                        item.children.push(child);
        }
                })
            })
            console.log(parentArr);
            return parentArr;
        },
        handleCheck(data, checked) {
            this.things.parentId = data.name;
            console.log(this.selectOrg.orgsid);
            // 获取当前选择的id在数组中的索引
            const indexs = this.selectOrg.orgsid.indexOf(data.id)
            // 如果不存在数组中,并且数组中已经有一个id并且checked为true的时候,代表不能再次选择。
            if (indexs < 0 && this.selectOrg.orgsid.length === 1 && checked) {
                this.$message({
                    message: '只能选择一个区域!',
                    type: 'error',
                    showClose: true
                })
                // 设置已选择的节点为false 很重要
                this.$refs.tree.setChecked(data, false)
            } else if (this.selectOrg.orgsid.length === 0 && checked) {
                // 发现数组为空 并且是已选择
                // 防止数组有值,首先清空,再push
                this.selectOrg.orgsid = []
                this.selectOrg.orgsid.push(data.id)
            } else if (
                indexs >= 0 &&
                this.selectOrg.orgsid.length === 1 &&
                !checked
            ) {
                // 再次直接进行赋值为空操作
                this.selectOrg.orgsid = []
            }
        },
    },
    props: ['changeDialog']
}