From d22f9b9278303f340e2f8efd6f5a98f0b614c05c Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 17 十月 2022 18:03:36 +0800
Subject: [PATCH] 部门功能修改

---
 src/components/dispatch/index.vue |  283 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 207 insertions(+), 76 deletions(-)

diff --git a/src/components/dispatch/index.vue b/src/components/dispatch/index.vue
index a9fe5b6..2d1673e 100644
--- a/src/components/dispatch/index.vue
+++ b/src/components/dispatch/index.vue
@@ -15,33 +15,34 @@
             <!-- 閫夋嫨鎵ф硶杞� -->
             <el-form-item label="閫夋嫨鎵ф硶杞�:" prop="enforcementCar">
                 <el-select v-model="dispatch.enforcementCar" placeholder="璇烽�夋嫨">
-                    <el-option v-for="item in carOptions" :key="item.value" :label="item.label" :value="item.value">
+                    <el-option v-for="item in carOptions" :key="item.id" :label="item.carNumber" :value="item.id">
                     </el-option>
                 </el-select>
             </el-form-item>
             <!-- 閫夋嫨浜哄憳 -->
             <div class="form-person">
                 <!-- 閮ㄩ棬 -->
-                <el-form-item label="閫夋嫨浜哄憳:" prop="dispatchOpinion">
-                    <el-select v-model="dispatch.dispatchOpinion" placeholder="璇烽�夋嫨閮ㄩ棬">
-                        <el-option v-for="item in departOptions" :key="item.value" :label="item.label"
-                            :value="item.value">
+                <el-form-item label="閫夋嫨浜哄憳:" prop="createUser">
+                    <el-select v-model="dispatch.createUser" placeholder="璇烽�夋嫨閮ㄩ棬" @change="handleTopChange">
+                        <el-option v-for="item in departOptions" :key="item.id" :label="item.departName"
+                            :value="item.id">
                         </el-option>
                     </el-select>
                 </el-form-item>
                 <!-- 涓槦 -->
                 <el-form-item prop="enforcementTeam" class="person-item">
-                    <el-select v-model="dispatch.enforcementTeam" placeholder="閫夋嫨涓槦">
-                        <el-option v-for="item in squadronOptions" :key="item.value" :label="item.label"
-                            :value="item.value">
+                    <el-select v-model="dispatch.enforcementTeam" placeholder="閫夋嫨涓槦"
+                        :disabled="squadronOptions.length!==0 && squadronOptions?false:true" @change="handleMidChange">
+                        <el-option v-for="item in squadronOptions" :key="item.id" :label="item.departName"
+                            :value="item.id">
                         </el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item prop='lawEnforcer' class="person-item">
                     <!-- 浜哄憳 -->
-                    <el-select v-model="dispatch.lawEnforcer" placeholder="璇烽�夋嫨浜哄憳">
-                        <el-option v-for="item in personOptions" :key="item.value" :label="item.label"
-                            :value="item.value">
+                    <el-select v-model="dispatch.lawEnforcer" placeholder="璇烽�夋嫨浜哄憳"
+                        :disabled="personOptions.length !== 0 && personOptions? false:true" @change="handlePerChange">
+                        <el-option v-for="item in personOptions" :key="item.id" :label="item.username" :value="item.id">
                         </el-option>
                     </el-select>
                 </el-form-item>
@@ -49,21 +50,30 @@
             <div class="form-footer">
                 <!-- 鎵ф硶浜哄憳缂栧彿 -->
                 <el-form-item label="鎵ф硶浜哄憳缂栧彿:" prop="lawEnforcerName">
-                    <el-input v-model="dispatch.lawEnforcerName"></el-input>
+                    <el-input v-model="dispatch.lawEnforcerName" disabled></el-input>
                 </el-form-item>
                 <!-- 鎵ф硶浜哄憳鑱旂郴鏂瑰紡 -->
                 <el-form-item label="鑱旂郴鏂瑰紡:" prop="contactWay">
