This commit is contained in:
shijing 2022-08-18 17:28:15 +08:00
commit 413cad098a
10 changed files with 467 additions and 186 deletions

View File

@ -138,7 +138,7 @@ const routes = [
"name": "algo",
"path": "/ecm/algo",
"meta": {
"title": "算法配置",
"title": "算法布设",
"icon": "el-icon-set-up",
"perms": ["algo"]
},

View File

@ -94,20 +94,17 @@
label="算法名称"
prop="algo_.name"
width="150"
></el-table-column>
<el-table-column
label="视频编号"
prop="vchannel_.code"
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">
<template #default="scope">
<el-switch
v-model="scope.row.always_on"
:disabled="true"
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="right">
<template #default="scope">
<el-popconfirm
@ -125,13 +122,13 @@
</el-container>
</el-container>
<save-dialog
v-if="dialog.save"
v-model="dialog.save"
ref="saveDialog"
@success="handleSaveSuccess"
@closed="dialog.save = false"
></save-dialog>
<algo-dialog
v-if="dialog.algos"
v-model="dialog.algos"
ref="algoDialog"
@success="handleSaveSuccessss"
@closed="dialog.algos = false"

226
src/views/ecm/algo2.vue Normal file
View File

@ -0,0 +1,226 @@
<template>
<el-container>
<el-aside width="50%">
<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"
:apiObj="vchannelObj"
:params="vchannelParams"
row-key="id"
stripe
highlightCurrentRow
@row-click="rowClick"
>
<el-table-column
label="#"
type="index"
></el-table-column>
<el-table-column
label="名称"
prop="name"
></el-table-column>
<el-table-column
label="标识"
prop="code"
></el-table-column>
<el-table-column label="操作" fixed="right">
<template #default="scope">
<el-button
type="primary"
link
size="small"
v-auth="'notify_setting.update'"
@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"
v-auth="'notify_setting.update'"
@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">
<template #default="scope">
<el-switch
v-model="scope.row.always_on"
:disabled="true"
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right" align="right">
<template #default="scope">
<el-popconfirm
title="确定删除吗?"
@confirm="table_del(scope.row, scope.$index)"
>
<template #reference>
<el-button text type="danger" size="small" v-auth="'notify_setting.delete'">删除</el-button>
</template>
</el-popconfirm>
</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,
},
filter_area_: {
10: "办公生活区以上",
20: "生产一般区以上",
30: "生产重点区以上",
},
selection: [],
chosen_cate: "",
eventcateList: [],
vchannelObj: this.$API.third.tdevice.list,
vchannelParams: {'type': 60}
};
},
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;
});
this.chosen_cate = row.id;
},
//
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.$message.success("删除成功");
this.getVchannel();
return res;
})
.catch((err) => {
return err;
});
},
//
handleSaveSuccess() {
this.$refs.tablevchannel.refresh();
},
//
handleSaveSuccessss() {
this.$refs.tablevchannel.refresh();
},
},
};
</script>
<style>
</style>

View File

