From 79f521ce63909fff82de9f624911d6c63e84fb53 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 23 三月 2022 21:08:45 +0800 Subject: [PATCH] 修复时间规则新增后视图未动态更新的bug --- src/pages/cameraAccess/components/TimeSlider.vue | 129 +++++++++++++++++++------------------------ 1 files changed, 57 insertions(+), 72 deletions(-) diff --git a/src/pages/cameraAccess/components/TimeSlider.vue b/src/pages/cameraAccess/components/TimeSlider.vue index 0f326d3..f84883f 100644 --- a/src/pages/cameraAccess/components/TimeSlider.vue +++ b/src/pages/cameraAccess/components/TimeSlider.vue @@ -2,11 +2,7 @@ <div class="sub-time-box"> <div class="btn-control"> <div class="el-tabs-edit"> - <span - v-if="!editSlider" - class="add-btn" - @click="handleTabsEdit('', 'edit')" - > + <span v-if="!editSlider" class="add-btn" @click="handleTabsEdit('', 'edit')"> <i class="el-icon-edit"></i> 缂栬緫 </span> @@ -22,20 +18,9 @@ </span> </div> </div> - <el-tabs - v-model="activeTab" - type="border-card" - editable - @edit="handleTabsEdit" - > - <el-tab-pane - v-for="item in VideoManageData.TimeRules" - :key="item.id" - :name="item.id" - > - <span slot="label" @click="tabClick(item)" style="width: 100px">{{ - item.name - }}</span> + <el-tabs v-model="activeTab" type="border-card" editable @edit="handleTabsEdit"> + <el-tab-pane v-for="item in VideoManageData.TimeRules" :key="item.id" :name="item.id"> + <span slot="label" @click="tabClick(item)" style="width: 100px">{{ item.name }}</span> <multi-range-slider :timeData="JSON.parse(item.time_rule)" :mainId="`${item.id}_${type}`" @@ -50,19 +35,19 @@ </template> <script> -import MultiRangeSlider from "@/components/subComponents/MultiRangeSlider"; -import { saveTimeRule, deleteTimeRule } from "@/api/timeRule"; +import MultiRangeSlider from "@/components/subComponents/MultiRangeSlider" +import { saveTimeRule, deleteTimeRule } from "@/api/timeRule" export default { name: "TimeSlider", components: { - MultiRangeSlider, + MultiRangeSlider }, props: { type: { default: "", - type: String, - }, + type: String + } }, data() { return { @@ -77,28 +62,29 @@ { day: 4, time_range: [{ start: "00:00", end: "24:00" }] }, { day: 5, time_range: [{ start: "00:00", end: "24:00" }] }, { day: 6, time_range: [{ start: "00:00", end: "24:00" }] }, - { day: 7, time_range: [{ start: "00:00", end: "24:00" }] }, + { day: 7, time_range: [{ start: "00:00", end: "24:00" }] } ], - isAdding: false, - }; + isAdding: false + } }, mounted() { // window.addEventListener('resize', this.windowSizeChange) }, methods: { handleTabsEdit(tabId, action) { - let tabs = this.VideoManageData.TimeRules; + let tabs = this.VideoManageData.TimeRules if (action === "add") { if (this.isAdding) { - return; + return } else { - this.isAdding = true; + this.isAdding = true let newRule = { id: "", name: "鏃堕棿娈�" + this.VideoManageData.TimeRules.length, - time_rule: this.allDay, - }; - this.updateTimeRule(newRule); + time_rule: this.allDay + } + + this.updateTimeRule(newRule) } } if (action === "remove") { @@ -106,61 +92,60 @@ this.$notify({ title: "璀﹀憡", message: "姝ゆ椂闂存姝e湪浣跨敤涓紝鏃犳硶鍒犻櫎锛�", - type: "warning", - }); + type: "warning" + }) - return; + return } - this.$confirm( - "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鍒�, 鎵�鍏宠仈鐨勪换鍔″皢浼氬け鏁堬紝鏄惁缁х画?", - { - center: true, - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - } - ) + this.$confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鍒�, 鎵�鍏宠仈鐨勪换鍔″皢浼氬け鏁堬紝鏄惁缁х画?", { + center: true, + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷" + }) .then(() => { deleteTimeRule({ id: tabId }).then((rsp) => { if (rsp && rsp.success) { - this.VideoManageData.getTimeRule(); + this.VideoManageData.getTimeRule() // this.VideoManageData.TimeRules.splice(2, 1) - this.activeTab = this.VideoManageData.TimeRules[0].id; + this.activeTab = this.VideoManageData.TimeRules[0].id this.$notify({ type: "success", - message: "鍒犻櫎鎴愬姛!", - }); + message: "鍒犻櫎鎴愬姛!" + }) } - }); + }) }) - .catch(() => {}); + .catch(() => {}) } if (action == "edit") { - this.editSlider = true; + this.editSlider = true } if (action == "lock") { - this.editSlider = false; + this.editSlider = false } }, windowSizeChange() { - let timeSlideWidth = document.querySelector(".sub-time-box").clientWidth; - this.cavasLength = timeSlideWidth; - console.log("鏃堕棿缁勪欢瀹藉害锛�", timeSlideWidth); + let timeSlideWidth = document.querySelector(".sub-time-box").clientWidth + this.cavasLength = timeSlideWidth + console.log("鏃堕棿缁勪欢瀹藉害锛�", timeSlideWidth) }, updateTimeRule(rule) { saveTimeRule(rule) .then(async (rsp) => { if (rsp && rsp.success) { - await this.VideoManageData.getTimeRule(); - this.isAdding = false; - this.activeTab = rsp.data.id; + await this.VideoManageData.getTimeRule() + this.isAdding = false + this.$nextTick(() => { + this.activeTab = this.VideoManageData.TimeRules[this.VideoManageData.TimeRuleSum - 1].id + }) } else { - this.isAdding = false; + this.isAdding = false } }) .catch(() => { - this.isAdding = false; - }); + this.isAdding = false + }) }, tabClick(item) { if (this.activeTab === item.id) { @@ -169,26 +154,26 @@ cancelButtonText: "鍙栨秷", inputValue: item.name, inputPattern: /^[\S]{1,16}$/, - inputErrorMessage: "鍚嶇О涓嶈兘鍖呭惈绌烘牸", + inputErrorMessage: "鍚嶇О涓嶈兘鍖呭惈绌烘牸" }) .then(({ value }) => { this.updateTimeRule({ id: item.id, name: value, - time_rule: JSON.parse(item.time_rule), - }); + time_rule: JSON.parse(item.time_rule) + }) this.$notify({ type: "success", - message: "鏃堕棿瑙勫垯鍚嶇О淇敼鎴愬姛", - }); + message: "鏃堕棿瑙勫垯鍚嶇О淇敼鎴愬姛" + }) }) - .catch(() => {}); + .catch(() => {}) } - }, - }, -}; + } + } +} </script> -<style lang='scss'> +<style lang="scss"> .sub-time-box { padding-right: 30px; position: relative; @@ -265,4 +250,4 @@ // z-index: 1; // } } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0