-                    <el-input v-model="dispatch.contactWay"></el-input>
+                    <el-input v-model="dispatch.contactWay" disabled></el-input>
                 </el-form-item>
                 <el-button type="primary">鍙戦�佺煭淇�</el-button>
             </div>
+            <div class="form-time">
+                <el-form-item label="娲鹃仯鎰忚" prop="dispatchOpinion">
+                    <el-input v-model="dispatch.dispatchOpinion" placeholder="璇疯緭鍏ユ淳閬f剰瑙�"></el-input>
+                </el-form-item>
+                <el-form-item label="澶勭疆鏃ユ湡" prop="disposeDate">
+                    <el-date-picker v-model="dispatch.disposeDate" type="datetime" placeholder="閫夋嫨鏃ユ湡鏃堕棿">
+                    </el-date-picker>
+                </el-form-item>
+            </div>
         </el-form>
         <div class="map">
-            <MyMap></MyMap>
+            <!-- <MyMap></MyMap> -->
         </div>
         <div class="footer">
             <el-button type="primary" @click="handleDispatch">纭畾</el-button>
-            <el-button>杩斿洖</el-button>
+            <el-button @click="handleBack">杩斿洖</el-button>
         </div>
     </div>
 </template>
@@ -73,9 +83,11 @@
     components: {
         MyMap
     },
-    props: ['id','changeDialog'],
+    props: ['id', 'changeDialog', 'refresh', 'mytype'],
     created() {
-        console.log(this.id);
+        // 鍒ゆ柇杞﹁締绫诲瀷
+        this.mytype === 1 ? this.getLawCarList() : this.getSoilCarList();
+        this.getDepartList();
     },
     data() {
         const checkPhone = (rule, value, callback) => {
@@ -87,14 +99,14 @@
                     callback();
                 }
             } else {
-                callback(new Error('鑱旂郴鏂瑰紡涓嶈兘涓虹┖'))
+                callback()
             }
         }
         const checkOpinion = (rule, value, callback) => {
             if (value) {
                 callback();
             } else {
-                callback(new Error('閮ㄩ棬涓嶈兘涓虹┖'))
+                callback(new Error('娲鹃仯鎰忚涓嶈兘涓虹┖'))
             }
         }
         const checkDistance = (rule, value, callback) => {
@@ -104,50 +116,56 @@
                 callback(new Error('璺濈涓嶈兘涓虹┖'))
             }
         }
