From 7298e6cff9ed3e0137398283a96156dadbeabf5b Mon Sep 17 00:00:00 2001
From: “dzb” <2632970487@qq.com>
Date: 星期三, 12 十月 2022 17:07:28 +0800
Subject: [PATCH] 修改bug

---
 src/views/operate/disposal/casepool/pool/createUser/vio/index.vue |  390 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 271 insertions(+), 119 deletions(-)

diff --git a/src/views/operate/disposal/casepool/pool/createUser/vio/index.vue b/src/views/operate/disposal/casepool/pool/createUser/vio/index.vue
index c58bc5a..7c84c25 100644
--- a/src/views/operate/disposal/casepool/pool/createUser/vio/index.vue
+++ b/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;

--
Gitblit v1.8.0