我的布控。四色预警

This commit is contained in:
给我
2025-04-12 23:51:24 +08:00
parent a2e89f5ea1
commit 3754b9c5ed
21 changed files with 2238 additions and 256 deletions

View File

@ -0,0 +1,117 @@
<template>
<el-dialog
:title="title"
width="600px"
v-model="dialogVisible"
@close="closed"
>
<MOSTY.FormItem
:formData="formData"
ref="elform"
:modelKey="listQuery"
:rules="rules"
>
</MOSTY.FormItem>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="updatePwd">保存</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
import { useStore } from "vuex";
import { ElMessage } from "element-plus";
import { editPassword } from "@/api/sys";
import * as MOSTY from "@/components/MyComponents/index";
import { defineProps, watch, ref, onMounted, nextTick } from "vue";
import {
saveRoleMenuInfo,
getRoleMenuIds,
getMenuTree,
getPasswordLevel
} from "@/api/user-manage";
const elform = ref();
const title = ref();
const formData = ref([
{
text: "模型名称",
prop: "czjsdw",
type: "input",
width: "100%"
},
{
text: "范围模型类型",
prop: "czjsdw",
type: "select",
width: "100%",
optionList: [
{ label: "消息推送", value: "1" },
{ label: "短信发送", value: "0" }
]
},
{
text: "生效时间范围",
prop: "sxsjfw",
type: "datetime",
width: "100%"
},
{
text: "感知源信息",
prop: "gzyxx",
type: "slot",
width: "100%"
},
{
text: "地图范围",
prop: "dtfw",
type: "slot",
width: "100%"
}
]);
const dialogVisible = ref(false);
const store = useStore();
const listQuery = ref({});
const emits = defineEmits(["update:modelValue", "updateRole"]);
const closed = () => {
emits("update:modelValue", false);
};
const init = (row) => {
title.value = "添加范围模型";
dialogVisible.value = true;
};
const updatePwd = () => {
dialogVisible.value = false;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
.editPassword-page {
.table-header-wrap {
width: 380px;
}
.input_span {
span {
display: inline-block;
width: 50px;
height: 10px;
border: 1px solid #ccc;
&:first-child {
border-right: 0;
border-radius: 5px 0 0 5px;
}
&:last-child {
border-left: 0;
border-radius: 0 5px 5px 0;
}
}
}
}
</style>

View File

@ -0,0 +1,107 @@
<template>
<el-drawer
v-model="drawerShow"
title="范围模型(3)"
size="16%"
:direction="direction"
:before-close="handleClose"
custom-class="bk_drawer_box"
>
<MOSTY.FormItem
:formData="formData"
ref="elform"
:modelKey="listQuery"
:rules="rules"
>
</MOSTY.FormItem>
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><Search /></el-icon>
<span style="vertical-align: middle">查询</span>
</el-button>
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">添加范围模型</span>
</el-button>
<ul>
<li v-for="item in listData" :key="item">
<div class="title_text">{{ item.title }}</div>
<div class="mxlx_text">模型类型:{{ item.mxlx }}</div>
<div class="line"></div>
<div class="flex just-between">
<el-checkbox v-model="checked1" label="启用" size="large" />
<div class="flex">
<el-link class="mr10" type="primary">设置</el-link>
<el-link type="danger">删除</el-link>
</div>
</div>
</li>
</ul>
</el-drawer>
</template>
<script setup>
import { ref, reactive, onMounted, defineProps } from "vue";
import * as MOSTY from "@/components/MyComponents/index";
const props = defineProps({
modelValue: {
default: false,
type: Boolean
}
});
const drawerShow = ref(false);
const direction = ref("rtl");
const formData = ref([
{
text: "模型名称",
prop: "czjsdw",
type: "input",
width: "100%"
},
{
text: "启用状态",
prop: "czjsdw",
type: "select",
width: "100%",
optionList: [
{ label: "消息推送", value: "1" },
{ label: "短信发送", value: "0" }
]
}
]);
const listData = ref([
{ title: "巴宜区公园外围模型", mxlx: "重点区域预警模型" }
]);
const init = (row) => {
drawerShow.value = true;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
.title_text {
color: #0386fb;
font-size: 16px;
font-weight: 400;
}
.mxlx_text {
color: #777575;
font-size: 14px;
}
::v-deep .el-form-item__label {
width: 90px !important;
}
ul {
margin-top: 10px;
li {
border-radius: 5px 5px 5px 5px;
border: 1px solid #c8cfdc;
padding: 6px;
box-sizing: border-box;
.line {
width: 100%;
height: 1px;
border-bottom: 1px dashed #c8cfdc;
margin: 6px 0;
}
}
}
</style>

View File

@ -0,0 +1,369 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">{{ title }} </span>
<div>
<el-button type="primary" size="small" :loading="loading" @click="submit">保存</el-button>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<MOSTY.FormItem :formData="formData" ref="elform" :modelKey="listQuery" :rules="rules">
<template #bkfw>
<div>布控范围</div>
</template>
</MOSTY.FormItem>
<div class="bkry_box">
<div class="title_text">布控人员</div>
<div class="title_text">
<el-button type="primary" @click="addEdit('add', '')">新增</el-button>
<el-button type="danger" @click="addEdit('add', '')">删除</el-button>
</div>
</div>
<!-- 表格 -->
<!-- <div class="tabBox"> -->
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #sfjs="{ row }">
<DictTag :value="row.sfjs" :options="list.sf" />
</template>
<template #xxlx="{ row }">
<DictTag :value="row.xxlx" :options="list.xxlx" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
<el-button size="small" @click="delDictItem([row.id])" type="danger"
>删除</el-button
>
</template>
</MyTable>
<div class="bkry_box mt4">
<div class="title_text">审批信息</div>
</div>
<MOSTY.FormItem
:formData="formDataSp"
ref="elform"
:modelKey="spForm"
:rules="rules"
>
<template #czjsdw class="flex">
<div class="flex">
<el-select v-model="spForm.czjsdw" placeholder="Select">
<el-option label="123" value="1" />
</el-select>
<el-checkbox-group v-model="spForm.czjsdw">
<el-checkbox label="1">责任单位</el-checkbox>
<el-checkbox label="1">活动发生地</el-checkbox>
<el-checkbox label="1">指定单位</el-checkbox>
</el-checkbox-group>
</div>
</template>
</MOSTY.FormItem>
<div style="height: 200px; max-width: 600px">
<el-steps direction="vertical" :active="1">
<el-step>
<template #title>发起申请</template>
<template #description>
<div class="step_item">审核人王五</div>
<div class="step_item">发起部门巴宜区公安局城区派出所</div>
</template>
</el-step>
<el-step>
<template #title>审核确认</template>
<template #description>
<div class="step_item">审核人王五</div>
<div class="step_item">发起部门巴宜区公安局</div>
</template>
</el-step>
<el-step>
<template #title>审核确认</template>
<template #description>
<div class="step_item">审核人王五</div>
<div class="step_item">发起部门巴宜区公安局</div>
</template>
</el-step>
</el-steps>
</div>
</div>
</template>
<script setup>
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js";
import MyTable from "@/components/aboutTable/MyTable.vue";
import * as MOSTY from "@/components/MyComponents/index";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
const emit = defineEmits(["updateDate"]);
const props = defineProps({
dic: Object
});
const { proxy } = getCurrentInstance();
const dialogForm = ref(false); //弹窗
const spForm = ref({});
const formDataSp = ref([
{
text: "处置接收单位",
prop: "czjsdw",
type: "slot",
width: "100%"
},
{
text: "提醒方式",
prop: "sfbqdl",
type: "checkbox",
width: "48%",
optionList: [
{ label: "消息推送", value: "1" },
{ label: "短信发送", value: "0" }
]
},
{
text: "签收时间",
prop: "sfbqdj",
type: "datetime",
width: "48%"
}
]);
const formData = ref([
{
text: "布控标题",
prop: "bqmc",
type: "input",
width: "48%"
},
{
text: "预警标签模型",
prop: "sfbqdl",
type: "select",
width: "48%",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "所属警种",
prop: "bqmc",
type: "input",
width: "48%"
},
{
text: "布控对象",
prop: "bqmc",
type: "input",
width: "48%"
},
{
text: "布控范围",
prop: "bkfw",
type: "slot",
width: "100%"
},
{
text: "布控要素",
prop: "sfbqxl",
type: "select",
width: "48%",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "布控时间",
prop: "sfbqdj",
type: "datetimerange",
width: "48%"
},
{
text: "处置要求",
prop: "sfbqys",
type: "select",
width: "48%",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "布控类别",
prop: "xwbqdl",
type: "select",
width: "48%",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "布控类型",
prop: "xwbqdl",
type: "select",
width: "48%",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "布控级别",
prop: "sfbqdj",
type: "select",
width: "48%",
value: "",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "布控事由",
prop: "sfbqjf",
type: "textarea",
width: "48%"
},
{
text: "附件",
prop: "fjdz",
type: "upload",
width: "100%"
}
]);
const listQuery = ref({
sfbqdj: []
}); //表单
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "照片", prop: "sfjs", showSolt: true },
{ label: "姓名", prop: "name" },
{ label: "性别", prop: "xxrs" },
{ label: "身份证号", prop: "sfjs", showSolt: true },
{ label: "户籍地", prop: "dxxx", showSolt: true },
{ label: "现居住地", prop: "xzxm" },
{ label: "手机号", prop: "bkfw" },
{ label: "虚拟身份", prop: "yjxx", showSolt: true },
{ label: "车牌号", prop: "jsdw", showSolt: true },
{ label: " 车架号", prop: "czyq", showSolt: true },
{ label: " 特征描述", prop: "kssj", showSolt: true },
{ label: " 人员标签", prop: "jssj", showSolt: true }
]
});
const loading = ref(false);
const elform = ref();
const title = ref("");
const rules = reactive({
bqmc: [{ required: true, message: "请输入标签名称", trigger: "blur" }]
});
const editpeo = ref();
onMounted(() => {});
// 初始化数据
const init = (type, row, lx) => {
dialogForm.value = true;
title.value = "布控信息";
if (row) getDataById(row.id);
};
// 根据id查询详情
const getDataById = (id) => {
let url = "";
qcckGet({ id }, url).then((res) => {
listQuery.value = res;
nextTick(() => {
editpeo.value.getList();
});
});
};
const changeInput = (val) => {
listQuery.value = {
[Object.keys(val)]: val[Object.keys(val)],
...listQuery.value
};
console.log(listQuery.value, "formData.value");
};
// 提交
const submit = () => {
elform.value.submit(handleInfoFn);
};
const handleInfoFn = (val) => {
qcckPost(val, "url")
.then((res) => {
proxy.$message({ type: "success", message: title.value + "成功" });
close();
})
.catch(() => {});
};
// 关闭
const close = () => {
listQuery.value = {};
dialogForm.value = false;
loading.value = false;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
@import "~@/assets/css/layout.scss";
@import "~@/assets/css/element-plus.scss";
.bkry_box {
color: #000;
display: flex;
justify-content: space-between;
font-size: 18px;
padding: 0 20px;
margin-bottom: 4px;
}
::v-deep .el-checkbox-group {
display: flex;
}
.step_item {
border: 1px solid rgba(200, 207, 220, 1);
margin-right: 10px;
padding: 2px 10px;
}
::v-deep .el-step__title.is-finish {
color: rgba(200, 207, 220, 1);
}
::v-deep .el-step__description.is-finish {
color: rgba(200, 207, 220, 1);
}
::v-deep .el-step__title.is-process {
color: rgba(200, 207, 220, 1);
}
::v-deep .el-step__description.is-process {
color: rgba(200, 207, 220, 1);
}
::v-deep .el-step__description {
display: flex;
}
::v-deep .el-step__head.is-process {
color: rgba(200, 207, 220, 1);
}
</style>

View File

@ -0,0 +1,295 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="我的布控">
<el-button type="primary" @click="addEdit('add', '')">
发起布控
</el-button>
<el-button type="primary" @click="addEdit('add', '')">导出</el-button>
<el-button type="danger" @click="addEdit('add', '')"
>批量删除</el-button
>
<el-button type="primary" @click="openAddMxFn">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">添加标签模型</span>
</el-button>
<el-button type="primary" @click="openAddMxFn">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">添加范围模型</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
>
</Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #sfjs="{ row }">
<DictTag :value="row.sfjs" :options="list.sf" />
</template>
<template #xxlx="{ row }">
<DictTag :value="row.xxlx" :options="list.xxlx" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
<el-button size="small" @click="delDictItem([row.id])" type="danger">删除</el-button>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm
ref="detailDiloag"
:dic="{ xxlx: list.xxlx, sf: list.sf }"
@updateDate="getList"
/>
<Drawer ref="drawerDiloag" />
<AddMx ref="addmxDiloag" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import Drawer from "./components/drawer.vue";
import AddMx from "./components/AddMx.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const qypzDialog = ref();
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const chooseType = ref("学校"); //选择的类型
const list = reactive({
chooseList: ["学校", "医院", "娱乐场所", "民爆库房"],
xxlx: [
{ label: "职业学校", value: "01" },
{ label: "大专", value: "02" },
{ label: "本科", value: "03" },
{ label: "研究生", value: "04" },
{ label: "博士", value: "05" }
],
sf: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
});
const addmxDiloag=ref()
const drawerDiloag=ref()
const searchConfiger = ref([
{
label: "布控级别",
prop: "sfbqdl",
placeholder: "请选择布控级别",
showType: "select",
options: list.xxlx
},
{
label: "布控对象",
prop: "sfbqdl",
placeholder: "请选择布控对象",
showType: "select",
options: list.xxlx
},
{
label: "布控状态",
prop: "sfbqdl",
placeholder: "请选择布控状态",
showType: "select",
options: list.xxlx
},
{
label: "布控时间",
prop: "sfbqdl",
placeholder: "请选择布控时间",
showType: "datetimerange",
options: list.xxlx
},
{
label: "预警标签模型",
prop: "sfbqdl",
placeholder: "请选择预警标签模型",
showType: "select",
options: list.xxlx
},
{
label: "最近预警时间",
prop: "sfbqdl",
placeholder: "请选择最近预警时间",
showType: "date",
options: list.xxlx
},
{
label: "布控对象信息",
prop: "sfbqdl",
placeholder: "请选择布控对象信息",
showType: "select",
options: list.xxlx
},
{
label: "处置接收部门",
prop: "sfbqdl",
placeholder: "请选择处置接收部门",
showType: "select",
options: list.xxlx
}
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
// 布控级别 布控标题 布控对象 布控对象信息 预警标签模型 布控范围 预警信息 处置接收单位 处置要求 开始时间 结束时间 最近预警时间 失效时间 布控发起人 布控状态
tableColumn: [
{ label: "布控级别", prop: "name" },
{ label: "布控标题", prop: "xxrs" },
{ label: "布控对象", prop: "sfjs", showSolt: true },
{ label: "布控对象信息", prop: "dxxx", showSolt: true },
{ label: "预警标签模型", prop: "xzxm" },
{ label: "布控范围", prop: "bkfw" },
{ label: "预警信息", prop: "yjxx", showSolt: true },
{ label: "处置接收单位", prop: "jsdw", showSolt: true },
{ label: " 处置要求", prop: "czyq", showSolt: true },
{ label: " 开始时间", prop: "kssj", showSolt: true },
{ label: " 结束时间", prop: "jssj", showSolt: true },
{ label: " 最近预警时间", prop: "yjsj", showSolt: true },
{ label: " 失效时间", prop: "sxsj", showSolt: true },
{ label: " 布控发起人", prop: "fqr", showSolt: true },
{ label: " 布控状态", prop: "bkzt", showSolt: true }
]
});
onMounted(() => {
getList(chooseType.value);
tabHeightFn();
});
// 搜索
const onSearch = (val) => {
queryFrom.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
getList(chooseType.value);
};
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getList(chooseType.value);
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList(chooseType.value);
};
const openAddMxFn=()=>{
addmxDiloag.value.init();
// drawerDiloag.value.init();打开侧边组件
}
// 获取列表
const getList = (val) => {
let url = "";
switch (val) {
case "学校":
url = "/mosty-lzcj/tbDwXx/queryList";
break;
case "医院":
url = "/mosty-lzcj/tbDwYy/queryList";
break;
case "娱乐场所":
url = "/mosty-lzcj/TbDwYlth/queryList";
break;
case "民爆库房":
url = "/mosty-lzcj/tbDwMbkf/queryList";
break;
}
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
qcckPost(data, url)
.then((res) => {
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
})
.catch(() => {
pageData.tableConfiger.loading = false;
});
};
// 删除
const delDictItem = (ids) => {
let url = "";
switch (chooseType.value) {
case "学校":
url = "/mosty-lzcj/tbDwXx/delete";
break;
case "医院":
url = "/mosty-lzcj/tbDwYy/delete";
break;
case "娱乐场所":
url = "/mosty-lzcj/TbDwYlth/delete";
break;
case "民爆库房":
url = "/mosty-lzcj/tbDwMbkf/delete";
break;
}
// proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
// qcckPost(ids,url).then(()=>{
// proxy.$message({ type: "success", message: "删除成功" });
// getList(chooseType.value);
// })
// }).catch(() => {});
};
// 新增
const addEdit = (type, row) => {
detailDiloag.value.init(type, row, chooseType.value);
};
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight =
window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -0,0 +1,198 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">{{ title }} </span>
<div>
<el-button
type="primary"
size="small"
:loading="loading"
@click="submit"
>保存</el-button
>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<MOSTY.FormItem
:formData="formData"
ref="elform"
:modelKey="listQuery"
:rules="rules"
/>
</div>
</template>
<script setup>
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js";
import * as MOSTY from "@/components/MyComponents/index";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
const emit = defineEmits(["updateDate"]);
const props = defineProps({
dic: Object
});
const { proxy } = getCurrentInstance();
const dialogForm = ref(false); //弹窗
const formData = ref([
{
text: "组合标签名称",
prop: "bqmc",
type: "input",
required: true
},
{
text: "身份标签大类",
prop: "sfbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签细类",
prop: "sfbqxl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签等级",
prop: "sfbqdj",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签颜色",
prop: "sfbqys",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签大类",
prop: "xwbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签细类",
prop: "xwbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签等级",
prop: "sfbqdj",
type: "select",
value: "",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签颜色",
prop: "xwbqys",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签积分",
prop: "sfbqjf",
type: "input"
},
{
text: "行为标签积分",
prop: "xwbqjf",
type: "input"
},
{
text: "组合标签积分",
prop: "zhbqjf",
type: "input"
}
]);
const listQuery = ref({
sfbqdj: []
}); //表单
const loading = ref(false);
const elform = ref();
const title = ref("");
const rules = reactive({
bqmc: [{ required: true, message: "请输入标签名称", trigger: "blur" }]
});
const editpeo = ref();
onMounted(() => {});
// 初始化数据
const init = (type, row, lx) => {
dialogForm.value = true;
title.value = row ? "编辑" : "新增";
if (row) getDataById(row.id);
};
// 根据id查询详情
const getDataById = (id) => {
let url = "";
qcckGet({ id }, url).then((res) => {
listQuery.value = res;
nextTick(() => {
editpeo.value.getList();
});
});
};
const changeInput = (val) => {
listQuery.value = {
[Object.keys(val)]: val[Object.keys(val)],
...listQuery.value
};
console.log(listQuery.value, "formData.value");
};
// 提交
const submit = () => {
elform.value.submit(handleInfoFn);
};
const handleInfoFn = (val) => {
qcckPost(val, "url")
.then((res) => {
proxy.$message({ type: "success", message: title.value + "成功" });
close();
})
.catch(() => {});
};
// 关闭
const close = () => {
listQuery.value = {};
dialogForm.value = false;
loading.value = false;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
@import "~@/assets/css/layout.scss";
@import "~@/assets/css/element-plus.scss";
</style>

View File

@ -0,0 +1,277 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="身份标签管理">
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #defaultSlot>
<el-select placeholder="请选择类型" v-model="chooseType" @change="handleType">
<el-option v-for="it in list.chooseList" :key="it" :value="it" :label="it"></el-option>
</el-select>
</template>
</Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #sfjs="{ row }">
<DictTag :value="row.sfjs" :options="list.sf" />
</template>
<template #xxlx="{ row }">
<DictTag :value="row.xxlx" :options="list.xxlx" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
<el-button size="small" @click="delDictItem([row.id])" type="danger">删除</el-button>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm ref="detailDiloag" :dic="{xxlx:list.xxlx,sf:list.sf}" @updateDate="getList" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const qypzDialog = ref();
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const chooseType = ref('学校') //选择的类型
const list = reactive({
chooseList :['学校','医院','娱乐场所','民爆库房'],
xxlx:[
{label:'职业学校',value:'01'},
{label:'大专',value:'02'},
{label:'本科',value:'03'},
{label:'研究生',value:'04'},
{label:'博士',value:'05'},
],
sf:[
{label:'是',value:'1'},
{label:'否',value:'0'},
],
})
const searchConfiger = ref([
{ label: "标签名称",prop:'bqmc',placeholder: "请输入学校名称", showType: "input",},
{ label: "标签大类",prop:'sfbqdl' ,placeholder: "请选择标签大类", showType: "select",options:list.xxlx },
{ label: "标签细类",prop:'sfbqdl' ,placeholder: "请选择标签细类", showType: "select",options:list.xxlx },
{ label: "标签等级",prop:'sfbqdl' ,placeholder: "请选择标签等级", showType: "select",options:list.xxlx },
{ label: "标签颜色",prop:'sfbqdl' ,placeholder: "请选择标签颜色", showType: "select",options:list.xxlx },
{ label: "积分分值",prop:'bqmc',placeholder: "请输入积分分值", showType: "input",},
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "标签名称", prop: "name" },
{ label: "标签大类", prop: "xxrs" },
{ label: "标签细类", prop: "sfjs",showSolt:true},
{ label: "标签等级", prop: "xxlx",showSolt:true},
{ label: "标签颜色", prop: "xzxm"},
{ label: "积分分值", prop: "lxfs" },
]
});
onMounted(() => {
getList(chooseType.value)
tabHeightFn();
});
//选择类型
const handleType = (val) => {
pageData.keyCount++;
pageData.pageConfiger.pageCurrent = 1;
searchConfiger.value = searchConfiger.value.slice(0,1);
let arr = [],tableColumn = [];
switch(val){
case '学校':
arr = [
{ label: "学校名称" ,prop:'name', placeholder: "请输入学校名称", showType: "input" },
{ label: "学校类型" ,prop:'xxlx', placeholder: "请选择学校类型", showType: "select",options:list.xxlx },
]
tableColumn = [
{ label: "学校名称", prop: "name" },
{ label: "学校人数", prop: "xxrs" },
{ label: "是否寄宿学校", prop: "sfjs",showSolt:true},
{ label: "学校类型", prop: "xxlx",showSolt:true},
{ label: "校长", prop: "xzxm"},
{ label: "校长联系方式", prop: "lxfs" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '医院':
arr = [{ label: "医院名称" ,prop:'name',placeholder: "请输入医院名称", showType: "input" }];
tableColumn = [
{ label: "医院名称", prop: "name" },
{ label: "医院法人", prop: "frxm" },
{ label: "法人联系方式", prop: "lxfs" },
{ label: "床位数", prop: "cws" },
{ label: "医院人数", prop: "yyrs" },
{ label: "医院人流量", prop: "yyrll" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '娱乐场所':
arr = [{ label: "娱乐场所" ,prop:'name',placeholder: "请输娱乐场所名称", showType: "input" }]
tableColumn = [
{ label: "场所名称", prop: "name" },
{ label: "法人", prop: "frxm" },
{ label: "法人联系方式", prop: "lxfs" },
{ label: "面积", prop: "mj" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '民爆库房':
arr = [{ label: "民爆库房" ,prop:'bmkf',placeholder: "请输民爆库房名称", showType: "input" }]
tableColumn = [
{ label: "库房名称", prop: "name" },
{ label: "库房所有人", prop: "kfsyr" },
{ label: "所有人联系方式", prop: "syrLxfs" },
{ label: "库房使用人", prop: "kfUser" },
{ label: "使用人联系方式", prop: "userLxfs" },
{ label: "库容量", prop: "kry" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
}
searchConfiger.value = searchConfiger.value.concat(arr);
pageData.tableColumn = tableColumn;
getList(chooseType.value)
}
// 搜索
const onSearch = (val) =>{
queryFrom.value = {...val}
pageData.pageConfiger.pageCurrent = 1;
getList(chooseType.value)
}
const changeNo = (val) =>{
pageData.pageConfiger.pageNum = val;
getList(chooseType.value)
}
const changeSize = (val) =>{
pageData.pageConfiger.pageSize = val;
getList(chooseType.value)
}
// 获取列表
const getList = (val) =>{
let url = ''
switch(val){
case '学校':
url = '/mosty-lzcj/tbDwXx/queryList';
break;
case '医院':
url = '/mosty-lzcj/tbDwYy/queryList';
break;
case '娱乐场所':
url = '/mosty-lzcj/TbDwYlth/queryList';
break;
case '民爆库房':
url = '/mosty-lzcj/tbDwMbkf/queryList';
break;
}
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger,...queryFrom.value };
qcckPost(data,url).then(res=>{
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch(()=>{ pageData.tableConfiger.loading = false; })
}
// 删除
const delDictItem = (ids) =>{
let url = ''
switch(chooseType.value){
case '学校':
url = '/mosty-lzcj/tbDwXx/delete';
break;
case '医院':
url = '/mosty-lzcj/tbDwYy/delete';
break;
case '娱乐场所':
url = '/mosty-lzcj/TbDwYlth/delete';
break;
case '民爆库房':
url = '/mosty-lzcj/tbDwMbkf/delete';
break;
}
// proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
// qcckPost(ids,url).then(()=>{
// proxy.$message({ type: "success", message: "删除成功" });
// getList(chooseType.value);
// })
// }).catch(() => {});
}
// 新增
const addEdit = (type, row) => {
detailDiloag.value.init(type, row,chooseType.value);
};
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -0,0 +1,198 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="title">{{ title }} </span>
<div>
<el-button
type="primary"
size="small"
:loading="loading"
@click="submit"
>保存</el-button
>
<el-button size="small" @click="close">关闭</el-button>
</div>
</div>
<MOSTY.FormItem
:formData="formData"
ref="elform"
:modelKey="listQuery"
:rules="rules"
/>
</div>
</template>
<script setup>
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js";
import * as MOSTY from "@/components/MyComponents/index";
import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
const emit = defineEmits(["updateDate"]);
const props = defineProps({
dic: Object
});
const { proxy } = getCurrentInstance();
const dialogForm = ref(false); //弹窗
const formData = ref([
{
text: "组合标签名称",
prop: "bqmc",
type: "input",
required: true
},
{
text: "身份标签大类",
prop: "sfbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签细类",
prop: "sfbqxl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签等级",
prop: "sfbqdj",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签颜色",
prop: "sfbqys",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签大类",
prop: "xwbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签细类",
prop: "xwbqdl",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签等级",
prop: "sfbqdj",
type: "select",
value: "",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "行为标签颜色",
prop: "xwbqys",
type: "select",
optionList: [
{ label: "是", value: "1" },
{ label: "否", value: "0" }
]
},
{
text: "身份标签积分",
prop: "sfbqjf",
type: "input"
},
{
text: "行为标签积分",
prop: "xwbqjf",
type: "input"
},
{
text: "组合标签积分",
prop: "zhbqjf",
type: "input"
}
]);
const listQuery = ref({
sfbqdj: []
}); //表单
const loading = ref(false);
const elform = ref();
const title = ref("");
const rules = reactive({
bqmc: [{ required: true, message: "请输入标签名称", trigger: "blur" }]
});
const editpeo = ref();
onMounted(() => {});
// 初始化数据
const init = (type, row, lx) => {
dialogForm.value = true;
title.value = row ? "编辑" : "新增";
if (row) getDataById(row.id);
};
// 根据id查询详情
const getDataById = (id) => {
let url = "";
qcckGet({ id }, url).then((res) => {
listQuery.value = res;
nextTick(() => {
editpeo.value.getList();
});
});
};
const changeInput = (val) => {
listQuery.value = {
[Object.keys(val)]: val[Object.keys(val)],
...listQuery.value
};
console.log(listQuery.value, "formData.value");
};
// 提交
const submit = () => {
elform.value.submit(handleInfoFn);
};
const handleInfoFn = (val) => {
qcckPost(val, "url")
.then((res) => {
proxy.$message({ type: "success", message: title.value + "成功" });
close();
})
.catch(() => {});
};
// 关闭
const close = () => {
listQuery.value = {};
dialogForm.value = false;
loading.value = false;
};
defineExpose({ init });
</script>
<style lang="scss" scoped>
@import "~@/assets/css/layout.scss";
@import "~@/assets/css/element-plus.scss";
</style>

View File

@ -0,0 +1,284 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="标签组合管理">
<el-button type="primary" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount">
<template #defaultSlot>
<el-select placeholder="请选择类型" v-model="chooseType" @change="handleType">
<el-option v-for="it in list.chooseList" :key="it" :value="it" :label="it"></el-option>
</el-select>
</template>
</Search>
</div>
<!-- 表格 -->
<div class="tabBox">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData"
>
<template #sfjs="{ row }">
<DictTag :value="row.sfjs" :options="list.sf" />
</template>
<template #xxlx="{ row }">
<DictTag :value="row.xxlx" :options="list.xxlx" />
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-button size="small" @click="addEdit('edit', row)">编辑</el-button>
<el-button size="small" @click="delDictItem([row.id])" type="danger">删除</el-button>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
</div>
<!-- 编辑详情 -->
<EditAddForm ref="detailDiloag" :dic="{xxlx:list.xxlx,sf:list.sf}" @updateDate="getList" />
</div>
</template>
<script setup>
import PageTitle from "@/components/aboutTable/PageTitle.vue";
import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue";
import Search from "@/components/aboutTable/Search.vue";
import EditAddForm from "./components/editAddForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const qypzDialog = ref();
const detailDiloag = ref();
const searchBox = ref(); //搜索框
const chooseType = ref('学校') //选择的类型
const list = reactive({
chooseList :['学校','医院','娱乐场所','民爆库房'],
xxlx:[
{label:'职业学校',value:'01'},
{label:'大专',value:'02'},
{label:'本科',value:'03'},
{label:'研究生',value:'04'},
{label:'博士',value:'05'},
],
sf:[
{label:'是',value:'1'},
{label:'否',value:'0'},
],
})
const searchConfiger = ref([
{ label: "标签名称",prop:'bqmc',placeholder: "请输入学校名称", showType: "input",},
{ label: "标签大类",prop:'sfbqdl' ,placeholder: "请选择标签大类", showType: "select",options:list.xxlx },
{ label: "标签细类",prop:'sfbqdl' ,placeholder: "请选择标签细类", showType: "select",options:list.xxlx },
{ label: "标签等级",prop:'sfbqdl' ,placeholder: "请选择标签等级", showType: "select",options:list.xxlx },
{ label: "标签颜色",prop:'sfbqdl' ,placeholder: "请选择标签颜色", showType: "select",options:list.xxlx },
{ label: "积分分值",prop:'bqmc',placeholder: "请输入积分分值", showType: "input",},
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [], //表格数据
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "null",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
}, //分页
controlsWidth: 160, //操作栏宽度
tableColumn: [
{ label: "组合标签名称", prop: "name" },
{ label: "组合标签等级", prop: "xxrs" },
{ label: "身份标签大类", prop: "sfjs",showSolt:true},
{ label: "身份标签细类", prop: "xxlx",showSolt:true},
{ label: "身份标签等级", prop: "xzxm"},
{ label: "身份标签颜色", prop: "lxfs" },
{ label: "行为标签大类", prop: "xxlx",showSolt:true},
{ label: "行为标签细类", prop: "xxlx",showSolt:true},
{ label: " 行为标签等级", prop: "xxlx",showSolt:true},
{ label: " 行为标签颜色", prop: "xxlx",showSolt:true},
{ label: " 身份标签积分", prop: "xxlx",showSolt:true},
{ label: " 行为标签积分", prop: "xxlx",showSolt:true},
{ label: " 组合标签积分", prop: "xxlx",showSolt:true},
]
});
onMounted(() => {
getList(chooseType.value)
tabHeightFn();
});
//选择类型
const handleType = (val) => {
pageData.keyCount++;
pageData.pageConfiger.pageCurrent = 1;
searchConfiger.value = searchConfiger.value.slice(0,1);
let arr = [],tableColumn = [];
switch(val){
case '学校':
arr = [
{ label: "学校名称" ,prop:'name', placeholder: "请输入学校名称", showType: "input" },
{ label: "学校类型" ,prop:'xxlx', placeholder: "请选择学校类型", showType: "select",options:list.xxlx },
]
tableColumn = [
{ label: "学校名称", prop: "name" },
{ label: "学校人数", prop: "xxrs" },
{ label: "是否寄宿学校", prop: "sfjs",showSolt:true},
{ label: "学校类型", prop: "xxlx",showSolt:true},
{ label: "校长", prop: "xzxm"},
{ label: "校长联系方式", prop: "lxfs" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '医院':
arr = [{ label: "医院名称" ,prop:'name',placeholder: "请输入医院名称", showType: "input" }];
tableColumn = [
{ label: "医院名称", prop: "name" },
{ label: "医院法人", prop: "frxm" },
{ label: "法人联系方式", prop: "lxfs" },
{ label: "床位数", prop: "cws" },
{ label: "医院人数", prop: "yyrs" },
{ label: "医院人流量", prop: "yyrll" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '娱乐场所':
arr = [{ label: "娱乐场所" ,prop:'name',placeholder: "请输娱乐场所名称", showType: "input" }]
tableColumn = [
{ label: "场所名称", prop: "name" },
{ label: "法人", prop: "frxm" },
{ label: "法人联系方式", prop: "lxfs" },
{ label: "面积", prop: "mj" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
case '民爆库房':
arr = [{ label: "民爆库房" ,prop:'bmkf',placeholder: "请输民爆库房名称", showType: "input" }]
tableColumn = [
{ label: "库房名称", prop: "name" },
{ label: "库房所有人", prop: "kfsyr" },
{ label: "所有人联系方式", prop: "syrLxfs" },
{ label: "库房使用人", prop: "kfUser" },
{ label: "使用人联系方式", prop: "userLxfs" },
{ label: "库容量", prop: "kry" },
{ label: "要求配备保安数", prop: "pbbbs" },
{ label: "自聘保安数", prop: "zpbbs" },
{ label: "第三方保安数", prop: "sfbbs" },
]
break;
}
searchConfiger.value = searchConfiger.value.concat(arr);
pageData.tableColumn = tableColumn;
getList(chooseType.value)
}
// 搜索
const onSearch = (val) =>{
queryFrom.value = {...val}
pageData.pageConfiger.pageCurrent = 1;
getList(chooseType.value)
}
const changeNo = (val) =>{
pageData.pageConfiger.pageNum = val;
getList(chooseType.value)
}
const changeSize = (val) =>{
pageData.pageConfiger.pageSize = val;
getList(chooseType.value)
}
// 获取列表
const getList = (val) =>{
let url = ''
switch(val){
case '学校':
url = '/mosty-lzcj/tbDwXx/queryList';
break;
case '医院':
url = '/mosty-lzcj/tbDwYy/queryList';
break;
case '娱乐场所':
url = '/mosty-lzcj/TbDwYlth/queryList';
break;
case '民爆库房':
url = '/mosty-lzcj/tbDwMbkf/queryList';
break;
}
pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger,...queryFrom.value };
qcckPost(data,url).then(res=>{
pageData.tableData = res.records || [];
pageData.total = res.total;
pageData.tableConfiger.loading = false;
}).catch(()=>{ pageData.tableConfiger.loading = false; })
}
// 删除
const delDictItem = (ids) =>{
let url = ''
switch(chooseType.value){
case '学校':
url = '/mosty-lzcj/tbDwXx/delete';
break;
case '医院':
url = '/mosty-lzcj/tbDwYy/delete';
break;
case '娱乐场所':
url = '/mosty-lzcj/TbDwYlth/delete';
break;
case '民爆库房':
url = '/mosty-lzcj/tbDwMbkf/delete';
break;
}
// proxy.$confirm("确定要删除", "警告", {type: "warning"}).then(() => {
// qcckPost(ids,url).then(()=>{
// proxy.$message({ type: "success", message: "删除成功" });
// getList(chooseType.value);
// })
// }).catch(() => {});
}
// 新增
const addEdit = (type, row) => {
detailDiloag.value.init(type, row,chooseType.value);
};
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};
};
</script>
<style>
.el-loading-mask {
background: rgba(0, 0, 0, 0.5) !important;
}
</style>

View File

@ -1,11 +1,15 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="人脸抓拍采集信息"/>
<PageTitle title="身份标签管理" />
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search :searchArr="searchConfiger" @submit="onSearch" :key="pageData.keyCount"/>
<Search
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
/>
</div>
<!-- 表格 -->
<div class="tabBox">
@ -16,37 +20,43 @@
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
:controlsWidth="pageData.controlsWidth"
@chooseData="chooseData">
@chooseData="chooseData"
>
<!-- 抓拍图片 -->
<template #captureImage="{ row }">
<el-image
<el-image
style="width: 100px; height: 60px"
:src="row.captureImage"
fit="cover"
:preview-src-list="[row.captureImage]">
:preview-src-list="[row.captureImage]"
>
</el-image>
</template>
<!-- 人像图片 -->
<template #personImage="{ row }">
<el-image
<el-image
style="width: 100px; height: 60px"
:src="row.personImage"
fit="cover"
:preview-src-list="[row.personImage]">
:preview-src-list="[row.personImage]"
>
</el-image>
</template>
<!-- 车牌图片 -->
<template #licensePlateImage="{ row }">
<el-image
<el-image
style="width: 100px; height: 60px"
:src="row.licensePlateImage"
fit="cover"
:preview-src-list="[row.licensePlateImage]">
:preview-src-list="[row.licensePlateImage]"
>
</el-image>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-button size="small" @click="addEdit('detail', row)">详情</el-button>
<el-button size="small" @click="addEdit('detail', row)"
>详情</el-button
>
</template>
</MyTable>
<Pages
@ -77,18 +87,53 @@ const detailDiloag = ref();
const searchBox = ref(); //搜索框
const searchConfiger = ref([
{ label: "视频设备编号", prop: 'deviceNo', placeholder: "请输入视频设备编号", showType: "input" },
{ label: "日期时间", prop: 'captureTime', placeholder: "请选择日期时间", showType: "date" },
{
label: "视频设备编号",
prop: "deviceNo",
placeholder: "请输入视频设备编号",
showType: "input"
},
{
label: "日期时间",
prop: "captureTime",
placeholder: "请选择日期时间",
showType: "date"
}
]);
const queryFrom = ref({});
const pageData = reactive({
tableData: [
{deviceNo:'123456789', captureImage:'', personImage:'', captureTime: '2025/1/20 10:00:00'},
{deviceNo:'123456789', captureImage:'', personImage:'', captureTime: '2025/1/20 10:00:00'},
{deviceNo:'123456789', captureImage:'', personImage:'', captureTime: '2025/1/20 10:00:00'},
{deviceNo:'123456789', captureImage:'', personImage:'', captureTime: '2025/1/20 10:00:00'},
{deviceNo:'123456789', captureImage:'', personImage:'', captureTime: '2025/1/20 10:00:00'},
{
deviceNo: "123456789",
captureImage: "",
personImage: "",
captureTime: "2025/1/20 10:00:00"
},
{
deviceNo: "123456789",
captureImage: "",
personImage: "",
captureTime: "2025/1/20 10:00:00"
},
{
deviceNo: "123456789",
captureImage: "",
personImage: "",
captureTime: "2025/1/20 10:00:00"
},
{
deviceNo: "123456789",
captureImage: "",
personImage: "",
captureTime: "2025/1/20 10:00:00"
},
{
deviceNo: "123456789",
captureImage: "",
personImage: "",
captureTime: "2025/1/20 10:00:00"
}
],
keyCount: 0,
tableConfiger: {
@ -106,12 +151,12 @@ const pageData = reactive({
{ label: "视频设备编号", prop: "deviceNo" },
{ label: "抓拍图片", prop: "captureImage", slot: true },
{ label: "人像图片", prop: "personImage", slot: true },
{ label: "日期时间", prop: "captureTime" },
{ label: "日期时间", prop: "captureTime" }
]
});
onMounted(() => {
getList()
getList();
tabHeightFn();
});
@ -119,26 +164,26 @@ onMounted(() => {
const handleType = (val) => {
pageData.keyCount++;
pageData.pageConfiger.pageCurrent = 1;
getList()
}
getList();
};
// 搜索
const onSearch = (val) =>{
queryFrom.value = {...val}
const onSearch = (val) => {
queryFrom.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
getList()
}
getList();
};
const changeNo = (val) =>{
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getList()
}
const changeSize = (val) =>{
getList();
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList()
}
getList();
};
// 获取列表
const getList = (val) =>{
const getList = (val) => {
// pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
// let url = '/mosty-lzcj/tbDwMbkf/queryList';
@ -147,7 +192,7 @@ const getList = (val) =>{
// pageData.total = res.total;
// pageData.tableConfiger.loading = false;
// }).catch(()=>{ pageData.tableConfiger.loading = false; })
}
};
// 详情
const addEdit = (type, row) => {
@ -156,7 +201,8 @@ const addEdit = (type, row) => {
// 表格高度计算
const tabHeightFn = () => {
pageData.tableHeight = window.innerHeight - searchBox.value.offsetHeight - 250;
pageData.tableHeight =
window.innerHeight - searchBox.value.offsetHeight - 250;
window.onresize = function () {
tabHeightFn();
};

View File

@ -7,7 +7,6 @@
* @FilePath: \lz\src\views\backOfficeSystem\editPassword\components\mbkf.vue
-->
<template>
<el-form-item style="width: 48%" prop="name" label="库房名称">
<MOSTY.Other width="100%" clearable v-model="listQuery.name" placeholder="请输入库房名称"/>
</el-form-item>
@ -26,11 +25,9 @@
<el-form-item style="width: 48%" prop="kry" label="库容量">
<MOSTY.Other width="100%" clearable v-model="listQuery.kry" type="Number" placeholder="请输入库容量" />
</el-form-item>
<el-form-item style="width: 48%" prop="sfdbs" label="是否导爆索">
<MOSTY.Select width="100%" clearable v-model="listQuery.sfdbs" :dictEnum="props.dic.sf" placeholder="请选择是否寄宿制学校"/>
</el-form-item>
<el-form-item style="width: 48%" prop="pbbbs" label="要求配置保安人数">
<MOSTY.Other width="100%" clearable v-model="listQuery.pbbbs" placeholder="请输入要求配置保安人数" type="Number" />
</el-form-item>