From 4641a877cd6a94e4d35dca7f7f14bc1443e2d2ad Mon Sep 17 00:00:00 2001 From: luobisheng <727299681@qq.com> Date: 星期二, 29 十一月 2022 17:59:55 +0800 Subject: [PATCH] 上传处置类型修改 --- src/components/dispatch/index.vue | 712 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 438 insertions(+), 274 deletions(-) diff --git a/src/components/dispatch/index.vue b/src/components/dispatch/index.vue index 73c86db..2089ae8 100644 --- a/src/components/dispatch/index.vue +++ b/src/components/dispatch/index.vue @@ -1,291 +1,455 @@ <template> - <div class="dispatch"> - <el-form ref="form" :model="dispatch" :rules="rules" label-width="120px"> - <!-- 閫夋嫨璺濈 --> - <el-form-item label="璺濈:" prop="distance"> - <el-radio-group v-model="dispatch.distance"> - <el-radio :label="1">100m浠ュ唴</el-radio> - <el-radio :label="2">300m浠ュ唴</el-radio> - <el-radio :label="3">500m浠ュ唴</el-radio> - <el-radio :label="4">1km浠ュ唴</el-radio> - <el-radio :label="5">2km浠ュ唴</el-radio> - <el-radio :label="6">3km浠ュ唴</el-radio> - </el-radio-group> - </el-form-item> - <!-- 閫夋嫨鎵ф硶杞� --> - <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> - </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-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-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-option> - </el-select> - </el-form-item> - </div> - <div class="form-footer"> - <!-- 鎵ф硶浜哄憳缂栧彿 --> - <el-form-item label="鎵ф硶浜哄憳缂栧彿:" prop="lawEnforcerName"> - <el-input v-model="dispatch.lawEnforcerName"></el-input> - </el-form-item> - <!-- 鎵ф硶浜哄憳鑱旂郴鏂瑰紡 --> - <el-form-item label="鑱旂郴鏂瑰紡:" prop="contactWay"> - <el-input v-model="dispatch.contactWay"></el-input> - </el-form-item> - <el-button type="primary">鍙戦�佺煭淇�</el-button> - </div> - </el-form> - <div class="map"> - <MyMap></MyMap> - </div> - <div class="footer"> - <el-button type="primary" @click="handleDispatch">纭畾</el-button> - <el-button @click="handleBack">杩斿洖</el-button> - </div> + <div class="dispatch"> + <el-form ref="form" :model="dispatch" :rules="rules" label-width="120px"> + <!-- 閫夋嫨璺濈 --> + <el-form-item label="璺濈:" prop="distance"> + <el-radio-group v-model="dispatch.distance"> + <el-radio :label="1">100m浠ュ唴</el-radio> + <el-radio :label="2">300m浠ュ唴</el-radio> + <el-radio :label="3">500m浠ュ唴</el-radio> + <el-radio :label="4">1km浠ュ唴</el-radio> + <el-radio :label="5">2km浠ュ唴</el-radio> + <el-radio :label="6">3km浠ュ唴</el-radio> + </el-radio-group> + </el-form-item> + <!-- 閫夋嫨鎵ф硶杞� --> + <el-form-item label="閫夋嫨鎵ф硶杞�:" prop="enforcementCar"> + <el-select v-model="dispatch.enforcementCar" placeholder="璇烽�夋嫨"> + <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="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="閫夋嫨涓槦" + :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="璇烽�夋嫨浜哄憳" + :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> + </div> + <div class="form-footer"> + <!-- 鎵ф硶浜哄憳缂栧彿 --> + <el-form-item label="鎵ф硶浜哄憳缂栧彿:" prop="lawEnforcerName"> + <el-input v-model="dispatch.lawEnforcerName" disabled></el-input> + </el-form-item> + <!-- 鎵ф硶浜哄憳鑱旂郴鏂瑰紡 --> + <el-form-item label="鑱旂郴鏂瑰紡:" prop="contactWay"> + <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="閫夋嫨鏃ユ湡鏃堕棿" + value-format="yyyy-MM-dd HH:mm:ss" + > + </el-date-picker> + </el-form-item> + </div> + </el-form> + <div class="map"> + <!-- <MyMap></MyMap> --> </div> + <div class="footer"> + <el-button type="primary" @click="handleDispatch">纭畾</el-button> + <el-button @click="handleBack">杩斿洖</el-button> + </div> + </div> </template> <script> -import MyMap from '@/components/map' +import MyMap from "@/components/map"; +import { parseTime } from "@/utils/index"; export default { - components: { - MyMap - }, - props: ['id','changeDialog','refresh'], - created() { - console.log(this.id); - }, - data() { - const checkPhone = (rule, value, callback) => { - if (value) { - const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/ - if (!rep.test(value)) { - callback("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜"); - } else { - callback(); - } - } else { - callback(new Error('鑱旂郴鏂瑰紡涓嶈兘涓虹┖')) - } + components: { + MyMap, + }, + props: ["id", "changeDialog", "refresh", "mytype"], + created() { + // 鍒ゆ柇杞﹁締绫诲瀷 + this.mytype === 1 ? this.getLawCarList() : this.getSoilCarList(); + this.getDepartList(); + }, + data() { + const checkPhone = (rule, value, callback) => { + if (value) { + const rep = /(^1[3|4|5|7|8|9]\d{9}$)|(^09\d{8}$)/; + if (!rep.test(value)) { + callback("璇疯緭鍏ユ纭殑鎵嬫満鍙风爜"); + } else { + callback(); } - const checkOpinion = (rule, value, callback) => { - if (value) { - callback(); - } else { - callback(new Error('閮ㄩ棬涓嶈兘涓虹┖')) - } - } - const checkDistance = (rule, value, callback) => { - if (value) { - callback(); - } else { - 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('涓槦涓嶈兘涓虹┖')) - } - } - const checkPerson = (rule, value, callback) => { - if (value) { - callback(); - } else { - callback(new Error('鎵ф硶浜哄憳涓嶈兘涓虹┖')) - } - } - const checkNumber = (rule, value, callback) => { - if (value) { - callback(); - } else { - callback(new Error('鎵ф硶浜哄憳缂栧彿涓嶈兘涓虹┖')) - } - } - return { - dispatch: { - baseCaseId: 0,//妗堜欢id - contactWay: "",//鑱旂郴鏂瑰紡 - dispatchOpinion: "",//閮ㄩ棬 - disposeDate: "",//澶勭疆鏃ユ湡 - distance: 0,//璺濈 - enforcementCar: '',//鎵ф硶杞� - enforcementTeam: "",//鎵ф硶涓槦 - lawEnforcer: '',//鎵ф硶浜哄憳 - lawEnforcerName: ""//鎵ф硶缂栧彿 - }, - rules: { - contactWay: [ - { - required: true, trigger: 'blur', validator: checkPhone - } - ], - dispatchOpinion: [ - { required: true, trigger: 'change', validator: checkOpinion } - ], - distance: [ - { required: true, trigger: 'change', validator: checkDistance } - ], - enforcementCar: [ - { required: true, trigger: 'change', validator: checkCar } - ], - enforcementTeam: [ - { required: true, trigger: 'change', validator: checkTeam } - ], - lawEnforcer: [ - { required: true, trigger: 'change', validator: checkPerson } - ], - lawEnforcerName: [ - { required: true, trigger: 'change', validator: checkNumber } - ], - }, - carOptions: [ - { - label: '杞﹁締涓�', - value: 1, - }, - { - label: '杞﹁締浜�', - value: 2, - }, - ], - departOptions: [ - { - label: '閮ㄩ棬涓�', - value: 1, - }, - { - label: '閮ㄩ棬浜�', - value: 2, - }, - ], - carOptions: [ - { - label: '杞﹁締涓�', - value: 1, - }, - { - label: '杞﹁締浜�', - value: 2, - }, - ], - squadronOptions: [ - { - label: '涓槦涓�', - value: 1, - }, - { - label: '涓槦浜�', - value: 2, - }, - ], - personOptions: [ - { - label: '浜哄憳涓�', - value: 1, - }, - { - label: '浜哄憳浜�', - value: 2, - }, - ], - } - }, - methods: { - // 鎵ц璋冨害 - handleDispatch() { - console.log(this.dispatch); - this.$refs.form.validate((valid) => { - console.log(valid); - if (valid) { - 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 - }) - .then(res=>{ - this.$message({ - type: res.code === 200 ? 'success':'error', - message: res.code === 200 ? '璋冨害鎴愬姛':res.message, - }) - this.$emit('changeDialog',{flag:false}); - this.refresh(); - }) - } else { - return false; - } - }) + } else { + callback(); + } + }; + const checkOpinion = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error("娲鹃仯鎰忚涓嶈兘涓虹┖")); + } + }; + const checkDistance = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error("璺濈涓嶈兘涓虹┖")); + } + }; + const checkTeam = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error("澶勭疆鏃ユ湡涓嶈兘涓虹┖")); + } + }; + const checkPerson = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(); + } + }; + const checkNumber = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(); + } + }; + const checkDepart = (rule, value, callback) => { + if (value) { + callback(); + } else { + callback(new Error("璇烽�夋嫨閮ㄩ棬")); + } + }; + return { + dispatch: { + baseCaseId: 0, //妗堜欢id + contactWay: "", //鑱旂郴鏂瑰紡 + dispatchOpinion: "", //澶勭疆鎰忚 + disposeDate: "", //澶勭疆鏃ユ湡 + distance: 0, //璺濈 + enforcementCar: "", //鎵ф硶杞� + enforcementTeam: "", //鎵ф硶涓槦 + lawEnforcer: "", //鎵ф硶浜哄憳 + lawEnforcerName: "", //鎵ф硶缂栧彿, + createUser: null, + }, + rules: { + createUser: [ + { + required: true, + trigger: "change", + validator: checkDepart, + }, + ], + contactWay: [ + { + required: false, + trigger: "blur", + validator: checkPhone, + }, + ], + dispatchOpinion: [ + { required: true, trigger: "change", validator: checkOpinion }, + ], + // distance: [ + // { required: true, trigger: "change", validator: checkDistance }, + // ], + // enforcementTeam: [ + // { required: true, trigger: 'change', validator: checkTeam } + // ], + lawEnforcer: [ + { required: true, trigger: "change", validator: checkPerson }, + ], + lawEnforcerName: [ + { required: false, trigger: "change", validator: checkNumber }, + ], + disposeDate: [ + { + required: true, + trigger: "false", + validator: checkTeam, + }, + ], + }, + carOptions: [ + { + label: "杞﹁締涓�", + value: 1, }, - // 鍙栨秷璋冨害 - handleBack(){ - this.$emit('changeDialog',{flag:false}) + { + label: "杞﹁締浜�", + value: 2, + }, + ], + departOptions: [], + carOptions: [ + { + label: "杞﹁締涓�", + value: 1, + }, + { + label: "杞﹁締浜�", + value: 2, + }, + ], + squadronOptions: [], + personOptions: [], + }; + }, + methods: { + // 鎵ц璋冨害 + handleDispatch() { + console.log(this.dispatch); + this.$refs.form.validate((valid) => { + console.log(valid); + if (valid) { + 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, + }).then((res) => { + this.$message({ + type: res.code === 200 ? "success" : "error", + message: res.code === 200 ? "璋冨害鎴愬姛" : res.message, + }); + this.$emit("changeDialog", { flag: false }); + this.refresh(); + }); + } 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_enforce?current=1&size=1000`, + }).then((res) => { + this.carOptions = res.data.records; + }); + }, + // 鑾峰彇椤剁骇閮ㄩ棬 + 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) => { + 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{ - display: flex; - .person-item{ - margin-left: -100px; - } - } - .form-footer { - display: flex; - align-items: center; - line-height: 40px; + padding: 50px 20px 10px; - .el-button { - margin-bottom: 22px; - margin-left: 40px; - } - } + .form-person { + display: flex; - .map { - height: 388px; - width: 100%; + .person-item { + margin-left: -100px; } - .footer{ - display: flex; - justify-content: flex-end; - padding: 10px 20px; + } + + .form-footer { + display: flex; + align-items: center; + line-height: 40px; + + .el-button { + margin-bottom: 22px; + margin-left: 40px; } + } + + .map { + height: 388px; + width: 100%; + } + + .footer { + display: flex; + justify-content: flex-end; + padding: 10px 20px; + } } </style> \ No newline at end of file -- Gitblit v1.8.0