<template>
|
<div class="custom-scroll">
|
<v-header
|
title="报警记录"
|
:bar="bar"
|
search
|
@on-search="onSearch"
|
></v-header>
|
<div class="tab">
|
<v-tool-table :trs="trs" :tds="tds">
|
<template v-slot:btn="item">
|
<div class="table_flex">
|
<span
|
class="col_primary"
|
v-if="item.scope.status === 0"
|
@click="onSend(item.scope)"
|
>处理</span
|
>
|
<span class="col_primary" @click="onShow(item.scope)">查看</span>
|
<span class="col_primary" @click="onDel(item.scope)">删除</span>
|
</div>
|
</template>
|
<template v-slot:time="item">
|
<b>{{ is_time(item.scope.createAt) }}</b>
|
</template>
|
<template v-slot:type="item">
|
<span v-if="item.scope.type === 3">社区主动呼叫</span>
|
<span v-if="item.scope.type === 1">一键报警求助</span>
|
<span v-if="item.scope.type === 2">红外异常报警</span>
|
</template>
|
<template v-slot:status="item">
|
<span v-if="item.scope.status === 0">待处理</span>
|
<span v-if="item.scope.status === 1">已办结</span>
|
</template>
|
</v-tool-table>
|
</div>
|
<v-tool-page :item="paged" @on-page="onPage"></v-tool-page>
|
</div>
|
</template>
|
|
<script>
|
import { mapState } from "vuex";
|
import { dateTime } from "../../../utils/common";
|
export default {
|
props: {},
|
components: {},
|
data() {
|
return {
|
bar: [
|
{
|
title: "报警类型",
|
name: "type",
|
type: "select",
|
list: [
|
{ label: "一键报警求助", value: 1 },
|
{ label: "红外异常报警", value: 2 },
|
{ label: "社区主动呼叫", value: 3 },
|
],
|
},
|
{
|
title: "办结状态",
|
name: "status",
|
type: "select",
|
list: [
|
{ label: "待处理", value: 0 },
|
{ label: "已办结", value: 1 },
|
],
|
},
|
{ title: "报警人姓名", name: "username" },
|
{ title: "报警位置", name: "address" },
|
{ title: "报警时间", name: "errTime", type: "times" },
|
{ title: "办结时间", name: "finishTime", type: "times" },
|
],
|
trs: [
|
{ text: "序号", val: "id", width: "50px" },
|
{ text: "报警人", val: "name" },
|
{ text: "报警位置", val: "position" },
|
{ text: "报警类型", val: "btn", slot: "type" },
|
{ text: "报警时间", val: "createTime" },
|
{ text: "处理状态", val: "btn", slot: "status" },
|
{ text: "办结时间", val: "solveTime" },
|
{ text: "接听人", val: "receiveName" },
|
{ text: "操作", val: "btn" },
|
],
|
tds: [],
|
paged: { page: 0, total: 0, r: 0, limit: 10 },
|
os: {},
|
search: {},
|
};
|
},
|
computed: {
|
...mapState({ vuex_page: "pageReset" }),
|
},
|
watch: {
|
vuex_page: {
|
handler(n) {
|
if (n.page === this.$route.path) {
|
this.init();
|
}
|
},
|
deep: true,
|
},
|
},
|
methods: {
|
is_time(v) {
|
return demo.timeout(new Date(v).getTime(), "alls", "-");
|
},
|
onShow(v) {
|
this.$router.push(`/recordDetails?id=${v.id}`);
|
},
|
onSend(v) {
|
this.$router.push(`/recordDetails?id=${v.id}&type=1`);
|
},
|
onDel(v) {
|
this.$js.model("", "是否删除", (res) => {
|
if (res) {
|
this.$api.get("comPropertyAlarm/del?id=" + v.id, {}, (e) => {
|
demo.toast("删除成功");
|
this.init();
|
});
|
}
|
});
|
},
|
onSearch(v) {
|
v.errTime ? (v.beginTime = v.errTime[0]) : (v.beginTime = "");
|
v.errTime ? (v.endTime = v.errTime[1]) : (v.endTime = "");
|
v.finishTime
|
? (v.statusBeginTime = v.finishTime[0])
|
: (v.statusBeginTime = "");
|
v.finishTime
|
? (v.statusEndTime = v.finishTime[1])
|
: (v.statusEndTime = "");
|
delete v.errTime;
|
delete v.finishTime;
|
this.search = demo.copy(v);
|
this.paged.page = 1;
|
this.init();
|
},
|
// 分页点击
|
onPage(v) {
|
if (v.page === this.paged.page && v.page && !v.reset) {
|
return 0;
|
}
|
this.paged.page = v.page;
|
this.paged.limit = v.limit;
|
this.init();
|
},
|
// 获取数据
|
init() {
|
let v = demo.copy(
|
Object.assign(this.os, this.search, {
|
page: this.paged.page,
|
size: this.paged.limit,
|
paramId: "",
|
})
|
);
|
this.$api.post("comPropertyAlarm/queryAll", v, (e) => {
|
this.paged.total = e.total;
|
this.paged.r++;
|
this.tds = e.records || [];
|
this.tds.forEach((item) => {
|
item.createTime = dateTime(item.createTime);
|
});
|
});
|
},
|
},
|
mounted() {},
|
};
|
</script>
|
<style scoped>
|
.custom-scroll {
|
overflow: scroll;
|
}
|
</style>
|