@ -3,7 +3,6 @@
:title="titleMap[mode]"
v-model="visible"
:width="500"
destroy-on-close
@closed="$emit('closed')"
:draggable="true"
>
@ -35,12 +34,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="始终开启" prop="always_on">
<!-- <el-form-item label="始终开启" prop="always_on">
<el-switch v-model="form.always_on"></el-switch>
</el-form-item>
</el-form-item> -->
</el-form>
<template #footer>
<el-button @click="visible = false"> </el-button>
<!-- <el-button @click="visible = false"> </el-button> -->
<el-button
v-if="mode != 'show'"
type="primary"
@ -69,7 +68,7 @@ export default {
form: {
algo: "",
vchannel: "",
always_on: false,
always_on: true,
},
//
rules: {

View File

@ -3,7 +3,6 @@
:title="titleMap[mode]"
v-model="visible"
:width="500"
destroy-on-close
@closed="$emit('closed')"
:draggable="true"
>
@ -35,12 +34,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="始终开启" prop="always_on">
<!-- <el-form-item label="始终开启" prop="always_on">
<el-switch v-model="form.always_on"></el-switch>
</el-form-item>
</el-form-item> -->
</el-form>
<template #footer>
<el-button @click="visible = false"> </el-button>
<!-- <el-button @click="visible = false"> </el-button> -->
<el-button
v-if="mode != 'show'"
type="primary"

View File

@ -56,6 +56,18 @@
></el-input-number>
</el-form-item>
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="作业许可" prop="opl_cates">
<el-select v-model="form.opl_cates" multiple>
<el-option
v-for="item in oplCateOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<sc-title title="音响配置"></sc-title>
@ -72,7 +84,7 @@
</el-col>
<el-col :md="12" :sm="24">
<el-form-item label="喇叭" prop="speakers">
<el-form-item label="固定喇叭" prop="speakers">
<el-select v-model="form.speakers" multiple="true">
<el-option
v-for="item in speakersptions"
@ -209,6 +221,7 @@ export default {
},
],
speakersptions: [],
oplCateOptions: [],
//
groups: [],
groupsProps: {
@ -220,6 +233,7 @@ export default {
},
mounted() {
this.getSpeakers();
this.getOplCates();
},
methods: {
//
@ -234,6 +248,12 @@ export default {
this.speakersptions = res;
});
},
//
getOplCates() {
this.$API.opm.oplcate.list.req({ page: 0 }).then((res) => {
this.oplCateOptions = res;
});
},
//
async submit() {

View File

@ -4,47 +4,70 @@
<el-main>
<el-card>
<el-descriptions title="事件信息" :border="true">
<el-descriptions-item label="事件种类"><el-tag
<el-descriptions-item label="事件种类"
><el-tag
v-for="item in form.cates_"
:key="item.id"
type="warning"
>{{ item.name }}</el-tag
></el-descriptions-item>
<el-descriptions-item label="事件标记">{{mark_options2[form.mark]}}
></el-descriptions-item
>
<el-descriptions-item label="事件标记"
>{{ mark_options2[form.mark] }}
</el-descriptions-item>
<el-descriptions-item label="发生时间">{{form.create_time}}</el-descriptions-item>
<el-descriptions-item label="发生区域" v-if="form.area_">{{form.area_.name}}</el-descriptions-item>
<el-descriptions-item label="发生时间">{{
form.create_time
}}</el-descriptions-item>
<el-descriptions-item label="发生区域" v-if="form.area_">{{
form.area_.name
}}</el-descriptions-item>
<el-descriptions-item label="人员类型">
<span v-if="form.employee">{{type_options2[form.employee_.type]}}</span>
<span v-if="form.employee">{{
type_options2[form.employee_.type]
}}</span>
<span v-else>未知人员</span>
</el-descriptions-item>
<el-descriptions-item label="当事人">
<span v-if="form.employee">{{form.employee_.name}}</span>
<span v-if="form.employee">{{ form.employee_.name }}</span>
</el-descriptions-item>
<el-descriptions-item label="图片" column=3>
<div style="display:flex;">
<sc-upload v-model="form.global_img" title="全景照" :disabled="true" style="margin-right:8px;width:auto"></sc-upload>
<sc-upload v-model="form.face_img" title="人脸照" :disabled="true" style="width:auto"></sc-upload>
<el-descriptions-item label="抓拍设备" v-if="form.vchannel">
{{ form.vchannel_.code }}-{{ form.vchannel_.name }}
</el-descriptions-item>
<el-descriptions-item label="图片" span=2>
<div style="display: flex">
<sc-upload
v-model="form.global_img"
title="全景照"
:disabled="true"
style="margin-right: 8px; width: auto"
></sc-upload>
<sc-upload
v-model="form.face_img"
title="人脸照"
:disabled="true"
style="width: auto"
></sc-upload>
</div>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card v-if="form.handle_user" style="margin-top:8px">
<el-card v-if="form.handle_user" style="margin-top: 8px">
<el-descriptions title="事件处理" :border="true">
<el-descriptions-item label="事件标记">{{mark_options2[form.mark]}}
<el-descriptions-item label="事件标记"
>{{ mark_options2[form.mark] }}
</el-descriptions-item>
<el-descriptions-item label="处理人">
<span v-if="form.handle_user"></span>{{form.handle_user_name}}
<span v-if="form.handle_user"></span>{{ form.handle_user_name }}
</el-descriptions-item>
<el-descriptions-item label="处理时间">
{{form.handle_time}}
{{ form.handle_time }}
</el-descriptions-item>
<el-descriptions-item label="处理描述" column=3>
{{form.handle_desc}}
<el-descriptions-item label="处理描述" column="3">
{{ form.handle_desc }}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card header="事件处理" v-else style="margin-top:8px">
<el-card header="事件处理" v-else style="margin-top: 8px">
<el-form :inline="true">
<el-form-item label="事件标记">
<el-select v-model="form.mark" style="width: 100%">
@ -57,16 +80,18 @@
</el-select>
</el-form-item>
<el-form-item label="处理描述">
<el-input v-model="form.handle_desc" clearable type="textarea"></el-input>
<el-input
v-model="form.handle_desc"
clearable
type="textarea"
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card header="事件推送情况" style="margin-top:8px">
<el-card header="事件推送情况" style="margin-top: 8px">
<scTable
ref="table"
:data="remindData"
@ -79,13 +104,17 @@
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column label="事件种类" width="200">
<template #default="scope">
<el-tag v-for="item in scope.row.event_.cates_"
:key="item.id" type="warning">{{item.name}}</el-tag>
<el-tag
v-for="item in scope.row.event_.cates_"
:key="item.id"
type="warning"
>{{ item.name }}</el-tag
>
</template>
</el-table-column>
<el-table-column label="事件处理状态" prop="can_handle">
<template #default="scope">
<el-span v-if="scope.row.handle_user==null">未处理</el-span>
<el-span v-if="scope.row.handle_user == null">未处理</el-span>
<el-span v-else>已处理</el-span>
</template>
</el-table-column>
@ -114,10 +143,12 @@
</template>
</el-table-column>
<el-table-column label="发送时间" prop="create_time"></el-table-column>
<el-table-column
label="发送时间"
prop="create_time"
></el-table-column>
</scTable>
</el-card>
</el-main>
</el-container>
</template>
@ -141,13 +172,13 @@ export default {
{ id: "visitor", name: "访客" },
],
type_options2: {
"employee": "企业员工",
"remployee": "相关方",
"visitor": "访客"
employee: "企业员工",
remployee: "相关方",
visitor: "访客",
},
mark_options2: {
10: "正常",
20: "误报"
20: "误报",
},
mark_options: [
{ id: 10, name: "正常" },
@ -165,54 +196,54 @@ export default {
},
methods: {
getEvent() {
this.loading = true
this.$API.ecm.event.item.req(this.eventID).then((res) => {
this.loading = false
this.loading = true;
this.$API.ecm.event.item
.req(this.eventID)
.then((res) => {
this.loading = false;
this.form = res;
}).catch(e=>{this.loading=false});
})
.catch((e) => {
this.loading = false;
});
},
getRemind() {
this.$API.ecm.remind.list
.req({ event: this.eventID, page: 0 })
.then((res) => {
this.remindData = res;
});
},
onSubmit(){
this.$API.ecm.event.handle.req(this.form.id, this.form)
.then((res) => {
this.$router.go(-1)
onSubmit() {
this.$API.ecm.event.handle.req(this.form.id, this.form).then((res) => {
this.$router.go(-1);
this.$message.success("操作成功");
return res;
})
}
});
},
},
};
</script>
<style scoped>
.text {
.text {
font-size: 14px;
}
}
.item {
.item {
margin-bottom: 18px;
}
}
.clearfix:before,
.clearfix:after {
.clearfix:before,
.clearfix:after {
display: table;
content: "";
}
.clearfix:after {
clear: both
}
}
.clearfix:after {
clear: both;
}
.box-card {
.box-card {
width: 100%;
}
}
</style>

View File

@ -112,7 +112,7 @@
hideDo
>
<el-table-column label="#" type="index" fixed="left" width="50"></el-table-column>
<el-table-column label="事件名称" prop="event_cate_name" fixed="left" width="100">
<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">

View File

@ -68,16 +68,6 @@
</div>
</div>
</div>
<div class="count-list-item">
<div class="item-img item-img2"></div>
<div class="item-info">
<div title="外来人员" class="normal">访客</div>
<div class="bottom">
<span class="large">{{ userCount.count_visitor }}</span
>&nbsp;<span class="normal"></span>
</div>
</div>
</div>
<div class="count-list-item">
<div class="item-img item-img3"></div>
<div class="item-info">
@ -88,6 +78,16 @@
</div>
</div>
</div>
<div class="count-list-item">
<div class="item-img item-img2"></div>
<div class="item-info">
<div title="外来人员" class="normal">访客</div>
<div class="bottom">
<span class="large">{{ userCount.count_visitor }}</span
>&nbsp;<span class="normal"></span>
</div>
</div>
</div>
</div>
</div>
</div>
@ -180,7 +180,7 @@ export default {
</script>
<style scoped lang="scss">
.projecting{
.projecting {
width: 45px;
height: 45px;
font-size: 25px;

View File

@ -31,11 +31,20 @@
stripe
@resetQuery="resetQuery"
>
<el-table-column
<!-- <el-table-column
label="#"
type="index"
width="50"
></el-table-column>
></el-table-column> -->
<el-table-column
label="许可证"
prop="opls"
width="160"
>
<template #default="scope">
<el-tag v-for="item in scope.row.cates_" :key="item.id" style="margin-right:2px">{{item.name}}</el-tag>
</template>
</el-table-column>
<el-table-column
label="作业简介"
prop="name"