-        const checkCar = (rule, value, callback) => {
-            if (value) {
-                callback();
-            } else {
-                callback(new Error('鎵ф硶杞﹁締涓嶈兘涓虹┖'))
-            }
-        }
         const checkTeam = (rule, value, callback) => {
             if (value) {
                 callback();
             } else {
-                callback(new Error('涓槦涓嶈兘涓虹┖'))
+                callback(new Error('澶勭疆鏃ユ湡涓嶈兘涓虹┖'))
             }
         }
         const checkPerson = (rule, value, callback) => {
             if (value) {
                 callback();
             } else {
-                callback(new Error('鎵ф硶浜哄憳涓嶈兘涓虹┖'))
+                callback()
             }
         }
         const checkNumber = (rule, value, callback) => {
             if (value) {
                 callback();
             } else {
-                callback(new Error('鎵ф硶浜哄憳缂栧彿涓嶈兘涓虹┖'))
+                callback()
+            }
+        }
+        const checkDepart = (rule, value, callback) => {
+            if (value) {
+                callback();
+            } else {
+                callback(new Error('璇烽�夋嫨閮ㄩ棬'))
             }
         }
         return {
             dispatch: {
                 baseCaseId: 0,//妗堜欢id
                 contactWay: "",//鑱旂郴鏂瑰紡
-                dispatchOpinion: "",//閮ㄩ棬
+                dispatchOpinion: "",//澶勭疆鎰忚
                 disposeDate: "",//澶勭疆鏃ユ湡
                 distance: 0,//璺濈
                 enforcementCar: '',//鎵ф硶杞�
                 enforcementTeam: "",//鎵ф硶涓槦
                 lawEnforcer: '',//鎵ф硶浜哄憳
-                lawEnforcerName: ""//鎵ф硶缂栧彿
+                lawEnforcerName: "",//鎵ф硶缂栧彿,
+                createUser: null,
             },
             rules: {
+                createUser: [
+                    {
+                        required: true, trigger: 'change', validator: checkDepart
+                    }
+                ],
                 contactWay: [
                     {
-                        required: true, trigger: 'blur', validator: checkPhone
+                        required: false, trigger: 'blur', validator: checkPhone
                     }
                 ],
                 dispatchOpinion: [
@@ -156,18 +174,20 @@
                 distance: [
                     { required: true, trigger: 'change', validator: checkDistance }
                 ],
-                enforcementCar: [
-                    { required: true, trigger: 'change', validator: checkCar }
-                ],
-                enforcementTeam: [
-                    { required: true, trigger: 'change', validator: checkTeam }
-                ],
+                // enforcementTeam: [
+                //     { required: true, trigger: 'change', validator: checkTeam }
+                // ],
                 lawEnforcer: [
                     { required: true, trigger: 'change', validator: checkPerson }
                 ],
                 lawEnforcerName: [
-                    { required: true, trigger: 'change', validator: checkNumber }
+                    { required: false, trigger: 'change', validator: checkNumber }
                 ],
+                disposeDate: [
+                    {
+                        required: true, trigger: 'false', validator: checkTeam
+                    }
+                ]
             },
             carOptions: [
                 {
@@ -180,14 +200,6 @@
                 },
             ],
             departOptions: [
-                {
-                    label: '閮ㄩ棬涓�',
-                    value: 1,
-                },
-                {
-                    label: '閮ㄩ棬浜�',
-                    value: 2,
-                },
             ],
             carOptions: [
                 {
@@ -200,24 +212,9 @@
                 },
             ],
             squadronOptions: [
-                {
-                    label: '涓槦涓�',
-                    value: 1,
-                },
-                {
-                    label: '涓槦浜�',
-                    value: 2,
-                },
             ],
             personOptions: [
-                {
-                    label: '浜哄憳涓�',
-                    value: 1,
-                },
-                {
-                    label: '浜哄憳浜�',
-                    value: 2,
-                },
+
             ],
         }
     },
