更新页面

This commit is contained in:
Esacpe 2025-05-21 10:24:02 +08:00
parent f155ad7066
commit 2b3f8a4ce8
6 changed files with 546 additions and 20 deletions

View File

@ -136,7 +136,6 @@ export const publicRoutes = [
component: layout,
redirect: "/IdentityManage",
children: [
{
path: "/FourColorWarning",
name: "FourColorWarning",
@ -401,7 +400,35 @@ export const publicRoutes = [
},
]
},
{
path: "/DeploymentDisposal",
name: "DeploymentDisposal",
redirect: "/ResearchHome",
meta: {
title: "全域布控处置",
icon: "article"
},
children: [
{
path: "/mpvGroup",
name: "mpvGroup",
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvGroup/index"),
meta: {
title: "重点群体管理",
icon: "article"
},
},
{
path: "/mpvPeo",
name: "mpvPeo",
component: () => import("@/views/backOfficeSystem/DeploymentDisposal/mpvPeo/index"),
meta: {
title: "重点人管理",
icon: "article"
},
},
]
},
]
}
];

View File

@ -0,0 +1,109 @@
<template>
<div class="dialog" v-if="dialogForm">
<div class="head_box">
<span class="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>
<div class="form_cnt">
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane :label="title+'群体'" name="first"></el-tab-pane>
<el-tab-pane label="轨迹信息" name="second"></el-tab-pane>
<el-tab-pane label="标签信息" name="third"></el-tab-pane>
</el-tabs>
<QtDetail ref="elform" v-if="activeName == 'first'"></QtDetail>
<!-- <FormMessage :formList="formData" ref="elform" :rules="rules"></FormMessage> -->
</div>
</div>
</template>
<script setup>
import QtDetail from './qtDetail.vue'
import FormMessage from '@/components/aboutTable/FormMessage.vue'
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import * as rule from "@/utils/rules.js";
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 activeName = ref("first");
const formData = ref([
{ label: "线索标题", prop: "xsbt", type: "input", },
{ label: "线索编号", prop: "xsbh", type: "input" },
{ label: "线索类型", prop: "xslx", type: "select", options: [] },
{ label: "线索来源", prop: "xsly", type: "input" },
{ label: "开始时间", prop: "kssj", type: "datetime"},
{ label: "结束时间", prop: "jssj", type: "datetime"},
{ label: "指向地点", prop: "zxdd", type: "input" },
{ label: "群体名称", prop: "qtmc", type: "input" },
{ label: "群体类型", prop: "qtlx", type: "input" },
{ label: "线索细类", prop: "xslx", type: "input" },
{ label: "风险等级", prop: "fxdj", type: "input" },
{ label: "是否初报", prop: "qtmc", type: "input" },
{ label: "线索内容", prop: "nr", type: "textarea",width: '100%' },
{ label: "报送编号", prop: "bsbh", type: "input",},
{ label: "上报单位", prop: "sbdw", type: "input",},
{ label: "抄送单位", prop: "csdw", type: "input",},
{ label: "承办人", prop: "cbr", type: "input",},
{ label: "审核人", prop: "shr", type: "input",},
{ label: "签发人", prop: "qfr", type: "input",},
]);
const listQuery = ref({
sfbqdj: []
}); //
const loading = ref(false);
const elform = ref();
const title = ref("");
const rules = reactive({
xsbt: [{ required: true, message: "请输入线索标题", trigger: "blur" }]
});
const editpeo = ref();
onMounted(() => {});
//
const init = (type, row,) => {
dialogForm.value = true;
title.value = type == 'add' ? "新增" : "编辑";
if (row) getDataById(row.id);
};
// id
const getDataById = (id) => {
// qcckGet({}, '/mosty-gsxt/tbGsxtBqgl/'+id).then((res) => {
// listQuery.value = res;
// });
};
//
const submit = () => {
elform.value.submit((data)=>{
// let url = title.value == "" ? '/mosty-gsxt/tbGsxtBqgl/save':'/mosty-gsxt/tbGsxtBqgl/update';
// let params = { ...data }
// qcckPost(params, url).then((res) => {
// proxy.$message({ type: "success", message: title.value + "" });
// emit("updateDate");
// 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";
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active{
color: #0072ff;
background: rgba(0, 114, 255, 0.3);
}
</style>

View File

@ -0,0 +1,137 @@
<template>
<el-form ref="elform" :model="listQuery" :rules="rules" :inline="true" label-position="right">
<el-divider content-position="left">群体信息</el-divider>
<el-form-item prop="qtmc" label="群体名称">
<MOSTY.Other width="100%" clearable v-model="listQuery.qtmc" :placeholder="`请输入群体名称`"/>
</el-form-item>
<el-form-item prop="qtbm" label="群体别名">
<MOSTY.Other width="100%" clearable v-model="listQuery.qtbm" :placeholder="`请输入群体别名`"/>
</el-form-item>
<el-form-item prop="qtjc" label="群体简称">
<MOSTY.Other width="100%" clearable v-model="listQuery.qtjc" :placeholder="`请输入群体简称`"/>
</el-form-item>
<el-form-item prop="qtlb" label="群体类别">
<MOSTY.Other width="100%" clearable v-model="listQuery.qtlb" :placeholder="`请输入群体类别`"/>
</el-form-item>
<el-form-item prop="clsj" label="成立时间">
<el-date-picker v-model="listQuery.clsj" type="date" value-format="YYYY-MM-DD" placeholder="请选择日期" style="width:100%;" />
</el-form-item>
<el-form-item prop="fxdj" label="风险等级">
<MOSTY.Select filterable v-model="listQuery.fxdj" :dictEnum="[]" width="100%" clearable :placeholder="`请选择风险等级`"/>
</el-form-item>
<el-form-item prop="fxjc" label="风险检测" style="width:100%">
<div class="flex align-center">
<MOSTY.Other filterable v-model="listQuery.fxjc" readonly />
<span class="ml5"><el-icon color="#0072FF" style="top:4px" size="20px"><CirclePlus /></el-icon></span>
</div>
</el-form-item>
<el-form-item prop="ybjc" label="一般监测" style="width:100%">
<div class="flex align-center">
<MOSTY.Other filterable v-model="listQuery.ybjc" readonly />
<span class="ml5"><el-icon color="#0072FF" style="top:4px" size="20px"><CirclePlus /></el-icon></span>
</div>
</el-form-item>
<el-form-item prop="ybjc" label="重点监测" style="width:100%">
<div class="flex align-center">
<MOSTY.Other filterable v-model="listQuery.zdjc" readonly />
<span class="ml5"><el-icon color="#0072FF" style="top:4px" size="20px"><CirclePlus /></el-icon></span>
</div>
</el-form-item>
<el-form-item prop="ybjc" label="背景资料" style="width:100%">
<MOSTY.Other filterable v-model="listQuery.bjzl" style="width:100%" />
</el-form-item>
<el-form-item prop="ybjc" label="两群采集录入" style="width:100%">
<MyTable
:tableData="pageData.tableData"
:tableColumn="pageData.tableColumn"
:tableHeight="pageData.tableHeight"
:key="pageData.keyCount"
:tableConfiger="pageData.tableConfiger"
/>
</el-form-item>
<el-divider content-position="left">群体管辖信息</el-divider>
<el-form-item prop="gxdw" label="管辖单位">
<MOSTY.Other width="100%" clearable v-model="listQuery.gxdw" :placeholder="`请输入管辖单位`"/>
</el-form-item>
<el-form-item prop="gxxq" label="管辖辖区">
<MOSTY.Other width="100%" clearable v-model="listQuery.gxxq" :placeholder="`请输入管辖辖区`"/>
</el-form-item>
<el-form-item prop="lxr" label="联系人">
<MOSTY.Other width="100%" clearable v-model="listQuery.lxr" :placeholder="`请输入联系人`"/>
</el-form-item>
<el-form-item prop="lxfs" label="联系方式">
<MOSTY.Other width="100%" clearable v-model="listQuery.lxfs" :placeholder="`请输入联系方式`"/>
</el-form-item>
<el-divider content-position="left">审批信息</el-divider>
<el-form-item prop="sqr" label="申请人">
<MOSTY.Other width="100%" clearable v-model="listQuery.sqr" :placeholder="`请输入申请人`"/>
</el-form-item>
<el-form-item prop="sqdw" label="申请单位">
<MOSTY.Other width="100%" clearable v-model="listQuery.sqdw" :placeholder="`请输入申请单位`"/>
</el-form-item>
<el-form-item prop="shr" label="审核人">
<MOSTY.Other width="100%" clearable v-model="listQuery.shr" :placeholder="`请输入审核人`"/>
</el-form-item>
<el-form-item prop="shdw" label="审核单位">
<MOSTY.Other width="100%" clearable v-model="listQuery.shdw" :placeholder="`请输入审核单位`"/>
</el-form-item>
<el-form-item prop="spr" label="审批人">
<MOSTY.Other width="100%" clearable v-model="listQuery.spr" :placeholder="`请输入审批人`"/>
</el-form-item>
<el-form-item prop="spdw" label="审批单位">
<MOSTY.Other width="100%" clearable v-model="listQuery.spdw" :placeholder="`请输入审批单位`"/>
</el-form-item>
<el-form-item prop="jsdw" label="接收单位">
<MOSTY.Other width="100%" clearable v-model="listQuery.jsdw" :placeholder="`请输入接收单位`"/>
</el-form-item>
<el-form-item prop="sffk" label="是否反馈">
<MOSTY.Other width="100%" clearable v-model="listQuery.sffk" :placeholder="`请输入是否反馈`"/>
</el-form-item>
</el-form>
</template>
<script setup>
import * as MOSTY from "@/components/MyComponents/index";
import MyTable from "@/components/aboutTable/MyTable.vue";
import { reactive,defineEmits,ref , defineExpose,} from 'vue'
const emits = defineEmits(["update:modelValue"]);
const elform = ref();
const listQuery = ref({});
const rules = reactive({
qtmc: [{ required: true, message: '请输入群体名称', trigger: 'blur' }],
})
const pageData = reactive({
tableData: [],
tableConfiger: {
rowHieght: 30,
showSelectType: "null",
loading: false,
haveControls:false,
showIndex:false
},
tableHeight:200,
tableColumn: [
{ label: "微信群", prop: "wxq"},
{ label: "QQ群", prop: "qqq"},
{ label: "群主", prop: "qz"},
{ label: "联系电话", prop: "lxdh"},
{ label: "群重要内容", prop: "zynr"},
]
});
const submit = (resfun) => {
elform.value.validate((valid) => {
if (!valid) return false;
resfun(listQuery.value);
});
};
defineExpose({ submit });
</script>
<style>
</style>

View File

@ -0,0 +1,239 @@
<template>
<div>
<div class="titleBox">
<PageTitle title="重点群体管理">
<el-button type="primary" size="small" v-for="it in btns" :key="it"> {{ it }}</el-button>
<el-button type="primary" size="small" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><CirclePlus /></el-icon>
<span style="vertical-align: middle">新增</span>
</el-button>
<el-button type="danger" size="small" @click="addEdit('add', '')">
<el-icon style="vertical-align: middle"><Dete /></el-icon>
<span style="vertical-align: middle">批量删除</span>
</el-button>
</PageTitle>
</div>
<!-- 搜索 -->
<div ref="searchBox">
<Search
:searchArr="searchConfiger"
@submit="onSearch"
:key="pageData.keyCount"
/>
</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 #jbxx>
<div>
<img src="" alt="">
<ul>
<li>群体名称</li>
<li>所属辖区</li>
<li>群体级别</li>
<li>风险等级</li>
</ul>
</div>
<div class="flex">
<el-button type="primary" size="small"> 涉恐群体</el-button>
<el-button type="primary" size="small"> 涉稳群体</el-button>
<el-button type="primary" size="small"> 讨薪群体</el-button>
</div>
</template>
<template #bgxx="{row}">
<div>背景资料</div>
<div>创建单位</div>
<div>风险监测</div>
<div>一般监测</div>
<div>重点监测</div>
</template>
<template #gkxx="{row}">
<div>群体标签</div>
<div>管辖单位</div>
<div>列控原因</div>
<div>开始时间</div>
<div>截至时间</div>
</template>
<template #wkrs="{row}">
<span style="color:#0072ff">{{ row.wkrs }}</span>
</template>
<!-- 操作 -->
<template #controls="{ row }">
<el-link size="small" type="success" @click="addEdit('edit', row)">编辑</el-link>
<el-link size="small" type="primary">查看</el-link>
<el-link size="small" type="danger" @click="deleteRow(row)">删除</el-link>
</template>
</MyTable>
<Pages
@changeNo="changeNo"
@changeSize="changeSize"
:tableHeight="pageData.tableHeight"
:pageConfiger="{
...pageData.pageConfiger,
total: pageData.total
}"
></Pages>
</div>
<!-- 详情 -->
<DetailForm ref="detailDiloag" />
</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 DetailForm from "./components/addForm.vue";
import { qcckGet, qcckPost, qcckDelete } from "@/api/qcckApi.js";
import { reactive, ref, onMounted, getCurrentInstance } from "vue";
const { proxy } = getCurrentInstance();
const detailDiloag = ref();
const searchBox = ref(); //
const btns = reactive(['一键布控','维护群体','矛盾化解','转指令','转线索','转督导','转合成','移交管控','批量导入','导出'])
const searchConfiger = ref([
{
label: "群体名称",
prop: "groupName",
placeholder: "请输入群体名称",
showType: "input"
},
{
label: "群体风险等级",
prop: "riskLevel",
placeholder: "请选择群体风险等级",
showType: "select"
},
{
label: "监测级别",
prop: "monitorLevel",
placeholder: "请选择监测级别",
showType: "select"
},
{
label: "成员姓名",
prop: "memberName",
placeholder: "请输入成员姓名",
showType: "input"
},
{
label: "时间敏感词",
prop: "timeSensitive",
placeholder: "请输入时间敏感词",
showType: "input"
},
{
label: "群体类别",
prop: "groupType",
placeholder: "请选择群体类别",
showType: "select"
},
{
label: "布控状态",
prop: "bkzt",
placeholder: "请选择布控状态",
showType: "select"
},
]);
const pageData = reactive({
tableData: [
{
img:'',
jbxx: "",
wkrs:'1/5'
},
],
keyCount: 0,
tableConfiger: {
rowHieght: 61,
showSelectType: "checkBox",
loading: false
},
total: 0,
pageConfiger: {
pageSize: 20,
pageCurrent: 1
},
controlsWidth: 220,
tableColumn: [
{ label: "群体基本信息", prop: "jbxx",showSolt: true },
{ label: "背景信息", prop: "bgxx",showSolt: true },
{ label: "管控信息", prop: "gkxx" ,showSolt: true },
{ label: "稳控人数", prop: "wkrs" ,showSolt: true,width:80 },
{ label: "状态", prop: "status" }
]
});
const queryFrom = ref({});
onMounted(() => {
getList();
tabHeightFn();
});
//
const handleType = (val) => {
pageData.keyCount++;
pageData.pageConfiger.pageCurrent = 1;
getList();
};
//
const onSearch = (val) => {
queryFrom.value = { ...val };
pageData.pageConfiger.pageCurrent = 1;
getList();
};
const changeNo = (val) => {
pageData.pageConfiger.pageNum = val;
getList();
};
const changeSize = (val) => {
pageData.pageConfiger.pageSize = val;
getList();
};
//
const getList = (val) => {
// pageData.tableConfiger.loading = true;
let data = { ...pageData.pageConfiger, ...queryFrom.value };
// let url = '/mosty-lzcj/tbDwMbkf/queryList';
// qcckPost(data,url).then(res=>{
// pageData.tableData = res.records || [];
// pageData.total = res.total;
// pageData.tableConfiger.loading = false;
// }).catch(()=>{ pageData.tableConfiger.loading = false; })
};
//
const addEdit = (type, row) => {
detailDiloag.value.init(type, row);
};
//
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,13 @@
<template>
<div>重点人管理</div>
</template>
<script>
export default {
}
</script>
<style>
</style>

View File

@ -109,24 +109,25 @@ const loading = ref(false);
const loginFromRef = ref(null);
const router = useRouter();
const handleLogin = () => {
loginFromRef.value.validate((valid) => {
if (!valid) return false;
loading.value = true;
store.dispatch("user/login", loginForm.value).then((res) => {
loading.value = false;
//
if (res.deptList.length === 1) {
window.location.href = '/'
} else {
deptList.value = [...res.deptList];
loginDialog.value = true;
authorization.value = res.jwtToken;
ElNotification({title: "提示",message: "请选择部门",duration: 3000});
}
}).catch(() => {
loading.value = false;
});
});
window.location.href = '/'
// loginFromRef.value.validate((valid) => {
// if (!valid) return false;
// loading.value = true;
// store.dispatch("user/login", loginForm.value).then((res) => {
// loading.value = false;
// //
// if (res.deptList.length === 1) {
// window.location.href = '/'
// } else {
// deptList.value = [...res.deptList];
// loginDialog.value = true;
// authorization.value = res.jwtToken;
// ElNotification({title: "",message: "",duration: 3000});
// }
// }).catch(() => {
// loading.value = false;
// });
// });
};
const logout = () => {
store.dispatch("user/logout");