This commit is contained in:
2025-07-16 20:59:42 +08:00
parent 726bae2652
commit 7407a43c85
4 changed files with 677 additions and 341 deletions

View File

@ -3,28 +3,63 @@
<div class="head_box"> <div class="head_box">
<span class="title">{{ title }}重点人管理</span> <span class="title">{{ title }}重点人管理</span>
<div> <div>
<el-button type="primary" size="small" v-if="!disabled" :loading="loading" @click="submit">保存</el-button > <el-button
type="primary"
size="small"
v-if="!disabled"
:loading="loading"
@click="submit"
>保存</el-button
>
<el-button size="small" @click="close">关闭</el-button> <el-button size="small" @click="close">关闭</el-button>
</div> </div>
</div> </div>
<div class="form_cnt" > <div class="form_cnt">
<FormMessage :disabled="disabled" v-model="listQuery" :formList="formData" labelWidth="100px" ref="elform" :rules="rules"></FormMessage> <FormMessage
<div class="ml50 mr50"><span class="mr10">人员标签模型 : </span><el-button type="primary" v-if="!disabled" @click="chooseMarksVisible = true">选择</el-button></div> :disabled="disabled"
v-model="listQuery"
:formList="formData"
labelWidth="100px"
ref="elform"
:rules="rules"
></FormMessage>
<div class="ml50 mr50">
<span class="mr10">人员标签模型 : </span
><el-button
type="primary"
v-if="!disabled"
@click="chooseMarksVisible = true"
>选择</el-button
>
</div>
<div class="boxlist ml50 mr50"> <div class="boxlist ml50 mr50">
<MyTable <MyTable
:tableData="listQuery.bqList" :tableData="listQuery.bqList"
:tableColumn="tableDate.tableColumn" :tableColumn="tableDate.tableColumn"
:key="tableDate.keyCount" :key="tableDate.keyCount"
:tableConfiger="tableDate.tableConfiger" :tableConfiger="tableDate.tableConfiger"
:controlsWidth="tableDate.controlsWidth"> :controlsWidth="tableDate.controlsWidth"
>
<template #bqLb="{ row }"> <template #bqLb="{ row }">
<DictTag :value="row.bqLb" :tag="false" :options="props.dic.D_GS_BQ_LB" /> <DictTag
:value="row.bqLb"
:tag="false"
:options="props.dic.D_GS_BQ_LB"
/>
</template> </template>
<template #bqLx="{ row }"> <template #bqLx="{ row }">
<DictTag :value="row.bqLx" :tag="false" :options="props.dic.D_GS_BQ_LX" /> <DictTag
:value="row.bqLx"
:tag="false"
:options="props.dic.D_GS_BQ_LX"
/>
</template> </template>
<template #bqZl="{ row }"> <template #bqZl="{ row }">
<DictTag :value="row.bqZl" :tag="false" :options="props.dic.D_GS_BQ_ZL" /> <DictTag
:value="row.bqZl"
:tag="false"
:options="props.dic.D_GS_BQ_ZL"
/>
</template> </template>
<template #controls="{ row }"> <template #controls="{ row }">
<el-link type="danger" @click="delDictItem(row.bqId)">删除</el-link> <el-link type="danger" @click="delDictItem(row.bqId)">删除</el-link>
@ -33,29 +68,54 @@
</div> </div>
<!-- 选择审核人 --> <!-- 选择审核人 -->
<div class="ww100 mt20 ml50 mr50"> <div class="ww100 mt20 ml50 mr50">
<el-steps direction="vertical" :active="listQuery.wccz" space="500" finish-status="success"> <el-steps
<el-step title="发起申请" > direction="vertical"
:active="listQuery.wccz"
space="500"
finish-status="success"
>
<el-step title="发起申请">
<template #description> <template #description>
<div class="flex align-center ww100 mt10 mb20"> <div class="flex align-center ww100 mt10 mb20">
<el-input v-model="listQuery.sqrXm" readonly class="ww20"></el-input> <el-input
<el-input v-model="listQuery.sqrSsbmmc" readonly class="ww20 ml10 mr10"></el-input> v-model="listQuery.sqrXm"
<span class="f12" style="color: #333333;"> 备注发起人和部门根据登陆人自动填写</span> readonly
class="ww20"
></el-input>
<el-input
v-model="listQuery.sqrSsbmmc"
readonly
class="ww20 ml10 mr10"
></el-input>
<span class="f12" style="color: #333333">
备注发起人和部门根据登陆人自动填写</span
>
</div> </div>
</template> </template>
</el-step> </el-step>
<el-step title="审核确认" > <el-step title="审核确认">
<template #description> <template #description>
<div class="flex align-center ww100 mt10 mb20 depBox"> <div class="flex align-center ww100 mt10 mb20 depBox">
<span class="mr4">审核部门 : </span> <span class="mr4">审核部门 : </span>
<MOSTY.Department @getDepValue="getShdep" v-model="listQuery.shSsbmdm" clearable :placeholder="listQuery.shSsbmmc ? listQuery.shSsbmmc : '' " /> <MOSTY.Department
@getDepValue="getShdep"
v-model="listQuery.shSsbmdm"
clearable
:placeholder="listQuery.shSsbmmc ? listQuery.shSsbmmc : ''"
/>
</div> </div>
</template> </template>
</el-step> </el-step>
<el-step title="审批确认" > <el-step title="审批确认">
<template #description> <template #description>
<div class="flex align-center ww100 mt10 mb20 depBox"> <div class="flex align-center ww100 mt10 mb20 depBox">
<span lass="mr4">审批部门 : </span> <span lass="mr4">审批部门 : </span>
<MOSTY.Department @getDepValue="getSPdep" v-model="listQuery.spSsbmdm" clearable :placeholder="listQuery.spSsbmmc ? listQuery.spSsbmmc : '' " /> <MOSTY.Department
@getDepValue="getSPdep"
v-model="listQuery.spSsbmdm"
clearable
:placeholder="listQuery.spSsbmmc ? listQuery.spSsbmmc : ''"
/>
</div> </div>
</template> </template>
</el-step> </el-step>
@ -63,7 +123,11 @@
</div> </div>
</div> </div>
</div> </div>
<ChooseMarks v-model="chooseMarksVisible" @choosed="choosed" :roleIds="roleIds" /> <ChooseMarks
v-model="chooseMarksVisible"
@choosed="choosed"
:roleIds="roleIds"
/>
</template> </template>
<script setup> <script setup>
@ -73,16 +137,25 @@ import ChooseMarks from "@/components/ChooseList/ChooseMarks/index.vue";
import MyTable from "@/components/aboutTable/MyTable.vue"; import MyTable from "@/components/aboutTable/MyTable.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue"; import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js"; import { qcckGet, qcckPost, qcckPut } from "@/api/qcckApi.js";
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, nextTick, watch } from "vue"; import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick,
watch
} from "vue";
const emit = defineEmits(["updateDate"]); const emit = defineEmits(["updateDate"]);
const props = defineProps({ const props = defineProps({
dic: Object dic: Object
}); });
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const roleIds = ref([]) const roleIds = ref([]);
const chooseMarksVisible = ref(false) const chooseMarksVisible = ref(false);
const dialogForm = ref(false); //弹窗 const dialogForm = ref(false); //弹窗
const pcsList = ref([]) const pcsList = ref([]);
const rules = reactive({ const rules = reactive({
ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }], ryXm: [{ required: true, message: "请输入姓名", trigger: "blur" }],
rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }], rySfzh: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
@ -92,40 +165,105 @@ const rules = reactive({
ryCsrq: [{ required: true, message: "请选择出生日期", trigger: "change" }], ryCsrq: [{ required: true, message: "请选择出生日期", trigger: "change" }],
ryJg: [{ required: true, message: "请选择籍贯", trigger: "change" }], ryJg: [{ required: true, message: "请选择籍贯", trigger: "change" }],
zdrRyjb: [{ required: true, message: "请选择人员级别", trigger: "change" }], zdrRyjb: [{ required: true, message: "请选择人员级别", trigger: "change" }],
zdrYjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }], zdrYjdj: [{ required: true, message: "请选择预警等级", trigger: "change" }]
}); });
const listQuery = ref({}); //表单 const listQuery = ref({}); //表单
const formData = ref([]) const formData = ref([]);
watch(()=>props.dic,val=> { watch(
() => props.dic,
(val) => {
formData.value = [ formData.value = [
{ label: "姓名", prop: "ryXm", type: "input" }, { label: "姓名", prop: "ryXm", type: "input" },
{ label: "性别", prop: "ryXb", type: "select", options: props.dic.D_BZ_XB }, {
{ label: "民族", prop: "ryMz", type: "select", options: props.dic.D_BZ_MZ }, label: "性别",
prop: "ryXb",
type: "select",
options: props.dic.D_BZ_XB
},
{
label: "民族",
prop: "ryMz",
type: "select",
options: props.dic.D_BZ_MZ
},
{ label: "身份证号", prop: "rySfzh", type: "input" }, { label: "身份证号", prop: "rySfzh", type: "input" },
{ label: "联系电话", prop: "ryLxdh", type: "input" }, { label: "联系电话", prop: "ryLxdh", type: "input" },
{ label: "出生日期", prop: "ryCsrq", type: "date" }, { label: "出生日期", prop: "ryCsrq", type: "date" },
{ label: "籍贯", prop: "ryJg", type: "select", options: props.dic.D_BZ_XZQHDM }, {
{ label: "人员级别", prop: "zdrRyjb", type: "select", options: props.dic.D_GS_ZDR_RYJB }, label: "籍贯",
{ label: "预警等级", prop: "zdrYjdj", type: "select", options: props.dic.D_GS_ZDR_YJDJ }, prop: "ryJg",
{ label: "户籍地区划", prop: "hjdQh", type: "select", options: props.dic.D_BZ_XZQHDM }, type: "select",
options: props.dic.D_BZ_XZQHDM
},
{
label: "人员级别",
prop: "zdrRyjb",
type: "select",
options: props.dic.D_GS_ZDR_RYJB
},
{
label: "预警等级",
prop: "zdrYjdj",
type: "select",
options: props.dic.D_GS_ZDR_YJDJ
},
{
label: "户籍地区划",
prop: "hjdQh",
type: "select",
options: props.dic.D_BZ_XZQHDM
},
{ label: "户籍地详址", prop: "hjdXz", type: "input" }, { label: "户籍地详址", prop: "hjdXz", type: "input" },
{ label: "户籍地派出所", prop: "hjdPcsdm", type: "select",options:pcsList }, {
{ label: "现住地区划", prop: "xzdQh", type: "select", options: props.dic.D_BZ_XZQHDM }, label: "户籍地派出所",
prop: "hjdPcsdm",
type: "select",
options: pcsList
},
{
label: "现住地区划",
prop: "xzdQh",
type: "select",
options: props.dic.D_BZ_XZQHDM
},
{ label: "现住地详址", prop: "xzdXz", type: "input" }, { label: "现住地详址", prop: "xzdXz", type: "input" },
{ label: "现住地派出所", prop: "xzdPcsdm", type: "select",options:pcsList }, {
label: "现住地派出所",
prop: "xzdPcsdm",
type: "select",
options: pcsList
},
{ label: "管辖单位", prop: "gxSsbmdm", type: "department" }, { label: "管辖单位", prop: "gxSsbmdm", type: "department" },
{ label: "诉求单位", prop: "sqSsbmdm", type: "department" }, { label: "诉求单位", prop: "sqSsbmdm", type: "department" },
{ label: "责任单位", prop: "zrSsbmdm", type: "department" }, { label: "责任单位", prop: "zrSsbmdm", type: "department" },
{ label: "所属警种", prop: "zdrSsjz", type: "select", options: props.dic.D_GS_BK_SSJZ }, {
{ label: "涉及警种", prop: "zdrSjjz", type: "select", options: props.dic.D_GS_BK_SSJZ, multiple: true }, label: "所属警种",
prop: "zdrSsjz",
type: "select",
options: props.dic.D_GS_BK_SSJZ
},
{
label: "涉及警种",
prop: "zdrSjjz",
type: "select",
options: props.dic.D_GS_BK_SSJZ,
multiple: true
},
{ label: "管控民警姓名", prop: "gkMjXm", type: "input" }, { label: "管控民警姓名", prop: "gkMjXm", type: "input" },
{ label: "管控民警警号", prop: "gkMjJh", type: "input" }, { label: "管控民警警号", prop: "gkMjJh", type: "input" },
{ label: "管控原因", prop: "zdrLkyy", type: "textarea", width: "100%" }, { label: "管控原因", prop: "zdrLkyy", type: "textarea", width: "100%" },
{ label: "处置状态", prop: "zdrCzzt", type: "select", options: props.dic.D_GS_ZDR_CZZT }, {
label: "处置状态",
prop: "zdrCzzt",
type: "select",
options: props.dic.D_GS_ZDR_CZZT
},
{ label: "入库开始时间", prop: "zdrRkkssj", type: "datetime" }, { label: "入库开始时间", prop: "zdrRkkssj", type: "datetime" },
{ label: "入库结束时间", prop: "zdrRkjssj", type: "datetime" }, { label: "入库结束时间", prop: "zdrRkjssj", type: "datetime" }
] ];
},{immediate:true,deep:true}) },
{ immediate: true, deep: true }
);
const tableDate = reactive({ const tableDate = reactive({
tableConfiger: { tableConfiger: {
@ -134,7 +272,7 @@ const tableDate = reactive({
loading: false loading: false
}, },
controlsWidth: 90, //操作栏宽度 controlsWidth: 90, //操作栏宽度
keyCount:0, keyCount: 0,
tableColumn: [ tableColumn: [
{ label: "标签名称", prop: "bqMc" }, { label: "标签名称", prop: "bqMc" },
{ label: "标签代码", prop: "bqDm" }, { label: "标签代码", prop: "bqDm" },
@ -146,20 +284,22 @@ const tableDate = reactive({
const loading = ref(false); const loading = ref(false);
const elform = ref(); const elform = ref();
const title = ref(""); const title = ref("");
const showInfo = ref(false) const showInfo = ref(false);
const disabled = ref(false) const disabled = ref(false);
onMounted(() => { onMounted(() => {
chooseDep() chooseDep();
}); });
const chooseDep = () =>{ const chooseDep = () => {
qcckPost({orgLevel:40}, "/mosty-base/deptFeign/queryListByDept").then((res) => { qcckPost({ orgLevel: 40 }, "/mosty-base/deptFeign/queryListByDept").then(
pcsList.value = res.map(item => { (res) => {
return { zdmc:item.orgName, dm:item.orgCode, value:item.orgCode } pcsList.value = res.map((item) => {
return { zdmc: item.orgName, dm: item.orgCode, value: item.orgCode };
}); });
}); }
} );
};
// 初始化数据 // 初始化数据
const init = (type, row) => { const init = (type, row) => {
@ -167,13 +307,15 @@ const init = (type, row) => {
title.value = type == "add" ? "新增" : type == "detail" ? "详情" : "编辑"; title.value = type == "add" ? "新增" : type == "detail" ? "详情" : "编辑";
disabled.value = type == "detail" ? true : false; disabled.value = type == "detail" ? true : false;
tableDate.tableConfiger.haveControls = type == "detail" ? false : true; tableDate.tableConfiger.haveControls = type == "detail" ? false : true;
if(type == 'add'){ if (type == "add") {
listQuery.value.sqrXm = getItem("USERNAME"); listQuery.value.sqrXm = getItem("USERNAME");
listQuery.value.bkfqrSfzh = getItem("idEntityCard"); listQuery.value.bkfqrSfzh = getItem("idEntityCard");
listQuery.value.sqrSsbmmc = getItem("deptId")[0].deptName;; listQuery.value.sqrSsbmmc = getItem("deptId")[0].deptName;
listQuery.value.sqrSsbmdm = getItem("deptId")[0].deptCode;; listQuery.value.sqrSsbmdm = getItem("deptId")[0].deptCode;
} }
setTimeout(()=>{ showInfo.value = true; },5) setTimeout(() => {
showInfo.value = true;
}, 5);
if (row) getDataById(row.id); if (row) getDataById(row.id);
}; };
// 根据id查询详情 // 根据id查询详情
@ -182,48 +324,65 @@ const getDataById = (id) => {
listQuery.value = res; listQuery.value = res;
listQuery.value.zdrSjjz = listQuery.value.zdrSjjz.split(","); listQuery.value.zdrSjjz = listQuery.value.zdrSjjz.split(",");
tableDate.bqList = res.bqList; tableDate.bqList = res.bqList;
listQuery.value.sqrXm = getItem("USERNAME");
listQuery.value.bkfqrSfzh = getItem("idEntityCard");
listQuery.value.sqrSsbmmc = getItem("deptId")[0].deptName;
listQuery.value.sqrSsbmdm = getItem("deptId")[0].deptCode;
}); });
}; };
// 选择标签 // 选择标签
const choosed = (val) => { const choosed = (val) => {
listQuery.value.bqList = val.map(v=>{ listQuery.value.bqList = val.map((v) => {
return { bqZl:v.bqLb , bqId:v.id, bqLx:v.bqLx, bqLb:v.bqLb, bqMc:v.bqMc, bqDm:v.bqDm } return {
bqZl: v.bqLb,
bqId: v.id,
bqLx: v.bqLx,
bqLb: v.bqLb,
bqMc: v.bqMc,
bqDm: v.bqDm
};
}); });
roleIds.value = val.map(v=>v.id) roleIds.value = val.map((v) => v.id);
} };
// 删除 // 删除
const delDictItem = (bqId) =>{ const delDictItem = (bqId) => {
listQuery.value.bqList = listQuery.value.bqList.filter(v=> v.bqId != bqId); listQuery.value.bqList = listQuery.value.bqList.filter((v) => v.bqId != bqId);
tableDate.keyCount++ tableDate.keyCount++;
} };
// 提交 // 提交
const submit = () => { const submit = () => {
elform.value.submit((data) => { elform.value.submit((data) => {
data.zdrSjjz = data.zdrSjjz.join(","); data.zdrSjjz = data.zdrSjjz.join(",");
let url = title.value == "新增" ? "/mosty-gsxt/tbGsxtZdry/save" : "/mosty-gsxt/tbGsxtZdry/update"; let url =
title.value == "新增"
? "/mosty-gsxt/tbGsxtZdry/save"
: "/mosty-gsxt/tbGsxtZdry/update";
let params = { ...data }; let params = { ...data };
if(params.hjdPcsdm) { if (params.hjdPcsdm) {
let obj = pcsList.value.find(v=>v.dm == params.hjdPcsdm) let obj = pcsList.value.find((v) => v.dm == params.hjdPcsdm);
params.hjdPcsmc = obj ? obj.zdmc : '' params.hjdPcsmc = obj ? obj.zdmc : "";
} }
if(params.xzdPcsdm) { if (params.xzdPcsdm) {
let obj1 = pcsList.value.map(v=>v.dm == params.xzdPcsdm) let obj1 = pcsList.value.map((v) => v.dm == params.xzdPcsdm);
params.xzdPcsmc = obj1 ? obj1.zdmc : '' params.xzdPcsmc = obj1 ? obj1.zdmc : "";
} }
loading.value = true; loading.value = true;
qcckPost(params, url).then(() => { qcckPost(params, url)
.then(() => {
loading.value = false; loading.value = false;
proxy.$message({ type: "success", message: title.value + "成功" }); proxy.$message({ type: "success", message: title.value + "成功" });
emit("updateDate"); emit("updateDate");
close(); close();
}).catch(() => {loading.value = false;}); })
.catch(() => {
loading.value = false;
});
}); });
}; };
// 关闭 // 关闭
const close = () => { const close = () => {
listQuery.value = {}; listQuery.value = {};
@ -248,23 +407,22 @@ defineExpose({ init });
margin-top: 10px; margin-top: 10px;
overflow: hidden; overflow: hidden;
} }
.depBox{ .depBox {
border: 1px solid #e9e9e9; border: 1px solid #e9e9e9;
width: 305px; width: 305px;
padding: 0 0 0 4px; padding: 0 0 0 4px;
border-radius: 4px; border-radius: 4px;
::v-deep .el-input__inner{ ::v-deep .el-input__inner {
border: none; border: none;
} }
::v-deep .el-cascader .el-input.is-focus .el-input__inner{ ::v-deep .el-cascader .el-input.is-focus .el-input__inner {
border-color: transparent !important; border-color: transparent !important;
} }
::v-deep .el-input__inner:focus { ::v-deep .el-input__inner:focus {
box-shadow: none; box-shadow: none;
} }
::v-deep .el-input.is-disabled .el-input__inner{ ::v-deep .el-input.is-disabled .el-input__inner {
border-color: transparent !important; border-color: transparent !important;
} }
} }
</style> </style>

View File

@ -3,30 +3,45 @@
<div class="head_box"> <div class="head_box">
<span class="title">流线索</span> <span class="title">流线索</span>
<div> <div>
<el-button type="primary" :loading="loading" @click="submit">保存</el-button> <el-button type="primary" :loading="loading" @click="submit"
>保存</el-button
>
<el-button @click="close">关闭</el-button> <el-button @click="close">关闭</el-button>
</div> </div>
</div> </div>
<div class="form_cnt"> <div class="form_cnt">
<FormMessage v-model="listQuery" :formList="formData" ref="elform" :rules="rules"> <FormMessage
v-model="listQuery"
:formList="formData"
ref="elform"
:rules="rules"
>
<template #gapdive> <template #gapdive>
<div style="width: 100%;height: 10px;" class="mb20"> <div style="width: 100%; height: 10px" class="mb20">
<el-divider content-position="left">基础信息</el-divider> <el-divider content-position="left">基础信息</el-divider>
</div> </div>
</template> </template>
<template #gapline> <template #gapline>
<div style="width: 100%;height: 10px;" class="mb20"> <div style="width: 100%; height: 10px" class="mb20">
<el-divider content-position="left">线索内容</el-divider> <el-divider content-position="left">线索内容</el-divider>
</div> </div>
</template> </template>
<template #scfj> <template #scfj>
<div style="width: 100%;padding-left: 50px;"> <div style="width: 100%; padding-left: 50px">
<div>上传附件:<span class="f12">可附电子表格Word文档图像音视频文件</span> </div> <div>
<div><MOSTY.Upload :showBtn="true" :limit="10" v-model="fjdz" /> </div> 上传附件:<span class="f12"
>可附电子表格Word文档图像音视频文件</span
>
</div>
<div>
<MOSTY.Upload :showBtn="true" :limit="10" v-model="fjdz" />
</div>
</div> </div>
</template> </template>
</FormMessage> </FormMessage>
<el-divider content-position="left"><span class="mr20">相关人员</span> </el-divider> <el-divider content-position="left"
><span class="mr20">相关人员</span>
</el-divider>
<MyTable <MyTable
:tableData="pageForm.tableData" :tableData="pageForm.tableData"
:tableColumn="pageForm.tableColumn" :tableColumn="pageForm.tableColumn"
@ -35,12 +50,14 @@
:tableConfiger="pageForm.tableConfiger" :tableConfiger="pageForm.tableConfiger"
:controlsWidth="pageForm.controlsWidth" :controlsWidth="pageForm.controlsWidth"
> >
<template #xb="{row}"> <template #xb="{ row }">
<DictTag :value="row.xb" :tag="false" :options="props.dic.D_BZ_XB" /> <DictTag :value="row.xb" :tag="false" :options="props.dic.D_BZ_XB" />
</template> </template>
<template #bqList="{row}"> <template #bqList="{ row }">
<div v-if="row.bqList"> <div v-if="row.bqList">
<el-tag type="success" v-for="(it,idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag > <el-tag type="success" v-for="(it, idx) in row.bqList" :key="idx">{{
it.bqMc
}}</el-tag>
</div> </div>
</template> </template>
</MyTable> </MyTable>
@ -53,7 +70,15 @@ import * as MOSTY from "@/components/MyComponents/index";
import MyTable from "@/components/aboutTable/MyTable.vue"; import MyTable from "@/components/aboutTable/MyTable.vue";
import FormMessage from "@/components/aboutTable/FormMessage.vue"; import FormMessage from "@/components/aboutTable/FormMessage.vue";
import { qcckPost } from "@/api/qcckApi.js"; import { qcckPost } from "@/api/qcckApi.js";
import { ref, defineExpose, reactive, onMounted, defineEmits, getCurrentInstance, nextTick } from "vue"; import {
ref,
defineExpose,
reactive,
onMounted,
defineEmits,
getCurrentInstance,
nextTick
} from "vue";
const emit = defineEmits(["change"]); const emit = defineEmits(["change"]);
const props = defineProps({ const props = defineProps({
dic: Object dic: Object
@ -63,26 +88,46 @@ const dialogForm = ref(false); //弹窗
const rules = reactive({ const rules = reactive({
xsMc: [{ required: true, message: "请输入线索名称", trigger: "blur" }], xsMc: [{ required: true, message: "请输入线索名称", trigger: "blur" }],
xlLx: [{ required: true, message: "请选择线索类型", trigger: "change" }], xlLx: [{ required: true, message: "请选择线索类型", trigger: "change" }],
qbLy: [{ required: true, message: "请选择情报来源", trigger: "change" }], qbLy: [{ required: true, message: "请选择情报来源", trigger: "change" }]
}); });
const formData = ref([ const formData = ref([
{ prop: "gapdive", type: "slot",width:'100%' }, { prop: "gapdive", type: "slot", width: "100%" },
{ label: "线索名称", prop: "xsMc", type: "input" }, { label: "线索名称", prop: "xsMc", type: "input" },
{ label: "线索类型", prop: "xlLx", type: "select", options:props.dic.D_GS_XS_LX }, {
{ label: "情报来源", prop: "qbLy", type: "select", options:props.dic.D_GS_XS_LY}, label: "线索类型",
{ label: "指向开始时间", prop: "zxkssj", type: "datetime"}, prop: "xlLx",
{ label: "指向结束时间", prop: "zxjssj", type: "datetime"}, type: "select",
{ label: "指向地点", prop: "zxdz", type: "input"}, options: props.dic.D_GS_XS_LX
{ label: "所属专题", prop: "sszt", type: "select",options:props.dic.D_BZ_SSZT}, },
{ prop: "gapline", type: "slot",width:'100%' }, {
{ prop: "scfj", type: "slot",width:'100%'}, label: "情报来源",
{ label: "线索内容", prop: "xsNr", type: "textarea",width:'100%'}, prop: "qbLy",
{ label: "群体类型", prop: "qtlx", type: "select",options:props.dic.D_GS_XS_QTLX }, type: "select",
{ label: "群体名称", prop: "qtmc", type: "input"}, options: props.dic.D_GS_XS_LY
{ label: "涉及人数", prop: "sjrs", type: "inputNumber"}, },
{ label: "线索报送单位", prop: "ssbmdm", type: "department"}, { label: "指向开始时间", prop: "zxkssj", type: "datetime" },
{ label: "指向结束时间", prop: "zxjssj", type: "datetime" },
{ label: "指向地点", prop: "zxdz", type: "input" },
{
label: "所属专题",
prop: "sszt",
type: "select",
options: props.dic.D_BZ_SSZT
},
{ prop: "gapline", type: "slot", width: "100%" },
{ prop: "scfj", type: "slot", width: "100%" },
{ label: "线索内容", prop: "xsNr", type: "textarea", width: "100%" },
{
label: "群体类型",
prop: "qtlx",
type: "select",
options: props.dic.D_GS_XS_QTLX
},
{ label: "群体名称", prop: "qtmc", type: "input" },
{ label: "涉及人数", prop: "sjrs", type: "inputNumber" },
{ label: "线索报送单位", prop: "ssbmdm", type: "department" }
]); ]);
const fjdz = ref() const fjdz = ref();
const listQuery = ref({}); //表单 const listQuery = ref({}); //表单
const loading = ref(false); const loading = ref(false);
const elform = ref(); const elform = ref();
@ -93,28 +138,26 @@ const pageForm = reactive({
rowHieght: 61, rowHieght: 61,
showSelectType: "null", showSelectType: "null",
loading: false, loading: false,
haveControls:false haveControls: false
}, },
controlsWidth: 220, controlsWidth: 220,
tableColumn: [ tableColumn: [
{ label: "姓名", prop: "xm" }, { label: "姓名", prop: "xm" },
{ label: "性别", prop: "xb",showSolt:true }, { label: "性别", prop: "xb", showSolt: true },
{ label: "身份证号", prop: "sfzh" }, { label: "身份证号", prop: "sfzh" },
{ label: "户籍地", prop: "hjdz" }, { label: "户籍地", prop: "hjdz" },
{ label: "户籍地派出所", prop: "hjdpcs" }, { label: "户籍地派出所", prop: "hjdpcs" },
{ label: "标签", prop: "bqList",showSolt:true } { label: "标签", prop: "bqList", showSolt: true }
] ]
}); });
onMounted(()=>{ onMounted(() => {
tabHeightFn() tabHeightFn();
}) });
// 初始化数据 // 初始化数据
const init = (list) => { const init = (list) => {
fjdz.value = [];
fjdz.value = [] tabHeightFn();
tabHeightFn()
dialogForm.value = true; dialogForm.value = true;
pageForm.tableData = list.map((it) => { pageForm.tableData = list.map((it) => {
return { return {
@ -130,19 +173,20 @@ const init = (list) => {
pageForm.keyCount++; pageForm.keyCount++;
}; };
// 提交 // 提交
const submit = () => { const submit = () => {
elform.value.submit((data) => { elform.value.submit((data) => {
let params = { ...data ,ryList:pageForm.tableData,cjLx:'0'}; let params = { ...data, ryList: pageForm.tableData, cjLx: "0" };
params.fjdz = fjdz.value.length > 0 ? fjdz.value.join(','):''; params.fjdz = fjdz.value.length > 0 ? fjdz.value.join(",") : "";
loading.value = true; loading.value = true;
qcckPost(params, '/mosty-gsxt/qbcj/add').then((res) => { qcckPost(params, "/mosty-gsxt/qbcj/add")
.then((res) => {
loading.value = false; loading.value = false;
proxy.$message({ type: "success", message: "成功" }); proxy.$message({ type: "success", message: "成功" });
emit("change"); emit("change");
close(); close();
}).catch(() => { })
.catch(() => {
loading.value = false; loading.value = false;
}); });
}); });
@ -150,7 +194,7 @@ const submit = () => {
// 关闭 // 关闭
const close = () => { const close = () => {
fjdz.value = [] fjdz.value = [];
listQuery.value = {}; listQuery.value = {};
dialogForm.value = false; dialogForm.value = false;
loading.value = false; loading.value = false;
@ -181,17 +225,17 @@ defineExpose({ init });
overflow: hidden; overflow: hidden;
} }
::v-deep .avatar-uploader{ ::v-deep .avatar-uploader {
display: flex; display: flex;
align-items: center; align-items: center;
} }
::v-deep .el-upload-list{ ::v-deep .el-upload-list {
margin-left: 20px; margin-left: 20px;
display: flex; display: flex;
align-items: center; align-items: center;
} }
::v-deep .el-upload-list__item-name .el-icon{ ::v-deep .el-upload-list__item-name .el-icon {
top: 3px; top: 3px;
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="statistical-analysis"> <div class="statistical-analysis">
<div class="left"> <div class="left">
<div style="background:#fff" class="pl10 pr10 pb10 pt10"> <div style="background: #fff" class="pl10 pr10 pb10 pt10">
<div class="title">图像信息</div> <div class="title">图像信息</div>
<MyTable <MyTable
:tableData="pageData.tableData" :tableData="pageData.tableData"
@ -19,17 +19,28 @@
<img width="60" height="60" :src="pro" alt="" /> <img width="60" height="60" :src="pro" alt="" />
</template> </template>
<template #controls="{ row }"> <template #controls="{ row }">
<el-link size="small" type="success" @click="addEdit('edit', row)" >研判确认</el-link > <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="primary">查看</el-link>
<el-link size="small" type="danger" @click="deleteRow(row)">删除</el-link> <el-link size="small" type="danger" @click="deleteRow(row)"
>删除</el-link
>
</template> </template>
</MyTable> </MyTable>
</div> </div>
<div style="background:#fff" class="mt10 pl10 pr10 pb10 pt10" > <div style="background: #fff" class="mt10 pl10 pr10 pb10 pt10">
<div class="flex align-center"> <div class="flex align-center">
<div class="title mr20">人员信息</div> <div class="title mr20">人员信息</div>
<div class="mb13"> <div class="mb13">
<el-button size="small" v-for="it in btnsList" :key="it" @click="chooseType(it)"> {{ it }} </el-button> <el-button
size="small"
v-for="it in btnsList"
:key="it"
@click="chooseType(it)"
>
{{ it }}
</el-button>
</div> </div>
</div> </div>
<MyTable <MyTable
@ -44,23 +55,47 @@
<template #ryXm="{ row }"> <template #ryXm="{ row }">
<div class="one_text_detail">姓名{{ row.ryXm }} &nbsp;</div> <div class="one_text_detail">姓名{{ row.ryXm }} &nbsp;</div>
<div class="one_text_detail">电话{{ row.rySjhm }} &nbsp;</div> <div class="one_text_detail">电话{{ row.rySjhm }} &nbsp;</div>
<div class="one_text_detail">身份证{{ row.rySfzh }} </div> <div class="one_text_detail">身份证{{ row.rySfzh }}</div>
</template> </template>
<template #fxDj="{ row }"> <template #fxDj="{ row }">
<DictTag :tag="false" :value="row.fxDj" :options="D_GS_RQFJ_FXDJ"/> <DictTag :tag="false" :value="row.fxDj" :options="D_GS_RQFJ_FXDJ" />
</template> </template>
<template #fxLb="{ row }"> <template #fxLb="{ row }">
<DictTag :tag="false" :value="row.fxLb" :options="D_GS_RQFJ_FXLB"/> <DictTag :tag="false" :value="row.fxLb" :options="D_GS_RQFJ_FXLB" />
</template> </template>
<template #bqList="{ row }"> <template #bqList="{ row }">
<div v-if="row.bqList"> <div v-if="row.bqList">
<el-tag v-for="(it,idx) in row.bqList" :key="idx">{{ it.bqMc }}</el-tag> <el-tag v-for="(it, idx) in row.bqList" :key="idx"
>{{ it.bqMc }}</el-tag
>
</div> </div>
</template> </template>
<template #czfs="{ row }"> <template #czfs="{ row }">
<div>关注<DictTag :tag="false" style="display: inline;" :value="row.sfGz" :options="D_BZ_SF" /> &nbsp;</div> <div>
<div>布控人员<DictTag :tag="false" style="display: inline;" :value="row.sfZbkry" :options="D_BZ_SF" />&nbsp;</div> 关注<DictTag
<div>重点人员<DictTag :tag="false" style="display: inline;" :value="row.sfZzdry" :options="D_BZ_SF" /></div> :tag="false"
style="display: inline"
:value="row.sfGz"
:options="D_BZ_SF"
/>
&nbsp;
</div>
<div>
布控人员<DictTag
:tag="false"
style="display: inline"
:value="row.sfZbkry"
:options="D_BZ_SF"
/>&nbsp;
</div>
<div>
重点人员<DictTag
:tag="false"
style="display: inline"
:value="row.sfZzdry"
:options="D_BZ_SF"
/>
</div>
</template> </template>
</MyTable> </MyTable>
<Pages <Pages
@ -75,20 +110,28 @@
<div class="title">轨迹信息</div> <div class="title">轨迹信息</div>
<ul class="cntBox" v-loading="modelLoading"> <ul class="cntBox" v-loading="modelLoading">
<li class="step" v-for="(item, index) in stepList" :key="index"> <li class="step" v-for="(item, index) in stepList" :key="index">
<div style="color: #000;">{{ item.yjFssj }}</div> <div style="color: #000">{{ item.yjFssj }}</div>
<div class="desc"> <div class="desc">
<div class="one_text_detail mb5">事由{{ item.yjNr }}</div> <div class="one_text_detail mb5">事由{{ item.yjNr }}</div>
<div class="one_text_detail mb5">数据来源{{ item.yjGzymc }}</div> <div class="one_text_detail mb5">数据来源{{ item.yjGzymc }}</div>
<div class="one_text_detail">所在地址{{ item.yjDz }}</div> <div class="one_text_detail">所在地址{{ item.yjDz }}</div>
</div> </div>
</li> </li>
<MOSTY.Empty :show="!modelLoading && stepList.length <= 0"></MOSTY.Empty> <MOSTY.Empty
:show="!modelLoading && stepList.length <= 0"
></MOSTY.Empty>
</ul> </ul>
</div> </div>
</div> </div>
<!-- 弹窗 --> <!-- 弹窗 -->
<Model v-model="isShow" :type="chooselx" :chooseList="chooseList" :ids="ids" @change="getList" :dic="{D_BZ_SF,D_GS_ZDRFJ_SPZT}"></Model> <Model
v-model="isShow"
:type="chooselx"
:chooseList="chooseList"
:ids="ids"
@change="getList"
:dic="{ D_BZ_SF, D_GS_ZDRFJ_SPZT }"
></Model>
</template> </template>
<script setup> <script setup>
import * as MOSTY from "@/components/MyComponents/index"; import * as MOSTY from "@/components/MyComponents/index";
@ -100,12 +143,13 @@ import MyTable from "@/components/aboutTable/MyTable.vue";
import Pages from "@/components/aboutTable/Pages.vue"; import Pages from "@/components/aboutTable/Pages.vue";
import { qcckPost } from "@/api/qcckApi.js"; import { qcckPost } from "@/api/qcckApi.js";
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const {D_GS_ZDRFJ_SPZT,D_BZ_SF, D_GS_RQFJ_FXDJ, D_GS_RQFJ_FXLB } = proxy.$dict('D_GS_ZDRFJ_SPZT',"D_BZ_SF","D_GS_RQFJ_FXDJ","D_GS_RQFJ_FXLB"); //获取字典数据 const { D_GS_ZDRFJ_SPZT, D_BZ_SF, D_GS_RQFJ_FXDJ, D_GS_RQFJ_FXLB } =
const btnsList = reactive(['是否重点人','布控','是否关注','移交管控']) proxy.$dict("D_GS_ZDRFJ_SPZT", "D_BZ_SF", "D_GS_RQFJ_FXDJ", "D_GS_RQFJ_FXLB"); //获取字典数据
const chooselx = ref('') const btnsList = reactive(["是否重点人", "布控", "是否关注", "移交管控"]);
const isShow = ref(false) const chooselx = ref("");
const ids = ref([]) const isShow = ref(false);
const chooseList = ref([]) const ids = ref([]);
const chooseList = ref([]);
const pageData = reactive({ const pageData = reactive({
tableData: [ tableData: [
{ {
@ -128,7 +172,7 @@ const pageData = reactive({
rowHieght: 61, rowHieght: 61,
showSelectType: "checkBox", showSelectType: "checkBox",
loading: false, loading: false,
haveControls:false haveControls: false
}, },
total: 0, total: 0,
pageConfiger: { pageConfiger: {
@ -145,24 +189,43 @@ const pageData = reactive({
{ label: "人像相似度", prop: "rxxsd" } { label: "人像相似度", prop: "rxxsd" }
], ],
tableColumnPeople: [ tableColumnPeople: [
{ label: "姓名", prop: "ryXm",showOverflowTooltip:true ,showSolt: true}, { label: "姓名", prop: "ryXm", showOverflowTooltip: true, showSolt: true },
{ label: "户籍地址", prop: "ryHjdz" ,showOverflowTooltip:true}, { label: "户籍地址", prop: "ryHjdz", showOverflowTooltip: true },
{ label: "护照号码", prop: "ryHzhm" ,showOverflowTooltip:true}, { label: "护照号码", prop: "ryHzhm", showOverflowTooltip: true },
{ label: "现住地址", prop: "ryXzdz" ,showOverflowTooltip:true}, { label: "现住地址", prop: "ryXzdz", showOverflowTooltip: true },
{ label: "附件照片", prop: "ryFjZp" ,showOverflowTooltip:true}, { label: "附件照片", prop: "ryFjZp", showOverflowTooltip: true },
{ label: "管辖单位", prop: "gxDwDm" ,showOverflowTooltip:true}, { label: "管辖单位", prop: "gxDwDm", showOverflowTooltip: true },
{ label: "责任部门", prop: "ssbm",showOverflowTooltip:true}, { label: "责任部门", prop: "ssbm", showOverflowTooltip: true },
{ label: "标签", prop: "bqList",showOverflowTooltip:true,showSolt: true}, {
{ label: "风险积分", prop: "fxjf",showOverflowTooltip:true}, label: "标签",
{ label: "风险等级", prop: "fxDj",showOverflowTooltip:true, showSolt: true }, prop: "bqList",
{ label: "风险类别", prop: "fxLb",showOverflowTooltip:true, showSolt: true }, showOverflowTooltip: true,
{ label: "处置方式", prop: "czfs",showOverflowTooltip:true, showSolt: true }, showSolt: true
},
{ label: "风险积分", prop: "fxjf", showOverflowTooltip: true },
{
label: "风险等级",
prop: "fxDj",
showOverflowTooltip: true,
showSolt: true
},
{
label: "风险类别",
prop: "fxLb",
showOverflowTooltip: true,
showSolt: true
},
{
label: "处置方式",
prop: "czfs",
showOverflowTooltip: true,
showSolt: true
}
] ]
}); });
const modelLoading = ref(false) const modelLoading = ref(false);
const stepList = ref([]); const stepList = ref([]);
const changeNo = (val) => { const changeNo = (val) => {
pageData.pageConfiger.pageCurrent = val; pageData.pageConfiger.pageCurrent = val;
getList(); getList();
@ -172,85 +235,93 @@ const changeSize = (val) => {
getList(); getList();
}; };
//获取模型识别列表 //获取模型识别列表
const getList = () => { const getList = () => {
let data = { ...pageData.pageConfiger }; let data = { ...pageData.pageConfiger };
qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage").then((res) => { qcckGet(data, "/mosty-gsxt/tbGsxtRqfjRy/selectPage").then((res) => {
pageData.tableDataPeople = res.records || []; pageData.tableDataPeople = res.records || [];
pageData.total = res.total; pageData.total = res.total;
if(pageData.tableDataPeople.length > 0) chooseDataBottom(pageData.tableDataPeople[0]) if (pageData.tableDataPeople.length > 0)
}) chooseDataBottom(pageData.tableDataPeople[0]);
});
}; };
// 表格高度计算 // 表格高度计算
const tabHeightFn = () => { const tabHeightFn = () => {
pageData.tableHeight =( window.innerHeight - 280 ) / 2; pageData.tableHeight = (window.innerHeight - 280) / 2;
pageData.tableHeight1 =(( window.innerHeight - 280 ) / 2 )- 50; pageData.tableHeight1 = (window.innerHeight - 280) / 2 - 50;
window.onresize = function () { window.onresize = function () {
tabHeightFn(); tabHeightFn();
}; };
}; };
// 选择数据 // 选择数据
const chooseDataBottom = (val) =>{ const chooseDataBottom = (val) => {
if(Array.isArray(val)) { if (Array.isArray(val)) {
ids.value = val.map(item=>item.id); ids.value = val.map((item) => item.id);
chooseList.value = val.filter(v=>{ if(v.sfZzdry == 0) return v; }); chooseList.value = val.filter((v) => {
}else{ if (v.sfZzdry != 1) return v;
if(!val.rySfzh) { });
} else {
if (!val.rySfzh) {
ElMessage.warning("该人员没有轨迹"); ElMessage.warning("该人员没有轨迹");
}else{ } else {
stepList.value = []; stepList.value = [];
modelLoading.value = true; modelLoading.value = true;
let params = { pageSize:1000, pageNum:1 ,yjRysfzh:val.rySfzh}; let params = { pageSize: 1000, pageNum: 1, yjRysfzh: val.rySfzh };
qcckPost(params,'/mosty-jmxf/tbYjxx/getPageList').then(res=>{ qcckPost(params, "/mosty-jmxf/tbYjxx/getPageList")
.then((res) => {
stepList.value = res.records || []; stepList.value = res.records || [];
modelLoading.value = false; modelLoading.value = false;
}).catch(()=>{ })
.catch(() => {
modelLoading.value = false; modelLoading.value = false;
}) });
} }
} }
} };
const chooseType = (val)=>{ const chooseType = (val) => {
chooselx.value = val; chooselx.value = val;
if(ids.value.length == 0) return ElMessage.warning("请选择对应的数据"); if (ids.value.length == 0) return ElMessage.warning("请选择对应的数据");
switch(val){ switch (val) {
case '布控': case "布控":
proxy.$confirm("确定要布控", "警告", {type: "warning"}).then(() => { proxy
let params = { ids:ids.value, sfbk:'1'} .$confirm("确定要布控", "警告", { type: "warning" })
qcckPost(params,'/mosty-gsxt/tbGsxtRqfjRy/updateBySfbkpz').then(res=>{ .then(() => {
let params = { ids: ids.value, sfbk: "1" };
qcckPost(params, "/mosty-gsxt/tbGsxtRqfjRy/updateBySfbkpz").then(
(res) => {
ElMessage.success("布控成功"); ElMessage.success("布控成功");
getList() getList();
}
);
}) })
}).catch(() => {}); .catch(() => {});
break; break;
case '是否重点人': case "是否重点人":
if(chooseList.value.length == 0) return ElMessage.warning("选择的数据中都是重点人"); if (chooseList.value.length == 0)
return ElMessage.warning("选择的数据中都是重点人");
isShow.value = true; isShow.value = true;
break; break;
case '是否关注': case "是否关注":
case '移交管控': case "移交管控":
isShow.value = true; isShow.value = true;
break; break;
} }
} };
onMounted(() => {
onMounted(()=>{
tabHeightFn(); tabHeightFn();
getList() getList();
}) });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.statistical-analysis { .statistical-analysis {
width: 100%; width: 100%;
height: 100%; height: 100%;
padding: 10px 10px 0 10px ; padding: 10px 10px 0 10px;
box-sizing: border-box; box-sizing: border-box;
overflow: hidden; overflow: hidden;
.title { .title {
@ -266,7 +337,11 @@ onMounted(()=>{
left: 0; left: 0;
width: 78px; width: 78px;
height: 4px; height: 4px;
background: linear-gradient( 90deg, #3597f9c4 0%, rgba(53, 150, 249, 0) 100%); background: linear-gradient(
90deg,
#3597f9c4 0%,
rgba(53, 150, 249, 0) 100%
);
border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
} }
} }
@ -283,7 +358,7 @@ onMounted(()=>{
float: right; float: right;
box-sizing: border-box; box-sizing: border-box;
background: #fff; background: #fff;
.cntBox{ .cntBox {
height: calc(100% - 60px); height: calc(100% - 60px);
overflow: hidden; overflow: hidden;
overflow-y: auto; overflow-y: auto;
@ -293,9 +368,9 @@ onMounted(()=>{
position: relative; position: relative;
border-left: 3px dashed #0072ff; border-left: 3px dashed #0072ff;
margin-left: 10px; margin-left: 10px;
&::before{ &::before {
position: absolute; position: absolute;
content: ''; content: "";
width: 20px; width: 20px;
height: 20px; height: 20px;
background: #0072ff; background: #0072ff;

View File

@ -1,20 +1,68 @@
<template> <template>
<el-dialog v-model="modelValue" title="提交" width="500px" @close="handleClose"> <el-dialog
v-model="modelValue"
title="提交"
width="500px"
@close="handleClose"
>
<el-form :model="listQuery" ref="formValidate" :rules="rules"> <el-form :model="listQuery" ref="formValidate" :rules="rules">
<el-form-item prop="sfGz" label="是否关注" v-if="props.type == '是否关注'"> <el-form-item
<MOSTY.Select filterable v-model="listQuery.sfGz" :dictEnum="props.dic.D_BZ_SF" width="100%" clearable placeholder="请选择是否布控"/> prop="sfGz"
label="是否关注"
v-if="props.type == '是否关注'"
>
<MOSTY.Select
filterable
v-model="listQuery.sfGz"
:dictEnum="props.dic.D_BZ_SF"
width="100%"
clearable
placeholder="请选择是否布控"
/>
</el-form-item> </el-form-item>
<el-form-item prop="sfZzdry" label="是否移交管控" v-if="props.type == '移交管控'"> <el-form-item
<MOSTY.Select filterable v-model="listQuery.sfZzdry" :dictEnum="props.dic.D_BZ_SF" width="100%" clearable placeholder="请选择是否布控"/> prop="sfZzdry"
label="是否移交管控"
v-if="props.type == '移交管控'"
>
<MOSTY.Select
filterable
v-model="listQuery.sfZzdry"
:dictEnum="props.dic.D_BZ_SF"
width="100%"
clearable
placeholder="请选择是否布控"
/>
</el-form-item> </el-form-item>
<el-form-item label="审核部门" prop="ssbmdm" style="width: 100%;" v-if="props.type == '是否重点人'"> <el-form-item
<MOSTY.Department style="width: 100%;" clearable v-model="listQuery.ssbmdm" placeholder="请选择部门" /> label="审核部门"
prop="shSsbmdm"
style="width: 100%"
v-if="props.type == '是否重点人'"
>
<MOSTY.Department
style="width: 100%"
clearable
v-model="listQuery.shSsbmdm"
@getDepValue="changeSh"
placeholder="请选择部门"
/>
</el-form-item> </el-form-item>
<el-form-item label="审批部门" prop="ssbmdm" style="width: 100%;" v-if="props.type == '是否重点人'"> <el-form-item
<MOSTY.Department style="width: 100%;" clearable v-model="listQuery.ssbmdm" placeholder="请选择部门" /> label="审批部门"
prop="spSsbmdm"
style="width: 100%"
v-if="props.type == '是否重点人'"
>
<MOSTY.Department
style="width: 100%"
clearable
@getDepValue="changeSp"
v-model="listQuery.spSsbmdm"
placeholder="请选择部门"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="tc"> <div class="tc">
@ -22,67 +70,78 @@
<el-button type="primary" @click="submitForm">确定</el-button> <el-button type="primary" @click="submitForm">确定</el-button>
</div> </div>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script setup> <script setup>
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { qcckPost } from "@/api/qcckApi.js"; import { qcckPost } from "@/api/qcckApi.js";
import * as MOSTY from "@/components/MyComponents/index"; import * as MOSTY from "@/components/MyComponents/index";
import { ref ,defineProps,defineEmits, reactive} from 'vue'; import { ref, defineProps, defineEmits, reactive } from "vue";
const props = defineProps({ const props = defineProps({
modelValue:{ modelValue: {
type:Boolean, type: Boolean,
default:false default: false
}, },
ids:{ ids: {
type:Array, type: Array,
default:[] default: []
}, },
chooseList:{ chooseList: {
type:Array, type: Array,
default:[] default: []
}, },
type:{ type: {
type:String, type: String,
default:'' default: ""
}, },
dic:{ dic: {
type:Object, type: Object,
default:'' default: ""
}, }
}) });
const emits = defineEmits(["update:modelValue"]); const emits = defineEmits(["update:modelValue"]);
const formValidate = ref() const formValidate = ref();
const rules = reactive({ const rules = reactive({
sfGz: [{ required: true, message: "请选择是否关注", trigger: "change" }], sfGz: [{ required: true, message: "请选择是否关注", trigger: "change" }],
sfZzdry: [{ required: true, message: "请选择是否移交管控", trigger: "change" }], sfZzdry: [
ssbmdm: [{ required: true, message: "请选择是部门", trigger: "change" }], { required: true, message: "请选择是否移交管控", trigger: "change" }
}) ],
shSsbmdm: [{ required: true, message: "请选择审核部门", trigger: "change" }],
spSsbmdm: [{ required: true, message: "请选择审批部门", trigger: "change" }]
});
const listQuery = ref({}); const listQuery = ref({});
const submitForm = () =>{ const submitForm = () => {
formValidate.value.validate((valid) => { formValidate.value.validate((valid) => {
if (!valid) return false; if (!valid) return false;
let params = { ids:props.ids, ...listQuery.value } let params = { ids: props.ids, ...listQuery.value };
let url = '' let url = "";
if( props.type == '是否关注') url = '/mosty-gsxt/tbGsxtRqfjRy/updateBySfgz' if (props.type == "是否关注") url = "/mosty-gsxt/tbGsxtRqfjRy/updateBySfgz";
if( props.type == '移交管控') url = '/mosty-gsxt/tbGsxtRqfjRy/updateByYjgk' if (props.type == "移交管控") url = "/mosty-gsxt/tbGsxtRqfjRy/updateByYjgk";
if( props.type == '是否重点人') url = '/mosty-gsxt/tbGsxtRqfjRy/updateByYjgk' if (props.type == "是否重点人") {
qcckPost(params,url).then(res=>{ url = " /mosty-gsxt/tbGsxtRqfjRy/sendZdrSs";
params.ids = props.chooseList.map((v) => v.id);
}
qcckPost(params, url).then((res) => {
ElMessage.success("成功"); ElMessage.success("成功");
emits('update:modelValue',false) emits("update:modelValue", false);
emits('change') emits("change");
}) });
}) });
} };
const handleClose = () =>{ const changeSh = (val) => {
emits('update:modelValue',false) listQuery.value.shSsbmmc = val ? val.orgName : "";
};
const changeSp = (val) => {
listQuery.value.spSsbmmc = val ? val.orgName : "";
};
const handleClose = () => {
emits("update:modelValue", false);
formValidate.value.resetFields(); formValidate.value.resetFields();
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>