| | |
| | | <template> |
| | | <div class="scene-edit-container"> |
| | | <div class="scene-title"> |
| | | <b style="font-size: 14px; line-height: 18px">场景</b> |
| | | <b style="font-size: 14px; line-height: 18px">督查任务</b> |
| | | <el-button |
| | | type="primary" |
| | | size="mini" |
| | | @click="handleCreate" |
| | | style="margin-left: 90%" |
| | | v-show="!editScene && TreeDataPool.selectedNode.type !== 'MENU'" |
| | | >+ 添加场景</el-button |
| | | >+ 添加任务</el-button |
| | | > |
| | | </div> |
| | | |
| | | <el-form ref="form" label-width="80px" v-show="editScene"> |
| | | <div class="flex-form"> |
| | | <div class="left"> |
| | | <el-form-item label="场景名称"> |
| | | <el-form-item label="任务名称"> |
| | | <el-input |
| | | v-model="sceneForm.scene_name" |
| | | size="mini" |
| | |
| | | </el-form-item> |
| | | <el-form-item label="时间段"> |
| | | <el-select |
| | | v-model="sceneForm.time_rule_id" |
| | | v-model="sceneForm.workingTimes" |
| | | placeholder="请选择" |
| | | size="mini" |
| | | > |
| | |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 检测内容 --> |
| | | <el-form-item label="检测内容"> |
| | | <el-select v-model="sceneForm.checkContents" multiple placeholder="请选择" |
| | | size="mini"> |
| | | <el-option v-for="item in VideoManageData.checkOptions" :key="item.checkId" :label="item.fileName" |
| | | :value="item.checkId"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <!-- 预警规则 --> |
| | | <el-form-item label="预警规则"> |
| | | <el-select v-model="sceneForm.warningRules" placeholder="请选择" |
| | | size="mini" multiple> |
| | | <el-option v-for="item in VideoManageData.ruleOptions" :key="item.ruleId" :label="item.fileName" |
| | | :value="item.ruleId"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <!-- 知识库 --> |
| | | <!-- <el-form-item label="知识库" |
| | | size="mini"> |
| | | <el-cascader v-model="sceneForm.knowsList" :options="VideoManageData.knowledgeOptions" :props="knowledgeProps" clearable |
| | | filterable placeholder="请选择" class="knowledge-cascader" :show-all-levels="false"></el-cascader> |
| | | </el-form-item> --> |
| | | </div> |
| | | <div class="right"> |
| | | <el-form-item label="场景描述"> |
| | | <el-form-item label="任务描述"> |
| | | <el-input |
| | | v-model="sceneForm.desc" |
| | | type="textarea" |
| | | size="mini" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="事件声音"> |
| | | <!-- <el-form-item label="事件声音"> |
| | | <el-select |
| | | v-model="sceneForm.voice" |
| | | placeholder="空" |
| | |
| | | style="font-size: 26px; vertical-align: middle; color: #409eff" |
| | | ></i> |
| | | </span> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | </div> |
| | | </div> |
| | | |
| | | <scene-editor |
| | | <!-- <scene-editor |
| | | ref="sceneEditor" |
| | | :isLinkRule="linkRule" |
| | | :Cameras="seletedCameras" |
| | | :ruleList="templateRules" |
| | | @sdkNameChange="getSceneName" |
| | | ></scene-editor> |
| | | ></scene-editor> --> |
| | | |
| | | |
| | | <el-form-item style="width: 60%; min-width: 1048px"> |
| | | <el-button size="mini" @click="editScene = false">取消</el-button> |
| | |
| | | align="center" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | label="场景名称" |
| | | label="任务名称" |
| | | prop="scene_name" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | <el-table-column label="事件等级" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.alarm_level | alarmLevel }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column |
| | | label="策略" |
| | | prop="group_text" |
| | | align="center" |
| | |
| | | <template slot-scope="scope"> |
| | | <span v-html="scope.row.group_text"></span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column |
| | | label="时间段" |
| | | prop="time_name" |
| | | align="center" |
| | | ></el-table-column> |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{(scope.row.workingTime || []).map(r => r.labelName).join(' / ') || ''}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="检测内容" |
| | | prop="checkContent" |
| | | align="center" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{(scope.row.checkContent || []).map(r => r.fileName).join(' / ') || ''}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="预警规则" |
| | | prop="warningRule" |
| | | align="center" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{(scope.row.warningRule || []).map(r => r.fileName).join(' / ') || ''}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="知识库" |
| | | prop="knowledge" |
| | | align="center" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{(scope.row.knowledge || []).map(r => r.fileName).join(' / ') || ''}} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | label="描述" |
| | | prop="desc" |
| | |
| | | <el-switch v-model="scope.row.defence_state" @change="updateDefence(scope.row)"></el-switch> |
| | | </template> |
| | | </el-table-column>--> |
| | | <el-table-column label="事件声音" align="center"> |
| | | <!-- <el-table-column label="事件声音" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ getSoundById(scope.row.voiceId) }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="事件等级" align="center"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.alarm_level | alarmLevel }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table-column> --> |
| | | <el-table-column label="操作" fixed="right" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-tooltip |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { saveCameraScene, deleteCameraScene } from "@/api/scene"; |
| | | import { saveCameraScene, deleteCameraScene,deleteCameraSceneTwo } from "@/api/scene"; |
| | | import RuleEditor from "@/components/subComponents/RuleEditor"; |
| | | import SceneEditor from "./scene/Editor"; |
| | | import { getSoundList } from "@/api/event"; |
| | |
| | | if (!this.sceneForm.scene_name.trim()) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: "场景名不能为空", |
| | | message: "任务名不能为空", |
| | | }); |
| | | return false; |
| | | } else if (!this.sceneForm.alarm_level) { |
| | |
| | | message: "事件等级不能为空", |
| | | }); |
| | | return false; |
| | | } else if (!this.sceneForm.time_rule_id) { |
| | | } else if (!this.sceneForm.workingTimes) { |
| | | this.$notify({ |
| | | type: "warning", |
| | | message: "时间段不能为空", |
| | |
| | | if (!this.validateForm()) { |
| | | return; |
| | | } |
| | | let editorResp = this.$refs.sceneEditor.submitRule(); |
| | | if (!editorResp) { |
| | | return; |
| | | } |
| | | this.sceneForm.rules = editorResp.rules; |
| | | this.sceneForm.id = editorResp.id; |
| | | this.sceneForm.group_text = editorResp.text; |
| | | |
| | | // let editorResp = this.$refs.sceneEditor.submitRule(); |
| | | // if (!editorResp) { |
| | | // return; |
| | | // } |
| | | // this.sceneForm.rules = editorResp.rules; |
| | | // this.sceneForm.id = editorResp.id; |
| | | // this.sceneForm.group_text = editorResp.text; |
| | | const workTimes = [this.sceneForm.workingTimes].map(id => { |
| | | const timeOption = this.VideoManageData.TimeRules.find(opt => opt.id === id) |
| | | return { |
| | | labelId: id, |
| | | labelName: timeOption ? timeOption.name : '' |
| | | } |
| | | }) |
| | | this.sceneForm.taskName = this.sceneForm.scene_name |
| | | this.sceneForm.eventLevel = this.sceneForm.alarm_level |
| | | this.sceneForm.checks = this.sceneForm.checkContents |
| | | this.sceneForm.rules = this.sceneForm.warningRules |
| | | this.sceneForm.workTimes = workTimes |
| | | this.sceneForm.taskDescription = this.sceneForm.desc |
| | | this.onSaveScene(this.sceneForm); |
| | | }, |
| | | |
| | | handleDelScene(groupRule) { |
| | | let _this = this; |
| | | this.$confirm("提示:删除后,该条规则将失效,是否删除?", { |
| | | this.$confirm("提示:删除后,该条任务将失效,是否删除?", { |
| | | center: true, |
| | | cancelButtonClass: "comfirm-class-cancle", |
| | | confirmButtonClass: "comfirm-class-sure", |
| | | }) |
| | | .then(() => { |
| | | deleteCameraScene(groupRule.id).then((res) => { |
| | | // console.info("groupRule:"+JSON.stringify(groupRule)) |
| | | deleteCameraSceneTwo( |
| | | { |
| | | taskId: groupRule.taskId |
| | | } |
| | | ).then((res) => { |
| | | this.$emit("delete-rule"); |
| | | if (res && res.success) { |
| | | if (res && res.status === 200) { |
| | | // console.info("删除成功") |
| | | this.$notify({ |
| | | type: "success", |
| | | message: "删除成功", |