@@ -228,40 +225,173 @@
             this.$refs.form.validate((valid) => {
                 console.log(valid);
                 if (valid) {
-                    const {dispatch,id} = this;
+                    const { dispatch, id } = this;
                     dispatch.disposeDate = new Date();
                     console.log(id);
                     dispatch.baseCaseId = id;
                     console.log(dispatch);
                     this.$axios({
-                        method:'post',
-                        url:`sccg/dispatch_handle/dispatch`,
-                        data:dispatch
+                        method: 'post',
+                        url: `sccg/dispatch_handle/dispatch`,
+                        data: dispatch
                     })
-                    .then(res=>{
-                        this.$message({
-                            type: res.code === 200 ? 'success':'error',
-                            message: res.code === 200 ? '璋冨害鎴愬姛':res.message,
+                        .then(res => {
+                            this.$message({
+                                type: res.code === 200 ? 'success' : 'error',
+                                message: res.code === 200 ? '璋冨害鎴愬姛' : res.message,
+                            })
+                            this.$emit('changeDialog', { flag: false });
+                            this.refresh();
                         })
-                        this.$emit('changeDialog',{dialogView:false});
-                    })
                 } else {
                     return false;
                 }
             })
+        },
+        // 鍙栨秷璋冨害
+        handleBack() {
+            this.$emit('changeDialog', { flag: false })
+        },
+        // 鑾峰彇鎵ф硶杞﹁締
+        getLawCarList() {
+            this.$axios({
+                method: 'get',
+                url: `sccg/car_Manage/query_enforce?current=1&size=1000`
+            })
+                .then(res => {
+                    this.carOptions = res.data.records;
+                    console.log(res, this.carOptions);
+                })
+        },
+        // 鑾峰彇娓e湡杞﹁締
+        getSoilCarList() {
+            this.$axios({
+                method: 'get',
+                url: `sccg/car_Manage/query_slag?current=1&size=1000`
+            })
+                .then(res => {
+                    this.carOptions = res.data.records;
+                    console.log(res);
+                })
+        },
+        // 鑾峰彇椤剁骇閮ㄩ棬
+        getDepartList() {
+            this.$axios({
+                method: 'get',
+                url: `sccg/depart/query_father`,
+            })
+                .then(res => {
+                    this.departOptions = res.data;
+                })
+        },
+        // 鑾峰彇涓槦
+        async getTeamList(id) {
+            console.log(id);
+            await this.$axios({
+                method: 'get',
+                url: `sccg/depart/query_father_children?fatherId=${id}`
+            })
+                .then(res => {
+                    this.squadronOptions = res.data;
+                })
+                .catch(err => {
+                    console.log(err);
+                })
+        },
+        // 鑾峰彇閮ㄩ棬涓嬬殑鐢ㄦ埛
+        async getDepartUserList(id) {
+            console.log(id);
+            await this.$axios({
+                method: 'get',
+                url: `sccg/admin/getDepartUser/${id}`,
+            })
+                .then(res => {
+                    console.log(res);
+                    if (res.code === 200) {
+                        this.personOptions = res.data;
+                    } else {
+                        this.personOptions = [];
+                    }
+                    if(this.personOptions.length === 0){
+                        this.$message({
+                            type: 'warning',
+                            message: '璇ヤ腑闃熶笅娌℃湁浜哄憳'
+                        })
+                    }
+                })
+                .catch(err => {
+                    this.$message({
+                        type: 'error',
+                        message: '璇ラ儴闂ㄤ汉鍛樹笉瓒筹紝璇锋崲涓儴闂�'
+                    })
+                })
+        },
+        // 閮ㄩ棬鏇存敼
+        async handleTopChange(id) {
+            this.dispatch.lawEnforcer = '';
+            this.dispatch.enforcementTeam = '';
+            this.dispatch.contactWay = '';
+            this.dispatch.lawEnforcerName = '';
+            await this.getTeamList(id);
+            // if (this.squadronOptions.length === 0) {
+            //     await this.getDepartUserList(id);
+            // }
+        },
+        // 涓槦鏇存敼
+        async handleMidChange(id) {
+            this.dispatch.lawEnforcer = '';
+            this.dispatch.contactWay = '';
+            this.dispatch.lawEnforcerName = '';
+            await this.getDepartUserList(id);
+        },
+        // 浜哄憳鏇存敼
+        async handlePerChange(id) {
+            let obj = await this.getLawUser(id);
+            this.dispatch.lawEnforcerName = obj.nickName;
+            this.dispatch.contactWay = obj.mobile;
+        },
+        // 鑾峰彇鎵ф硶浜哄憳淇℃伅
+        async getLawUser(id) {
+            let obj = {}
+            await this.$axios({
+                method: 'get',
+                url: `sccg/admin/${id}`
+            })
+                .then(res => {
+                    obj = res.data;
+                })
+            return obj;
         }
+    },
+    watch: {
+        'squadronOptions.length': {
+            handler(newval, oldval) {
+                console.log(newval);
+                if (newval === 0) {
+                    console.log(1);
+                    this.$message({
+                        type: 'warning',
+                        message: '璇ラ儴闂ㄤ笅娌℃湁涓槦'
+                    })
+                }
+            },
+            deep: true
+        },
     }
 }
 </script>
 <style lang="scss" scoped>
 .dispatch {
     padding: 50px 20px 10px;
-    .form-person{
+
+    .form-person {
         display: flex;
-        .person-item{
+
+        .person-item {
             margin-left: -100px;
         }
     }
+
     .form-footer {
         display: flex;
         align-items: center;
@@ -277,7 +407,8 @@
         height: 388px;
         width: 100%;
     }
-    .footer{
+
+    .footer {
         display: flex;
         justify-content: flex-end;
         padding: 10px 20px;

--
Gitblit v1.8.0