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", "name": "algo",
"path": "/ecm/algo", "path": "/ecm/algo",
"meta": { "meta": {
"title": "算法配置", "title": "算法布设",
"icon": "el-icon-set-up", "icon": "el-icon-set-up",
"perms": ["algo"] "perms": ["algo"]
}, },

View File

@ -94,20 +94,17 @@
label="算法名称" label="算法名称"
prop="algo_.name" prop="algo_.name"
width="150" width="150"
></el-table-column>
<el-table-column
label="视频编号"
prop="vchannel_.code"
width="150"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="视频名称" label="视频名称"
prop="vchannel_.name" prop="vchannel_.name"
width="150" width="150"
></el-table-column> ></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"> <el-table-column label="操作" fixed="right" align="right">
<template #default="scope"> <template #default="scope">
<el-popconfirm <el-popconfirm
@ -125,13 +122,13 @@
</el-container> </el-container>
</el-container> </el-container>
<save-dialog <save-dialog
v-if="dialog.save" v-model="dialog.save"
ref="saveDialog" ref="saveDialog"
@success="handleSaveSuccess" @success="handleSaveSuccess"
@closed="dialog.save = false" @closed="dialog.save = false"
></save-dialog> ></save-dialog>
<algo-dialog <algo-dialog
v-if="dialog.algos" v-model="dialog.algos"
ref="algoDialog" ref="algoDialog"
@success="handleSaveSuccessss" @success="handleSaveSuccessss"
@closed="dialog.algos = false" @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]" :title="titleMap[mode]"
v-model="visible" v-model="visible"
:width="500" :width="500"
destroy-on-close
@closed="$emit('closed')" @closed="$emit('closed')"
:draggable="true" :draggable="true"
> >
@ -35,12 +34,12 @@
/> />
</el-select> </el-select>
</el-form-item> </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-switch v-model="form.always_on"></el-switch>
</el-form-item> </el-form-item> -->
</el-form> </el-form>
<template #footer> <template #footer>
<el-button @click="visible = false"> </el-button> <!-- <el-button @click="visible = false"> </el-button> -->
<el-button <el-button
v-if="mode != 'show'" v-if="mode != 'show'"
type="primary" type="primary"
@ -69,7 +68,7 @@ export default {
form: { form: {
algo: "", algo: "",
vchannel: "", vchannel: "",
always_on: false, always_on: true,
}, },
// //
rules: { rules: {

View File

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

View File

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

View File

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

View File

@ -112,7 +112,7 @@
hideDo hideDo
> >
<el-table-column label="#" type="index" fixed="left" width="50"></el-table-column> <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>
<el-table-column label="提醒对象" prop="obj_cate" fixed="left" width="100"> <el-table-column label="提醒对象" prop="obj_cate" fixed="left" width="100">

View File

@ -68,16 +68,6 @@
</div> </div>
</div> </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="count-list-item">
<div class="item-img item-img3"></div> <div class="item-img item-img3"></div>
<div class="item-info"> <div class="item-info">
@ -88,6 +78,16 @@
</div> </div>
</div> </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> </div>
</div> </div>

View File

@ -31,11 +31,20 @@
stripe stripe
@resetQuery="resetQuery" @resetQuery="resetQuery"
> >
<el-table-column <!-- <el-table-column
label="#" label="#"
type="index" type="index"
width="50" 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 <el-table-column
label="作业简介" label="作业简介"
prop="name" prop="name"