File was renamed from src/components/camera/SceneRule.vue |
| | |
| | | <div class="scene-edit-container"> |
| | | <div class="scene-title"> |
| | | <b style="font-size: 14px; line-height: 18px;">场景</b> |
| | | <el-button type="primary" size="mini" @click="handleCreate" style="margin-left:87%" v-show='!editScene'>+ 添加场景</el-button> |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | @click="handleCreate" |
| | | style="margin-left:87%" |
| | | v-show="!editScene" |
| | | >+ 添加场景</el-button> |
| | | </div> |
| | | |
| | | <el-form ref="form" label-width="80px" v-show="editScene"> |
| | | <el-form ref="form" label-width="80px" v-show="editScene"> |
| | | <div class="flex-form"> |
| | | <div class="left"> |
| | | <el-form-item label="场景名称"> |
| | | <el-input v-model="sceneForm.scene_name" size="mini" maxlength="15"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="事件等级" > |
| | | <el-form-item label="事件等级"> |
| | | <el-select |
| | | v-model="sceneForm.alarm_level" |
| | | placeholder="请选择" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="时间段"> |
| | | <el-select |
| | | v-model="sceneForm.time_rule_id" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | |
| | | > |
| | | <el-select v-model="sceneForm.time_rule_id" placeholder="请选择" size="mini"> |
| | | <el-option |
| | | v-for="item in VideoManageData.TimeRules" |
| | | :key="item.id" |
| | |
| | | </div> |
| | | </div> |
| | | <!-- <el-row> |
| | | <el-col :span="8"> --> |
| | | <!-- <el-form-item label="场景模板"> |
| | | <el-col :span="8">--> |
| | | <!-- <el-form-item label="场景模板"> |
| | | <el-select |
| | | v-model="sceneForm.template_id" |
| | | placeholder="请选择" |
| | |
| | | :value="item.id" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | <!-- </el-col> |
| | | </el-form-item>--> |
| | | <!-- </el-col> |
| | | <el-col :span="8"> |
| | | <el-form-item label="时间段"> |
| | | <el-select |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | </el-row>--> |
| | | <!-- <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="场景名称"> |
| | |
| | | <el-input v-model="sceneForm.desc" type="textarea" size="mini" style="width:200px;height:180px;"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | </el-row>--> |
| | | <!-- <el-row> |
| | | <el-col :span="8"> |
| | | <el-form-item label="事件等级"> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | </el-row>--> |
| | | |
| | | <scene-editor |
| | | ref="sceneEditor" |
| | |
| | | align="center" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column label="策略" prop="group_text" align="center" min-width="350px" > |
| | | <el-table-column label="策略" prop="group_text" align="center" min-width="350px"> |
| | | <template slot-scope="scope"> |
| | | <span v-html="scope.row.group_text"></span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="时间段" prop="time_name" align="center" width="100"> |
| | | |
| | | </el-table-column> |
| | | <el-table-column label="时间段" prop="time_name" align="center" width="100"></el-table-column> |
| | | <el-table-column label="描述" prop="desc" align="center" min-width="150"></el-table-column> |
| | | <!-- <el-table-column label="状态" align="center" width="90"> |
| | | <template slot-scope="scope"> |
| | |
| | | deleteCameraScene |
| | | } from '@/api/scene' |
| | | import RuleEditor from "@/components/subComponents/RuleEditor"; |
| | | import SceneEditor from "@/components/scene/Editor"; |
| | | import SceneEditor from "./scene/Editor"; |
| | | |
| | | export default { |
| | | name: "SceneRuleEditor", |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | bubbleSort(arr){ |
| | | for(var i = arr.length-1;i > 0 ; i--){ |
| | | for(var j = 0; j < i; j++){ |
| | | if(arr[j]>arr[j+1]){ |
| | | let temp = arr[j]; |
| | | arr[j]= arr[j+1]; |
| | | arr[j+1] = temp |
| | | } |
| | | bubbleSort(arr) { |
| | | for (var i = arr.length - 1; i > 0; i--) { |
| | | for (var j = 0; j < i; j++) { |
| | | if (arr[j] > arr[j + 1]) { |
| | | let temp = arr[j]; |
| | | arr[j] = arr[j + 1]; |
| | | arr[j + 1] = temp |
| | | } |
| | | } |
| | | } |
| | | return arr; |
| | | }, |
| | | getSceneName(sdk_name){ |
| | | getSceneName(sdk_name) { |
| | | this.sceneNameStore.push(sdk_name) |
| | | |
| | | if(!this.sceneForm.scene_name.trim()){ |
| | | if (!this.sceneForm.scene_name.trim()) { |
| | | this.sceneForm.scene_name = sdk_name |
| | | } |
| | | // }else if(this.sceneForm.scene_name == store[store.length-2]){ |
| | |
| | | this.$refs.sceneEditor.cleanRule(); |
| | | }, |
| | | handleCreate() { |
| | | debugger |
| | | console.log(this.DataStackPool.selectedDir.id,this.TreeDataPool.treeActiveName=='dataStack') |
| | | |
| | | console.log(this.DataStackPool.selectedDir.id, this.TreeDataPool.treeActiveName == 'dataStack') |
| | | if (this.linkRule && this.TreeDataPool.selectedNodes.length < 2) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: "请选择至少2个摄像机!" |
| | | }); |
| | | return false; |
| | | }else if(!this.linkRule && this.TreeDataPool.treeActiveName != 'dataStack' && this.TreeDataPool.selectedNodes.length < 1){ |
| | | } else if (!this.linkRule && this.TreeDataPool.treeActiveName != 'dataStack' && this.TreeDataPool.selectedNodes.length < 1) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: `请选择1个摄像机!` |
| | | }); |
| | | return false; |
| | | }else if(this.TreeDataPool.treeActiveName=='dataStack' && !this.DataStackPool.selectedDir.id){ |
| | | } else if (this.TreeDataPool.treeActiveName == 'dataStack' && !this.DataStackPool.selectedDir.id) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: `请先选择数据栈文件夹!` |
| | |
| | | this.editScene = true; |
| | | this.cleanForm(); |
| | | console.log(this.tableRuleList) |
| | | |
| | | |
| | | //初始化场景名称 |
| | | var pattern = /^场景\s*\d+\s*$/; |
| | | var tempArr = []; |
| | | this.tableRuleList.forEach(scene=>{ |
| | | debugger |
| | | if(pattern.test(scene.scene_name)){ |
| | | this.tableRuleList.forEach(scene => { |
| | | |
| | | if (pattern.test(scene.scene_name)) { |
| | | tempArr.push(Number(scene.scene_name.substring(2).trim())); |
| | | } |
| | | }); |
| | | let latest = tempArr.length>0? this.bubbleSort(tempArr)[tempArr.length-1]+1 : 1; |
| | | |
| | | this.sceneForm.scene_name = '场景'+latest; |
| | | let latest = tempArr.length > 0 ? this.bubbleSort(tempArr)[tempArr.length - 1] + 1 : 1; |
| | | |
| | | this.sceneForm.scene_name = '场景' + latest; |
| | | //初始化时间段 |
| | | this.sceneForm.time_rule_id = this.VideoManageData.TimeRules[0].id; |
| | | |
| | | |
| | | }, |
| | | handleEdit(scene) { |
| | | debugger |
| | | |
| | | this.sceneForm = scene; |
| | | this.editScene = true; |
| | | let selectedTpl = {}; |
| | |
| | | } |
| | | }) |
| | | this.templateSdks = selectedTpl.sdks; |
| | | debugger |
| | | |
| | | this.templateRules = JSON.stringify(scene.rules); |
| | | this.$refs.sceneEditor.editHandle(this.templateRules); |
| | | |
| | | |
| | | }, |
| | | updateTemplates() { |
| | | getAllTemplate().then(rsp => { |
| | |
| | | this.templateSdks = selectedTpl.sdks; |
| | | this.templateRules = selectedTpl.rules; |
| | | }, |
| | | validateForm(){ |
| | | debugger |
| | | if(!this.sceneForm.scene_name.trim()){ |
| | | validateForm() { |
| | | |
| | | if (!this.sceneForm.scene_name.trim()) { |
| | | this.$notify({ |
| | | type: 'warning', |
| | | message: '场景名不能为空' |
| | | }); |
| | | return false |
| | | }else if(!this.sceneForm.alarm_level){ |
| | | } else if (!this.sceneForm.alarm_level) { |
| | | this.$notify({ |
| | | type: 'warning', |
| | | message: '事件等级不能为空' |
| | | }); |
| | | return false |
| | | }else if(!this.sceneForm.time_rule_id){ |
| | | } else if (!this.sceneForm.time_rule_id) { |
| | | this.$notify({ |
| | | type: 'warning', |
| | | message: '时间段不能为空' |
| | |
| | | return true |
| | | }, |
| | | saveSceneRule() { |
| | | debugger |
| | | if(!this.validateForm()){ |
| | | |
| | | if (!this.validateForm()) { |
| | | return |
| | | } |
| | | let editorResp = this.$refs.sceneEditor.submitRule(); |
| | |
| | | }) |
| | | .catch(() => { }); |
| | | }, |
| | | cellStyle(obj){ |
| | | if(obj.column.label=='策略'){ |
| | | cellStyle(obj) { |
| | | if (obj.column.label == '策略') { |
| | | return 'text-align:left;padding-left:8px;' |
| | | } |
| | | } |
| | |
| | | height: 30px; |
| | | text-align: left; |
| | | margin: 10px 0px; |
| | | |
| | | } |
| | | .flex-form{ |
| | | .flex-form { |
| | | display: flex; |
| | | width: 80%; |
| | | padding-left: 25px; |
| | | .left,.right{ |
| | | .left, |
| | | .right { |
| | | width: 43.3%; |
| | | min-width: 550px; |
| | | .el-form-item{ |
| | | .el-form-item { |
| | | margin-bottom: 16px; |
| | | } |
| | | .el-form-item__label{ |
| | | .el-form-item__label { |
| | | text-align: left; |
| | | } |
| | | .el-form-item__content{ |
| | | .el-form-item__content { |
| | | text-align: left; |
| | | .el-input,.el-select{ |
| | | .el-input, |
| | | .el-select { |
| | | width: 400px !important; |
| | | } |
| | | } |
| | | textarea{ |
| | | textarea { |
| | | height: 143px; |
| | | } |
| | | } |
| | | .right{ |
| | | .right { |
| | | padding-top: 6px; |
| | | } |
| | | } |
| | |
| | | padding: 0px; |
| | | box-sizing: border-box; |
| | | } |
| | | .el-form-item{ |
| | | .el-form-item { |
| | | width: calc(100% - 30px); |
| | | |
| | | } |
| | | .el-input__inner { |
| | | border: 0px !important; |
| | |
| | | span { |
| | | cursor: pointer; |
| | | } |
| | | .cell{ |
| | | padding-left: 0!important; |
| | | .cell { |
| | | padding-left: 0 !important; |
| | | } |
| | | } |
| | | } |