shijian
This commit is contained in:
		
							parent
							
								
									3e35f22abc
								
							
						
					
					
						commit
						3eaeef63b4
					
				|  | @ -67,4 +67,43 @@ export default { | ||||||
| 			} | 			} | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
|  | 	, | ||||||
|  | 	vchannel:{ | ||||||
|  |         list: { | ||||||
|  | 			name: "获取", | ||||||
|  | 			req: async function(data){ | ||||||
|  | 				return await http.get( | ||||||
|  | 					`${config.API_URL}/ecm/algo_vchannel/`, | ||||||
|  | 					data | ||||||
|  | 				); | ||||||
|  | 			} | ||||||
|  | 		}, | ||||||
|  | 		create: { | ||||||
|  | 			name: "创建", | ||||||
|  | 			req: async function(data){ | ||||||
|  | 				return await http.post( | ||||||
|  | 					`${config.API_URL}/ecm/algo_vchannel/`, | ||||||
|  | 					data); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		, | ||||||
|  | 		creates: { | ||||||
|  | 			name: "批量创建", | ||||||
|  | 			req: async function(data){ | ||||||
|  | 				return await http.post( | ||||||
|  | 					`${config.API_URL}/ecm/algo_vchannel/creates/`, | ||||||
|  | 					data); | ||||||
|  | 			} | ||||||
|  | 		}, | ||||||
|  | 		delete: { | ||||||
|  | 			name: "删除", | ||||||
|  | 			req: async function(id, data){ | ||||||
|  | 				return await http.delete( | ||||||
|  | 					`${config.API_URL}/ecm/algo_vchannel/${id}/`, | ||||||
|  | 					data); | ||||||
|  | 			} | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
| } | } | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | import config from "@/config" | ||||||
|  | import http from "@/utils/request" | ||||||
|  | 
 | ||||||
|  | export default { | ||||||
|  | 	tdevice: { | ||||||
|  | 		list: { | ||||||
|  | 			name: "三方喇叭接口", | ||||||
|  | 			req: async function(data){ | ||||||
|  | 				return await http.get( | ||||||
|  | 					`${config.API_URL}/third/tdevice/`, | ||||||
|  | 					data | ||||||
|  | 				); | ||||||
|  | 			} | ||||||
|  | 		}, | ||||||
|  | 		 | ||||||
|  | 	}, | ||||||
|  | } | ||||||
|  | @ -94,6 +94,16 @@ const routes = [ | ||||||
|         }, |         }, | ||||||
|         "component": "ecm/notify_setting" |         "component": "ecm/notify_setting" | ||||||
|       }, |       }, | ||||||
|  |        | ||||||
|  |       { | ||||||
|  |         "name": "algo", | ||||||
|  |         "path": "/ecm/algo", | ||||||
|  |         "meta": { | ||||||
|  |           "title": "算法配置", | ||||||
|  |           "icon": "el-icon-menu", | ||||||
|  |         }, | ||||||
|  |         "component": "ecm/algo" | ||||||
|  |       } | ||||||
|     ] |     ] | ||||||
|   }, |   }, | ||||||
|   { |   { | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ | ||||||
|             </el-select> |             </el-select> | ||||||
|           </el-form-item> |           </el-form-item> | ||||||
|         </el-col> |         </el-col> | ||||||
|         <el-col :md="12" :sm="24" id="posts" style="display: none"> |         <el-col :md="12" :sm="24" v-show="postshow"> | ||||||
|           <el-form-item label="关联岗位" prop="post"> |           <el-form-item label="关联岗位" prop="post"> | ||||||
|             <el-select v-model="form.post" style="width: 100%"> |             <el-select v-model="form.post" style="width: 100%"> | ||||||
|               <el-option |               <el-option | ||||||
|  | @ -54,7 +54,7 @@ | ||||||
|             </el-select> |             </el-select> | ||||||
|           </el-form-item> |           </el-form-item> | ||||||
|         </el-col> |         </el-col> | ||||||
|         <el-col :md="12" :sm="24" id="employee" style="display: none"> |         <el-col :md="12" :sm="24" v-show="peopleshow"> | ||||||
|           <el-form-item label="关联人员" prop="employee"> |           <el-form-item label="关联人员" prop="employee"> | ||||||
|             <el-select v-model="form.employee" style="width: 100%"> |             <el-select v-model="form.employee" style="width: 100%"> | ||||||
|               <el-option |               <el-option | ||||||
|  | @ -66,7 +66,7 @@ | ||||||
|             </el-select> |             </el-select> | ||||||
|           </el-form-item> |           </el-form-item> | ||||||
|         </el-col> |         </el-col> | ||||||
|         <el-col :md="12" :sm="24" id="dept" style="display: none"> |         <el-col :md="12" :sm="24" v-show="orgshow"> | ||||||
|           <el-form-item label="关联部门" prop="dept"> |           <el-form-item label="关联部门" prop="dept"> | ||||||
|             <el-cascader |             <el-cascader | ||||||
|               v-model="form.dept" |               v-model="form.dept" | ||||||
|  | @ -161,6 +161,9 @@ export default { | ||||||
|       postOptions: [], |       postOptions: [], | ||||||
|       employeeOptions: [], |       employeeOptions: [], | ||||||
|       deptOptions: [], |       deptOptions: [], | ||||||
|  |        postshow:false, | ||||||
|  |       orgshow:false, | ||||||
|  |      peopleshow:false, | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   mounted() { |   mounted() { | ||||||
|  | @ -197,18 +200,19 @@ export default { | ||||||
| 
 | 
 | ||||||
|     // |     // | ||||||
|     cateChange() { |     cateChange() { | ||||||
|       if (this.form.obj_cate == "岗位") { |        if (this.form.obj_cate == 'post') { | ||||||
|         document.getElementById("posts").style.display = "block"; |     | ||||||
|         document.getElementById("employee").style.display = "none"; |        this.postshow=true; | ||||||
|         document.getElementById("dept").style.display = "none"; |        this.peopleshow=false; | ||||||
|       } else if (this.form.obj_cate == "单位") { |         this.orgshow=false; | ||||||
|         document.getElementById("posts").style.display = "none"; |       } else if (this.form.obj_cate == "people") { | ||||||
|         document.getElementById("employee").style.display = "none"; |         this.postshow=false; | ||||||
|         document.getElementById("dept").style.display = "block"; |        this.peopleshow=true; | ||||||
|  |         this.orgshow=false; | ||||||
|       } else { |       } else { | ||||||
|         document.getElementById("posts").style.display = "none"; |         this.postshow=false; | ||||||
|         document.getElementById("employee").style.display = "block"; |        this.peopleshow=false; | ||||||
|         document.getElementById("dept").style.display = "none"; |         this.orgshow=true; | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     //显示 |     //显示 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,210 @@ | ||||||
|  | <template> | ||||||
|  |   <el-container> | ||||||
|  |     <el-aside width="40%"> | ||||||
|  |       <el-container> | ||||||
|  |         <el-header> | ||||||
|  |           <div class="left-panel"> | ||||||
|  |              | ||||||
|  |             <!-- <el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button> --> | ||||||
|  |           </div> | ||||||
|  |         </el-header> | ||||||
|  |         <el-main class="nopadding"> | ||||||
|  |           <scTable | ||||||
|  |             ref="table" | ||||||
|  |             :data="eventcateList" | ||||||
|  |             row-key="id" | ||||||
|  |             stripe | ||||||
|  |             highlightCurrentRow | ||||||
|  |             @row-click="rowClick" | ||||||
|  |             :hidePagination="true" | ||||||
|  |           > | ||||||
|  |             <el-table-column | ||||||
|  |               label="#" | ||||||
|  |               type="index" | ||||||
|  |               width="50" | ||||||
|  |             ></el-table-column> | ||||||
|  |             <el-table-column | ||||||
|  |               label="名称" | ||||||
|  |               prop="name" | ||||||
|  |               width="120" | ||||||
|  |             ></el-table-column> | ||||||
|  |             <el-table-column | ||||||
|  |               label="标识" | ||||||
|  |               prop="code" | ||||||
|  |               width="80" | ||||||
|  |             ></el-table-column> | ||||||
|  |             <el-table-column label="触发" prop="trigger" width="80"> | ||||||
|  |               <template #default="scope"> | ||||||
|  |                 <span v-if="scope.row.trigger == 10">监控</span> | ||||||
|  |                 <span v-if="scope.row.trigger == 20">定位</span> | ||||||
|  |               </template> | ||||||
|  |             </el-table-column> | ||||||
|  |             <el-table-column label="音响" prop="speaker_on" width="50"> | ||||||
|  |               <template #default="scope"> | ||||||
|  |                 <el-switch | ||||||
|  |                   v-model="scope.row.speaker_on" | ||||||
|  |                   :disabled="true" | ||||||
|  |                 ></el-switch> | ||||||
|  |               </template> | ||||||
|  |             </el-table-column> | ||||||
|  |             <el-table-column label="操作" fixed="right" align="right"> | ||||||
|  |               <template #default="scope"> | ||||||
|  | 				  <el-button | ||||||
|  |                   type="primary" | ||||||
|  |                   link | ||||||
|  |                   size="small" | ||||||
|  |                   @click="adds_edit(scope.row)" | ||||||
|  |                   >批量布设</el-button> | ||||||
|  |                 | ||||||
|  |               </template> | ||||||
|  |             </el-table-column> | ||||||
|  |           </scTable> | ||||||
|  |         </el-main> | ||||||
|  |       </el-container> | ||||||
|  |     </el-aside> | ||||||
|  |     <el-container> | ||||||
|  |       <el-header> | ||||||
|  |         <div class="left-panel"> | ||||||
|  |           <el-button | ||||||
|  |             type="primary" | ||||||
|  |             plain | ||||||
|  |             icon="el-icon-plus" | ||||||
|  |             @click="add" | ||||||
|  |           ></el-button> | ||||||
|  |         </div> | ||||||
|  |       </el-header> | ||||||
|  |       <el-main class="nopadding"> | ||||||
|  |         <scTable | ||||||
|  |           ref="tablevchannel" | ||||||
|  |           :data="vchannelList" | ||||||
|  |           row-key="id" | ||||||
|  |           stripe | ||||||
|  |           :hidePagination="true" | ||||||
|  |         > | ||||||
|  |           <el-table-column label="#" type="index" width="50"></el-table-column> | ||||||
|  |           <el-table-column label="算法名称" prop="algo_.name" width="150"></el-table-column> | ||||||
|  | 		   <el-table-column label="视频名称" prop="vchannel_.name" width="150"></el-table-column> | ||||||
|  |           <el-table-column label="始终开启" prop="always_on" width="150"></el-table-column> | ||||||
|  |           <el-table-column label="操作" fixed="right" align="right"> | ||||||
|  |             <template #default="scope"> | ||||||
|  |               <el-button | ||||||
|  |                 type="danger" | ||||||
|  |                 link | ||||||
|  |                 size="small" | ||||||
|  |                 @click="table_del(scope.row, scope.$index)" | ||||||
|  |                 >删除</el-button | ||||||
|  |               > | ||||||
|  |             </template> | ||||||
|  |           </el-table-column> | ||||||
|  |         </scTable> | ||||||
|  |       </el-main> | ||||||
|  |     </el-container> | ||||||
|  |   </el-container> | ||||||
|  |   <save-dialog | ||||||
|  |     v-if="dialog.save" | ||||||
|  |     ref="saveDialog" | ||||||
|  |     @success="handleSaveSuccess" | ||||||
|  |     @closed="dialog.save = false" | ||||||
|  |   ></save-dialog> | ||||||
|  |    <algo-dialog | ||||||
|  |     v-if="dialog.algos" | ||||||
|  |     ref="algoDialog" | ||||||
|  |     @success="handleSaveSuccessss" | ||||||
|  |     @closed="dialog.algos = false" | ||||||
|  |   ></algo-dialog> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | import saveDialog from "./algo_form.vue"; | ||||||
|  | import algoDialog from "./algos_form.vue"; | ||||||
|  | import { CircleCheckFilled, CircleCloseFilled } from "@element-plus/icons-vue"; | ||||||
|  | export default { | ||||||
|  |   name: "algo", | ||||||
|  |   components: { | ||||||
|  |     saveDialog, | ||||||
|  | 	algoDialog, | ||||||
|  |     CircleCheckFilled, | ||||||
|  |     CircleCloseFilled, | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       dialog: { | ||||||
|  |         save: false, | ||||||
|  | 		algos: false, | ||||||
|  |       }, | ||||||
|  |       | ||||||
|  |       selection: [], | ||||||
|  |       chosen_cate: null, | ||||||
|  | 	  eventcateList:[], | ||||||
|  | 	  vchannelList:[] | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   mounted() { | ||||||
|  |     this.getEventCate(); | ||||||
|  | 	this.getVchannel(); | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  | 	 //事件总类列表 | ||||||
|  |     getEventCate() { | ||||||
|  |       this.$API.ecm.event_cate.list.req({ self_algo:true,page: 0 }).then((res) => { | ||||||
|  |         this.eventcateList = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 	//左边列表点击,右边显示 | ||||||
|  |     rowClick(row) { | ||||||
|  |       | ||||||
|  |       this.$API.ecm.vchannel.list.req({algo:row.id,page: 0 }).then((res) => { | ||||||
|  |         this.vchannelList = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  | 	//算法列表 | ||||||
|  | 	 getVchannel() { | ||||||
|  |       this.$API.ecm.vchannel.list.req({page: 0 }).then((res) => { | ||||||
|  |         this.vchannelList = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 	 | ||||||
|  | 	 //批量布设添加 | ||||||
|  |     adds_edit() { | ||||||
|  |       this.dialog.algos = true; | ||||||
|  |       this.$nextTick(() => { | ||||||
|  |         this.$refs.algoDialog.open(); | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     //窗口新增 | ||||||
|  |     add() { | ||||||
|  |       this.dialog.save = true; | ||||||
|  |       this.$nextTick(() => { | ||||||
|  |         this.$refs.saveDialog.open(); | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     | ||||||
|  |     //窗口编辑 | ||||||
|  |     table_edit(row) { | ||||||
|  |       this.dialog.save = true; | ||||||
|  |       this.$nextTick(() => { | ||||||
|  |         this.$refs.saveDialog.open("edit").setData(row); | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     table_del(row) { | ||||||
|  | 	 | ||||||
|  |       this.$API.ecm.vchannel.delete.req(row.id).then((res) => { | ||||||
|  |         this.$refs.tablevchannel.refresh(); | ||||||
|  |         this.$message.success("删除成功"); | ||||||
|  |         | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     //本地更新数据 | ||||||
|  |     handleSaveSuccess() { | ||||||
|  |       | ||||||
|  |       this.$refs.tablevchannel.refresh(); | ||||||
|  |     }, | ||||||
|  |      | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | </style> | ||||||
|  | @ -0,0 +1,146 @@ | ||||||
|  | <template> | ||||||
|  |   <el-dialog | ||||||
|  |     :title="titleMap[mode]" | ||||||
|  |     v-model="visible" | ||||||
|  |     :width="500" | ||||||
|  |     destroy-on-close | ||||||
|  |     @closed="$emit('closed')" | ||||||
|  |     :draggable="true" | ||||||
|  |   > | ||||||
|  |     <el-form | ||||||
|  |       :model="form" | ||||||
|  |       :rules="rules" | ||||||
|  |       :disabled="mode == 'show'" | ||||||
|  |       ref="dialogForm" | ||||||
|  |       label-width="100px" | ||||||
|  |     > | ||||||
|  |       <el-form-item label="关联算法" prop="algo"> | ||||||
|  |         <el-select v-model="form.algo"> | ||||||
|  |           <el-option | ||||||
|  |             v-for="item in algooptions" | ||||||
|  |             :key="item.id" | ||||||
|  |             :label="item.name" | ||||||
|  |             :value="item.id" | ||||||
|  |           /> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  | 
 | ||||||
|  |       <el-form-item label="视频" prop="vchannel"> | ||||||
|  |         <el-select v-model="form.vchannel"> | ||||||
|  |           <el-option | ||||||
|  |             v-for="item in vchanneloptions" | ||||||
|  |             :key="item.id" | ||||||
|  |             :label="item.name" | ||||||
|  |             :value="item.id" | ||||||
|  |           /> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="始终开启" prop="always_on"> | ||||||
|  |         <el-switch v-model="form.always_on"></el-switch> | ||||||
|  |       </el-form-item> | ||||||
|  |     </el-form> | ||||||
|  |     <template #footer> | ||||||
|  |       <el-button @click="visible = false">取 消</el-button> | ||||||
|  |       <el-button | ||||||
|  |         v-if="mode != 'show'" | ||||||
|  |         type="primary" | ||||||
|  |         :loading="isSaveing" | ||||||
|  |         @click="submit()" | ||||||
|  |         >保 存</el-button | ||||||
|  |       > | ||||||
|  |     </template> | ||||||
|  |   </el-dialog> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | export default { | ||||||
|  |   emits: ["success", "closed"], | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       mode: "add", | ||||||
|  |       titleMap: { | ||||||
|  |         add: "新增", | ||||||
|  |         edit: "编辑", | ||||||
|  |         show: "查看", | ||||||
|  |       }, | ||||||
|  |       visible: false, | ||||||
|  |       isSaveing: false, | ||||||
|  |       //表单数据 | ||||||
|  |       form: { | ||||||
|  |         algo: "", | ||||||
|  |         vchannel: "", | ||||||
|  |         always_on: false, | ||||||
|  |       }, | ||||||
|  |       //验证规则 | ||||||
|  |       rules: { | ||||||
|  |         algo: [{ required: true, message: "请选择算法" }], | ||||||
|  |         vchannel: [{ required: true, message: "请选择视频" }], | ||||||
|  |       }, | ||||||
|  |       algooptions: [], | ||||||
|  |       vchanneloptions: [], | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   mounted() { | ||||||
|  |     this.getAlgo(); | ||||||
|  |     this.getVchannel(); | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     //显示 | ||||||
|  |     open(mode = "add") { | ||||||
|  |       this.mode = mode; | ||||||
|  |       this.visible = true; | ||||||
|  |       return this; | ||||||
|  |     }, | ||||||
|  |      //视频列表 | ||||||
|  |     getAlgo() { | ||||||
|  |       this.$API.ecm.event_cate.list.req({ self_algo:true,page: 0 }).then((res) => { | ||||||
|  |         this.algooptions = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     //视频列表 | ||||||
|  |     getVchannel() { | ||||||
|  |       this.$API.third.tdevice.list.req({ type: 60, page: 0 }).then((res) => { | ||||||
|  |         this.vchanneloptions = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     //表单提交方法 | ||||||
|  |     async submit() { | ||||||
|  |       var valid = await this.$refs.dialogForm.validate().catch(() => {}); | ||||||
|  |       if (!valid) { | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|  |       this.isSaveing = true; | ||||||
|  |       try { | ||||||
|  |         var res; | ||||||
|  |         if (this.mode == "add") { | ||||||
|  |           res = await this.$API.ecm.vchannel.create.req(this.form); | ||||||
|  |         } else if (this.mode == "edit") { | ||||||
|  |           res = await this.$API.ecm.vchannel.update.req( | ||||||
|  |             this.form.id, | ||||||
|  |             this.form | ||||||
|  |           ); | ||||||
|  |         } | ||||||
|  |         this.isSaveing = false; | ||||||
|  |         this.$emit("success", this.form, this.mode); | ||||||
|  |         this.visible = false; | ||||||
|  |         this.$message.success("操作成功"); | ||||||
|  |         return res; | ||||||
|  |       } catch (err) { | ||||||
|  |         //可以处理校验错误 | ||||||
|  |         this.isSaveing = false; | ||||||
|  |         return err; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     //表单注入数据 | ||||||
|  |     setData(data) { | ||||||
|  |       Object.assign(this.form, data); | ||||||
|  |       debugger; | ||||||
|  |       console.log(this.form); | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | </style> | ||||||
|  | @ -0,0 +1,146 @@ | ||||||
|  | <template> | ||||||
|  |   <el-dialog | ||||||
|  |     :title="titleMap[mode]" | ||||||
|  |     v-model="visible" | ||||||
|  |     :width="500" | ||||||
|  |     destroy-on-close | ||||||
|  |     @closed="$emit('closed')" | ||||||
|  |     :draggable="true" | ||||||
|  |   > | ||||||
|  |     <el-form | ||||||
|  |       :model="form" | ||||||
|  |       :rules="rules" | ||||||
|  |       :disabled="mode == 'show'" | ||||||
|  |       ref="dialogForm" | ||||||
|  |       label-width="100px" | ||||||
|  |     > | ||||||
|  |       <el-form-item label="关联算法" prop="algo"> | ||||||
|  |         <el-select v-model="form.algo"> | ||||||
|  |           <el-option | ||||||
|  |             v-for="item in algooptions" | ||||||
|  |             :key="item.id" | ||||||
|  |             :label="item.name" | ||||||
|  |             :value="item.id" | ||||||
|  |           /> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  | 
 | ||||||
|  |       <el-form-item label="视频" prop="vchannel"> | ||||||
|  |         <el-select v-model="form.vchannels" multiple="true"> | ||||||
|  |           <el-option | ||||||
|  |             v-for="item in vchanneloptions" | ||||||
|  |             :key="item.id" | ||||||
|  |             :label="item.name" | ||||||
|  |             :value="item.id" | ||||||
|  |           /> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="始终开启" prop="always_on"> | ||||||
|  |         <el-switch v-model="form.always_on"></el-switch> | ||||||
|  |       </el-form-item> | ||||||
|  |     </el-form> | ||||||
|  |     <template #footer> | ||||||
|  |       <el-button @click="visible = false">取 消</el-button> | ||||||
|  |       <el-button | ||||||
|  |         v-if="mode != 'show'" | ||||||
|  |         type="primary" | ||||||
|  |         :loading="isSaveing" | ||||||
|  |         @click="submit()" | ||||||
|  |         >保 存</el-button | ||||||
|  |       > | ||||||
|  |     </template> | ||||||
|  |   </el-dialog> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | export default { | ||||||
|  |   emits: ["success", "closed"], | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       mode: "add", | ||||||
|  |       titleMap: { | ||||||
|  |         add: "新增", | ||||||
|  |         edit: "编辑", | ||||||
|  |         show: "查看", | ||||||
|  |       }, | ||||||
|  |       visible: false, | ||||||
|  |       isSaveing: false, | ||||||
|  |       //表单数据 | ||||||
|  |       form: { | ||||||
|  |         algo: "", | ||||||
|  |         vchannel: "", | ||||||
|  |         always_on: false, | ||||||
|  |       }, | ||||||
|  |       //验证规则 | ||||||
|  |       rules: { | ||||||
|  |         algo: [{ required: true, message: "请选择算法" }], | ||||||
|  |         vchannel: [{ required: true, message: "请选择视频" }], | ||||||
|  |       }, | ||||||
|  |       algooptions: [], | ||||||
|  |       vchanneloptions: [], | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   mounted() { | ||||||
|  |     this.getEventCate(); | ||||||
|  |     this.getVchannel(); | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     //显示 | ||||||
|  |     open(mode = "add") { | ||||||
|  |       this.mode = mode; | ||||||
|  |       this.visible = true; | ||||||
|  |       return this; | ||||||
|  |     }, | ||||||
|  |      //事件列表 | ||||||
|  |     getEventCate() { | ||||||
|  |       this.$API.ecm.event_cate.list.req({ self_algo:true,page: 0 }).then((res) => { | ||||||
|  |         this.algooptions = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     //视频列表 | ||||||
|  |     getVchannel() { | ||||||
|  |       this.$API.third.tdevice.list.req({ type: 60, page: 0 }).then((res) => { | ||||||
|  |         this.vchanneloptions = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     //表单提交方法 | ||||||
|  |     async submit() { | ||||||
|  |       var valid = await this.$refs.dialogForm.validate().catch(() => {}); | ||||||
|  |       if (!valid) { | ||||||
|  |         return false; | ||||||
|  |       } | ||||||
|  |       this.isSaveing = true; | ||||||
|  |       try { | ||||||
|  |         var res; | ||||||
|  |         if (this.mode == "add") { | ||||||
|  |           res = await this.$API.ecm.vchannel.creates.req(this.form); | ||||||
|  |         } else if (this.mode == "edit") { | ||||||
|  |           res = await this.$API.ecm.vchannel.update.req( | ||||||
|  |             this.form.id, | ||||||
|  |             this.form | ||||||
|  |           ); | ||||||
|  |         } | ||||||
|  |         this.isSaveing = false; | ||||||
|  |         this.$emit("success", this.form, this.mode); | ||||||
|  |         this.visible = false; | ||||||
|  |         this.$message.success("操作成功"); | ||||||
|  |         return res; | ||||||
|  |       } catch (err) { | ||||||
|  |         //可以处理校验错误 | ||||||
|  |         this.isSaveing = false; | ||||||
|  |         return err; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     //表单注入数据 | ||||||
|  |     setData(data) { | ||||||
|  |       Object.assign(this.form, data); | ||||||
|  |       debugger; | ||||||
|  |       console.log(this.form); | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | </style> | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <template> | <template> | ||||||
| 	<el-container> |   <el-container> | ||||||
| 		<!-- <el-header> |     <!-- <el-header> | ||||||
| 			<div class="left-panel"> | 			<div class="left-panel"> | ||||||
| 				<el-button type="primary" icon="el-icon-plus" @click="add"></el-button> | 				<el-button type="primary" icon="el-icon-plus" @click="add"></el-button> | ||||||
| 				<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button> | 				<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button> | ||||||
|  | @ -13,90 +13,150 @@ | ||||||
| 				</div> | 				</div> | ||||||
| 			</div> | 			</div> | ||||||
| 		</el-header> --> | 		</el-header> --> | ||||||
| 		<el-main class="nopadding"> |     <el-main class="nopadding"> | ||||||
| 			<scTable ref="table" :apiObj="apiObj" row-key="id" fit stripe @resetQuery="resetQuery"> |       <scTable | ||||||
| 				<el-table-column label="#" type="index" width="50"></el-table-column> |         ref="table" | ||||||
| 				<el-table-column label="事件种类" prop="cate_name"></el-table-column> |         :apiObj="apiObj" | ||||||
| 				<el-table-column label="发生区域" prop="area_name"> |         row-key="id" | ||||||
| 				</el-table-column> |         fit | ||||||
|                 <el-table-column label="人员类型" prop="peope_type"> |         stripe | ||||||
|                     <template #default="scope"> |         @resetQuery="resetQuery" | ||||||
|                         <span v-if="scope.row.peope_type=='employee'">企业员工</span> |       > | ||||||
|                         <span v-if="scope.row.peope_type=='remployee'">相关方</span> |         <el-table-column label="#" type="index" width="50"></el-table-column> | ||||||
|                         <span v-if="scope.row.peope_type=='visitor'">访客</span> |         <el-table-column label="事件种类" > | ||||||
|                     </template> | 			 <template #default="scope" > | ||||||
|                 </el-table-column> |             <el-span v-for="item in scope.row.cates_" | ||||||
| 				<el-table-column label="当事人" prop="people_name"></el-table-column> |                     :key="item.id" | ||||||
| 				<el-table-column label="发生时间" prop="create_time"></el-table-column> |                     :label="item.name" | ||||||
|                 <el-table-column label="是否已处理"> |                     :value="item.id">{{item.name}}</el-span> | ||||||
|                     <template #default="scope"> |           </template> | ||||||
|                         <el-icon v-if="scope.row.handle_user" color="green"><CircleCheckFilled /></el-icon> | 		</el-table-column> | ||||||
|                         <el-icon v-else color="red"><CircleCloseFilled /></el-icon> |         <el-table-column label="发生区域" prop="area_.name"></el-table-column> | ||||||
|                     </template> |         <el-table-column label="当事人" prop="employee_.name"> | ||||||
|                 </el-table-column> |           <template #default="scope"> | ||||||
| 				<el-table-column label="操作" fixed="right" align="right"> |             <span v-if="scope.row.employee && scope.row.obj_cate == 'people'">{{ | ||||||
| 					<template #default="scope"> |               scope.row.employee_.name | ||||||
| 						<el-button-group> |             }}</span> | ||||||
| 							<el-button text type="primary" size="small" @click="table_show(scope.row, scope.$index)">查看</el-button> |             <span v-else>未知人员</span> | ||||||
| 							<!-- <el-button text type="warning" size="small" @click="table_edit(scope.row, scope.$index)">编辑</el-button> --> |           </template> | ||||||
| 							<!-- <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)"> |         </el-table-column> | ||||||
|  | 
 | ||||||
|  |         <el-table-column label="人员类型" prop="employee_.type"> | ||||||
|  |           <template #default="scope"> | ||||||
|  |             <span v-if="scope.row.employee && scope.row.obj_cate == 'people'"> | ||||||
|  |               <span | ||||||
|  |                 v-if=" | ||||||
|  |                   scope.row.employee_.type != '' && | ||||||
|  |                   scope.row.employee_.type == 'employee' | ||||||
|  |                 " | ||||||
|  |                 >企业员工</span | ||||||
|  |               > | ||||||
|  |               <span | ||||||
|  |                 v-if=" | ||||||
|  |                   scope.row.employee_.type != '' && | ||||||
|  |                   scope.row.employee_.type == 'remployee' | ||||||
|  |                 " | ||||||
|  |                 >相关方</span | ||||||
|  |               > | ||||||
|  |               <span | ||||||
|  |                 v-if=" | ||||||
|  |                   scope.row.employee_.type != '' && | ||||||
|  |                   scope.row.employee_.type == 'visitor' | ||||||
|  |                 " | ||||||
|  |                 >访客</span | ||||||
|  |               > | ||||||
|  |             </span> | ||||||
|  |           </template> | ||||||
|  |         </el-table-column> | ||||||
|  |         <el-table-column label="发生时间" prop="create_time"></el-table-column> | ||||||
|  |        | ||||||
|  | 		  <el-table-column | ||||||
|  |           label="处理人" | ||||||
|  |           prop="handle_user_name" | ||||||
|  |         ></el-table-column> | ||||||
|  | 
 | ||||||
|  |         <el-table-column label="处理时间" prop="handle_time"></el-table-column> | ||||||
|  |         <el-table-column label="事件标记" prop="mark"> | ||||||
|  |           <template #default="scope"> | ||||||
|  |             <el-span v-if="scope.row.mark == 20" color="red">误报</el-span> | ||||||
|  |             <el-span v-else color="green">正常</el-span> | ||||||
|  |           </template> | ||||||
|  |         </el-table-column> | ||||||
|  |         <el-table-column label="是否超时"> | ||||||
|  |           <template #default="scope"> | ||||||
|  |             <el-span v-if="scope.row.is_timeout" color="red">是</el-span> | ||||||
|  |             <el-span v-else color="green">否</el-span> | ||||||
|  |           </template> | ||||||
|  |         </el-table-column> | ||||||
|  |      | ||||||
|  |         <el-table-column label="操作" fixed="right" align="right"> | ||||||
|  |           <template #default="scope"> | ||||||
|  |             <el-button-group> | ||||||
|  |               <el-button | ||||||
|  |                 text | ||||||
|  |                 type="primary" | ||||||
|  |                 size="small" | ||||||
|  |                 @click="table_show(scope.row, scope.$index)" | ||||||
|  |                 >查看</el-button | ||||||
|  |               > | ||||||
|  |               <!-- <el-button text type="warning" size="small" @click="table_edit(scope.row, scope.$index)">编辑</el-button> --> | ||||||
|  |               <!-- <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)"> | ||||||
| 								<template #reference> | 								<template #reference> | ||||||
| 									<el-button text type="danger" size="small">删除</el-button> | 									<el-button text type="danger" size="small">删除</el-button> | ||||||
| 								</template> | 								</template> | ||||||
| 							</el-popconfirm> --> | 							</el-popconfirm> --> | ||||||
| 						</el-button-group> |             </el-button-group> | ||||||
| 					</template> |           </template> | ||||||
| 				</el-table-column> |         </el-table-column> | ||||||
| 
 |       </scTable> | ||||||
| 			</scTable> |     </el-main> | ||||||
| 		</el-main> |   </el-container> | ||||||
| 	</el-container> |    <save-dialog | ||||||
|     </template> |     v-if="dialog.save" | ||||||
|  |     ref="saveDialog" | ||||||
|  |    | ||||||
|  |     @closed="dialog.save = false" | ||||||
|  |   ></save-dialog> | ||||||
|  | </template> | ||||||
|     <script> |     <script> | ||||||
|     import { CircleCheckFilled, CircleCloseFilled } from '@element-plus/icons-vue' | import { CircleCheckFilled, CircleCloseFilled } from "@element-plus/icons-vue"; | ||||||
| 	export default { | import saveDialog from "./event_from.vue"; | ||||||
| 		name: 'event', | export default { | ||||||
| 		components: { |   name: "event", | ||||||
|             CircleCheckFilled, |   components: { | ||||||
|             CircleCloseFilled |     CircleCheckFilled, | ||||||
| 		}, |     CircleCloseFilled, | ||||||
| 		data() { | 	saveDialog | ||||||
| 			return { |   }, | ||||||
| 				dialog: { |   data() { | ||||||
| 					save: false, |     return { | ||||||
| 					permission: false |       dialog: { | ||||||
| 				}, |         save: false, | ||||||
| 				apiObj: this.$API.ecm.event.list, |         permission: false, | ||||||
| 				query: {}, |       }, | ||||||
| 				selection: [], |       apiObj: this.$API.ecm.event.list, | ||||||
| 				search: { |       query: {}, | ||||||
| 					keyword: null |       selection: [], | ||||||
| 				} |       search: { | ||||||
| 			} |         keyword: null, | ||||||
| 		}, |       }, | ||||||
| 		methods: { |     }; | ||||||
| 			//查看 |   }, | ||||||
| 			table_show(row){ |   methods: { | ||||||
| 				this.dialog.save = true |     //查看 | ||||||
| 				this.$nextTick(() => { |     table_show(row) { | ||||||
| 					this.$refs.saveDialog.open('show').setData(row) |       this.dialog.save = true; | ||||||
| 				}) |       this.$nextTick(() => { | ||||||
| 			}, |         this.$refs.saveDialog.open("show").setData(row); | ||||||
| 			//搜索 |       }); | ||||||
| 			upsearch(){ |     }, | ||||||
| 
 |     //搜索 | ||||||
| 			}, |     upsearch() {}, | ||||||
| 			//本地更新数据 |     //本地更新数据 | ||||||
| 			handleSaveSuccess(data, mode){ |     | ||||||
| 				if(mode=='add'){ |     resetQuery() { | ||||||
| 					this.$refs.table.refresh() |       this.query = {}; | ||||||
| 				}else if(mode=='edit'){ |     }, | ||||||
| 					this.$refs.table.refresh() |   }, | ||||||
| 				} | }; | ||||||
| 			}, | </script> | ||||||
| 			resetQuery(){ |  | ||||||
| 				this.query = {} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|     </script> |  | ||||||
|  | @ -30,8 +30,30 @@ | ||||||
|           /> |           /> | ||||||
|         </el-select> |         </el-select> | ||||||
|       </el-form-item> |       </el-form-item> | ||||||
|  |       <el-form-item label="自主算法" prop="self_algo"> | ||||||
|  |         <el-switch v-model="form.self_algo"></el-switch> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="处理时间" prop="hanle_minute"> | ||||||
|  |         <el-input-number | ||||||
|  |           v-model="form.hanle_minute" | ||||||
|  |           :min="0" | ||||||
|  |           :max="32767" | ||||||
|  |           placeholder="分钟" | ||||||
|  |           controls-position="right" | ||||||
|  |         ></el-input-number> | ||||||
|  |       </el-form-item> | ||||||
|       <sc-title title="音响配置"></sc-title> |       <sc-title title="音响配置"></sc-title> | ||||||
|       <el-form-item label="音响开启" prop="speaker_on"> |        <el-form-item label="喇叭" prop="speakers"> | ||||||
|  |         <el-select v-model="form.speakers" multiple="true"> | ||||||
|  |           <el-option | ||||||
|  |             v-for="item in speakersptions" | ||||||
|  |             :key="item.id" | ||||||
|  |             :label="item.name" | ||||||
|  |             :value="item.id" | ||||||
|  |           /> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="喇叭开启" prop="speaker_on"> | ||||||
|         <el-switch v-model="form.speaker_on"></el-switch> |         <el-switch v-model="form.speaker_on"></el-switch> | ||||||
|       </el-form-item> |       </el-form-item> | ||||||
|       <el-form-item label="开启区域" prop="filter_area_level"> |       <el-form-item label="开启区域" prop="filter_area_level"> | ||||||
|  | @ -73,7 +95,9 @@ export default { | ||||||
|       isSaveing: false, |       isSaveing: false, | ||||||
|       //表单数据 |       //表单数据 | ||||||
|       form: { |       form: { | ||||||
|         speaker_on: true |         speaker_on: true, | ||||||
|  |         self_algo: false, | ||||||
|  |         speakers:[] | ||||||
|       }, |       }, | ||||||
|       //验证规则 |       //验证规则 | ||||||
|       rules: { |       rules: { | ||||||
|  | @ -103,6 +127,7 @@ export default { | ||||||
|           label: "定位", |           label: "定位", | ||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|  |       speakersptions:[], | ||||||
|       //所需数据选项 |       //所需数据选项 | ||||||
|       groups: [], |       groups: [], | ||||||
|       groupsProps: { |       groupsProps: { | ||||||
|  | @ -112,7 +137,9 @@ export default { | ||||||
|       }, |       }, | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   mounted() {}, |   mounted() { | ||||||
|  |     this.getSpeakers(); | ||||||
|  |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     //显示 |     //显示 | ||||||
|     open(mode = "add") { |     open(mode = "add") { | ||||||
|  | @ -120,6 +147,13 @@ export default { | ||||||
|       this.visible = true; |       this.visible = true; | ||||||
|       return this; |       return this; | ||||||
|     }, |     }, | ||||||
|  |     //固定喇叭列表 | ||||||
|  |     getSpeakers() { | ||||||
|  |       this.$API.third.tdevice.list.req({type:50, page: 0 }).then((res) => { | ||||||
|  |         this.speakersptions = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |      | ||||||
|     //表单提交方法 |     //表单提交方法 | ||||||
|     async submit() { |     async submit() { | ||||||
|       var valid = await this.$refs.dialogForm.validate().catch(() => {}); |       var valid = await this.$refs.dialogForm.validate().catch(() => {}); | ||||||
|  | @ -132,13 +166,16 @@ export default { | ||||||
|         if (this.mode == "add") { |         if (this.mode == "add") { | ||||||
|           res = await this.$API.ecm.event_cate.create.req(this.form); |           res = await this.$API.ecm.event_cate.create.req(this.form); | ||||||
|         } else if (this.mode == "edit") { |         } else if (this.mode == "edit") { | ||||||
|           res = await this.$API.ecm.event_cate.update.req(this.form.id, this.form); |           res = await this.$API.ecm.event_cate.update.req( | ||||||
|  |             this.form.id, | ||||||
|  |             this.form | ||||||
|  |           ); | ||||||
|         } |         } | ||||||
|         this.isSaveing = false; |         this.isSaveing = false; | ||||||
|         this.$emit("success", this.form, this.mode); |         this.$emit("success", this.form, this.mode); | ||||||
|         this.visible = false; |         this.visible = false; | ||||||
|         this.$message.success("操作成功"); |         this.$message.success("操作成功"); | ||||||
|         return res |         return res; | ||||||
|       } catch (err) { |       } catch (err) { | ||||||
|         //可以处理校验错误 |         //可以处理校验错误 | ||||||
|         this.isSaveing = false; |         this.isSaveing = false; | ||||||
|  | @ -148,6 +185,8 @@ export default { | ||||||
|     //表单注入数据 |     //表单注入数据 | ||||||
|     setData(data) { |     setData(data) { | ||||||
|       Object.assign(this.form, data); |       Object.assign(this.form, data); | ||||||
|  |       debugger; | ||||||
|  |       console.log(this.form) | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | @ -0,0 +1,192 @@ | ||||||
|  | <template> | ||||||
|  |   <el-drawer | ||||||
|  |     :title="titleMap[mode]" | ||||||
|  |     v-model="visible" | ||||||
|  |     :size="1000" | ||||||
|  |     destroy-on-close | ||||||
|  |     @closed="closeDrawer" | ||||||
|  |   > | ||||||
|  |     <el-container v-loading="loading"> | ||||||
|  |       <!--<sc-title title="详细信息"></sc-title>--> | ||||||
|  |       <el-main style="padding: 0 20px 20px 20px"> | ||||||
|  |         <el-form :model="form" :disabled="mode === 'show'" label-width="120px"> | ||||||
|  |           <el-row> | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="事件种类" prop="cates"> | ||||||
|  |                 <el-input v-model="form.cates_.name" clearable></el-input> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |             <el-col :md="12" :sm="24" v-if="form.area"> | ||||||
|  |               <el-form-item label="发生区域" prop="area"> | ||||||
|  |                 <el-input v-model="form.area_.name" clearable></el-input> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |             <el-col :md="12" :sm="24" v-if="form.employee"> | ||||||
|  |               <el-form-item label="当事人" prop="employee"> | ||||||
|  |                 <el-input v-model="form.employee_.name" clearable></el-input> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  | 
 | ||||||
|  |             <el-col | ||||||
|  |               :md="12" | ||||||
|  |               :sm="24" | ||||||
|  |               v-if="form.employee && form.employee_.type" | ||||||
|  |             > | ||||||
|  |               <el-form-item label="人员类型" prop="employee"> | ||||||
|  | 				  <el-select v-model="form.employee_.type" style="width: 100%"> | ||||||
|  |                   <el-option | ||||||
|  |                     v-for="item in type_options" | ||||||
|  |                     :key="item.id" | ||||||
|  |                     :label="item.name" | ||||||
|  |                     :value="item.id" | ||||||
|  |                   /> | ||||||
|  |                 </el-select> | ||||||
|  | 
 | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |             | ||||||
|  |              <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="发生时间"> | ||||||
|  |                 <el-input | ||||||
|  |                   v-model="form.create_time" | ||||||
|  |                   clearable | ||||||
|  |                 ></el-input> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |            | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="处理人"> | ||||||
|  |                <el-input v-model="form.handle_user" /> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="处理时间"> | ||||||
|  |                 <el-input | ||||||
|  |                   v-model="form.handle_time" | ||||||
|  |                   clearable | ||||||
|  |                 ></el-input> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  | 			 <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="处理描述"> | ||||||
|  |                 <el-input | ||||||
|  |                   v-model="form.handle_desc" | ||||||
|  |                   clearable | ||||||
|  |                 ></el-input> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  | 			 | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="事件标记"> | ||||||
|  |                | ||||||
|  |                   <el-select v-model="form.mark " style="width: 100%"> | ||||||
|  |                   <el-option | ||||||
|  |                     v-for="item in mark_options" | ||||||
|  |                     :key="item.id" | ||||||
|  |                     :label="item.name" | ||||||
|  |                     :value="item.id" | ||||||
|  |                   /> | ||||||
|  |                 </el-select> | ||||||
|  | 
 | ||||||
|  | 				 | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="是否超时"> | ||||||
|  |                 <el-switch v-model="form.is_timeout" /> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |            | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="人脸照"> | ||||||
|  |                 <sc-upload | ||||||
|  |                   v-model="form.face_img" | ||||||
|  |                  | ||||||
|  |                   title="人脸照" | ||||||
|  |                 ></sc-upload> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |             <el-col :md="12" :sm="24"> | ||||||
|  |               <el-form-item label="全景照"> | ||||||
|  |                 <sc-upload v-model="form.global_img" title="全景照"></sc-upload> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-col> | ||||||
|  |           </el-row> | ||||||
|  |         </el-form> | ||||||
|  |       </el-main> | ||||||
|  |     </el-container> | ||||||
|  |   </el-drawer> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | const defaultForm = { | ||||||
|  |   id: null, | ||||||
|  |   phone: "", | ||||||
|  |   name: "", | ||||||
|  |   email: "", | ||||||
|  |   number: "", | ||||||
|  |   photo: "", | ||||||
|  |   id_number: "", | ||||||
|  |   gender: "男", | ||||||
|  |   signature: "", | ||||||
|  |   birthday: null, | ||||||
|  |   qualification: "", | ||||||
|  |   job_state: 10, | ||||||
|  |   show_atwork: true, | ||||||
|  |   belong_dept: "", | ||||||
|  |   user: "", | ||||||
|  | }; | ||||||
|  | export default { | ||||||
|  |   emits: ["success", "closed"], | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       loading: false, | ||||||
|  |       visible: false, | ||||||
|  |       isSaveing: false, | ||||||
|  |       form: defaultForm, | ||||||
|  |       mode: "show", | ||||||
|  |       titleMap: { | ||||||
|  |         show: "事件信息查看", | ||||||
|  |       }, | ||||||
|  |       type_options: [ | ||||||
|  |         { id: "employee", name: "企业员工" }, | ||||||
|  |         { id: "remployee", name: "相关方" }, | ||||||
|  |         { id: "visitor", name: "访客" }, | ||||||
|  |       ], | ||||||
|  | 	    mark_options: [ | ||||||
|  |         { id: 10, name: "正常" }, | ||||||
|  |         { id: 20, name: "误报" } | ||||||
|  |       ], | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   mounted() {}, | ||||||
|  |   methods: { | ||||||
|  |     //显示 | ||||||
|  |     open(mode) { | ||||||
|  |       this.mode = mode; | ||||||
|  |       this.visible = true; | ||||||
|  |       return this; | ||||||
|  |     }, | ||||||
|  |     closeDrawer() { | ||||||
|  |       this.visible = false; | ||||||
|  |       this.$emit("closed"); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     //表单注入数据 | ||||||
|  |     setData(data) { | ||||||
|  |       //debugger; | ||||||
|  |       console.log(defaultForm); | ||||||
|  |       // this.form = defaultForm; | ||||||
|  |       Object.assign(this.form, data); | ||||||
|  |     }, | ||||||
|  |     //设置过滤项 | ||||||
|  |     setFilters(filters) { | ||||||
|  |       this.selectionFilters = filters; | ||||||
|  |       this.setFiltersVisible = true; | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | </style> | ||||||
|  | @ -86,19 +86,50 @@ | ||||||
|           stripe |           stripe | ||||||
|           :hidePagination="true" |           :hidePagination="true" | ||||||
|         > |         > | ||||||
|           <el-table-column label="#" type="index" width="50"></el-table-column> |           <el-table-column label="#" type="index" fixed="left" width="50"></el-table-column> | ||||||
|           <el-table-column label="提醒岗位" prop="post_name" width="150"> |            <el-table-column label="事件名称" prop="event_cate_name" fixed="left" width="100"> | ||||||
|  |             | ||||||
|  |           </el-table-column> | ||||||
|  |           <el-table-column label="提醒对象" prop="obj_cate" fixed="left" width="100"> | ||||||
|  |             <template #default="scope"> | ||||||
|  |               <el-space v-if="scope.row.obj_cate">{{ | ||||||
|  |                 objcate_[scope.row.obj_cate] | ||||||
|  |               }}</el-space></template | ||||||
|  |             > | ||||||
|  |           </el-table-column> | ||||||
|  |           <el-table-column label="具体对象" fixed="left" prop="post_name" width="100"> | ||||||
|  |             <template #default="scope"> | ||||||
|  |               {{ | ||||||
|  |                 scope.row.post_name | ||||||
|  |               }} | ||||||
|  |                {{ | ||||||
|  |                 scope.row.user_name | ||||||
|  |               }} | ||||||
|  |               <el-space v-if="scope.row.variable">{{ | ||||||
|  |                 variable_[scope.row.variable] | ||||||
|  |               }}</el-space></template | ||||||
|  |             > | ||||||
|           </el-table-column> |           </el-table-column> | ||||||
|           <el-table-column |           <el-table-column | ||||||
|             label="岗位人员过滤" |             label="岗位人员过滤" | ||||||
|             prop="filter_recipient" |             prop="filter_recipient" | ||||||
|             width="150" |             width="150" | ||||||
|           ></el-table-column> |             ><template #default="scope"> | ||||||
|  |               <el-space v-if="scope.row.filter_recipient">{{ | ||||||
|  |                 filter_recipient_[scope.row.filter_recipient] | ||||||
|  |               }}</el-space></template | ||||||
|  |             ></el-table-column | ||||||
|  |           > | ||||||
|           <el-table-column |           <el-table-column | ||||||
|             label="区域级别过滤" |             label="区域级别过滤" | ||||||
|             prop="filter_area_level" |             prop="filter_area_level" | ||||||
|             width="150" |             width="100" | ||||||
|           ></el-table-column> |             ><template #default="scope"> | ||||||
|  |               <el-space v-if="scope.row.filter_area_level">{{ | ||||||
|  |                 filter_area_level_[scope.row.filter_area_level] | ||||||
|  |               }}</el-space></template | ||||||
|  |             ></el-table-column | ||||||
|  |           > | ||||||
|           <el-table-column label="可处理" prop="can_handle" width="80"> |           <el-table-column label="可处理" prop="can_handle" width="80"> | ||||||
|             <template #default="scope"> |             <template #default="scope"> | ||||||
|               <el-icon v-if="scope.row.can_handle" color="green" |               <el-icon v-if="scope.row.can_handle" color="green" | ||||||
|  | @ -176,7 +207,27 @@ export default { | ||||||
|       }, |       }, | ||||||
|       selection: [], |       selection: [], | ||||||
|       chosen_cate: null, |       chosen_cate: null, | ||||||
|  |       filter_recipient_: { | ||||||
|  |         10: "当事人部门以上", | ||||||
|  |         30: "属地部门以上", | ||||||
|  |       }, | ||||||
|  |       objcate_: { post: "岗位", user: "用户", variable: "变量" }, | ||||||
|  |       variable_: { | ||||||
|  |         self: "本人", | ||||||
|  |         area_manager: "区域负责人", | ||||||
|  |         visit_receptionist: "访客接待人", | ||||||
|  |       }, | ||||||
|  | 
 | ||||||
|  |       filter_area_level_: { | ||||||
|  |         10: "低风险", | ||||||
|  |         20: "一般风险", | ||||||
|  |         30: "较大风险", | ||||||
|  |         40: "重大风险", | ||||||
|  |       }, | ||||||
|     }; |     }; | ||||||
|  |   }, | ||||||
|  |    mounted() { | ||||||
|  |      this.apiObj2 = this.$API.ecm.notify_setting.list; | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     rowClick(row) { |     rowClick(row) { | ||||||
|  |  | ||||||
|  | @ -2,7 +2,6 @@ | ||||||
|   <el-dialog |   <el-dialog | ||||||
|     :title="titleMap[mode]" |     :title="titleMap[mode]" | ||||||
|     v-model="visible" |     v-model="visible" | ||||||
|     :width="500" |  | ||||||
|     destroy-on-close |     destroy-on-close | ||||||
|     @closed="$emit('closed')" |     @closed="$emit('closed')" | ||||||
|     :draggable="true" |     :draggable="true" | ||||||
|  | @ -14,43 +13,134 @@ | ||||||
|       ref="dialogForm" |       ref="dialogForm" | ||||||
|       label-width="100px" |       label-width="100px" | ||||||
|     > |     > | ||||||
|       <el-form-item label="岗位" prop="post"> |       <el-row> | ||||||
|         <el-select v-model="form.post"> |         <el-col :md="12" :sm="24"> | ||||||
|           <el-option |           <el-form-item label="事件" prop="event_cate"> | ||||||
|             v-for="item in post_options" |             <el-select v-model="form.event_cate"> | ||||||
|             :key="item.id" |               <el-option | ||||||
|             :label="item.name" |                 v-for="item in eventcate_options" | ||||||
|             :value="item.id" |                 :key="item.id" | ||||||
|           /> |                 :label="item.name" | ||||||
|         </el-select> |                 :value="item.id" | ||||||
|       </el-form-item> |               /> | ||||||
|       <el-form-item label="提醒人员过滤" prop="filter_recipient"> |             </el-select> | ||||||
|         <el-select v-model="form.filter_recipient" clearable @clear="() => { form.filter_recipient=null } "> |           </el-form-item> | ||||||
|           <el-option |         </el-col> | ||||||
|             v-for="item in filter_recipient_options" | 
 | ||||||
|             :key="item.value" |         <el-col :md="12" :sm="24"> | ||||||
|             :label="item.label" |           <el-form-item label="提醒对象" prop="obj_cate"> | ||||||
|             :value="item.value" |             <el-select v-model="form.obj_cate" @change="cateChange"> | ||||||
|           /> |               <el-option | ||||||
|         </el-select> |                 v-for="item in objcate_options" | ||||||
|       </el-form-item> |                 :key="item.id" | ||||||
|       <el-form-item label="区域级别过滤" prop="filter_area_level"> |                 :label="item.name" | ||||||
|         <el-select v-model="form.filter_area_level" clearable @clear="() => { form.filter_area_level=null } "> |                 :value="item.id" | ||||||
|           <el-option |               /> | ||||||
|             v-for="item in filter_area_level_options" |             </el-select> | ||||||
|             :key="item.value" |           </el-form-item> | ||||||
|             :label="item.label" |         </el-col> | ||||||
|             :value="item.value" |         <el-col :md="12" :sm="24" v-show="postshow"> | ||||||
|           /> |           <el-form-item label="岗位" prop="post"> | ||||||
|         </el-select> |             <el-select v-model="form.post" style="width: 100%"> | ||||||
|       </el-form-item> |               <el-option | ||||||
|       <el-form-item label="通知形式"> |                 v-for="item in post_options" | ||||||
|         <el-checkbox v-model="form.sms_enable" label="短信" size="small" /> |                 :key="item.id" | ||||||
|         <el-checkbox v-model="form.wechat_enable" label="微信" size="small" /> |                 :label="item.name" | ||||||
|       </el-form-item> |                 :value="item.id" | ||||||
|       <el-form-item label="可处理" prop="can_handle"> |               /> | ||||||
|         <el-switch v-model="form.can_handle"></el-switch> |             </el-select> | ||||||
|       </el-form-item> |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |         <el-col :md="12" :sm="24" v-show="usershow"> | ||||||
|  |           <el-form-item label="人员" prop="user"> | ||||||
|  |             <el-select v-model="form.user" style="width: 100%"> | ||||||
|  |               <el-option | ||||||
|  |                 v-for="item in user_options" | ||||||
|  |                 :key="item.id" | ||||||
|  |                 :label="item.name" | ||||||
|  |                 :value="item.id" | ||||||
|  |               /> | ||||||
|  |             </el-select> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |          <el-col :md="12" :sm="24" v-show="variableshow"> | ||||||
|  |           <el-form-item label="变量" prop="variable"> | ||||||
|  |             <el-select v-model="form.variable" style="width: 100%"> | ||||||
|  |               <el-option | ||||||
|  |                 v-for="item in variable_options" | ||||||
|  |                 :key="item.id" | ||||||
|  |                 :label="item.name" | ||||||
|  |                 :value="item.id" | ||||||
|  |               /> | ||||||
|  |             </el-select> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |         <el-col :md="12" :sm="24" v-show="postshow"> | ||||||
|  |           <el-form-item label="提醒人员过滤" prop="filter_recipient"> | ||||||
|  |             <el-select | ||||||
|  |               v-model="form.filter_recipient" | ||||||
|  |               clearable | ||||||
|  |               @clear=" | ||||||
|  |                 () => { | ||||||
|  |                   form.filter_recipient = null; | ||||||
|  |                 } | ||||||
|  |               " | ||||||
|  |             > | ||||||
|  |               <el-option | ||||||
|  |                 v-for="item in filter_recipient_options" | ||||||
|  |                 :key="item.value" | ||||||
|  |                 :label="item.label" | ||||||
|  |                 :value="item.value" | ||||||
|  |               /> | ||||||
|  |             </el-select> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |         <el-col :md="12" :sm="24"> | ||||||
|  |           <el-form-item label="区域级别过滤" prop="filter_area_level"> | ||||||
|  |             <el-select | ||||||
|  |               v-model="form.filter_area_level" | ||||||
|  |               clearable | ||||||
|  |               @clear=" | ||||||
|  |                 () => { | ||||||
|  |                   form.filter_area_level = null; | ||||||
|  |                 } | ||||||
|  |               " | ||||||
|  |             > | ||||||
|  |               <el-option | ||||||
|  |                 v-for="item in filter_area_level_options" | ||||||
|  |                 :key="item.value" | ||||||
|  |                 :label="item.label" | ||||||
|  |                 :value="item.value" | ||||||
|  |               /> | ||||||
|  |             </el-select> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |         <el-col :md="12" :sm="24"> | ||||||
|  |           <el-form-item label="通知形式"> | ||||||
|  |             <el-checkbox v-model="form.sms_enable" label="短信" size="small" /> | ||||||
|  |             <el-checkbox | ||||||
|  |               v-model="form.wechat_enable" | ||||||
|  |               label="微信" | ||||||
|  |               size="small" | ||||||
|  |             /> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |         <el-col :md="12" :sm="24"> | ||||||
|  |           <el-form-item label="可处理" prop="can_handle"> | ||||||
|  |             <el-switch v-model="form.can_handle"></el-switch> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |         <el-col :md="12" :sm="24"> | ||||||
|  |           <el-form-item label="排序" prop="sort"> | ||||||
|  |             <el-input-number | ||||||
|  |               v-model="form.sort" | ||||||
|  |               :min="0" | ||||||
|  |               :max="2147483647" | ||||||
|  |               controls-position="right" | ||||||
|  |             ></el-input-number> | ||||||
|  |           </el-form-item> | ||||||
|  |         </el-col> | ||||||
|  |       </el-row> | ||||||
|     </el-form> |     </el-form> | ||||||
|     <template #footer> |     <template #footer> | ||||||
|       <el-button @click="visible = false">取 消</el-button> |       <el-button @click="visible = false">取 消</el-button> | ||||||
|  | @ -66,6 +156,7 @@ | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
|  | import { genTree } from "@/utils/verificate"; | ||||||
| export default { | export default { | ||||||
|   emits: ["success", "closed"], |   emits: ["success", "closed"], | ||||||
|   data() { |   data() { | ||||||
|  | @ -80,17 +171,19 @@ export default { | ||||||
|       isSaveing: false, |       isSaveing: false, | ||||||
|       //表单数据 |       //表单数据 | ||||||
|       form: { |       form: { | ||||||
|  |         id: null, | ||||||
|  |         obj_cate: null, | ||||||
|         can_handle: true, |         can_handle: true, | ||||||
|         wechat_enable: true, |         wechat_enable: true, | ||||||
|         sms_enable: false, |         sms_enable: false, | ||||||
|         filter_recipient:null, |         filter_recipient: null, | ||||||
|         filter_area_level:null |         filter_area_level: null, | ||||||
|       }, |       }, | ||||||
|       //验证规则 |       //验证规则 | ||||||
|       rules: { |       rules: { | ||||||
|         name: [{ required: true, message: "请输入" }], |         name: [{ required: true, message: "请输入" }], | ||||||
|       }, |       }, | ||||||
|       post_options:[], | 
 | ||||||
|       filter_recipient_options: [ |       filter_recipient_options: [ | ||||||
|         { |         { | ||||||
|           value: 10, |           value: 10, | ||||||
|  | @ -101,39 +194,92 @@ export default { | ||||||
|           label: "属地部门以上", |           label: "属地部门以上", | ||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|  |       objcate_options: [ | ||||||
|  |         { id: "post", name: "岗位" }, | ||||||
|  |         { id: "user", name: "用户" }, | ||||||
|  |         { id: "variable", name: "变量" }, | ||||||
|  |       ], | ||||||
|  |       post_options: [], | ||||||
|  |       user_options: [], | ||||||
|  |       variable_options: [ | ||||||
|  |         { id: "self", name: "本人" }, | ||||||
|  |         { id: "area_manager", name: "区域负责人" }, | ||||||
|  |         { id: "visit_receptionist", name: "访客接待人" }, | ||||||
|  |       ], | ||||||
|       filter_area_level_options: [ |       filter_area_level_options: [ | ||||||
|         { |         { | ||||||
|           value: 10, |           value: 10, | ||||||
|           label: "办公生活区以上", |           label: "低风险", | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           value: 20, |           value: 20, | ||||||
|           label: "生产一般区以上", |           label: "一般风险", | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|           value: 30, |           value: 30, | ||||||
|           label: "生产重点区以上", |           label: "较大风险", | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           value: 40, | ||||||
|  |           label: "重大风险", | ||||||
|         }, |         }, | ||||||
|       ], |       ], | ||||||
|  |       eventcate_options: [], | ||||||
|  |       postshow: false, | ||||||
|  |       usershow: false, | ||||||
|  |       variableshow: false, | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   mounted() { |   mounted() { | ||||||
|     this.getPostOptions() |     this.getPostOptions(); | ||||||
|  |     this.getUserOptions(); | ||||||
|  |     this.getEventCate(); | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     //显示 |     //显示 | ||||||
|     open(mode = "add") { |     open(mode = "add") { | ||||||
|       this.mode = mode; |       this.mode = mode; | ||||||
|       this.visible = true; |       this.visible = true; | ||||||
|       if(mode == "add"){ |       if (mode == "add") { | ||||||
|         this.form.event_cate = this.$parent.chosen_cate |         this.form.event_cate = this.$parent.chosen_cate; | ||||||
|       } |       } | ||||||
|       return this; |       return this; | ||||||
|     }, |     }, | ||||||
|  | 
 | ||||||
|  |     //事件列表 | ||||||
|  |     getEventCate() { | ||||||
|  |       this.$API.ecm.event_cate.list.req({ page: 0 }).then((res) => { | ||||||
|  |         this.eventcate_options = res; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     // | ||||||
|  |     cateChange() { | ||||||
|  |       if (this.form.obj_cate == "post") { | ||||||
|  |         this.postshow = true; | ||||||
|  |         this.usershow = false; | ||||||
|  |         this.variableshow = false; | ||||||
|  |       } else if (this.form.obj_cate == "user") { | ||||||
|  |         this.postshow = false; | ||||||
|  |         this.usershow = true; | ||||||
|  |         this.variableshow = false; | ||||||
|  |       } else { | ||||||
|  |         this.postshow = false; | ||||||
|  |         this.usershow = false; | ||||||
|  |         this.variableshow = true; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     //岗位列表 | ||||||
|     getPostOptions() { |     getPostOptions() { | ||||||
|         this.$API.system.post.list.req({page:0}).then(res=>{ |       this.$API.system.post.list.req({ page: 0 }).then((res) => { | ||||||
|             this.post_options=res; |         this.post_options = res; | ||||||
|         }) |       }); | ||||||
|  |     }, | ||||||
|  |     //岗位列表 | ||||||
|  |     getUserOptions() { | ||||||
|  |       this.$API.system.user.list.req({ page: 0 }).then((res) => { | ||||||
|  |         this.user_options = res; | ||||||
|  |       }); | ||||||
|     }, |     }, | ||||||
|     //表单提交方法 |     //表单提交方法 | ||||||
|     async submit() { |     async submit() { | ||||||
|  | @ -147,13 +293,16 @@ export default { | ||||||
|         if (this.mode == "add") { |         if (this.mode == "add") { | ||||||
|           res = await this.$API.ecm.notify_setting.create.req(this.form); |           res = await this.$API.ecm.notify_setting.create.req(this.form); | ||||||
|         } else if (this.mode == "edit") { |         } else if (this.mode == "edit") { | ||||||
|           res = await this.$API.ecm.notify_setting.update.req(this.form.id, this.form); |           res = await this.$API.ecm.notify_setting.update.req( | ||||||
|  |             this.form.id, | ||||||
|  |             this.form | ||||||
|  |           ); | ||||||
|         } |         } | ||||||
|         this.isSaveing = false; |         this.isSaveing = false; | ||||||
|         this.$emit("success", this.form, this.mode); |         this.$emit("success", this.form, this.mode); | ||||||
|         this.visible = false; |         this.visible = false; | ||||||
|         this.$message.success("操作成功"); |         this.$message.success("操作成功"); | ||||||
|         return res |         return res; | ||||||
|       } catch (err) { |       } catch (err) { | ||||||
|         //可以处理校验错误 |         //可以处理校验错误 | ||||||
|         this.isSaveing = false; |         this.isSaveing = false; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue